From 50783c6f68602c685a3e7a776b2b7f790cfa42f1 Mon Sep 17 00:00:00 2001 From: merceyz Date: Sat, 23 Mar 2024 15:49:05 +0100 Subject: [PATCH] build(compat): fix building TypeScript patches --- .yarn/versions/72ecc1e8.yml | 2 + .../extra/typescript/gen-typescript-patch.js | 100 +++++- ...tch-fb547b5c4b551512372ff8352c69a5fa.diff} | 320 +++++++++--------- .../sources/patches/typescript.patch.ts | 2 +- 4 files changed, 248 insertions(+), 176 deletions(-) create mode 100644 .yarn/versions/72ecc1e8.yml rename packages/plugin-compat/extra/typescript/{patch-cd4ff37145a6e2e01d4ea97a3b7e14b8.diff => patch-fb547b5c4b551512372ff8352c69a5fa.diff} (96%) diff --git a/.yarn/versions/72ecc1e8.yml b/.yarn/versions/72ecc1e8.yml new file mode 100644 index 000000000000..ba8988f326da --- /dev/null +++ b/.yarn/versions/72ecc1e8.yml @@ -0,0 +1,2 @@ +declined: + - "@yarnpkg/plugin-compat" diff --git a/packages/plugin-compat/extra/typescript/gen-typescript-patch.js b/packages/plugin-compat/extra/typescript/gen-typescript-patch.js index 142fccc36487..d53e2d00d336 100644 --- a/packages/plugin-compat/extra/typescript/gen-typescript-patch.js +++ b/packages/plugin-compat/extra/typescript/gen-typescript-patch.js @@ -1,3 +1,4 @@ +const assert = require(`assert`); const cp = require(`child_process`); const crypto = require(`crypto`); const fs = require(`fs`); @@ -27,42 +28,70 @@ const SLICES = [ to: `426f5a7`, onto: `e39bdc3`, range: `>=3.2 <3.5`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, { from: `5d50de3`, to: `426f5a7`, onto: `cf7b2d4`, range: `>=3.5 <=3.6`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, { from: `5d50de3`, to: `426f5a7`, onto: `cda54b8`, range: `>3.6 <3.7`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, { from: `5d50de3`, to: `2f85932`, onto: `e39bdc3`, range: `>=3.7 <3.9`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, { from: `5d50de3`, to: `3af06df`, onto: `551f0dd`, range: `>=3.9 <4.0`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, { from: `6dbdd2f`, to: `6dbdd2f`, onto: `56865f7`, range: `>=4.0 <4.1`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, { from: `746d79b`, to: `746d79b`, onto: `69972a3`, range: `>=4.1 <4.2`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.2 { @@ -70,6 +99,10 @@ const SLICES = [ to: `178a67b4663d80b0fcbea542e7255b4499b51708`, onto: `bfc55b5762443c37ecdef08a3b5a4e057b4d1e85`, range: `>=4.2 <4.3`, + volta: { + node: `14.15.5`, + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.3 { @@ -77,6 +110,9 @@ const SLICES = [ to: `ffa54c5a104e7940b5c23666ddffbf44878f9d9f`, onto: `28e3e6ff2f49f1dbf06d31809ec73dbe42f1aa63`, range: `>=4.3 <4.4`, + volta: { + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.4 { @@ -84,13 +120,19 @@ const SLICES = [ to: `20ffca2f3c48591c971e6606a55b7b1820d8a64f`, onto: `a10409ccaa3604790dc45f52ef0402eb49015dcf`, range: `>=4.4 <4.5`, + volta: { + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.5 { - from: `79fe5d206f89e5f1585807bdcd7feeb567a69646`, - to: `fff89a12766fa485e35b1c65d8631d109c4e2c0e`, - onto: `7893f689fedcfe28a499d119d34844840bce9160`, + from: `9232978f8e54f073b5451d0bf2737d42a0fd672f`, + to: `3a2388d39d41d000b5c5f9bcd48096b39fcedf8f`, + onto: `55e13e9115b3cc5458d76c39da1211dc28d7b51f`, range: `>=4.5.2 <4.6`, + volta: { + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.6 { @@ -98,6 +140,9 @@ const SLICES = [ to: `fbec717ef33fc2db5791f2a1d5f9a315e293a50a`, onto: `83efc9f0d646bf86a3469e00c5ef5e4f7ab7cb95`, range: `>=4.6.1-rc <4.7`, + volta: { + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.7 { @@ -105,6 +150,9 @@ const SLICES = [ to: `cd8d000510ed2d2910e0ebaa903a51adda546a0a`, onto: `6e62273fa1e7469b89b589667c2c233789c62176`, range: `>=4.7.0-beta <4.8`, + volta: { + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.8.0-beta { @@ -112,6 +160,9 @@ const SLICES = [ to: `3287098f4785fd652112beadf3b33a960fcd19aa`, onto: `9a09c37878a45b06994485fdb510eb4d24587dcb`, range: `>=4.8.0-beta <4.8.1-rc`, + volta: { + npm: `6.14.11`, + }, }, // https://github.com/merceyz/TypeScript/tree/merceyz/pnp-4.8-stable { @@ -344,21 +395,16 @@ async function cloneRepository() { async function resetGit(hash) { await execFile(`git`, [`reset`, `--hard`, hash], TS_REPO_SPAWN); await execFile(`git`, [`clean`, `-df`], TS_REPO_SPAWN); - - if (fs.existsSync(path.join(TS_REPO, `package-lock.json`))) { - await execFile(`npm`, [`install`], TS_REPO_SPAWN); - } else { - const date = await execFile(`git`, [`show`, `-s`, `--format=%ci`], TS_REPO_SPAWN); - await execFile(`npm`, [`install`, `--before`, date.toString().trim()], TS_REPO_SPAWN); - } } -async function buildRepository({from, to, onto}) { +async function buildRepository({from, to, onto, volta}) { const code = Math.floor(Math.random() * 0x100000000).toString(16).padStart(8, `0`); const tmpDir = path.join(TMP_DIR, `${code}`); await resetGit(onto); + const date = await execFile(`git`, [`show`, `-s`, `--format=%ci`], TS_REPO_SPAWN); + if (to) { let isAncestor; try { @@ -375,7 +421,31 @@ async function buildRepository({from, to, onto}) { } } - await execFile(fs.existsSync(`${TS_REPO}/node_modules/.bin/hereby`) ? `./node_modules/.bin/hereby` : `./node_modules/.bin/gulp`, [`local`, `LKG`], TS_REPO_SPAWN); + { + const pkgPath = path.join(TS_REPO, `package.json`); + const pkg = JSON.parse(await fs.promises.readFile(pkgPath, `utf8`)); + + assert(!(pkg.volta?.node && volta?.node), `node version is already set for ${pkg.version}`); + assert(!(pkg.volta?.npm && volta?.npm), `npm version is already set for ${pkg.version}`); + + const voltaConfig = { + ...volta, + ...pkg.volta, + }; + assert(voltaConfig.node && voltaConfig.npm, `Missing complete volta configuration for ${pkg.version}, current config: ${JSON.stringify(voltaConfig)}`); + + if (JSON.stringify(pkg.volta) !== JSON.stringify(voltaConfig)) { + pkg.volta = voltaConfig; + await fs.promises.writeFile(pkgPath, JSON.stringify(pkg, null, 4)); + } + } + + if (fs.existsSync(path.join(TS_REPO, `package-lock.json`))) + await execFile(`volta`, [`run`, `npm`, `ci`], TS_REPO_SPAWN); + else + await execFile(`volta`, [`run`, `npm`, `install`, `--before`, date.toString().trim()], TS_REPO_SPAWN); + + await execFile(`volta`, [`run`, `node`, fs.existsSync(`${TS_REPO}/node_modules/.bin/hereby`) ? `./node_modules/.bin/hereby` : `./node_modules/.bin/gulp`, `local`, `LKG`], TS_REPO_SPAWN); // It seems that in some circumstances the build can produce incorrect artifacts. When // that happens, the final binary is very small. We try to detect that. @@ -392,7 +462,7 @@ async function buildRepository({from, to, onto}) { return tmpDir; } -async function run({from, to, onto, range}) { +async function run({from, to, onto, range, volta}) { const hash = crypto .createHash(`md5`) .update(JSON.stringify({from, to, onto})) @@ -414,8 +484,8 @@ async function run({from, to, onto, range}) { await cloneRepository(); - const base = await buildRepository({onto}); - const patched = await buildRepository({from, to, onto}); + const base = await buildRepository({onto, volta}); + const patched = await buildRepository({from, to, onto, volta}); const buffer = await execFile(`git`, [`diff`, `--no-index`, base, patched], {checkExitCode: false}); diff --git a/packages/plugin-compat/extra/typescript/patch-cd4ff37145a6e2e01d4ea97a3b7e14b8.diff b/packages/plugin-compat/extra/typescript/patch-fb547b5c4b551512372ff8352c69a5fa.diff similarity index 96% rename from packages/plugin-compat/extra/typescript/patch-cd4ff37145a6e2e01d4ea97a3b7e14b8.diff rename to packages/plugin-compat/extra/typescript/patch-fb547b5c4b551512372ff8352c69a5fa.diff index d3c1a33e95ca..e1abb1efe28c 100644 --- a/packages/plugin-compat/extra/typescript/patch-cd4ff37145a6e2e01d4ea97a3b7e14b8.diff +++ b/packages/plugin-compat/extra/typescript/patch-fb547b5c4b551512372ff8352c69a5fa.diff @@ -1,5 +1,5 @@ diff --git a/lib/tsc.js b/lib/tsc.js -index b7520e834..a8b13999c 100644 +index e144201b5..21c462e0c 100644 semver exclusivity >=4.5.2 <4.6 --- a/lib/tsc.js +++ b/lib/tsc.js @@ -13,7 +13,7 @@ semver exclusivity >=4.5.2 <4.6 if (platform === "win32" || platform === "win64") { return false; } -@@ -33741,15 +33744,15 @@ var ts; +@@ -33750,15 +33753,15 @@ var ts; } } ts.getEffectiveTypeRoots = getEffectiveTypeRoots; @@ -32,7 +32,7 @@ semver exclusivity >=4.5.2 <4.6 } return undefined; }); -@@ -33760,6 +33763,37 @@ var ts; +@@ -33769,6 +33772,37 @@ var ts; var useCaseSensitiveFileNames = typeof host.useCaseSensitiveFileNames === "function" ? host.useCaseSensitiveFileNames() : host.useCaseSensitiveFileNames; return ts.comparePaths(path1, path2, !useCaseSensitiveFileNames) === 0; } @@ -70,7 +70,7 @@ semver exclusivity >=4.5.2 <4.6 function resolveTypeReferenceDirective(typeReferenceDirectiveName, containingFile, options, host, redirectedReference, cache) { var traceEnabled = isTraceEnabled(options, host); if (redirectedReference) { -@@ -33866,7 +33900,9 @@ var ts; +@@ -33878,7 +33912,9 @@ var ts; } var result_4; if (!ts.isExternalModuleNameRelative(typeReferenceDirectiveName)) { @@ -81,7 +81,7 @@ semver exclusivity >=4.5.2 <4.6 result_4 = searchResult && searchResult.value; } else { -@@ -34411,7 +34447,9 @@ var ts; +@@ -34425,7 +34461,9 @@ var ts; if (traceEnabled) { trace(host, ts.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1, moduleName, Extensions[extensions]); } @@ -92,7 +92,7 @@ semver exclusivity >=4.5.2 <4.6 } if (!resolved_1) return undefined; -@@ -35024,6 +35062,14 @@ var ts; +@@ -35038,6 +35076,14 @@ var ts; } function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, nodeModulesDirectory, nodeModulesDirectoryExists, state, cache, redirectedReference) { var candidate = ts.normalizePath(ts.combinePaths(nodeModulesDirectory, moduleName)); @@ -107,7 +107,7 @@ semver exclusivity >=4.5.2 <4.6 var packageInfo = getPackageJsonInfo(candidate, !nodeModulesDirectoryExists, state); if (!(state.features & NodeResolutionFeatures.Exports)) { if (packageInfo) { -@@ -35035,7 +35081,9 @@ var ts; +@@ -35049,7 +35095,9 @@ var ts; return withPackageId(packageInfo, fromDirectory); } } @@ -118,7 +118,7 @@ semver exclusivity >=4.5.2 <4.6 var loader = function (extensions, candidate, onlyRecordFailures, state) { var _a; if (packageInfo && packageInfo.packageJsonContent.exports && state.features & NodeResolutionFeatures.Exports) { -@@ -35046,7 +35094,8 @@ var ts; +@@ -35060,7 +35108,8 @@ var ts; return withPackageId(packageInfo, pathAndExtension); }; if (rest !== "") { @@ -128,7 +128,7 @@ semver exclusivity >=4.5.2 <4.6 packageInfo = getPackageJsonInfo(packageDirectory, !nodeModulesDirectoryExists, state); if (packageInfo && packageInfo.versionPaths) { if (state.traceEnabled) { -@@ -35184,6 +35233,47 @@ var ts; +@@ -35198,6 +35247,47 @@ var ts; function toSearchResult(value) { return value !== undefined ? { value: value } : undefined; } @@ -176,7 +176,7 @@ semver exclusivity >=4.5.2 <4.6 })(ts || (ts = {})); var ts; (function (ts) { -@@ -92709,6 +92799,7 @@ var ts; +@@ -92735,6 +92825,7 @@ var ts; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["None"] = 0] = "None"; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Partial"] = 1] = "Partial"; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Full"] = 2] = "Full"; @@ -184,7 +184,7 @@ semver exclusivity >=4.5.2 <4.6 })(ConfigFileProgramReloadLevel = ts.ConfigFileProgramReloadLevel || (ts.ConfigFileProgramReloadLevel = {})); function updateSharedExtendedConfigFileWatcher(projectPath, options, extendedConfigFilesMap, createExtendedConfigFileWatch, toPath) { var _a; -@@ -98571,6 +98662,26 @@ var ts; +@@ -98597,6 +98688,26 @@ var ts; return undefined; } var parts = getNodeModulePathParts(path); @@ -193,7 +193,7 @@ semver exclusivity >=4.5.2 <4.6 + var findPnpApi = require("module").findPnpApi; + var pnpApi = findPnpApi(path); + var locator = pnpApi === null || pnpApi === void 0 ? void 0 : pnpApi.findPackageLocator(path); -+ if (locator != null) { ++ if (locator !== null && locator !== undefined) { + var sourceLocator = pnpApi.findPackageLocator("".concat(sourceDirectory, "/")); + if (locator === sourceLocator) { + return undefined; @@ -211,7 +211,7 @@ semver exclusivity >=4.5.2 <4.6 if (!parts) { return undefined; } -@@ -98606,14 +98717,18 @@ var ts; +@@ -98632,14 +98743,18 @@ var ts; if (isRedirect && !isPackageRootPath) { return undefined; } @@ -237,7 +237,7 @@ semver exclusivity >=4.5.2 <4.6 function tryDirectoryWithPackageJson(packageRootIndex) { var packageRootPath = path.substring(0, packageRootIndex); var packageJsonPath = ts.combinePaths(packageRootPath, "package.json"); -@@ -99361,6 +99476,10 @@ var ts; +@@ -99387,6 +99502,10 @@ var ts; if (configFileName) { configFileWatcher = watchFile(configFileName, scheduleProgramReload, ts.PollingInterval.High, watchOptions, ts.WatchType.ConfigFile); } @@ -248,7 +248,7 @@ semver exclusivity >=4.5.2 <4.6 var compilerHost = ts.createCompilerHostFromProgramHost(host, function () { return compilerOptions; }, directoryStructureHost); ts.setGetSourceFileAsHashVersioned(compilerHost, host); var getNewSourceFile = compilerHost.getSourceFile; -@@ -99432,6 +99551,10 @@ var ts; +@@ -99458,6 +99577,10 @@ var ts; configFileWatcher.close(); configFileWatcher = undefined; } @@ -259,7 +259,7 @@ semver exclusivity >=4.5.2 <4.6 extendedConfigCache === null || extendedConfigCache === void 0 ? void 0 : extendedConfigCache.clear(); extendedConfigCache = undefined; if (sharedExtendedConfigFileWatchers) { -@@ -99468,7 +99591,8 @@ var ts; +@@ -99494,7 +99617,8 @@ var ts; function getCurrentProgram() { return builderProgram && builderProgram.getProgramOrUndefined(); } @@ -269,7 +269,7 @@ semver exclusivity >=4.5.2 <4.6 writeLog("Synchronizing program"); clearInvalidateResolutionsOfFailedLookupLocations(); var program = getCurrentBuilderProgram(); -@@ -99478,7 +99602,7 @@ var ts; +@@ -99504,7 +99628,7 @@ var ts; resolutionCache.clear(); } } @@ -278,7 +278,7 @@ semver exclusivity >=4.5.2 <4.6 if (ts.isProgramUptoDate(getCurrentProgram(), rootFileNames, compilerOptions, getSourceVersion, fileExists, hasInvalidatedResolution, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences)) { if (hasChangedConfigFileParsingErrors) { builderProgram = createProgram(undefined, undefined, compilerHost, builderProgram, configFileParsingDiagnostics, projectReferences); -@@ -99665,6 +99789,12 @@ var ts; +@@ -99691,6 +99815,12 @@ var ts; reloadLevel = ts.ConfigFileProgramReloadLevel.Full; scheduleProgramUpdate(); } @@ -291,7 +291,7 @@ semver exclusivity >=4.5.2 <4.6 function updateProgramWithWatchStatus() { timerToUpdateProgram = undefined; reportWatchDiagnostic(ts.Diagnostics.File_change_detected_Starting_incremental_compilation); -@@ -99680,6 +99810,10 @@ var ts; +@@ -99706,6 +99836,10 @@ var ts; ts.perfLogger.logStartUpdateProgram("FullConfigReload"); reloadConfigFile(); break; @@ -303,7 +303,7 @@ semver exclusivity >=4.5.2 <4.6 ts.perfLogger.logStartUpdateProgram("SynchronizeProgram"); synchronizeProgram(); diff --git a/lib/tsserver.js b/lib/tsserver.js -index d0063b2e5..17d21c109 100644 +index 6499e34af..2ee1a5416 100644 semver exclusivity >=4.5.2 <4.6 --- a/lib/tsserver.js +++ b/lib/tsserver.js @@ -319,7 +319,7 @@ semver exclusivity >=4.5.2 <4.6 // win32\win64 are case insensitive platforms if (platform === "win32" || platform === "win64") { return false; -@@ -41391,18 +41396,17 @@ var ts; +@@ -41403,18 +41408,17 @@ var ts; ts.getEffectiveTypeRoots = getEffectiveTypeRoots; /** * Returns the path to every node_modules/@types directory from some ancestor directory. @@ -341,7 +341,7 @@ semver exclusivity >=4.5.2 <4.6 } return undefined; }); -@@ -41413,6 +41417,42 @@ var ts; +@@ -41425,6 +41429,42 @@ var ts; var useCaseSensitiveFileNames = typeof host.useCaseSensitiveFileNames === "function" ? host.useCaseSensitiveFileNames() : host.useCaseSensitiveFileNames; return ts.comparePaths(path1, path2, !useCaseSensitiveFileNames) === 0 /* EqualTo */; } @@ -384,7 +384,7 @@ semver exclusivity >=4.5.2 <4.6 /** * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups -@@ -41526,7 +41566,9 @@ var ts; +@@ -41541,7 +41581,9 @@ var ts; } var result_4; if (!ts.isExternalModuleNameRelative(typeReferenceDirectiveName)) { @@ -395,7 +395,7 @@ semver exclusivity >=4.5.2 <4.6 result_4 = searchResult && searchResult.value; } else { -@@ -42194,7 +42236,9 @@ var ts; +@@ -42211,7 +42253,9 @@ var ts; if (traceEnabled) { trace(host, ts.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1, moduleName, Extensions[extensions]); } @@ -406,7 +406,7 @@ semver exclusivity >=4.5.2 <4.6 } if (!resolved_1) return undefined; -@@ -42855,6 +42899,14 @@ var ts; +@@ -42872,6 +42916,14 @@ var ts; } function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, nodeModulesDirectory, nodeModulesDirectoryExists, state, cache, redirectedReference) { var candidate = ts.normalizePath(ts.combinePaths(nodeModulesDirectory, moduleName)); @@ -421,7 +421,7 @@ semver exclusivity >=4.5.2 <4.6 // First look for a nested package.json, as in `node_modules/foo/bar/package.json`. var packageInfo = getPackageJsonInfo(candidate, !nodeModulesDirectoryExists, state); // But only if we're not respecting export maps (if we are, we might redirect around this location) -@@ -42868,7 +42920,9 @@ var ts; +@@ -42885,7 +42937,9 @@ var ts; return withPackageId(packageInfo, fromDirectory); } } @@ -432,7 +432,7 @@ semver exclusivity >=4.5.2 <4.6 var loader = function (extensions, candidate, onlyRecordFailures, state) { var _a; // package exports are higher priority than file/directory lookups (and, if there's exports present, blocks them) -@@ -42880,7 +42934,8 @@ var ts; +@@ -42897,7 +42951,8 @@ var ts; return withPackageId(packageInfo, pathAndExtension); }; if (rest !== "") { // If "rest" is empty, we just did this search above. @@ -442,7 +442,7 @@ semver exclusivity >=4.5.2 <4.6 // Don't use a "types" or "main" from here because we're not loading the root, but a subdirectory -- just here for the packageId and path mappings. packageInfo = getPackageJsonInfo(packageDirectory, !nodeModulesDirectoryExists, state); if (packageInfo && packageInfo.versionPaths) { -@@ -43039,6 +43094,58 @@ var ts; +@@ -43056,6 +43111,58 @@ var ts; function toSearchResult(value) { return value !== undefined ? { value: value } : undefined; } @@ -501,7 +501,7 @@ semver exclusivity >=4.5.2 <4.6 })(ts || (ts = {})); /* @internal */ var ts; -@@ -112497,6 +112604,8 @@ var ts; +@@ -112528,6 +112635,8 @@ var ts; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Partial"] = 1] = "Partial"; /** Reload completely by re-reading contents of config file from disk and updating program */ ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Full"] = 2] = "Full"; @@ -510,7 +510,7 @@ semver exclusivity >=4.5.2 <4.6 })(ConfigFileProgramReloadLevel = ts.ConfigFileProgramReloadLevel || (ts.ConfigFileProgramReloadLevel = {})); /** * Updates the map of shared extended config file watches with a new set of extended config files from a base config file of the project -@@ -119301,6 +119410,30 @@ var ts; +@@ -119332,6 +119441,30 @@ var ts; return undefined; } var parts = getNodeModulePathParts(path); @@ -520,7 +520,7 @@ semver exclusivity >=4.5.2 <4.6 + var pnpApi = findPnpApi(path); + var locator = pnpApi === null || pnpApi === void 0 ? void 0 : pnpApi.findPackageLocator(path); + // eslint-disable-next-line no-null/no-null -+ if (locator != null) { ++ if (locator !== null && locator !== undefined) { + var sourceLocator = pnpApi.findPackageLocator("".concat(sourceDirectory, "/")); + // Don't use the package name when the imported file is inside + // the source directory (prefer a relative path instead) @@ -541,7 +541,7 @@ semver exclusivity >=4.5.2 <4.6 if (!parts) { return undefined; } -@@ -119339,18 +119472,24 @@ var ts; +@@ -119370,18 +119503,24 @@ var ts; if (isRedirect && !isPackageRootPath) { return undefined; } @@ -575,7 +575,7 @@ semver exclusivity >=4.5.2 <4.6 function tryDirectoryWithPackageJson(packageRootIndex) { var packageRootPath = path.substring(0, packageRootIndex); var packageJsonPath = ts.combinePaths(packageRootPath, "package.json"); -@@ -120165,6 +120304,10 @@ var ts; +@@ -120196,6 +120335,10 @@ var ts; if (configFileName) { configFileWatcher = watchFile(configFileName, scheduleProgramReload, ts.PollingInterval.High, watchOptions, ts.WatchType.ConfigFile); } @@ -586,7 +586,7 @@ semver exclusivity >=4.5.2 <4.6 var compilerHost = ts.createCompilerHostFromProgramHost(host, function () { return compilerOptions; }, directoryStructureHost); ts.setGetSourceFileAsHashVersioned(compilerHost, host); // Members for CompilerHost -@@ -120243,6 +120386,10 @@ var ts; +@@ -120274,6 +120417,10 @@ var ts; configFileWatcher.close(); configFileWatcher = undefined; } @@ -597,7 +597,7 @@ semver exclusivity >=4.5.2 <4.6 extendedConfigCache === null || extendedConfigCache === void 0 ? void 0 : extendedConfigCache.clear(); extendedConfigCache = undefined; if (sharedExtendedConfigFileWatchers) { -@@ -120279,7 +120426,8 @@ var ts; +@@ -120310,7 +120457,8 @@ var ts; function getCurrentProgram() { return builderProgram && builderProgram.getProgramOrUndefined(); } @@ -607,7 +607,7 @@ semver exclusivity >=4.5.2 <4.6 writeLog("Synchronizing program"); clearInvalidateResolutionsOfFailedLookupLocations(); var program = getCurrentBuilderProgram(); -@@ -120290,7 +120438,7 @@ var ts; +@@ -120321,7 +120469,7 @@ var ts; } } // All resolutions are invalid if user provided resolutions @@ -616,7 +616,7 @@ semver exclusivity >=4.5.2 <4.6 if (ts.isProgramUptoDate(getCurrentProgram(), rootFileNames, compilerOptions, getSourceVersion, fileExists, hasInvalidatedResolution, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences)) { if (hasChangedConfigFileParsingErrors) { builderProgram = createProgram(/*rootNames*/ undefined, /*options*/ undefined, compilerHost, builderProgram, configFileParsingDiagnostics, projectReferences); -@@ -120500,6 +120648,12 @@ var ts; +@@ -120531,6 +120679,12 @@ var ts; reloadLevel = ts.ConfigFileProgramReloadLevel.Full; scheduleProgramUpdate(); } @@ -629,7 +629,7 @@ semver exclusivity >=4.5.2 <4.6 function updateProgramWithWatchStatus() { timerToUpdateProgram = undefined; reportWatchDiagnostic(ts.Diagnostics.File_change_detected_Starting_incremental_compilation); -@@ -120515,6 +120669,10 @@ var ts; +@@ -120546,6 +120700,10 @@ var ts; ts.perfLogger.logStartUpdateProgram("FullConfigReload"); reloadConfigFile(); break; @@ -640,7 +640,7 @@ semver exclusivity >=4.5.2 <4.6 default: ts.perfLogger.logStartUpdateProgram("SynchronizeProgram"); synchronizeProgram(); -@@ -126027,7 +126185,7 @@ var ts; +@@ -126060,7 +126218,7 @@ var ts; * Don't include something from a `node_modules` that isn't actually reachable by a global import. * A relative import to node_modules is usually a bad idea. */ @@ -649,7 +649,7 @@ semver exclusivity >=4.5.2 <4.6 // If it's in a `node_modules` but is not reachable from here via a global import, don't bother. var toNodeModules = ts.forEachAncestorDirectory(toPath, function (ancestor) { return ts.getBaseFileName(ancestor) === "node_modules" ? ancestor : undefined; }); var toNodeModulesParent = toNodeModules && ts.getDirectoryPath(getCanonicalFileName(toNodeModules)); -@@ -126035,6 +126193,33 @@ var ts; +@@ -126068,6 +126226,33 @@ var ts; || ts.startsWith(getCanonicalFileName(fromPath), toNodeModulesParent) || (!!globalCachePath && ts.startsWith(getCanonicalFileName(globalCachePath), toNodeModulesParent)); } @@ -683,7 +683,7 @@ semver exclusivity >=4.5.2 <4.6 function forEachExternalModuleToImportFrom(program, host, useAutoImportProvider, cb) { var _a, _b; forEachExternalModule(program.getTypeChecker(), program.getSourceFiles(), function (module, file) { return cb(module, file, program, /*isFromPackageJson*/ false); }); -@@ -127854,6 +128039,7 @@ var ts; +@@ -127887,6 +128072,7 @@ var ts; * This includes all files that are found in node_modules/moduleName/ with acceptable file extensions */ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, compilerOptions, host, typeChecker) { @@ -691,7 +691,7 @@ semver exclusivity >=4.5.2 <4.6 var baseUrl = compilerOptions.baseUrl, paths = compilerOptions.paths; var result = []; var extensionOptions = getExtensionOptions(compilerOptions); -@@ -127866,8 +128052,8 @@ var ts; +@@ -127899,8 +128085,8 @@ var ts; } } var fragmentDirectory = getFragmentDirectory(fragment); @@ -702,7 +702,7 @@ semver exclusivity >=4.5.2 <4.6 result.push(nameAndKind(ambientName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } getCompletionEntriesFromTypings(host, compilerOptions, scriptPath, fragmentDirectory, extensionOptions, result); -@@ -127882,18 +128068,39 @@ var ts; +@@ -127915,18 +128101,39 @@ var ts; result.push(nameAndKind(moduleName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } }; @@ -749,7 +749,7 @@ semver exclusivity >=4.5.2 <4.6 } } return result; -@@ -127994,6 +128201,7 @@ var ts; +@@ -128027,6 +128234,7 @@ var ts; return addReplacementSpans(toComplete, range.pos + prefix.length, names); } function getCompletionEntriesFromTypings(host, options, scriptPath, fragmentDirectory, extensionOptions, result) { @@ -757,7 +757,7 @@ semver exclusivity >=4.5.2 <4.6 if (result === void 0) { result = []; } // Check for typings specified in compiler options var seen = new ts.Map(); -@@ -128002,11 +128210,19 @@ var ts; +@@ -128035,11 +128243,19 @@ var ts; var root = typeRoots_1[_i]; getCompletionEntriesFromDirectories(root); } @@ -782,7 +782,7 @@ semver exclusivity >=4.5.2 <4.6 } return result; function getCompletionEntriesFromDirectories(directory) { -@@ -157105,9 +157321,9 @@ var ts; +@@ -157142,9 +157358,9 @@ var ts; if (isTopLevelDeclarationStatement(statement) && !isExported(sourceFile, statement, useEs6Exports) && forEachTopLevelDeclaration(statement, function (d) { return needExport.has(ts.Debug.checkDefined(d.symbol)); })) { @@ -795,7 +795,7 @@ semver exclusivity >=4.5.2 <4.6 } return statement; }); -@@ -165935,6 +166151,40 @@ var ts; +@@ -165972,6 +166188,40 @@ var ts; return this.projectReferences; }; ConfiguredProject.prototype.updateReferences = function (refs) { @@ -836,7 +836,7 @@ semver exclusivity >=4.5.2 <4.6 this.projectReferences = refs; this.potentialProjectReferences = undefined; }; -@@ -166551,6 +166801,7 @@ var ts; +@@ -166588,6 +166838,7 @@ var ts; watchDirectory: ts.returnNoopFileWatcher, } : ts.getWatchFactory(this.host, watchLogLevel, log, getDetailWatchInfo); @@ -844,7 +844,7 @@ semver exclusivity >=4.5.2 <4.6 } ProjectService.prototype.toPath = function (fileName) { return ts.toPath(fileName, this.currentDirectory, this.toCanonicalFileName); -@@ -168403,7 +168654,7 @@ var ts; +@@ -168440,7 +168691,7 @@ var ts; }; ProjectService.prototype.setHostConfiguration = function (args) { var _this = this; @@ -853,7 +853,7 @@ semver exclusivity >=4.5.2 <4.6 if (args.file) { var info = this.getScriptInfoForNormalizedPath(server.toNormalizedPath(args.file)); if (info) { -@@ -168421,7 +168672,7 @@ var ts; +@@ -168458,7 +168709,7 @@ var ts; this.logger.info("Format host information updated"); } if (args.preferences) { @@ -862,7 +862,7 @@ semver exclusivity >=4.5.2 <4.6 this.hostConfiguration.preferences = __assign(__assign({}, this.hostConfiguration.preferences), args.preferences); if (lazyConfiguredProjectsFromExternalProject && !this.hostConfiguration.preferences.lazyConfiguredProjectsFromExternalProject) { // Load configured projects for external projects that are pending reload -@@ -168447,6 +168698,8 @@ var ts; +@@ -168484,6 +168735,8 @@ var ts; if (args.watchOptions) { this.hostConfiguration.watchOptions = (_a = convertWatchOptions(args.watchOptions)) === null || _a === void 0 ? void 0 : _a.watchOptions; this.logger.info("Host watch options changed to ".concat(JSON.stringify(this.hostConfiguration.watchOptions), ", it will be take effect for next watches.")); @@ -871,7 +871,7 @@ semver exclusivity >=4.5.2 <4.6 } } }; -@@ -169441,6 +169694,27 @@ var ts; +@@ -169478,6 +169731,27 @@ var ts; }); }; /*@internal*/ @@ -899,7 +899,7 @@ semver exclusivity >=4.5.2 <4.6 ProjectService.prototype.watchPackageJsonFile = function (path) { var _this = this; var watchers = this.packageJsonFilesMap || (this.packageJsonFilesMap = new ts.Map()); -@@ -174314,6 +174588,11 @@ var ts; +@@ -174351,6 +174625,11 @@ var ts; } try { var args = [ts.combinePaths(__dirname, "watchGuard.js"), path]; @@ -911,7 +911,7 @@ semver exclusivity >=4.5.2 <4.6 if (logger.hasLevel(server.LogLevel.verbose)) { logger.info("Starting ".concat(process.execPath, " with args:").concat(server.stringifyIndented(args))); } -@@ -174574,6 +174853,11 @@ var ts; +@@ -174611,6 +174890,11 @@ var ts; break; } } @@ -924,7 +924,7 @@ semver exclusivity >=4.5.2 <4.6 this.installer.on("message", function (m) { return _this.handleMessage(m); }); // We have to schedule this event to the next tick diff --git a/lib/tsserverlibrary.js b/lib/tsserverlibrary.js -index 362c8ed2f..836fb22b4 100644 +index 160c6c94d..cfc193f46 100644 semver exclusivity >=4.5.2 <4.6 --- a/lib/tsserverlibrary.js +++ b/lib/tsserverlibrary.js @@ -940,7 +940,7 @@ semver exclusivity >=4.5.2 <4.6 // win32\win64 are case insensitive platforms if (platform === "win32" || platform === "win64") { return false; -@@ -41585,18 +41590,17 @@ var ts; +@@ -41597,18 +41602,17 @@ var ts; ts.getEffectiveTypeRoots = getEffectiveTypeRoots; /** * Returns the path to every node_modules/@types directory from some ancestor directory. @@ -962,7 +962,7 @@ semver exclusivity >=4.5.2 <4.6 } return undefined; }); -@@ -41607,6 +41611,42 @@ var ts; +@@ -41619,6 +41623,42 @@ var ts; var useCaseSensitiveFileNames = typeof host.useCaseSensitiveFileNames === "function" ? host.useCaseSensitiveFileNames() : host.useCaseSensitiveFileNames; return ts.comparePaths(path1, path2, !useCaseSensitiveFileNames) === 0 /* EqualTo */; } @@ -1005,7 +1005,7 @@ semver exclusivity >=4.5.2 <4.6 /** * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups -@@ -41720,7 +41760,9 @@ var ts; +@@ -41735,7 +41775,9 @@ var ts; } var result_4; if (!ts.isExternalModuleNameRelative(typeReferenceDirectiveName)) { @@ -1016,7 +1016,7 @@ semver exclusivity >=4.5.2 <4.6 result_4 = searchResult && searchResult.value; } else { -@@ -42388,7 +42430,9 @@ var ts; +@@ -42405,7 +42447,9 @@ var ts; if (traceEnabled) { trace(host, ts.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1, moduleName, Extensions[extensions]); } @@ -1027,7 +1027,7 @@ semver exclusivity >=4.5.2 <4.6 } if (!resolved_1) return undefined; -@@ -43049,6 +43093,14 @@ var ts; +@@ -43066,6 +43110,14 @@ var ts; } function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, nodeModulesDirectory, nodeModulesDirectoryExists, state, cache, redirectedReference) { var candidate = ts.normalizePath(ts.combinePaths(nodeModulesDirectory, moduleName)); @@ -1042,7 +1042,7 @@ semver exclusivity >=4.5.2 <4.6 // First look for a nested package.json, as in `node_modules/foo/bar/package.json`. var packageInfo = getPackageJsonInfo(candidate, !nodeModulesDirectoryExists, state); // But only if we're not respecting export maps (if we are, we might redirect around this location) -@@ -43062,7 +43114,9 @@ var ts; +@@ -43079,7 +43131,9 @@ var ts; return withPackageId(packageInfo, fromDirectory); } } @@ -1053,7 +1053,7 @@ semver exclusivity >=4.5.2 <4.6 var loader = function (extensions, candidate, onlyRecordFailures, state) { var _a; // package exports are higher priority than file/directory lookups (and, if there's exports present, blocks them) -@@ -43074,7 +43128,8 @@ var ts; +@@ -43091,7 +43145,8 @@ var ts; return withPackageId(packageInfo, pathAndExtension); }; if (rest !== "") { // If "rest" is empty, we just did this search above. @@ -1063,7 +1063,7 @@ semver exclusivity >=4.5.2 <4.6 // Don't use a "types" or "main" from here because we're not loading the root, but a subdirectory -- just here for the packageId and path mappings. packageInfo = getPackageJsonInfo(packageDirectory, !nodeModulesDirectoryExists, state); if (packageInfo && packageInfo.versionPaths) { -@@ -43233,6 +43288,58 @@ var ts; +@@ -43250,6 +43305,58 @@ var ts; function toSearchResult(value) { return value !== undefined ? { value: value } : undefined; } @@ -1122,7 +1122,7 @@ semver exclusivity >=4.5.2 <4.6 })(ts || (ts = {})); /* @internal */ var ts; -@@ -112691,6 +112798,8 @@ var ts; +@@ -112722,6 +112829,8 @@ var ts; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Partial"] = 1] = "Partial"; /** Reload completely by re-reading contents of config file from disk and updating program */ ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Full"] = 2] = "Full"; @@ -1131,7 +1131,7 @@ semver exclusivity >=4.5.2 <4.6 })(ConfigFileProgramReloadLevel = ts.ConfigFileProgramReloadLevel || (ts.ConfigFileProgramReloadLevel = {})); /** * Updates the map of shared extended config file watches with a new set of extended config files from a base config file of the project -@@ -119495,6 +119604,30 @@ var ts; +@@ -119526,6 +119635,30 @@ var ts; return undefined; } var parts = getNodeModulePathParts(path); @@ -1141,7 +1141,7 @@ semver exclusivity >=4.5.2 <4.6 + var pnpApi = findPnpApi(path); + var locator = pnpApi === null || pnpApi === void 0 ? void 0 : pnpApi.findPackageLocator(path); + // eslint-disable-next-line no-null/no-null -+ if (locator != null) { ++ if (locator !== null && locator !== undefined) { + var sourceLocator = pnpApi.findPackageLocator("".concat(sourceDirectory, "/")); + // Don't use the package name when the imported file is inside + // the source directory (prefer a relative path instead) @@ -1162,7 +1162,7 @@ semver exclusivity >=4.5.2 <4.6 if (!parts) { return undefined; } -@@ -119533,18 +119666,24 @@ var ts; +@@ -119564,18 +119697,24 @@ var ts; if (isRedirect && !isPackageRootPath) { return undefined; } @@ -1196,7 +1196,7 @@ semver exclusivity >=4.5.2 <4.6 function tryDirectoryWithPackageJson(packageRootIndex) { var packageRootPath = path.substring(0, packageRootIndex); var packageJsonPath = ts.combinePaths(packageRootPath, "package.json"); -@@ -120359,6 +120498,10 @@ var ts; +@@ -120390,6 +120529,10 @@ var ts; if (configFileName) { configFileWatcher = watchFile(configFileName, scheduleProgramReload, ts.PollingInterval.High, watchOptions, ts.WatchType.ConfigFile); } @@ -1207,7 +1207,7 @@ semver exclusivity >=4.5.2 <4.6 var compilerHost = ts.createCompilerHostFromProgramHost(host, function () { return compilerOptions; }, directoryStructureHost); ts.setGetSourceFileAsHashVersioned(compilerHost, host); // Members for CompilerHost -@@ -120437,6 +120580,10 @@ var ts; +@@ -120468,6 +120611,10 @@ var ts; configFileWatcher.close(); configFileWatcher = undefined; } @@ -1218,7 +1218,7 @@ semver exclusivity >=4.5.2 <4.6 extendedConfigCache === null || extendedConfigCache === void 0 ? void 0 : extendedConfigCache.clear(); extendedConfigCache = undefined; if (sharedExtendedConfigFileWatchers) { -@@ -120473,7 +120620,8 @@ var ts; +@@ -120504,7 +120651,8 @@ var ts; function getCurrentProgram() { return builderProgram && builderProgram.getProgramOrUndefined(); } @@ -1228,7 +1228,7 @@ semver exclusivity >=4.5.2 <4.6 writeLog("Synchronizing program"); clearInvalidateResolutionsOfFailedLookupLocations(); var program = getCurrentBuilderProgram(); -@@ -120484,7 +120632,7 @@ var ts; +@@ -120515,7 +120663,7 @@ var ts; } } // All resolutions are invalid if user provided resolutions @@ -1237,7 +1237,7 @@ semver exclusivity >=4.5.2 <4.6 if (ts.isProgramUptoDate(getCurrentProgram(), rootFileNames, compilerOptions, getSourceVersion, fileExists, hasInvalidatedResolution, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences)) { if (hasChangedConfigFileParsingErrors) { builderProgram = createProgram(/*rootNames*/ undefined, /*options*/ undefined, compilerHost, builderProgram, configFileParsingDiagnostics, projectReferences); -@@ -120694,6 +120842,12 @@ var ts; +@@ -120725,6 +120873,12 @@ var ts; reloadLevel = ts.ConfigFileProgramReloadLevel.Full; scheduleProgramUpdate(); } @@ -1250,7 +1250,7 @@ semver exclusivity >=4.5.2 <4.6 function updateProgramWithWatchStatus() { timerToUpdateProgram = undefined; reportWatchDiagnostic(ts.Diagnostics.File_change_detected_Starting_incremental_compilation); -@@ -120709,6 +120863,10 @@ var ts; +@@ -120740,6 +120894,10 @@ var ts; ts.perfLogger.logStartUpdateProgram("FullConfigReload"); reloadConfigFile(); break; @@ -1261,7 +1261,7 @@ semver exclusivity >=4.5.2 <4.6 default: ts.perfLogger.logStartUpdateProgram("SynchronizeProgram"); synchronizeProgram(); -@@ -126609,7 +126767,7 @@ var ts; +@@ -126642,7 +126800,7 @@ var ts; * Don't include something from a `node_modules` that isn't actually reachable by a global import. * A relative import to node_modules is usually a bad idea. */ @@ -1270,7 +1270,7 @@ semver exclusivity >=4.5.2 <4.6 // If it's in a `node_modules` but is not reachable from here via a global import, don't bother. var toNodeModules = ts.forEachAncestorDirectory(toPath, function (ancestor) { return ts.getBaseFileName(ancestor) === "node_modules" ? ancestor : undefined; }); var toNodeModulesParent = toNodeModules && ts.getDirectoryPath(getCanonicalFileName(toNodeModules)); -@@ -126617,6 +126775,33 @@ var ts; +@@ -126650,6 +126808,33 @@ var ts; || ts.startsWith(getCanonicalFileName(fromPath), toNodeModulesParent) || (!!globalCachePath && ts.startsWith(getCanonicalFileName(globalCachePath), toNodeModulesParent)); } @@ -1304,7 +1304,7 @@ semver exclusivity >=4.5.2 <4.6 function forEachExternalModuleToImportFrom(program, host, useAutoImportProvider, cb) { var _a, _b; forEachExternalModule(program.getTypeChecker(), program.getSourceFiles(), function (module, file) { return cb(module, file, program, /*isFromPackageJson*/ false); }); -@@ -128436,6 +128621,7 @@ var ts; +@@ -128469,6 +128654,7 @@ var ts; * This includes all files that are found in node_modules/moduleName/ with acceptable file extensions */ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, compilerOptions, host, typeChecker) { @@ -1312,7 +1312,7 @@ semver exclusivity >=4.5.2 <4.6 var baseUrl = compilerOptions.baseUrl, paths = compilerOptions.paths; var result = []; var extensionOptions = getExtensionOptions(compilerOptions); -@@ -128448,8 +128634,8 @@ var ts; +@@ -128481,8 +128667,8 @@ var ts; } } var fragmentDirectory = getFragmentDirectory(fragment); @@ -1323,7 +1323,7 @@ semver exclusivity >=4.5.2 <4.6 result.push(nameAndKind(ambientName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } getCompletionEntriesFromTypings(host, compilerOptions, scriptPath, fragmentDirectory, extensionOptions, result); -@@ -128464,18 +128650,39 @@ var ts; +@@ -128497,18 +128683,39 @@ var ts; result.push(nameAndKind(moduleName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } }; @@ -1370,7 +1370,7 @@ semver exclusivity >=4.5.2 <4.6 } } return result; -@@ -128576,6 +128783,7 @@ var ts; +@@ -128609,6 +128816,7 @@ var ts; return addReplacementSpans(toComplete, range.pos + prefix.length, names); } function getCompletionEntriesFromTypings(host, options, scriptPath, fragmentDirectory, extensionOptions, result) { @@ -1378,7 +1378,7 @@ semver exclusivity >=4.5.2 <4.6 if (result === void 0) { result = []; } // Check for typings specified in compiler options var seen = new ts.Map(); -@@ -128584,11 +128792,19 @@ var ts; +@@ -128617,11 +128825,19 @@ var ts; var root = typeRoots_1[_i]; getCompletionEntriesFromDirectories(root); } @@ -1403,7 +1403,7 @@ semver exclusivity >=4.5.2 <4.6 } return result; function getCompletionEntriesFromDirectories(directory) { -@@ -157687,9 +157903,9 @@ var ts; +@@ -157724,9 +157940,9 @@ var ts; if (isTopLevelDeclarationStatement(statement) && !isExported(sourceFile, statement, useEs6Exports) && forEachTopLevelDeclaration(statement, function (d) { return needExport.has(ts.Debug.checkDefined(d.symbol)); })) { @@ -1416,7 +1416,7 @@ semver exclusivity >=4.5.2 <4.6 } return statement; }); -@@ -166129,6 +166345,40 @@ var ts; +@@ -166166,6 +166382,40 @@ var ts; return this.projectReferences; }; ConfiguredProject.prototype.updateReferences = function (refs) { @@ -1457,7 +1457,7 @@ semver exclusivity >=4.5.2 <4.6 this.projectReferences = refs; this.potentialProjectReferences = undefined; }; -@@ -166745,6 +166995,7 @@ var ts; +@@ -166782,6 +167032,7 @@ var ts; watchDirectory: ts.returnNoopFileWatcher, } : ts.getWatchFactory(this.host, watchLogLevel, log, getDetailWatchInfo); @@ -1465,7 +1465,7 @@ semver exclusivity >=4.5.2 <4.6 } ProjectService.prototype.toPath = function (fileName) { return ts.toPath(fileName, this.currentDirectory, this.toCanonicalFileName); -@@ -168597,7 +168848,7 @@ var ts; +@@ -168634,7 +168885,7 @@ var ts; }; ProjectService.prototype.setHostConfiguration = function (args) { var _this = this; @@ -1474,7 +1474,7 @@ semver exclusivity >=4.5.2 <4.6 if (args.file) { var info = this.getScriptInfoForNormalizedPath(server.toNormalizedPath(args.file)); if (info) { -@@ -168615,7 +168866,7 @@ var ts; +@@ -168652,7 +168903,7 @@ var ts; this.logger.info("Format host information updated"); } if (args.preferences) { @@ -1483,7 +1483,7 @@ semver exclusivity >=4.5.2 <4.6 this.hostConfiguration.preferences = __assign(__assign({}, this.hostConfiguration.preferences), args.preferences); if (lazyConfiguredProjectsFromExternalProject && !this.hostConfiguration.preferences.lazyConfiguredProjectsFromExternalProject) { // Load configured projects for external projects that are pending reload -@@ -168641,6 +168892,8 @@ var ts; +@@ -168678,6 +168929,8 @@ var ts; if (args.watchOptions) { this.hostConfiguration.watchOptions = (_a = convertWatchOptions(args.watchOptions)) === null || _a === void 0 ? void 0 : _a.watchOptions; this.logger.info("Host watch options changed to ".concat(JSON.stringify(this.hostConfiguration.watchOptions), ", it will be take effect for next watches.")); @@ -1492,7 +1492,7 @@ semver exclusivity >=4.5.2 <4.6 } } }; -@@ -169635,6 +169888,27 @@ var ts; +@@ -169672,6 +169925,27 @@ var ts; }); }; /*@internal*/ @@ -1521,7 +1521,7 @@ semver exclusivity >=4.5.2 <4.6 var _this = this; var watchers = this.packageJsonFilesMap || (this.packageJsonFilesMap = new ts.Map()); diff --git a/lib/typescript.js b/lib/typescript.js -index b08660b52..0cefe5195 100644 +index 0b317307b..da58afb9e 100644 semver exclusivity >=4.5.2 <4.6 --- a/lib/typescript.js +++ b/lib/typescript.js @@ -1537,7 +1537,7 @@ semver exclusivity >=4.5.2 <4.6 // win32\win64 are case insensitive platforms if (platform === "win32" || platform === "win64") { return false; -@@ -41585,18 +41590,17 @@ var ts; +@@ -41597,18 +41602,17 @@ var ts; ts.getEffectiveTypeRoots = getEffectiveTypeRoots; /** * Returns the path to every node_modules/@types directory from some ancestor directory. @@ -1559,7 +1559,7 @@ semver exclusivity >=4.5.2 <4.6 } return undefined; }); -@@ -41607,6 +41611,42 @@ var ts; +@@ -41619,6 +41623,42 @@ var ts; var useCaseSensitiveFileNames = typeof host.useCaseSensitiveFileNames === "function" ? host.useCaseSensitiveFileNames() : host.useCaseSensitiveFileNames; return ts.comparePaths(path1, path2, !useCaseSensitiveFileNames) === 0 /* EqualTo */; } @@ -1602,7 +1602,7 @@ semver exclusivity >=4.5.2 <4.6 /** * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups -@@ -41720,7 +41760,9 @@ var ts; +@@ -41735,7 +41775,9 @@ var ts; } var result_4; if (!ts.isExternalModuleNameRelative(typeReferenceDirectiveName)) { @@ -1613,7 +1613,7 @@ semver exclusivity >=4.5.2 <4.6 result_4 = searchResult && searchResult.value; } else { -@@ -42388,7 +42430,9 @@ var ts; +@@ -42405,7 +42447,9 @@ var ts; if (traceEnabled) { trace(host, ts.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1, moduleName, Extensions[extensions]); } @@ -1624,7 +1624,7 @@ semver exclusivity >=4.5.2 <4.6 } if (!resolved_1) return undefined; -@@ -43049,6 +43093,14 @@ var ts; +@@ -43066,6 +43110,14 @@ var ts; } function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, nodeModulesDirectory, nodeModulesDirectoryExists, state, cache, redirectedReference) { var candidate = ts.normalizePath(ts.combinePaths(nodeModulesDirectory, moduleName)); @@ -1639,7 +1639,7 @@ semver exclusivity >=4.5.2 <4.6 // First look for a nested package.json, as in `node_modules/foo/bar/package.json`. var packageInfo = getPackageJsonInfo(candidate, !nodeModulesDirectoryExists, state); // But only if we're not respecting export maps (if we are, we might redirect around this location) -@@ -43062,7 +43114,9 @@ var ts; +@@ -43079,7 +43131,9 @@ var ts; return withPackageId(packageInfo, fromDirectory); } } @@ -1650,7 +1650,7 @@ semver exclusivity >=4.5.2 <4.6 var loader = function (extensions, candidate, onlyRecordFailures, state) { var _a; // package exports are higher priority than file/directory lookups (and, if there's exports present, blocks them) -@@ -43074,7 +43128,8 @@ var ts; +@@ -43091,7 +43145,8 @@ var ts; return withPackageId(packageInfo, pathAndExtension); }; if (rest !== "") { // If "rest" is empty, we just did this search above. @@ -1660,7 +1660,7 @@ semver exclusivity >=4.5.2 <4.6 // Don't use a "types" or "main" from here because we're not loading the root, but a subdirectory -- just here for the packageId and path mappings. packageInfo = getPackageJsonInfo(packageDirectory, !nodeModulesDirectoryExists, state); if (packageInfo && packageInfo.versionPaths) { -@@ -43233,6 +43288,58 @@ var ts; +@@ -43250,6 +43305,58 @@ var ts; function toSearchResult(value) { return value !== undefined ? { value: value } : undefined; } @@ -1719,7 +1719,7 @@ semver exclusivity >=4.5.2 <4.6 })(ts || (ts = {})); /* @internal */ var ts; -@@ -112691,6 +112798,8 @@ var ts; +@@ -112722,6 +112829,8 @@ var ts; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Partial"] = 1] = "Partial"; /** Reload completely by re-reading contents of config file from disk and updating program */ ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Full"] = 2] = "Full"; @@ -1728,7 +1728,7 @@ semver exclusivity >=4.5.2 <4.6 })(ConfigFileProgramReloadLevel = ts.ConfigFileProgramReloadLevel || (ts.ConfigFileProgramReloadLevel = {})); /** * Updates the map of shared extended config file watches with a new set of extended config files from a base config file of the project -@@ -119495,6 +119604,30 @@ var ts; +@@ -119526,6 +119635,30 @@ var ts; return undefined; } var parts = getNodeModulePathParts(path); @@ -1738,7 +1738,7 @@ semver exclusivity >=4.5.2 <4.6 + var pnpApi = findPnpApi(path); + var locator = pnpApi === null || pnpApi === void 0 ? void 0 : pnpApi.findPackageLocator(path); + // eslint-disable-next-line no-null/no-null -+ if (locator != null) { ++ if (locator !== null && locator !== undefined) { + var sourceLocator = pnpApi.findPackageLocator("".concat(sourceDirectory, "/")); + // Don't use the package name when the imported file is inside + // the source directory (prefer a relative path instead) @@ -1759,7 +1759,7 @@ semver exclusivity >=4.5.2 <4.6 if (!parts) { return undefined; } -@@ -119533,18 +119666,24 @@ var ts; +@@ -119564,18 +119697,24 @@ var ts; if (isRedirect && !isPackageRootPath) { return undefined; } @@ -1793,7 +1793,7 @@ semver exclusivity >=4.5.2 <4.6 function tryDirectoryWithPackageJson(packageRootIndex) { var packageRootPath = path.substring(0, packageRootIndex); var packageJsonPath = ts.combinePaths(packageRootPath, "package.json"); -@@ -120359,6 +120498,10 @@ var ts; +@@ -120390,6 +120529,10 @@ var ts; if (configFileName) { configFileWatcher = watchFile(configFileName, scheduleProgramReload, ts.PollingInterval.High, watchOptions, ts.WatchType.ConfigFile); } @@ -1804,7 +1804,7 @@ semver exclusivity >=4.5.2 <4.6 var compilerHost = ts.createCompilerHostFromProgramHost(host, function () { return compilerOptions; }, directoryStructureHost); ts.setGetSourceFileAsHashVersioned(compilerHost, host); // Members for CompilerHost -@@ -120437,6 +120580,10 @@ var ts; +@@ -120468,6 +120611,10 @@ var ts; configFileWatcher.close(); configFileWatcher = undefined; } @@ -1815,7 +1815,7 @@ semver exclusivity >=4.5.2 <4.6 extendedConfigCache === null || extendedConfigCache === void 0 ? void 0 : extendedConfigCache.clear(); extendedConfigCache = undefined; if (sharedExtendedConfigFileWatchers) { -@@ -120473,7 +120620,8 @@ var ts; +@@ -120504,7 +120651,8 @@ var ts; function getCurrentProgram() { return builderProgram && builderProgram.getProgramOrUndefined(); } @@ -1825,7 +1825,7 @@ semver exclusivity >=4.5.2 <4.6 writeLog("Synchronizing program"); clearInvalidateResolutionsOfFailedLookupLocations(); var program = getCurrentBuilderProgram(); -@@ -120484,7 +120632,7 @@ var ts; +@@ -120515,7 +120663,7 @@ var ts; } } // All resolutions are invalid if user provided resolutions @@ -1834,7 +1834,7 @@ semver exclusivity >=4.5.2 <4.6 if (ts.isProgramUptoDate(getCurrentProgram(), rootFileNames, compilerOptions, getSourceVersion, fileExists, hasInvalidatedResolution, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences)) { if (hasChangedConfigFileParsingErrors) { builderProgram = createProgram(/*rootNames*/ undefined, /*options*/ undefined, compilerHost, builderProgram, configFileParsingDiagnostics, projectReferences); -@@ -120694,6 +120842,12 @@ var ts; +@@ -120725,6 +120873,12 @@ var ts; reloadLevel = ts.ConfigFileProgramReloadLevel.Full; scheduleProgramUpdate(); } @@ -1847,7 +1847,7 @@ semver exclusivity >=4.5.2 <4.6 function updateProgramWithWatchStatus() { timerToUpdateProgram = undefined; reportWatchDiagnostic(ts.Diagnostics.File_change_detected_Starting_incremental_compilation); -@@ -120709,6 +120863,10 @@ var ts; +@@ -120740,6 +120894,10 @@ var ts; ts.perfLogger.logStartUpdateProgram("FullConfigReload"); reloadConfigFile(); break; @@ -1858,7 +1858,7 @@ semver exclusivity >=4.5.2 <4.6 default: ts.perfLogger.logStartUpdateProgram("SynchronizeProgram"); synchronizeProgram(); -@@ -126609,7 +126767,7 @@ var ts; +@@ -126642,7 +126800,7 @@ var ts; * Don't include something from a `node_modules` that isn't actually reachable by a global import. * A relative import to node_modules is usually a bad idea. */ @@ -1867,7 +1867,7 @@ semver exclusivity >=4.5.2 <4.6 // If it's in a `node_modules` but is not reachable from here via a global import, don't bother. var toNodeModules = ts.forEachAncestorDirectory(toPath, function (ancestor) { return ts.getBaseFileName(ancestor) === "node_modules" ? ancestor : undefined; }); var toNodeModulesParent = toNodeModules && ts.getDirectoryPath(getCanonicalFileName(toNodeModules)); -@@ -126617,6 +126775,33 @@ var ts; +@@ -126650,6 +126808,33 @@ var ts; || ts.startsWith(getCanonicalFileName(fromPath), toNodeModulesParent) || (!!globalCachePath && ts.startsWith(getCanonicalFileName(globalCachePath), toNodeModulesParent)); } @@ -1901,7 +1901,7 @@ semver exclusivity >=4.5.2 <4.6 function forEachExternalModuleToImportFrom(program, host, useAutoImportProvider, cb) { var _a, _b; forEachExternalModule(program.getTypeChecker(), program.getSourceFiles(), function (module, file) { return cb(module, file, program, /*isFromPackageJson*/ false); }); -@@ -128436,6 +128621,7 @@ var ts; +@@ -128469,6 +128654,7 @@ var ts; * This includes all files that are found in node_modules/moduleName/ with acceptable file extensions */ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, compilerOptions, host, typeChecker) { @@ -1909,7 +1909,7 @@ semver exclusivity >=4.5.2 <4.6 var baseUrl = compilerOptions.baseUrl, paths = compilerOptions.paths; var result = []; var extensionOptions = getExtensionOptions(compilerOptions); -@@ -128448,8 +128634,8 @@ var ts; +@@ -128481,8 +128667,8 @@ var ts; } } var fragmentDirectory = getFragmentDirectory(fragment); @@ -1920,7 +1920,7 @@ semver exclusivity >=4.5.2 <4.6 result.push(nameAndKind(ambientName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } getCompletionEntriesFromTypings(host, compilerOptions, scriptPath, fragmentDirectory, extensionOptions, result); -@@ -128464,18 +128650,39 @@ var ts; +@@ -128497,18 +128683,39 @@ var ts; result.push(nameAndKind(moduleName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } }; @@ -1967,7 +1967,7 @@ semver exclusivity >=4.5.2 <4.6 } } return result; -@@ -128576,6 +128783,7 @@ var ts; +@@ -128609,6 +128816,7 @@ var ts; return addReplacementSpans(toComplete, range.pos + prefix.length, names); } function getCompletionEntriesFromTypings(host, options, scriptPath, fragmentDirectory, extensionOptions, result) { @@ -1975,7 +1975,7 @@ semver exclusivity >=4.5.2 <4.6 if (result === void 0) { result = []; } // Check for typings specified in compiler options var seen = new ts.Map(); -@@ -128584,11 +128792,19 @@ var ts; +@@ -128617,11 +128825,19 @@ var ts; var root = typeRoots_1[_i]; getCompletionEntriesFromDirectories(root); } @@ -2000,7 +2000,7 @@ semver exclusivity >=4.5.2 <4.6 } return result; function getCompletionEntriesFromDirectories(directory) { -@@ -157687,9 +157903,9 @@ var ts; +@@ -157724,9 +157940,9 @@ var ts; if (isTopLevelDeclarationStatement(statement) && !isExported(sourceFile, statement, useEs6Exports) && forEachTopLevelDeclaration(statement, function (d) { return needExport.has(ts.Debug.checkDefined(d.symbol)); })) { @@ -2014,7 +2014,7 @@ semver exclusivity >=4.5.2 <4.6 return statement; }); diff --git a/lib/typescriptServices.js b/lib/typescriptServices.js -index bbe1b9b37..197e2c71c 100644 +index bdd26eb4e..2e0e6adba 100644 semver exclusivity >=4.5.2 <4.6 --- a/lib/typescriptServices.js +++ b/lib/typescriptServices.js @@ -2030,7 +2030,7 @@ semver exclusivity >=4.5.2 <4.6 // win32\win64 are case insensitive platforms if (platform === "win32" || platform === "win64") { return false; -@@ -41585,18 +41590,17 @@ var ts; +@@ -41597,18 +41602,17 @@ var ts; ts.getEffectiveTypeRoots = getEffectiveTypeRoots; /** * Returns the path to every node_modules/@types directory from some ancestor directory. @@ -2052,7 +2052,7 @@ semver exclusivity >=4.5.2 <4.6 } return undefined; }); -@@ -41607,6 +41611,42 @@ var ts; +@@ -41619,6 +41623,42 @@ var ts; var useCaseSensitiveFileNames = typeof host.useCaseSensitiveFileNames === "function" ? host.useCaseSensitiveFileNames() : host.useCaseSensitiveFileNames; return ts.comparePaths(path1, path2, !useCaseSensitiveFileNames) === 0 /* EqualTo */; } @@ -2095,7 +2095,7 @@ semver exclusivity >=4.5.2 <4.6 /** * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups -@@ -41720,7 +41760,9 @@ var ts; +@@ -41735,7 +41775,9 @@ var ts; } var result_4; if (!ts.isExternalModuleNameRelative(typeReferenceDirectiveName)) { @@ -2106,7 +2106,7 @@ semver exclusivity >=4.5.2 <4.6 result_4 = searchResult && searchResult.value; } else { -@@ -42388,7 +42430,9 @@ var ts; +@@ -42405,7 +42447,9 @@ var ts; if (traceEnabled) { trace(host, ts.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1, moduleName, Extensions[extensions]); } @@ -2117,7 +2117,7 @@ semver exclusivity >=4.5.2 <4.6 } if (!resolved_1) return undefined; -@@ -43049,6 +43093,14 @@ var ts; +@@ -43066,6 +43110,14 @@ var ts; } function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, nodeModulesDirectory, nodeModulesDirectoryExists, state, cache, redirectedReference) { var candidate = ts.normalizePath(ts.combinePaths(nodeModulesDirectory, moduleName)); @@ -2132,7 +2132,7 @@ semver exclusivity >=4.5.2 <4.6 // First look for a nested package.json, as in `node_modules/foo/bar/package.json`. var packageInfo = getPackageJsonInfo(candidate, !nodeModulesDirectoryExists, state); // But only if we're not respecting export maps (if we are, we might redirect around this location) -@@ -43062,7 +43114,9 @@ var ts; +@@ -43079,7 +43131,9 @@ var ts; return withPackageId(packageInfo, fromDirectory); } } @@ -2143,7 +2143,7 @@ semver exclusivity >=4.5.2 <4.6 var loader = function (extensions, candidate, onlyRecordFailures, state) { var _a; // package exports are higher priority than file/directory lookups (and, if there's exports present, blocks them) -@@ -43074,7 +43128,8 @@ var ts; +@@ -43091,7 +43145,8 @@ var ts; return withPackageId(packageInfo, pathAndExtension); }; if (rest !== "") { // If "rest" is empty, we just did this search above. @@ -2153,7 +2153,7 @@ semver exclusivity >=4.5.2 <4.6 // Don't use a "types" or "main" from here because we're not loading the root, but a subdirectory -- just here for the packageId and path mappings. packageInfo = getPackageJsonInfo(packageDirectory, !nodeModulesDirectoryExists, state); if (packageInfo && packageInfo.versionPaths) { -@@ -43233,6 +43288,58 @@ var ts; +@@ -43250,6 +43305,58 @@ var ts; function toSearchResult(value) { return value !== undefined ? { value: value } : undefined; } @@ -2212,7 +2212,7 @@ semver exclusivity >=4.5.2 <4.6 })(ts || (ts = {})); /* @internal */ var ts; -@@ -112691,6 +112798,8 @@ var ts; +@@ -112722,6 +112829,8 @@ var ts; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Partial"] = 1] = "Partial"; /** Reload completely by re-reading contents of config file from disk and updating program */ ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Full"] = 2] = "Full"; @@ -2221,7 +2221,7 @@ semver exclusivity >=4.5.2 <4.6 })(ConfigFileProgramReloadLevel = ts.ConfigFileProgramReloadLevel || (ts.ConfigFileProgramReloadLevel = {})); /** * Updates the map of shared extended config file watches with a new set of extended config files from a base config file of the project -@@ -119495,6 +119604,30 @@ var ts; +@@ -119526,6 +119635,30 @@ var ts; return undefined; } var parts = getNodeModulePathParts(path); @@ -2231,7 +2231,7 @@ semver exclusivity >=4.5.2 <4.6 + var pnpApi = findPnpApi(path); + var locator = pnpApi === null || pnpApi === void 0 ? void 0 : pnpApi.findPackageLocator(path); + // eslint-disable-next-line no-null/no-null -+ if (locator != null) { ++ if (locator !== null && locator !== undefined) { + var sourceLocator = pnpApi.findPackageLocator("".concat(sourceDirectory, "/")); + // Don't use the package name when the imported file is inside + // the source directory (prefer a relative path instead) @@ -2252,7 +2252,7 @@ semver exclusivity >=4.5.2 <4.6 if (!parts) { return undefined; } -@@ -119533,18 +119666,24 @@ var ts; +@@ -119564,18 +119697,24 @@ var ts; if (isRedirect && !isPackageRootPath) { return undefined; } @@ -2286,7 +2286,7 @@ semver exclusivity >=4.5.2 <4.6 function tryDirectoryWithPackageJson(packageRootIndex) { var packageRootPath = path.substring(0, packageRootIndex); var packageJsonPath = ts.combinePaths(packageRootPath, "package.json"); -@@ -120359,6 +120498,10 @@ var ts; +@@ -120390,6 +120529,10 @@ var ts; if (configFileName) { configFileWatcher = watchFile(configFileName, scheduleProgramReload, ts.PollingInterval.High, watchOptions, ts.WatchType.ConfigFile); } @@ -2297,7 +2297,7 @@ semver exclusivity >=4.5.2 <4.6 var compilerHost = ts.createCompilerHostFromProgramHost(host, function () { return compilerOptions; }, directoryStructureHost); ts.setGetSourceFileAsHashVersioned(compilerHost, host); // Members for CompilerHost -@@ -120437,6 +120580,10 @@ var ts; +@@ -120468,6 +120611,10 @@ var ts; configFileWatcher.close(); configFileWatcher = undefined; } @@ -2308,7 +2308,7 @@ semver exclusivity >=4.5.2 <4.6 extendedConfigCache === null || extendedConfigCache === void 0 ? void 0 : extendedConfigCache.clear(); extendedConfigCache = undefined; if (sharedExtendedConfigFileWatchers) { -@@ -120473,7 +120620,8 @@ var ts; +@@ -120504,7 +120651,8 @@ var ts; function getCurrentProgram() { return builderProgram && builderProgram.getProgramOrUndefined(); } @@ -2318,7 +2318,7 @@ semver exclusivity >=4.5.2 <4.6 writeLog("Synchronizing program"); clearInvalidateResolutionsOfFailedLookupLocations(); var program = getCurrentBuilderProgram(); -@@ -120484,7 +120632,7 @@ var ts; +@@ -120515,7 +120663,7 @@ var ts; } } // All resolutions are invalid if user provided resolutions @@ -2327,7 +2327,7 @@ semver exclusivity >=4.5.2 <4.6 if (ts.isProgramUptoDate(getCurrentProgram(), rootFileNames, compilerOptions, getSourceVersion, fileExists, hasInvalidatedResolution, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences)) { if (hasChangedConfigFileParsingErrors) { builderProgram = createProgram(/*rootNames*/ undefined, /*options*/ undefined, compilerHost, builderProgram, configFileParsingDiagnostics, projectReferences); -@@ -120694,6 +120842,12 @@ var ts; +@@ -120725,6 +120873,12 @@ var ts; reloadLevel = ts.ConfigFileProgramReloadLevel.Full; scheduleProgramUpdate(); } @@ -2340,7 +2340,7 @@ semver exclusivity >=4.5.2 <4.6 function updateProgramWithWatchStatus() { timerToUpdateProgram = undefined; reportWatchDiagnostic(ts.Diagnostics.File_change_detected_Starting_incremental_compilation); -@@ -120709,6 +120863,10 @@ var ts; +@@ -120740,6 +120894,10 @@ var ts; ts.perfLogger.logStartUpdateProgram("FullConfigReload"); reloadConfigFile(); break; @@ -2351,7 +2351,7 @@ semver exclusivity >=4.5.2 <4.6 default: ts.perfLogger.logStartUpdateProgram("SynchronizeProgram"); synchronizeProgram(); -@@ -126609,7 +126767,7 @@ var ts; +@@ -126642,7 +126800,7 @@ var ts; * Don't include something from a `node_modules` that isn't actually reachable by a global import. * A relative import to node_modules is usually a bad idea. */ @@ -2360,7 +2360,7 @@ semver exclusivity >=4.5.2 <4.6 // If it's in a `node_modules` but is not reachable from here via a global import, don't bother. var toNodeModules = ts.forEachAncestorDirectory(toPath, function (ancestor) { return ts.getBaseFileName(ancestor) === "node_modules" ? ancestor : undefined; }); var toNodeModulesParent = toNodeModules && ts.getDirectoryPath(getCanonicalFileName(toNodeModules)); -@@ -126617,6 +126775,33 @@ var ts; +@@ -126650,6 +126808,33 @@ var ts; || ts.startsWith(getCanonicalFileName(fromPath), toNodeModulesParent) || (!!globalCachePath && ts.startsWith(getCanonicalFileName(globalCachePath), toNodeModulesParent)); } @@ -2394,7 +2394,7 @@ semver exclusivity >=4.5.2 <4.6 function forEachExternalModuleToImportFrom(program, host, useAutoImportProvider, cb) { var _a, _b; forEachExternalModule(program.getTypeChecker(), program.getSourceFiles(), function (module, file) { return cb(module, file, program, /*isFromPackageJson*/ false); }); -@@ -128436,6 +128621,7 @@ var ts; +@@ -128469,6 +128654,7 @@ var ts; * This includes all files that are found in node_modules/moduleName/ with acceptable file extensions */ function getCompletionEntriesForNonRelativeModules(fragment, scriptPath, compilerOptions, host, typeChecker) { @@ -2402,7 +2402,7 @@ semver exclusivity >=4.5.2 <4.6 var baseUrl = compilerOptions.baseUrl, paths = compilerOptions.paths; var result = []; var extensionOptions = getExtensionOptions(compilerOptions); -@@ -128448,8 +128634,8 @@ var ts; +@@ -128481,8 +128667,8 @@ var ts; } } var fragmentDirectory = getFragmentDirectory(fragment); @@ -2413,7 +2413,7 @@ semver exclusivity >=4.5.2 <4.6 result.push(nameAndKind(ambientName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } getCompletionEntriesFromTypings(host, compilerOptions, scriptPath, fragmentDirectory, extensionOptions, result); -@@ -128464,18 +128650,39 @@ var ts; +@@ -128497,18 +128683,39 @@ var ts; result.push(nameAndKind(moduleName, "external module name" /* externalModuleName */, /*extension*/ undefined)); } }; @@ -2460,7 +2460,7 @@ semver exclusivity >=4.5.2 <4.6 } } return result; -@@ -128576,6 +128783,7 @@ var ts; +@@ -128609,6 +128816,7 @@ var ts; return addReplacementSpans(toComplete, range.pos + prefix.length, names); } function getCompletionEntriesFromTypings(host, options, scriptPath, fragmentDirectory, extensionOptions, result) { @@ -2468,7 +2468,7 @@ semver exclusivity >=4.5.2 <4.6 if (result === void 0) { result = []; } // Check for typings specified in compiler options var seen = new ts.Map(); -@@ -128584,11 +128792,19 @@ var ts; +@@ -128617,11 +128825,19 @@ var ts; var root = typeRoots_1[_i]; getCompletionEntriesFromDirectories(root); } @@ -2493,7 +2493,7 @@ semver exclusivity >=4.5.2 <4.6 } return result; function getCompletionEntriesFromDirectories(directory) { -@@ -157687,9 +157903,9 @@ var ts; +@@ -157724,9 +157940,9 @@ var ts; if (isTopLevelDeclarationStatement(statement) && !isExported(sourceFile, statement, useEs6Exports) && forEachTopLevelDeclaration(statement, function (d) { return needExport.has(ts.Debug.checkDefined(d.symbol)); })) { @@ -2507,7 +2507,7 @@ semver exclusivity >=4.5.2 <4.6 return statement; }); diff --git a/lib/typingsInstaller.js b/lib/typingsInstaller.js -index 514f48a46..4d1aa5d8f 100644 +index 7a0fd43fa..cbbe83fb8 100644 semver exclusivity >=4.5.2 <4.6 --- a/lib/typingsInstaller.js +++ b/lib/typingsInstaller.js @@ -2523,7 +2523,7 @@ semver exclusivity >=4.5.2 <4.6 // win32\win64 are case insensitive platforms if (platform === "win32" || platform === "win64") { return false; -@@ -41380,18 +41385,17 @@ var ts; +@@ -41392,18 +41397,17 @@ var ts; ts.getEffectiveTypeRoots = getEffectiveTypeRoots; /** * Returns the path to every node_modules/@types directory from some ancestor directory. @@ -2545,7 +2545,7 @@ semver exclusivity >=4.5.2 <4.6 } return undefined; }); -@@ -41402,6 +41406,42 @@ var ts; +@@ -41414,6 +41418,42 @@ var ts; var useCaseSensitiveFileNames = typeof host.useCaseSensitiveFileNames === "function" ? host.useCaseSensitiveFileNames() : host.useCaseSensitiveFileNames; return ts.comparePaths(path1, path2, !useCaseSensitiveFileNames) === 0 /* EqualTo */; } @@ -2588,7 +2588,7 @@ semver exclusivity >=4.5.2 <4.6 /** * @param {string | undefined} containingFile - file that contains type reference directive, can be undefined if containing file is unknown. * This is possible in case if resolution is performed for directives specified via 'types' parameter. In this case initial path for secondary lookups -@@ -41515,7 +41555,9 @@ var ts; +@@ -41530,7 +41570,9 @@ var ts; } var result_4; if (!ts.isExternalModuleNameRelative(typeReferenceDirectiveName)) { @@ -2599,7 +2599,7 @@ semver exclusivity >=4.5.2 <4.6 result_4 = searchResult && searchResult.value; } else { -@@ -42183,7 +42225,9 @@ var ts; +@@ -42200,7 +42242,9 @@ var ts; if (traceEnabled) { trace(host, ts.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1, moduleName, Extensions[extensions]); } @@ -2610,7 +2610,7 @@ semver exclusivity >=4.5.2 <4.6 } if (!resolved_1) return undefined; -@@ -42844,6 +42888,14 @@ var ts; +@@ -42861,6 +42905,14 @@ var ts; } function loadModuleFromSpecificNodeModulesDirectory(extensions, moduleName, nodeModulesDirectory, nodeModulesDirectoryExists, state, cache, redirectedReference) { var candidate = ts.normalizePath(ts.combinePaths(nodeModulesDirectory, moduleName)); @@ -2625,7 +2625,7 @@ semver exclusivity >=4.5.2 <4.6 // First look for a nested package.json, as in `node_modules/foo/bar/package.json`. var packageInfo = getPackageJsonInfo(candidate, !nodeModulesDirectoryExists, state); // But only if we're not respecting export maps (if we are, we might redirect around this location) -@@ -42857,7 +42909,9 @@ var ts; +@@ -42874,7 +42926,9 @@ var ts; return withPackageId(packageInfo, fromDirectory); } } @@ -2636,7 +2636,7 @@ semver exclusivity >=4.5.2 <4.6 var loader = function (extensions, candidate, onlyRecordFailures, state) { var _a; // package exports are higher priority than file/directory lookups (and, if there's exports present, blocks them) -@@ -42869,7 +42923,8 @@ var ts; +@@ -42886,7 +42940,8 @@ var ts; return withPackageId(packageInfo, pathAndExtension); }; if (rest !== "") { // If "rest" is empty, we just did this search above. @@ -2646,7 +2646,7 @@ semver exclusivity >=4.5.2 <4.6 // Don't use a "types" or "main" from here because we're not loading the root, but a subdirectory -- just here for the packageId and path mappings. packageInfo = getPackageJsonInfo(packageDirectory, !nodeModulesDirectoryExists, state); if (packageInfo && packageInfo.versionPaths) { -@@ -43028,6 +43083,58 @@ var ts; +@@ -43045,6 +43100,58 @@ var ts; function toSearchResult(value) { return value !== undefined ? { value: value } : undefined; } @@ -2705,7 +2705,7 @@ semver exclusivity >=4.5.2 <4.6 })(ts || (ts = {})); /* @internal */ var ts; -@@ -112486,6 +112593,8 @@ var ts; +@@ -112517,6 +112624,8 @@ var ts; ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Partial"] = 1] = "Partial"; /** Reload completely by re-reading contents of config file from disk and updating program */ ConfigFileProgramReloadLevel[ConfigFileProgramReloadLevel["Full"] = 2] = "Full"; @@ -2714,7 +2714,7 @@ semver exclusivity >=4.5.2 <4.6 })(ConfigFileProgramReloadLevel = ts.ConfigFileProgramReloadLevel || (ts.ConfigFileProgramReloadLevel = {})); /** * Updates the map of shared extended config file watches with a new set of extended config files from a base config file of the project -@@ -119290,6 +119399,30 @@ var ts; +@@ -119321,6 +119430,30 @@ var ts; return undefined; } var parts = getNodeModulePathParts(path); @@ -2724,7 +2724,7 @@ semver exclusivity >=4.5.2 <4.6 + var pnpApi = findPnpApi(path); + var locator = pnpApi === null || pnpApi === void 0 ? void 0 : pnpApi.findPackageLocator(path); + // eslint-disable-next-line no-null/no-null -+ if (locator != null) { ++ if (locator !== null && locator !== undefined) { + var sourceLocator = pnpApi.findPackageLocator("".concat(sourceDirectory, "/")); + // Don't use the package name when the imported file is inside + // the source directory (prefer a relative path instead) @@ -2745,7 +2745,7 @@ semver exclusivity >=4.5.2 <4.6 if (!parts) { return undefined; } -@@ -119328,18 +119461,24 @@ var ts; +@@ -119359,18 +119492,24 @@ var ts; if (isRedirect && !isPackageRootPath) { return undefined; } @@ -2779,7 +2779,7 @@ semver exclusivity >=4.5.2 <4.6 function tryDirectoryWithPackageJson(packageRootIndex) { var packageRootPath = path.substring(0, packageRootIndex); var packageJsonPath = ts.combinePaths(packageRootPath, "package.json"); -@@ -120154,6 +120293,10 @@ var ts; +@@ -120185,6 +120324,10 @@ var ts; if (configFileName) { configFileWatcher = watchFile(configFileName, scheduleProgramReload, ts.PollingInterval.High, watchOptions, ts.WatchType.ConfigFile); } @@ -2790,7 +2790,7 @@ semver exclusivity >=4.5.2 <4.6 var compilerHost = ts.createCompilerHostFromProgramHost(host, function () { return compilerOptions; }, directoryStructureHost); ts.setGetSourceFileAsHashVersioned(compilerHost, host); // Members for CompilerHost -@@ -120232,6 +120375,10 @@ var ts; +@@ -120263,6 +120406,10 @@ var ts; configFileWatcher.close(); configFileWatcher = undefined; } @@ -2801,7 +2801,7 @@ semver exclusivity >=4.5.2 <4.6 extendedConfigCache === null || extendedConfigCache === void 0 ? void 0 : extendedConfigCache.clear(); extendedConfigCache = undefined; if (sharedExtendedConfigFileWatchers) { -@@ -120268,7 +120415,8 @@ var ts; +@@ -120299,7 +120446,8 @@ var ts; function getCurrentProgram() { return builderProgram && builderProgram.getProgramOrUndefined(); } @@ -2811,7 +2811,7 @@ semver exclusivity >=4.5.2 <4.6 writeLog("Synchronizing program"); clearInvalidateResolutionsOfFailedLookupLocations(); var program = getCurrentBuilderProgram(); -@@ -120279,7 +120427,7 @@ var ts; +@@ -120310,7 +120458,7 @@ var ts; } } // All resolutions are invalid if user provided resolutions @@ -2820,7 +2820,7 @@ semver exclusivity >=4.5.2 <4.6 if (ts.isProgramUptoDate(getCurrentProgram(), rootFileNames, compilerOptions, getSourceVersion, fileExists, hasInvalidatedResolution, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences)) { if (hasChangedConfigFileParsingErrors) { builderProgram = createProgram(/*rootNames*/ undefined, /*options*/ undefined, compilerHost, builderProgram, configFileParsingDiagnostics, projectReferences); -@@ -120489,6 +120637,12 @@ var ts; +@@ -120520,6 +120668,12 @@ var ts; reloadLevel = ts.ConfigFileProgramReloadLevel.Full; scheduleProgramUpdate(); } @@ -2833,7 +2833,7 @@ semver exclusivity >=4.5.2 <4.6 function updateProgramWithWatchStatus() { timerToUpdateProgram = undefined; reportWatchDiagnostic(ts.Diagnostics.File_change_detected_Starting_incremental_compilation); -@@ -120504,6 +120658,10 @@ var ts; +@@ -120535,6 +120689,10 @@ var ts; ts.perfLogger.logStartUpdateProgram("FullConfigReload"); reloadConfigFile(); break; diff --git a/packages/plugin-compat/sources/patches/typescript.patch.ts b/packages/plugin-compat/sources/patches/typescript.patch.ts index b01f1c785491..8656b9f47ec1 100644 --- a/packages/plugin-compat/sources/patches/typescript.patch.ts +++ b/packages/plugin-compat/sources/patches/typescript.patch.ts @@ -2,7 +2,7 @@ let patch: string; export function getPatch() { if (typeof patch === `undefined`) - patch = require(`zlib`).brotliDecompressSync(Buffer.from(`m0N6OqMDsc7bJpTqIc2FFkxFRuqnXiKdSoBaf+vf0xPiHHYG9BftHA0n3p9a1e0E1PPQYzg2lNLvEKTCECQSdIWyK3ZD55SVuTEgcSlLUN7YQb2zlM+tL1Z630Opo03mL1v26ZIk6ewxFxyBG4Pn5CpkgoGPKLcn1Wja4dsIlF4D6LFxUFW4EJFZTVHDMsHGZxB9hG7xzDfNVK3+mwqf5XMc/efucqouSyBp3UgwZxeOVOmRHney4GV5/9Gp7SzTgzRQsF+E5Eb6dm0q3RyWBKR0w1X7X6az1xdv2mJRrKRrspQrpaVIa2SIKBZji/ND2PfLafdeTr8s5SlygRennHAJJ95YTaZA8kJhIbXNz6gTiG9ohqchKEUyJfgG6Znx6YxFpuwL8zsBSEic7F27pQCii9V/+W9U16iLeQUkgVCr7By3cbutX+/pWpOdnRCFinsg4XvtVRS+XxNTNq4USlSh+oReWU5MwkAGcvtg/61YqHIyZasxmb9dEk5VeaBrw6Ys8S861mmMRHVaErDJKqVpGpgPcHLv+/99U7MlsSEEYB1I54pFmSWHFCq7c8bcd++72EnQEgPgCCCowKV8DknJ5yzlkO+9777/BzMDSABBk6DIDU4xNJWbNvfOXT2YGVCJ2sjd7BBTUTSe1+nn6seVZriCfU26SwJpo/6w55lhS1/G6ILkQvrUSpnckNLqMmWYvzPMK3zEJ8UcKZJZ4F8K+KdVv3/bW6Ya6q818PJXIpkUTpAtZwYOEuCM9N/r23X8ZxZBOwaAyD5dr15VifdoDMgZpI5jp1l1a40YAkb4l5p9xmeG/FU3aO7VvIc7Ca/PEOej2cplfOXnsi8lwW5VA8ud/fI2Wp7lrnJFa7gYGRcrkg+Nz8ggiZTlQw4w/AYgZfphSst+jaodNEbmG5nLVSnOo25/6vG3m+/msBOkA+xQ6gAKYlcljf3zOMhllO8F6F0NMwyDM4CgML7xSqs83RLY1QzaCwph4R+04fIKnVKHMfwxj1782vvHaNZzEf56DDPbXW/f18YAIipRtElGZyu2Zj8DjMSzGzKneF465Nm+RI12V+BgMqbV/lzKNBGCDCvtnxqyGXtVHgqUQyzfsWAZ1CPb5yy/lJqeakgeG+GEAohrB805AFu9eIzVWq+27rN7VUQ+ZxBGhICpJf4Rdd4D03SPEDoCWEE/st0FIZarquBC4tJrY+jRgGXL6j3GVDLN0M78iIjIEokcnGJa9IiimotBYa+oLdazuSf8+mviDfqjqzh4fJ8qG6qv74X8R20E6y8I7Gf+4fv3m16v8PZJzV/lEJk55Bvd/TFg6MFvYPI3jJ69+rk1L70NRyMMX8CIw0MsP8W/QL9o7QTrEfeutx8XpMdtob7Yb2uk/vpphtJkt4ICvoOZ1xfmIMsA2FiRnRCQMi9/bBBHefgppNdXyMTI+mArh1MsrZgwOCIgv9V4Ce/8As4bpUPOAs2kS3dDnTEEMAVLImor6amFGG0mf7xrdA/5KrjS3bLjIHcwIrcXIjAuWwhWl+bTwP9s8qOIzaQNifatyePXpjHaHGFFRJ3pvyDIW+82vnwTXE7eZonXAQIeWvytLWXBF7DfAhnSksqMCIW5J6782Qytb90lmbnoUQnHq3NYlXoMEX/ZrEmzsgohWy8P7yfHcsDFBIUUJy3jF9ntWbY5V7BUP+eGSXxy8RrdUHZ0Qbgeqk3umlgwBktcftocHAJmifHn2PbnPCehSHyBITdFsDBGqjIqDVeAvaWg6eLqZ8ttVN9gCAAThLjiL2rP2aww66dAyEAEfpWHiUoEnIl7fX+O5ADhDGFDqKqO7OlZ/NNO6Mnr4QyQpOCTa4IsdJV1n30rrJB8wfqmf5hkAckOX5GbH/TN03DTytH1/puRGHfZ4nBBuySTJQPWwxPzAOeuL0gcsQZn4AvqkwK4kJxmicBEmYQ1bdQabymm+U6PB+yaUpWAqYSM1XxWIpoUcHIylMziASsvFrAg3BagJl91buG7zqLhwR4qwfUKUNZ/TJaUVi1yGdT4K3iKrB9TuZiBZRVEHXIjMqLaujAiK80RqF7kKp9autb9Qn5qOsxpAdOFiy8qhZmLVGDBT95awG9feVpYERbBrBdCxYUDSiZVDjkF4hx1bAbC9SgnOKiaZCP6ZYnj4YMNAsqs17nVgYIUtBOzGbl95XMbd0vXcUwddkBVqTWvS7YyViS3DaUNrdRRiIBB0WLfy8N0vc4koM7c3CcElG7EACbzMN5gjVFuhYYjzjzkwt4/D5/ZnZCky8esfMM2sMcHm/8jv7OMyhU2+uEYnVkNkHdZ5jKjZVbB/Nn+beEcgaDIhTB2oZIviNoaEfcSep9ZplPyxlKvEwsqPPVY2C+b/KwErdGUK98KkoirGF/17UB/g9ylSgfILQdcCFgvipyfLpTu5S09PrFMtevcs6Q+LrwcfVc2lkWNciZ2G8n1uM15fewSCikx+6JZSikgUqzt4mn9uosPXRN+KmWffxp1bn5YwTRZRa+snMK8OWHL31H8wgZlshQTFIKE+6OQn3Pzc23REfSgu9eWXD0kWnj9W1JdCNRBj0bQCIScPdOEyXPMMWvY1+hGbnRZvF1dcw1kdg0fHlyevMfdTwIdkKOXVlMrQYE+DN+BQEGIqCjorN5IebGL3piPsurCYv3l/MBt+fQgksQxr8NCUNa5x+zIGPFr43+QN25ReJNVq5xmFgB8+0P7rhyfRmQp9+ckNiHyZl8SGPnrdh1+beRT9hPyQKWR2izzGWnpPjlXiCHTpvVMTWmzFcYl7u15bS8hBcXF26NHBdGIO4wPXErmvaVnbrWZHfpwN2PtyO1deAHKbFn84Mh7mdtauM2irftBIenee/ckYd+VltbWDm5yh0Z0RTUDhK8yCmErevmIaVCq4iK452hYEGRXekly6UAAY0Q1EhuxIb618xYmwdvZnaWVB+yKr3arkw0dWdBiyytXDtB4bdVLugzpquS2tgHTMTS39xgAR91ayZF/6q0JhIzwlwUVBRQEGXsQYNPTFZYV1XSrS9eQ5c4lKEf2HmS2RKQJUWDyJSMR64SE8M9ipcQvKSwWjMQtGmnx8K2c3zYD6CNAR4ODXePyKul2hqOi1TY9U5jtCxqJRFVuzB2EfQmp/h3sJBKdPPwo9/TsqYM31b8d9RMy9HwT/B6GzN09egkqJp89c/VHh/eIe2u6v5XRwzO2I1TqzkkofPN4CZhEP3TLq42XetYgNo19EYbu+gZ3eYgAF9IPYWARhJRXXa5HzUbk3C9j9xOmyzFiaiyadW5RHyY8/TdoAvM01O6qw+Rc3nM/2rBBGO8bTYugyIGxwVMMZJ6l70ql9nv9CCQK3icrqxMxVofWGdWqHdZCybBvq5H9fbtWh5nS02oTY9h6NNNu26tUnf73ii1IH3taRm8weQObXjZtc/96g9OqShVNQkV4s44e0hWpYnO4+CQqk3ALUBxZIe/PCaPnqS1O/s+bnOwEdhumj12rMtydhn/Bfp6wCWdt3ScR9eZFH7vi/lRir/syM1TN1Hfa4ldYkGq0vkq1xc66wlJyK3fnjRvrP8tupi/j9s7jffky3nsBde4hqr+fXTaMufmUX/rVFpB/j6J2VqHiULvzXETjOcPDf8EmGlwxo9gZPgC+UE0bwrIMD1ZY4z7s/IaG9wxS2vgrGD/gYImD7Q3ejq2qxa0G4rgG2pCfbwzvNotND6TJwZKwjf88dZrNiZ1sXLDRVWgYoLG/mPyGowSIVxzbz4E3EY2/r3fbX5r4R/LhaxhlwAABpwpWmU0ihyGeEcs894rNyUCG+OhqsZ/2U5KYDFXdq6RRS/ctpQPNPfk3iYBYOnfbKaaVCzqa6/E9PFTlND45OT0/+mZW2M0HAaNZA4kNTH7dmfK5wg5ibkIVNfuTxxe2nnI5XXdyf/yh16s8fqHXuYzKDIybhyi4PPSkBRXhIfD6mCcH8LqajVMeLgBwCjPmlkikhUe6obTbmFcgshoBAIsm0ur+M9BzmUe+9wxmVGTfm97sxH184/Nj6P225y2Pn/NsZQOXiwsA4NBJVTiN3qO2a9DbeY8AgBYvodkke9mb92xmtIHytntw+YEXplq8y3vGNHazd08iWAFgOz+w9XFjeRk9bw/mibOe5Yya56GFfCdqTy8bohv/BG9MvsMbxkweLgAwQyu7ZeFcozNKOw9zNySyGgGA03QRjtFZHXU3whPv8QZ8X6PJ1TsyBWCz2yUyAAAahED+d67+9HH4t2PRjQGiqX8iIwCrU2dnyQAqtbyeOoDWl9x9NWc7FPpeEA6P/wLjcrdL3gIANM4oExORjcGkrpiY8M1p4hUCqb06e7oPEO9slgkAJChQWnich2sWxOTPWs5U5lg0FbNRyrUFAEps39Rw2L6x9qjGxLZkXQIALaQ0h989M0Hq+VSOdWg5FBgdu12CLQBgJ7d9owrD6DOp9trE1KWPsxoBgBKPiMYo4A9o/KNZ8OZd2LSX+VWSVwFgN7ONZtygR9maKdfyCYDPNHrrcqphm3mHkmwBgMWxDV9qGGyfePtRWbm2T3IjAKCpIhmjeHTM4ueybofR8Ut3b4y7dySAxet2iQwAgCLpgRq3mix/doo76EpmrLab6OcF9regifQw1Utnd2Zb0v2A0eN/gNR0t0veAgAkWM7TuNXjcjCK3JE4oLHSnsXcNonMTADghCYTLsBntf1P53HzvGW+x2ls1OThAgA1tNJTEg4KMzHZUu0rc9tExiUAsFpZ/JGSa1zlDxfGD9tf5nEZ5TxcAKCMmQ7ZUsInMxGRah+Z2yIyNgGAEWoJm9XwW/UaUuPS25/yuxLBCgDXma1WqL4Smu7pmUbY5+n7w/ssjc1KUS4ZFwBYMXtblOE+tivlPmxXViMAMPhk2bGoUPHxc8XqKrmxXCM3cxMuCfjZ1RNMl9LjHaz0EoymXjQQ6Zsify8yuCehRraDQJIiNTCASjq8IDzp1a1hVyVY8mShJVfQiXhp43c4FDrGEh1XA/b8+nnhT2we3yWqveySlvidXS/Y+6SbLlLOZ/HnFFx0XQgZ6b6l9VfH6BtQi/leYpe3gfhyGjvg/OTZvEKxu/41Or9Kb7bY3t5FLK8Pb12RmQtZJHAj/RY5246J3KJagr6N2/uNQyPRd5k3Z7gA5eHJ8/IXa143Jzmnfu4kYTxeeDGYul7V5+zCcjsrqtIXftXldZpjOQVIFwZeLesr/AXdboxDA4UIJZpr8+fGyJ8Iw1QjdZ1x3o7d707mtzkSM+6TOZCOhfecdroaN8fIUjhm7P1uaWH335uZvAXIVUNyaX3gvWKsKWBwawEyLdXRVYuMbjUUGXwc7MUAhZCOh189KB+4cwQWICMatweueEGA4n0BjMGsTaI0kc53kPDH740e0uRwlx56dN2x+uGI4+CPWHKYEsQOvve4E/Bsj/ffuxJ20MtPHnJH9iEsOTj3zKAk7VRwSno3zUwWL5KoLg4x5DLIzp1L0EpXc5RaItCjUFnltO99wRgDfDpOTiA9M37LsSxcHVZAyMCOZd5sWs6eyFQfIsebCgenPBmf5ekeDdcbISC3ch2h43uwP/oLqfNs55F/XZzkHk9C+PvLHZTJx9dL4scVjiev7pwmDgZ4zQ17IBYA04J2q5mTABHBfqT2xVrklodhg9KYcjYruVe4NUqqFQ987NCLMRKjuSe/uYxBRuCFqT6uTKA4Xts29EryNTy89gGRZkBKtiK7zOT5LAHlddfiRP+PyOKGFUizNlsvGtot3kByxt2RL3gv7irZfuq1HdyKCj6uvl6/uTGhfo6JI/B4OY7G6YcrSQDAhr2Oi9fa/KV10XDNuPRoy2PyuudGOPeiSVx+wmWJf4xJ38d9g4VztV87SeJt3NhbcoQTEsr0JO+3PNH4+/2dBcCjyaSnKkc3qSNvdgQwndfYpDN5ns7SuEFBs3BrOsN50ygHCUuWIdYAjxMWXySm0+LroHhky+RsyORKYUBILAFDj24oXX5Xphu3DNQjdDMXQbsKVXepJvipHvvLyWD6rF2kr7aUfQR9M+2v/CMofprSpq2El9z7qCPg3cw2lHycziYWKe0s4nuv+iK9yQ/l2FnrN7GY8rbRc2hJWC06mFhwcT1wBP0GF1BUOS9XfNPTKp2C2DW7cN7phVzqwXsIiBPsQNVqIOF7aJOFCKBq2Qr8Pa0AEb2hEISgzHk/BiiQysKSLBIXnU+rIzbPD+fzBnlZshrwgxuuQd+0xfWG5OBa7tJjKR1lbcCm3r8nITF+YoxLw4U7ykThQ7vRG9ZFBVaGhI1bw7DsKMYIop/dEJrLcihGvybsQEuo3rOnhUnXfnpt2OyJlckxT8zt8ZV90APVcGZFy2JyRnZMujPoC2EcS01BtTqv6cSrt4xyxf3C3Z5vnFEsi7iDDBwU4Gkf+uoeZqNivEk4Zx34SPT2jXGXRK5stvy210mjJpsrMNeV+Omww5LcczCGvcRtmgAnZ8oCHCI64M/nrmZqCRdiLVZsYplRp/V/2cxJYtbS7u/5su1NMO7w92Mpv6LwU5NuWcDCFb0/duYQr3I8WdNg5QiWZRSiIf7b5jlgVHP0SwKgp/EllFFHXlN2tVmNFoWsKey6EOqnTjJ6TFV4eIfv431KRotjR3OlaRKSlWDE4zOJzACAhk1DkxZeDSnVHg0rQxMAiPScLJ9DHy4SWHBc2tmgzxuOSXcbNKUNYyMb4SHk7cp3aun00dxmmnWStQ4Dl88MAFAMmSIpdXyk2h1MvmHlaAIAzkHfkeVb6OiFAr3snSzsG2PsLnoqwceoW3jGI4jfdFqcu0RMBeDZargZEQ5PTsXf2pkWZ857dppmWbKWMWZymQGAWUZMLRcXlielXaUh5WgCAFfSTVkeonsWAySwii3LSrL+iswvsIB/8B6ycecHP3UUFygtQgR0c6RyzQCAhYBrWEy4a7szi3PpltpuAbybpfk+CD2Loyoey/8GRjcPzYC+l437xJiAYYU9cjNMswMLE2eNZX+UvSeHkHEJOGDazOwpf/R0VElVMb3SStfHB+mPC1NM0Ny7ycio6Vhws2fEwtCe8+zlpmUHGagEUQVvfrEg+KIlX7FT/DHjfHQ6EFlWwO33Rx/pWIll0RtH1xl9kXXHCnMI0nA5/6rjBC3otKbkl3l6LOg0THhBQuaWVBgSKv/fcwFpOQjpLicopatMb+fKEkoQqo8eDo7p4cI7uqEpcc/meu/cUGej5spBl9WsZAKxFAWG1ZyRLPK4U/bLtUbvFjU0maV4PDSd+U92EhNk0pzGsjJxrmjMoiJjXjogOvwHe0QvzdrZGv97CM8xd1z9gJLRsa6PVhskDDOPHjbofDpxMLAw9WjAHeSp1pFLa+sioIrEIg5+tMOfb6trvNVheKoR68ydc9mVwosB55oAJ04UYU70LKuOXxvGCbEPalWFFn75wX5guHPkJ8WFiHfgjH4GoZUQY2gcQ4M8Jc/BcWcqt1k9snnNgZFcU3fT5UqiOvBDBnLwalvxWbiXJDxaHZ2aKltaSh4E7YkZyw7Y7/6eTPi9HEaEB84fnjRG5XqkOoyfCvCvl8QMAMwwfq78HuGzMr34mXc7f5adKtDa3EVp9Q9lAgCU4dvxKW30h//FPaW9iy/8a4BFjZgl61i9rNN8BmFOrjG8MTGei7KprMMX3mgtcD1vEAyaLIPTBL8JjzVzsvLyMSN3jcVthAw3PDq9qjX1S4M2Ckfhx9AGVPyPFpk/N1TvXzWtR656ldgoTVL1wiK9d4mbTuzGIvC59r3r49lU614fgMMxVABQ+H93bMCP0MmTgzf2IXHoe0e3UU40G0wIf6NpIBQgtZX2Lkbr3uyCaj87moqxM2hzS2pARjnqR2d3zNZwekdnsaf64GolhoQYWVsjrpOtFUuvQH3rFBVcWOXMFdvwkPDtVEQDzIurkIwbPcvgi2c2Oov/FTCfZwioQu/Ex5uKuj9uOreWmmvqBPkJ59c7Ujt3WMtdDKdkuJelAo7uohZlzXZcqMI3RPPg6vOPV08HSCmCq8wtSNatdCMMO58ZALDR45RwNpTSA1RTansPepinCQBkMM4b3buEcXtqlADAXRwc1QaTO6A9xgZNVw2L6PKhDVB4Y+vswfbLS7tTi/CvxCoHII0IhqHURMPjV23HVx8p3XymphnBT8lTDkAaEmzjhos2myeD91b/fWXbkZx+BGcdGDWlxWo8I9q8PiUzAMALbZ1TwrSKokufqO0t9GGOJgDQ4tCcF93vshfJNwkANLCKZjWaQfc68lz2ivjwizngUx3BgVFTWoDIphzRd5YZADCyqHjJEhQm4xbmkwUKS4bCHsoCmnZtmO86eelFoTb6S2VsYOmFP/wuPkpGQ8ENQkgtxNa+UIKt9wJeKKgCbHefqCDZLziqD0wnUAAMLw+SNLYfvgBOu+E8dgqj4PPaJji55paMnakp5AsgqvsVs3Xdqogh/B+CW5TkhpAhR6DsF3TDAhkAyJ6ASLJto4QO4EWbZsM001T7H+2ow8Z0YFr6hAJXpt0NknV3zd2XT58b8/ZTA6l6hlHtgcC4Lin8hoIObYC+W3YEtb2oc67/BII+ZLWBU3OjuoOurzPPN+wHPLhjj0Ok0XF/UV/J6eQ/08IuzTClw2SS+w7c9pF3qmsbSqT+6LmPrFE8OmJXcu6izrgCRCHWQ5QOi0KfLZCREk6HLgKEk20wmoBNyzCmOQAGN50kDq2/PP2K9r45OEwBAL5WBzOpL+6D0mAdhFEyfW3vPKxOrklHWqVaykoPkuFe31P6MLYHLnJHaEboUK8/vvaiP2O35hMeWIIhuMqgfXcahP5EGxhFftGwLUaBvNlL+i/0ZesNLTAS0oFJij5QQ/OUfccOE2PweXibuFZHOC22yZTcahan4YYpzmt7acpaIQ+u0WRF5PonHf0BXop+1g4Ajk6OyVoMvIkTW6w0GCktOZIy0zlZivVnXoorcNjkBghhd0s/RxEpbiCFVBhw0I77i4qWsnZgVXSzdNsZO3FWOg0y/EIEHR9Epja676sqdkfoQkbc3QttMCNABNysQSnIHsZYYC76c76DAxeADn9S1+rlUr0e0ZpyzcZcsWKKA+yQzWy3G9W7jYHHBptkXXW7UF4tIDoRFnzBguxWTPUTLE4JQAz3ac5IBAduhaazCRphTcoGHhGGy/WsrU4EpEQstMXgbee4OVQSQdqJlsvXKQNaiTMeuh+wGdGUZ1eF+vnI1PBe9IqANU+ajyr/zrSKQt5ejjTdSjsaIEFRTqJFfuvYC2uxvTyY6pbQgCZgRJqbj7I/HSEDUstg1cggF8WCzryIL/MyGCf87hSdHdqb+D5MJZxPZPDDg1hSd1TRHAXFzQTemKVu3m3kL2GqXJt/WFhNjjCt6Co4YwYpLUKJOCesMon0p44BLWNAheUM0cVAaZ/R0vE2rngxF92TJdpWbZ3LUdW8GcMQU8DDo59nzq5d+yQiCivTAVFtA/eRBb/TrQY+ezG/g/hcBmZkVs4MsMWyZI4P6YOa0yGuRLxYtKMrwJC5IzjEfHp1Sh2IaX/BVMEuneiy44FnZ14Cox97aewFlZsRRvOaEbsrv+7OrMzbiPJngr8eMzwrl3BF4sNnyMZNkzSAxZZkm/ZUjbL9kBI4+3UMk6CfIFovheKA/HPWAANsdKEwuo+tFe8zFXkqmve6z8T0LSkefJHC+B20kIf3OzoI0cSp5fsDHB7WiXHppHn0Hi+1/04JmNX35xFs8eesmivjwTykVD3cus2gmWn6VxIzADAAM9ukCor/17hYxdky2ymCqXZWqga72a68TACAuNPwPLpqMx/gr05XOrX/K9+TwIoAXCugtXip8gi9+iJuKCIS9wGiDgPiOYbiSbKcJ/i6r+v4a08IUF2u9o4YapoCUKuOsfxNs8eUZqrCT0Sjg3cCoT4gwQWrVhwwDBGURIpOIoCSJBaeWN38c3HnKtDV/C05vU9bAPBbtm1zc4nzJD7oMu4aW8+LcMQZaAgiQ5cwNv4gWXGAbc+WczuH3PYWINKY7dpE49N3WQ8A82lQd0y8lnb6q0GMbXO9GX+/oNMIoyWObT89OH+q3Or1UP/yZexFdfskWv4a5TVbskQCfdhVmyuR75+C1hvyqG2hBEg6wYy9KrzzAbzxWNX69keRiYvNl+1u9piASe7QMgZEkdCuxyy2D0rx6L8Bk9OGas3T0KKK2WnPJOjTpH5t2uS5uqyHivV7CMbzBhz2mOEbvDf34+Q7vPOAYKM/GYcloc0TgdAgEnR3uhP+pjoe/0y62dWA3kSvgeYwny60ILDupqDbzPKQepGydj3S5uNishtAh3HlYN1ik3TwKphaV2BdRMraoBrKmaYv8sfMlcr/cIYbjg2G1rtZXSspbjTrhHeSBKPhjLO5ePWA3Bn00LXL+rPzekk366gPHGa2ckWTJtOOb2LEuVtVl1+5Civikb9WIw8LtK8R08iwqb35RXMY+JWwWdWuphltU4SUdXf7Go2GhwSmsiFd3pi+gFUwhQcc8EkHoI2tgmEWUyua6zjTpGVE/bST4AyuoZn9Zp0beccebAast22XgpGtAiBaFPLjdMlpwo/vlWcFU+1ZJ6BiugsLBtpEiPOw45TYyqw5CVHoUcmsKddUvURBhOZGGo8bLC5Gy6xM78jr+RPaxiYoOA0mupURezl9eY/zp3uOPx2Sd93neg7saNb4rzxNf1xqFGu/MBtM5XIPMWExcybsy3SmMwqa1b7AQgqc9Q+VzqKJTaCqcaN4ElNiS4Qt2V7vwrTCmkOCcSDmw7Iu1r+QymIZ8FYohZUZ8EZoYNl+MiVlV3HBE4T8GK/Pwt8RNmUvAMTheAQL4nxxU3wj11Z5m50E+srVHLlyEf/yoT4QHelpHW1N09BIwy4dp08O2vGbUKsNVPE2Jeae8R/PVk7vNkro7BMOiq8mECPpiS7VJTWQsiUpgfYBPicWn6dam0ZVEPMieO1DHbHTCq/MSL3gfsxY7fghp8aIXVyJyoL6Nm/kviZxmfIkcOIIMFhw+TKxa0WDeQcDDHyRnIgmbaSXwhyfEc5uaCDdhvxz1qS9h/CLVbHpzRVET3SCmSPerdmqSoVgToIVoYEdRQk/idPWAqZdV0MJ0w2Xb8syyVM031u1qIk+03opN8JJywCE2AhuvGT2wjbA0FTwZHe6qLuU0bu4M5YxcbFb06KQ4SBdQ5OiiB1CAAGLEPsPNArj5+FhuGHfzWwpv/aECghbMXeEysGlUlfoNnJRuvsTTKaPPa/J/vWP/v783jJ181c9i92Gv7ZictBDWkn4WFxI6e7wO7wTzolCmj103hj4Gk1Yi5iFEEC8tIOLLgSMofGK5CL4VY5YcPzt+esb5kCFMQg7OkHHwpPdv0zOKHJ1/qJWgkZpQOJMwvLeqR/H/lEsHVTEewYv04Un0IEVwOLLlOxipZZb/8sgUxwwLeVQkNhguQHeKR8FSfbM/sbCmyJbDb53ZiN/pyvwSf7r4gZ4BH7nL1N3ZSkl28qzzPsKZgDgsk+uN1v1hJebQhWLVh+Ad5xdHGN7BuxlbSYAcDw/I2dwT8LmduBcefR2Ld52Vz8AcDSUIqE8hO5zfHFDU644U9Cy+MsCjsgJdk/OZgbHa7+vXtwN3tWwpJqDVIUhJXUCs+vMdgC5chbOQVXLbO9AYdx3mpCyr8ikL4FF4dvQvrQ2mD6D1WfpQ2jnwX8SDSSAOfcHY3hMvMrdvtcGm8wmduvVNX7HL4kLEsAsEtmWLRUt3u/NoJ6B5nK13aPHnGNen1S9HuowkKRIZTEDAB1ApslKBysW2yeXyg6uHjmeYHPdw8c5mgAA4WD2VJsFY71Ib8vertx+AIDFUCtRWUZL9ikMnDSOGSr1b4bBVQzGdLPwzgWrqhyjw0OTDyKe88I/2KkaOsGjekGuRcj4coIAImemGQDgAECRlf6cWGA6hMLujgXbRyzMv8nwI86UOfjPuHi0VTkev4n+aN2KIEp8+KjFMbjcNoih8VTg/Y2DbA6wWhCd+txc1934A7zdM9qEajw6Hh7UBOgJLox7JSnhK9Mol9Wv0nH4KdbWPekwJ1pMncpwo/SkoDbHVksYsss8MlZLgqsQtpEHW/IhQxkLY7WCdaNEMLw80Yp4+FITUkHtvHs48ekw767v8PueXf3n6CnfnPUMUlibVYNyScwAwBnVErBuslLCDriqcqXZOWwXLU63rlNnAgDmXd5Idu5vvYZyt94PDzPwOAjXPftHxzb7qWeJlw2/riDW4Ti6znXhyaljDdqNwyfM57VfJBYDALU6Dvk8Sh6YumuX1Z3lp4rb8LdR1e1OqdeaTwn1pRD5y3w4L6hsGBzFb9SGv40C7c4SAQehEma4pPcxp9857DyQjdRrYFjSGSKb25LkWRw33Unavc6bZY1SIdrTV3AERI+CbE4KMVW9N2eDZGCoSNMFw75Cx6hEZ758jidpQXv6o8FxHhgPpYVVUHven9LOp5N7vELncOI/Rw9NehSqgZuKe+YxAwDdATtdxcSOTg5fvCLg+pRyv4fasHFb0LgETQDgPFnESLQR2DBy2w+oaa+cE7GruwsCgKB9HNUEg4LPmUUGomz3yBgIlCWmYyDY3I+JgcKxAicGSrLl3sSp80wGgunyKAXxoFGuODNQcNzO4hg4WZl9FpyT+74tOB1f0ZWIY1GnYzRuZtGdHyYJ8enpGjrHBAQJYP79wajWMSr5ovnVxGPzDn3xqQbnmNAgAcwokfFqHQJ5j+rTnWb4pNqJpo8Q2D+7/5S2548lq5ZRncUMANQwwyX0cjpYeYK9vaTacf4sd+k7eZoAAJahUW1UjGShXNohXHINAoAOA6NEWYwq2Ucw2tLYzUDUv5ABKQZpBk96L7Cq3PFKO7F3twksgRuYHY0dUXMgRwbac9w3l9Qs7TDPukYiqy6+9RTibIHVEslosB8VRzxnhv5L4gJDqRORymPE+/1fEhbVgf7n6F3l7XzFjl34x0+29+rENc2L0gYNDuRJYwRB7WIgsOUXu0z3ZCWu2F2biS9sdSoO77aDXnFzl2kpP1rT8gWYAnishF9FbrekuHsy3FFiivC8QTOSAH+Yze1Yn3iVmOF8kqtQUkNadsrYFLa9f6hqXb7f5sZgI3PABdCmg+VMAhgFdJLygpjuUsWvHQ7h+0id0+qC/dhIUhVBEontdqnj1td+v+RRj9JVHSo6Dhwti3Yv4rL6YUJ7sZ6VJdIyEQi5BrKciYQqYwFoavXECVrNCpUKuV3PHMad3VRRaIMkSPvoiX8Bb2qyIYOcEhkVGDVJqTBAcvK/VPYFECPd4V+EyLQEy6NUWlqUtqaNglxzrMqPNbr8hmCaIZw6fcAi+XFbhCYGPFmoOy6qW/JJ4+WelMouKoSWxM5kHhI6iSnpK3/P7H2IlhgNet0JsZ0KAb/1hWT2XqZbYK64QCdBb3G+OXcVZ2UQfPkIUmEk58gmfvzVXiHMgEykSSiBdbSd5hAl2S5+ITTdk9p6FsveqGUdbWBlDoib9nYkkaOMdVHZb32yTikRB0rHXCG4qI//w2DJXeY4OejtUQoD47Vg6seIrdv3dGt9+jsInmUMhuWyzx4fin+6PKJuyBbNRN5KpePGBVNRBoNgNDJEaL5glcUikJ0dsZ5CewRUbbNwh2FxVLSl4/Sx2kvHKS/ZB3+xZ5cIXDuoI5lwcSF8T/Vg4KL3Tg8IrlKrrL3tbNpd7Pi6wkvWAQAm4/TlNZTTnEOLcUgpr/bIoZ8aSyms9jgT/UmTs+I4fiprsEN7Pml6oEMnHzk+i1QptceZ5Z8Oc2scZe6Q0Uod6w3g5uoEvBPAXdUTVG2o40B6ouPJqs8p5KOxw2pSUq+uUiau2E+/Yl4cwijTw0DLZQulvmQ0TBRmVNcT1ozEqMkM4+kyefI1r9ZdMwwbox1KNveRw+aKcPzSd/XuwkxsbLOgdTN+J/wZ4bvVbabFJDfhA0wN0rfHUpqlKcI+zkvu00hfG/y3l3XMxl7I5n5Z7Y0J6ZBr9XRt3N+m28xc6jZUgIFVmHJsDI7cRFS14b+DFm0U1yaAPLD6dsMUTRydyIMjLMCJvJyAB4C9GeLO1YWYLSosGMXjJQ4+SAf4Oh9iDM8+WepZFRJt9UdKDkxSEiwR7fspFbYCoiEGHeblnCvRHnCenm6zamx+L0RtJoNppE5iaVsCa1KyLZEqU076lSbEnN9LIFWptd9uowwfmd2bGDWNYmCkrvSxnV/SizSY5x/AItcosWZ95KUL6USeEW2cnfkvYs/mT0XIKSDNSWIc/mohz0RP3enoVaWpfVs/vE5qh72s288EXFVvQTjE4nwmaQnC42oN06ELRzURnv4ihXkj3UfdWDYbqp87EUsQWywT4PSeuUNNmNE7P5nRpd9geTNUOVj3OrlCNKkPaLQmrsXHH8sLCUyrEYgcRF5o6Bi392C0shR316OjEIkzFNfHYUQEX9gDgkiWPsFc/3L+pw7wLLjiIuLonUJVY25YJ+8W/VqmiYFEaskclUJM3t5jApKEpwoMTCnPBg25/P9VcYPaeypAmJav8B4taC0NnYp+ud18pjBtJV+uimUjd9VcrIwkJBFhs6Z0ohVLIzExE/sCb0TrxxFlFzWBfX9Qeh23J7FuxdTm5uXvPwh1U+iqtKOOC2Mh9T4hCa3XnnI39V8lTJ1XDKZa1dDiTInfo8Jt/+GaMBb85AkwsUlACWlx2/QcFFKYGwahQBjQjgduDAqCKnYuMq3nJkmZ32WDqmkkwD3TPKWtPQQ3paNmmG7IhOVWNj+hsLbdaYgCSNtx3B24f7VwobnnKyeqWx9/z1XZ9FnwnWZ5b98oeKGrO7sdjiI29ql1R/hn1BepDWB29+d78hYu3bmHSSO806+QvB/SXFvtWLNX++DmGrSj3dm4F/x2UN8zy7GIJ+B9W12pl9K1eDeNAUkcSp9LphEVyJVfb16h00fOUj7vUbhO0h8qJXcPqUJAupCPt/h9qLNqzY6wD/kOj1SOuCdj11uvJ+nEoGTAFgdQSv1k98drtjV5xEWs/d+6upN7qrtVIZ8Pylc9Exu4RjtL4JYSKDoOXjuRPsW9M4XogQXoOurg7SJOWQmYiyCYLLhqpjmP4FawjVjp+eViIBYAmumGRNeZWBTk7o5+vmT4Mz2Pf7jh/5/hv9/7x3LJ6l/+mLz4ccebo+D/67xccrubadUPcvHjJ6tzyez9x1TmO6nSsdpmB9XRfzVkYP0DhzI0Tfsu4lh/hBy92qO1KSU061nBUjujkFxvvpBfHcMXjI1nrufT6dest22XjAFxGW/pRA4Yq1PGNz9hA9mKKCWUULzS3RAaOkuqUfTq+81RcYfiTc+WM8vBlKnmMarizs4rHe9knXNyfbhzG9OfO7i9lb+TGzNId3T5us2mqmTwaGVS46sJG5jDeZu8W835RDmfteDvkoDnTbrFKcAsNAbu8fBUhhC8rjMCmkiCdjXYa5QVgSDdoR4xKtZfBMwsLm+0KR3aV8PTM5QF7kCLLvh0GuxIVMT24pY5fCC+oNrBikSD9fR2zA7U/au+Dtw9igoELSqYmuwGo8amfXojEyBcJUFzuasePug2uUDo4AWHCZhjNWLWK4pYiiGdePk2u263R8tDXN07YQBMSvIa7e5Won0HPGnM7eUf7MbKCX8DCNIOv9P5FoGthQB5KUfV+/4iCGtYxo5tDBtGCEUp+hZl5CJFtxWgc7aUTu18SHhwY9JiN3DdsbBXs1fIshO36uarA4xXpnXwnEPd/ZyGAvrWBmUp/UPa1eps0Vi7V7e81YF8m7Sja7YasXVs00OUb6PK33HjhNQOM1ta+twSuM94M3hw/ycL7EZwmwrfFFWgUtOHUXziizLorirzm5sQo+1zfXXVbnhUfwoAW01BZ1x2W0M3j5AwdSO3X8EpPsbBkiuu1CN0/gGpDsTInpJ5dWLWcbJZP0Fpqzt8n6rx9fFic8dM0dEx9bS8+GeTO9o+f8/Zo4tGPuYpSQm56FKul9nZ8tzSQVdym05FanDFAwNdFr/WLSdeCFdB3XvbNN0Sn6J0nLAK3httVdqPh07qT7OlnrVTF1cKY4a0Pl+ifj0UeHaI/PH5FvV/6DE/mT7LXEZeE7zEF65qtLNLnmJhMsNIZ1V1ersUrOQvDLcrhNPVHv0Za0fv694MDsQETq4KeJLIw48PJg2Qjzc2UthH4P+QXnTrgOk+YW9lmAA/dwSnENw0VoKZ7oqk4QJxXOLK8mmBnlhY8d5uIzgIuHDsG1lJo8DYMsHIKTEGDpPJJ+5cgPF+Y1aoybWUUx1hvW3c7jV2EL54i1hvJZ4Bw4iCirrE1CoNvPdUQqDD7T2zj7Q8V1ifuFHBpXLWGhwyHHQHHp5Jss5JZOCncM+p2ciLnEGohXmzNtG1HpN/Bj4krR9NsrjK69b2gUKejLkXuBlhv8yCtWXmB6xYEmxtIHxucixPSIwbvkhTSqFWiUS3T2BIrMFs9fneBh7xapOf43/n8sUiJQG/fQQG1iW2ah0dyetnsdF6jXVHC4knaIJTsqkNQMn3JqIDUXJuhdsUDzxV7wiTww4KG9IHYvOO5GaguvuCAQPEdueoK0R+p43Tly6ju9NjBsTJHdMjwpAom3S9cb+DhNbR+JGWs/asyRQHwaZcimz5YudcBvzBBSmVvEuAT6+TghwlvdWj8IySNAa+CzG0Osyrk1vaieSA4caJsa/g5MHmQAm0zelAMyTjdjGvUXmLDHrhJzKdtnmizAaBUVYKLOKa0X5b1MQs/lovcQRkrqbddFCtgjekF1kM4I0Z0F/1sTr8z/QIk7+sdsoEtUiguAesAvonq6cRN2D5muU98r7arWy9BZDzu1U6D1BGG9PDl2WYHUXr0l3YSVQtAo/PktCvW9ZTKnaq0tgPp80WwOO3dyyvW1Z9O5jcoVIGbJsGADrxWPs+mcPAL1u6/OEeF273nHC74hZuE4via+tqbgDZFdOyARRT7//1osNEewhwED4/oNeWHCbchw+SpXw5JmoEAcon85lbynb9meTOCJ0Z6e6saZb9KBxwiKgdMQG+9ZMoEjPfc4NWRrsKsJ20MQUIrvPuQWZ+oYNe2oJ5zn/ag++QBjv4yWciv1ZO6boJfLJq4Hx8zp35hkLfa+ydLSonmle5xALhqX+c3tQQoJuZubEqhl8LJ9X1I3eL6V64VkXlIgBocSp6WURsM3phgPp91X890XrQXhw0NBWp0ADgxNoBgRsbXd9W9JgD9aiuzUZrZ+gKiGses9IUFsyNfk5m+inoe2+ZSqarUnh86HsEo9jXRhA04A9tQPpj/Eil0pAl8WLyNWKbp4glXf8qR3BHrkEqR3YaY23WAfhtxo2bXvsXwJHZsrlVZ0bAD8+pgAZ7PaATjbyGI3EVwI2Nl2lPOzJJnORcpKMKqw+cOdXkLWDY7YA7ouqLd56RBFTdY/BlylsaD75DSXjU6LSOOgoM/u4cwC3Z2NVkHcg4nanc8XJ67vKU54R27vKU10uGGsgR25GBNa+rJJ0UmpygKJIU8n55kpBSenf4vEco5yuW761y9zl2vI19fh+8F0guZ2zZVQs6wNu6AYADK/NiQJylY+xEUp4Ltmnt1pXDoFqhfauZLForZvUxq91WHVUsv0qDgN0sgmki5Fa6C1PFCaZs13K2hTv0/t0WeMWt/wAAigJzEj/LBifn3K4LnF07fGyxt3LZUHfsT57gboICtgixGoEAOwIXdLw3By4tx+4ArPsd2wEAVtUyufDNPlZzmdx07lPb7TTSh9rhy+MBOqAGmk4o4JRQZTpBu2468wAA9oCDuLjbAhW5mekDtZDZwwFdKxsmBLXjgRoJkNtvVHeha19UJpl+Vyv9rqeZ/5+FbgfsF/qkO4w1sK0ga0xFWOpqz6q8X7zffM/P5Cl3lStxv+5WbQPIBlO2ufkuUte+qLUw70mp+GS4fmIy1nFqv/q0+C3Olx5PWCszQ3//oVoQr0tkPFp9XyG+NDqnxLcNYK3NjDtzF+QSXuidZfg+/zXdra6WvdNKm6RcJQFXKMpldQMA3r4GR0NDdV0P+TTLc0Fq67sMBzWrFdrnjp1Fa8VQ+9wpmTaJi6ArLKLdIiasdBfyzAlcpnY928JkvX8zBnO79R8A6MWB2hM/QUBHzm3KoJeueLCgT+JvVMAceGoFOC4QW1P143ywMr4rWvmnMt4HU1FW2xJNnfG2m4scgN5QLqsLADj1XMQeDv+7tjh1wXGkfr13+iq+dwFqpTyv3i3raSH5SKSFT9HmAKRhzVlGAZTGJgUAgBIArsgK/xqi/4i3YH4FNrRsxekAbffmOgCAEwIaWyWX5qVewkWg6f4R2ZqmdelhU/l+EWZlDflo5AdxSEddYzBWUZUXvPbxwoqHu125jCAQzALNpSxu++RVb0rtNt0HLz7wt2SMcqjpZPt2pOocgB5oe25pqgS52lr/eNubqy/5Pf2NvXteUYnCnvjBMyk1ZF/S1GGb4s5XlVEm26oi5bK5AYAVsJok5gyTyo2AD+REIFPKsaysKztr0JfixStkiSJInLxijPMKRIk4mcSpBZQrCxEAiOCytkyw6i6YKNSCynnZn7bAMQ282T8AoHWANlT6ceI/C+gUqkuPmKgc9eGQ+su8eEz22nZU0HsOH2nORbxcNkGvXC7wXd0Rgt5UcZJqIouDLR5gN33HeZiNfVN+9x648kGbWdTMNzydDaPXNkfUT/h67D+nbk6HJW7oqatCU8hgXgUMHk0NL7AFVw1soYJDU6Dgta8wwaEbXkHBbukSmp2gbfn80BUgmCoL3AoO7LvQwNwLDMy1sMBMn1bPdyGBfRQQmHpe7lszP2BbMp9xgYCp+wT4ZqrvQgDzKQDw5OeE8HGS+d9MnzYtsOctHDwfY+ip7mtNyL0bShDbrnRZNa4LsYjFUJFQxVA6i1ixBsFiyJoCAOBM4uxqj51wFnHhUjv2mPu65LUJkCqrZGydCnhtb5YHABzHgJuggpuq9nyrPe3NbzHTq+bJ6ZQuEyq2T9Z0WFQlUBnWsgepWQY12Finoic49NR8JhRw0lOvmr0FVTx/zO7BA9/sk2qmJsdtpovS3NSLu1QYrd/aOwMEnQNckbV4bwvgmXrdxkWaHPUlTZqwqs1h8ERq9c07dQMAFgoZ8AJiZTNjYOfquxtXAVctBEA8FsgCULdJ4MzfClB1IQIAkKF1QRJsqjf8OtsT7l7r312tNYp13fkPALgMeXqDH68tnIvTPA642Jr4unXZDC7P0t8axXWpFaV4oiC9za33A6Qs2ROUlhjFU+2fWw84Td/DrtHkyu16giYvYsx7fIhqdLUDACmjacjxDc2HaMJvNxLUBQUrDQmkrjMPAHAOPMfCoX3LasBsORkUK1yRAXMrslGWAQuJBtTIgK0egGJ5YeHnW1a0hz2c9A5P2uN8BldTJx1jyN4RCxezoop+Bv3HePDbgzX90tQ5J2BsAFk5Co73VlfiiHwM+sHyLvcpP5qcdBxizcIsW9lK5P18AF+Kxz+jKP1Sk3NO6NgA1jzMuJU+RaJrU6+HZ8cYWCLS5KzBEaZQFQZwd6BcVjcAMNH5Z4AGZXOngIys3fRovKRqISh0e0XFOqoGFNMmUStAXxciAAAIWtxIglX1XZ5ne8KsvH9zDU5r6z8AoJVBN8VPXKCvneYQYEBbPLGZKjp09J5lqRV5KV7gG/Q+PIBXpxqltHxILsOxHToi5GdK6SoJ0x/yd7unqPmdaB01XkoLENmIV/SdbQMA0HyqvXbb1LOg6uAfu2dSNDOiKpC7CwZZWwozNqDWWeX5uwIYmWUZZgVgbNecTSzAQruRTwAATMsqqkDMmW8kqLR2TGCS3XBlJg0wa3typ9gBAGYLELFKSrHUiqvITEArZkGcmFasVpKIAE3B0Utx4MhyMd6EPgUq9GeSkMmUeljsqwoymDJB1h1M4GPNCCq+s/ONvVBd2SV4OR7P9eAVrLnD3bQlq037MnmGAMBNECSmSdRGLOTZCaBuCwY008mJkwggZnkeOcPHPyarSssrWAKA1V4iwYpBA3s6EAEAAqQo95kpiAKJpvba/6bdNLE3vf4fABhAcxD/2bKyqtqym9uoLWu8jdr6F7pNtSTVunMgp0+0MGTB8qqYDy7i/FfN3TLIp9n9y/dd6S9VK7tBEHP5/wuu8SexrKyNuqrpYtSRfNOEAo5h7IxItmrecd5Bolge/57VfztvR2seK+M+zPPh2aFQZBR3On362otut7vtsIF+hUkWMf5f9aDaKsHnAj07CFYWYvWQ4eXH//LJg7jMwzd0N70ThEH7GprT7W0XBpQtdrldZ5vJspR2bzBGT/Fx2pSE8DQXTwEApk0lR3F8XunjdCy/ndccNdetMEUVkHe9lXvGRXkAQCO9mg6RNeXg3DyQG9XLmAnk5gbZ5gpyR0GD1QWlvUNRUYU0XTiD+eAOlMYassppfQAq0R+HlyOepxeGvxCaHe8D8dFXPMO0qahclh58henRfNudZke7ORasY11nW3SackmGAEBbgy9Gsp0lHHCQzcQBq+Hzu13rhgF94sJg8e6WDgHqfBLwAZxiEUKfK7zSXThNSbS9IJatf7xGsCQeduc/ADAStN3LfxYGTlXbdnOJWljjJWrx0rJSOqEUTuArRGUGlbYn6e/Li0iYCrokBBJmBwMlCkrt9rvBNJSuCsaCFTrd2dYOAIRVUIDt+SIWOmCG7SIeWiIbK7EqqgGrdOUBACw3r6oGKnBxUwOy5WacAknIbM+C9MqGlEAaTIugUu3CPb8J5Vf4iD6D5wTxfRutuZMdY8jUEAuroqIsCm74wzM52mniau5cJ1ZrABkYCo5BT9Ehq2ukNx58j/E7PJqd7DjE+nQZCkV47Froi8cGdr/5aXauE7U1gPXtsrWlKeqwjjMP4mk68fZGs8PdtKSqhW2dQyoPHABIxx8fDbUjmxsCIli77Fi/rGIhwu15LIoNVMknURbQMYtA9/j/K92Frm0UpeX2oqlZ79/0tmyo8XR1/gMAA0JzTf6zZVFTNWc3t1Fb1ngbtfXSdqX0gFDLAu6AcFy/aiGyMrYp2l1R32DhyVrId/e+tR9eOzPNiRSZsNK3Muo/NHA7tQ1MVKtUH8dSkWPuPuJBaCHm5h3t+FeR9wDMmfJ4GJghb7KAChknHAESWGSk88WgLiqx1Go6DHukPvU5R+WrPjsgempO7S1xDVdHXx0yolQMn1w8nYWxA+HxFOwjjHMzkrkoKrfhoboNP6w8fTLjm1xluGII/VB3yveUglkGNiRy9XTWItXqB8HSZH4OKsqe5nCbYRCcZYO0MZeMnpZfIfdVASXvtjbCWmZFkga1K2DxccKq6q11QX/zOqkr3PrK9K5h6LwN5PvHljzfA9llamCfJ4Js3x+k4Gb5JjXo+HTa2E9/0ShOPdSOBKpQmHBUrWzikv0Q6xlZEGdLdG2jxj8IXdu5OGHQ6iDNwXs0yTbUnQuBSPmmKX/ghauVYkHizLIdbdRjAtUxAZPry1IvNGmWBjhsX7pyqU5/yxV/Tijy+RR0r4qABvelAIZ65tOqqdcDf63HwvIKbaIjvSIN+v4VgDwAiKZtXxMG8FfTerXwXSzO/JlINOYNKuDU1Vg4dxFYT1flmyAaahfvpTeuPTxuwyBUuKlsALbT0XmkvlItIzTv/ZqBEHgFx3RJ6TQROBFF5tkROGWL4fPtl0Y80NNYRjkxhRtwiclDnGBLn00P2fG2ljzZfluTL+FC9hxCRQMgfNHqrGM+hG+Ew5vx/252u1DtdnRu8PoPS39rJN2bU381EaU3f8X1mA8CvcfFq5WESfIJH0HKTYCIr39o7R/vZw0POZZoBg5aD4O/Ei31lDw0EzEMlBVfIKTIG/asAXsdtm3sDyrJsrBE/pCNdycRLSo0ErMeb8PdQFLDL5jSnajq6abPJkF+MpOL5XcyevjGZBr0AdGC3Ccx8wUAf6CeLpZz1yiqwyA4D8g3GTVMEHoBTuV6kGZCor+ibOOBHWLN9X/qjvX8Z45j30B5ndBPSyTuyHSAAYAoKKpErRIDFLYMmFBvjmqmscs8rMSK5nIzS2nuwB0jze4viGsb1T6Z6QcLe0zlwNY9leBPtcY26KYKVLxSm+pW3F7CCIFMNPCBYn0N0DI/4fyC0E2ZCClaq8JjdTni1Byj8IORFv/d0y85E0deAzl7AMAgxF/hAKkUYkCKdwwrlN//2zIslt79hPmLGvVBiBJzkyllszBXEbOEkZxZgzdeXW0opNzJZrmqVsCKLK5qs9yuCbASYApT60qvgSm62kofmfgsEutbmF0VzloF7xaBs0l5bMscm13s30ra4UgbScAtRbFmOFiVu3tVmTtXNYSuVfUfFYxBUOoHx87XGK0U4Y87xuBhRAysnMrkvKNJYumNRikNrgOG03em4/b6d2Q589hHTGOtd/Iqd79UxEw8UAHnThXfoppjW4Xldosu4HS5rjJEA3300r20mymewC4obqjwc1qilC8qrh++xoECtBy+X7UTa+gMMHQRH2rXvXoXdzGvMyd2V3DZauCqWMlsLOAKXcveDIArzY/jzS2DO25Zj6QB3kF/iBay56Q+fS6neUxgndEEdMmWq3hwUj/wHCxTy+u/p/jriTUiB9gdsfUmkXeveIASbqRnu4d1R7LjQME34+uYp/bNwdn2q8a778wGYLXD6kNTR5sz6gfInyHAeaznKWsOgyr/6jv6drVfrrZHMQOJgEyLpl7mNBnesYN3kkP5FdJL8vFV/PdJ6urV7JKeGr/sda6+hLCvgNR0mAAA6QYG1fiYSktdRgm4K//EIlHphs5URxJVEBaoWySqUYikxgIgWRs2ol4rtYW55kRzrmGl03lA8FJSbHLdHgCQtLz2pbOQPvGjW1Acp+ktUENLHOw/FRiolSgNAebEClYOYjVw6pjARpTUhV2ZjDA9HsIZo1eM5Q28xEorrRzbkC+tInU/BABxodcT1zdLYq88d3MAsyNVrohO49r3qJbPvvouHNnF3Rn0jZtZLZi2zN4EjFpA7AEM7RHbXYrtadfVwYBI6qU0TPjuTMFzNoxW/54O3QAyX7QeBlQ1e2WpV+wDxZsvteNGc/b/PW26AayR169nW01B/SQesaHLL2bKxK2N1//3W13aq3bthol9I7hlMYxaeI0uzJkAABV0W3q4RQYLUtLLGhBGS9Nnu2hPbVCHzlVJIBor2rZpsdiuLb0RBd737vtja4GriwR5R4OdAwgA0mjr8AdHiNhvjqEsE/cOPolDc1UphqX2RAEtBetQSVJYJ4dszEj3uWDoZ+vzg3nwH+P+vuQWD9B6hKM0gENdSZLsaoADPeSHkLhYjsEVU/dXHAS+EYAhAZytI7lxPat9AlZEAQ2APa6cMSC74wMAcIlE2gpY5CngpHlfQ88EkoaNfn7iDHH5/O/JVqFue5nlYJ9ymlcFdh4tsm5PEjXSeP2S1k1s/7InCsHvcSnOYB6zBOPAAtDWn0Lyaqa8XnbeXcXcnxJX6Q5jLeAu2sbvJXKRPrDgAga8HdJDhxpXED023bdvLsHKuuVuD//mqmsOHibPXkgYh2Ojeczu1ZNpxJfhib+vezr7S7P6+J5EqxfVYYK7FPv5zL21b1jdW5d+EmBdglcTpTC8RKl1JgBACpgemT4eQF3yTwaJOhg6Eyok6nFIIGDIJSza4UhqgUqHKACgapCCIKJJyqLyUZbscvGYYvP/59kPSFaVD8ArZXGVZZc2AOAeF/OohSkb1Evsyk8QXdhsp9ky2JQrbh3YtJRqF4UfuTBle9K7sgdVLXCB5kKjrusTlarAy0sm7dL0RXYNPcuz0qDkuIZh9cagucArON5Dg1eUYwcQX7kDIgA4CLyO6zsO8fV47o4L7frYylWpEJDObHN4b7awWtlW3i+0wvVvmznSFLbfjEmZ4GEKd28THNtlmiJsSjx4Yppmn+ER88CDD+UpfQnhoqlh8EqRE/JlaKbnRXn36zj59BHGeX7hcBX/z6QK9Wq1VxQMNcOFZ4nm1pkAAFvAdXOPc0VrUkYJKTHAKLeNEtEZPJOqBOZspZDSkGdS4LZEEg1YxSJ8DdSFixAAAJGBIOKAP8SyMjflssQLjiv27FptAGD6nulaVFFY5uI8O5/PKrriNKMDLVjibIlxYqBNLjU1N+PPQZwp63qdTEbFirNmAsf8MMLZkl1zAWfbRzg3HF44Ot4FwOjk2NLEiTsgAoB1gzPj+m5FPGu/3R3Rpymuki09WGm2ysM3i5pJuvp+wYAWbmf+xjdQYysz0EAdWfZIA90nIGYKdNMjNglp/YwmVxN8nzH46JALT7K9cjRDq/+TltsAYhhak95enmEffB+7GXLT6y+twxOy9T8uW9N3G8ATtvXcRSQ08MftGW9I+jZfOvQTte13eLOK+cadG7e6cxNS66/AIxf2EPnWmQAAPmAqTH00e4oB7ySg1MOvYuz2n/WZKOIGHaIJS2Ixplkbr940XK2t6jSIMLxZM4puTZTYG16pDQDURGyxsCqw4ZItgtEzq6rtpoTiWOMVkVa26YKKa9feSDEUrNqq/bk3YihqiLD+k0LxuGGCf6tCRxqz/0K9XPg1+8rPuT2/frd4QtKFkIRIXkBGqknIsYkW5S1HtQ+i0D3aQrmmnk1rcC9xfoI6cwahtVErYK7lKqVIvRqHdhpaUKRP/qKboXQ167rpNYfoUY1rXg5W/pvBMRzep0QU4duxwc89RDO9G6dvxx7qpCv/B6QkFD7LIvsjt360qwEAKim/0vjUSmRLVR7Z31bTtrnSmnS75F/3yn/4NQ3YoXfmuoFd2crjNJx4BoWrduSnI5nibfkAAKZ2SRwjXPEIPJyq7Pj39NPM8JYrkT/Z82eWnSwAwGL/pHZRuHR6LtGZj9QeuczOlXaYaXW6XHH1bEE8vlwdvNtgX9KVels1bNc5vYVKvbg6pUuX3uXJacV3wYDzpMnX5I3rcaSbgm+Tu7Kqd20Ak69LBOZcM3hMiFUWb/jWR3oY8SvJ5z7Xx8ZFajU9RXgTdU0AqNYBe249O15AV6JAF3IJ2wFDWpi4dkSEW7sC+4sQAABJCwoiHau26JS9rbdJZB8YwZfuNbr2AIC+rdJNykgJU5A+WNXuAUfEbOkycfCI2I6OGJf1kSYlFhNKETcUL7Ek+8pe2HALlVg+LkCsVbi0WQdduyK0OQ4P7rrHiEWqMmnK6U6vqcqy4fKHrTm4qsuQLsIUM6R8f2G94O1C9fLY9GM15b8V7Lsj2cNkrWtTtueJ4V++Rnx/1v3WpXRD381zEWhDtusIqGB0JceSmc7o/gpBurZ1N9WiRBM2i0R8QUh9psDjWBe9PnV5QAuwqFV9gQezem61L4ASoiFMeIffNI523g4KYObh55R0fAV6jDiV4henzP18XgJSqji3C1G5/oaxiDmXRJdjAmm68BXlZWo+kYPjkDZneFIJUvkzzhM/GEkLjPt2Us+q+vDMAvZz+ctoLpSE81ZeL2ovN3WW1hjHPlvE3OFgjWF6XhsOHu2UyXUAWVEdINN3JSy7pNXv0PzvapxweuVNcOOB09X9pP7TXr3CmAnnAIYAAavFFwZZjXB1jk4/FAO5alfu/V5Q8+RdIF5GGLRA9n4C6IUClBqqs9DYtXGenLLyA431tNAneFV7vgEZigoaPfvIUVBJnbQ4fyBHinhbFfEs0sueyYdq/RoAZVioVtAszTnfzqhVjvr3sDkl2jSTCd7dlcmrYnmBjPoGybEZMoWAMJxnM/hH6bSWErz2pHA+srzqTArc/M1P8dI5kG3ni8mT8/PpVoGTO4Dkvx2lCOcFXt5JhtRVFv2hOT1WU6GlJuKMSwIgb1fai8klUhTNyeMB36ZYmwnC2Pt8FjGbTUgcHrhQ0a+pXilBPTkwNtChcpX9HGC+hA8i8mO8wj+8baRepbVZPa9fq8ITWoIwFQBf+3n85o0bYF96iQR2aqpEMc6Why9QSV7Qf0xbJECufAgN/zsDRrcW2AgoQ2uy98WyuZmVMR5u8OHGJAbrJQa/42bM+7c4F8K6r4JIToLZRfW1Ohxg21Nr5FZp77gb8EW/e4xIWWlUDI64RJMnTtFkhVs0DRjHaDLaB3n+alKa4CZntMNOvCJsm9yOvhVOn0SAT0dP+0JHxGqarLGbJie4vMkT2xmKhPTYT1MkLOjXP+rNjY8XNYXBj5pc8KQmS2dk2HhT0/Dxp6YRwaOa3PCppmB4ldUerLSAP55lai+Nlhw+3hXThht25j0Fz24OPcqQQHbcTAGpvbCZ7rO1q61HjnoojeqoRf0xHNcMgyohXT8Uow5Pt15P7EOKq3cB1P7oKiyN5B23aecQdhpV3oV6D7WGs18RUwPZU6gRwXMoeUBW766RSVV2h2XSUKPokreq/8GaPRJ9FCUX+Z5M4YVfepsdeu2LcCkMLc2s9Z+IiT4cX/oqqVpJNThTbu8MU9Vwsi+v3aVNp04IVqZ7lqri5E71ToQAQKoHpik7phzcAhLU7WSQmdjd0kA4M1h2zjSQbfCHgWkondEmNu3Bh/K0KoZwm+M4NaZNGPLteZkeRsmH+k4av030ni5hCM/1NsHKrmJTpJ4oJxCm0kEJg2a7UQAALYCULEP0PI1XggRW8z8qw0zzaqwcXflopfyauAvCwO2pWzdxAyGSeyJgm0WQ3Zi7ixAAAMnVw4nc9YVLSlTt2yQS3aNGKV17AAB61mWpUlLYi/RhsbJDMOBGLpPdpmR1OWKyK9ygXDYUmrXlrghu/couZU+xIswaRY3HnuVFOlyY1ymbu9SxjfDEkbol3W4TC5oBqdumrD7l8nLNgxc1YDxeqXu19SQAaE6hG4WtdgNAC4KaKsfXTuLcpWpqc596ud340Wmb+ZGrzPrRVFM5ugkBACbAuGq5Lsa9DUzZzuxcCQFlNvYgRCcgcA0xok+M18xppjme6vLeaJ/7h+i/8p6hh2uouBECfhF0CBA76oI08YSn4gtxz/OTLnhNpVMCCCp+ZOZfVB0CBBRUbD5M3NQorx2TTw/dh0SvymCCir9Nbs6q3mxB7Y8k3GZVEZ6MKIGYLK5GAQDm0awE3nEPsSTWK6OEusi/5pJoV94zHeb9b9CeMNCJRNcjkXQzL1GCa7pEAQA3IW0jINL1Qb3FgcS+BrpX3bUHAPRNdbNXRkrItfTBsk7gOCImp8vEtUfElrXEuN7E0JOGXV+TTRdikc6VvXu0pUIlltb5E7XtWiqsviyeGh/lwL63h/9is23Db9hjHd7JAbJCMmRi0i4n0i7wspLspoHb6S4BAO6KpLthG7oTVKziIEyD/42OkLfP2OMeGaeOWKXvkoyz1nKypB2fNXP5ila2nBBG2/EBAMwNyTQSsgw6EGgP1UAKGrzeygIAwAWIKAVKZB9ETFwmeVP2LRVZpuywWIZw5LKx240i3YrPkAmia1w3w2PgHBUN6E4Yuzx5M2XZvHjlKfjYVBrrcDfF1QQcE2jrVfTmPo7kcg2EuWIsX7CpbhQAYCNGx9VVRAMGOAGc8Z55GnBWGHgIeEokeQLsqdl2leP6Km0p9EiiKKNSjGilNZGZX8A1vd4ODwBwekEp4kcpSBbtplL/b5A8dsUaXFFe0aYhpLlxrjpt95YKlbQNGaDLDm7pYDB6vyesa3dBXifVcEhJtcfjU49y4dM3RCHHxzwYKRp/mqfcJR3MckPufbRACGx5sW3dh1QIx+0LyzIziMQIMUMMLI9XARASbz0JALBuNLLcajcA4MoQFnF8LPXyJR4IS+m3Y9mjIXcNVRgUBDNbCQEATBZiWw6OwoYy6iiubi2NkdUSysW0DZSLQ5hQ+mpoLPKRLo55C9wSCF9a9r3HkXy6dloqi3xe72mrKP4OeCx04OJTW2Iiwa5KG3u7+ypCIaxirg2Dyt0oAIDKJOpjmC6QwKEY4GWRwkm8Wefo61JMq1p+hd0WBkcCV82RznMxe9K1yyO6e+ufFyEAAGJsSZQYxWlN5KI5c53aAACvCxCkBRUVix/NQRqO3dSWHCKkybliXRcRSKhZKaUDxV9Id21f3d0LtkIlV8WiuFsSbEuLqZqCKcnlKlM1XYb/zbWBBCcE13C7AiXCFbBRDEQkAQ9lkBCzRudJAKBITVy22g0AdC+a4tm+JDWGY0qeO2YgVbVUEVjvoJiBw1pPCABcLoekVheXFohyTaNMlFAG07ZQBoewoXA1BJeYtJ9Jsf05GLhD7wVaviM/9Z+OErdE7lXFFp7JV6pAXUnhjfdUyzMpAIAOvYo+6hHMIKXuloAeQYJ6PX12hd6pDQ7ovRrphKXnSqIAAOtJOYsESaQHf9xq2PnEAmsuHgAoQjrhstPC18oSNmTuE7fvChWIbx1oWrR1GvNazSK47kKEvNrqbvYn7U466iajJg+8dI1WXwSnOwi3721B6qoNA3mqHhHKzaAEADbNztzdAFAHFPc5eySshpu5i5/wDgoUTIM263ExPTSfiH6Nh38MXjn1gv7xn0ISieAQIAggvxkfYY4oXno/GWNg8okxCQDIf31HcwvY/SpQfzoccXsPhrkYLnqgUgoAIGCkeqMqBhzYwo7yBFoOiDRoKBsllaIOFkzctmkp264tUhYJRD6RYGbjAYAcoArIC4I5A5qPC4xwa3D4GzRz7C98pX2E6VvykRrnV3Poqr2iK8jhvb9eiH9TwyODTuq6Cci6q0i6O1lcYQIAnAC1ZcBUWkgVB2F5/G+nBkIyIHPemekBcmUrhwtrzhkUpmLLx5Uo+P3ZKf+Pd31/XRT8ncSKPkBXaX6ssMvUrjqlScZQ0DLpySsJvCpvzZ3AY7azAAAsFzgD5rKXW1lzEldjMy+rXb0BO+eIVVUGglBx9z9UqTqWiE1a9dfRxeFy0lKNe9cSqiYyLdBcaNRVfYLJR/1cvieci88QiWnEp0fw00nDP8X304ePjFN0jxFu7K5V3RfGP5Q3j/WbEOYNwLssLkoBAByRqfeA62sA1urnZYxL7WeriL+ibW6wIVpypD2gCze6hj0MqMgcL2zVXXUKTpkzJ8r1rLtSqufeJpHCdVxhWujtiAcARKeSKrkR8WPkEYVDo5ym6TXWiwyVKzavWNUlw/3vxiqqAVvN5uIjBCPL57ydfmzgtDXiAiGoatnlAFTdDU+9kRjKjSdhXoXsHx8sFykrQWTvRkXXsRmA/7HpYU82RMWtnE55X2Y4z4Bjg/CoG3pqu8jfir88B3bqfkzT7FMiabwmkLFXhLv91H398k2L58qfy+PAQ8bNJDBXr1uWl/jpszeAIOPDW6FfTzFKu5xkV0Nj+kEDbA+VJ1i1ZOAcRA8ZUFCXFWGn6GME9Km2HrEk5yf9Fuv+J3KeIykykGPo6iGVpKv6UkC3bGCYYvTSjNZtQhP5Wyg62N3NhEmyZJtABzTBDY0XmkHAAoxQYcFlu36/tY9jGOPO9xD6ujH0Hp6s2GX1nl+h5qC078gfuXK6a6cFyBEIxsx2YFeIL7ezrUHCpjiLMcfOgp21Xn+0jIIP3seS444FV4DZOAQuPMgrMNPzISdKIBtsokJGHfh6L1ZeX1mBQ24UtDuBqCQgaNyIvvOEeJvAKoinQ+5DnALochVbNmjnnFMMaaaMhqBOF+KlIurXcxn16xmifo1Th9TxXEb96hleCAGchvEt6YAUIAXhscZLRWf68IHPG1Ap4Vz8UhgDmECBRJ6DBEB4aEMSoHAOon4dWEasjLz3KRLjGfV0Rg5FpafNiA1y2Ycy/DJ3MkPWaKrCVh9NaY0COjcHU2lHS+NMqIcPSQFpINQFH7q7FqEiJ7zSNPBSzun1HAx5BYaOT3wfSj4FRJcVZmQrfihcVFkt1pC7TCBOB+nAKqvj6S48FN2oaHzybo9wqKuMTGdS+JLboaxNCQGAMFfcTNhRDSq4iCqTfR+PD2clExSBPk0tO0ADfcP6Q6ABTtceHq6+rB9v7/OzMzEmrwKme9oJvRcsgI0j1f6rNHZdA5Pby9WcvmrlyyLh/6G5r1fv2A/c2e6VH/uvOj6VADmDD1EiZC4qQHXNYanxJYCwf4fO+x34ICcTgvuOe55yLXQ5n0mocDtOV7Zqrc9JiyhfoYeiE51zS1Fu5HJ1U6tA6owpHjwwUe9tRwEA1MdYRYFYkc4sicuUf657BoyNyd16z7qUfwrQ1cKgK0AXRVLXEqG7dwEADIXbk0RTN/LBDsWhbYna+z/wS1LDNfEAgCWZKP5jrQWzh1bh4jStBUXVxpYs+SW7IiXGtN5bBbXXoZOVByw8Eqql6EJP3ZBzJBTgYCJ6CRw7IFADwIl2WF2Y5Cyj/uz5vQtjlIXLDW2r0+DtbicTANRnSE33p2KMVouCQJyd7X4FXLgyW3FvUCgNjLZ9b9fqu4jExpnVydhhGtTJ8AadVotstdHpjICQGmTBuJxsnVOz63dKp+Ft8+RVZ77X4YSYWHyiC0zMuFUzYHuNivDDXQzqzdbFKACAKDZPp/lGl5SpAK5w3GZMbq/9rGut/oq6uEEXURdL6iJp1G3jBQAaUWCJu1UlWqJwDRW1Jk7YK164BwDs0rLKSVV348cPqjGaZ9SZfGBvMgquiceMYrjUDpFkveceHmND+Wr/dmbVVBZd2RThOtScThxBQE3QhCgWRtq2bqSSVDUyQE1uGzRzc2UCwAZC9qkODSUI0ugyisBd7kUycRU2MHPqYZfR0G3eTitPSCH+TWd/ACGG+B2p8++t0Z9yGZpdbhqj8EJ67wDiqQ6tw3YLLYYNTCkFABigpbpRrAF3odntZ+uygPZYsYEWdJSkBVXiBQAMTF20CzqbOJzpS+4BAN2o1DAplvwRTS9zEkQoPje34gC5nr5kBe7BfaDZv/E1qOd/10zekezk/+OZ/NS+wBPf/ld1D/5X+c1vb3R1TLar6rQ0KqcMA4sqzLA1Ck3soJbk3+6xyhy9ZkcY+6nCtCoF4/2AWeU8t5jjez5qWNIU995l/R4vBvr8KGtyAACYSFdtKa2MCAcP17D63EuvaQEAxkQ3zOW6FDCYl2pQZ97RdYz4SjUxNeJrcSI1cVfV3igo47+kbttQkNPEDxy92u/Pz7/ANgS/o+WU6kN9fmcawjuEljJ3XZMCAFQBraob+jBE1aCLiqt/u+jXTNS49Mz1ZbwRwQ2D0VBys+c41sGoZgGERcT6XQBgB1wcKzqOpSWFbk0k2IPXxQMAXFSH/7BQkN3kojDWWEBhuZSI0tnvCOViAgnU6gm62rNQCx5MbG8AUgEBDQNUzIOxcf1Z+r0LY9QKHAxt0xHI6+1kAgB9C9Hc/pSTRdOKIOBMq8ikAi6wVqrIav5EG6iptYQAwFSVX29g7Vo4ZqMbmndt8jsuZxouvg/iC6/NbPggvj1fgQqE2JCfTFXMxvy8CplcgAJZHpabuinxoXciqV5mGAcqWt7f9qYrwsvPqKGOF6MAABoRVVHPTs7IxQHdHHZVvPTMlX99ZnQNgzEzuobPbTmDniVsUQDSuQsAYBuaAiXRNMtAy0OpxrZE9wT3/yVJcU08AOCVTIu7WN0yzGe9oBir6V3tRsnKOmKnG7ZLZqDmhFRYYHbq1+3cgxYrTqH+32Y86IGEYjEv9PSlSijuS+iVicJpAgI1FzifE1a75oRbRs27SfidrTAKtx7YVs+gVaXtZAKA0A2p3f2puI1W+wSBeFvt5Qq4cGix4s4SOUVM1FEIAPAqTTkV1sbZxGnaGTVx2jxbJE4vh5BR7JYyH/MZ/vPTA86OU/0kNrRU92jRJpbtNxVUhSuHzMxIF6QAABpjuPrRqn0spYxcTcBb0aB++W6sHVXerFbMjbrqyjyeKWfTiNXw2R0T/DPFmBj1rOEFAAZErWpRXdCG4mVWJU6q+8Ye54p4AGA0lNz42QUUylCYWnMKlUxD+erh4trIejhQtRQammVXNJIE/PpGjuGkOySwyUho2bXT4IfV4LYnqo+WJIAWVBguIdo2U6Eko6/6xspuR7qzCmUCQGmRwKijg5UdXPW1JVDsmpzxHDbUX4B4h1igwYsyogsJ/WOBPqn1AUQb4nnqnjc8yfyxHmLyJVQKRxoS9IcFPYwYzhDfen2sUgoAsCrEH83twCClUg24C81l0AiUODAA4TRAl3gBgAAVF1WGPs/VZz6xOMViPAAQQBUQFgRzBjQfFxgx1eCE730n4nNrDf96q/F8DI0XBaLzqTB4Q/G9cQ8+qHt4c5YdHUI8alfXZe0hQg8umgAABiJugx7UgAOm1PNc9kx6ehrY/1ANVJkDFGXvYXCieSi7nVSXajFi3i/wQlXL6VO5UayjvmOEZ8FT2KunWi5Tfwn8MX+kOJBjo4WGd4Q1Epq//2h0H8EBAZCt3dWBs6heohc3ynyhwYTUCtVO9RWB+uvQCfiqutXCaPP1iw6c7eX7T7KPLpFvfLOdiTHCAGwx6cx4Tx8QTa/JAQAGVJJRtssf3YnXlsVWw+7WmtuC2Ufjyt0sAAATEFfJXejZfnk+Et12mTxt07yPip7UEfO8fPRT0Tv3jnp5cOvq9vn82upTQkcQHxvwOuxbIXiRVmobH1DmAIrLkLNTxJtcQQs0lnq/l3u8+qzvctd+5BNTsNYIgzzIp/1HO0b9/XFpWJpHzWwj2IplCEffdjvxzZ4SyY6YgdklwmhhJvyWZCBOgaZeJDEQ3GpLIXdkHyXnSDkKOrw6eJ0smEOKpZ06cZCAbKJdeeQgzOn6tfY/thSal+xJucsV1DsVW6YvooSI0Cc3nG7m3TwnkJWKzk72o6tXryKy7hW+zWCeiGR1owAApCqQW6RPd5UIuRxQKHEPoN6aWwj/aar7FjDWdqelXWQ8eL/ar2irVjsykTexBvCAhgX0NUfSIJu0G0O0diWkpCdpM1s/Ju0gIfLLkklXre1Mp5cjLKfLP5Ilf8awxkpLFRwua8NIp1bCaYSrUJHphNueAfhsV0WVrZHY7bsAgG3YZy4/4uyxoq3pt56MhS/RvO2NijbRHfEAgOWd5SsFMP8JN9CJFHa/EqVmPYJNofhKlMUbJAIKzVei2a6jb6aMM+6bmT2EIsULJpAhFawKvISpQQGlrNbEKbTkkwNxoaVpK5yU7D9LqFralosZoqUb33b2iN3pKBMABgQTOtQ9EmeaEVwtaIbVb7WjZSu74xiftM1uQgDA5XI3giy2i/MUNNh1M+NAw4rMHi80JATEpKBVZshsR5SMchBnlyDLHeR5HPKZAC1+PXe47aJv4SRI1j7/eefwilm5QXX5WOpVCmtJtdTSTAoAIHEkb9fpwV5J7kPTGtDkk4YRMmtuLmBlBgGwxAsALKCYqI8y1AF7W+J+4sXBSu4BAI3w9kApKvoZCvoOVtBcAS8dhWC8R3TvgJDvBBO6k56+A3Y4EbjECOcNu9h9wCWDiWwMsDOCwJUxtI/aFWyuBbUnGF0H6tq77S7UsaNMAHALdK1DNZvYtb5BE1AqEShhzXSmbfzwAkgTAgC9raIOWCFu/5Lr4ASZZgF8B7DIHjtgiwiDyZOBnk5gwhsywj38hl3wflnfvCKd9H/OqO/aNrfu3QGKJYYbYCkFACAwQr0hnAgkoNzcgpMZBJASLwDQqD0smjtw8onLqS7GAwACWwAZLOYUSD5eQPW7DjSDFzhSANw+3WEXu8vYsyOcx87pxN74JikrCDyq6hwowTY6UIJxtXRlartOq4ELZQIAtWjAqKWDlRtsLe2pUHB7M/E12dv4nigL9YdisOBfsQ97ZCv9DeH+lB4IEOmK39wBMDH0gOVF4/T8HtRHJMoV//+oYda5H1canhguAKUUAABApHoBKwIBMDc3YDKDDbjECwAUOFHR1KxvYfKJA9ZsPAAggiV/RIMLmk2DXgcRinWQ8n0B8Wta58+exYT/bvizt37ejUGtDfzj8+H+OGCzi3v4wu6c643qIPIDdgboX2o7KSvAynxE4zUmAMAsMNV1wzRmsysOAgsNQG7YJQxsd8vPHtHI6wMUQOOzqXoL4/Nu4ceTfeGBBtb7/Bs9IPhS4fOhOm1/a749Y2bHHWs8e+ys1riVtqnUGK4IK9WKcJ0k0xQt2Srs/kldHKpR36DVPA+Y4JMqOFU7STctlVwLuXRW0136Uh6Va1tbbEjlure2l9F7iKW0jKXzLqvKN3lYxu07mhLFc3mMDxSfqwLTszl6+rFTMM35cffRlAo6/YMzLtasVcCkokZCWHOALt0oAICrgHB4eqabfpOYMQe0Zjz++01UXHN+OUYgtV5BVQF2Qcpn5WBnF3YCAAHN0TZXEi1UVFCTrfYmOh5wV3vedfEAwDRKW/05t7JkKI/dnEalauPZYZj8StKy9wlqYb9vUCsucEe0LbxwQ7TwJ+KWaCgJdCAaSTadiMaSUWeiGe+2LuzNrSkTAKqIdbKoPXxAp9bBXuLuaaD4QSk7UJvlbkIAwBJwcB+XvgVm5Wa2vEMZptmCzN4aaBYrILYL2guHyQ487460f5hKGJcq56cAnBHkBR6ms4X6+7pPTbE2vliBsRZfz/mPqmRtpumQNOTCUu1fFknrUgAACQjD0zNdT4XEjASgVeuTePQnzb4wWXNzRM3FgryDdEVdAEDgREQnfXY6YG1L3IRDWWfmEvEAwP723UFGLuvI3so2uZC50/jpAB2KT8DZdsCW7wAdXM9ZYPkWK5yciMACLy8Swcgu8vYvK0RIQ4lUWXLb4YCpQO6MEzZ9cmZn6TQPXHaHL+Yk93Fg21zzIaPRTSYAqA9t+typ9/iQmWEEvh1MSgVcNN2eYmU28e0dUGlCAGBO93dQAa4xhd4BGWbKOR4HO87WwYkgdBDb5jwhXK/w7BiMD5VdQnST3rzF476Vd7d/YsRwUDuXAgDoAEj1oFwF8oDOzRngxCAPpVldAMAHQhYRZD5R4JTiAYDptn1YOAKowfBm0fj4WGDJd4PN4AEpBJYjAnPYRe6yWrogeGEieRy5lf8SmJyYJhtvED7TK7aR2mQlY0Grye0JZ4rFMgGgwOLUovEKgm2F88fgEiJQkmOn63Iq7OfOr2MerzFsS6kM8GhWfKegQBIPBIhuxW/uCZg5zV4KrjGlI+10JbIV/2kncG3JrXt/raDFsIEppQAAC3Sk3uwktEAx4IoVYEHl5gQiM7gAi7oAwIIdFfXe4yxEPpFgZuMBgBwYAVSA95w5cNmYND75LrAY3CDYf/CVbwInKjzn6XJ+VHgNb9sjJ0meyVOFwIeUkQCwxQk868HEyiK6zo6dEtc2hKBg4sw/IZKo3ODn1l/CP57diO4O9PZwNMkERIBd77Jb/1jYIUzV42wXMBW277LOWfj4GqzeKSP/wsolQNDKyL6h7uipVVh8d3h85GJrZYvSTAzGig2Eb3xm5IR+FJhnIWh7sdbMCOHPIvCv83SLuTuuUYd0y70xLmZHaXAt3qUXJTvunCT2LnLoThVH/VpS1Z0JwRBiN/vQMY3VUgNEDNh+fP9YFwahiokgNrM3AEADJWbuN92xeLlIabIGNYL8+VStUpkFAIgcJVnSu+2s94+91/ppQAZnrh0QOoCYGHpcQNKHsp5boVPVFYGnBkzYE2uzVf9mHIRESTaNnOw2nmKBTUrggIAY78Z1ey7TBAtcs7fW3DZrwQqjyM1J0+mlvu9siLacfarswd0StgJAAhxcVl6ZS5pfPDbfQcje+vVX/ADQrkB00L6fZNOC/Ou0svqJk3VjJgq7mdMFADqQWhDlDNRVB1AuMV3nFgdZ2gMAeOKbKFAKJ0q0KlP5zaMF5bB5oumqg5pgbAeYSYe5IwN3rWAOhr1vze8+M2UNKTAFYHHci7WEHMByWhRZ4GgbBQdOqtF24Ew1Gg+czeXbB255bZkA4ALOsKpu8FKtgwaYRqgSzqLNzhWFAIB79izkY6xcsOUKppmzk9naE2M0DzPbfJtoZJ8PM8sbg2AcAkKN2snSzNJ0QfUwOQwqZHlzNN4sJfh+rBnijmiJ2AngN5krANwuKQ/C+ZX+ARQF3vOqT/vcNudHGrcM+lRnUhcAkFSCKD8wYaA7ILcllozXDiK5BwCcqhQOlMLGJR3tLL+iAuZpzYe7YsLwiVGyu2JinwnoIPAJCeDTB4sFHf69Z0tohJeWt4SWsPOJonUnkoC07lnJRlr3rmQkrVHKbotjAyyWCQBiwSlWDUvO5gcDWRJlpoDbhxd0khAAaPLSdwBzXO8MARwQy8zpg/oOiCjbx4EbQVS0bQ5yS5k9lYdD7ybb/Qx+Bj5x/w0rR2GauBUAEgrisvLKHPordzfKgkVgAZ2bC8jMYAEq6gIABVIWGWQ+0ZyaYjwAAHBED8HwJmh8fGywsg8BEbzXv24HFVDcXGwJrvDS0rvQEko+UbRujyQgrTsn2UjrnpOMpHWfs9vk2GgVywQAsWCaVcOSufxgIFOizCo8ux6aLWrzcXqGaE3XvKOj7knsCgCJT5Em5wCi8PF8Hg7KkLQ2bg0Rut8yehSBT0JXAEjQjEvK/fu/R/ovSlUgD6jcnAFMDPJQnNUFAHwgZJFA5BPFqRTjAYAGI3oAOmw2+YYsXDYWjS/7YLAZfECyf+ErjTye4ziU4RyeZz726W6KveMGt8cQtmqjDp33hjb/P/n9Dr5eDoJpBp0Y5ZV+mhNf8znq++D9x/uP5ZkjPuqt+crWNb8fY1ZltD43AXp4R3PXRSlbWMPqiAcm5spe1yIqniQQR7w5q7Y3jytlT+voUS/aZ3hEyGz5yDzW9QckhAEehLlHWaCz7+0jJOrRz5wR3+7suT+r14jt89TjKao9USH4RN4+AI3lhUtEzGXUta2hKysAgubXCESwYHY34r3l/7XKetdVhopivKAhi0F1q+VV/nkkdMFyH0nErIhMQscdsa4rC0SIKEguFiGGh2SRTRE/45ZaD+KtlCIRfCRpxNlWMpF7TOXfFw0rkxQnCf8zbx/oKwkn+WpAeeAAimXyRgqXgV5jStCkm9LoNNbb+poIaoASWYYDo3tBFp3vtmr7L6ErfATiiQPlAZY5Yy7qs8xWm+Q9idiVHzeuiWDKJD9FmCmLdt/hnoZ+WUzTEPVNbwsbFd+60ewvETSCiIpnq7DOHjYBVocswgD2Gdvg4CBF64YVxI9JR2GneWt/eEzuripFCjhiFz4vhcCauThgmtOxwO+Qsk9JaRv/SC4AczahpfyJBUgjuvHJq498Cgwobn7+AaCzsQ36s4BZTw8mHFNJtvrl0EgSaI5rBclZeahREj8Fo0UpEaJMjmENiK322GBq/CNWz5F2FAGNJARKC9TSxVdkIpwOA+eXBMRQubV2kL4r/PcCxPge8gvac1s0mdC2kkeP0BLhAZXNSFnlY5o2MjiBPyVb73PAhbqQnE/PpaaA+PTFtGAAKtS4jnfzJndB03HzIKPoUr1YEN5odG0kMQs75i/mVOhnkNLoQRqiaV3fitceYpzPA1jS5quh5JUWzhGJ02GMGE8sOamXEkZyki7BVE3h7eAMZGXoGyb0j03Wm7r9SnX1Gw8dBRsNzsFAhB+L6GU44RMpN5TboNYr6FmdtmATtG7bX0Zk3VAWjkZjLExXw5Z4+ShQ/JSdrXDqlFwLku/92ODNCJjd/NwJ0C9QfeS0/bzRRja4Nw2zUfNWbZqwyJbilYUASE5EF9m2cy1scodx37E64WNACheyg8zvi0RLaw4O30KPwFlXU3BqgLT2wNoGwjKQZLJ/uQD6lhpunElxCqsY3vgdHUNjldxKuiGU9WY3Ufvu3t3o0nfrHvkhN9zowYiE91OKO3a2bwgOGw5/uIS0uClwSD6RX4QTsIs2qxAzLqQUulj/1XrkDaIyNgp98JYbEEqHWtXXgpN0k+fWvPff4HtZDxUys8u+4UcHaYjx/xjsfBKHnVhiqIn19Sz/tzikgq/peOkmKK5o1L/WvR0VM581ahcLZ0J1/hyWf1VCzK9tdcAPyyOFTNCKd4NIaz1MyehYL/fRMEUDX1fn/V79ZxPSWt4keZH2myoyZGTCdt/LgRY/98ZM7r57/aK3MZ/LKjSjtuSTeMPrOGkJHdLDsi17QjBaCw/4PbKX6HOpC8nR5AziCMCNJNe3P1ij5IdPXbO7HpgR7uYQ9a8QcPawNfnTPAOE3OM4fm0EA8sDuRZ4HwCiW6copVgkPet4kRIVMCx869m9FVpH3S7b5rCVZEVcntN0zvYO2sAurxi7ylL0WNDhoV0XQRnrh6Gdt9pXCMO4txFdPx6kniQAMPRJqS0OC/W+O+/dQTF8RgEdmAW1TxsSb8SwDI4BF9vC+40aXgK4LXoe6Y+7GtGTim0HxQ8rMAOSApL/DxebT+E2SwkroAgdQAcNAKI9vFIF/efMQ4fzdw3XbxGO/yWGq+yyhUzmbpo5qDehsFFecR2l6//ZK0Sl0gXe138NJD8goK9DQyUHwdhDNnEbQRGd5qMZlrovGGS9YLTrw8T6/QFiiuP+lZrHHZfg2ZemqAxDZpMJBuZ6GhJlUIEZGN4hgdKZvp2COTvjE+O9R4oXQ1MTeNmxucOpmCg6Y5UrBML1C3rLPVQyjySPXqFsV9pqHdceOqpJrFh2fjmMG2bcZbMUVYW9VYW53ZPiekuRRnHS32Z57xcp3ytPl8sEghS4lk8Q9LUcPVYsU0rmIe11AsuuOnjtxuJNfGX79hvCw3oe5gWkVUyadi7mUlAaBX4qphlyAKK03QgXoDHv7lnf4kl9MsFdRdSjzMGZ6h3btMdVSKmIuqQ8WqzcZsfzxa5gZCOe+r01P5iNdeaUvyyrjFUHJV4p/tviOFwV2u1vXMFM+YdJHgmbMHzY3hyfjWhWfJ6lkkmT2bEs8pq+OkW4B/KhNm2BuglFxXBlI5Shbd7i1PMhBBG1biBMkt5yYM5CSx52s1PQbhX/L7Vv9J8SGhjzYtSRgOrmuSAV+F3AOjMrLNdoEdmo12HbEPVhw9Q1Cf4Sw8jOFBkNGQkNZhfah3+DKt5DtejbW5pJvxXwXx0ArhDoDUHdRIlfKCUBuYdhE61XMMi14sxYJ3nvPYbesOGsC8LmEmYt3qEA/dX0t2i+/e5dtP3b2uSX7eZxcN48nvTfd/KEXVu2ha30+a9XGJqTXWFedZOZv0D3A6b2JQ0bdG9WyrA5Ya4afD74SKGk911K3argwhlzDzucPQYd8nDZlkb/hrA1ddWyLZn/jcDWwNWrbO2NRbPKuugu+BPTIlDs8XGq5UMw0N8AqYVDg6F03e6kcHHM/VIQkNXmJSUlrJnPFSvXbSex53+V5/O3j8qzOkEp+BTmrk/vNZuoALHJwmbdyFqh+4CQhLlze6IsuJEnM1uAM4qwiu433OStQ8q+WbYQ7z/OLaY3nPGKhcz/fQYAWMxmtWxh8T8lLW6uSiEHpPDF14LSOnBNXRMd/p6h9QdCmrKdFz5OnTleFfbG/nN/JIY+noajf62eqa6mk+C+qSM6NdWpbZGnXGo7+uCjgc93oXjNoqJALu3JsyKZN578V6W9xu9sk6Aa2FfV39+q4vTbRHSdb2YfGfrGk7XR7HSMOpNXyQJkWMHlU0DqN2GAza1SQOabLMAS1UNAN4pg8aRTCjjbbVgEft5W1Qrg2kXg56VdZS2wwrrV12IXN+5SPoSATyUK3OwVnpzepVIFbmElbN86tGswxruIjmTgv7ukXgAY9tBcVQjmWyGWv7WB6lRcGyiaZqOZSTw/W+d0ePIeAGl7jlKTlzgqh6aviHK/CERumiL0LBjoJm7k4kqRf9MjAP25v5uxL78LNMdaPRsshmXhF5xFD8nqKnTIoWoIv9kPRQGA97WrMaGbmuI7WT1NSzi2LPIt4re0nKXVr7/06FqNBXUlxtNOuE2DFxWiRFfIGwm6Q2NWaDB8vO4tg3t2u3bRAiXm8vrsrHre9xYG0MXhz6i+8hZFlS+wEHQK/xQwJOSnrBkKD2eJLZ2em3LWcKHKALZrpdQ3AVNYdoPSyppFusnoQW8lQankvR2fvsY9i1a/eg1IMJXLuL5iz8VnDdLOfDyGPvGarxwDZXOcYSKAc8zkr69gHyuiC3LE5JlzTn5D5ivNgJTX7kXTwN6ibrKxrHfVjrcIX0t7kogEAhew62uGkmsj4Ohrftsz+WyRP6DHobd3Y7ZZRQQCMjyPwqtSfG2uPAU/kReIPnrks/jz9YjWUq9Od5e/E76lO6gwrO31CxEm9Zd/PW+PYL/1+M7+mF5WcsBYfldgEKu0VfWv4QKQKe2rEJIp4q/+tvIE9d8UgVenmw5FV8WqclC7ZicN2WadNCSn9SQ75/WkkhN7kt6ZDeNmiP2sIY6zgs6CtoNHr8LVP1mdy38y7vqfxKcAJoWfCpiknhIgMAQl4Pk3vKajkwPClKES0D8IU1yxQxbljaiZihILYyK5FS5igp1gfbqY+vXW8mpX4fAilcSE6sYThp1DcNAtrf3Vxp3iXmN2EQhCJLRs06mfOotE2ZYL+GuYXjNFLRbSRnxzZ3/qhfI1zogc25kPhhMobzyawxkj3sp9bUnc9C1LZzEpB0KnplJMs0tzve4s5Qti1gvMa256BARK3VAmxZ5dzSb3DbLWQrmMQzgvJGP9dj111C5aXmEMiSqHfmBAihnug9EKmDilqwZKRwfGGtVZWxndQZPie4vUf1WeGpAnx0RwrOo8s8Az+7HG39PoYMNSnWB8oF7y3kv89ksmh7qmvuESVBRraZQsuNlKBxaWWHu4Bbi/Yr5a5zvlHMYQGo4kWjXlJis2bhidC9k7Axe5gG94Ev36rkk3QTtPv37RppawG9ko6pyYYZH7Mnh4FNgq97udvCu9odktdMnQlWwU8qekqF/ehRJ9aUmRILVEbtrLZ14oEZmWGBKWlpxeivSWrBjFJ2PimDkyptzFVNkNWvXc1IdElJvb29uk3FLLJYN0PRmkb7s0orgdHkyYlqggYiabzZq2PUkR6UxLiLa0ZCGWliI5qiaZLLSE7CAzUtASJQ1oiZwDMq7gLBn/L0c5E5ZuVa6pMMwlFXvGqxxPdlWuqCjngopLYd7dh5ucTLxH+wabWJFtiXHR5GwKwXxLcb4wu2+q7VvX2TUVUINsFIsmpQC+iIgCFziNhWyj7GrrLeOrDJvPorj42nEBftn4e8vU2SWWFF+7edOL7LnzP9EE6VYVCV8xKNGyvwSNzZVZXMIuU0tskg/DktfrlSLJ37uQTPEZKnxgiZRttIaQ2IuRqbXtKeYBSVM2K2QBCUpCV98Sdz0goCQEbMnJP+vyl0TPLd71LC15jFYwZM+vOIv3+ZxszAveo6nPTXOwtCQA1fRFFgObcrioUaYR5s2pdaoRv/LN3FDjH3JcfJqD70n4kPS8pnzwmoNToFDwOlvCnY9AqAzwetrDTU4I3vj/thZRU9Z3Pc2e6xWirGdi6pENrp19KakoiAa/yduoFeA+SfpofOLeeGSCaV0MihSlDvrN7ARr9VKpFeW8X8UJ4rjQSghdK704rqvXcvvLaNb06RWe1mgnoikpgUIYZD/gIicCPUoJxnnKXAR8LT6MG+Q9tTi/5KTv0q2reVX7s0Q6xzb5O6Gfpd7ER+Sfrq3sJkv+DfJ/z+/jLQ439zJ77ueqy0cmdR944vo6jeiF0LeT15Bu5jLUoWhVKuXojHhi/M53Xc6MBewcapm/sklIgq9KfN+7gE5m4YSDOjvpqKKXYY6yJL+CKAQCKN85Mi3Rz5ZIAB4iUSiCaGrF485fRH4AZFjdPhTJhiMvGjLwFYWlq9GRr71zQ+tEvFF6c7pu+UCHfbvktm/T2P2FVyS/aNJAuL0ux85R2MZ0rivcnqSPhWJEJtFMOwQvy2ZhrJglUXNfwKv0w9YcvPqx7/isLALRH7nfMpeWUxVH7rhVfBjRHN5DgAB8OLChJuO/y21sMpkOnLwsm53Citlx113b5DnxQ5hGhTkJN2CRqMn0ODUikwAE4y6i8wvqT6GIubthlLcEeoEZUxo+I3owgiAGd6NEb1rwLhX3NNcEB4dIpdYcftsAbCkMmYIGgJ0RxZtjYxi4JAvIVyij6GrAbxYgDDcyPY4rUBAwIvkrciMYzSSrFNXB1xvWaKLqzuAzYHejaZXB1JrDrweAGRueJFmeM/Ae23omM0U1GsCl9zvEYNs5epFqLnHiZSf57+cyzr6LkKibjtrcXClEfDZ89MSk8Pxg/3nKi5nQDT1teel2TX++bNzDD+9VyIfaA/UN8VMjWTKE+ArmPGqr89WqJcGqsf5Mk5JPJQNblirI9IKxF4wNBXCnJ7FjJzh/1ggBkYxM1b4lkZCvTcx6s6n+GFRA1VCNOpmLARqu0ScjEF9E4+DAILJR4kjm7xVWlEq7W7TaWY0IKXWNkSHsrn/jafi/8ckzoF6KnQnhQ1LlKJ0xt9bVmgnL/6JoPrfx+KWtGSPtnk11CxHjzTIqEzJqzefqMGp6/Heg8aJmVz3KrzIda+igjrUaAwbDYs7RtEa3VO6uOnvqy0nVAwUVLYhDyxBOjOlV7Lsg3+roS0r119ELwYaeEk6EszbxEGzqS0olZKhGEFdLZQV1ecvo3FGcooqSUnXAig0VIypgSs8eTs17NK+/HVeMfUtL1eO0gtGwJCMyzpsCzgxL3aUPA04NzHyfr/03n2BF27K/ZtdmpaKlSX8hyDq1MbPa3wChCPaaw48p6NiD8TAMBwuvhlMeWEN/GJptOPM8NxmYVwb5JBlPQEvb35O5pwG9oG21bPLGkyfpe0zwg255va94/f9zkMANjWcOHrvyC5kywJId+6kj0HBfBBgsPDzJZtGE48aezJ0aWBoiT5yKnh4nGxQ9osLJuPiU/On5WkrlLuXWKK6SowWbxWPPnz1ZNKLhi0siA08cWJPF50/Pnxo3NFqg4s6cXmzx+QEfwzdY/mR6xIw/mZ6eTC8+PUecnkyPaBHOE+EE/sAVgJlpju6TT9u/vESfk2YN/MVlT8mJPSjyF5w9AJGzFeeSXwbn7Rn0zm7njOyPGxVe2uVO/L21+cMbE4l96LOY3+mCV49Qm0IExZCvzG72A2cPxrytLUGg8yv+DxQZmKmFtiUBbLckphYG+pVzZ9ZB7WAicrpKf3qwkT9Z+82vH/jaUOvR8OpbTw/v/piXLqINfB+WrEXviAbRPaYO3d6f9Ko3d5hPeIiqifQlfjyCfS0r8tOw9gk/UFDk/IRHKcKk/YIG/iAqqAcCqAUFhCH+QKa/paGZ+Ohp6FAgXQ6m/67KYpwOnOmbZhKf1kTiwYr44DDGZv1Bq9cvSf8tEtx+nBPzw4hFvqre9jSfFDKbh7IzTaeXtrPdTs4nuEad9Fd+eS+t2f+p++aeXnpYscPn07th7Ph6eCYcWI8Lt82ajGAmiyQxItySVxUbs2imKPdfKtgc3FGrN0rXLHXJMSlKJFmlmIVHkE1R579M0DMAveE3H2G0gCNQkHv+woO0KavmL5aY7kLiYsv34ORSJIZiL9I/Mie3I/l9VMVrLqhrki1JqwjsgBcIQr6+6buTpvVJsUFpX6Is9ijrqpQtM61qCeHXPfnOYzJNuTIbjt2sYgns65sDE+PNGHx6PHw2ylHcbvU/mPSbA9Ck3fKq654FGuyqjqULE087GvSMRwDAoocHfFdA3h3nqP+iHJrKrS9O1eEy37FF2LNR7/fVOb7RkXO65Om7tP3sHPPnH5A/JG/v0r//CX/BmZJrzKv16geXNRnkrCHqf7SP3N+/Lp2Z9rqJV78er850tz0nBSk4L3h7YimlMPfOZwAAxWr7lPZMSEmrUmhvDxdWHIHpRq+jvvZun/5eEz/d80S3+euHcYRuMZdj0/aYvnFI58zlSxuw7CS8CxxJj9TIK+xsp9LJ8V3KUjC9XW6bnlRRekd6Fjg6pKh0ZKeqa3mwSdHPkfa0BHM1FSSgSbgeaF0hME92/yx88FrMNQPwe9BNVU818WrRAABe9eTN+b2te6rGO4G77MKCR5kKKNAFa/i8/ZxXgoTfED5s+hZBryjAKS6gKSJzPIax3l4bW8d0yeATGK4OYea6Ts2gx0GXcSc0jWirkRrDuoTuvfj8prAS6xT3B04WWr9edMsPmKdknPvrwr38wLkSM9dSICBg5gwekO3heSP4TOM2Zkuub1klMXCdycrQ58JWexfEx7/p5NJJ8MdBUJqko/RdJgtMa0pwdGpB+lmsu9/yTU1DjM2Tu7UTr8i5VqYBj2X5nosYnAXtxWswDiUIjF2YFtilaLzkWXhJs6FRec9bbPkrYLyYl/JxmMe+pfCMB4EXi828MtuW4jbljfGJ8y6BG9+z3FW7uYWWTH0nLnSAVsPkBDN3DkLZUmZy9CH7qnhS5KAYgtl+peiBuPjkRMiEey1COReYEv8v39J49knNnK1RhFYbojC+Qxnqb2TvSlt6kRPdgz8frJlTgdvAfQdGI+H76bbbiHMG/KFsx13Y5YhTu8AxaNvT/MLwmj6qNjmZmpIiAhFt6D0WaZs1vl5+KMLtHk8WPmeYpamSTTktHiXFNKqDd2CJ42CzvJaF86JlAdg2woYVEXgT2e9ZCNqs5g7w4SBlCZ8oUkM4OdcVc+exHm076JzFgDrVVFYd4HWj5apXKvH3OrjMlhZ54ZeO821z44ICKWGdrxfxwnKNMIde57CRIXlInur6A2wW7ribh2j5WG6+ICWCWWONAj2wKH4bQhJb9dYRrhN9YOTuViwUBZiASoDQDyl0toa6Jv7uP5kXzj111yb6NzLQYCH+i8o8mTuSIE0Q96hlimOmj8G5pTje9S04W4pTd5+Hc6S49PRuuBkpLkRviptTfPEpphHeJTi/OLmbPtg+InMEKDrjautTDUb3c2PEyscc3InTY3cxPKceF3qswYbZx3imu0m61/rGwZf+zHeWtIh3kHT8cko+5dB97/p61otyMTlfL4ECTW42OEQJc7zItwWlGIE5jytSMTkzQFepwe1uQQMAVCuJ4BOT4la9cXECUQm4mZnrTTJLDObNzaDZqQH2lE4yezW0k5pGyV3okt0qegoJFQkibn1QUwqZPoaSpRTu+hZKJ6XY3edRLinlnt6NmpJSJnpTauBOPpN3i7/87ao3f3B5WLlUu4WN7nA2+Y19cAwiZ1Q+hRvecszuZ+r4OjfYmpkx37eu3biXeYSuOOKzceMrIHrcz/hj8mf787PvAQ+s4O9DW/uz8bwsuq0t3lsn75sXhT3yfC15b3E2DVRQda2x2Z2S9mZ/9xDuteZyfQa1q/N/T9TNvn9mAOw7NDWOlfcFSqVhIFVZIRAcboI5NChsTwgA4C0EncJDjIEIMPindhDn1Heotmn72l3sHO3QDvlAFGsC3SwHdUX9X3MGNSZ9ffso2XR735B8fbhT3vBF793ia89R4DrQ8aU4QxpvWdEQrfWzQQh6cckIAS5taRsUMrA+Z3C4EeyM+DjNaM51n8/fIvnpa0DFccLr6606wMByZfYRYIfb2gCAujFF62j9ZPB5wMgvzFu5I/DLDwLzGF0ka1bv3in8+TC5mhVdfTBWrPzlXbs6dq2uoWEuWT1XzvSsxOHLnxFCwguKnO/hTr1XB4QBbiOlCutJwnFiohLR8xeTJZk/B6HVU2rZBBFXJRD7K3NgIjxnHgjxH+46Z87kT2pdMDIJIb5TeejrLM/l7x7PW/1dtCr6HQxHZEMW0SgbY/UOWPyt62P0pcSH0s3SXGrLTeR/hD8l4Ie3I9ddr2/sIvAUjsArBNl9DeJC0E7fgmwQdNfnIbc0puzsrkRjUK72YMRqfs4E0HpIe9Cvibiai8FfvgNcrf/gJ/G3W2H1+BnJrqzJAvFnph7xV6sVzQrX1JeBO45ELP2Tg39k0/0ppMCFjsmhjxulQ3Leuj9zezSUAOzk7fttoP2wPR51+YPc2P0MIU35trMb9FwhHeQGt7uhHhqo1et36qjeS9ji9o4AoDsL2yv3eg07cz3qE1qfXvbdKSDtISg1S93ekMpr0H40z2/6MTWpNJP4p0fefzSFrMDS/Y6ZNhiP7+jbf6OT3Q0cyOrv7wsfO9Z3+/R9vFc5l9p9KFl361yVXPVVglN6JEIL7qrPJw7gCkMVQkWMyaX8Rs13uOqPyBNjrYv7S5IgAmhTnDaV0B3S7i5Z1FfzqBxfFXZWBBF5JxfczCL3fEcAMJVFpw73eodFu/+IExPguRSez4BfHq7sWq2dnnOrdyxcT+9Icn09XA6wn+MyPM/xzvbYaU69W9AAgJxkPxdcEJzL5ktEAcHdW+Bhf20Ypl+LmkluA4McKIvS7DJu8jf5naLdpKukgmjcxGaKS0+662twxGfw0XAYdjTUzN4v2Eb2+6nPZUX+FugPH4bRTdO9Q+/wQvyB2WOvJGfbOacInqOUhgbaoqxjwq/jL5ZASSjnw9si26ycPzBg3UFPMeZxOUNP0WFIzrjzc+ceCmsf08cd35U2a1qF1YqE7S2J+1U20+eUuC369OK8LQdZd5Iwnz/4RWYCNLWJW7gz0p50KeQq2gsUMjdgrvWbC6tq3bnJNUHiofIKVg3+oO10FpDFXSk7OIN/3ehoamySWRNkZWV723ipLIhPwNGyssdeIk2WefuxvEwJvKocNjlWKEkAIXdNmqVWDz57Zk1y5UtJ5NfMEJSsmx+++2C+s2pRiIfq793fbeAHRHuo4T79t4H83DMbZhxI7sOhNveY/7b5Y6s/AxkvVEzr/X6+APWmPQ4icHeo7aE88ikv/7YCaFs/qPPZHQFOf2kMrmA+xEnO06V6Zgrp5NasUOb3wbIoWHGp2CatsT2t2Q8bsNVOYUuqr3O2qBi+1KhumzOeX8u+KKivELUjPKhEzaFAyjQnkKguItsyOJyBEhU6PFfXIZWzFQwAUBtzZgLF/kppRixQWZjFqQ8bDMnhdubXlMzB/rzUoLnQw56WZG7p3UkHTe8EL8PsU5xuEbJHOAMncz64JedyZ7CdPs9V41dcmMFYqGM0xS4GsQZtVvo1Ov+FL90VOQ5uI6a6b/xCKbXHKVhKHGJipq1aHbtQkTc85IpIiw4JXWvL1biFIvPwwnfmvJ7hFU0fXvSjLY/nvJhowLwQx5C5TkvvRNsatruqbBwh4/4Pt4uwO309UfKZURgcug6Y3WgbuXs1UMw1pmRpJ122sltI5DrjJzbT+tOTfvOVyeA5rqP637vwOHX9E3cB2/Hfgb26amBvrv5xXAeAFBVh0ddHeU1TYQLHPVT0rHecfkhp75iH0g+lfxTQUyx8uEPRU1hHOlSkbMf5AQD6+V5BRLukcfGWIQ0VKcsZB4TAcmxyYHu8f5cDaw9Rd6kt1DTZ8VBMV4i6wOcSuqEHbn/SYLcDEtY0OKG3YXPAjXoX9hDcps9jrz3D7exrYPtc8vrOtot3bntwPz5aOvXq1dOI7yyiPgWqeS6P1Y+P8I/Znk8E9Zg/oHvHitq7j/jqlZE4wrDSMkSu92ikPnY7nWNIvIZ/l2cd77LiRCLoZtAVsqkcFPpwK3ncR5+2r6lTRtDNoBMGoOHOgBImtiJ4vIYRkg32cByEMTchFlaa6vC/wJR4Nbz7Duw7Z9+KCJ0KgCGO5Xb0hBEsvXCxUv3uvnP2PUuE8Ww6LK/XY7wi2bOpaH2elvNrIqX6hasriux1CgLTwu4LK7zNLBVQLxwwOPM8VnppQH/1JIAjgGbzabYSukaqnSVlyUbdQ6Lzrtpn6e6JJ0bDmukIAObQouJzo8yOI+i/TH1muyJ7aeuAq+ib5DU1juo5wsaO/XFAMS6ueJJ1JTxfo9BavRUMAFiH3dm6n525/iq7rERfqZc7/Qt179lBt1nkEV7/IG/q11lyk4ng0z4r+ttbHzMjvNJnx77m3xELqjTfqOudFp3rhRvScRX3QMpuJ1qYXi6YNl7zc7NWuUZs1GUGm5VJge0VrFcDWpJwkAEZj55k0cjH7h7jk2fHPCmLZVMCRK6kLGYNB+PefJylKsdiy0MewFLzce3M7Jr9+XhmcRnholm6+O3w726r1Qe/953Uk1+zff8XFSmnW3lV+nJTKpXIX33vBoCdv6HH5loHv4bHQYmdGYnDyOW5mM6uXmfUyV1F+V7hc9oo+RKZ6wEAAMc4dDyNMZ4IwVZBojjzUbRonk/jQQZ2z3owAAAdA9Qus8aLdjmd8VnEHWG8481rgk7B/nWUUEr27gCBCqVLJGQYIYhFIbPtYuw6ky18jKbGtdj0MZqpcMF2z/5M25lQx+Ol7WUQ69lyULu8G115T8QSpqr0p9u7Qmru0DVuuOko0tfa7QgBwHGDjlXh4dlLOyXRv1mUHr/wo8C5NsHN9RWLDNoC++NlN7gk0D04iK7t/7hoxGn29SqWaaSvSN7opyErqg6T1pPnlxFKu6GHB8PpwAEARpXJKT3MVcf7vCHhFRaiwKu3Tc4VaKMkar3WDADYES2yj5U9Ga8E2WK9bzL414WF1/KhdxU4yh/TgGj3X6UJWLnXT1E01SdHUiem1tpkxHRbl2maxny+g8ytve/ZbrY7v3fLyG5R+0MwHkocHSkelwg+G6nULxjBREdCBp01DPjoAm8st3ImexPyqLoX+ZCpqrb+m6piCa1KH97gzOOHf/6vrofZ/815yD3ZQaWS3tM/b670vQNL/X+yJUOkXoG0GRT5PfdKowVI5IrgggTSeky7UpG/4KnQLWMiaZOiPXqON3Pnf18N3i1vIOxhk+nOglMkMIHhybfchkjWRsmwaFq87qzkPJ7QlDNyBM1z986hkBqqSLgym9Wv8tjWePDwKjP+TnnA6kmeRwCnN4A0lVAKqXaWlOU1op7aCzp03lDTgfqmsSQNd94kANhBV/WjD413Q5f+60J4Qs7hF7MjSHrvS+i293qN6tCzmHlzdLCfiwFFuuGUwgCAQ1siNsx88GvblvPB9+q8yEfn7PjXgxfFjT7A8djqjEHGbUuZy2jX8hxEe1zwBCbDz7fHuY2BW1gPBgBskg+xC3aqEpl5XIIQDmcs7ezuM71pzxuEGMePzTkLFMikbWfx9Ii9MwlBUADqU/UxqCvUN+hb0AjqW4cLaB6NPoY6oIYG6sJlMGd6oCHlN58GfmuEIt5z2igw45XtWUnQShZXAgAAF6DjdoQCzAlBkSBNwZwN4IxAVwzV6AgDAFwLpsteLZcLv2V0knQhgAt4KDj588SDJDzs7gY0fDsm0ZUrdDmwUVYnQaa4ZAM+Yq4RJzN1YyMQc3Iu00Q5T7gwrY2ejsXO0MPCWU9vy9jhOAghUbCEzSL2hkuRIzcwnS6NKWGAdGaL1LbjrHPRf1ubF9WjFUvax6YreXv6aZZKPziXnzlXtNcbaek0ek3JQ01Ck7Tsn8P4C6QFPf2DtgbMDxs+qj1I41kFdpy3kX+TiT717DfDLXV9MyaDUZA4mIh90pdROkJaP5I9vPSg6HAUxNV6MN2qtSlXzGHS7cIaQpe9IXvS/3n3kGe7r0/dumlUoZc2nAbufEdB3xaR55axY+kccFUdOADAVcND2xcsPIAV4kQaXm0jAODZ7MEYGANeawYA0JTd2pM1uWww1t1wvzsV3x8bdPetB50r1Oj1xqgCOHgeOYVGgNufdMhVESTuW4e5oSt9jRFBd/UtZhVyt8IFs3mhTUAc2Rj3ArFJGWwLOnjOeOW+6pAgSN1EavSmohZptVb09BTszDW196RTBE0JBGszlzY0q1or+biPTVF4JwEAYMrXXSw4l5+VV/TXjTrplE6mhOOEvSiYTnnOuB6ulVkVA6O+a0yfKzZIum0JbHhVHrfchsx4o3RiZG9vsN6FBToxDM9eBMK716lfHm69Bp3RZOGI7n6GcDneis2IMaVTL8ZyRNhz56d6LG/1JM8jgNMMQBwR5DjE2llcli6IHmTR2UVfbaAh7mRUiDz/9hEApGLpuvpxFp12w5z+qy5opm92i3eMwT8b6bO+FvR6DGa8rn12zax3P+DEyUEFptlAn+1jAwNHe6nBZGVSJreRi1cchGWLkmkHeOG0xe2byY8OXrPat45UUEapdQKmx7M0KHiYWmf6yt7AU42/J27us/Gqjlcj9roLPmXrHnieFdNVxWOkV2Vwlcsn5dHy+yAo/qTOY0HUHw180fd/9f23N845uqV+vl2H5qljZ3I/IR1Hc1r+6dNu+pR/seJTHxXv7WLb1G2yyy4b4WNGD4iboUQ4l+QyeivIK7OJU2nJ5lqgqMHKnacpUbbBQlBDiRDR7WSAQLSdC1gO0UEEAztiTrEdIzG4ghmW6cHbpPem24NvrJn13eX3kN675c+SvDkb0dVaAADgCNWwOxMomAnuzQ4nO8c5wTwCkMHPrXOcSkbtXA0GAGwy410Bf80ZXy3MWChM0ksJF2J5IErhTIueEaVuY/eJxNadNDq4+Mup7oV6KsVCoLP8A02DTmbYaNp2LkOh6YxkGDp7HL7j2OOxWi/YiVxi7SVR1aEU0wgK6zeKIJamOyAAyBqmKA83jbZ2wv6lGybtWE4LlXEWY0N3u+O5g7KE7kgo1ez/QoQOel29adPWCm/h1Wl8uRfEx7pJ5+Izclm3ABI1dnQlDgBg46yDIdd464tJ1+s4XjUM8AoMCesURUeevQOJ7TIDAMSCwX4e4yvw4bk473crUgp3qLvk5tguQUUPG7y0/l1DzLRrKRvgJqV8opvWmDWQ+7kUHkyv298aiKYgURFi4mw0DVnrXFwDiRIM7hMbK44GI7Ykg0cHln7BpDR0N0sGUYRCri1RYG4bPbd8F0X1otBLaHCqfFEHi6ev6yMAuCzYMXvsHmaFOHXXy2k4JJlcY9KgzTsvSiZglptlagnurp8Kq8CWe6PtGrC6/n7bDebgrbi6xcdouCmc/mpVGW6B6grCyR/wl/SFBHCiB0iuhLxIvbOkLadZ91DosrOiUHsySqWhZj8CgCW6ih7HeqFD46AQsyPkcyifcZbQc9GwmgD0H+h4U/psx+4ZgLSTQwSGw8/HJWcycAbrwQCAuXw9V82I9atkUQqnOB0rovc1vE36x16u/lGVrxblUREZa62OVrRq2Vmb0Fj9l+wq+fNuf//xdz72aXgrr9HLQHnsTlcNFSE1cjDdJmfK86sagzwG3G43GABwpRiAPX8BZ4GXLC67Se0CM/Ln7RJuw8N+dmAJ787NQFMiJHPQNzZm9NTAENZlth/eCZEEA+ZorCF2WEVjszKWBcVnGvCVbtx6/zDh7FPQXEOKzjiqfzLsDoGQD54YCzJnnH1hpdcRafvCvlBQBO6L7Z6/CZixq3IqRimOnqPCdWEAwND46F1wBeDciNNipZSijT8vbGioJWxq41y0PA9Y8u4MfKky/GUNLbCQQXBSTmbmHE5UcS7LhjEEw4pwU8HOlhvuJKDdGtLk1LXDI0/8DGb/EYttmd+khTn+/nv2C6i4c3xKDavab4S2uFDdAQEAvLAnDFHc0LSkuY0oXNiylV1/jzHvawlm737K4CU4+NBzbPweogJbMV6REhroijWeS94uE3fR2AWlqgG95WdpKNkSB4roxsPpTpbS/OSEY9cH2vQk2BefEWs7gl51nQAAveNY7UwXvtvnVM7CvoxLmAjqkYXaAcnJ6tECKTLbKqjtLjMAwEs42562a4BOyTGWAN3ePxch93zoHgPVeWN8Axw+j8aNttJuf+HtpkzlBCTe3eCknc05cC7O5c5ga8OFVA2d6oRGQZtOEUFwwIEhnjsxYTDPw1U5fpPaJcO2Zczx9+9zoQ8P4cBNBS0ioFryQNji+nsgcJXramohchxBt5Qnq94lxu5aAQDAXJCTrV4YaYi7akC2XbyhLJpoX2N0TRtHL4qnwHg3kZTX7ENn/w217NHv9+HWf+7BZi/I8eSTwpDfj/vk4PIcHtWHMJceaeu2QIg7ZfEFatPCcKXgLcfBm0bwrfLSE4vkV1H9lAaUi0uFNiDayhC9hbogDzbzfnbrwvPsYqvkIc2ulNXVYABAsp+rtQmp3szDmbooHYc6PYNekMSv2xi/kqHfmPU+9a6LyNhnd3yiQ3vTGXaf3QlgE1xwTF+hq+ib2Rbqal0YAHDt/jEVf4F0IBGLmwy8DFi7Re+yHT4Y7fmxVbRAmVxTMqj8tNKzyT2YEhcGIWTX9lwcsZA+hj1BrLRzIXrhdESsoWAgsK520sT2y0jRs9nCnpOZfa2X/Bx8xsfMj3z7d0uHv3TR5ht+RjqaQRM3QSzlMYfxljEl+wpK4PYcx/dR5rer7yGPx3XPDIY5A5izC5wtXMJVnFmY/kLF1NY6M0McA4NuCm4y48EX4ORHj26tzGydnS+FmzMXkKCBPsv7UANzc0UYADD5uq7qiHU3mnRayBGYAcxyONd8se7HvrTnTYXiGw97ZtxPetJqMxeqGjz8vQveClHnhQJBVJ6lKyHRfhD4hQTWhhj/JMTphYa/+1xrZi6VMBg6Vw9LnoB5Fqpm+qnaFfsZfFp+7WbraeGPOc6t7COYp3BhCLItQ1tIH7NoQlvpvmVhQFvDcGERoRfbAdBqkOTat9ogdnXibuxDDzZDVQ5BVIW4nmoRJ6WsAs1lGONKkVFJiuFpbE97/1wFyKhuN/BtOE2OeFPZMdBl0T856Hq8uZ2CeJ3C7TiLxtQ7DOyiQ242cDNSF8ig54LixAFmp61tw8y44qnlE5i9TbI1sltGyTv78FYUuDes1Jj9G9EFHu2aM4U/97rSr9TjWOr6+coHEXovBEQx6zEJdMgkwJfsWaefF+jJGj348gbOPhE4qPzbQIXtAfe0SiDKIr5Vf556vfna5OuJ9ykDAd9LXrePb/UvBMZMn5/jX/QbkNR63uKebfK9133eTSgXTbw/U2WxMJ40c4CEbp+6GzWvILDeZFFenE722/jbBH1FVbzGSm2nxtoNgOvYAQBAaJyxL+YA+gJOExaedYJhyeqtI3Ix7RTKWmsGAETEK7W0jUGQfGwGFNT6NwEVeNGjZbxw55miKhTwVQjzXFoIVPh5xViMVcBnx2J/zo55fy7yZM0hdKtP+zo7wuOuIH4hwrRK6T5OEnYBUCptb0Io6HEuUY82DDFAwBBhp1iczyvMbH3i57Bm50EpoSeXsaWgZfEXHZlhcOKN2CqO8pw5L4RyAh0ghwaNa4sHYFiiZ93ANjdVFgfYmjCji6DC1Qa84SJbFgCArjHV/fbeDW4ROjbcUFdmk2wKEMfaYFQsyNseQkkdoGBrs4q3IrGq47rr7nahl2hXFBC9jJ19Muhjtx8jbT51xD8bcTphH48HdVf3X7zGA/szYCfljGdTF0fRdPN83a5o4FXWgwEABxnY2sb6Ba5tUTTNKeT30dwe/VRd0i/+ekf2etfPrnFoc0KStMfjlI59U4Grekddh7UBvBGDUh0AZ35OtYJGBpK1HgwA4MmA8FoMBvZNnVzq5VGlHcbH+alpm8+rbv+JgXVYjmJOcecicH41dfOJ4BvME7OQcNNXSSp+JNxC/t16PNhOLA2bwpt5XBFU7j2dmog9AYcUhKLiKdvgLCUVWZv1mD04PiND5zGDuTp+52f40K+ycKj2j1KT3xjx9YQWNJgwrr4RUk0XBIkoJyMNSuxb5DqUKBhkdOHSWp4LgDRkmB60fJaxGo+3soqPiuq0kfXCvDkVP7wJHXNIuKO4MX/2qOuexgxI3DUAACQLXMnqXHrCHQOuRwreNgk7Fz4TApPLyHOXV6+U6ipkdTUYAHAyW8Rurmsj9y2kIGcZt0QaVUnu1KK33RVjqC17tWBlopItgzUsOmeMUl7U7AsH2lURSqXDjAg52TH2dFQ5mTOg49i5nAMddwTDedDnuwDo5kr60g5obxuQmyWJTLoOlRwrkPLGEPvkUqgaXLL9ruH8O8P5t4XzqxjnH8S53AhTav2GsyaazojyiJHtdxXn3znOvy2cL1vC+QdxrqYEK7VOx5nIXHDIYEi3NAn6t0bOQk23WzF1bRMpwm07CyK9AgaxoN6YbEC8XOAm+JgCyi3npwFvNzv2d3foCNT+UI2q+8bUgRZ599RHzsX5ezd+pKZMNWFeu+g6XQTtaB3gVfqGfNpj9c4Hje9Qny2WqTcVqNr+1WkY5Vcj73dVxMVrci0XeC2mtUf7BZ9T0AiPs7lu66I1nrJ1U4Cb1wZ3WOH/8ZsO43YviwYmlIRLsm9VOwtefRLMnczeI7hUhxkAcAzEFgbaiCFgrUXJdZ8Zxyn6x9IU1NQnr2b93IpsKqym9e9uXNOGvetKpoa5rFC9bAxx6nyuHErnHWWhQqqwSZncYGZPruzQp26k0/ZWylinboPzGJfx42C01C/+Cy2vcMp7usoxSn2VfmfQZa+HvZ0NMSqN0IJk0kOANhqt+prJHDTucy4zvec8RGN2uDDDmvSMGDDNCegZXxA8F0FbLloE5wZIjtShF2LiTYW7hnii6FGnQreTWr2hijEEpYQGsi3YTXVr0tBc1wIAgEFrdVPZFyG0eMRVy3SDGFwrcQd5qjYY3wSamfaibKk7yaAFs1mtmYlW8Ya7k5BusepNoq0USLcovlm/FZl0G7umxK8POm7+LfJIipE7SxbhC5A69fpD+WxOA5/fa4vS6J8nAr3XpY87nwwIaGWCnQeXRRFci6Ffl5L1MNejNWEAwLUMEMDWNVWNcmE09R6hh/x162HgFyg+pV3QUVVqxc6AKniBNJpahzXj1ohVVRVUJtqtoDc9vBkFXhAGACjHDi4xaCKLzdnscHVeO8Ob2enailqlqFE3Gdzy8JbzilmshOxuQ2aixMq4bZiKUhm1i4VSNxo0XI76sgJPHGiOOGrBvNVMwTzGO8+tl+t31UsrCwONOtr1AwDANKOxPNMoVHNQRIMqtPVSjVE1z7UrhvSr6s5aZaDVSYpKjXVsw70F1c5W5NKlyozm8jwps+uV8MrseBWFDDViBDZIgoW46zO/oc61zApPdC4XgCcJhgv50sUSB1q5zt7Ym2rGRjOpNSfaA6eOSx1skHpIVumGW00ikU8C3949lqeOIUvPKeeklrBhSb3BvvfYFdnHilqecFf2To/dpV3auC61XA9mKmpGIA4Npk727xDE9rXNWTS77SxUBDvljKVFq6u4G2/HuPI8Fu6O+0MV+irn3rlh2pF7SOXWF2yE88V5BzB1XKwFy4ip0+768UquW38huIdcbAAOWiqkrAMAHCCOERBpGGCl9aAQaY9chBts0QwAOCyiJ9sSFGq2DdDb/+riv96xuCTaJqnF3jH61s7/4C/g30BjxyzTOZPV8VR82rM8wdReEHgpZl1/Hm/CVXqS89cqh0/wYdf3B0nVRgiPnucvWclWlgrJqpphJBnQKnczNGpsX0aonQbDDvikjL07znQLbjsM3kKBXXnesBcUIXUig4O+vpya6I7zADtoEpno5roqNOjMjTk0icTxM11wb6nS7MhJfGTgzbvcuQAADLb2/p+NIK4ePzsH95YK9IhaNB2MJB+HVcf/Ccv6XmWX5xvW1cenJz9aL38vfthXYaFNJl0FXqUVpXe8J3W4nNY1K9NgCtfeK4JibNGwbv8bqG1rP9tbDxsoNP8duEp1udO0DYPfALj1gOAzNbesDPXqDkqZ8Z/N4ihicXQJFa8LAwB2iLq5fgA=`, `base64`)).toString(); + patch = require(`zlib`).brotliDecompressSync(Buffer.from(`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`, `base64`)).toString(); return patch; }