diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 193b717b36..1ae66e3eb6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -28,7 +28,7 @@ A clear and concise description of what you expected to happen. If applicable, add screenshots to help explain your problem. **Environment:** - - Lit SDK version (including the network (ie, "serrano") if different, and type - browser or backend) + - Lit SDK version (including the network (ie, "cayenne") if different, and type - browser or backend) - Node version - Framework (React, Vue, Angular, Svelte - just Plain HTML!, etc) - Specific tooling (Webpack, Vite, browserify, etc) diff --git a/apps/demo-email-sms-auth/src/Otp.js b/apps/demo-email-sms-auth/src/Otp.js index 9ac4d4b1a4..79ad2ba74d 100644 --- a/apps/demo-email-sms-auth/src/Otp.js +++ b/apps/demo-email-sms-auth/src/Otp.js @@ -10,7 +10,7 @@ import {newSessionCapabilityObject, LitAccessControlConditionResource, LitAbilit export function Otp() { let [state, setState] = useState('start'); const litNodeClient = new LitNodeClient({ - litNetwork: "serrano", + litNetwork: "cayenne", debug: true }); const authClient = new LitAuthClient({ diff --git a/apps/demo-encrypt-decrypt-react/package.json b/apps/demo-encrypt-decrypt-react/package.json index 043d0f6f34..19efb2041f 100644 --- a/apps/demo-encrypt-decrypt-react/package.json +++ b/apps/demo-encrypt-decrypt-react/package.json @@ -4,13 +4,18 @@ "private": true, "dependencies": { "@lit-protocol/lit-node-client": "^2.1.158", - "@monaco-editor/react": "^4.4.6", + "@monaco-editor/react": "^4.5.1", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/jest": "^29.4.0", + "@types/node": "^18.11.19", + "@types/react": "^18.0.27", + "@types/react-dom": "^18.0.10", "react": "^18.2.0", "react-dom": "^18.2.0", "react-scripts": "5.0.1", + "typescript": "^4.9.5", "web-vitals": "^2.1.4" }, "scripts": { diff --git a/apps/demo-encrypt-decrypt-react/src/App.js b/apps/demo-encrypt-decrypt-react/src/App.js deleted file mode 100644 index b9e3ffd049..0000000000 --- a/apps/demo-encrypt-decrypt-react/src/App.js +++ /dev/null @@ -1,331 +0,0 @@ -import './App.css'; -import { useState } from 'react'; -import LitLogo from './LitLogo'; -import Editor from '@monaco-editor/react'; -import { benchmark } from './utils'; -import * as LitJsSdk from '@lit-protocol/lit-node-client'; - -function App() { - - // ----- autogen:app-name:start ----- - const [appName, setAppName] = useState('Simple Encrypt Decrypt'); - // ----- autogen:app-name:end ----- - - const [npmRepo, setNpmRepo] = useState('https://github.com/LIT-Protocol/js-sdk/tree/master/packages/lit-node-client'); - const [demoRepo, setDemoRepo] = useState('https://github.com/LIT-Protocol/js-sdk/tree/master/apps/demo-encrypt-decrypt-react'); - const [lang, setLang] = useState('json'); - const [data, setData] = useState({ - data: { - name: 'Lit Protocol', - description: 'Threadshold cryptography for the win!', - } - }); - const [str, setStr] = useState('This test is working! Omg!'); - - const go = async () => { - let code = `import * as LitJsSdk from '@lit-protocol/lit-node-client'; - -const litNodeClient = new LitJsSdk.LitNodeClient({ - litNetwork: 'serrano', -}); -await litNodeClient.connect(); - -// { ms } -// { Loading... } -const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain: 'ethereum' -}); - -const accs = [ - { - contractAddress: '', - standardContractType: '', - chain: 'ethereum', - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '0', - }, - }, -]; - -// { ms } -const res = await LitJsSdk.encryptString('${str}'); - -// { Loading... } -const encryptedString = res.encryptedString; - -// { Loading... } -const symmetricKey = res.symmetricKey; - -// { ms } -// { Loading... } -const base64EncryptedString = await LitJsSdk.blobToBase64String( - encryptedString -); - -// { ms } -// { Loading... } -const encryptedSymmetricKey = - await litNodeClient.saveEncryptionKey({ - accessControlConditions: accs, - symmetricKey: symmetricKey, - authSig: authSig, - chain: 'ethereum', - }); - -// { ms } -// { Loading... } -const toDecrypt = await LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' -); - -// { ms } -// { Loading... } -const encryptionKey = await litNodeClient.getEncryptionKey({ - accessControlConditions: accs, - toDecrypt: toDecrypt, - authSig: authSig, - chain: 'ethereum', -}); - -// { ms } -// { Loading... } -const blob = LitJsSdk.base64StringToBlob(base64EncryptedString); - -// { ms } -// { Loading... } -const decryptedString = await LitJsSdk.decryptString( - blob, - encryptionKey -); - -console.log("decryptedString:", "Loading..."); - -`; - - setLang('javascript') - setData(code); - - const litNodeClient = new LitJsSdk.LitNodeClient({ - litNetwork: 'serrano', - }); - await litNodeClient.connect(); - - - // --------- NEXT STEP --------- - let authSig; - - await benchmark(async () => { - authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain: 'ethereum' - }); - return authSig - }, (ms, res) => { - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// { ${JSON.stringify(res)} }`); - setData(code); - }); - - const accs = [ - { - contractAddress: '', - standardContractType: '', - chain: 'ethereum', - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '0', - }, - }, - ]; - - - // --------- NEXT STEP --------- - let res; - let encryptedString; - let symmetricKey; - - await benchmark(async () => { - res = await LitJsSdk.encryptString(str); - return res - }, (ms, res) => { - encryptedString = res.encryptedString; - symmetricKey = res.symmetricKey; - - - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// [Blob] { ${JSON.stringify(encryptedString)} }`); - code = code.replace('// { Loading... }', `// [Uint8Array] { ${JSON.stringify(symmetricKey)} }`); - setData(code); - }); - - - // --------- NEXT STEP --------- - let base64EncryptedString; - await benchmark(async () => { - base64EncryptedString = await LitJsSdk.blobToBase64String( - encryptedString - ); - return base64EncryptedString - }, (ms, base64EncryptedString) => { - - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// [string] ${base64EncryptedString}`); - // code = code.replace('// { Loading... }', `// [Uint8Array] { ${JSON.stringify(symmetricKey)} }`); - setData(code); - }); - - - // --------- NEXT STEP --------- - let encryptedSymmetricKey; - await benchmark(async () => { - encryptedSymmetricKey = - await litNodeClient.saveEncryptionKey({ - accessControlConditions: accs, - symmetricKey: symmetricKey, - authSig: authSig, - chain: 'ethereum', - }); - return encryptedSymmetricKey - }, (ms, encryptedSymmetricKey) => { - - console.log("encryptedSymmetricKey:", encryptedSymmetricKey) - - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// [Uint8Array] ${encryptedSymmetricKey}`); - setData(code); - }); - - - // --------- NEXT STEP --------- - let toDecrypt; - - await benchmark(async () => { - toDecrypt = await LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ); - return toDecrypt - }, (ms, toDecrypt) => { - - console.log("toDecrypt:", toDecrypt) - - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// [string] ${toDecrypt}`); - setData(code); - }); - - - // --------- NEXT STEP --------- - let encryptionKey; - - await benchmark(async () => { - encryptionKey = await litNodeClient.getEncryptionKey({ - accessControlConditions: accs, - toDecrypt: toDecrypt, - authSig: authSig, - chain: 'ethereum', - }); - return encryptionKey - }, (ms, encryptionKey) => { - - console.log("encryptionKey:", encryptionKey) - - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// [Uint8Array(32)] ${encryptionKey}`); - setData(code); - }); - - - // --------- NEXT STEP --------- - let blob; - - await benchmark(async () => { - blob = LitJsSdk.base64StringToBlob(base64EncryptedString); - return blob - }, (ms, blob) => { - - console.log("blob:", blob) - - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// ${blob}`); - setData(code); - }); - - - // --------- NEXT STEP --------- - let decryptedString; - - await benchmark(async () => { - decryptedString = await LitJsSdk.decryptString( - blob, - encryptionKey - ); - return decryptedString; - }, (ms, decryptedString) => { - - console.log("decryptedString:", decryptedString) - - code = code.replace('// { ms }', `// { ${ms} }`); - code = code.replace('// { Loading... }', `// [string] ${decryptedString}`); - code = code.replace('"Loading..."', `"${decryptedString}"`); - setData(code); - }); - - - - } - - return ( -
-
- -

- React Demo for: {appName}
- - @lit-protocol/lit-node-client repo |  - demo repo - -

- - - - - - - - - -
- -
- { - setStr(newStr.target.value); - }} /> -
- - -
- -
- -
-
- ); -} - - -export default App; diff --git a/apps/demo-encrypt-decrypt-react/src/App.tsx b/apps/demo-encrypt-decrypt-react/src/App.tsx new file mode 100644 index 0000000000..e22064fc27 --- /dev/null +++ b/apps/demo-encrypt-decrypt-react/src/App.tsx @@ -0,0 +1,196 @@ +import * as LitJsSdk from '@lit-protocol/lit-node-client'; +import Editor from '@monaco-editor/react'; +import { useState } from 'react'; +import './App.css'; +import LitLogo from './LitLogo'; +import { benchmark } from './utils'; + +function App() { + + // ----- autogen:app-name:start ----- + const [appName, setAppName] = useState('Simple Encrypt Decrypt'); + // ----- autogen:app-name:end ----- + + const [npmRepo, setNpmRepo] = useState('https://github.com/LIT-Protocol/js-sdk/tree/master/packages/lit-node-client'); + const [demoRepo, setDemoRepo] = useState('https://github.com/LIT-Protocol/js-sdk/tree/master/apps/demo-encrypt-decrypt-react'); + const [lang, setLang] = useState('json'); + const [data, setData] = useState({ + data: { + name: 'Lit Protocol', + description: 'Threadshold cryptography for the win!', + } + }); + const [str, setStr] = useState('This test is working! Omg!'); + + const go = async () => { + let code = `import * as LitJsSdk from '@lit-protocol/lit-node-client'; + +const litNodeClient = new LitJsSdk.LitNodeClient({ + litNetwork: 'cayenne', +}); +await litNodeClient.connect(); + +// { ms } +// { Loading... } +const authSig = await LitJsSdk.checkAndSignAuthMessage({ + chain: 'ethereum' +}); + +const accs = [ + { + contractAddress: '', + standardContractType: '', + chain: 'ethereum', + method: 'eth_getBalance', + parameters: [':userAddress', 'latest'], + returnValueTest: { + comparator: '>=', + value: '0', + }, + }, +]; + +// { ms } +const res = await LitJsSdk.encryptString({ + accessControlConditions: accs, + authSig, + chain: 'ethereum', + dataToEncrypt: '${str}', +}, litNodeClient); + +// { Loading... } +const ciphertext = res.ciphertext; + +// { Loading... } +const dataToEncryptHash = res.dataToEncryptHash; + +// { ms } +// { Loading... } +const decryptedString = await litNodeClient.decryptToString({ + accessControlConditions: accs, + ciphertext, + dataToEncryptHash, + authSig: authSig, + chain: 'ethereum', +}); + +console.log("decryptedString:", "Loading..."); + +`; + + setLang('javascript') + setData(code); + + const litNodeClient = new LitJsSdk.LitNodeClient({ + litNetwork: 'cayenne', + }); + await litNodeClient.connect(); + + + // --------- NEXT STEP --------- + const authRes = await benchmark(async () => { + return LitJsSdk.checkAndSignAuthMessage({ + chain: 'ethereum' + }); + }); + code = code.replace('// { ms }', `// { ${authRes.duration} }`); + code = code.replace('// { Loading... }', `// { ${JSON.stringify(authRes.result)} }`); + setData(code); + + const accs = [ + { + contractAddress: '', + standardContractType: '', + chain: 'ethereum', + method: 'eth_getBalance', + parameters: [':userAddress', 'latest'], + returnValueTest: { + comparator: '>=', + value: '0', + }, + }, + ]; + + console.log("NETWORK PUB KEY:", litNodeClient.networkPubKey); + + + // --------- NEXT STEP --------- + const encryptRes = await benchmark(async () => { + return LitJsSdk.encryptString({ + accessControlConditions: accs, + authSig: authRes.result, + chain: 'ethereum', + dataToEncrypt: str, + }, litNodeClient); + }); + + code = code.replace('// { ms }', `// { ${encryptRes.duration} }`); + code = code.replace('// { Loading... }', `// [string] { ${encryptRes.result.ciphertext} }`); + code = code.replace('// { Loading... }', `// [Uint8Array] { ${JSON.stringify(encryptRes.result.dataToEncryptHash)} }`); + setData(code); + + // --------- NEXT STEP --------- + const decryptRes = await benchmark(async () => { + return LitJsSdk.decryptToString({ + accessControlConditions: accs, + ciphertext: encryptRes.result.ciphertext, + dataToEncryptHash: encryptRes.result.dataToEncryptHash, + authSig: authRes.result, + chain: 'ethereum', + }, litNodeClient); + }) + + code = code.replace('// { ms }', `// { ${decryptRes.duration} }`); + code = code.replace('// { Loading... }', `// [string] ${decryptRes.result}`); + code = code.replace('"Loading..."', `"${decryptRes.result}"`); + setData(code); + } + + return ( +
+
+ +

+ React Demo for: {appName}
+ + @lit-protocol/lit-node-client repo |  + demo repo + +

+ + + + + + + + + +
+ +
+ { + setStr(newStr.target.value); + }} /> +
+ + +
+ +
+ +
+
+ ); +} + + +export default App; diff --git a/apps/demo-encrypt-decrypt-react/src/index.js b/apps/demo-encrypt-decrypt-react/src/index.tsx similarity index 96% rename from apps/demo-encrypt-decrypt-react/src/index.js rename to apps/demo-encrypt-decrypt-react/src/index.tsx index d563c0fb10..db4d64356e 100644 --- a/apps/demo-encrypt-decrypt-react/src/index.js +++ b/apps/demo-encrypt-decrypt-react/src/index.tsx @@ -4,7 +4,7 @@ import './index.css'; import App from './App'; import reportWebVitals from './reportWebVitals'; -const root = ReactDOM.createRoot(document.getElementById('root')); +const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement); root.render( diff --git a/apps/demo-encrypt-decrypt-react/src/react-app-env.d.ts b/apps/demo-encrypt-decrypt-react/src/react-app-env.d.ts new file mode 100644 index 0000000000..6889c6b376 --- /dev/null +++ b/apps/demo-encrypt-decrypt-react/src/react-app-env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/apps/demo-encrypt-decrypt-react/src/reportWebVitals.js b/apps/demo-encrypt-decrypt-react/src/reportWebVitals.ts similarity index 75% rename from apps/demo-encrypt-decrypt-react/src/reportWebVitals.js rename to apps/demo-encrypt-decrypt-react/src/reportWebVitals.ts index 5253d3ad9e..49a2a16e0f 100644 --- a/apps/demo-encrypt-decrypt-react/src/reportWebVitals.js +++ b/apps/demo-encrypt-decrypt-react/src/reportWebVitals.ts @@ -1,4 +1,6 @@ -const reportWebVitals = onPerfEntry => { +import { ReportHandler } from 'web-vitals'; + +const reportWebVitals = (onPerfEntry?: ReportHandler) => { if (onPerfEntry && onPerfEntry instanceof Function) { import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { getCLS(onPerfEntry); diff --git a/apps/demo-encrypt-decrypt-react/src/setupTests.js b/apps/demo-encrypt-decrypt-react/src/setupTests.ts similarity index 100% rename from apps/demo-encrypt-decrypt-react/src/setupTests.js rename to apps/demo-encrypt-decrypt-react/src/setupTests.ts diff --git a/apps/demo-encrypt-decrypt-react/src/utils.js b/apps/demo-encrypt-decrypt-react/src/utils.js deleted file mode 100644 index 03a6932743..0000000000 --- a/apps/demo-encrypt-decrypt-react/src/utils.js +++ /dev/null @@ -1,7 +0,0 @@ -export const benchmark = async (func, callback) => { - const t0 = performance.now(); - const res = await func(); - const t1 = performance.now(); - - await callback((t1 - t0) + " ms", res); -} \ No newline at end of file diff --git a/apps/demo-encrypt-decrypt-react/src/utils.ts b/apps/demo-encrypt-decrypt-react/src/utils.ts new file mode 100644 index 0000000000..024b12663d --- /dev/null +++ b/apps/demo-encrypt-decrypt-react/src/utils.ts @@ -0,0 +1,15 @@ +export interface BenchmarkedResult { + duration: string; + result: T; +} + +export async function benchmark(fn: () => Promise): Promise> { + const t0 = performance.now(); + const result = await fn(); + const t1 = performance.now(); + + return { + duration: (t1 - t0) + " ms", + result + }; +} \ No newline at end of file diff --git a/apps/demo-encrypt-decrypt-react/tsconfig.json b/apps/demo-encrypt-decrypt-react/tsconfig.json new file mode 100644 index 0000000000..01b3dee573 --- /dev/null +++ b/apps/demo-encrypt-decrypt-react/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx" + }, + "include": [ + "src" + ] +} \ No newline at end of file diff --git a/apps/demo-encrypt-decrypt-react/yarn.lock b/apps/demo-encrypt-decrypt-react/yarn.lock index 45a8cd02c1..c5c79deb46 100644 --- a/apps/demo-encrypt-decrypt-react/yarn.lock +++ b/apps/demo-encrypt-decrypt-react/yarn.lock @@ -4,17 +4,17 @@ "@adobe/css-tools@^4.0.1": version "4.2.0" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855" + resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.2.0.tgz" integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== "@alloc/quick-lru@^5.2.0": version "5.2.0" - resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== "@ampproject/remapping@^2.2.0": version "2.2.1" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz" integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== dependencies: "@jridgewell/gen-mapping" "^0.3.0" @@ -22,33 +22,28 @@ "@apideck/better-ajv-errors@^0.3.1": version "0.3.6" - resolved "https://registry.yarnpkg.com/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz#957d4c28e886a64a8141f7522783be65733ff097" + resolved "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz" integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA== dependencies: json-schema "^0.4.0" jsonpointer "^5.0.0" leven "^3.1.0" -"@assemblyscript/loader@^0.9.4": - version "0.9.4" - resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.9.4.tgz#a483c54c1253656bb33babd464e3154a173e1577" - integrity sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA== - "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.8.3": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz" integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g== dependencies: "@babel/highlight" "^7.18.6" "@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5": version "7.21.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.7.tgz#61caffb60776e49a57ba61a88f02bedd8714f6bc" + resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz" integrity sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA== -"@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.8.0": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.1.0", "@babel/core@^7.11.1", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.16.0", "@babel/core@^7.4.0-0", "@babel/core@^7.7.2", "@babel/core@^7.8.0", "@babel/core@>=7.11.0": version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" + resolved "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz" integrity sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ== dependencies: "@ampproject/remapping" "^2.2.0" @@ -69,7 +64,7 @@ "@babel/eslint-parser@^7.16.3": version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.21.8.tgz#59fb6fc4f3b017ab86987c076226ceef7b2b2ef2" + resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.21.8.tgz" integrity sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" @@ -78,7 +73,7 @@ "@babel/generator@^7.21.5", "@babel/generator@^7.7.2": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.5.tgz#c0c0e5449504c7b7de8236d99338c3e2a340745f" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz" integrity sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w== dependencies: "@babel/types" "^7.21.5" @@ -88,21 +83,21 @@ "@babel/helper-annotate-as-pure@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz" integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz#817f73b6c59726ab39f6ba18c234268a519e5abb" + resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz" integrity sha512-uNrjKztPLkUk7bpCNC0jEKDJzzkvel/W+HguzbN8krA+LPfC1CEobJEvAvGka2A/M+ViOqXdcRL0GqPUJSjx9g== dependencies: "@babel/types" "^7.21.5" "@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz#631e6cc784c7b660417421349aac304c94115366" + resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz" integrity sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w== dependencies: "@babel/compat-data" "^7.21.5" @@ -113,7 +108,7 @@ "@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz#205b26330258625ef8869672ebca1e0dee5a0f02" + resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz" integrity sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -128,7 +123,7 @@ "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5": version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz#a7886f61c2e29e21fd4aaeaf1e473deba6b571dc" + resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz" integrity sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -137,7 +132,7 @@ "@babel/helper-define-polyfill-provider@^0.3.3": version "0.3.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz" integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== dependencies: "@babel/helper-compilation-targets" "^7.17.7" @@ -149,12 +144,12 @@ "@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz#c769afefd41d171836f7cb63e295bedf689d48ba" + resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz" integrity sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ== "@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4" + resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz" integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg== dependencies: "@babel/template" "^7.20.7" @@ -162,28 +157,28 @@ "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz" integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== dependencies: "@babel/types" "^7.18.6" "@babel/helper-member-expression-to-functions@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz#3b1a009af932e586af77c1030fba9ee0bde396c0" + resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz" integrity sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg== dependencies: "@babel/types" "^7.21.5" "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af" + resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz" integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg== dependencies: "@babel/types" "^7.21.4" "@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz#d937c82e9af68d31ab49039136a222b17ac0b420" + resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz" integrity sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw== dependencies: "@babel/helper-environment-visitor" "^7.21.5" @@ -197,19 +192,19 @@ "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz" integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.21.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz#345f2377d05a720a4e5ecfa39cbf4474a4daed56" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz" integrity sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg== "@babel/helper-remap-async-to-generator@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz" integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -219,7 +214,7 @@ "@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7", "@babel/helper-replace-supers@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz#a6ad005ba1c7d9bc2973dfde05a1bba7065dde3c" + resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz" integrity sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg== dependencies: "@babel/helper-environment-visitor" "^7.21.5" @@ -231,43 +226,43 @@ "@babel/helper-simple-access@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz#d697a7971a5c39eac32c7e63c0921c06c8a249ee" + resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz" integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg== dependencies: "@babel/types" "^7.21.5" "@babel/helper-skip-transparent-expression-wrappers@^7.20.0": version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz" integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== dependencies: "@babel/types" "^7.20.0" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz" integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== dependencies: "@babel/types" "^7.18.6" "@babel/helper-string-parser@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz#2b3eea65443c6bdc31c22d037c65f6d323b6b2bd" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz" integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w== "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== "@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180" + resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz" integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ== "@babel/helper-wrap-function@^7.18.9": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3" + resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz" integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q== dependencies: "@babel/helper-function-name" "^7.19.0" @@ -277,7 +272,7 @@ "@babel/helpers@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.5.tgz#5bac66e084d7a4d2d9696bdf0175a93f7fb63c08" + resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz" integrity sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA== dependencies: "@babel/template" "^7.20.7" @@ -286,7 +281,7 @@ "@babel/highlight@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz" integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== dependencies: "@babel/helper-validator-identifier" "^7.18.6" @@ -295,19 +290,19 @@ "@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8": version "7.21.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.8.tgz#642af7d0333eab9c0ad70b14ac5e76dbde7bfdf8" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz" integrity sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz" integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1" + resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz" integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -316,7 +311,7 @@ "@babel/plugin-proposal-async-generator-functions@^7.20.7": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz" integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== dependencies: "@babel/helper-environment-visitor" "^7.18.9" @@ -326,7 +321,7 @@ "@babel/plugin-proposal-class-properties@^7.16.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz" integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -334,7 +329,7 @@ "@babel/plugin-proposal-class-static-block@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz" integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== dependencies: "@babel/helper-create-class-features-plugin" "^7.21.0" @@ -343,7 +338,7 @@ "@babel/plugin-proposal-decorators@^7.16.4": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz#70e0c89fdcd7465c97593edb8f628ba6e4199d63" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz" integrity sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w== dependencies: "@babel/helper-create-class-features-plugin" "^7.21.0" @@ -354,7 +349,7 @@ "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz" integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -362,7 +357,7 @@ "@babel/plugin-proposal-export-namespace-from@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz" integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" @@ -370,7 +365,7 @@ "@babel/plugin-proposal-json-strings@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz" integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -378,7 +373,7 @@ "@babel/plugin-proposal-logical-assignment-operators@^7.20.7": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz" integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -386,7 +381,7 @@ "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz" integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -394,7 +389,7 @@ "@babel/plugin-proposal-numeric-separator@^7.16.0", "@babel/plugin-proposal-numeric-separator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz" integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -402,7 +397,7 @@ "@babel/plugin-proposal-object-rest-spread@^7.20.7": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz" integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== dependencies: "@babel/compat-data" "^7.20.5" @@ -413,7 +408,7 @@ "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz" integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -421,7 +416,7 @@ "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz" integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -430,7 +425,7 @@ "@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz" integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: "@babel/helper-create-class-features-plugin" "^7.18.6" @@ -438,7 +433,7 @@ "@babel/plugin-proposal-private-property-in-object@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz" integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -448,7 +443,7 @@ "@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + resolved "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz" integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -456,161 +451,161 @@ "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz" integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-bigint@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz" integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" "@babel/plugin-syntax-class-static-block@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz" integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-decorators@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz#d2b3f31c3e86fa86e16bb540b7660c55bd7d0e78" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz" integrity sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-export-namespace-from@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz" integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.18.6": +"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.18.6": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz#3e37fca4f06d93567c1cd9b75156422e90a67107" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz" integrity sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-import-assertions@^7.20.0": version "7.20.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz" integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ== dependencies: "@babel/helper-plugin-utils" "^7.19.0" "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz" integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-jsx@^7.21.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz" integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-catch-binding@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz" integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-private-property-in-object@^7.14.5": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz" integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz" integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-arrow-functions@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz#9bb42a53de447936a57ba256fbf537fc312b6929" + resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz" integrity sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA== dependencies: "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-async-to-generator@^7.20.7": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354" + resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz" integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q== dependencies: "@babel/helper-module-imports" "^7.18.6" @@ -619,21 +614,21 @@ "@babel/plugin-transform-block-scoped-functions@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz" integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-block-scoping@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02" + resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz" integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-classes@^7.21.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665" + resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz" integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -648,7 +643,7 @@ "@babel/plugin-transform-computed-properties@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz#3a2d8bb771cd2ef1cd736435f6552fe502e11b44" + resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz" integrity sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q== dependencies: "@babel/helper-plugin-utils" "^7.21.5" @@ -656,14 +651,14 @@ "@babel/plugin-transform-destructuring@^7.21.3": version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401" + resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz" integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz" integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -671,14 +666,14 @@ "@babel/plugin-transform-duplicate-keys@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz" integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz" integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" @@ -686,7 +681,7 @@ "@babel/plugin-transform-flow-strip-types@^7.16.0": version "7.21.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz" integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -694,14 +689,14 @@ "@babel/plugin-transform-for-of@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz#e890032b535f5a2e237a18535f56a9fdaa7b83fc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz" integrity sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ== dependencies: "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-function-name@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz" integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: "@babel/helper-compilation-targets" "^7.18.9" @@ -710,21 +705,21 @@ "@babel/plugin-transform-literals@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz" integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz" integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-modules-amd@^7.20.11": version "7.20.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz" integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g== dependencies: "@babel/helper-module-transforms" "^7.20.11" @@ -732,7 +727,7 @@ "@babel/plugin-transform-modules-commonjs@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz#d69fb947eed51af91de82e4708f676864e5e47bc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz" integrity sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ== dependencies: "@babel/helper-module-transforms" "^7.21.5" @@ -741,7 +736,7 @@ "@babel/plugin-transform-modules-systemjs@^7.20.11": version "7.20.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz" integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw== dependencies: "@babel/helper-hoist-variables" "^7.18.6" @@ -751,7 +746,7 @@ "@babel/plugin-transform-modules-umd@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz" integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: "@babel/helper-module-transforms" "^7.18.6" @@ -759,7 +754,7 @@ "@babel/plugin-transform-named-capturing-groups-regex@^7.20.5": version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz" integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.20.5" @@ -767,14 +762,14 @@ "@babel/plugin-transform-new-target@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz" integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-object-super@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz" integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -782,42 +777,42 @@ "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3": version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db" + resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz" integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-property-literals@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz" integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-constant-elements@^7.12.1": version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz#b32a5556100d424b25e388dd689050d78396884d" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.21.3.tgz" integrity sha512-4DVcFeWe/yDYBLp0kBmOGFJ6N2UYg7coGid1gdxb4co62dy/xISDMaYBXBVXEDhfgMk7qkbcYiGtwd5Q/hwDDQ== dependencies: "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz" integrity sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-react-jsx-development@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz#dbe5c972811e49c7405b630e4d0d2e1380c0ddc5" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz" integrity sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA== dependencies: "@babel/plugin-transform-react-jsx" "^7.18.6" -"@babel/plugin-transform-react-jsx@^7.18.6": +"@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.18.6": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz#bd98f3b429688243e4fa131fe1cbb2ef31ce6f38" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.5.tgz" integrity sha512-ELdlq61FpoEkHO6gFRpfj0kUgSwQTGoaEU8eMRoS8Dv3v6e7BjEAj5WMtIBRdHUeAioMhKP5HyxNzNnP+heKbA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -828,7 +823,7 @@ "@babel/plugin-transform-react-pure-annotations@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz#561af267f19f3e5d59291f9950fd7b9663d0d844" + resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz" integrity sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -836,7 +831,7 @@ "@babel/plugin-transform-regenerator@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz#576c62f9923f94bcb1c855adc53561fd7913724e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz" integrity sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w== dependencies: "@babel/helper-plugin-utils" "^7.21.5" @@ -844,14 +839,14 @@ "@babel/plugin-transform-reserved-words@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz" integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-runtime@^7.16.4": version "7.21.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz#2e1da21ca597a7d01fc96b699b21d8d2023191aa" + resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz" integrity sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA== dependencies: "@babel/helper-module-imports" "^7.21.4" @@ -863,14 +858,14 @@ "@babel/plugin-transform-shorthand-properties@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz" integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-spread@^7.20.7": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz" integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw== dependencies: "@babel/helper-plugin-utils" "^7.20.2" @@ -878,28 +873,28 @@ "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz" integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-transform-template-literals@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz" integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typeof-symbol@^7.18.9": version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz" integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-typescript@^7.21.3": version "7.21.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b" + resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz" integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" @@ -909,14 +904,14 @@ "@babel/plugin-transform-unicode-escapes@^7.21.5": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz#1e55ed6195259b0e9061d81f5ef45a9b009fb7f2" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz" integrity sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg== dependencies: "@babel/helper-plugin-utils" "^7.21.5" "@babel/plugin-transform-unicode-regex@^7.18.6": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz" integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: "@babel/helper-create-regexp-features-plugin" "^7.18.6" @@ -924,7 +919,7 @@ "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" + resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.5.tgz" integrity sha512-wH00QnTTldTbf/IefEVyChtRdw5RJvODT/Vb4Vcxq1AZvtXj6T0YeX0cAcXhI6/BdGuiP3GcNIL4OQbI2DVNxg== dependencies: "@babel/compat-data" "^7.21.5" @@ -1006,7 +1001,7 @@ "@babel/preset-modules@^0.1.5": version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz" integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -1017,7 +1012,7 @@ "@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0": version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d" + resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz" integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg== dependencies: "@babel/helper-plugin-utils" "^7.18.6" @@ -1029,7 +1024,7 @@ "@babel/preset-typescript@^7.16.0": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz#68292c884b0e26070b4d66b202072d391358395f" + resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.5.tgz" integrity sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA== dependencies: "@babel/helper-plugin-utils" "^7.21.5" @@ -1040,19 +1035,19 @@ "@babel/regjsgen@^0.8.0": version "0.8.0" - resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" + resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.5.tgz#8492dddda9644ae3bda3b45eabe87382caee7200" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.5.tgz" integrity sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q== dependencies: regenerator-runtime "^0.13.11" "@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.3.3": version "7.20.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz" integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== dependencies: "@babel/code-frame" "^7.18.6" @@ -1061,7 +1056,7 @@ "@babel/traverse@^7.20.5", "@babel/traverse@^7.21.5", "@babel/traverse@^7.7.2": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.5.tgz#ad22361d352a5154b498299d523cf72998a4b133" + resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz" integrity sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw== dependencies: "@babel/code-frame" "^7.21.4" @@ -1077,7 +1072,7 @@ "@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.21.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.5.tgz#18dfbd47c39d3904d5db3d3dc2cc80bedb60e5b6" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz" integrity sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q== dependencies: "@babel/helper-string-parser" "^7.21.5" @@ -1086,141 +1081,17 @@ "@bcoe/v8-coverage@^0.2.3": version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@confio/ics23@^0.6.8": - version "0.6.8" - resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d" - integrity sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w== - dependencies: - "@noble/hashes" "^1.0.0" - protobufjs "^6.8.8" - -"@cosmjs/amino@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace" - integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w== - dependencies: - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - -"@cosmjs/crypto@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5" - integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ== - dependencies: - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - "@noble/hashes" "^1" - bn.js "^5.2.0" - elliptic "^6.5.4" - libsodium-wrappers "^0.7.6" - -"@cosmjs/encoding@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058" - integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ== - dependencies: - base64-js "^1.3.0" - bech32 "^1.1.4" - readonly-date "^1.0.0" - -"@cosmjs/json-rpc@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz#16f21305fc167598c8a23a45549b85106b2372bc" - integrity sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ== - dependencies: - "@cosmjs/stream" "^0.30.1" - xstream "^11.14.0" - -"@cosmjs/math@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a" - integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q== - dependencies: - bn.js "^5.2.0" - -"@cosmjs/proto-signing@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz#f0dda372488df9cd2677150b89b3e9c72b3cb713" - integrity sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ== - dependencies: - "@cosmjs/amino" "^0.30.1" - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - cosmjs-types "^0.7.1" - long "^4.0.0" - -"@cosmjs/socket@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.30.1.tgz#00b22f4b5e2ab01f4d82ccdb7b2e59536bfe5ce0" - integrity sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow== - dependencies: - "@cosmjs/stream" "^0.30.1" - isomorphic-ws "^4.0.1" - ws "^7" - xstream "^11.14.0" - -"@cosmjs/stargate@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.30.1.tgz#e1b22e1226cffc6e93914a410755f1f61057ba04" - integrity sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog== - dependencies: - "@confio/ics23" "^0.6.8" - "@cosmjs/amino" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stream" "^0.30.1" - "@cosmjs/tendermint-rpc" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - cosmjs-types "^0.7.1" - long "^4.0.0" - protobufjs "~6.11.3" - xstream "^11.14.0" - -"@cosmjs/stream@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.30.1.tgz#ba038a2aaf41343696b1e6e759d8e03a9516ec1a" - integrity sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ== - dependencies: - xstream "^11.14.0" - -"@cosmjs/tendermint-rpc@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz#c16378892ba1ac63f72803fdf7567eab9d4f0aa0" - integrity sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ== - dependencies: - "@cosmjs/crypto" "^0.30.1" - "@cosmjs/encoding" "^0.30.1" - "@cosmjs/json-rpc" "^0.30.1" - "@cosmjs/math" "^0.30.1" - "@cosmjs/socket" "^0.30.1" - "@cosmjs/stream" "^0.30.1" - "@cosmjs/utils" "^0.30.1" - axios "^0.21.2" - readonly-date "^1.0.0" - xstream "^11.14.0" - -"@cosmjs/utils@^0.30.1": - version "0.30.1" - resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb" - integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g== - "@csstools/normalize.css@*": version "12.0.0" - resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" + resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz" integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== "@csstools/postcss-cascade-layers@^1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + resolved "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz" integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== dependencies: "@csstools/selector-specificity" "^2.0.2" @@ -1228,7 +1099,7 @@ "@csstools/postcss-color-function@^1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + resolved "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz" integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" @@ -1236,21 +1107,21 @@ "@csstools/postcss-font-format-keywords@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + resolved "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz" integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-hwb-function@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + resolved "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz" integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-ic-unit@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + resolved "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz" integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" @@ -1258,7 +1129,7 @@ "@csstools/postcss-is-pseudo-class@^2.0.7": version "2.0.7" - resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + resolved "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz" integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== dependencies: "@csstools/selector-specificity" "^2.0.0" @@ -1266,21 +1137,21 @@ "@csstools/postcss-nested-calc@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + resolved "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz" integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-normalize-display-values@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + resolved "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz" integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-oklab-function@^1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + resolved "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz" integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" @@ -1288,57 +1159,57 @@ "@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + resolved "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz" integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-stepped-value-functions@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + resolved "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz" integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-text-decoration-shorthand@^1.0.0": version "1.0.0" - resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + resolved "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz" integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-trigonometric-functions@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + resolved "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz" integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== dependencies: postcss-value-parser "^4.2.0" "@csstools/postcss-unset-value@^1.0.2": version "1.0.2" - resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + resolved "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz" integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== "@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": version "2.2.0" - resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" + resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz" integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" + resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA== dependencies: eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0": version "4.5.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" + resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz" integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ== "@eslint/eslintrc@^2.0.2": version "2.0.2" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.0.2.tgz#01575e38707add677cf73ca1589abba8da899a02" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz" integrity sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ== dependencies: ajv "^6.12.4" @@ -1353,354 +1224,12 @@ "@eslint/js@8.39.0": version "8.39.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.39.0.tgz#58b536bcc843f4cd1e02a7e6171da5c040f4d44b" + resolved "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz" integrity sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng== -"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" - integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" - integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - -"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" - integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - -"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" - integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - -"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" - integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - -"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - -"@ethersproject/contracts@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" - integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== - dependencies: - "@ethersproject/abi" "^5.7.0" - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - -"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" - integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" - integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" - integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== - dependencies: - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - -"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" - integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - -"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/providers@5.7.2": - version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" - integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/base64" "^5.7.0" - "@ethersproject/basex" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/networks" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/web" "^5.7.0" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" - integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" - integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" - integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" - integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" - integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - -"@ethersproject/units@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" - integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - -"@ethersproject/wallet@5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" - integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== - dependencies: - "@ethersproject/abstract-provider" "^5.7.0" - "@ethersproject/abstract-signer" "^5.7.0" - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/hdnode" "^5.7.0" - "@ethersproject/json-wallets" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/random" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/transactions" "^5.7.0" - "@ethersproject/wordlists" "^5.7.0" - -"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" - integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== - dependencies: - "@ethersproject/base64" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - -"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" - integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/hash" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/strings" "^5.7.0" - "@humanwhocodes/config-array@^0.11.8": version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== dependencies: "@humanwhocodes/object-schema" "^1.2.1" @@ -1709,55 +1238,17 @@ "@humanwhocodes/module-importer@^1.0.1": version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== "@humanwhocodes/object-schema@^1.2.1": version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== -"@ipld/dag-cbor@^6.0.3": - version "6.0.15" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz#aebe7a26c391cae98c32faedb681b1519e3d2372" - integrity sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA== - dependencies: - cborg "^1.5.4" - multiformats "^9.5.4" - -"@ipld/dag-cbor@^7.0.0": - version "7.0.3" - resolved "https://registry.yarnpkg.com/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz#aa31b28afb11a807c3d627828a344e5521ac4a1e" - integrity sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA== - dependencies: - cborg "^1.6.0" - multiformats "^9.5.4" - -"@ipld/dag-json@^8.0.1": - version "8.0.11" - resolved "https://registry.yarnpkg.com/@ipld/dag-json/-/dag-json-8.0.11.tgz#8d30cc2dfacb0aef04d327465d3df91e79e8b6ce" - integrity sha512-Pea7JXeYHTWXRTIhBqBlhw7G53PJ7yta3G/sizGEZyzdeEwhZRr0od5IQ0r2ZxOt1Do+2czddjeEPp+YTxDwCA== - dependencies: - cborg "^1.5.4" - multiformats "^9.5.4" - -"@ipld/dag-pb@^2.1.3": - version "2.1.18" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-2.1.18.tgz#12d63e21580e87c75fd1a2c62e375a78e355c16f" - integrity sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg== - dependencies: - multiformats "^9.5.4" - -"@ipld/dag-pb@^4.0.0": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@ipld/dag-pb/-/dag-pb-4.0.2.tgz#3895864c119296b1712c7e35b0d009fc6a76ad62" - integrity sha512-me9oEPb7UNPWSplUFCXyxnQE3/WlsjOljqO2RZN44XOmGkBY0/WVklbXorVE1eiv0Rt3p6dBS2x36Rq8A0Am8A== - dependencies: - multiformats "^11.0.0" - "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" @@ -1768,12 +1259,12 @@ "@istanbuljs/schema@^0.1.2": version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== "@jest/console@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz" integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== dependencies: "@jest/types" "^27.5.1" @@ -1785,7 +1276,7 @@ "@jest/console@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz" integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== dependencies: "@jest/types" "^28.1.3" @@ -1797,7 +1288,7 @@ "@jest/core@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz" integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== dependencies: "@jest/console" "^27.5.1" @@ -1831,7 +1322,7 @@ "@jest/environment@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz" integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== dependencies: "@jest/fake-timers" "^27.5.1" @@ -1841,14 +1332,14 @@ "@jest/expect-utils@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz" integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg== dependencies: jest-get-type "^29.4.3" "@jest/fake-timers@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz" integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== dependencies: "@jest/types" "^27.5.1" @@ -1860,7 +1351,7 @@ "@jest/globals@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz" integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== dependencies: "@jest/environment" "^27.5.1" @@ -1869,7 +1360,7 @@ "@jest/reporters@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz" integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== dependencies: "@bcoe/v8-coverage" "^0.2.3" @@ -1900,21 +1391,21 @@ "@jest/schemas@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz" integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== dependencies: "@sinclair/typebox" "^0.24.1" "@jest/schemas@^29.4.3": version "29.4.3" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz" integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg== dependencies: "@sinclair/typebox" "^0.25.16" "@jest/source-map@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz" integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== dependencies: callsites "^3.0.0" @@ -1923,7 +1414,7 @@ "@jest/test-result@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz" integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== dependencies: "@jest/console" "^27.5.1" @@ -1933,7 +1424,7 @@ "@jest/test-result@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz" integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== dependencies: "@jest/console" "^28.1.3" @@ -1943,7 +1434,7 @@ "@jest/test-sequencer@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz" integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== dependencies: "@jest/test-result" "^27.5.1" @@ -1953,7 +1444,7 @@ "@jest/transform@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz" integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== dependencies: "@babel/core" "^7.1.0" @@ -1974,7 +1465,7 @@ "@jest/types@^27.5.1": version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + resolved "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz" integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" @@ -1985,7 +1476,7 @@ "@jest/types@^28.1.3": version "28.1.3" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz" integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== dependencies: "@jest/schemas" "^28.1.3" @@ -1997,7 +1488,7 @@ "@jest/types@^29.5.0": version "29.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz" integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog== dependencies: "@jest/schemas" "^29.4.3" @@ -2009,7 +1500,7 @@ "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz" integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== dependencies: "@jridgewell/set-array" "^1.0.1" @@ -2018,402 +1509,94 @@ "@jridgewell/resolve-uri@3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== "@jridgewell/set-array@^1.0.1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": version "0.3.3" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz" integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@jridgewell/sourcemap-codec@1.4.14": + version "1.4.14" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz" integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" -"@json-rpc-tools/provider@^1.5.5": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/provider/-/provider-1.7.6.tgz#8a17c34c493fa892632e278fd9331104e8491ec6" - integrity sha512-z7D3xvJ33UfCGv77n40lbzOYjZKVM3k2+5cV7xS8G6SCvKTzMkhkUYuD/qzQUNT4cG/lv0e9mRToweEEVLVVmA== - dependencies: - "@json-rpc-tools/utils" "^1.7.6" - axios "^0.21.0" - safe-json-utils "^1.1.1" - ws "^7.4.0" - -"@json-rpc-tools/types@^1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.7.6.tgz#5abd5fde01364a130c46093b501715bcce5bdc0e" - integrity sha512-nDSqmyRNEqEK9TZHtM15uNnDljczhCUdBmRhpNZ95bIPKEDQ+nTDmGMFd2lLin3upc5h2VVVd9tkTDdbXUhDIQ== - dependencies: - keyvaluestorage-interface "^1.0.0" - -"@json-rpc-tools/utils@^1.7.6": - version "1.7.6" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.7.6.tgz#67f04987dbaa2e7adb6adff1575367b75a9a9ba1" - integrity sha512-HjA8x/U/Q78HRRe19yh8HVKoZ+Iaoo3YZjakJYxR+rw52NHo6jM+VE9b8+7ygkCFXl/EHID5wh/MkXaE/jGyYw== - dependencies: - "@json-rpc-tools/types" "^1.7.6" - "@pedrouid/environment" "^1.0.1" - "@leichtgewicht/ip-codec@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b" + resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz" integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A== -"@lit-labs/ssr-dom-shim@^1.0.0", "@lit-labs/ssr-dom-shim@^1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.1.tgz#64df34e2f12e68e78ac57e571d25ec07fa460ca9" - integrity sha512-kXOeFbfCm4fFf2A3WwVEeQj55tMZa8c8/f9AKHMobQMkzNUfUj+antR3fRPaZJawsa1aZiP/Da3ndpZrwEe4rQ== - -"@lit-protocol/access-control-conditions@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/access-control-conditions/-/access-control-conditions-2.1.158.tgz#7f194354cf4c246664f3debda6c570dbca0b6da3" - integrity sha512-uwvcH1ZoWFwZoI2wpZ6noN+P/vxE+xaCFZBJijA5yr9fRdSDk8k20EpOFly5jGvaYGkAwIAuwqsFRWR+H3kpsA== - dependencies: - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/misc" "2.1.158" - "@lit-protocol/types" "2.1.158" - "@lit-protocol/uint8arrays" "2.1.158" - ethers "^5.7.1" - tslib "^2.3.0" - -"@lit-protocol/auth-browser@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/auth-browser/-/auth-browser-2.1.158.tgz#8b577629f3731b82c86a2423040a1ff5a7bd7f64" - integrity sha512-LB5nbAiW3pJq76Eq22/lpJOdOyjjTIunKELJmWkJTpQQ1YeBTSP2bYaANSmOjBEFD0jakhZbIaLUZX2ZA1Krmw== - dependencies: - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/misc" "2.1.158" - "@lit-protocol/misc-browser" "2.1.158" - "@lit-protocol/types" "2.1.158" - "@lit-protocol/uint8arrays" "2.1.158" - "@walletconnect/ethereum-provider" "2.7.0" - "@web3modal/standalone" "2.2.1" - ethers "^5.7.1" - lit-connect-modal "^0.1.11" - lit-siwe "^1.1.8" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.13.3" - util "^0.12.4" - web-vitals "^3.0.4" - -"@lit-protocol/bls-sdk@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/bls-sdk/-/bls-sdk-2.1.158.tgz#5867d12d2fed685099306cb0d43ad8ca44c8be42" - integrity sha512-Lt/pGJao0yWm7VJvygFy8Ss5hWjH5CEZdeLfVPAtE/e+8k1z7fCnDSn0rZ1OyhpuXZ+Xj5w76yIRY8JGh/t76w== - -"@lit-protocol/constants@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/constants/-/constants-2.1.158.tgz#21cb990bc907c69a6b33d46b1c6a61e7badd33a8" - integrity sha512-PoLeh2lipob6VlultzRFg3uWFX/59v6hS7nz5xa0/WeTIhdUdlzyGXFTyJCsRGxGC4PnfqiIIVG9tTow9mfw1w== - dependencies: - "@lit-protocol/types" "2.1.158" - tslib "^2.3.0" - -"@lit-protocol/crypto@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/crypto/-/crypto-2.1.158.tgz#683b223b1746540f62de392a43653f6111e270df" - integrity sha512-KhvElTt5Y3BlLLFy0uBCOGGUvmTP9KA+KYug7lwyJp9iq6Q9ZYmv3brnZge+GLliNJJok9quc2xNkwTrciP8Eg== - dependencies: - "@lit-protocol/bls-sdk" "2.1.158" - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/ecdsa-sdk" "2.1.158" - "@lit-protocol/misc" "2.1.158" - "@lit-protocol/nacl" "2.1.158" - "@lit-protocol/types" "2.1.158" - "@lit-protocol/uint8arrays" "2.1.158" - ethers "^5.7.1" - tslib "^2.3.0" - -"@lit-protocol/ecdsa-sdk@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/ecdsa-sdk/-/ecdsa-sdk-2.1.158.tgz#a8afb0c757d21b201c5438440d40d61dbaf153e9" - integrity sha512-lTLrOW+VJANstc1/POo8rrfF8J33hiDn3CZJJzzdyWJ+sL5Vy+AZEnSl8J3bNSAWsezgU8ELp0f5bS+STp4Zhg== - -"@lit-protocol/encryption@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/encryption/-/encryption-2.1.158.tgz#458856e24e19d32b7e594d676a5a61287921d0f6" - integrity sha512-ivZD2a0avYuECFAzJ3qV/JztDbyGx1ltoKmwYkN3irZn7BjZ/GXq8LcJdZW15LrU8Q7yXcZHFgCaXWTEvwxJJA== - dependencies: - "@lit-protocol/bls-sdk" "2.1.158" - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/crypto" "2.1.158" - "@lit-protocol/ecdsa-sdk" "2.1.158" - "@lit-protocol/misc" "2.1.158" - "@lit-protocol/nacl" "2.1.158" - "@lit-protocol/types" "2.1.158" - "@lit-protocol/uint8arrays" "2.1.158" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - jszip "^3.10.1" - tslib "^2.3.0" - -"@lit-protocol/lit-node-client-nodejs@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client-nodejs/-/lit-node-client-nodejs-2.1.158.tgz#17839ad87fc5f7592079e272c2b5835f318d2882" - integrity sha512-839HTpACZxQEwy1BQ3tVBkozKqF6PoGKfJXb/FLxdTq4Ma5xSEFLnGA05eReCffx1mD/bWeTNWk6iIDyKsZQtQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "2.1.158" - "@lit-protocol/bls-sdk" "2.1.158" - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/crypto" "2.1.158" - "@lit-protocol/ecdsa-sdk" "2.1.158" - "@lit-protocol/encryption" "2.1.158" - "@lit-protocol/lit-third-party-libs" "2.1.158" - "@lit-protocol/misc" "2.1.158" - "@lit-protocol/misc-browser" "2.1.158" - "@lit-protocol/nacl" "2.1.158" - "@lit-protocol/types" "2.1.158" - "@lit-protocol/uint8arrays" "2.1.158" - blockstore-core "^3.0.0" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jszip "^3.10.1" - lit-siwe "^1.1.8" - node-fetch "^2.6.1" - tslib "^2.3.0" - -"@lit-protocol/lit-node-client@^2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-node-client/-/lit-node-client-2.1.158.tgz#e84a479d672649e55d79f1a556a581e8e17bfcf5" - integrity sha512-nQ4akf+eeLKCRmBY3ZlNF+n7f+yV3VQ12LPWkHJtJQTeQb3vQ/i4vaERMg+R58pHj44xrNljG4lpRprwDoM6eQ== - dependencies: - "@cosmjs/proto-signing" "^0.30.1" - "@cosmjs/stargate" "^0.30.1" - "@lit-protocol/access-control-conditions" "2.1.158" - "@lit-protocol/auth-browser" "2.1.158" - "@lit-protocol/bls-sdk" "2.1.158" - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/crypto" "2.1.158" - "@lit-protocol/ecdsa-sdk" "2.1.158" - "@lit-protocol/encryption" "2.1.158" - "@lit-protocol/lit-node-client-nodejs" "2.1.158" - "@lit-protocol/lit-third-party-libs" "2.1.158" - "@lit-protocol/misc" "2.1.158" - "@lit-protocol/misc-browser" "2.1.158" - "@lit-protocol/nacl" "2.1.158" - "@lit-protocol/types" "2.1.158" - "@lit-protocol/uint8arrays" "2.1.158" - "@walletconnect/ethereum-provider" "2.7.0" - "@web3modal/standalone" "^2.2.1" - blockstore-core "^3.0.0" - ethers "^5.7.1" - ipfs-http-client "56.0.0" - ipfs-unixfs-importer "^12.0.0" - jszip "^3.10.1" - lit-connect-modal "^0.1.11" - lit-siwe "^1.1.8" - node-fetch "^2.6.1" - tslib "^2.3.0" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - -"@lit-protocol/lit-third-party-libs@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/lit-third-party-libs/-/lit-third-party-libs-2.1.158.tgz#9691f0f139915a0f51314aa37ff379195228639f" - integrity sha512-qGib465YxnhYzBoGGn8sNPjyty1dGYhnhipS/m6GzrJXuqbzYCHGVYe0oqJ1l20JPoOVJrJJMYHLn+ZEpv4ePw== - -"@lit-protocol/misc-browser@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc-browser/-/misc-browser-2.1.158.tgz#13168a1c45f5ac89729c81ee4de23dfe5daec888" - integrity sha512-RXH/UCxRqKVQ0tKuuOuH/R4xias9IDPV6xRJwlBx/A3USUAqaajCgbug1nZSqmMj6Zwa3Cfp2M+ye4X7YPiPUw== - dependencies: - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/misc" "2.1.158" - "@lit-protocol/types" "2.1.158" - "@lit-protocol/uint8arrays" "2.1.158" - ethers "^5.7.1" - tslib "^2.3.0" - -"@lit-protocol/misc@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/misc/-/misc-2.1.158.tgz#220710d582e9a5ce76b30ba1d32c4fda9039cc49" - integrity sha512-UwF8/WcMohZ+d6i1N3b+1lWV4fJU6K8M2gxPi0PzTWZ2LVUC6bcpa6gWqvg4OXzNuuDKGcQoXu9JSySOmTdoYg== - dependencies: - "@lit-protocol/constants" "2.1.158" - "@lit-protocol/types" "2.1.158" - tslib "^2.3.0" - -"@lit-protocol/nacl@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/nacl/-/nacl-2.1.158.tgz#a622267de99549a3181324ecd4ab3d9aac89909d" - integrity sha512-6lq3XVHZV0hfS84uLWdRoZ4otINuh60RkgRGcVlyZAVH1y4mqkYRhlH8bCqUAVbJlVZLxbGj+HGEld+cGPs2og== - -"@lit-protocol/types@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/types/-/types-2.1.158.tgz#76fee75d8bdc779e8b4a34bef67d0bfeb841b151" - integrity sha512-QzFbuc4cSz5+f8f/V7G45p4b+64S5sJPqIrk6uYgLeu0xArTqbSy5kHwZrliFRSkIEotcHwg7kMs2s2na/Z1xQ== - -"@lit-protocol/uint8arrays@2.1.158": - version "2.1.158" - resolved "https://registry.yarnpkg.com/@lit-protocol/uint8arrays/-/uint8arrays-2.1.158.tgz#4bcff16584dee9ea1dd91c9079f8335a12d73056" - integrity sha512-Q6Et6w8a67pEespKe1JjS+CPqIYATZblq0ZtsN4X8I7SEsLYyBRdLHhxocoUYV/Gu9vBvYamCrGkmZGfPcpJ2A== - -"@lit/reactive-element@^1.3.0", "@lit/reactive-element@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@lit/reactive-element/-/reactive-element-1.6.1.tgz#0d958b6d479d0e3db5fc1132ecc4fa84be3f0b93" - integrity sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA== - dependencies: - "@lit-labs/ssr-dom-shim" "^1.0.0" +"@lit-protocol/lit-node-client@file:../../packages/lit-node-client": + version "2.2.11" + resolved "file:../../packages/lit-node-client" "@monaco-editor/loader@^1.3.3": version "1.3.3" - resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.3.3.tgz#7f1742bd3cc21c0362a46a4056317f6e5215cfca" + resolved "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.3.3.tgz" integrity sha512-6KKF4CTzcJiS8BJwtxtfyYt9shBiEv32ateQ9T4UVogwn4HM/uPo9iJd2Dmbkpz8CM6Y0PDUpjnZzCwC+eYo2Q== dependencies: state-local "^1.0.6" -"@monaco-editor/react@^4.4.6": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.5.0.tgz#5a581f1ce5af6597dd127ac2c0d22d15ca3f3928" - integrity sha512-VJMkp5Fe1+w8pLEq8tZPHZKu8zDXQIA1FtiDTSNccg1D3wg1YIZaH2es2Qpvop1k62g3c/YySRb3bnGXu2XwYQ== +"@monaco-editor/react@^4.5.1": + version "4.5.1" + resolved "https://registry.npmjs.org/@monaco-editor/react/-/react-4.5.1.tgz" + integrity sha512-NNDFdP+2HojtNhCkRfE6/D6ro6pBNihaOzMbGK84lNWzRu+CfBjwzGt4jmnqimLuqp5yE5viHS2vi+QOAnD5FQ== dependencies: "@monaco-editor/loader" "^1.3.3" -"@motionone/animation@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807" - integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ== - dependencies: - "@motionone/easing" "^10.15.1" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" - tslib "^2.3.1" - -"@motionone/dom@^10.15.5": - version "10.15.5" - resolved "https://registry.yarnpkg.com/@motionone/dom/-/dom-10.15.5.tgz#4af18f8136d85c2fc997cac98121c969f6731802" - integrity sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA== - dependencies: - "@motionone/animation" "^10.15.1" - "@motionone/generators" "^10.15.1" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/easing@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693" - integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw== - dependencies: - "@motionone/utils" "^10.15.1" - tslib "^2.3.1" - -"@motionone/generators@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c" - integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ== - dependencies: - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" - tslib "^2.3.1" - -"@motionone/svelte@^10.15.5": - version "10.15.5" - resolved "https://registry.yarnpkg.com/@motionone/svelte/-/svelte-10.15.5.tgz#f36b40101ec1db122820598089f42e831f6cf5f5" - integrity sha512-Xyxtgp7BlVnSBwcoFmXGHUVnpNktzeXsEifu2NJJWc7VGuxutDsBZxNdz80qvpLIC5MeBa1wh7GGegZzTm1msg== - dependencies: - "@motionone/dom" "^10.15.5" - tslib "^2.3.1" - -"@motionone/types@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb" - integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA== - -"@motionone/utils@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438" - integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw== - dependencies: - "@motionone/types" "^10.15.1" - hey-listen "^1.0.8" - tslib "^2.3.1" - -"@motionone/vue@^10.15.5": - version "10.15.5" - resolved "https://registry.yarnpkg.com/@motionone/vue/-/vue-10.15.5.tgz#3101c62b2fce06b3f3072b9ff0f551213eb02476" - integrity sha512-cUENrLYAolUacHvCgU+8wF9OgSlVutfWbHMLERI/bElCJ+e2YVQvG/CpGhIM5fYOOJzuvg2T2wHmLLmvJoavEw== - dependencies: - "@motionone/dom" "^10.15.5" - tslib "^2.3.1" - -"@multiformats/murmur3@^2.0.0": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@multiformats/murmur3/-/murmur3-2.1.3.tgz#eb690132bcc898d74257287d133cdf693f81f888" - integrity sha512-YvLK1IrLnRckPsvXhOkZjaIGNonsEdD1dL3NPSaLilV/WjVYeBgnNZXTUsaPzFXGrIFM7motx+yCmmqzXO6gtQ== - dependencies: - multiformats "^11.0.0" - murmurhash3js-revisited "^3.0.0" - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== dependencies: eslint-scope "5.1.1" -"@noble/hashes@^1", "@noble/hashes@^1.0.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.0.tgz#085fd70f6d7d9d109671090ccae1d3bec62554a1" - integrity sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@pedrouid/environment@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@pedrouid/environment/-/environment-1.0.1.tgz#858f0f8a057340e0b250398b75ead77d6f4342ec" - integrity sha512-HaW78NszGzRZd9SeoI3JD11JqY+lubnaOx7Pewj5pfjqWXOEATpeKIFb9Z4t2WBUK2iryiXX3lzWwmYWgUL0Ug== - "@pmmmwh/react-refresh-webpack-plugin@^0.5.3": version "0.5.10" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz#2eba163b8e7dbabb4ce3609ab5e32ab63dda3ef8" + resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz" integrity sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA== dependencies: ansi-html-community "^0.0.8" @@ -2426,62 +1609,9 @@ schema-utils "^3.0.0" source-map "^0.7.3" -"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" - integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== - -"@protobufjs/base64@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" - integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== - -"@protobufjs/codegen@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" - integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== - -"@protobufjs/eventemitter@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" - integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== - -"@protobufjs/fetch@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" - integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== - dependencies: - "@protobufjs/aspromise" "^1.1.1" - "@protobufjs/inquire" "^1.1.0" - -"@protobufjs/float@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" - integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== - -"@protobufjs/inquire@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" - integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== - -"@protobufjs/path@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" - integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== - -"@protobufjs/pool@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" - integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== - -"@protobufjs/utf8@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" - integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== - "@rollup/plugin-babel@^5.2.0": version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz" integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== dependencies: "@babel/helper-module-imports" "^7.10.4" @@ -2489,7 +1619,7 @@ "@rollup/plugin-node-resolve@^11.2.1": version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" + resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz" integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -2501,7 +1631,7 @@ "@rollup/plugin-replace@^2.4.1": version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz" integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== dependencies: "@rollup/pluginutils" "^3.1.0" @@ -2509,7 +1639,7 @@ "@rollup/pluginutils@^3.1.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz" integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== dependencies: "@types/estree" "0.0.39" @@ -2518,177 +1648,36 @@ "@rushstack/eslint-patch@^1.1.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728" + resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz" integrity sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg== "@sinclair/typebox@^0.24.1": version "0.24.51" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz" integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== "@sinclair/typebox@^0.25.16": version "0.25.24" - resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz" integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ== "@sinonjs/commons@^1.7.0": version "1.8.6" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz" integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^8.0.1": version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz" integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" -"@spruceid/siwe-parser@1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@spruceid/siwe-parser/-/siwe-parser-1.1.3.tgz#0eebe8bbd63c6de89cb44c06b6329b00b305df65" - integrity sha512-oQ8PcwDqjGWJvLmvAF2yzd6iniiWxK0Qtz+Dw+gLD/W5zOQJiKIUXwslHOm8VB8OOOKW9vfR3dnPBhHaZDvRsw== - dependencies: - apg-js "^4.1.1" - -"@stablelib/aead@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/aead/-/aead-1.0.1.tgz#c4b1106df9c23d1b867eb9b276d8f42d5fc4c0c3" - integrity sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg== - -"@stablelib/binary@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" - integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== - dependencies: - "@stablelib/int" "^1.0.1" - -"@stablelib/bytes@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" - integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== - -"@stablelib/chacha20poly1305@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha20poly1305/-/chacha20poly1305-1.0.1.tgz#de6b18e283a9cb9b7530d8767f99cde1fec4c2ee" - integrity sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA== - dependencies: - "@stablelib/aead" "^1.0.1" - "@stablelib/binary" "^1.0.1" - "@stablelib/chacha" "^1.0.1" - "@stablelib/constant-time" "^1.0.1" - "@stablelib/poly1305" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/chacha@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/chacha/-/chacha-1.0.1.tgz#deccfac95083e30600c3f92803a3a1a4fa761371" - integrity sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/constant-time@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/constant-time/-/constant-time-1.0.1.tgz#bde361465e1cf7b9753061b77e376b0ca4c77e35" - integrity sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg== - -"@stablelib/ed25519@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/ed25519/-/ed25519-1.0.3.tgz#f8fdeb6f77114897c887bb6a3138d659d3f35996" - integrity sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg== - dependencies: - "@stablelib/random" "^1.0.2" - "@stablelib/sha512" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/hash@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hash/-/hash-1.0.1.tgz#3c944403ff2239fad8ebb9015e33e98444058bc5" - integrity sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg== - -"@stablelib/hkdf@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hkdf/-/hkdf-1.0.1.tgz#b4efd47fd56fb43c6a13e8775a54b354f028d98d" - integrity sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g== - dependencies: - "@stablelib/hash" "^1.0.1" - "@stablelib/hmac" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/hmac@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/hmac/-/hmac-1.0.1.tgz#3d4c1b8cf194cb05d28155f0eed8a299620a07ec" - integrity sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA== - dependencies: - "@stablelib/constant-time" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/int@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" - integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== - -"@stablelib/keyagreement@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" - integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== - dependencies: - "@stablelib/bytes" "^1.0.1" - -"@stablelib/poly1305@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/poly1305/-/poly1305-1.0.1.tgz#93bfb836c9384685d33d70080718deae4ddef1dc" - integrity sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA== - dependencies: - "@stablelib/constant-time" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/random@^1.0.1", "@stablelib/random@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.2.tgz#2dece393636489bf7e19c51229dd7900eddf742c" - integrity sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/sha256@1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha256/-/sha256-1.0.1.tgz#77b6675b67f9b0ea081d2e31bda4866297a3ae4f" - integrity sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/sha512@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/sha512/-/sha512-1.0.1.tgz#6da700c901c2c0ceacbd3ae122a38ac57c72145f" - integrity sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw== - dependencies: - "@stablelib/binary" "^1.0.1" - "@stablelib/hash" "^1.0.1" - "@stablelib/wipe" "^1.0.1" - -"@stablelib/wipe@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" - integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== - -"@stablelib/x25519@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.3.tgz#13c8174f774ea9f3e5e42213cbf9fc68a3c7b7fd" - integrity sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw== - dependencies: - "@stablelib/keyagreement" "^1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/wipe" "^1.0.1" - "@surma/rollup-plugin-off-main-thread@^2.2.3": version "2.2.3" - resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz#ee34985952ca21558ab0d952f00298ad2190c053" + resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz" integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ== dependencies: ejs "^3.1.6" @@ -2698,47 +1687,47 @@ "@svgr/babel-plugin-add-jsx-attribute@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz" integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg== "@svgr/babel-plugin-remove-jsx-attribute@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz" integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg== "@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz" integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA== "@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz" integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ== "@svgr/babel-plugin-svg-dynamic-title@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz" integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg== "@svgr/babel-plugin-svg-em-dimensions@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz" integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw== "@svgr/babel-plugin-transform-react-native-svg@^5.4.0": version "5.4.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz" integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q== "@svgr/babel-plugin-transform-svg-component@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a" + resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz" integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ== "@svgr/babel-preset@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327" + resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz" integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig== dependencies: "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0" @@ -2752,7 +1741,7 @@ "@svgr/core@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579" + resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz" integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ== dependencies: "@svgr/plugin-jsx" "^5.5.0" @@ -2761,14 +1750,14 @@ "@svgr/hast-util-to-babel-ast@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461" + resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz" integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ== dependencies: "@babel/types" "^7.12.6" "@svgr/plugin-jsx@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000" + resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz" integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA== dependencies: "@babel/core" "^7.12.3" @@ -2778,7 +1767,7 @@ "@svgr/plugin-svgo@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246" + resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz" integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ== dependencies: cosmiconfig "^7.0.0" @@ -2787,7 +1776,7 @@ "@svgr/webpack@^5.5.0": version "5.5.0" - resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640" + resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz" integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g== dependencies: "@babel/core" "^7.12.3" @@ -2799,9 +1788,9 @@ "@svgr/plugin-svgo" "^5.5.0" loader-utils "^2.0.0" -"@testing-library/dom@^8.5.0": +"@testing-library/dom@^8.5.0", "@testing-library/dom@>=7.21.4": version "8.20.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6" + resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.0.tgz" integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA== dependencies: "@babel/code-frame" "^7.10.4" @@ -2815,7 +1804,7 @@ "@testing-library/jest-dom@^5.16.5": version "5.16.5" - resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz#3912846af19a29b2dbf32a6ae9c31ef52580074e" + resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.16.5.tgz" integrity sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA== dependencies: "@adobe/css-tools" "^4.0.1" @@ -2830,7 +1819,7 @@ "@testing-library/react@^13.4.0": version "13.4.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-13.4.0.tgz#6a31e3bf5951615593ad984e96b9e5e2d9380966" + resolved "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz" integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw== dependencies: "@babel/runtime" "^7.12.5" @@ -2839,29 +1828,29 @@ "@testing-library/user-event@^13.5.0": version "13.5.0" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-13.5.0.tgz#69d77007f1e124d55314a2b73fd204b333b13295" + resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz" integrity sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg== dependencies: "@babel/runtime" "^7.12.5" "@tootallnate/once@1": version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== "@trysound/sax@0.2.0": version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/aria-query@^5.0.1": version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" + resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz" integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9": version "7.20.0" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.0.tgz#61bc5a4cae505ce98e1e36c5445e4bee060d8891" + resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz" integrity sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ== dependencies: "@babel/parser" "^7.20.7" @@ -2872,14 +1861,14 @@ "@types/babel__generator@*": version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz" integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz" integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== dependencies: "@babel/parser" "^7.1.0" @@ -2887,14 +1876,14 @@ "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": version "7.18.5" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.5.tgz#c107216842905afafd3b6e774f6f935da6f5db80" + resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz" integrity sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q== dependencies: "@babel/types" "^7.3.0" "@types/body-parser@*": version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== dependencies: "@types/connect" "*" @@ -2902,14 +1891,14 @@ "@types/bonjour@^3.5.9": version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" + resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz" integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#9fd20b3974bdc2bcd4ac6567e2e0f6885cb2cf41" + resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz" integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== dependencies: "@types/express-serve-static-core" "*" @@ -2917,14 +1906,14 @@ "@types/connect@*": version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== dependencies: "@types/node" "*" "@types/eslint-scope@^3.7.3": version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + resolved "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz" integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" @@ -2932,7 +1921,7 @@ "@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1": version "8.37.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.37.0.tgz#29cebc6c2a3ac7fea7113207bf5a828fdf4d7ef1" + resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz" integrity sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ== dependencies: "@types/estree" "*" @@ -2940,17 +1929,17 @@ "@types/estree@*", "@types/estree@^1.0.0": version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== "@types/estree@0.0.39": version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.17.34" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz#c119e85b75215178bc127de588e93100698ab4cc" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz" integrity sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w== dependencies: "@types/node" "*" @@ -2960,7 +1949,7 @@ "@types/express@*", "@types/express@^4.17.13": version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== dependencies: "@types/body-parser" "*" @@ -2970,156 +1959,175 @@ "@types/graceful-fs@^4.1.2": version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" + resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz" integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== dependencies: "@types/node" "*" "@types/html-minifier-terser@^6.0.0": version "6.1.0" - resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35" + resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-proxy@^1.17.8": version "1.17.11" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" + resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz" integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz" integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@*": version "29.5.1" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.1.tgz#83c818aa9a87da27d6da85d3378e5a34d2f31a47" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz" integrity sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ== dependencies: expect "^29.0.0" pretty-format "^29.0.0" +"@types/jest@^29.4.0": + version "29.5.2" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz" + integrity sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg== + dependencies: + expect "^29.0.0" + pretty-format "^29.0.0" + "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz" integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== "@types/json5@^0.0.29": version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/long@^4.0.1": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a" - integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA== - "@types/mime@*": version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== "@types/mime@^1": version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@^3.0.4": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/node@*", "@types/node@>=13.7.0": +"@types/node@*": version "18.16.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.16.3.tgz#6bda7819aae6ea0b386ebc5b24bdf602f1b42b01" + resolved "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz" integrity sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q== +"@types/node@^18.11.19": + version "18.16.18" + resolved "https://registry.npmjs.org/@types/node/-/node-18.16.18.tgz" + integrity sha512-/aNaQZD0+iSBAGnvvN2Cx92HqE5sZCPZtx2TsK+4nvV23fFe09jVDvpArXr2j9DnYlzuU9WuoykDDc6wqvpNcw== + "@types/parse-json@^4.0.0": version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prettier@^2.1.5": version "2.7.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.2.tgz#6c2324641cc4ba050a8c710b2b251b377581fbf0" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz" integrity sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg== "@types/prop-types@*": version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" + resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz" integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== "@types/q@^1.5.1": version "1.5.5" - resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df" + resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz" integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ== "@types/qs@*": version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/range-parser@*": version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== "@types/react-dom@^18.0.0": version "18.2.3" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.3.tgz#2fe492bb0e67047b7b43e18166d8f50d44e0525e" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.3.tgz" integrity sha512-hxXEXWxFJXbY0LMj/T69mznqOZJXNtQMqVxIiirVAZnnpeYiD4zt+lPsgcr/cfWg2VLsxZ1y26vigG03prYB+Q== dependencies: "@types/react" "*" +"@types/react-dom@^18.0.10": + version "18.2.5" + resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.5.tgz" + integrity sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ== + dependencies: + "@types/react" "*" + "@types/react@*": version "18.2.5" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.5.tgz#f9403e1113b12b53f7edcdd9a900c10dd4b49a59" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.5.tgz" integrity sha512-RuoMedzJ5AOh23Dvws13LU9jpZHIc/k90AgmK7CecAYeWmSr3553L4u5rk4sWAPBuQosfT7HmTfG4Rg5o4nGEA== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@^18.0.27": + version "18.2.12" + resolved "https://registry.npmjs.org/@types/react/-/react-18.2.12.tgz" + integrity sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz" integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== dependencies: "@types/node" "*" "@types/retry@0.12.0": version "0.12.0" - resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz" integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz" integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== "@types/semver@^7.3.12": version "7.3.13" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91" + resolved "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz" integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw== "@types/send@*": version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== dependencies: "@types/mime" "^1" @@ -3127,14 +2135,14 @@ "@types/serve-index@^1.9.1": version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" + resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz" integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": version "1.15.1" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.1.tgz#86b1753f0be4f9a1bee68d459fcda5be4ea52b5d" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz" integrity sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ== dependencies: "@types/mime" "*" @@ -3142,57 +2150,57 @@ "@types/sockjs@^0.3.33": version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" + resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz" integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== "@types/testing-library__jest-dom@^5.9.1": version "5.14.5" - resolved "https://registry.yarnpkg.com/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz#d113709c90b3c75fdb127ec338dad7d5f86c974f" + resolved "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.5.tgz" integrity sha512-SBwbxYoyPIvxHbeHxTZX2Pe/74F/tX2/D3mMvzabdeJ25bBojfW0TyB8BHrbq/9zaaKICJZjLP+8r6AeZMFCuQ== dependencies: "@types/jest" "*" "@types/trusted-types@^2.0.2": version "2.0.3" - resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311" + resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.3.tgz" integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g== "@types/ws@^8.5.1": version "8.5.4" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz" integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== dependencies: "@types/node" "*" "@types/yargs-parser@*": version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^16.0.0": version "16.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz" integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.5.0": +"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz#684a2ce7182f3b4dac342eef7caa1c2bae476abd" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz" integrity sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A== dependencies: "@eslint-community/regexpp" "^4.4.0" @@ -3208,14 +2216,14 @@ "@typescript-eslint/experimental-utils@^5.0.0": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.2.tgz#c2785247c4c8929cb6946e46280ea44f54d9cf79" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.59.2.tgz" integrity sha512-JLw2UImsjHDuVukpA8Nt+UK7JKE/LQAeV3tU5f7wJo2/NNYVwcakzkWjoYzu/2qzWY/Z9c7zojngNDfecNt92g== dependencies: "@typescript-eslint/utils" "5.59.2" -"@typescript-eslint/parser@^5.5.0": +"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.59.2.tgz#c2c443247901d95865b9f77332d9eee7c55655e8" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz" integrity sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ== dependencies: "@typescript-eslint/scope-manager" "5.59.2" @@ -3225,7 +2233,7 @@ "@typescript-eslint/scope-manager@5.59.2": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz#f699fe936ee4e2c996d14f0fdd3a7da5ba7b9a4c" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz" integrity sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA== dependencies: "@typescript-eslint/types" "5.59.2" @@ -3233,7 +2241,7 @@ "@typescript-eslint/type-utils@5.59.2": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz#0729c237503604cd9a7084b5af04c496c9a4cdcf" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz" integrity sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ== dependencies: "@typescript-eslint/typescript-estree" "5.59.2" @@ -3243,12 +2251,12 @@ "@typescript-eslint/types@5.59.2": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.59.2.tgz#b511d2b9847fe277c5cb002a2318bd329ef4f655" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz" integrity sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w== "@typescript-eslint/typescript-estree@5.59.2": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz#6e2fabd3ba01db5d69df44e0b654c0b051fe9936" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz" integrity sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q== dependencies: "@typescript-eslint/types" "5.59.2" @@ -3259,9 +2267,9 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.59.2", "@typescript-eslint/utils@^5.58.0": +"@typescript-eslint/utils@^5.58.0", "@typescript-eslint/utils@5.59.2": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.59.2.tgz#0c45178124d10cc986115885688db6abc37939f4" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz" integrity sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -3275,303 +2283,15 @@ "@typescript-eslint/visitor-keys@5.59.2": version "5.59.2" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz#37a419dc2723a3eacbf722512b86d6caf7d3b750" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz" integrity sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig== dependencies: "@typescript-eslint/types" "5.59.2" eslint-visitor-keys "^3.3.0" -"@walletconnect/core@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-2.7.0.tgz#26f19710958648e401968ab2fd427d6b07fb3b37" - integrity sha512-xUeFPpElybgn1a+lknqtHleei4VyuV/4qWgB1nP8qQUAO6a5pNsioODrnB2VAPdUHJYBdx2dCt2maRk6g53IPQ== - dependencies: - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-provider" "^1.0.12" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/jsonrpc-ws-connection" "^1.0.11" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/relay-auth" "^1.0.4" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.7.0" - "@walletconnect/utils" "2.7.0" - events "^3.3.0" - lodash.isequal "4.5.0" - uint8arrays "^3.1.0" - -"@walletconnect/environment@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.1.tgz#1d7f82f0009ab821a2ba5ad5e5a7b8ae3b214cd7" - integrity sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg== - dependencies: - tslib "1.14.1" - -"@walletconnect/ethereum-provider@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/ethereum-provider/-/ethereum-provider-2.7.0.tgz#5aaf10ce8de9269904b7714428554f1a64b7932d" - integrity sha512-6TwQ05zi6DP1TP1XNgSvLbmCmLf/sz7kLTfMaVk45YYHNgYTTBlXqkyjUpQZI9lpq+uXLBbHn/jx2OGhOPUP0Q== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.4" - "@walletconnect/jsonrpc-provider" "^1.0.11" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/sign-client" "2.7.0" - "@walletconnect/types" "2.7.0" - "@walletconnect/universal-provider" "2.7.0" - "@walletconnect/utils" "2.7.0" - events "^3.3.0" - -"@walletconnect/events@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/events/-/events-1.0.1.tgz#2b5f9c7202019e229d7ccae1369a9e86bda7816c" - integrity sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ== - dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" - -"@walletconnect/heartbeat@1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@walletconnect/heartbeat/-/heartbeat-1.2.1.tgz#afaa3a53232ae182d7c9cff41c1084472d8f32e9" - integrity sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/time" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/jsonrpc-http-connection@^1.0.4": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.6.tgz#48c41cf3e5ac9add9425420b345615dc438594cd" - integrity sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.1" - cross-fetch "^3.1.4" - tslib "1.14.1" - -"@walletconnect/jsonrpc-provider@^1.0.11", "@walletconnect/jsonrpc-provider@^1.0.12": - version "1.0.12" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.12.tgz#965408d99fc889d49c194cd207804282805f45ed" - integrity sha512-6uI2y5281gloZSzICOjk+CVC7CVu0MhtMt2Yzpj05lPb0pzm/bK2oZ2ibxwLerPrqpNt/5bIFVRmoOgPw1mHAQ== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/safe-json" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/jsonrpc-types@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.2.tgz#b79519f679cd6a5fa4a1bea888f27c1916689a20" - integrity sha512-CZe8tjJX73OWdHjrBHy7HtAapJ2tT0Q3TYhPBhRxi3643lwPIQWC9En45ldY14TZwgSewkbZ0FtGBZK0G7Bbyg== - dependencies: - keyvaluestorage-interface "^1.0.0" - tslib "1.14.1" - -"@walletconnect/jsonrpc-utils@^1.0.6", "@walletconnect/jsonrpc-utils@^1.0.7": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.7.tgz#1812d17c784f1ec0735bf03d0884287f60bfa2ce" - integrity sha512-zJziApzUF/Il4VcwabnaU+0yo1QI4eUkYX99zmCVTHJvZOf2l0zjADf/OpKqWyeNFC3Io56Z/8uJHVtcNVvyFA== - dependencies: - "@walletconnect/environment" "^1.0.1" - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/jsonrpc-ws-connection@^1.0.11": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.11.tgz#1ce59d86f273d576ca73385961303ebd44dd923f" - integrity sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w== - dependencies: - "@walletconnect/jsonrpc-utils" "^1.0.6" - "@walletconnect/safe-json" "^1.0.2" - events "^3.3.0" - tslib "1.14.1" - ws "^7.5.1" - -"@walletconnect/keyvaluestorage@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/keyvaluestorage/-/keyvaluestorage-1.0.2.tgz#92f5ca0f54c1a88a093778842ce0c874d86369c8" - integrity sha512-U/nNG+VLWoPFdwwKx0oliT4ziKQCEoQ27L5Hhw8YOFGA2Po9A9pULUYNWhDgHkrb0gYDNt//X7wABcEWWBd3FQ== - dependencies: - safe-json-utils "^1.1.1" - tslib "1.14.1" - -"@walletconnect/logger@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-2.0.1.tgz#7f489b96e9a1ff6bf3e58f0fbd6d69718bf844a8" - integrity sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ== - dependencies: - pino "7.11.0" - tslib "1.14.1" - -"@walletconnect/relay-api@^1.0.9": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.9.tgz#f8c2c3993dddaa9f33ed42197fc9bfebd790ecaf" - integrity sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg== - dependencies: - "@walletconnect/jsonrpc-types" "^1.0.2" - tslib "1.14.1" - -"@walletconnect/relay-auth@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz#0b5c55c9aa3b0ef61f526ce679f3ff8a5c4c2c7c" - integrity sha512-kKJcS6+WxYq5kshpPaxGHdwf5y98ZwbfuS4EE/NkQzqrDFm5Cj+dP8LofzWvjrrLkZq7Afy7WrQMXdLy8Sx7HQ== - dependencies: - "@stablelib/ed25519" "^1.0.2" - "@stablelib/random" "^1.0.1" - "@walletconnect/safe-json" "^1.0.1" - "@walletconnect/time" "^1.0.2" - tslib "1.14.1" - uint8arrays "^3.0.0" - -"@walletconnect/safe-json@^1.0.1", "@walletconnect/safe-json@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.2.tgz#7237e5ca48046e4476154e503c6d3c914126fa77" - integrity sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA== - dependencies: - tslib "1.14.1" - -"@walletconnect/sign-client@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/sign-client/-/sign-client-2.7.0.tgz#c08c90a1fc95340d5d40d2cfd88f59d4d385a676" - integrity sha512-K99xa6GSFS04U+140yrIEi/VJJJ0Q1ov4jCaiqa9euILDKxlBsM7m5GR+9sq6oYyj18SluJY4CJTdeOXUJlarA== - dependencies: - "@walletconnect/core" "2.7.0" - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.7.0" - "@walletconnect/utils" "2.7.0" - events "^3.3.0" - -"@walletconnect/time@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@walletconnect/time/-/time-1.0.2.tgz#6c5888b835750ecb4299d28eecc5e72c6d336523" - integrity sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g== - dependencies: - tslib "1.14.1" - -"@walletconnect/types@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.7.0.tgz#af639c463d0d80d0fd03da80f2fc593c73a93ae9" - integrity sha512-aMUDUtO79WSBtC/bDetE6aFwdgwJr0tJ8nC8gnAl5ELsrjygEKCn6M8Q+v6nP9svG9yf5Rds4cImxCT6BWwTyw== - dependencies: - "@walletconnect/events" "^1.0.1" - "@walletconnect/heartbeat" "1.2.1" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/keyvaluestorage" "^1.0.2" - "@walletconnect/logger" "^2.0.1" - events "^3.3.0" - -"@walletconnect/universal-provider@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/universal-provider/-/universal-provider-2.7.0.tgz#4bb36b353d2c2d7c466e89e2d8c576727c4388d0" - integrity sha512-aAIudO3ZlKD16X36VnXChpxBB6/JLK1SCJBfidk7E0GE2S4xr1xW5jXGSGS4Z+wIkNZXK0n7ULSK3PZ7mPBdog== - dependencies: - "@walletconnect/jsonrpc-http-connection" "^1.0.4" - "@walletconnect/jsonrpc-provider" "^1.0.11" - "@walletconnect/jsonrpc-types" "^1.0.2" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/logger" "^2.0.1" - "@walletconnect/sign-client" "2.7.0" - "@walletconnect/types" "2.7.0" - "@walletconnect/utils" "2.7.0" - eip1193-provider "1.0.1" - events "^3.3.0" - -"@walletconnect/utils@2.7.0": - version "2.7.0" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.7.0.tgz#18482834b8a27e0515ef160a1ff7e4632c9d77f5" - integrity sha512-k32jrQeyJsNZPdmtmg85Y3QgaS5YfzYSPrAxRC2uUD1ts7rrI6P5GG2iXNs3AvWKOuCgsp/PqU8s7AC7CRUscw== - dependencies: - "@stablelib/chacha20poly1305" "1.0.1" - "@stablelib/hkdf" "1.0.1" - "@stablelib/random" "^1.0.2" - "@stablelib/sha256" "1.0.1" - "@stablelib/x25519" "^1.0.3" - "@walletconnect/jsonrpc-utils" "^1.0.7" - "@walletconnect/relay-api" "^1.0.9" - "@walletconnect/safe-json" "^1.0.2" - "@walletconnect/time" "^1.0.2" - "@walletconnect/types" "2.7.0" - "@walletconnect/window-getters" "^1.0.1" - "@walletconnect/window-metadata" "^1.0.1" - detect-browser "5.3.0" - query-string "7.1.1" - uint8arrays "^3.1.0" - -"@walletconnect/window-getters@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.1.tgz#f36d1c72558a7f6b87ecc4451fc8bd44f63cbbdc" - integrity sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q== - dependencies: - tslib "1.14.1" - -"@walletconnect/window-metadata@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.1.tgz#2124f75447b7e989e4e4e1581d55d25bc75f7be5" - integrity sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA== - dependencies: - "@walletconnect/window-getters" "^1.0.1" - tslib "1.14.1" - -"@web3modal/core@2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.2.1.tgz#290be7e0da628afc7651e552752fa8c1ee22d956" - integrity sha512-B2O1+uwnEA2pD+NH+W7xIUMqAkUOxuw6WuIbXZ96tXQO8Mqm8tkrJ6MoqmIo6ntLwHLXtcjitH//JvJHjWVt6A== - dependencies: - buffer "6.0.3" - valtio "1.10.3" - -"@web3modal/core@2.3.7": - version "2.3.7" - resolved "https://registry.yarnpkg.com/@web3modal/core/-/core-2.3.7.tgz#2c8863489695c3ed4b7b01e416e126cc5c8d18ad" - integrity sha512-ggl9+tkAzz43npj97iTj6p4oQYaklxADQyCKAX7AnMfglZg5bRseMDGnfmpvnjlDn8TI+DGGO6da3ITmYRIDYQ== - dependencies: - buffer "6.0.3" - valtio "1.10.4" - -"@web3modal/standalone@2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@web3modal/standalone/-/standalone-2.2.1.tgz#c6e6849eec86fc001e1b7d5e278420ded542284f" - integrity sha512-pHPL+UykZtOZhEhNl+l3wWnNvZZdm8cgJgVQVo8yL7m4N9kTyRbDArsQenlIeIm2xi0kFncXBJbe1kaxl8AWTA== - dependencies: - "@web3modal/core" "2.2.1" - "@web3modal/ui" "2.2.1" - -"@web3modal/standalone@^2.2.1": - version "2.3.7" - resolved "https://registry.yarnpkg.com/@web3modal/standalone/-/standalone-2.3.7.tgz#2536effb3a7c4b9384fa51c43dc67ff3caed0314" - integrity sha512-zgavWcimRVXnLdup2WQ0fFEnBnH+Wwn+k1/XzhwVpdJ//mrExWNYQaXt139RijxGUcux68ExRCyMqm1jkXTq3g== - dependencies: - "@web3modal/core" "2.3.7" - "@web3modal/ui" "2.3.7" - -"@web3modal/ui@2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.2.1.tgz#92ea69900c4e1b0b6ce9457ea2081b17a5588413" - integrity sha512-7WfynySxcDYFzGTV+9HODKJ85VVVPB8GGcew2JWr9jYcYfRE6KBM75lo+PRb0zdMFRQtSPpU41fRLCk+vBJ4ww== - dependencies: - "@web3modal/core" "2.2.1" - lit "2.6.1" - motion "10.15.5" - qrcode "1.5.1" - -"@web3modal/ui@2.3.7": - version "2.3.7" - resolved "https://registry.yarnpkg.com/@web3modal/ui/-/ui-2.3.7.tgz#0867ec4262a5a221418acdb571101d05628e8d62" - integrity sha512-mNDXY4ElcvXXixKHZTLcEjKC9zs3O8BD1EtaC8cKIy+RKFyHMpLB1DOQmz77tn91jNjOkrvEryqUwCbsJ7hjfA== - dependencies: - "@web3modal/core" "2.3.7" - lit "2.7.3" - motion "10.15.5" - qrcode "1.5.3" - -"@webassemblyjs/ast@1.11.5", "@webassemblyjs/ast@^1.11.5": +"@webassemblyjs/ast@^1.11.5", "@webassemblyjs/ast@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.5.tgz#6e818036b94548c1fb53b754b5cae3c9b208281c" + resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz" integrity sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ== dependencies: "@webassemblyjs/helper-numbers" "1.11.5" @@ -3579,22 +2299,22 @@ "@webassemblyjs/floating-point-hex-parser@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz#e85dfdb01cad16b812ff166b96806c050555f1b4" + resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz" integrity sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ== "@webassemblyjs/helper-api-error@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz#1e82fa7958c681ddcf4eabef756ce09d49d442d1" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz" integrity sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA== "@webassemblyjs/helper-buffer@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz#91381652ea95bb38bbfd270702351c0c89d69fba" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz" integrity sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg== "@webassemblyjs/helper-numbers@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz#23380c910d56764957292839006fecbe05e135a9" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz" integrity sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA== dependencies: "@webassemblyjs/floating-point-hex-parser" "1.11.5" @@ -3603,12 +2323,12 @@ "@webassemblyjs/helper-wasm-bytecode@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz#e258a25251bc69a52ef817da3001863cc1c24b9f" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz" integrity sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA== "@webassemblyjs/helper-wasm-section@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz#966e855a6fae04d5570ad4ec87fbcf29b42ba78e" + resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz" integrity sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA== dependencies: "@webassemblyjs/ast" "1.11.5" @@ -3618,26 +2338,26 @@ "@webassemblyjs/ieee754@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz#b2db1b33ce9c91e34236194c2b5cba9b25ca9d60" + resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz" integrity sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg== dependencies: "@xtuc/ieee754" "^1.2.0" "@webassemblyjs/leb128@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.5.tgz#482e44d26b6b949edf042a8525a66c649e38935a" + resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz" integrity sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ== dependencies: "@xtuc/long" "4.2.2" "@webassemblyjs/utf8@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.5.tgz#83bef94856e399f3740e8df9f63bc47a987eae1a" + resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz" integrity sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ== "@webassemblyjs/wasm-edit@^1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz#93ee10a08037657e21c70de31c47fdad6b522b2d" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz" integrity sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ== dependencies: "@webassemblyjs/ast" "1.11.5" @@ -3651,7 +2371,7 @@ "@webassemblyjs/wasm-gen@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz#ceb1c82b40bf0cf67a492c53381916756ef7f0b1" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz" integrity sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA== dependencies: "@webassemblyjs/ast" "1.11.5" @@ -3662,7 +2382,7 @@ "@webassemblyjs/wasm-opt@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz#b52bac29681fa62487e16d3bb7f0633d5e62ca0a" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz" integrity sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw== dependencies: "@webassemblyjs/ast" "1.11.5" @@ -3670,9 +2390,9 @@ "@webassemblyjs/wasm-gen" "1.11.5" "@webassemblyjs/wasm-parser" "1.11.5" -"@webassemblyjs/wasm-parser@1.11.5", "@webassemblyjs/wasm-parser@^1.11.5": +"@webassemblyjs/wasm-parser@^1.11.5", "@webassemblyjs/wasm-parser@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz#7ba0697ca74c860ea13e3ba226b29617046982e2" + resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz" integrity sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew== dependencies: "@webassemblyjs/ast" "1.11.5" @@ -3684,7 +2404,7 @@ "@webassemblyjs/wast-printer@1.11.5": version "1.11.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz#7a5e9689043f3eca82d544d7be7a8e6373a6fa98" + resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz" integrity sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA== dependencies: "@webassemblyjs/ast" "1.11.5" @@ -3692,22 +2412,22 @@ "@xtuc/ieee754@^1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== "@xtuc/long@4.2.2": version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== abab@^2.0.3, abab@^2.0.5: version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: mime-types "~2.1.34" @@ -3715,7 +2435,7 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8: acorn-globals@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz" integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: acorn "^7.1.1" @@ -3723,76 +2443,71 @@ acorn-globals@^6.0.0: acorn-import-assertions@^1.7.6: version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + resolved "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz" integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== acorn-jsx@^5.3.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-walk@^7.1.1: version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: + version "8.8.2" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz" + integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== + acorn@^7.1.1: version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: - version "8.8.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" - integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== - address@^1.0.1, address@^1.1.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" + resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== adjust-sourcemap-loader@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz" integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== dependencies: loader-utils "^2.0.0" regex-parser "^2.2.11" -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== ajv-keywords@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz" integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1: version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" @@ -3800,9 +2515,19 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: +ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0: version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^8.6.0, ajv@>=8: + version "8.12.0" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" @@ -3812,113 +2537,103 @@ ajv@^8.0.0, ajv@^8.6.0, ajv@^8.9.0: ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-html-community@^0.0.8: version "0.0.8" - resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz" integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== any-promise@^1.0.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== -any-signal@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/any-signal/-/any-signal-3.0.1.tgz#49cae34368187a3472e31de28fb5cb1430caa9a6" - integrity sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg== - anymatch@^3.0.3, anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" picomatch "^2.0.4" -apg-js@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/apg-js/-/apg-js-4.1.3.tgz#0cb9dc99f8830740d7a8f9fc0048fa618ae4d199" - integrity sha512-XYyDcoBho8OpnWPRnedMwyL+76ovCtsESerHZEfY39dO4IrEqN97mdEYkOyHa0XTX5+3+U5FmpqPLttK0f7n6g== - arg@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== argparse@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: sprintf-js "~1.0.2" argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== aria-query@^5.0.0, aria-query@^5.1.3: version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz" integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== dependencies: deep-equal "^2.0.5" array-buffer-byte-length@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== dependencies: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-flatten@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + array-includes@^3.1.5, array-includes@^3.1.6: version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" + resolved "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz" integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== dependencies: call-bind "^1.0.2" @@ -3929,12 +2644,12 @@ array-includes@^3.1.5, array-includes@^3.1.6: array-union@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== array.prototype.flat@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" + resolved "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz" integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== dependencies: call-bind "^1.0.2" @@ -3944,7 +2659,7 @@ array.prototype.flat@^1.3.1: array.prototype.flatmap@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" + resolved "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz" integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== dependencies: call-bind "^1.0.2" @@ -3954,7 +2669,7 @@ array.prototype.flatmap@^1.3.1: array.prototype.reduce@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac" + resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz" integrity sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q== dependencies: call-bind "^1.0.2" @@ -3965,7 +2680,7 @@ array.prototype.reduce@^1.0.5: array.prototype.tosorted@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532" + resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz" integrity sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ== dependencies: call-bind "^1.0.2" @@ -3976,37 +2691,32 @@ array.prototype.tosorted@^1.1.1: asap@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== ast-types-flow@^0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + resolved "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz" integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== async@^3.2.3: version "3.2.4" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - autoprefixer@^10.4.13: version "10.4.14" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz" integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== dependencies: browserslist "^4.21.5" @@ -4018,31 +2728,24 @@ autoprefixer@^10.4.13: available-typed-arrays@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axe-core@^4.6.2: version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" + resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz" integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== -axios@^0.21.0, axios@^0.21.2: - version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" - integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== - dependencies: - follow-redirects "^1.14.0" - axobject-query@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + resolved "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz" integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== dependencies: deep-equal "^2.0.5" babel-jest@^27.4.2, babel-jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz" integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== dependencies: "@jest/transform" "^27.5.1" @@ -4056,7 +2759,7 @@ babel-jest@^27.4.2, babel-jest@^27.5.1: babel-loader@^8.2.3: version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" + resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz" integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== dependencies: find-cache-dir "^3.3.1" @@ -4066,7 +2769,7 @@ babel-loader@^8.2.3: babel-plugin-istanbul@^6.1.1: version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== dependencies: "@babel/helper-plugin-utils" "^7.0.0" @@ -4077,7 +2780,7 @@ babel-plugin-istanbul@^6.1.1: babel-plugin-jest-hoist@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz" integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== dependencies: "@babel/template" "^7.3.3" @@ -4087,7 +2790,7 @@ babel-plugin-jest-hoist@^27.5.1: babel-plugin-macros@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" + resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz" integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg== dependencies: "@babel/runtime" "^7.12.5" @@ -4096,12 +2799,12 @@ babel-plugin-macros@^3.1.0: babel-plugin-named-asset-import@^0.3.8: version "0.3.8" - resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2" + resolved "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz" integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q== babel-plugin-polyfill-corejs2@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz" integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== dependencies: "@babel/compat-data" "^7.17.7" @@ -4110,7 +2813,7 @@ babel-plugin-polyfill-corejs2@^0.3.3: babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz#56ad88237137eade485a71b52f72dbed57c6230a" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz" integrity sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" @@ -4118,19 +2821,19 @@ babel-plugin-polyfill-corejs3@^0.6.0: babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz" integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" babel-plugin-transform-react-remove-prop-types@^0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a" + resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz" integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA== babel-preset-current-node-syntax@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" @@ -4148,7 +2851,7 @@ babel-preset-current-node-syntax@^1.0.0: babel-preset-jest@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz" integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== dependencies: babel-plugin-jest-hoist "^27.5.1" @@ -4156,7 +2859,7 @@ babel-preset-jest@^27.5.1: babel-preset-react-app@^10.0.1: version "10.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584" + resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz" integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg== dependencies: "@babel/core" "^7.16.0" @@ -4178,27 +2881,17 @@ babel-preset-react-app@^10.0.1: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - batch@0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz" integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== -bech32@1.1.4, bech32@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - bfj@^7.0.2: version "7.0.2" - resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2" + resolved "https://registry.npmjs.org/bfj/-/bfj-7.0.2.tgz" integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw== dependencies: bluebird "^3.5.5" @@ -4208,62 +2901,22 @@ bfj@^7.0.2: big.js@^5.2.2: version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - -blob-to-it@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/blob-to-it/-/blob-to-it-1.0.4.tgz#f6caf7a4e90b7bb9215fa6a318ed6bd8ad9898cb" - integrity sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA== - dependencies: - browser-readablestream-to-it "^1.0.3" - -blockstore-core@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/blockstore-core/-/blockstore-core-3.0.0.tgz#08f52d954fe079d2735b745d218e737071badd97" - integrity sha512-5ZZB5nh6kErcjZ/CTK6lCwTIGlPdkTXbD8+2xLC4Fm0WGh7g2e2lW2bfURw7mvnPtSX1xV+sN4V2ndowSgIiHQ== - dependencies: - err-code "^3.0.1" - interface-blockstore "^4.0.0" - interface-store "^3.0.0" - it-all "^2.0.0" - it-drain "^2.0.0" - it-filter "^2.0.0" - it-take "^2.0.0" - multiformats "^11.0.0" - bluebird@^3.5.5: version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - body-parser@1.20.1: version "1.20.1" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== dependencies: bytes "3.1.2" @@ -4281,7 +2934,7 @@ body-parser@1.20.1: bonjour-service@^1.0.11: version "1.1.1" - resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.1.1.tgz#960948fa0e0153f5d26743ab15baf8e33752c135" + resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz" integrity sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg== dependencies: array-flatten "^2.1.2" @@ -4291,12 +2944,12 @@ bonjour-service@^1.0.11: boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -4304,36 +2957,26 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@^3.0.2, braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - browser-process-hrtime@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-readablestream-to-it@^1.0.0, browser-readablestream-to-it@^1.0.1, browser-readablestream-to-it@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz#ac3e406c7ee6cdf0a502dd55db33bab97f7fba76" - integrity sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw== - -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4: version "4.21.5" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz" integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== dependencies: caniuse-lite "^1.0.30001449" @@ -4343,42 +2986,34 @@ browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.18.1, browserslist@^4 bser@2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz" integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== dependencies: node-int64 "^0.4.0" buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@6.0.3, buffer@^6.0.1, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - builtin-modules@^3.1.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== bytes@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz" integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw== bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -4386,12 +3021,12 @@ call-bind@^1.0.0, call-bind@^1.0.2: callsites@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== camel-case@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz" integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== dependencies: pascal-case "^3.1.2" @@ -4399,22 +3034,22 @@ camel-case@^4.1.2: camelcase-css@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" + resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== camelcase@^6.2.0, camelcase@^6.2.1: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-api@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz" integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== dependencies: browserslist "^4.0.0" @@ -4424,31 +3059,35 @@ caniuse-api@^3.0.0: caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: version "1.0.30001482" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz#8b3fad73dc35b2674a5c96df2d4f9f1c561435de" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz" integrity sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" + resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz" integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== -cborg@^1.5.4, cborg@^1.6.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/cborg/-/cborg-1.10.1.tgz#24cfe52c69ec0f66f95e23dc57f2086954c8d718" - integrity sha512-et6Qm8MOUY2kCWa5GKk2MlBVoPjHv0hQBmlzI/Z7+5V3VJCeIkGehIB3vWknNsm2kOkAIs6wEKJFJo8luWQQ/w== - -chalk@^2.0.0, chalk@^2.4.1: +chalk@^2.0.0: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== dependencies: ansi-styles "^4.1.0" @@ -4456,7 +3095,7 @@ chalk@^3.0.0: chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -4464,22 +3103,22 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: char-regex@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== char-regex@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e" + resolved "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz" integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw== check-types@^11.1.1: version "11.2.2" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.2.tgz#7afc0b6a860d686885062f2dba888ba5710335b4" + resolved "https://registry.npmjs.org/check-types/-/check-types-11.2.2.tgz" integrity sha512-HBiYvXvn9Z70Z88XKjz3AEKd4HJhBXsa3j7xFnITAzoS8+q6eIGi8qDB8FKPBAjtuxjI/zFpwuiCb8oDtKOYrA== chokidar@^3.4.2, chokidar@^3.5.3: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -4494,38 +3133,29 @@ chokidar@^3.4.2, chokidar@^3.5.3: chrome-trace-event@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz" integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== ci-info@^3.2.0: version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz" integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== cjs-module-lexer@^1.0.0: version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== clean-css@^5.2.2: version "5.3.2" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224" + resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz" integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww== dependencies: source-map "~0.6.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -4534,12 +3164,12 @@ cliui@^7.0.2: co@^4.6.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== coa@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz" integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== dependencies: "@types/q" "^1.5.1" @@ -4548,95 +3178,95 @@ coa@^2.0.2: collect-v8-coverage@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + colord@^2.9.1: version "2.9.3" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== colorette@^2.0.10: version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" commander@^2.20.0: version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== commander@^4.0.0: version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== commander@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== commander@^8.3.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== common-path-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + resolved "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz" integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== common-tags@^1.8.0: version "1.8.2" - resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz" integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== commondir@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== compressible@~2.0.16: version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + resolved "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz" integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== dependencies: mime-db ">= 1.43.0 < 2" compression@^1.7.4: version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + resolved "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz" integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== dependencies: accepts "~1.3.5" @@ -4649,71 +3279,71 @@ compression@^1.7.4: concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== confusing-browser-globals@^1.0.11: version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== connect-history-api-fallback@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== content-disposition@0.5.4: version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.9.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== cookie-signature@1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== cookie@0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== core-js-compat@^3.25.1: version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.1.tgz#961541e22db9c27fc48bfc13a3cafa8734171dfe" + resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.1.tgz" integrity sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw== dependencies: browserslist "^4.21.5" core-js-pure@^3.23.3: version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.30.1.tgz#7d93dc89e7d47b8ef05d7e79f507b0e99ea77eec" + resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.30.1.tgz" integrity sha512-nXBEVpmUnNRhz83cHd9JRQC52cTMcuXAmR56+9dSMpRdpeA4I1PX6yjmhd71Eyc/wXNsdBdUDIj1QTIeZpU5Tg== core-js@^3.19.2: version "3.30.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.1.tgz#fc9c5adcc541d8e9fa3e381179433cbf795628ba" + resolved "https://registry.npmjs.org/core-js/-/core-js-3.30.1.tgz" integrity sha512-ZNS5nbiSwDTq4hFosEDqm65izl2CWmLz0hARJMyNQBgkUZMIF51cQiMvIQKA6hvuaeWxQDP3hEedM1JZIgTldQ== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== cosmiconfig@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: "@types/parse-json" "^4.0.0" @@ -4724,7 +3354,7 @@ cosmiconfig@^6.0.0: cosmiconfig@^7.0.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz" integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== dependencies: "@types/parse-json" "^4.0.0" @@ -4733,24 +3363,9 @@ cosmiconfig@^7.0.0: path-type "^4.0.0" yaml "^1.10.0" -cosmjs-types@^0.7.1: - version "0.7.2" - resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.7.2.tgz#a757371abd340949c5bd5d49c6f8379ae1ffd7e2" - integrity sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA== - dependencies: - long "^4.0.0" - protobufjs "~6.11.2" - -cross-fetch@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" - integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== - dependencies: - node-fetch "2.6.7" - cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" @@ -4759,31 +3374,31 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: crypto-random-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== css-blank-pseudo@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz" integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== dependencies: postcss-selector-parser "^6.0.9" css-declaration-sorter@^6.3.1: version "6.4.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz#630618adc21724484b3e9505bce812def44000ad" + resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz" integrity sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew== css-has-pseudo@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz" integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== dependencies: postcss-selector-parser "^6.0.9" css-loader@^6.5.1: version "6.7.3" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.3.tgz#1e8799f3ccc5874fdd55461af51137fcc5befbcd" + resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz" integrity sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ== dependencies: icss-utils "^5.1.0" @@ -4797,7 +3412,7 @@ css-loader@^6.5.1: css-minimizer-webpack-plugin@^3.2.0: version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz" integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== dependencies: cssnano "^5.0.6" @@ -4809,17 +3424,17 @@ css-minimizer-webpack-plugin@^3.2.0: css-prefers-color-scheme@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz" integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== css-select-base-adapter@^0.1.1: version "0.1.1" - resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz" integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== css-select@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz" integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== dependencies: boolbase "^1.0.0" @@ -4829,7 +3444,7 @@ css-select@^2.0.0: css-select@^4.1.3: version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== dependencies: boolbase "^1.0.0" @@ -4838,50 +3453,50 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-tree@1.0.0-alpha.37: - version "1.0.0-alpha.37" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" - integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== - dependencies: - mdn-data "2.0.4" - source-map "^0.6.1" - css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: mdn-data "2.0.14" source-map "^0.6.1" +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + css-what@^3.2.1: version "3.4.2" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" + resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== css-what@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== css.escape@^1.5.1: version "1.5.1" - resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== cssdb@^7.1.0: version "7.5.4" - resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.5.4.tgz#e34dafee5184d67634604e345e389ca79ac179ea" + resolved "https://registry.npmjs.org/cssdb/-/cssdb-7.5.4.tgz" integrity sha512-fGD+J6Jlq+aurfE1VDXlLS4Pt0VtNlu2+YgfGOdMxRyl/HQ9bDiHTwSck1Yz8A97Dt/82izSK6Bp/4nVqacOsg== cssesc@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== cssnano-preset-default@^5.2.14: version "5.2.14" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz" integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== dependencies: css-declaration-sorter "^6.3.1" @@ -4916,12 +3531,12 @@ cssnano-preset-default@^5.2.14: cssnano-utils@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^5.0.6: version "5.1.15" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz" integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== dependencies: cssnano-preset-default "^5.2.14" @@ -4930,99 +3545,88 @@ cssnano@^5.0.6: csso@^4.0.2, csso@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== dependencies: css-tree "^1.1.2" cssom@^0.4.4: version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== cssom@~0.3.6: version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== cssstyle@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz" integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" csstype@^3.0.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz" integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ== -dag-jose@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dag-jose/-/dag-jose-1.0.0.tgz#52e42d70cb5bee31ae4e8e3ab860615568d7ad73" - integrity sha512-U0b/YsIPBp6YZNTFrVjwLZAlY3qGRxZTIEcM/CcQmrVrCWq9MWQq9pheXVSPLIhF4SNwzp2SikPva4/BIrJY+g== - dependencies: - "@ipld/dag-cbor" "^6.0.3" - multiformats "^9.0.2" - damerau-levenshtein@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + resolved "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== data-urls@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz" integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: abab "^2.0.3" whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" -debug@2.6.9, debug@^2.6.0: +debug@^2.6.0: version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - debug@^3.2.7: version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@4: + version "4.3.4" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" decimal.js@^10.2.1: version "10.4.3" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" + resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -decode-uri-component@^0.2.0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" - integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== - dedent@^0.7.0: version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-equal@^2.0.5: version "2.2.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.1.tgz#c72ab22f3a7d3503a4ca87dde976fe9978816739" + resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.1.tgz" integrity sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ== dependencies: array-buffer-byte-length "^1.0.0" @@ -5046,29 +3650,29 @@ deep-equal@^2.0.5: deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== deepmerge@^4.2.2: version "4.3.1" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== default-gateway@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz" integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== dependencies: execa "^5.0.0" define-lazy-prop@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== dependencies: has-property-descriptors "^1.0.0" @@ -5076,42 +3680,37 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + destroy@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -detect-browser@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.3.0.tgz#9705ef2bddf46072d0f7265a1fe300e36fe7ceca" - integrity sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w== - detect-newline@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== detect-node@^2.0.4: version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== detect-port-alt@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" + resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz" integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== dependencies: address "^1.0.1" @@ -5119,127 +3718,113 @@ detect-port-alt@^1.1.6: didyoumean@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" + resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== diff-sequences@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== diff-sequences@^29.4.3: version "29.4.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" + resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz" integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== -dijkstrajs@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz#4c8dbdea1f0f6478bff94d9c49c784d623e4fc23" - integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA== - dir-glob@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: path-type "^4.0.0" dlv@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== dns-equal@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + resolved "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz" integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== -dns-over-http-resolver@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz#194d5e140a42153f55bb79ac5a64dd2768c36af9" - integrity sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA== - dependencies: - debug "^4.3.1" - native-fetch "^3.0.0" - receptacle "^1.3.2" - dns-packet@^5.2.2: version "5.6.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.0.tgz#2202c947845c7a63c23ece58f2f70ff6ab4c2f7d" + resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz" integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" doctrine@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz" integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== dependencies: esutils "^2.0.2" doctrine@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9: version "0.5.16" - resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453" + resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz" integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg== dom-converter@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz" integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== dependencies: utila "~0.4" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz" integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== dependencies: domelementtype "^2.0.1" domhandler "^4.2.0" entities "^2.0.0" -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== +dom-serializer@0: + version "0.2.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== +domelementtype@1: + version "1.3.1" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + domexception@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz" integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== dependencies: webidl-conversions "^5.0.0" domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz" integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== dependencies: domelementtype "^2.2.0" domutils@^1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz" integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== dependencies: dom-serializer "0" @@ -5247,7 +3832,7 @@ domutils@^1.7.0: domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz" integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== dependencies: dom-serializer "^1.0.1" @@ -5256,7 +3841,7 @@ domutils@^2.5.2, domutils@^2.8.0: dot-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz" integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== dependencies: no-case "^3.0.4" @@ -5264,125 +3849,69 @@ dot-case@^3.0.4: dotenv-expand@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz" integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== dotenv@^10.0.0: version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== duplexer@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" - integrity sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.0" - ee-first@1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -eip1193-provider@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/eip1193-provider/-/eip1193-provider-1.0.1.tgz#420d29cf4f6c443e3f32e718fb16fafb250637c3" - integrity sha512-kSuqwQ26d7CzuS/t3yRXo2Su2cVH0QfvyKbr2H7Be7O5YDyIq4hQGCNTo5wRdP07bt+E2R/8nPCzey4ojBHf7g== - dependencies: - "@json-rpc-tools/provider" "^1.5.5" - ejs@^3.1.6: version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" + resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz" integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== dependencies: jake "^10.8.5" -electron-fetch@^1.7.2: - version "1.9.1" - resolved "https://registry.yarnpkg.com/electron-fetch/-/electron-fetch-1.9.1.tgz#e28bfe78d467de3f2dec884b1d72b8b05322f30f" - integrity sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA== - dependencies: - encoding "^0.1.13" - electron-to-chromium@^1.4.284: version "1.4.382" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.382.tgz#87e659b0f0d5f7b19759038871bac0a327191f82" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.382.tgz" integrity sha512-czMavlW52VIPgutbVL9JnZIZuFijzsG1ww/1z2Otu1r1q+9Qe2bTsH3My3sZarlvwyqHM6+mnZfEnt2Vr4dsIg== -elliptic@6.5.4, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emittery@^0.10.2: version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz" integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== emittery@^0.8.1: version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz" integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== emojis-list@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== -encode-utf8@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" - integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== - encodeurl@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== -encoding@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - enhanced-resolve@^5.13.0: version "5.13.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz#26d1ecc448c02de997133217b5c1053f34a0a275" + resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz" integrity sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg== dependencies: graceful-fs "^4.2.4" @@ -5390,31 +3919,26 @@ enhanced-resolve@^5.13.0: entities@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -err-code@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/err-code/-/err-code-3.0.1.tgz#a444c7b992705f2b120ee320b09972eef331c920" - integrity sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA== - error-ex@^1.3.1: version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: is-arrayish "^0.2.1" error-stack-parser@^2.0.6: version "2.1.4" - resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286" + resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz" integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ== dependencies: stackframe "^1.3.4" es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21.2: version "1.21.2" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz" integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== dependencies: array-buffer-byte-length "^1.0.0" @@ -5454,12 +3978,12 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4, es-abstract@^1.21 es-array-method-boxes-properly@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz" integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz" integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== dependencies: call-bind "^1.0.2" @@ -5474,12 +3998,12 @@ es-get-iterator@^1.1.3: es-module-lexer@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" + resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz" integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== es-set-tostringtag@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== dependencies: get-intrinsic "^1.1.3" @@ -5488,14 +4012,14 @@ es-set-tostringtag@^2.0.1: es-shim-unscopables@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== dependencies: has "^1.0.3" es-to-primitive@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== dependencies: is-callable "^1.1.4" @@ -5504,32 +4028,32 @@ es-to-primitive@^1.2.1: escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-html@~1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escodegen@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz" integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== dependencies: esprima "^4.0.1" @@ -5541,7 +4065,7 @@ escodegen@^2.0.0: eslint-config-react-app@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4" + resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz" integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA== dependencies: "@babel/core" "^7.16.0" @@ -5561,7 +4085,7 @@ eslint-config-react-app@^7.0.1: eslint-import-resolver-node@^0.3.7: version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" + resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz" integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== dependencies: debug "^3.2.7" @@ -5570,14 +4094,14 @@ eslint-import-resolver-node@^0.3.7: eslint-module-utils@^2.7.4: version "2.8.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49" + resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz" integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw== dependencies: debug "^3.2.7" eslint-plugin-flowtype@^8.0.3: version "8.0.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz#e1557e37118f24734aa3122e7536a038d34a4912" + resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz" integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ== dependencies: lodash "^4.17.21" @@ -5585,7 +4109,7 @@ eslint-plugin-flowtype@^8.0.3: eslint-plugin-import@^2.25.3: version "2.27.5" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65" + resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz" integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow== dependencies: array-includes "^3.1.6" @@ -5606,14 +4130,14 @@ eslint-plugin-import@^2.25.3: eslint-plugin-jest@^25.3.0: version "25.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz#ff4ac97520b53a96187bad9c9814e7d00de09a6a" + resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz" integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ== dependencies: "@typescript-eslint/experimental-utils" "^5.0.0" eslint-plugin-jsx-a11y@^6.5.1: version "6.7.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976" + resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz" integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA== dependencies: "@babel/runtime" "^7.20.7" @@ -5635,12 +4159,12 @@ eslint-plugin-jsx-a11y@^6.5.1: eslint-plugin-react-hooks@^4.3.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz" integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-react@^7.27.1: version "7.32.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" + resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz" integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg== dependencies: array-includes "^3.1.6" @@ -5661,14 +4185,14 @@ eslint-plugin-react@^7.27.1: eslint-plugin-testing-library@^5.0.1: version "5.10.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.3.tgz#e613fbaf9a145e9eef115d080b32cb488fae622e" + resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.3.tgz" integrity sha512-0yhsKFsjHLud5PM+f2dWr9K3rqYzMy4cSHs3lcmFYMa1CdSzRvHGgXvsFarBjZ41gU8jhTdMIkg8jHLxGJqLqw== dependencies: "@typescript-eslint/utils" "^5.58.0" -eslint-scope@5.1.1, eslint-scope@^5.1.1: +eslint-scope@^5.1.1, eslint-scope@5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: esrecurse "^4.3.0" @@ -5676,7 +4200,7 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1: eslint-scope@^7.2.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.0.tgz#f21ebdafda02352f103634b96dd47d9f81ca117b" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz" integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw== dependencies: esrecurse "^4.3.0" @@ -5684,17 +4208,17 @@ eslint-scope@^7.2.0: eslint-visitor-keys@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.0: version "3.4.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz" integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ== eslint-webpack-plugin@^3.1.1: version "3.2.0" - resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c" + resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz" integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w== dependencies: "@types/eslint" "^7.29.0 || ^8.4.1" @@ -5703,9 +4227,9 @@ eslint-webpack-plugin@^3.1.1: normalize-path "^3.0.0" schema-utils "^4.0.0" -eslint@^8.3.0: +eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, "eslint@>= 6": version "8.39.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.39.0.tgz#7fd20a295ef92d43809e914b70c39fd5a23cf3f1" + resolved "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz" integrity sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og== dependencies: "@eslint-community/eslint-utils" "^4.2.0" @@ -5751,7 +4275,7 @@ eslint@^8.3.0: espree@^9.5.1: version "9.5.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.5.1.tgz#4f26a4d5f18905bf4f2e0bd99002aab807e96dd4" + resolved "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz" integrity sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg== dependencies: acorn "^8.8.0" @@ -5760,97 +4284,61 @@ espree@^9.5.1: esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== esquery@^1.4.2: version "1.5.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== dependencies: estraverse "^5.1.0" esrecurse@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: estraverse "^5.2.0" estraverse@^4.1.1: version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== estree-walker@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz" integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== esutils@^2.0.2: version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== etag@~1.8.1: version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -ethers@^5.7.1: - version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" - integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== - dependencies: - "@ethersproject/abi" "5.7.0" - "@ethersproject/abstract-provider" "5.7.0" - "@ethersproject/abstract-signer" "5.7.0" - "@ethersproject/address" "5.7.0" - "@ethersproject/base64" "5.7.0" - "@ethersproject/basex" "5.7.0" - "@ethersproject/bignumber" "5.7.0" - "@ethersproject/bytes" "5.7.0" - "@ethersproject/constants" "5.7.0" - "@ethersproject/contracts" "5.7.0" - "@ethersproject/hash" "5.7.0" - "@ethersproject/hdnode" "5.7.0" - "@ethersproject/json-wallets" "5.7.0" - "@ethersproject/keccak256" "5.7.0" - "@ethersproject/logger" "5.7.0" - "@ethersproject/networks" "5.7.1" - "@ethersproject/pbkdf2" "5.7.0" - "@ethersproject/properties" "5.7.0" - "@ethersproject/providers" "5.7.2" - "@ethersproject/random" "5.7.0" - "@ethersproject/rlp" "5.7.0" - "@ethersproject/sha2" "5.7.0" - "@ethersproject/signing-key" "5.7.0" - "@ethersproject/solidity" "5.7.0" - "@ethersproject/strings" "5.7.0" - "@ethersproject/transactions" "5.7.0" - "@ethersproject/units" "5.7.0" - "@ethersproject/wallet" "5.7.0" - "@ethersproject/web" "5.7.1" - "@ethersproject/wordlists" "5.7.0" - eventemitter3@^4.0.0: version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.2.0, events@^3.3.0: +events@^3.2.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== execa@^5.0.0: version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: cross-spawn "^7.0.3" @@ -5865,12 +4353,12 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expect@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz" integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== dependencies: "@jest/types" "^27.5.1" @@ -5880,7 +4368,7 @@ expect@^27.5.1: expect@^29.0.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" + resolved "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz" integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg== dependencies: "@jest/expect-utils" "^29.5.0" @@ -5891,7 +4379,7 @@ expect@^29.0.0: express@^4.17.3: version "4.18.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== dependencies: accepts "~1.3.8" @@ -5928,17 +4416,12 @@ express@^4.17.3: fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-fifo@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.2.0.tgz#2ee038da2468e8623066dee96958b0c1763aa55a" - integrity sha512-NcvQXt7Cky1cNau15FWy64IjuO8X0JijhTBBrJj1YlxlDfRkJXNaK9RFUjwpfDPzMdv7wB38jr53l9tkNLxnWg== - fast-glob@^3.2.12, fast-glob@^3.2.9: version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz" integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== dependencies: "@nodelib/fs.stat" "^2.0.2" @@ -5949,50 +4432,45 @@ fast-glob@^3.2.12, fast-glob@^3.2.9: fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-redact@^3.0.0: - version "3.1.2" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.1.2.tgz#d58e69e9084ce9fa4c1a6fa98a3e1ecf5d7839aa" - integrity sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw== - fastq@^1.6.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz" integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== dependencies: reusify "^1.0.4" faye-websocket@^0.11.3: version "0.11.4" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz" integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== dependencies: websocket-driver ">=0.5.1" fb-watchman@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz" integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== dependencies: bser "2.1.1" file-entry-cache@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: flat-cache "^3.0.4" file-loader@^6.2.0: version "6.2.0" - resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz" integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== dependencies: loader-utils "^2.0.0" @@ -6000,31 +4478,26 @@ file-loader@^6.2.0: filelist@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + resolved "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz" integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: minimatch "^5.0.1" filesize@^8.0.6: version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" + resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz" integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== - finalhandler@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" @@ -6037,7 +4510,7 @@ finalhandler@1.2.0: find-cache-dir@^3.3.1: version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz" integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== dependencies: commondir "^1.0.1" @@ -6046,14 +4519,14 @@ find-cache-dir@^3.3.1: find-up@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz" integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== dependencies: locate-path "^3.0.0" find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== dependencies: locate-path "^5.0.0" @@ -6061,7 +4534,7 @@ find-up@^4.0.0, find-up@^4.1.0: find-up@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -6069,7 +4542,7 @@ find-up@^5.0.0: flat-cache@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: flatted "^3.1.0" @@ -6077,24 +4550,24 @@ flat-cache@^3.0.4: flatted@^3.1.0: version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz" integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== -follow-redirects@^1.0.0, follow-redirects@^1.14.0: +follow-redirects@^1.0.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== for-each@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" fork-ts-checker-webpack-plugin@^6.5.0: version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" + resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz" integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== dependencies: "@babel/code-frame" "^7.8.3" @@ -6113,7 +4586,7 @@ fork-ts-checker-webpack-plugin@^6.5.0: form-data@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: asynckit "^0.4.0" @@ -6122,22 +4595,22 @@ form-data@^3.0.0: forwarded@0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fraction.js@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz" integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== fresh@0.5.2: version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs-extra@^10.0.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -6146,7 +4619,7 @@ fs-extra@^10.0.0: fs-extra@^9.0.0, fs-extra@^9.0.1: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -6156,27 +4629,27 @@ fs-extra@^9.0.0, fs-extra@^9.0.1: fs-monkey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" + resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz" integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q== fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== function.prototype.name@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== dependencies: call-bind "^1.0.2" @@ -6186,51 +4659,46 @@ function.prototype.name@^1.1.5: functions-have-names@^1.2.2, functions-have-names@^1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== gensync@^1.0.0-beta.2: version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz" integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q== dependencies: function-bind "^1.1.1" has "^1.0.3" has-symbols "^1.0.3" -get-iterator@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-iterator/-/get-iterator-1.0.2.tgz#cd747c02b4c084461fac14f48f6b45a80ed25c82" - integrity sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg== - get-own-enumerable-property-symbols@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz" integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== get-package-type@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== get-stream@^6.0.0: version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== get-symbol-description@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== dependencies: call-bind "^1.0.2" @@ -6238,57 +4706,57 @@ get-symbol-description@^1.0.0: glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob-parent@^6.0.2: version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== dependencies: is-glob "^4.0.3" glob-to-regexp@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== +glob@7.1.6: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.1.1" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" global-modules@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz" integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== dependencies: global-prefix "^3.0.0" global-prefix@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz" integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== dependencies: ini "^1.3.5" @@ -6297,26 +4765,26 @@ global-prefix@^3.0.0: globals@^11.1.0: version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0: version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" + resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz" integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== dependencies: type-fest "^0.20.2" -globalthis@^1.0.1, globalthis@^1.0.3: +globalthis@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== dependencies: define-properties "^1.1.3" globby@^11.0.4, globby@^11.1.0: version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== dependencies: array-union "^2.1.0" @@ -6328,127 +4796,97 @@ globby@^11.0.4, globby@^11.1.0: gopd@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== dependencies: get-intrinsic "^1.1.3" graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== grapheme-splitter@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== gzip-size@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz" integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== dependencies: duplexer "^0.1.2" -hamt-sharding@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-3.0.2.tgz#a3fba1e4e6b58469388a0e1458768c78c0cd95f6" - integrity sha512-f0DzBD2tSmLFdFsLAvOflIBqFPjerbA7BfmwO8mVho/5hXwgyyYhv+ijIzidQf/DpDX3bRjAQvhGoBFj+DBvPw== - dependencies: - sparse-array "^1.3.1" - uint8arrays "^4.0.2" - handle-thing@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== harmony-reflect@^1.4.6: version "1.6.2" - resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" + resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz" integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g== has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== dependencies: get-intrinsic "^1.1.1" has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has-tostringtag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== dependencies: has-symbols "^1.0.2" has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - he@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -hey-listen@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68" - integrity sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hoopy@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz" integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== hpack.js@^2.1.6: version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz" integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== dependencies: inherits "^2.0.1" @@ -6458,24 +4896,24 @@ hpack.js@^2.1.6: html-encoding-sniffer@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz" integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== dependencies: whatwg-encoding "^1.0.5" html-entities@^2.1.0, html-entities@^2.3.2: version "2.3.3" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46" + resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz" integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA== html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== html-minifier-terser@^6.0.2: version "6.1.0" - resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" + resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz" integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== dependencies: camel-case "^4.1.2" @@ -6488,7 +4926,7 @@ html-minifier-terser@^6.0.2: html-webpack-plugin@^5.5.0: version "5.5.1" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz#826838e31b427f5f7f30971f8d8fa2422dfa6763" + resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.1.tgz" integrity sha512-cTUzZ1+NqjGEKjmVgZKLMdiFg3m9MdRXkZW2OEe69WYVi5ONLMmlnSZdXzGGMOq0C8jGDrL6EWyEDDUioHO/pA== dependencies: "@types/html-minifier-terser" "^6.0.0" @@ -6499,7 +4937,7 @@ html-webpack-plugin@^5.5.0: htmlparser2@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz" integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== dependencies: domelementtype "^2.0.1" @@ -6509,12 +4947,22 @@ htmlparser2@^6.1.0: http-deceiver@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz" integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -6523,24 +4971,14 @@ http-errors@2.0.0: statuses "2.0.1" toidentifier "1.0.1" -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-parser-js@>=0.5.1: version "0.5.8" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" + resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== http-proxy-agent@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz" integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== dependencies: "@tootallnate/once" "1" @@ -6549,7 +4987,7 @@ http-proxy-agent@^4.0.1: http-proxy-middleware@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f" + resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz" integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw== dependencies: "@types/http-proxy" "^1.17.8" @@ -6560,7 +4998,7 @@ http-proxy-middleware@^2.0.3: http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -6569,7 +5007,7 @@ http-proxy@^1.18.1: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -6577,63 +5015,53 @@ https-proxy-agent@^5.0.0: human-signals@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== +iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -iconv-lite@^0.6.2, iconv-lite@^0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== idb@^7.0.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b" + resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz" integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ== identity-obj-proxy@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14" + resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz" integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA== dependencies: harmony-reflect "^1.4.6" -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - ignore@^5.2.0: version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - immer@^9.0.7: version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" + resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz" integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" @@ -6641,7 +5069,7 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: import-local@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz" integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== dependencies: pkg-dir "^4.2.0" @@ -6649,211 +5077,59 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== inherits@2.0.3: version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== ini@^1.3.5: version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== -interface-blockstore@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/interface-blockstore/-/interface-blockstore-4.0.1.tgz#0dda1774d72ca7e990dc1921cfc524b3e9d1b9ca" - integrity sha512-ROWKGJls7vLeFaQtI3hZVCJOkUoZ05xAi2t2qysM4d7dwVKrfm5jUOqWh8JgLL7Iup3XqJ0mKXXZuwJ3s03RSw== - dependencies: - interface-store "^3.0.0" - multiformats "^11.0.0" - -interface-datastore@^6.0.2: - version "6.1.1" - resolved "https://registry.yarnpkg.com/interface-datastore/-/interface-datastore-6.1.1.tgz#5150a00de2e7513eaadba58bcafd059cb50004c1" - integrity sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg== - dependencies: - interface-store "^2.0.2" - nanoid "^3.0.2" - uint8arrays "^3.0.0" - -interface-store@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-2.0.2.tgz#83175fd2b0c501585ed96db54bb8ba9d55fce34c" - integrity sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg== - -interface-store@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/interface-store/-/interface-store-3.0.4.tgz#670d95ef45f3b7061d154c3cbfaf39a538167ad7" - integrity sha512-OjHUuGXbH4eXSBx1TF1tTySvjLldPLzRSYYXJwrEQI+XfH5JWYZofr0gVMV4F8XTwC+4V7jomDYkvGRmDSRKqQ== - internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== dependencies: get-intrinsic "^1.2.0" has "^1.0.3" side-channel "^1.0.4" -ip-regex@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" - integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== +ipaddr.js@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz" + integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== ipaddr.js@1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0" - integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng== - -ipfs-core-types@^0.10.0, ipfs-core-types@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/ipfs-core-types/-/ipfs-core-types-0.10.3.tgz#89ebe98199d4d829f2b20104bfa3299f808c80fe" - integrity sha512-GNid2lRBjR5qgScCglgk7w9Hk3TZAwPHQXxOLQx72wgyc0jF2U5NXRoKW0GRvX8NPbHmsrFszForIqxd23I1Gw== - dependencies: - "@ipld/dag-pb" "^2.1.3" - interface-datastore "^6.0.2" - ipfs-unixfs "^6.0.3" - multiaddr "^10.0.0" - multiformats "^9.5.1" - -ipfs-core-utils@^0.14.0: - version "0.14.3" - resolved "https://registry.yarnpkg.com/ipfs-core-utils/-/ipfs-core-utils-0.14.3.tgz#d04c631c472507bdefc58d4e8d1d9109efbb411c" - integrity sha512-aBkewVhgAj3NWXPwu6imj0wADGiGVZmJzqKzODOJsibDjkx6FGdMv8kvvqtLnK8LS/dvSk9yk32IDtuDyYoV7Q== - dependencies: - any-signal "^3.0.0" - blob-to-it "^1.0.1" - browser-readablestream-to-it "^1.0.1" - debug "^4.1.1" - err-code "^3.0.1" - ipfs-core-types "^0.10.3" - ipfs-unixfs "^6.0.3" - ipfs-utils "^9.0.6" - it-all "^1.0.4" - it-map "^1.0.4" - it-peekable "^1.0.2" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - multiaddr "^10.0.0" - multiaddr-to-uri "^8.0.0" - multiformats "^9.5.1" - nanoid "^3.1.23" - parse-duration "^1.0.0" - timeout-abort-controller "^3.0.0" - uint8arrays "^3.0.0" - -ipfs-http-client@56.0.0: - version "56.0.0" - resolved "https://registry.yarnpkg.com/ipfs-http-client/-/ipfs-http-client-56.0.0.tgz#f42fa2bbf987bfa128ce0025de5d668586f4a815" - integrity sha512-JF3on9c0hB9XHk/UCxbyC6rSpERuj8F/0QcN/HImZoHNUKZ0/T8DpgVopocKdmGi1gr3Izlop7poaXomSt8Nug== - dependencies: - "@ipld/dag-cbor" "^7.0.0" - "@ipld/dag-json" "^8.0.1" - "@ipld/dag-pb" "^2.1.3" - any-signal "^3.0.0" - dag-jose "^1.0.0" - debug "^4.1.1" - err-code "^3.0.1" - ipfs-core-types "^0.10.0" - ipfs-core-utils "^0.14.0" - ipfs-utils "^9.0.2" - it-first "^1.0.6" - it-last "^1.0.4" - merge-options "^3.0.4" - multiaddr "^10.0.0" - multiformats "^9.4.13" - parse-duration "^1.0.0" - stream-to-it "^0.2.2" - uint8arrays "^3.0.0" - -ipfs-unixfs-importer@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs-importer/-/ipfs-unixfs-importer-12.0.1.tgz#316a52d8a793e9e006b1ee43edc50b83e00ef306" - integrity sha512-//VPZOqbONtc1HNtb+sBrw+nIGijHEloSm1O3LVR5orSlhHQ8X7+OCkeqceFBhu40tPMe/TwgAPrkvh+fXL+bA== - dependencies: - "@ipld/dag-pb" "^4.0.0" - "@multiformats/murmur3" "^2.0.0" - err-code "^3.0.1" - hamt-sharding "^3.0.0" - interface-blockstore "^4.0.0" - ipfs-unixfs "^9.0.0" - it-all "^2.0.0" - it-batch "^2.0.0" - it-first "^2.0.0" - it-parallel-batch "^2.0.0" - merge-options "^3.0.4" - multiformats "^11.0.0" - rabin-wasm "^0.1.4" - uint8arraylist "^2.3.3" - uint8arrays "^4.0.2" - -ipfs-unixfs@^6.0.3: - version "6.0.9" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz#f6613b8e081d83faa43ed96e016a694c615a9374" - integrity sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ== - dependencies: - err-code "^3.0.1" - protobufjs "^6.10.2" - -ipfs-unixfs@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/ipfs-unixfs/-/ipfs-unixfs-9.0.1.tgz#d06e688e07ef4ce08d610337ba2fe8c143c386e7" - integrity sha512-jh2CbXyxID+v3jLml9CqMwjdSS9ZRnsGfQGGPOfem0/hT/L48xUeTPvh7qLFWkZcIMhZtG+fnS1teei8x5uGBg== - dependencies: - err-code "^3.0.1" - protobufjs "^7.0.0" - -ipfs-utils@^9.0.2, ipfs-utils@^9.0.6: - version "9.0.14" - resolved "https://registry.yarnpkg.com/ipfs-utils/-/ipfs-utils-9.0.14.tgz#24f5fda1f4567685eb32bca2543d518f95fd8704" - integrity sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg== - dependencies: - any-signal "^3.0.0" - browser-readablestream-to-it "^1.0.0" - buffer "^6.0.1" - electron-fetch "^1.7.2" - err-code "^3.0.1" - is-electron "^2.2.0" - iso-url "^1.1.5" - it-all "^1.0.4" - it-glob "^1.0.1" - it-to-stream "^1.0.0" - merge-options "^3.0.4" - nanoid "^3.1.20" - native-fetch "^3.0.0" - node-fetch "^2.6.8" - react-native-fetch-api "^3.0.0" - stream-to-it "^0.2.2" - -is-arguments@^1.0.4, is-arguments@^1.1.1: +is-arguments@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" @@ -6861,7 +5137,7 @@ is-arguments@^1.0.4, is-arguments@^1.1.1: is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== dependencies: call-bind "^1.0.2" @@ -6870,26 +5146,26 @@ is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: is-arrayish@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== dependencies: has-bigints "^1.0.1" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-boolean-object@^1.1.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== dependencies: call-bind "^1.0.2" @@ -6897,124 +5173,100 @@ is-boolean-object@^1.1.0: is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.11.0, is-core-module@^2.9.0: version "2.12.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz" integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== dependencies: has "^1.0.3" is-date-object@^1.0.1, is-date-object@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== dependencies: has-tostringtag "^1.0.0" is-docker@^2.0.0, is-docker@^2.1.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== -is-electron@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-electron/-/is-electron-2.2.2.tgz#3778902a2044d76de98036f5dc58089ac4d80bb9" - integrity sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg== - is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-fn@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== - dependencies: - has-tostringtag "^1.0.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-ip@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-ip/-/is-ip-3.1.0.tgz#2ae5ddfafaf05cb8008a62093cf29734f657c5d8" - integrity sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q== - dependencies: - ip-regex "^4.0.0" - is-map@^2.0.1, is-map@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== is-module@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-negative-zero@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== is-number-object@^1.0.4: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== dependencies: has-tostringtag "^1.0.0" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-obj@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg== is-path-inside@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - is-plain-obj@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== is-potential-custom-element-name@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== is-regex@^1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== dependencies: call-bind "^1.0.2" @@ -7022,48 +5274,48 @@ is-regex@^1.1.4: is-regexp@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== is-root@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" + resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz" integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== is-set@^2.0.1, is-set@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-shared-array-buffer@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== dependencies: call-bind "^1.0.2" is-stream@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-string@^1.0.5, is-string@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== dependencies: has-tostringtag "^1.0.0" is-symbol@^1.0.2, is-symbol@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.9: version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== dependencies: available-typed-arrays "^1.0.5" @@ -7074,24 +5326,24 @@ is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: is-typedarray@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-weakmap@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz" integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== is-weakref@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== dependencies: call-bind "^1.0.2" is-weakset@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz" integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== dependencies: call-bind "^1.0.2" @@ -7099,44 +5351,34 @@ is-weakset@^2.0.1: is-wsl@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: is-docker "^2.0.0" isarray@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== -iso-url@^1.1.5: - version "1.2.1" - resolved "https://registry.yarnpkg.com/iso-url/-/iso-url-1.2.1.tgz#db96a49d8d9a64a1c889fc07cc525d093afb1811" - integrity sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng== - -isomorphic-ws@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" - integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== dependencies: "@babel/core" "^7.12.3" @@ -7147,7 +5389,7 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-report@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== dependencies: istanbul-lib-coverage "^3.0.0" @@ -7156,7 +5398,7 @@ istanbul-lib-report@^3.0.0: istanbul-lib-source-maps@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" @@ -7165,97 +5407,15 @@ istanbul-lib-source-maps@^4.0.0: istanbul-reports@^3.1.3: version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz" integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -it-all@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-1.0.6.tgz#852557355367606295c4c3b7eff0136f07749335" - integrity sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A== - -it-all@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-all/-/it-all-2.0.1.tgz#45d530ecf6e13fb81d7ba583cdfd55ffdb376b05" - integrity sha512-9UuJcCRZsboz+HBQTNOau80Dw+ryGaHYFP/cPYzFBJBFcfDathMYnhHk4t52en9+fcyDGPTdLB+lFc1wzQIroA== - -it-batch@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-batch/-/it-batch-2.0.1.tgz#a0822be9b18743c41d8525835f788a7f297ba41f" - integrity sha512-2gWFuPzamh9Dh3pW+OKjc7UwJ41W4Eu2AinVAfXDMfrC5gXfm3b1TF+1UzsygBUgKBugnxnGP+/fFRyn+9y1mQ== - -it-drain@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-drain/-/it-drain-2.0.1.tgz#f50f6ce5cb8592a9d6337c9b5e780348877b152d" - integrity sha512-ESuHV6MLUNxuSy0vGZpKhSRjW0ixczN1FhbVy7eGJHjX6U2qiiXTyMvDc0z/w+nifOOwPyI5DT9Rc3o9IaGqEQ== - -it-filter@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/it-filter/-/it-filter-2.0.2.tgz#c849b3de4a12a2de3cc45be734ee55f69a0ed284" - integrity sha512-gocw1F3siqupegsOzZ78rAc9C+sYlQbI2af/TmzgdrR613MyEJHbvfwBf12XRekGG907kqXSOGKPlxzJa6XV1Q== - -it-first@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-1.0.7.tgz#a4bef40da8be21667f7d23e44dae652f5ccd7ab1" - integrity sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g== - -it-first@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-first/-/it-first-2.0.1.tgz#75d66b254c385ae3a1906def060a69006a437cef" - integrity sha512-noC1oEQcWZZMUwq7VWxHNLML43dM+5bviZpfmkxkXlvBe60z7AFRqpZSga9uQBo792jKv9otnn1IjA4zwgNARw== - -it-glob@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/it-glob/-/it-glob-1.0.2.tgz#bab9b04d6aaac42884502f3a0bfee84c7a29e15e" - integrity sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q== - dependencies: - "@types/minimatch" "^3.0.4" - minimatch "^3.0.4" - -it-last@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-last/-/it-last-1.0.6.tgz#4106232e5905ec11e16de15a0e9f7037eaecfc45" - integrity sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q== - -it-map@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/it-map/-/it-map-1.0.6.tgz#6aa547e363eedcf8d4f69d8484b450bc13c9882c" - integrity sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ== - -it-parallel-batch@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-parallel-batch/-/it-parallel-batch-2.0.1.tgz#23eb07bbeb73521253d7c8a1566b53137103077c" - integrity sha512-tXh567/JfDGJ90Zi//H9HkL7kY27ARp0jf2vu2jUI6PUVBWfsoT+gC4eT41/b4+wkJXSGgT8ZHnivAOlMfcNjA== - dependencies: - it-batch "^2.0.0" - -it-peekable@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/it-peekable/-/it-peekable-1.0.3.tgz#8ebe933767d9c5aa0ae4ef8e9cb3a47389bced8c" - integrity sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ== - -it-take@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/it-take/-/it-take-2.0.1.tgz#f9e5ddf0b73a18ba00e62fb532d9d3cde3fe4ce6" - integrity sha512-DL7kpZNjuoeSTnB9dMAJ0Z3m2T29LRRAU+HIgkiQM+1jH3m8l9e/1xpWs8JHTlbKivbqSFrQMTc8KVcaQNmsaA== - -it-to-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/it-to-stream/-/it-to-stream-1.0.0.tgz#6c47f91d5b5df28bda9334c52782ef8e97fe3a4a" - integrity sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA== - dependencies: - buffer "^6.0.3" - fast-fifo "^1.0.0" - get-iterator "^1.0.2" - p-defer "^3.0.0" - p-fifo "^1.0.0" - readable-stream "^3.6.0" - jake@^10.8.5: version "10.8.5" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + resolved "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz" integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: async "^3.2.3" @@ -7265,7 +5425,7 @@ jake@^10.8.5: jest-changed-files@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz" integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== dependencies: "@jest/types" "^27.5.1" @@ -7274,7 +5434,7 @@ jest-changed-files@^27.5.1: jest-circus@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz" integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== dependencies: "@jest/environment" "^27.5.1" @@ -7299,7 +5459,7 @@ jest-circus@^27.5.1: jest-cli@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz" integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== dependencies: "@jest/core" "^27.5.1" @@ -7317,7 +5477,7 @@ jest-cli@^27.5.1: jest-config@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz" integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== dependencies: "@babel/core" "^7.8.0" @@ -7347,7 +5507,7 @@ jest-config@^27.5.1: jest-diff@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz" integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== dependencies: chalk "^4.0.0" @@ -7357,7 +5517,7 @@ jest-diff@^27.5.1: jest-diff@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz" integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw== dependencies: chalk "^4.0.0" @@ -7367,14 +5527,14 @@ jest-diff@^29.5.0: jest-docblock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz" integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== dependencies: detect-newline "^3.0.0" jest-each@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz" integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== dependencies: "@jest/types" "^27.5.1" @@ -7385,7 +5545,7 @@ jest-each@^27.5.1: jest-environment-jsdom@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz" integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== dependencies: "@jest/environment" "^27.5.1" @@ -7398,7 +5558,7 @@ jest-environment-jsdom@^27.5.1: jest-environment-node@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz" integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== dependencies: "@jest/environment" "^27.5.1" @@ -7410,17 +5570,17 @@ jest-environment-node@^27.5.1: jest-get-type@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz" integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== jest-get-type@^29.4.3: version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" + resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz" integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== jest-haste-map@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz" integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== dependencies: "@jest/types" "^27.5.1" @@ -7440,7 +5600,7 @@ jest-haste-map@^27.5.1: jest-jasmine2@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz" integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== dependencies: "@jest/environment" "^27.5.1" @@ -7463,7 +5623,7 @@ jest-jasmine2@^27.5.1: jest-leak-detector@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz" integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== dependencies: jest-get-type "^27.5.1" @@ -7471,7 +5631,7 @@ jest-leak-detector@^27.5.1: jest-matcher-utils@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== dependencies: chalk "^4.0.0" @@ -7481,7 +5641,7 @@ jest-matcher-utils@^27.5.1: jest-matcher-utils@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz" integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw== dependencies: chalk "^4.0.0" @@ -7491,7 +5651,7 @@ jest-matcher-utils@^29.5.0: jest-message-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz" integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== dependencies: "@babel/code-frame" "^7.12.13" @@ -7506,7 +5666,7 @@ jest-message-util@^27.5.1: jest-message-util@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz" integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== dependencies: "@babel/code-frame" "^7.12.13" @@ -7521,7 +5681,7 @@ jest-message-util@^28.1.3: jest-message-util@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz" integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA== dependencies: "@babel/code-frame" "^7.12.13" @@ -7536,7 +5696,7 @@ jest-message-util@^29.5.0: jest-mock@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz" integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== dependencies: "@jest/types" "^27.5.1" @@ -7544,31 +5704,31 @@ jest-mock@^27.5.1: jest-pnp-resolver@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== jest-regex-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== jest-regex-util@^28.0.0: version "28.0.2" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz" integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== jest-resolve-dependencies@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz" integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== dependencies: "@jest/types" "^27.5.1" jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve@^27.4.2, jest-resolve@^27.5.1: +jest-resolve@*, jest-resolve@^27.4.2, jest-resolve@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz" integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== dependencies: "@jest/types" "^27.5.1" @@ -7584,7 +5744,7 @@ jest-resolve@^27.4.2, jest-resolve@^27.5.1: jest-runner@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz" integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== dependencies: "@jest/console" "^27.5.1" @@ -7611,7 +5771,7 @@ jest-runner@^27.5.1: jest-runtime@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz" integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== dependencies: "@jest/environment" "^27.5.1" @@ -7639,7 +5799,7 @@ jest-runtime@^27.5.1: jest-serializer@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz" integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== dependencies: "@types/node" "*" @@ -7647,7 +5807,7 @@ jest-serializer@^27.5.1: jest-snapshot@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz" integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== dependencies: "@babel/core" "^7.7.2" @@ -7675,7 +5835,7 @@ jest-snapshot@^27.5.1: jest-util@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz" integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== dependencies: "@jest/types" "^27.5.1" @@ -7687,7 +5847,7 @@ jest-util@^27.5.1: jest-util@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz" integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== dependencies: "@jest/types" "^28.1.3" @@ -7699,7 +5859,7 @@ jest-util@^28.1.3: jest-util@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz" integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ== dependencies: "@jest/types" "^29.5.0" @@ -7711,7 +5871,7 @@ jest-util@^29.5.0: jest-validate@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz" integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== dependencies: "@jest/types" "^27.5.1" @@ -7723,7 +5883,7 @@ jest-validate@^27.5.1: jest-watch-typeahead@^1.0.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9" + resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz" integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw== dependencies: ansi-escapes "^4.3.1" @@ -7736,7 +5896,7 @@ jest-watch-typeahead@^1.0.0: jest-watcher@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz" integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== dependencies: "@jest/test-result" "^27.5.1" @@ -7749,7 +5909,7 @@ jest-watcher@^27.5.1: jest-watcher@^28.0.0: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz" integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== dependencies: "@jest/test-result" "^28.1.3" @@ -7763,7 +5923,7 @@ jest-watcher@^28.0.0: jest-worker@^26.2.1: version "26.6.2" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz" integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: "@types/node" "*" @@ -7772,7 +5932,7 @@ jest-worker@^26.2.1: jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz" integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== dependencies: "@types/node" "*" @@ -7781,16 +5941,16 @@ jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: jest-worker@^28.0.2: version "28.1.3" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz" integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.4.3: +"jest@^27.0.0 || ^28.0.0", jest@^27.4.3: version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz" integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== dependencies: "@jest/core" "^27.5.1" @@ -7799,27 +5959,22 @@ jest@^27.4.3: jiti@^1.18.2: version "1.18.2" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" + resolved "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz" integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== js-sdsl@^4.1.4: version "4.4.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.0.tgz#8b437dbe642daa95760400b602378ed8ffea8430" + resolved "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz" integrity sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg== -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" @@ -7827,14 +5982,14 @@ js-yaml@^3.13.1: js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" jsdom@^16.6.0: version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz" integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== dependencies: abab "^2.0.5" @@ -7867,54 +6022,54 @@ jsdom@^16.6.0: jsesc@^2.5.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== jsesc@~0.5.0: version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-schema-traverse@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json-schema@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json5@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz" integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" json5@^2.1.2, json5@^2.2.0, json5@^2.2.2: version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -7923,62 +6078,47 @@ jsonfile@^6.0.1: jsonpointer@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" + resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea" + resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz" integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw== dependencies: array-includes "^3.1.5" object.assign "^4.1.3" -jszip@^3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - -keyvaluestorage-interface@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" - integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== - kind-of@^6.0.2: version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== klona@^2.0.4, klona@^2.0.5: version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== language-subtag-registry@~0.3.2: version "0.3.22" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + resolved "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz" integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== language-tags@=1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + resolved "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz" integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== dependencies: language-subtag-registry "~0.3.2" launch-editor@^2.6.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" + resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz" integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== dependencies: picocolors "^1.0.0" @@ -7986,12 +6126,12 @@ launch-editor@^2.6.0: leven@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== levn@^0.4.1: version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: prelude-ls "^1.2.1" @@ -7999,99 +6139,30 @@ levn@^0.4.1: levn@~0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz" integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" -libsodium-wrappers@^0.7.6: - version "0.7.11" - resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz#53bd20606dffcc54ea2122133c7da38218f575f7" - integrity sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q== - dependencies: - libsodium "^0.7.11" - -libsodium@^0.7.11: - version "0.7.11" - resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e" - integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A== - -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== lines-and-columns@^1.1.6: version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== -lit-connect-modal@^0.1.11: - version "0.1.11" - resolved "https://registry.yarnpkg.com/lit-connect-modal/-/lit-connect-modal-0.1.11.tgz#688fa9601b920c917856a5dbe8491a4fbaf1d6ab" - integrity sha512-EG6pcCqdxZQJt3MPDq3gJ5Sz4E5sJdydtAF7VFJu6z6GDHO1Ybp8WrTx8CUnHiF54/MQBRi6Nb7cbTvv+BKWvQ== - dependencies: - micromodal "^0.4.10" - -lit-element@^3.2.0, lit-element@^3.3.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/lit-element/-/lit-element-3.3.2.tgz#9913bf220b85065f0e5f1bb8878cc44f36b50cfa" - integrity sha512-xXAeVWKGr4/njq0rGC9dethMnYCq5hpKYrgQZYTzawt9YQhMiXfD+T1RgrdY3NamOxwq2aXlb0vOI6e29CKgVQ== - dependencies: - "@lit-labs/ssr-dom-shim" "^1.1.0" - "@lit/reactive-element" "^1.3.0" - lit-html "^2.7.0" - -lit-html@^2.6.0, lit-html@^2.7.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lit-html/-/lit-html-2.7.3.tgz#903bfa61f9d3296a0ec94128695e452beb9b1a3a" - integrity sha512-9DyLzcn/kbRGowz2vFmSANFbRZTxYUgYYFqzie89w6GLpPUiBCDHfcdeRUV/k3Q2ueYxNjfv46yPCtKAEAPOVw== - dependencies: - "@types/trusted-types" "^2.0.2" - -lit-siwe@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/lit-siwe/-/lit-siwe-1.1.8.tgz#6a393069012816d629c518bb8aa410f1e4a78bd7" - integrity sha512-gXI8GG0GAClw6G7T9p4p6Kn9ywDo8j2d90ShaYArJdsqqO9gwXfzxF84SMeY+bpsNqqQ3FahrhEwTCHd6w7wNw== - dependencies: - "@spruceid/siwe-parser" "1.1.3" - "@stablelib/random" "^1.0.1" - apg-js "^4.1.1" - -lit@2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.6.1.tgz#5951a2098b9bde5b328c73b55c15fdc0eefd96d7" - integrity sha512-DT87LD64f8acR7uVp7kZfhLRrHkfC/N4BVzAtnw9Yg8087mbBJ//qedwdwX0kzDbxgPccWRW6mFwGbRQIxy0pw== - dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.2.0" - lit-html "^2.6.0" - -lit@2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/lit/-/lit-2.7.3.tgz#7f7920dbaba12828d359ca3439cd6f73619061da" - integrity sha512-0a+u+vVbmgSfPu+fyvqjMPBX0Kwbyj9QOv9MbQFZhWGlV2cyk3lEwgfUQgYN+i/lx++1Z3wZknSIp3QCKxHLyg== - dependencies: - "@lit/reactive-element" "^1.6.0" - lit-element "^3.3.0" - lit-html "^2.7.0" - loader-runner@^4.2.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== loader-utils@^2.0.0, loader-utils@^2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" @@ -8100,12 +6171,12 @@ loader-utils@^2.0.0, loader-utils@^2.0.4: loader-utils@^3.2.0: version "3.2.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz" integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== locate-path@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== dependencies: p-locate "^3.0.0" @@ -8113,453 +6184,361 @@ locate-path@^3.0.0: locate-path@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== dependencies: p-locate "^4.1.0" locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.debounce@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.isequal@4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - lodash.memoize@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz" integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.2: version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== lodash.sortby@^4.7.0: version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA== lodash.uniq@^4.5.0: version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -long@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" - integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== - -long@^5.0.0: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lower-case@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz" integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== dependencies: tslib "^2.0.3" lru-cache@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== dependencies: yallist "^3.0.2" lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" lz-string@^1.4.4: version "1.5.0" - resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" + resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz" integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ== magic-string@^0.25.0, magic-string@^0.25.7: version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz" integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== dependencies: sourcemap-codec "^1.4.8" make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" makeerror@1.0.12: version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz" integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== dependencies: tmpl "1.0.5" mdn-data@2.0.14: version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== mdn-data@2.0.4: version "2.0.4" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== media-typer@0.3.0: version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== memfs@^3.1.2, memfs@^3.4.3: version "3.5.1" - resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.5.1.tgz#f0cd1e2bfaef58f6fe09bfb9c2288f07fea099ec" + resolved "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz" integrity sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA== dependencies: fs-monkey "^1.0.3" merge-descriptors@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== -merge-options@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" - integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== - dependencies: - is-plain-obj "^2.1.0" - merge-stream@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== methods@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== dependencies: braces "^3.0.2" picomatch "^2.3.1" -micromodal@^0.4.10: - version "0.4.10" - resolved "https://registry.yarnpkg.com/micromodal/-/micromodal-0.4.10.tgz#d6f59c21d2f4a5af480f65909eb9608a1d558c73" - integrity sha512-BUrEnzMPFBwK8nOE4xUDYHLrlGlLULQVjpja99tpJQPSUEWgw3kTLp1n1qv0HmKU29AiHE7Y7sMLiRziDK4ghQ== - -mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": +"mime-db@>= 1.43.0 < 2", mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" mime@1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== mimic-fn@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== min-indent@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== mini-css-extract-plugin@^2.4.5: version "2.7.5" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz#afbb344977659ec0f1f6e050c7aea456b121cfc5" + resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz" integrity sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ== dependencies: schema-utils "^4.0.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +minimalistic-assert@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimatch@^5.0.1: version "5.1.6" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mkdirp@~0.5.1: version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== dependencies: minimist "^1.2.6" -motion@10.15.5: - version "10.15.5" - resolved "https://registry.yarnpkg.com/motion/-/motion-10.15.5.tgz#d336ddbdd37bc28bb99fbb243fe309df6c685ad6" - integrity sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw== - dependencies: - "@motionone/animation" "^10.15.1" - "@motionone/dom" "^10.15.5" - "@motionone/svelte" "^10.15.5" - "@motionone/types" "^10.15.1" - "@motionone/utils" "^10.15.1" - "@motionone/vue" "^10.15.5" +"monaco-editor@>= 0.21.0 < 1", "monaco-editor@>= 0.25.0 < 1": + version "0.39.0" + resolved "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.39.0.tgz" + integrity sha512-zhbZ2Nx93tLR8aJmL2zI1mhJpsl87HMebNBM6R8z4pLfs8pj604pIVIVwyF1TivcfNtIPpMXL+nb3DsBmE/x6Q== + +ms@^2.1.1, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== ms@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multiaddr-to-uri@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz#65efe4b1f9de5f6b681aa42ff36a7c8db7625e58" - integrity sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA== - dependencies: - multiaddr "^10.0.0" - -multiaddr@^10.0.0: - version "10.0.1" - resolved "https://registry.yarnpkg.com/multiaddr/-/multiaddr-10.0.1.tgz#0d15848871370860a4d266bb44d93b3dac5d90ef" - integrity sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg== - dependencies: - dns-over-http-resolver "^1.2.3" - err-code "^3.0.1" - is-ip "^3.1.0" - multiformats "^9.4.5" - uint8arrays "^3.0.0" - varint "^6.0.0" - multicast-dns@^7.2.5: version "7.2.5" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz" integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== dependencies: dns-packet "^5.2.2" thunky "^1.0.2" -multiformats@^11.0.0: - version "11.0.2" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-11.0.2.tgz#b14735efc42cd8581e73895e66bebb9752151b60" - integrity sha512-b5mYMkOkARIuVZCpvijFj9a6m5wMVLC7cf/jIPd5D/ARDOfLC5+IFkbgDXQgcU2goIsTD/O9NY4DI/Mt4OGvlg== - -multiformats@^9.0.2, multiformats@^9.4.13, multiformats@^9.4.2, multiformats@^9.4.5, multiformats@^9.5.1, multiformats@^9.5.4: - version "9.9.0" - resolved "https://registry.yarnpkg.com/multiformats/-/multiformats-9.9.0.tgz#c68354e7d21037a8f1f8833c8ccd68618e8f1d37" - integrity sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg== - -murmurhash3js-revisited@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz#6bd36e25de8f73394222adc6e41fa3fac08a5869" - integrity sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g== - mz@^2.7.0: version "2.7.0" - resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== dependencies: any-promise "^1.0.0" object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.0.2, nanoid@^3.1.20, nanoid@^3.1.23, nanoid@^3.3.6: +nanoid@^3.3.6: version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz" integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== -native-fetch@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/native-fetch/-/native-fetch-3.0.0.tgz#06ccdd70e79e171c365c75117959cf4fe14a09bb" - integrity sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw== - natural-compare-lite@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz" integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== natural-compare@^1.4.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== negotiator@0.6.3: version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== no-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz" integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== dependencies: lower-case "^2.0.2" tslib "^2.0.3" -node-fetch@2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@^2.6.1, node-fetch@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.9.tgz#7c7f744b5cc6eb5fd404e0c7a9fec630a55657e6" - integrity sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg== - dependencies: - whatwg-url "^5.0.0" - node-forge@^1: version "1.3.1" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== node-int64@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.8: version "2.0.10" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz" integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== normalize-range@^0.1.2: version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== normalize-url@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== npm-run-path@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: path-key "^3.0.0" nth-check@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz" integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== dependencies: boolbase "~1.0.0" nth-check@^2.0.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" nwsapi@^2.2.0: version "2.2.4" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.4.tgz#fd59d5e904e8e1f03c25a7d5a15cfa16c714a1e5" + resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.4.tgz" integrity sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g== object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-hash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" + resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.12.3, object-inspect@^1.9.0: version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== object-is@^1.1.5: version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== dependencies: call-bind "^1.0.2" @@ -8567,12 +6546,12 @@ object-is@^1.1.5: object-keys@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== object.assign@^4.1.3, object.assign@^4.1.4: version "4.1.4" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== dependencies: call-bind "^1.0.2" @@ -8582,7 +6561,7 @@ object.assign@^4.1.3, object.assign@^4.1.4: object.entries@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.6.tgz#9737d0e5b8291edd340a3e3264bb8a3b00d5fa23" + resolved "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz" integrity sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w== dependencies: call-bind "^1.0.2" @@ -8591,7 +6570,7 @@ object.entries@^1.1.6: object.fromentries@^2.0.6: version "2.0.6" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.6.tgz#cdb04da08c539cffa912dcd368b886e0904bfa73" + resolved "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz" integrity sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg== dependencies: call-bind "^1.0.2" @@ -8600,7 +6579,7 @@ object.fromentries@^2.0.6: object.getownpropertydescriptors@^2.1.0: version "2.1.6" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz#5e5c384dd209fa4efffead39e3a0512770ccc312" + resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz" integrity sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ== dependencies: array.prototype.reduce "^1.0.5" @@ -8611,7 +6590,7 @@ object.getownpropertydescriptors@^2.1.0: object.hasown@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92" + resolved "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz" integrity sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw== dependencies: define-properties "^1.1.4" @@ -8619,7 +6598,7 @@ object.hasown@^1.1.2: object.values@^1.1.0, object.values@^1.1.6: version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" + resolved "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz" integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== dependencies: call-bind "^1.0.2" @@ -8628,43 +6607,38 @@ object.values@^1.1.0, object.values@^1.1.6: obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== -on-exit-leak-free@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz#b39c9e3bf7690d890f4861558b0d7b90a442d209" - integrity sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg== - on-finished@2.4.1: version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" on-headers@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + resolved "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz" integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== -once@^1.3.0, once@^1.4.0: +once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" open@^8.0.9, open@^8.4.0: version "8.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== dependencies: define-lazy-prop "^2.0.0" @@ -8673,7 +6647,7 @@ open@^8.0.9, open@^8.4.0: optionator@^0.8.1: version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz" integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== dependencies: deep-is "~0.1.3" @@ -8685,7 +6659,7 @@ optionator@^0.8.1: optionator@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: deep-is "^0.1.3" @@ -8695,57 +6669,44 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -p-defer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-3.0.0.tgz#d1dceb4ee9b2b604b1d94ffec83760175d4e6f83" - integrity sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw== - -p-fifo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-fifo/-/p-fifo-1.0.0.tgz#e29d5cf17c239ba87f51dde98c1d26a9cfe20a63" - integrity sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A== - dependencies: - fast-fifo "^1.0.0" - p-defer "^3.0.0" - p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz" integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== dependencies: p-limit "^2.0.0" p-locate@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: p-limit "^2.2.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-retry@^4.5.0: version "4.6.2" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz" integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== dependencies: "@types/retry" "0.12.0" @@ -8753,17 +6714,12 @@ p-retry@^4.5.0: p-try@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - param-case@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz" integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== dependencies: dot-case "^3.0.4" @@ -8771,19 +6727,14 @@ param-case@^3.0.4: parent-module@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: callsites "^3.0.0" -parse-duration@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/parse-duration/-/parse-duration-1.0.3.tgz#b6681f5edcc2689643b34c09ea63f86f58a35814" - integrity sha512-o6NAh12na5VvR6nFejkU0gpQ8jmOY9Y9sTU2ke3L3G/d/3z8jqmbBbeyBGHU73P4JLXfc7tJARygIK3WGIkloA== - parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" @@ -8793,17 +6744,17 @@ parse-json@^5.0.0, parse-json@^5.2.0: parse5@6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz" integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== parseurl@~1.3.2, parseurl@~1.3.3: version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== pascal-case@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz" integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== dependencies: no-case "^3.0.4" @@ -8811,133 +6762,98 @@ pascal-case@^3.1.2: path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.7: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-to-regexp@0.1.7: version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== performance-now@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz" integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== picocolors@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pify@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== -pino-abstract-transport@v0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-0.5.0.tgz#4b54348d8f73713bfd14e3dc44228739aa13d9c0" - integrity sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ== - dependencies: - duplexify "^4.1.2" - split2 "^4.0.0" - -pino-std-serializers@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-4.0.0.tgz#1791ccd2539c091ae49ce9993205e2cd5dbba1e2" - integrity sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q== - -pino@7.11.0: - version "7.11.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-7.11.0.tgz#0f0ea5c4683dc91388081d44bff10c83125066f6" - integrity sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.0.0" - on-exit-leak-free "^0.2.0" - pino-abstract-transport v0.5.0 - pino-std-serializers "^4.0.0" - process-warning "^1.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.1.0" - safe-stable-stringify "^2.1.0" - sonic-boom "^2.2.1" - thread-stream "^0.15.1" - pirates@^4.0.1, pirates@^4.0.4: version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz" integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== pkg-dir@^4.1.0, pkg-dir@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== dependencies: find-up "^4.0.0" pkg-up@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz" integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== dependencies: find-up "^3.0.0" -pngjs@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-5.0.0.tgz#e79dd2b215767fd9c04561c01236df960bce7fbb" - integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw== - postcss-attribute-case-insensitive@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz" integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== dependencies: postcss-selector-parser "^6.0.10" postcss-browser-comments@^4: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a" + resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz" integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg== postcss-calc@^8.2.3: version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz" integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== dependencies: postcss-selector-parser "^6.0.9" @@ -8945,35 +6861,35 @@ postcss-calc@^8.2.3: postcss-clamp@^4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + resolved "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz" integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== dependencies: postcss-value-parser "^4.2.0" postcss-color-functional-notation@^4.2.4: version "4.2.4" - resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz" integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== dependencies: postcss-value-parser "^4.2.0" postcss-color-hex-alpha@^8.0.4: version "8.0.4" - resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz" integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== dependencies: postcss-value-parser "^4.2.0" postcss-color-rebeccapurple@^7.1.1: version "7.1.1" - resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz" integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== dependencies: postcss-value-parser "^4.2.0" postcss-colormin@^5.3.1: version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz" integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== dependencies: browserslist "^4.21.4" @@ -8983,7 +6899,7 @@ postcss-colormin@^5.3.1: postcss-convert-values@^5.1.3: version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz" integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== dependencies: browserslist "^4.21.4" @@ -8991,55 +6907,55 @@ postcss-convert-values@^5.1.3: postcss-custom-media@^8.0.2: version "8.0.2" - resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz" integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== dependencies: postcss-value-parser "^4.2.0" postcss-custom-properties@^12.1.10: version "12.1.11" - resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz" integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== dependencies: postcss-value-parser "^4.2.0" postcss-custom-selectors@^6.0.3: version "6.0.3" - resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz" integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== dependencies: postcss-selector-parser "^6.0.4" postcss-dir-pseudo-class@^6.0.5: version "6.0.5" - resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz" integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== dependencies: postcss-selector-parser "^6.0.10" postcss-discard-comments@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz" integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== postcss-discard-duplicates@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== postcss-discard-empty@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz" integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== postcss-discard-overridden@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== postcss-double-position-gradients@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz" integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" @@ -9047,50 +6963,50 @@ postcss-double-position-gradients@^3.1.2: postcss-env-function@^4.0.6: version "4.0.6" - resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz" integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== dependencies: postcss-value-parser "^4.2.0" postcss-flexbugs-fixes@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" + resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz" integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== postcss-focus-visible@^6.0.4: version "6.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz" integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== dependencies: postcss-selector-parser "^6.0.9" postcss-focus-within@^5.0.4: version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz" integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== dependencies: postcss-selector-parser "^6.0.9" postcss-font-variant@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz" integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== postcss-gap-properties@^3.0.5: version "3.0.5" - resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz" integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== postcss-image-set-function@^4.0.7: version "4.0.7" - resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz" integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== dependencies: postcss-value-parser "^4.2.0" postcss-import@^15.1.0: version "15.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: postcss-value-parser "^4.0.0" @@ -9099,19 +7015,19 @@ postcss-import@^15.1.0: postcss-initial@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz" integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== postcss-js@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" + resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: camelcase-css "^2.0.1" postcss-lab-function@^4.2.1: version "4.2.1" - resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz" integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== dependencies: "@csstools/postcss-progressive-custom-properties" "^1.1.0" @@ -9119,7 +7035,7 @@ postcss-lab-function@^4.2.1: postcss-load-config@^4.0.1: version "4.0.1" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.1.tgz#152383f481c2758274404e4962743191d73875bd" + resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz" integrity sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA== dependencies: lilconfig "^2.0.5" @@ -9127,7 +7043,7 @@ postcss-load-config@^4.0.1: postcss-loader@^6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef" + resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz" integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q== dependencies: cosmiconfig "^7.0.0" @@ -9136,17 +7052,17 @@ postcss-loader@^6.2.1: postcss-logical@^5.0.4: version "5.0.4" - resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz" integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== postcss-media-minmax@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz" integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== postcss-merge-longhand@^5.1.7: version "5.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz" integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== dependencies: postcss-value-parser "^4.2.0" @@ -9154,7 +7070,7 @@ postcss-merge-longhand@^5.1.7: postcss-merge-rules@^5.1.4: version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz" integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== dependencies: browserslist "^4.21.4" @@ -9164,14 +7080,14 @@ postcss-merge-rules@^5.1.4: postcss-minify-font-values@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz" integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== dependencies: postcss-value-parser "^4.2.0" postcss-minify-gradients@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz" integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== dependencies: colord "^2.9.1" @@ -9180,7 +7096,7 @@ postcss-minify-gradients@^5.1.1: postcss-minify-params@^5.1.4: version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz" integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== dependencies: browserslist "^4.21.4" @@ -9189,19 +7105,19 @@ postcss-minify-params@^5.1.4: postcss-minify-selectors@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz" integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: postcss-selector-parser "^6.0.5" postcss-modules-extract-imports@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz" integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== postcss-modules-local-by-default@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz" integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== dependencies: icss-utils "^5.0.0" @@ -9210,28 +7126,28 @@ postcss-modules-local-by-default@^4.0.0: postcss-modules-scope@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz" integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== dependencies: postcss-selector-parser "^6.0.4" postcss-modules-values@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz" integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== dependencies: icss-utils "^5.0.0" postcss-nested@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz" integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: postcss-selector-parser "^6.0.11" postcss-nesting@^10.2.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz" integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== dependencies: "@csstools/selector-specificity" "^2.0.0" @@ -9239,47 +7155,47 @@ postcss-nesting@^10.2.0: postcss-normalize-charset@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz" integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== postcss-normalize-display-values@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz" integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-positions@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz" integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-repeat-style@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz" integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-string@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz" integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-timing-functions@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz" integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== dependencies: postcss-value-parser "^4.2.0" postcss-normalize-unicode@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz" integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== dependencies: browserslist "^4.21.4" @@ -9287,7 +7203,7 @@ postcss-normalize-unicode@^5.1.1: postcss-normalize-url@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz" integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== dependencies: normalize-url "^6.0.1" @@ -9295,14 +7211,14 @@ postcss-normalize-url@^5.1.0: postcss-normalize-whitespace@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz" integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== dependencies: postcss-value-parser "^4.2.0" postcss-normalize@^10.0.1: version "10.0.1" - resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7" + resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz" integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA== dependencies: "@csstools/normalize.css" "*" @@ -9311,12 +7227,12 @@ postcss-normalize@^10.0.1: postcss-opacity-percentage@^1.1.2: version "1.1.3" - resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + resolved "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz" integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== postcss-ordered-values@^5.1.3: version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz" integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: cssnano-utils "^3.1.0" @@ -9324,26 +7240,26 @@ postcss-ordered-values@^5.1.3: postcss-overflow-shorthand@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz" integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== dependencies: postcss-value-parser "^4.2.0" postcss-page-break@^3.0.4: version "3.0.4" - resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz" integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== postcss-place@^7.0.5: version "7.0.5" - resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz" integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== dependencies: postcss-value-parser "^4.2.0" postcss-preset-env@^7.0.1: version "7.8.3" - resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2" + resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz" integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag== dependencies: "@csstools/postcss-cascade-layers" "^1.1.1" @@ -9398,14 +7314,14 @@ postcss-preset-env@^7.0.1: postcss-pseudo-class-any-link@^7.1.6: version "7.1.6" - resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz" integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== dependencies: postcss-selector-parser "^6.0.10" postcss-reduce-initial@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz" integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== dependencies: browserslist "^4.21.4" @@ -9413,26 +7329,26 @@ postcss-reduce-initial@^5.1.2: postcss-reduce-transforms@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz" integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== dependencies: postcss-value-parser "^4.2.0" postcss-replace-overflow-wrap@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz" integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== postcss-selector-not@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz" integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== dependencies: postcss-selector-parser "^6.0.10" postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: version "6.0.12" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz#2efae5ffab3c8bfb2b7fbf0c426e3bca616c4abb" + resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz" integrity sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg== dependencies: cssesc "^3.0.0" @@ -9440,7 +7356,7 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-select postcss-svgo@^5.1.0: version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz" integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== dependencies: postcss-value-parser "^4.2.0" @@ -9448,51 +7364,51 @@ postcss-svgo@^5.1.0: postcss-unique-selectors@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz" integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== dependencies: postcss-selector-parser "^6.0.5" postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^7.0.35: - version "7.0.39" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" - integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== - dependencies: - picocolors "^0.2.1" - source-map "^0.6.1" - -postcss@^8.3.5, postcss@^8.4.19, postcss@^8.4.23, postcss@^8.4.4: +"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3, postcss@^8.3.5, postcss@^8.4, postcss@^8.4.19, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.4, postcss@^8.4.6, "postcss@>= 8", postcss@>=8, postcss@>=8.0.9: version "8.4.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz" integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^7.0.35: + version "7.0.39" + resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz" + integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== + dependencies: + picocolors "^0.2.1" + source-map "^0.6.1" + prelude-ls@^1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== prelude-ls@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: version "5.6.0" - resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== pretty-error@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" + resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz" integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw== dependencies: lodash "^4.17.20" @@ -9500,7 +7416,7 @@ pretty-error@^4.0.0: pretty-format@^27.0.2, pretty-format@^27.5.1: version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== dependencies: ansi-regex "^5.0.1" @@ -9509,7 +7425,7 @@ pretty-format@^27.0.2, pretty-format@^27.5.1: pretty-format@^28.1.3: version "28.1.3" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz" integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== dependencies: "@jest/schemas" "^28.1.3" @@ -9519,7 +7435,7 @@ pretty-format@^28.1.3: pretty-format@^29.0.0, pretty-format@^29.5.0: version "29.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz" integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw== dependencies: "@jest/schemas" "^29.4.3" @@ -9528,24 +7444,19 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-warning@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-1.0.0.tgz#980a0b25dc38cd6034181be4b7726d89066b4616" - integrity sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q== - promise@^8.1.0: version "8.3.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz" integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== dependencies: asap "~2.0.6" prompts@^2.0.1, prompts@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -9553,164 +7464,75 @@ prompts@^2.0.1, prompts@^2.4.2: prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" object-assign "^4.1.1" react-is "^16.13.1" -protobufjs@^6.10.2, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3: - version "6.11.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.3.tgz#637a527205a35caa4f3e2a9a4a13ddffe0e7af74" - integrity sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.1" - "@types/node" ">=13.7.0" - long "^4.0.0" - -protobufjs@^7.0.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2" - integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - proxy-addr@~2.0.7: version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-compare@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/proxy-compare/-/proxy-compare-2.5.0.tgz#0387c5e4d283ba9b1c0353bb20def4449b06bbd2" - integrity sha512-f1us0OsVAJ3tdIMXGQx2lmseYS4YXe4W+sKF5g5ww/jV+5ogMadPt+sIZ+88Ga9kvMJsrRNWzCrKPpr6pMWYbA== - psl@^1.1.33: version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== q@^1.1.2: version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== -qrcode@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.1.tgz#0103f97317409f7bc91772ef30793a54cd59f0cb" - integrity sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" - -qrcode@1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.3.tgz#03afa80912c0dccf12bc93f615a535aad1066170" - integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg== - dependencies: - dijkstrajs "^1.0.1" - encode-utf8 "^1.0.3" - pngjs "^5.0.0" - yargs "^15.3.1" - qs@6.11.0: version "6.11.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" -query-string@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.1.tgz#754620669db978625a90f635f12617c271a088e1" - integrity sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - querystringify@^2.1.1: version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -quick-format-unescaped@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== - -rabin-wasm@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/rabin-wasm/-/rabin-wasm-0.1.5.tgz#5b625ca007d6a2cbc1456c78ae71d550addbc9c9" - integrity sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA== - dependencies: - "@assemblyscript/loader" "^0.9.4" - bl "^5.0.0" - debug "^4.3.1" - minimist "^1.2.5" - node-fetch "^2.6.1" - readable-stream "^3.6.0" - raf@^3.4.1: version "3.4.1" - resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" + resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz" integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA== dependencies: performance-now "^2.1.0" randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" range-parser@^1.2.1, range-parser@~1.2.1: version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== raw-body@2.5.1: version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== dependencies: bytes "3.1.2" @@ -9720,7 +7542,7 @@ raw-body@2.5.1: react-app-polyfill@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7" + resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz" integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w== dependencies: core-js "^3.19.2" @@ -9732,7 +7554,7 @@ react-app-polyfill@^3.0.0: react-dev-utils@^12.0.1: version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" + resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz" integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== dependencies: "@babel/code-frame" "^7.16.0" @@ -9760,9 +7582,9 @@ react-dev-utils@^12.0.1: strip-ansi "^6.0.1" text-table "^0.2.0" -react-dom@^18.2.0: +"react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", react-dom@^18.0.0, react-dom@^18.2.0: version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz" integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== dependencies: loose-envify "^1.1.0" @@ -9770,39 +7592,32 @@ react-dom@^18.2.0: react-error-overlay@^6.0.11: version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" + resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz" integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== react-is@^16.13.1: version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^17.0.1: version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== react-is@^18.0.0: version "18.2.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" + resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-native-fetch-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz#81e1bb6562c292521bc4eca52fe1097f4c1ebab5" - integrity sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA== - dependencies: - p-defer "^3.0.0" - -react-refresh@^0.11.0: +react-refresh@^0.11.0, "react-refresh@>=0.10.0 <1.0.0": version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" + resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz" integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== react-scripts@5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003" + resolved "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz" integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ== dependencies: "@babel/core" "^7.16.0" @@ -9855,23 +7670,23 @@ react-scripts@5.0.1: optionalDependencies: fsevents "^2.3.2" -react@^18.2.0: +"react@^16.8.0 || ^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, "react@>= 16": version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" + resolved "https://registry.npmjs.org/react/-/react-18.2.0.tgz" integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== dependencies: loose-envify "^1.1.0" read-cache@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== dependencies: pify "^2.3.0" -readable-stream@^2.0.1, readable-stream@~2.3.6: +readable-stream@^2.0.1: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -9882,9 +7697,9 @@ readable-stream@^2.0.1, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.0.6: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -9893,38 +7708,21 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" -readonly-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9" - integrity sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ== - -real-require@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.1.0.tgz#736ac214caa20632847b7ca8c1056a0767df9381" - integrity sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg== - -receptacle@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/receptacle/-/receptacle-1.3.2.tgz#a7994c7efafc7a01d0e2041839dab6c4951360d2" - integrity sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A== - dependencies: - ms "^2.1.1" - recursive-readdir@^2.2.2: version "2.2.3" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz" integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== dependencies: minimatch "^3.0.5" redent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== dependencies: indent-string "^4.0.0" @@ -9932,36 +7730,36 @@ redent@^3.0.0: regenerate-unicode-properties@^10.1.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" + resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz" integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== dependencies: regenerate "^1.4.2" regenerate@^1.4.2: version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9: version "0.13.11" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== regenerator-transform@^0.15.1: version "0.15.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" + resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz" integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== dependencies: "@babel/runtime" "^7.8.4" regex-parser@^2.2.11: version "2.2.11" - resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" + resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== dependencies: call-bind "^1.0.2" @@ -9970,7 +7768,7 @@ regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: regexpu-core@^5.3.1: version "5.3.2" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b" + resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz" integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ== dependencies: "@babel/regjsgen" "^0.8.0" @@ -9982,19 +7780,19 @@ regexpu-core@^5.3.1: regjsparser@^0.9.1: version "0.9.1" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" + resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz" integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ== dependencies: jsesc "~0.5.0" relateurl@^0.2.7: version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== renderkid@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a" + resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz" integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg== dependencies: css-select "^4.1.3" @@ -10005,44 +7803,39 @@ renderkid@^3.0.0: require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== resolve-cwd@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== dependencies: resolve-from "^5.0.0" resolve-from@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== resolve-from@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== resolve-url-loader@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57" + resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz" integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA== dependencies: adjust-sourcemap-loader "^4.0.0" @@ -10053,12 +7846,12 @@ resolve-url-loader@^4.0.0: resolve.exports@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2: version "1.22.2" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== dependencies: is-core-module "^2.11.0" @@ -10067,38 +7860,33 @@ resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22 resolve@^2.0.0-next.4: version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + resolved "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz" integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: is-core-module "^2.9.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -retimer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/retimer/-/retimer-3.0.0.tgz#98b751b1feaf1af13eb0228f8ea68b8f9da530df" - integrity sha512-WKE0j11Pa0ZJI5YIk0nflGI7SQsfl2ljihVy7ogh7DeQSeYAUi0ubZ/yEueGtDfUPk6GH5LRw1hBdLq4IwUBWA== - retry@^0.13.1: version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== reusify@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" rollup-plugin-terser@^7.0.0: version "7.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d" + resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz" integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ== dependencies: "@babel/code-frame" "^7.10.4" @@ -10106,23 +7894,23 @@ rollup-plugin-terser@^7.0.0: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup@^2.43.1: +"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1: version "2.79.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz" integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== optionalDependencies: fsevents "~2.3.2" run-parallel@^1.1.9: version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: queue-microtask "^1.2.2" safe-array-concat@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.0.tgz#2064223cba3c08d2ee05148eedbc563cd6d84060" + resolved "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz" integrity sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ== dependencies: call-bind "^1.0.2" @@ -10130,48 +7918,43 @@ safe-array-concat@^1.0.0: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: +safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-json-utils@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" - integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-regex-test@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== dependencies: call-bind "^1.0.2" get-intrinsic "^1.1.3" is-regex "^1.1.4" -safe-stable-stringify@^2.1.0: - version "2.4.3" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" - integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== - "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sanitize.css@*: version "13.0.0" - resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" + resolved "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz" integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== sass-loader@^12.3.0: version "12.6.0" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb" + resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz" integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA== dependencies: klona "^2.0.4" @@ -10179,44 +7962,53 @@ sass-loader@^12.3.0: sax@~1.2.4: version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== saxes@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz" integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: xmlchars "^2.2.0" scheduler@^0.23.0: version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz" integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== dependencies: loose-envify "^1.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" - schema-utils@^2.6.5: version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz" integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== dependencies: "@types/json-schema" "^7.0.5" ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.1.2: +schema-utils@^3.0.0: + version "3.1.2" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz" + integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz" + integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.2.tgz#36c10abca6f7577aeae136c804b0c741edeadc99" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz" integrity sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg== dependencies: "@types/json-schema" "^7.0.8" @@ -10225,7 +8017,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.1.2: schema-utils@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.1.tgz#eb2d042df8b01f4b5c276a2dfd41ba0faab72e8d" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz" integrity sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ== dependencies: "@types/json-schema" "^7.0.9" @@ -10233,38 +8025,63 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" -scrypt-js@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== +schema-utils@2.7.0: + version "2.7.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz" + integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== + dependencies: + "@types/json-schema" "^7.0.4" + ajv "^6.12.2" + ajv-keywords "^3.4.1" select-hose@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz" integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== selfsigned@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" + resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz" integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== dependencies: node-forge "^1" semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: +semver@^7.3.2: + version "7.5.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.5: + version "7.5.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.7: version "7.5.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz" + integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== + dependencies: + lru-cache "^6.0.0" + +semver@^7.3.8: + version "7.5.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz" integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA== dependencies: lru-cache "^6.0.0" send@0.18.0: version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" @@ -10283,21 +8100,21 @@ send@0.18.0: serialize-javascript@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz" integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== dependencies: randombytes "^2.1.0" serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz" integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== dependencies: randombytes "^2.1.0" serve-index@^1.9.1: version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz" integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== dependencies: accepts "~1.3.4" @@ -10310,7 +8127,7 @@ serve-index@^1.9.1: serve-static@1.15.0: version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" @@ -10318,46 +8135,36 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - setprototypeof@1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz" integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.7.3: version "1.8.1" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -10366,53 +8173,46 @@ side-channel@^1.0.4: signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slash@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== slash@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== sockjs@^0.3.24: version "0.3.24" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz" integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== dependencies: faye-websocket "^0.11.3" uuid "^8.3.2" websocket-driver "^0.7.4" -sonic-boom@^2.2.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.8.0.tgz#c1def62a77425090e6ad7516aad8eb402e047611" - integrity sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg== - dependencies: - atomic-sleep "^1.0.0" - source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== source-map-js@^1.0.1, source-map-js@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== source-map-loader@^3.0.0: version "3.0.2" - resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee" + resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz" integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg== dependencies: abab "^2.0.5" @@ -10421,42 +8221,37 @@ source-map-loader@^3.0.0: source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1, source-map@0.6.1: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== source-map@^0.8.0-beta.0: version "0.8.0-beta.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== dependencies: whatwg-url "^7.0.0" sourcemap-codec@^1.4.8: version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== -sparse-array@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/sparse-array/-/sparse-array-1.3.2.tgz#0e1a8b71706d356bc916fe754ff496d450ec20b0" - integrity sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg== - spdy-transport@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz" integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== dependencies: debug "^4.1.0" @@ -10468,7 +8263,7 @@ spdy-transport@^3.0.0: spdy@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz" integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== dependencies: debug "^4.1.0" @@ -10477,80 +8272,67 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - -split2@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - sprintf-js@~1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== stable@^0.1.8: version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== stack-utils@^2.0.3: version "2.0.6" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz" integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== dependencies: escape-string-regexp "^2.0.0" stackframe@^1.3.4: version "1.3.4" - resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310" + resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz" integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw== state-local@^1.0.6: version "1.0.7" - resolved "https://registry.yarnpkg.com/state-local/-/state-local-1.0.7.tgz#da50211d07f05748d53009bee46307a37db386d5" + resolved "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz" integrity sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w== -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.4.0 < 2": version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + stop-iteration-iterator@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4" + resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz" integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ== dependencies: internal-slot "^1.0.4" -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -stream-to-it@^0.2.2: - version "0.2.4" - resolved "https://registry.yarnpkg.com/stream-to-it/-/stream-to-it-0.2.4.tgz#d2fd7bfbd4a899b4c0d6a7e6a533723af5749bd0" - integrity sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ== +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - get-iterator "^1.0.2" + safe-buffer "~5.2.0" -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" string-length@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== dependencies: char-regex "^1.0.2" @@ -10558,7 +8340,7 @@ string-length@^4.0.1: string-length@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e" + resolved "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz" integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow== dependencies: char-regex "^2.0.0" @@ -10566,12 +8348,12 @@ string-length@^5.0.1: string-natural-compare@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4" + resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz" integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw== string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -10580,7 +8362,7 @@ string-width@^4.1.0, string-width@^4.2.0: string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" + resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz" integrity sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg== dependencies: call-bind "^1.0.2" @@ -10594,7 +8376,7 @@ string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8: string.prototype.trim@^1.2.7: version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== dependencies: call-bind "^1.0.2" @@ -10603,7 +8385,7 @@ string.prototype.trim@^1.2.7: string.prototype.trimend@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== dependencies: call-bind "^1.0.2" @@ -10612,30 +8394,16 @@ string.prototype.trimend@^1.0.6: string.prototype.trimstart@^1.0.6: version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== dependencies: call-bind "^1.0.2" define-properties "^1.1.4" es-abstract "^1.20.4" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-object@^3.3.0: version "3.3.0" - resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== dependencies: get-own-enumerable-property-symbols "^3.0.0" @@ -10644,58 +8412,58 @@ stringify-object@^3.3.0: strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== dependencies: ansi-regex "^6.0.1" strip-bom@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== strip-comments@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b" + resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz" integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw== strip-final-newline@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== strip-indent@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + resolved "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== dependencies: min-indent "^1.0.0" strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== style-loader@^3.3.1: version "3.3.2" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.2.tgz#eaebca714d9e462c19aa1e3599057bc363924899" + resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.2.tgz" integrity sha512-RHs/vcrKdQK8wZliteNK4NKzxvLBzpuHMqYmUVWeKa6MkaIQ97ZTOS0b+zapZhy6GcrgWnvWYCMHRirC3FsUmw== stylehacks@^5.1.1: version "5.1.1" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz" integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== dependencies: browserslist "^4.21.4" @@ -10703,7 +8471,7 @@ stylehacks@^5.1.1: sucrase@^3.32.0: version "3.32.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" + resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz" integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== dependencies: "@jridgewell/gen-mapping" "^0.3.2" @@ -10716,28 +8484,28 @@ sucrase@^3.32.0: supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" supports-color@^8.0.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-hyperlinks@^2.0.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz" integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== dependencies: has-flag "^4.0.0" @@ -10745,17 +8513,17 @@ supports-hyperlinks@^2.0.0: supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== svg-parser@^2.0.2: version "2.0.4" - resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz" integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== svgo@^1.2.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz" integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== dependencies: chalk "^2.4.1" @@ -10774,7 +8542,7 @@ svgo@^1.2.2: svgo@^2.7.0: version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz" integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== dependencies: "@trysound/sax" "0.2.0" @@ -10785,19 +8553,14 @@ svgo@^2.7.0: picocolors "^1.0.0" stable "^0.1.8" -symbol-observable@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" - integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== - symbol-tree@^3.2.4: version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== tailwindcss@^3.0.2: version "3.3.2" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.2.tgz#2f9e35d715fdf0bbf674d90147a0684d7054a2d3" + resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz" integrity sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w== dependencies: "@alloc/quick-lru" "^5.2.0" @@ -10826,22 +8589,22 @@ tailwindcss@^3.0.2: tapable@^1.0.0: version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== temp-dir@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz" integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg== tempy@^0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/tempy/-/tempy-0.6.0.tgz#65e2c35abc06f1124a97f387b08303442bde59f3" + resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz" integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw== dependencies: is-stream "^2.0.0" @@ -10851,7 +8614,7 @@ tempy@^0.6.0: terminal-link@^2.0.0: version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== dependencies: ansi-escapes "^4.2.1" @@ -10859,7 +8622,7 @@ terminal-link@^2.0.0: terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.7: version "5.3.7" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" + resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz" integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== dependencies: "@jridgewell/trace-mapping" "^0.3.17" @@ -10870,7 +8633,7 @@ terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.7: terser@^5.0.0, terser@^5.10.0, terser@^5.16.5: version "5.17.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.17.1.tgz#948f10830454761e2eeedc6debe45c532c83fd69" + resolved "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz" integrity sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw== dependencies: "@jridgewell/source-map" "^0.3.2" @@ -10880,7 +8643,7 @@ terser@^5.0.0, terser@^5.10.0, terser@^5.16.5: test-exclude@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== dependencies: "@istanbuljs/schema" "^0.1.2" @@ -10889,72 +8652,58 @@ test-exclude@^6.0.0: text-table@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== thenify-all@^1.0.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/thenify-all/-/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== dependencies: thenify ">= 3.1.0 < 4" "thenify@>= 3.1.0 < 4": version "3.3.1" - resolved "https://registry.yarnpkg.com/thenify/-/thenify-3.3.1.tgz#8932e686a4066038a016dd9e2ca46add9838a95f" + resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== dependencies: any-promise "^1.0.0" -thread-stream@^0.15.1: - version "0.15.2" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-0.15.2.tgz#fb95ad87d2f1e28f07116eb23d85aba3bc0425f4" - integrity sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA== - dependencies: - real-require "^0.1.0" - throat@^6.0.1: version "6.0.2" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" + resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== thunky@^1.0.2: version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz" integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== -timeout-abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/timeout-abort-controller/-/timeout-abort-controller-3.0.0.tgz#dd57ffca041652c03769904f8d95afd93fb95595" - integrity sha512-O3e+2B8BKrQxU2YRyEjC/2yFdb33slI22WRdUaDx6rvysfi9anloNZyR2q0l6LnePo5qH7gSM7uZtvvwZbc2yA== - dependencies: - retimer "^3.0.0" - tmpl@1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz" integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== to-fast-properties@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tough-cookie@^4.0.0: version "4.1.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz" integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ== dependencies: psl "^1.1.33" @@ -10964,36 +8713,31 @@ tough-cookie@^4.0.0: tr46@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA== dependencies: punycode "^2.1.0" tr46@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz" integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== dependencies: punycode "^2.1.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - tryer@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== ts-interface-checker@^0.1.9: version "0.1.13" - resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699" + resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== tsconfig-paths@^3.14.1: version "3.14.2" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" + resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz" integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g== dependencies: "@types/json5" "^0.0.29" @@ -11001,75 +8745,67 @@ tsconfig-paths@^3.14.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@1.14.1, tslib@^1.8.1: +tslib@^1.8.1: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.3.0, tslib@^2.3.1: +tslib@^2.0.3: version "2.5.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz" integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tsutils@^3.21.0: version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: tslib "^1.8.1" -tweetnacl-util@^0.13.3: - version "0.13.5" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.13.5.tgz#e39cd5d99709ee7125a18b03895b45a1299e475f" - integrity sha512-/4Q3hpPFAnbBjNLLOmdTdyvInBfZcQBTWy+LWbypmWxAKwOpSQOyyv4ZZts4CoiYtS8Skyix5CkOWytf7XNK9A== - -tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@^0.4.0, type-check@~0.4.0: +type-check@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: prelude-ls "^1.2.1" type-check@~0.3.2: version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz" integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" +type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + type-detect@4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.16.0: version "0.16.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.16.0.tgz#3240b891a78b0deae910dbeb86553e552a148860" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz" integrity sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg== -type-fest@^0.20.2: +type-fest@^0.20.2, "type-fest@>=0.17.0 <4.0.0": version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-is@~1.6.18: version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== dependencies: media-typer "0.3.0" @@ -11077,7 +8813,7 @@ type-is@~1.6.18: typed-array-length@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== dependencies: call-bind "^1.0.2" @@ -11086,35 +8822,19 @@ typed-array-length@^1.0.4: typedarray-to-buffer@^3.1.5: version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: is-typedarray "^1.0.0" -uint8arraylist@^2.3.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/uint8arraylist/-/uint8arraylist-2.4.3.tgz#1148aa979b407d382e4eb8d9c8f2b4bf3f5910d5" - integrity sha512-oEVZr4/GrH87K0kjNce6z8pSCzLEPqHNLNR5sj8cJOySrTP8Vb/pMIbZKLJGhQKxm1TiZ31atNrpn820Pyqpow== - dependencies: - uint8arrays "^4.0.2" - -uint8arrays@^3.0.0, uint8arrays@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-3.1.1.tgz#2d8762acce159ccd9936057572dade9459f65ae0" - integrity sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg== - dependencies: - multiformats "^9.4.2" - -uint8arrays@^4.0.2: - version "4.0.3" - resolved "https://registry.yarnpkg.com/uint8arrays/-/uint8arrays-4.0.3.tgz#43109c03c4c10d312e7f2e9f4d53e5cd2398c7fd" - integrity sha512-b+aKlI2oTnxnfeSQWV1sMacqSNxqhtXySaH6bflvONGxF8V/fT3ZlYH7z2qgGfydsvpVo4JUgM/Ylyfl2YouCg== - dependencies: - multiformats "^11.0.0" +"typescript@^3.2.1 || ^4", typescript@^4.9.5, "typescript@>= 2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta": + version "4.9.5" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== unbox-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: call-bind "^1.0.2" @@ -11124,12 +8844,12 @@ unbox-primitive@^1.0.2: unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz" integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== unicode-match-property-ecmascript@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz" integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== dependencies: unicode-canonical-property-names-ecmascript "^2.0.0" @@ -11137,49 +8857,49 @@ unicode-match-property-ecmascript@^2.0.0: unicode-match-property-value-ecmascript@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0" + resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz" integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA== unicode-property-aliases-ecmascript@^2.0.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== unique-string@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: crypto-random-string "^2.0.0" universalify@^0.2.0: version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@1.0.0, unpipe@~1.0.0: +unpipe@~1.0.0, unpipe@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unquote@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz" integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg== upath@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== update-browserslist-db@^1.0.10: version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz" integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== dependencies: escalade "^3.1.1" @@ -11187,32 +8907,27 @@ update-browserslist-db@^1.0.10: uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" url-parse@^1.5.3: version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== dependencies: querystringify "^2.1.1" requires-port "^1.0.0" -use-sync-external-store@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" - integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== - util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@~1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz" integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== dependencies: define-properties "^1.1.3" @@ -11220,91 +8935,59 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" -util@^0.12.4: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - utila@~0.4: version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA== utils-merge@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-to-istanbul@^8.1.0: version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz" integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" source-map "^0.7.3" -valtio@1.10.3: - version "1.10.3" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.3.tgz#273eda9ba6459869798b4f58c84514e18fb80ed8" - integrity sha512-t3Ez/+baJ+Z5tIyeaI6nCAbW/hrmcq2jditwg/X++o5IvCdiGirQKTOv1kJq0glgUo13v5oABCVGcinggBfiKw== - dependencies: - proxy-compare "2.5.0" - use-sync-external-store "1.2.0" - -valtio@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/valtio/-/valtio-1.10.4.tgz#762647d102f14060111ed21e8afa28f424c2be78" - integrity sha512-gqGWh0DjtDMAy8Jaui8ufFoxlQB1k1NiA/QHrpKoTUk9EeY331WKeYhvtGn1u703RcefrDCez7PT+qeCu9lWEw== - dependencies: - proxy-compare "2.5.0" - use-sync-external-store "1.2.0" - -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - vary@~1.1.2: version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== w3c-hr-time@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" w3c-xmlserializer@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz" integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: xml-name-validator "^3.0.0" walker@^1.0.7: version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== dependencies: makeerror "1.0.12" watchpack@^2.4.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz" integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" @@ -11312,44 +8995,34 @@ watchpack@^2.4.0: wbuf@^1.1.0, wbuf@^1.7.3: version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz" integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== dependencies: minimalistic-assert "^1.0.0" web-vitals@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-2.1.4.tgz#76563175a475a5e835264d373704f9dde718290c" + resolved "https://registry.npmjs.org/web-vitals/-/web-vitals-2.1.4.tgz" integrity sha512-sVWcwhU5mX6crfI5Vd2dC4qchyTqxV8URinzt25XqVh+bHEPGH4C3NPrNionCP7Obx59wrYEbNlw4Z8sjALzZg== -web-vitals@^3.0.4: - version "3.3.1" - resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-3.3.1.tgz#f80e4fd01784476c023c8b2c4219075bbe96f64d" - integrity sha512-LTfY5GjcY3ngFzNsYFSYL+AmVmlWrzPTUxSMDis2rZbf+SzT7HH3NH4Y/l45XOlrAIunOBeURN9qtBHkRskAiA== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - webidl-conversions@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== webidl-conversions@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz" integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== webidl-conversions@^6.1.0: version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== webpack-dev-middleware@^5.3.1: version "5.3.3" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz" integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== dependencies: colorette "^2.0.10" @@ -11358,9 +9031,9 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.6.0: +webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x": version "4.13.3" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.13.3.tgz#9feb740b8b56b886260bae1360286818a221bae8" + resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.3.tgz" integrity sha512-KqqzrzMRSRy5ePz10VhjyL27K2dxqwXQLP5rAKwRJBPUahe7Z2bBWzHw37jeb8GCPKxZRO79ZdQUAPesMh/Nug== dependencies: "@types/bonjour" "^3.5.9" @@ -11396,7 +9069,7 @@ webpack-dev-server@^4.6.0: webpack-manifest-plugin@^4.0.2: version "4.1.1" - resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f" + resolved "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz" integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow== dependencies: tapable "^2.0.0" @@ -11404,7 +9077,7 @@ webpack-manifest-plugin@^4.0.2: webpack-sources@^1.4.3: version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz" integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== dependencies: source-list-map "^2.0.0" @@ -11412,7 +9085,7 @@ webpack-sources@^1.4.3: webpack-sources@^2.2.0: version "2.3.1" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz" integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA== dependencies: source-list-map "^2.0.1" @@ -11420,12 +9093,12 @@ webpack-sources@^2.2.0: webpack-sources@^3.2.3: version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.64.4: +"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0": version "5.82.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d" + resolved "https://registry.npmjs.org/webpack/-/webpack-5.82.0.tgz" integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg== dependencies: "@types/eslint-scope" "^3.7.3" @@ -11453,9 +9126,9 @@ webpack@^5.64.4: watchpack "^2.4.0" webpack-sources "^3.2.3" -websocket-driver@>=0.5.1, websocket-driver@^0.7.4: +websocket-driver@^0.7.4, websocket-driver@>=0.5.1: version "0.7.4" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz" integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: http-parser-js ">=0.5.1" @@ -11464,46 +9137,47 @@ websocket-driver@>=0.5.1, websocket-driver@^0.7.4: websocket-extensions@>=0.1.1: version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== whatwg-encoding@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" whatwg-fetch@^3.6.2: version "3.6.2" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" + resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== whatwg-mimetype@^2.3.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - whatwg-url@^7.0.0: version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== dependencies: lodash.sortby "^4.7.0" tr46 "^1.0.1" webidl-conversions "^4.0.2" -whatwg-url@^8.0.0, whatwg-url@^8.5.0: +whatwg-url@^8.0.0: + version "8.7.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +whatwg-url@^8.5.0: version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz" integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== dependencies: lodash "^4.7.0" @@ -11512,7 +9186,7 @@ whatwg-url@^8.0.0, whatwg-url@^8.5.0: which-boxed-primitive@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== dependencies: is-bigint "^1.0.1" @@ -11523,7 +9197,7 @@ which-boxed-primitive@^1.0.2: which-collection@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz" integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== dependencies: is-map "^2.0.1" @@ -11531,14 +9205,9 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-module@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" - integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== - -which-typed-array@^1.1.2, which-typed-array@^1.1.9: +which-typed-array@^1.1.9: version "1.1.9" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== dependencies: available-typed-arrays "^1.0.5" @@ -11550,26 +9219,26 @@ which-typed-array@^1.1.2, which-typed-array@^1.1.9: which@^1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: isexe "^2.0.0" which@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== workbox-background-sync@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9" + resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz" integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g== dependencies: idb "^7.0.1" @@ -11577,14 +9246,14 @@ workbox-background-sync@6.5.4: workbox-broadcast-update@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66" + resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz" integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw== dependencies: workbox-core "6.5.4" workbox-build@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389" + resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.5.4.tgz" integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA== dependencies: "@apideck/better-ajv-errors" "^0.3.1" @@ -11627,19 +9296,19 @@ workbox-build@6.5.4: workbox-cacheable-response@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137" + resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz" integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug== dependencies: workbox-core "6.5.4" workbox-core@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba" + resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.5.4.tgz" integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q== workbox-expiration@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539" + resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.5.4.tgz" integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ== dependencies: idb "^7.0.1" @@ -11647,7 +9316,7 @@ workbox-expiration@6.5.4: workbox-google-analytics@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d" + resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz" integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg== dependencies: workbox-background-sync "6.5.4" @@ -11657,14 +9326,14 @@ workbox-google-analytics@6.5.4: workbox-navigation-preload@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212" + resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz" integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng== dependencies: workbox-core "6.5.4" workbox-precaching@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72" + resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.5.4.tgz" integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg== dependencies: workbox-core "6.5.4" @@ -11673,14 +9342,14 @@ workbox-precaching@6.5.4: workbox-range-requests@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399" + resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz" integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg== dependencies: workbox-core "6.5.4" workbox-recipes@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb" + resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.5.4.tgz" integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA== dependencies: workbox-cacheable-response "6.5.4" @@ -11692,21 +9361,21 @@ workbox-recipes@6.5.4: workbox-routing@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da" + resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.5.4.tgz" integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg== dependencies: workbox-core "6.5.4" workbox-strategies@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d" + resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.5.4.tgz" integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw== dependencies: workbox-core "6.5.4" workbox-streams@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69" + resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.5.4.tgz" integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg== dependencies: workbox-core "6.5.4" @@ -11714,12 +9383,12 @@ workbox-streams@6.5.4: workbox-sw@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736" + resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.5.4.tgz" integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA== workbox-webpack-plugin@^6.4.1: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7" + resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz" integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg== dependencies: fast-json-stable-stringify "^2.1.0" @@ -11730,24 +9399,15 @@ workbox-webpack-plugin@^6.4.1: workbox-window@6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91" + resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.5.4.tgz" integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug== dependencies: "@types/trusted-types" "^2.0.2" workbox-core "6.5.4" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -11756,12 +9416,12 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.0: version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== dependencies: imurmurhash "^0.1.4" @@ -11769,102 +9429,59 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@^7, ws@^7.4.0, ws@^7.4.6, ws@^7.5.1: +ws@^7.4.6: version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + resolved "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.13.0: version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" + resolved "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz" integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== xml-name-validator@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== xmlchars@^2.2.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xstream@^11.14.0: - version "11.14.0" - resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5" - integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw== - dependencies: - globalthis "^1.0.1" - symbol-observable "^2.0.3" - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^3.0.2: version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.1.1: version "2.2.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.2.tgz#ec551ef37326e6d42872dad1970300f8eb83a073" + resolved "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz" integrity sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs@^15.3.1: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yargs@^16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -11877,5 +9494,5 @@ yargs@^16.2.0: yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/apps/demo-locked-express-app/README.md b/apps/demo-locked-express-app/README.md new file mode 100644 index 0000000000..b3cc97cdc4 --- /dev/null +++ b/apps/demo-locked-express-app/README.md @@ -0,0 +1,16 @@ +# Demo Locked Express App + +This example code shows how to lock a server-side app behind an access control condition. + +## Getting Started + +Setup: + +- Edit the `MY_OWN_WALLET_ADDRESS` parameter in `index.ts` to a wallet address that you own. +- Set `PORT` in your shell environment - by deafult port `3001` is used. + +Running the app: + +- Run `yarn` to install dependencies. +- Run `yarn start` to start the app. +- Go to `http://localhost:3001` (or whichever port you set) \ No newline at end of file diff --git a/apps/demo-locked-express-app/index.html b/apps/demo-locked-express-app/index.html new file mode 100644 index 0000000000..c2e9a33cb1 --- /dev/null +++ b/apps/demo-locked-express-app/index.html @@ -0,0 +1,81 @@ + + + + + LIT Protocol Minimal JWT Example + + + + + + +

LIT Protocol Minimal JWT Example

+ +

Step 1: Request a JWT to authenticate the user

+ +
+
+
+ +

+ Step 2: Visit the protected server and include the JWT as a url parameter +

+ +
+
+

+    
+ + diff --git a/apps/demo-locked-express-app/index.ts b/apps/demo-locked-express-app/index.ts new file mode 100644 index 0000000000..fcf0db6759 --- /dev/null +++ b/apps/demo-locked-express-app/index.ts @@ -0,0 +1,82 @@ +import express, { Express, Request, Response } from 'express'; +import path from "path"; +import * as LitJsSdk from "@lit-protocol/lit-node-client-nodejs"; +import cookieParser from "cookie-parser"; +import { MultipleAccessControlConditions } from '@lit-protocol/types'; + +const app: Express = express(); +const port = process.env.PORT || 3001; + +const MY_OWN_WALLET_ADDRESS = "0x4259E44670053491E7b4FE4A120C70be1eAD646b"; + +const accessControlCondtionsForProtectedPath1: MultipleAccessControlConditions = { + accessControlConditions: [{ + chain: 'polygon', + contractAddress: '', + method: '', + parameters: [':userAddress'], + returnValueTest: { + comparator: '=', + value: MY_OWN_WALLET_ADDRESS, + }, + standardContractType: '', + }] +}; + +app.use(cookieParser()); + +app.use("/packages", express.static(path.join(__dirname, 'packages'))); + +app.get('/', function(req, res) { + res.sendFile(path.join(__dirname, '/index.html')); +}); + +app.get('/protected-path-1', async function(req: Request, res: Response) { + const jwt = req.query?.jwt || req.cookies?.jwt; + + console.log("JWT is", jwt); + + if (!jwt) { + res.status(401).send("Unauthorized"); + return; + } + + const litNodeClient = new LitJsSdk.LitNodeClientNodeJs({ + litNetwork: "cayenne", + }); + await litNodeClient.connect(); + + try { + // Verify the JWT is signed by the Lit network + const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt, publicKey: litNodeClient.networkPubKey! }); + console.log("JWT verified", verified); + console.log("JWT header", header); + console.log("JWT payload", payload); + + // Verify the access control conditions in the JWT claims are as expected. + const expectedAccessControlConditionsHash = (await litNodeClient.getHashedAccessControlConditions(accessControlCondtionsForProtectedPath1))!.toString(); + const actualAccessControlConditionsHash = (await litNodeClient.getHashedAccessControlConditions(payload))!.toString(); + if (expectedAccessControlConditionsHash !== actualAccessControlConditionsHash) { + console.error("Access control conditions in JWT are not as expected"); + res.status(401).send("Unauthorized"); + return; + } + + // Set cookie. + res.cookie("jwt", jwt, { + secure: process.env.NODE_ENV !== "development", + httpOnly: true, + sameSite: "lax", + }); + + return res.status(200).send("Congrats! You have access to /protected-path-1!") + } catch (e) { + console.error("JWT verification failed", e); + res.status(401).send("Unauthorized"); + return; + } +}); + +app.listen(port, () => { + console.log(`⚡️[server]: Server is running at http://localhost:${port}`); +}); \ No newline at end of file diff --git a/apps/demo-locked-express-app/package.json b/apps/demo-locked-express-app/package.json new file mode 100644 index 0000000000..e1b77272cf --- /dev/null +++ b/apps/demo-locked-express-app/package.json @@ -0,0 +1,28 @@ +{ + "name": "y", + "version": "1.0.0", + "main": "index.js", + "license": "MIT", + "dependencies": { + "@lit-protocol/lit-node-client-nodejs": "file:../../packages/lit-node-client-nodejs", + "cookie-parser": "^1.4.6", + "express": "^4.18.2" + }, + "scripts": { + "build": "yarn clean && npx tsc && yarn copy-files", + "start:local": "node dist/index.js", + "start": "npm-run-all build start:local", + "clean": "rimraf dist/", + "copy-files": "copyfiles **/*.html dist/ && copyfiles -u 3 ../../dist/packages/lit-node-client-vanilla/lit-node-client.js dist/" + }, + "devDependencies": { + "@types/cookie-parser": "^1.4.3", + "@types/express": "^4.17.17", + "@types/node": "^20.3.1", + "copyfiles": "^2.4.1", + "nodemon": "^2.0.22", + "npm-run-all": "^4.1.5", + "rimraf": "^5.0.1", + "typescript": "^5.1.3" + } +} diff --git a/apps/demo-locked-express-app/tsconfig.json b/apps/demo-locked-express-app/tsconfig.json new file mode 100644 index 0000000000..2ba709eed2 --- /dev/null +++ b/apps/demo-locked-express-app/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + "module": "commonjs", /* Specify what module code is generated. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + "strict": true, /* Enable all strict type-checking options. */ + "skipLibCheck": true, /* Skip type checking all .d.ts files. */ + "outDir": "./dist", /* Redirect output structure to the directory. */ + }, + "include": ["**/*.ts", "index.html"], + "exclude": ["node_modules", "**/*.spec.ts"] /* Exclude files from compilation. */ +} diff --git a/apps/demo-locked-express-app/yarn.lock b/apps/demo-locked-express-app/yarn.lock new file mode 100644 index 0000000000..2b374da695 --- /dev/null +++ b/apps/demo-locked-express-app/yarn.lock @@ -0,0 +1,1790 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@lit-protocol/lit-node-client-nodejs@file:../../packages/lit-node-client-nodejs": + version "2.2.11" + resolved "file:../../packages/lit-node-client-nodejs" + +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + +"@types/body-parser@*": + version "1.19.2" + resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz" + integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.35" + resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz" + integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + dependencies: + "@types/node" "*" + +"@types/cookie-parser@^1.4.3": + version "1.4.3" + resolved "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.3.tgz" + integrity sha512-CqSKwFwefj4PzZ5n/iwad/bow2hTCh0FlNAeWLtQM3JA/NX/iYagIpWG2cf1bQKQ2c9gU2log5VUCrn7LDOs0w== + dependencies: + "@types/express" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.17.35" + resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz" + integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*", "@types/express@^4.17.17": + version "4.17.17" + resolved "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz" + integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/http-errors@*": + version "2.0.1" + resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz" + integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + +"@types/mime@*": + version "3.0.1" + resolved "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz" + integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + +"@types/mime@^1": + version "1.3.2" + resolved "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz" + integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + +"@types/node@*", "@types/node@^20.3.1": + version "20.3.1" + resolved "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz" + integrity sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg== + +"@types/qs@*": + version "6.9.7" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + +"@types/range-parser@*": + version "1.2.4" + resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz" + integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + +"@types/send@*": + version "0.17.1" + resolved "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz" + integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-static@*": + version "1.15.2" + resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz" + integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + dependencies: + "@types/http-errors" "*" + "@types/mime" "*" + "@types/node" "*" + +abbrev@1: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +body-parser@1.20.1: + version "1.20.1" + resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz" + integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.11.0" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +chalk@^2.4.1: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +cookie-parser@^1.4.6: + version "1.4.6" + resolved "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.6.tgz" + integrity sha512-z3IzaNjdwUC2olLIB5/ITd0/setiaFMLYiZJle7xg5Fe9KWAceil7xszYfHHBtDFYLSgJduS2Ty0P1uJdPDJeA== + dependencies: + cookie "0.4.1" + cookie-signature "1.0.6" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +copyfiles@^2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz" + integrity sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg== + dependencies: + glob "^7.0.5" + minimatch "^3.0.3" + mkdirp "^1.0.4" + noms "0.0.0" + through2 "^2.0.1" + untildify "^4.0.0" + yargs "^16.1.0" + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz" + integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.20.4: + version "1.21.2" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz" + integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg== + dependencies: + array-buffer-byte-length "^1.0.0" + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.2.0" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.10" + is-weakref "^1.0.2" + object-inspect "^1.12.3" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.4.3" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.7" + string.prototype.trimend "^1.0.6" + string.prototype.trimstart "^1.0.6" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.9" + +es-set-tostringtag@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" + integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + dependencies: + get-intrinsic "^1.1.3" + has "^1.0.3" + has-tostringtag "^1.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +express@^4.18.2: + version "4.18.2" + resolved "https://registry.npmjs.org/express/-/express-4.18.2.tgz" + integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.1" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.11.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functions-have-names@^1.2.2, functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^10.2.5: + version "10.3.0" + resolved "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz" + integrity sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg== + dependencies: + foreground-child "^3.1.0" + jackspeak "^2.0.3" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2" + path-scurry "^1.7.0" + +glob@^7.0.5: + version "7.2.3" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +graceful-fs@^4.1.2: + version "4.2.11" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" + integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@^2.0.1, inherits@~2.0.1, inherits@~2.0.3, inherits@2, inherits@2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +internal-slot@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz" + integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + dependencies: + get-intrinsic "^1.2.0" + has "^1.0.3" + side-channel "^1.0.4" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.11.0: + version "2.12.1" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.9: + version "1.1.10" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz" + integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +jackspeak@^2.0.3: + version "2.2.1" + resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz" + integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +lru-cache@^9.1.1: + version "9.1.2" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz" + integrity sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^9.0.1: + version "9.0.2" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz" + integrity sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg== + dependencies: + brace-expansion "^2.0.1" + +"minipass@^5.0.0 || ^6.0.2": + version "6.0.2" + resolved "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz" + integrity sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w== + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@^2.1.1, ms@2.1.3: + version "2.1.3" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +nodemon@^2.0.22: + version "2.0.22" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz" + integrity sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ== + dependencies: + chokidar "^3.5.2" + debug "^3.2.7" + ignore-by-default "^1.0.1" + minimatch "^3.1.2" + pstree.remy "^1.1.8" + semver "^5.7.1" + simple-update-notifier "^1.0.7" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + +noms@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz" + integrity sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow== + dependencies: + inherits "^2.0.1" + readable-stream "~1.0.31" + +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" + integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg== + dependencies: + abbrev "1" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +npm-run-all@^4.1.5: + version "4.1.5" + resolved "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + +object-inspect@^1.12.3, object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-scurry@^1.7.0: + version "1.9.2" + resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.9.2.tgz" + integrity sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg== + dependencies: + lru-cache "^9.1.1" + minipass "^5.0.0 || ^6.0.2" + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.1" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@^0.3.0: + version "0.3.1" + resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz" + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== + +qs@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== + dependencies: + side-channel "^1.0.4" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1: + version "2.5.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@~1.0.31: + version "1.0.34" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regexp.prototype.flags@^1.4.3: + version "1.5.0" + resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz" + integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + functions-have-names "^1.2.3" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +resolve@^1.10.0: + version "1.22.2" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz" + integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + dependencies: + is-core-module "^2.11.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +rimraf@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz" + integrity sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg== + dependencies: + glob "^10.2.5" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@5.2.1: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.5.0, semver@^5.7.1, "semver@2 || 3 || 4 || 5": + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@~7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.8.1" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz" + integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== + +simple-update-notifier@^1.0.7: + version "1.1.0" + resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz" + integrity sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg== + dependencies: + semver "~7.0.0" + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.13" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz" + integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string.prototype.padend@^3.0.0: + version "3.1.4" + resolved "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz" + integrity sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trim@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz" + integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimend@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz" + integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +string.prototype.trimstart@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz" + integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.4" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +through2@^2.0.1: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== + dependencies: + nopt "~1.0.10" + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typescript@^5.1.3: + version "5.1.3" + resolved "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz" + integrity sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== + +unpipe@~1.0.0, unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +untildify@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz" + integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.9: + version "1.1.9" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz" + integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.10" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs@^16.1.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" diff --git a/apps/demo-pkp-social-auth-next-ts/src/pages/index.tsx b/apps/demo-pkp-social-auth-next-ts/src/pages/index.tsx index c4412579a7..6ab0230db1 100644 --- a/apps/demo-pkp-social-auth-next-ts/src/pages/index.tsx +++ b/apps/demo-pkp-social-auth-next-ts/src/pages/index.tsx @@ -388,7 +388,7 @@ export default function Dashboard() { try { // Set up LitNodeClient and connect to Lit nodes const litNodeClient = new LitNodeClient({ - litNetwork: 'serrano', + litNetwork: 'cayenne', debug: false, }); await litNodeClient.connect(); diff --git a/apps/html/manual.html b/apps/html/manual.html index 63db712024..af17fffdc5 100644 --- a/apps/html/manual.html +++ b/apps/html/manual.html @@ -36,7 +36,7 @@

(Manual) HTML Test

diff --git a/apps/html/manual_tests.html b/apps/html/manual_tests.html index 139f1f32d4..1cc5406779 100644 --- a/apps/html/manual_tests.html +++ b/apps/html/manual_tests.html @@ -13,7 +13,7 @@ const LitJsSdk = LitJsSdk_litNodeClient; const litNodeClient = new LitNodeClient({ - litNetwork: 'serrano', + litNetwork: 'cayenne', }); litNodeClient.connect(); @@ -35,7 +35,7 @@ type: 'text/plain', }); - const { zipBlob } = await LitJsSdk.encryptFileAndZipWithMetadata({ + const zipBlob = await LitJsSdk.encryptFileAndZipWithMetadata({ file, accessControlConditions, evmContractConditions, @@ -93,33 +93,17 @@ }); } - let resourceId = { - baseUrl: 'my-dynamic-content-server.com', - path: randomPath(), - orgId: '', - role: '', - extraData: '', - }; - - await litNodeClient.saveSigningCondition({ - accessControlConditions, - chain, - authSig, - resourceId, - }); - let jwt = await litNodeClient.getSignedToken({ accessControlConditions, chain, authSig, - resourceId, }); console.log('jwt', jwt); // uncomment this to break the jwt, to test an invalid jwt // jwt = jwt.replace(/.$/, "3"); - const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt }); + const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt, publicKey: litNodeClient.networkPubKey }); console.log('verified', verified); console.log('header', header); console.log('payload', payload); @@ -866,122 +850,6 @@ }); }; - var SignChainData = async () => { - const testName = 'SignChainData'; - document.getElementById('status').innerText = `Testing ${testName}...`; - document.getElementById('humanized').innerText = ''; - - const aggregatorV3InterfaceABI = [ - { - inputs: [], - name: 'decimals', - outputs: [{ internalType: 'uint8', name: '', type: 'uint8' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'description', - outputs: [{ internalType: 'string', name: '', type: 'string' }], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { internalType: 'uint80', name: '_roundId', type: 'uint80' }, - ], - name: 'getRoundData', - outputs: [ - { internalType: 'uint80', name: 'roundId', type: 'uint80' }, - { internalType: 'int256', name: 'answer', type: 'int256' }, - { internalType: 'uint256', name: 'startedAt', type: 'uint256' }, - { internalType: 'uint256', name: 'updatedAt', type: 'uint256' }, - { - internalType: 'uint80', - name: 'answeredInRound', - type: 'uint80', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'latestRoundData', - outputs: [ - { internalType: 'uint80', name: 'roundId', type: 'uint80' }, - { internalType: 'int256', name: 'answer', type: 'int256' }, - { internalType: 'uint256', name: 'startedAt', type: 'uint256' }, - { internalType: 'uint256', name: 'updatedAt', type: 'uint256' }, - { - internalType: 'uint80', - name: 'answeredInRound', - type: 'uint80', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'version', - outputs: [{ internalType: 'uint256', name: '', type: 'uint256' }], - stateMutability: 'view', - type: 'function', - }, - ]; - // this is the address for the chainlink eth/usd price oracle - const addr = '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419'; - - const callData = LitJsSdk.encodeCallData({ - abi: aggregatorV3InterfaceABI, - functionName: 'latestRoundData', - functionParams: [], - }); - - const callRequests = [{ to: addr, data: callData }]; - console.log('callRequests', callRequests); - - const chain = 'ethereum'; - - const jwt = await litNodeClient.getSignedChainDataToken({ - callRequests, - chain, - }); - - console.log('jwt', jwt); - - const { verified, header, payload, signature } = LitJsSdk.verifyJwt({ - jwt, - }); - - console.log('jwt payload: ', payload); - - // const decoded = iface.decodeFunctionResult( - // "latestRoundData", - // payload.callResponses[0] - // ); - const decoded = LitJsSdk.decodeCallResult({ - abi: aggregatorV3InterfaceABI, - functionName: 'latestRoundData', - data: payload.callResponses[0], - }); - - console.log('decoded', decoded); - const answer = decoded.answer - .div(ethers.BigNumber.from('10').pow(ethers.BigNumber.from('8'))) - .toString(); - console.log('answer: ', answer); - - if (jwt && verified) { - document.getElementById( - 'status' - ).innerText = `${testName}: Success - ETH Price is $${answer}`; - } else { - document.getElementById('status').innerText = `${testName}: Failure`; - } - }; - var SendBadRequestToNodes = async () => { const testName = 'SendBadRequestToNodes'; document.getElementById('status').innerText = `Testing ${testName}...`; @@ -997,7 +865,7 @@ method: 'balanceOf', parameters: [':userAddress', '8'], returnValueTest: { - comparator: '>', + comparator: '<', value: '0', }, }, @@ -1005,20 +873,11 @@ var authSig = await LitJsSdk.checkAndSignAuthMessage({ chain }); - let resourceId = { - baseUrl: 'my-dynamic-content-server.com', - path: randomPath(), - orgId: '', - role: '', - extraData: '', - }; - try { - await litNodeClient.saveSigningCondition({ + await litNodeClient.getSignedToken({ accessControlConditions, //chain, // intentionally exclude this to cause an error parsing the JSON authSig, - resourceId, }); } catch (e) { console.log('error', e); @@ -1055,32 +914,27 @@ { accessControlConditions } )}`; - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString('this is a secret message'); - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - }); - - console.log('encrypted symmetric key', encryptedSymmetricKey); - - const retrievedSymmKey = await litNodeClient.getEncryptionKey({ - accessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ), - chain, - authSig, - }); + const { ciphertext, dataToEncryptHash } = await LitJsSdk.zipAndEncryptString( + { + dataToEncrypt: 'this is a secret message', + accessControlConditions, + chain, + authSig, + }, + litNodeClient, + ); - const decryptedFiles = await LitJsSdk.decryptZip( - encryptedZip, - retrievedSymmKey + const decryptedFiles = await LitJsSdk.decryptToZip( + { + accessControlConditions, + chain, + authSig, + ciphertext, + dataToEncryptHash, + }, + litNodeClient, ); + const decryptedString = await decryptedFiles['string.txt'].async( 'text' ); @@ -1117,32 +971,25 @@ { accessControlConditions } )}`; - const { encryptedString, symmetricKey } = await LitJsSdk.encryptString( - 'this is a secret message' + const { ciphertext, dataToEncryptHash } = await LitJsSdk.encryptString( + { + dataToEncrypt: 'this is a secret message', + accessControlConditions, + chain, + authSig, + }, + litNodeClient, ); - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - }); - - console.log('encrypted symmetric key', encryptedSymmetricKey); - - const retrievedSymmKey = await litNodeClient.getEncryptionKey({ - accessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ), - chain, - authSig, - }); - - const decryptedString = await LitJsSdk.decryptString( - encryptedString, - retrievedSymmKey + const decryptedString = await LitJsSdk.decryptToString( + { + accessControlConditions, + chain, + authSig, + ciphertext, + dataToEncryptHash, + }, + litNodeClient, ); console.log('decrypted string', decryptedString); @@ -1152,13 +999,15 @@ ).innerText = `${testName}: Success. Decrypted string is: ${decryptedString}`; }; - var EncryptDecryptWithAnUpdate = async () => { - const testName = 'EncryptDecryptWithAnUpdate'; + var EncryptDecryptAGroup = async () => { + const testName = 'EncryptDecryptAGroup'; document.getElementById('status').innerText = `Testing ${testName}...`; + const authSig = await LitJsSdk.checkAndSignAuthMessage({ chain, }); const accessControlConditions = [ + // holds some eth { contractAddress: '', standardContractType: '', @@ -1167,9 +1016,37 @@ parameters: [':userAddress', 'latest'], returnValueTest: { comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) + value: '10000000000000', }, }, + { operator: 'and' }, + [ + // erc 1155 possession + { + contractAddress: '0x7C7757a9675f06F3BE4618bB68732c4aB25D2e88', + standardContractType: 'ERC1155', + chain, + method: 'balanceOf', + parameters: [':userAddress', '8'], + returnValueTest: { + comparator: '>', + value: '0', + }, + }, + { operator: 'or' }, + // erc721 posession + { + contractAddress: '0x319ba3aab86e04a37053e984bd411b2c63bf229e', + standardContractType: 'ERC721', + chain, + method: 'ownerOf', + parameters: ['5954'], + returnValueTest: { + comparator: '=', + value: ':userAddress', + }, + }, + ], ]; document.getElementById( @@ -1178,72 +1055,27 @@ { accessControlConditions } )}`; - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString('this is a secret message'); - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - permanant: false, - }); - - console.log('encrypted symmetric key', encryptedSymmetricKey); - - let retrievedSymmKey; - try { - retrievedSymmKey = await litNodeClient.getEncryptionKey({ + const { ciphertext, dataToEncryptHash } = await LitJsSdk.zipAndEncryptString( + { + dataToEncrypt: 'this is a secret message', accessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ), chain, authSig, - }); - } catch (e) { - console.log('error getting symmetric key - this is expected', e); - console.log('trying to update the condition'); - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; + }, + litNodeClient, + ); - const newEncryptedSymmetricKey = - await litNodeClient.saveEncryptionKey({ - accessControlConditions: newAccessControlConditions, - encryptedSymmetricKey, - authSig, - chain, - permanant: false, - }); - console.log('updated the condition'); - - retrievedSymmKey = await litNodeClient.getEncryptionKey({ - accessControlConditions: newAccessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ), + const decryptedFiles = await LitJsSdk.decryptToZip( + { + accessControlConditions, chain, authSig, - }); - } - - const decryptedFiles = await LitJsSdk.decryptZip( - encryptedZip, - retrievedSymmKey + ciphertext, + dataToEncryptHash, + }, + litNodeClient, ); + const decryptedString = await decryptedFiles['string.txt'].async( 'text' ); @@ -1254,102 +1086,79 @@ ).innerText = `${testName}: Success. Decrypted string is: ${decryptedString}`; }; - var EncryptDecryptWithAnUnauthorizedUpdate = async () => { - const testName = 'EncryptDecryptWithAnUnauthorizedUpdate'; + /// ECDSA Test function + var EcdsaSignMessage = async () => { + const testName = 'EcdsaSignMessage'; document.getElementById('status').innerText = `Testing ${testName}...`; - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ + try { + console.log('start signing message with ECDSA'); + const nodeResponse = await litNodeClient.signWithEcdsa({ + message: 'LitProtocol rocks!', + chain, + }); + + console.log('signed message with ECDSA'); + const vals = JSON.stringify(nodeResponse); + document.getElementById( + 'status' + ).innerText = `${testName}: Success. Response: ${vals}`; + } catch (e) { + console.log('error signing with ECDSA', e); + document.getElementById( + 'status' + ).innerText = `${testName}: Failure. `; + return; + } + }; + + var ecdsa_validate_ERC721 = async () => { + const chain = 'ethereum'; + + var accessControlConditions = [ { - contractAddress: '', - standardContractType: '', + contractAddress: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', + standardContractType: 'ERC721', chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], + method: 'balanceOf', + parameters: [':userAddress'], returnValueTest: { - comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) + comparator: '>', + value: '0', }, }, ]; - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString('this is a secret message'); + const testName = 'ecdsa_validate_condition'; - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - permanant: false, - }); + document.getElementById('status').innerText = `Testing ${testName}...`; + try { + console.log('validating condition and ecdsa signing '); - console.log('encrypted symmetric key', encryptedSymmetricKey); + var auth_sig = await LitJsSdk.checkAndSignAuthMessage({ chain }); - try { - console.log( - 'trying to update the condition with an unauthorized address' - ); - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; - - let unauthorizedAuthSig = { - sig: '0x2229236873d413f301c1afb7650959dee9f9a984c7421c9a44e41009940a5e410925d03374ddaf51590c7899253f30d589f1d7fec694f15829c8157c24f999f81c', - derivedVia: 'web3.eth.personal.sign', - signedMessage: - 'I am creating an account to use Lit Protocol at 2022-01-27T02:07:14.289Z', - address: '0xb962537314b11c6bcd6d9ff63feb048a9e91e7ae', - }; - - const newEncryptedSymmetricKey = - await litNodeClient.saveEncryptionKey({ - accessControlConditions: newAccessControlConditions, - encryptedSymmetricKey, - authSig: unauthorizedAuthSig, - chain, - permanant: false, - }); - console.log('updated the condition'); + const nodeResponse = await litNodeClient.validate_and_sign_ecdsa({ + accessControlConditions, + chain, + auth_sig, + }); + // let jwt = await litNodeClient.getSignedToken({ + console.log('validated & signed message with ECDSA'); + const vals = JSON.stringify(nodeResponse); + document.getElementById( + 'status' + ).innerText = `${testName}: Success. Response: ${vals}`; } catch (e) { - console.log('error getting symmetric key - this is expected', e); - if (isNodeStorageError(e.errorCode)) { - document.getElementById( - 'status' - ).innerText = `${testName}: Success. We were unable to update.`; - } else { - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. When we tried to update with an unauthorized acct, we got an error that isn't a storage error`; - } + console.log('error validating & signing with ECDSA', e); + document.getElementById( + 'status' + ).innerText = `${testName}: Failure. `; return; } - - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. We updated a condition we shouldn't been able to! OMG FIX THIS`; }; - var EncryptDecryptPermanantCondition = async () => { - const testName = 'EncryptDecryptPermanantCondition'; - document.getElementById('status').innerText = `Testing ${testName}...`; + var EncryptFileAndZipWithMetadata = async () => { + const testResults = {}; + const testName = 'EncryptFileAndZipWithMetadata'; const authSig = await LitJsSdk.checkAndSignAuthMessage({ chain, }); @@ -1362,712 +1171,7 @@ parameters: [':userAddress', 'latest'], returnValueTest: { comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) - }, - }, - ]; - - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString('this is a secret message'); - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - permanant: true, - }); - - console.log('encrypted symmetric key', encryptedSymmetricKey); - - try { - console.log('trying to update the permanant condition'); - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; - - const newEncryptedSymmetricKey = - await litNodeClient.saveEncryptionKey({ - accessControlConditions: newAccessControlConditions, - encryptedSymmetricKey, - authSig, - chain, - }); - console.log('updated the condition'); - } catch (e) { - console.log('error getting symmetric key - this is expected', e); - if (isNodeStorageError(e.errorCode)) { - document.getElementById( - 'status' - ).innerText = `${testName}: Success. We were unable to update.`; - } else { - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. When we tried to update with an unauthorized acct, we got an error that isn't a storage error`; - } - return; - } - - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. We updated a condition we shouldn't been able to! OMG FIX THIS`; - }; - - var EncryptDecryptPermanentCondition = async () => { - const testName = 'EncryptDecryptPermanentCondition'; - document.getElementById('status').innerText = `Testing ${testName}...`; - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) - }, - }, - ]; - - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString('this is a secret message'); - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - permanent: true, - }); - - console.log('encrypted symmetric key', encryptedSymmetricKey); - - try { - console.log('trying to update the permanent condition'); - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; - - const newEncryptedSymmetricKey = - await litNodeClient.saveEncryptionKey({ - accessControlConditions: newAccessControlConditions, - encryptedSymmetricKey, - authSig, - chain, - }); - console.log('updated the condition'); - } catch (e) { - console.log('error getting symmetric key - this is expected', e); - if (isNodeStorageError(e.errorCode)) { - document.getElementById( - 'status' - ).innerText = `${testName}: Success. We were unable to update.`; - } else { - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. When we tried to update with an unauthorized acct, we got an error that isn't a storage error`; - } - return; - } - - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. We updated a condition we shouldn't been able to! OMG FIX THIS`; - }; - - var EncryptDecryptAGroup = async () => { - const testName = 'EncryptDecryptAGroup'; - document.getElementById('status').innerText = `Testing ${testName}...`; - - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ - // holds some eth - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - { operator: 'and' }, - [ - // erc 1155 possession - { - contractAddress: '0x7C7757a9675f06F3BE4618bB68732c4aB25D2e88', - standardContractType: 'ERC1155', - chain, - method: 'balanceOf', - parameters: [':userAddress', '8'], - returnValueTest: { - comparator: '>', - value: '0', - }, - }, - { operator: 'or' }, - // erc721 posession - { - contractAddress: '0x319ba3aab86e04a37053e984bd411b2c63bf229e', - standardContractType: 'ERC721', - chain, - method: 'ownerOf', - parameters: ['5954'], - returnValueTest: { - comparator: '=', - value: ':userAddress', - }, - }, - ], - ]; - - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString('this is a secret message'); - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - }); - - console.log('encrypted symmetric key', encryptedSymmetricKey); - - const retrievedSymmKey = await litNodeClient.getEncryptionKey({ - accessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ), - chain, - authSig, - }); - - const decryptedFiles = await LitJsSdk.decryptZip( - encryptedZip, - retrievedSymmKey - ); - const decryptedString = await decryptedFiles['string.txt'].async( - 'text' - ); - console.log('decrypted string', decryptedString); - - document.getElementById( - 'status' - ).innerText = `${testName}: Success. Decrypted string is: ${decryptedString}`; - }; - - var EthSignWithAnUpdate = async () => { - const testName = 'EthSignWithAnUpdate'; - document.getElementById('status').innerText = `Testing ${testName}...`; - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) - }, - }, - ]; - - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - let resourceId = { - baseUrl: 'my-dynamic-content-server.com', - path: randomPath(), - orgId: '', - role: '', - extraData: '', - }; - - await litNodeClient.saveSigningCondition({ - accessControlConditions, - chain, - authSig, - resourceId, - permanant: false, - }); - - // uncomment this to break the jwt, to test an invalid jwt - // jwt = jwt.replace(/.$/, "3"); - - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; - - let jwt; - try { - jwt = await litNodeClient.getSignedToken({ - accessControlConditions, - chain, - authSig, - resourceId, - permanant: false, - }); - console.log('jwt', jwt); - } catch (e) { - console.log('error getting symmetric key - this is expected', e); - console.log('trying to update the condition'); - - const saved = await litNodeClient.saveSigningCondition({ - accessControlConditions: newAccessControlConditions, - chain, - authSig, - resourceId, - }); - console.log('updated the condition'); - } - - jwt = await litNodeClient.getSignedToken({ - accessControlConditions: newAccessControlConditions, - chain, - authSig, - resourceId, - }); - - const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt }); - console.log('verified', verified); - console.log('header', header); - console.log('payload', payload); - - if (jwt && verified) { - document.getElementById('status').innerText = `${testName}: Success`; - } else { - document.getElementById('status').innerText = `${testName}: Failure`; - } - }; - - var EthSignWithAnUnauthorizedUpdate = async () => { - const testName = 'EthSignWithAnUnauthorizedUpdate'; - document.getElementById('status').innerText = `Testing ${testName}...`; - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) - }, - }, - ]; - - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - let resourceId = { - baseUrl: 'my-dynamic-content-server.com', - path: randomPath(), - orgId: '', - role: '', - extraData: '', - }; - - await litNodeClient.saveSigningCondition({ - accessControlConditions, - chain, - authSig, - resourceId, - permanant: false, - }); - - // uncomment this to break the jwt, to test an invalid jwt - // jwt = jwt.replace(/.$/, "3"); - - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; - - let jwt; - try { - let unauthorizedAuthSig = { - sig: '0x2229236873d413f301c1afb7650959dee9f9a984c7421c9a44e41009940a5e410925d03374ddaf51590c7899253f30d589f1d7fec694f15829c8157c24f999f81c', - derivedVia: 'web3.eth.personal.sign', - signedMessage: - 'I am creating an account to use Lit Protocol at 2022-01-27T02:07:14.289Z', - address: '0xb962537314b11c6bcd6d9ff63feb048a9e91e7ae', - }; - - console.log('trying to update the condition'); - - const newEncryptedSymmetricKey = - await litNodeClient.saveSigningCondition({ - accessControlConditions: newAccessControlConditions, - chain, - authSig: unauthorizedAuthSig, - resourceId, - }); - console.log('updated the condition'); - } catch (e) { - console.log('error updating the condition - this is expected', e); - if (isNodeStorageError(e.errorCode)) { - document.getElementById( - 'status' - ).innerText = `${testName}: Success. We were unable to update.`; - } else { - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. When we tried to update with an unauthorized acct, we got an error that isn't a storage error`; - } - return; - } - - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. We updated a condition we shouldn't been able to! OMG FIX THIS`; - }; - - /// ECDSA Test function - var EcdsaSignMessage = async () => { - const testName = 'EcdsaSignMessage'; - document.getElementById('status').innerText = `Testing ${testName}...`; - try { - console.log('start signing message with ECDSA'); - const nodeResponse = await litNodeClient.signWithEcdsa({ - message: 'LitProtocol rocks!', - chain, - }); - - console.log('signed message with ECDSA'); - const vals = JSON.stringify(nodeResponse); - document.getElementById( - 'status' - ).innerText = `${testName}: Success. Response: ${vals}`; - } catch (e) { - console.log('error signing with ECDSA', e); - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. `; - return; - } - }; - - var ecdsa_validate_ERC721 = async () => { - const chain = 'ethereum'; - - var accessControlConditions = [ - { - contractAddress: '0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85', - standardContractType: 'ERC721', - chain, - method: 'balanceOf', - parameters: [':userAddress'], - returnValueTest: { - comparator: '>', - value: '0', - }, - }, - ]; - - const testName = 'ecdsa_validate_condition'; - - document.getElementById('status').innerText = `Testing ${testName}...`; - try { - console.log('validating condition and ecdsa signing '); - - var auth_sig = await LitJsSdk.checkAndSignAuthMessage({ chain }); - - const nodeResponse = await litNodeClient.validate_and_sign_ecdsa({ - accessControlConditions, - chain, - auth_sig, - }); - // let jwt = await litNodeClient.getSignedToken({ - console.log('validated & signed message with ECDSA'); - const vals = JSON.stringify(nodeResponse); - document.getElementById( - 'status' - ).innerText = `${testName}: Success. Response: ${vals}`; - } catch (e) { - console.log('error validating & signing with ECDSA', e); - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. `; - return; - } - }; - - var EthSignPermanantCondition = async () => { - const testName = 'EthSignPermanantCondition'; - document.getElementById('status').innerText = `Testing ${testName}...`; - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) - }, - }, - ]; - - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - let resourceId = { - baseUrl: 'my-dynamic-content-server.com', - path: randomPath(), - orgId: '', - role: '', - extraData: '', - }; - - await litNodeClient.saveSigningCondition({ - accessControlConditions, - chain, - authSig, - resourceId, - permanant: true, - }); - - // uncomment this to break the jwt, to test an invalid jwt - // jwt = jwt.replace(/.$/, "3"); - - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; - - let jwt; - try { - console.log('trying to update the permanant condition'); - - const newEncryptedSymmetricKey = - await litNodeClient.saveSigningCondition({ - accessControlConditions: newAccessControlConditions, - chain, - authSig, - resourceId, - }); - console.log('updated the condition'); - } catch (e) { - console.log('error updating the condition - this is expected', e); - if (isNodeStorageError(e.errorCode)) { - document.getElementById( - 'status' - ).innerText = `${testName}: Success. We were unable to update.`; - } else { - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. When we tried to update with an unauthorized acct, we got an error that isn't a storage error`; - } - return; - } - - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. We updated a condition we shouldn't been able to! OMG FIX THIS`; - }; - - var EthSignPermanentCondition = async () => { - const testName = 'EthSignPermanentCondition'; - document.getElementById('status').innerText = `Testing ${testName}...`; - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '100000000000000000000000', // 100000 eth (or matic, really) - }, - }, - ]; - - document.getElementById( - 'humanized' - ).innerText = `Humanized: ${await LitJsSdk.humanizeAccessControlConditions( - { accessControlConditions } - )}`; - - let resourceId = { - baseUrl: 'my-dynamic-content-server.com', - path: randomPath(), - orgId: '', - role: '', - extraData: '', - }; - - await litNodeClient.saveSigningCondition({ - accessControlConditions, - chain, - authSig, - resourceId, - permanent: true, - }); - - // uncomment this to break the jwt, to test an invalid jwt - // jwt = jwt.replace(/.$/, "3"); - - const newAccessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', - }, - }, - ]; - - let jwt; - try { - console.log('trying to update the permanent condition'); - - const newEncryptedSymmetricKey = - await litNodeClient.saveSigningCondition({ - accessControlConditions: newAccessControlConditions, - chain, - authSig, - resourceId, - }); - console.log('updated the condition'); - } catch (e) { - console.log('error updating the condition - this is expected', e); - if (isNodeStorageError(e.errorCode)) { - document.getElementById( - 'status' - ).innerText = `${testName}: Success. We were unable to update.`; - } else { - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. When we tried to update with an unauthorized acct, we got an error that isn't a storage error`; - } - return; - } - - document.getElementById( - 'status' - ).innerText = `${testName}: Failure. We updated a condition we shouldn't been able to! OMG FIX THIS`; - }; - - var EncryptFileAndZipWithMetadata = async () => { - const testResults = {}; - const testName = 'EncryptFileAndZipWithMetadata'; - const authSig = await LitJsSdk.checkAndSignAuthMessage({ - chain, - }); - const accessControlConditions = [ - { - contractAddress: '', - standardContractType: '', - chain, - method: 'eth_getBalance', - parameters: [':userAddress', 'latest'], - returnValueTest: { - comparator: '>=', - value: '10000000000000', + value: '10000000000000', }, }, ]; @@ -2324,32 +1428,25 @@ { accessControlConditions } )}`; - const { encryptedString, symmetricKey } = await LitJsSdk.encryptString( - 'this is a secret message' + const { ciphertext, dataToEncryptHash } = await LitJsSdk.encryptString( + { + dataToEncrypt: 'this is a secret message', + accessControlConditions, + chain, + authSig, + }, + litNodeClient, ); - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - symmetricKey, - authSig, - chain, - }); - - console.log('encrypted symmetric key', encryptedSymmetricKey); - - const retrievedSymmKey = await litNodeClient.getEncryptionKey({ - accessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ), - chain, - authSig, - }); - - const decryptedString = await LitJsSdk.decryptString( - encryptedString, - retrievedSymmKey + const decryptedString = await LitJsSdk.decryptToString( + { + accessControlConditions, + chain, + authSig, + ciphertext, + dataToEncryptHash, + }, + litNodeClient, ); console.log('decrypted string', decryptedString); @@ -2557,9 +1654,6 @@

Manual tests



- -
-
@@ -2573,57 +1667,11 @@

Manual tests



- -
-
- -
-
- -
-
- -
-


- -
-
- -
-
- -
-
- -
-

-
-
-

diff --git a/apps/html/manual_tests_cosmos.html b/apps/html/manual_tests_cosmos.html index de640c0b5d..6044c62959 100644 --- a/apps/html/manual_tests_cosmos.html +++ b/apps/html/manual_tests_cosmos.html @@ -12,7 +12,7 @@ diff --git a/apps/html/manual_tests_sol.html b/apps/html/manual_tests_sol.html index b874327ba2..c8a39a433f 100644 --- a/apps/html/manual_tests_sol.html +++ b/apps/html/manual_tests_sol.html @@ -15,7 +15,7 @@ const LitJsSdk = LitJsSdk_litNodeClient; - const litNodeClient = new LitNodeClient({litNetwork: 'serrano'}); + const litNodeClient = new LitNodeClient({litNetwork: 'cayenne'}); litNodeClient.connect(); var chain = "solana"; @@ -40,33 +40,17 @@ var authSig = await LitJsSdk.checkAndSignAuthMessage({ chain }); - let resourceId = { - baseUrl: "my-dynamic-content-server.com", - path: randomPath(), - orgId: "", - role: "", - extraData: "", - }; - - await litNodeClient.saveSigningCondition({ - solRpcConditions, - chain, - authSig, - resourceId, - }); - let jwt = await litNodeClient.getSignedToken({ solRpcConditions, chain, authSig, - resourceId, }); console.log("jwt", jwt); // uncomment this to break the jwt, to test an invalid jwt // jwt = jwt.replace(/.$/, "3"); - const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt }); + const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt, publicKey: litNodeClient.networkPubKey }); console.log("verified", verified); console.log("header", header); console.log("payload", payload); @@ -94,32 +78,27 @@ { solRpcConditions } )}`; - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString("this is a secret message"); - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - solRpcConditions, - symmetricKey, - authSig, - chain, - }); - - console.log("encrypted symmetric key", encryptedSymmetricKey); - - const retrievedSymmKey = await litNodeClient.getEncryptionKey({ - solRpcConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - "base16" - ), - chain, - authSig, - }); + const { ciphertext, dataToEncryptHash } = await LitJsSdk.zipAndEncryptString( + { + dataToEncrypt: 'this is a secret message', + solRpcConditions, + chain, + authSig, + }, + litNodeClient, + ); - const decryptedFiles = await LitJsSdk.decryptZip( - encryptedZip, - retrievedSymmKey + const decryptedFiles = await LitJsSdk.decryptToZip( + { + solRpcConditions, + chain, + authSig, + ciphertext, + dataToEncryptHash, + }, + litNodeClient, ); + const decryptedString = await decryptedFiles["string.txt"].async( "text" ); diff --git a/apps/html/manual_tests_unified.html b/apps/html/manual_tests_unified.html index 5720848736..e5d1a6f730 100644 --- a/apps/html/manual_tests_unified.html +++ b/apps/html/manual_tests_unified.html @@ -15,7 +15,7 @@ const LitJsSdk = LitJsSdk_litNodeClient; - const litNodeClient = new LitNodeClient({litNetwork: 'serrano'}); + const litNodeClient = new LitNodeClient({litNetwork: 'cayenne'}); litNodeClient.connect(); //var authSig = JSON.parse("{\"sig\":\"0x18a173d68d2f78cc5c13da0dfe36eec2a293285bee6d42547b9577bf26cdc985660ed3dddc4e75d422366cac07e8a9fc77669b10373bef9c7b8e4280252dfddf1b\",\"derivedVia\":\"web3.eth.personal.sign\",\"signedMessage\":\"I am creating an account to use LITs at 2021-08-04T20:14:04.918Z\",\"address\":\"0xdbd360f30097fb6d938dcc8b7b62854b36160b45\"}") @@ -42,37 +42,19 @@ chain: "ethereum", }); - let resourceId = { - baseUrl: "my-dynamic-content-server.com", - path: randomPath(), - orgId: "", - role: "", - extraData: "", - }; - - await litNodeClient.saveSigningCondition({ - unifiedAccessControlConditions, - authSig: { - solana: solAuthSig, - ethereum: ethAuthSig, - }, - resourceId, - }); - let jwt = await litNodeClient.getSignedToken({ unifiedAccessControlConditions, authSig: { solana: solAuthSig, ethereum: ethAuthSig, }, - resourceId, }); console.log("jwt", jwt); // uncomment this to break the jwt, to test an invalid jwt // jwt = jwt.replace(/.$/, "3"); - const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt }); + const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt, publicKey: litNodeClient.networkPubKey }); console.log("verified", verified); console.log("header", header); console.log("payload", payload); @@ -103,34 +85,34 @@ { unifiedAccessControlConditions } )}`; - const { encryptedZip, symmetricKey } = - await LitJsSdk.zipAndEncryptString("this is a secret message"); - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - unifiedAccessControlConditions, - symmetricKey, - authSig: { - ethereum: ethAuthSig, - solana: solAuthSig, + const { ciphertext, dataToEncryptHash } = await LitJsSdk.zipAndEncryptString( + { + dataToEncrypt: 'this is a secret message', + unifiedAccessControlConditions, + authSig: { + ethereum: ethAuthSig, + solana: solAuthSig, + }, }, - }); - - console.log("encrypted symmetric key", encryptedSymmetricKey); + litNodeClient, + ); if (sleepTime) { let failed = false; try { - const retrievedSymmKey = await litNodeClient.getEncryptionKey({ - unifiedAccessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - "base16" - ), - authSig: { - ethereum: ethAuthSig, - solana: solAuthSig, + const decryptedFiles = await LitJsSdk.decryptToZip( + { + unifiedAccessControlConditions, + chain: "ethereum", + authSig: { + ethereum: ethAuthSig, + solana: solAuthSig, + }, + ciphertext, + dataToEncryptHash, }, - }); + litNodeClient, + ); } catch (e) { console.log("exception thrown when unlocking", e); if (isNodeNotAuthorized(e.errorCode)) { @@ -151,21 +133,18 @@ await new Promise((resolve) => setTimeout(resolve, sleepTime)); } - const retrievedSymmKey = await litNodeClient.getEncryptionKey({ - unifiedAccessControlConditions, - toDecrypt: LitJsSdk.uint8arrayToString( - encryptedSymmetricKey, - "base16" - ), - authSig: { - ethereum: ethAuthSig, - solana: solAuthSig, + const decryptedFiles = await LitJsSdk.decryptToZip( + { + unifiedAccessControlConditions, + chain: "ethereum", + authSig: { + ethereum: ethAuthSig, + solana: solAuthSig, + }, + ciphertext, + dataToEncryptHash, }, - }); - - const decryptedFiles = await LitJsSdk.decryptZip( - encryptedZip, - retrievedSymmKey + litNodeClient, ); const decryptedString = await decryptedFiles["string.txt"].async( "text" @@ -396,7 +375,7 @@ ); function isNodeNotAuthorized(errorCode) { - return errorCode === 'not_authorized' || errorCode === 'NodeNotAuthorized'; + return errorCode === 'not_authorized' || errorCode === 'NodeNotAuthorized' || errorCode === 'NodeAccessControlConditionsReturnedNotAuthorized'; } diff --git a/apps/nodejs/manual-test.ts b/apps/nodejs/manual-test.ts index 029fd10bb9..a6c1082cc7 100644 --- a/apps/nodejs/manual-test.ts +++ b/apps/nodejs/manual-test.ts @@ -209,7 +209,7 @@ import * as litNodeClient from '@lit-protocol/lit-node-client'; export const manualTest = async () => { console.log('Manual Test Here!'); const client = new litNodeClient.LitNodeClient({ - litNetwork: 'serrano', + litNetwork: 'cayenne', }); await client.connect(); @@ -232,15 +232,4 @@ export const manualTest = async () => { }); console.log('res:', res); - - // const test = await litNodeClient.zipAndEncryptString( - // 'this is a secret message' - // ); - // useRandomPrivateKey(); - // useCustomPrivateKey(); - // mintWithPKPWallet(); - // mintWithPKPWalletUtil(); - // useCustomSigner(); - // getUtilStuff(); - // console.log('test:', test); }; diff --git a/apps/react/src/app/lit-node-client-page.tsx b/apps/react/src/app/lit-node-client-page.tsx index 95586593e3..546d93dcee 100644 --- a/apps/react/src/app/lit-node-client-page.tsx +++ b/apps/react/src/app/lit-node-client-page.tsx @@ -4,7 +4,7 @@ import * as authBrowser from '@lit-protocol/auth-browser'; const LitNodeClientPage = () => { async function go() { const client = new LitJsSdk.LitNodeClient({ - litNetwork: 'serrano', + litNetwork: 'cayenne', debug: true, }); diff --git a/consolelog-test.md b/consolelog-test.md index c4ebebe373..9a34200eb0 100644 --- a/consolelog-test.md +++ b/consolelog-test.md @@ -1,4 +1,8 @@ -# This file contains test cases that can be tested in the browser's console +# Browser Console Test + +This file contains test cases that can be tested in the browser's console. + +To start, run `node apps/html/server.js` and head over to http://127.0.0.1:4002/. ## Encrypt and decrypt file @@ -6,7 +10,7 @@ const state = {}; state.chain = 'ethereum'; state.litNodeClient = new LitJsSdk_litNodeClient.LitNodeClient({ - litNetwork: 'serrano', + litNetwork: 'cayenne', }); await state.litNodeClient.connect(); @@ -32,41 +36,25 @@ state.accs = [ }, ]; -state.zipFiles = await LitJsSdk_encryption.zipAndEncryptFiles([state.file]); -state.encryptedZipBase64 = await LitJsSdk_miscBrowser.blobToBase64String( - state.zipFiles.encryptedZip -); - -state.encryptedSymmetricKey = await state.litNodeClient.saveEncryptionKey({ - accessControlConditions: state.accs, - symmetricKey: state.zipFiles.symmetricKey, - authSig: state.authSig, - chain: state.chain, -}); - -state.toDecrypt = await LitJsSdk_uint8arrays.uint8arrayToString( - state.encryptedSymmetricKey, - 'base16' -); - -state.encryptionKey = await state.litNodeClient.getEncryptionKey({ - accessControlConditions: state.accs, - toDecrypt: state.toDecrypt, - authSig: state.authSig, - chain: 'etheruem', -}); - -state.decryptFileBlob = LitJsSdk_miscBrowser.base64StringToBlob( - state.encryptedZipBase64 +state.encryptResponse = await LitJsSdk_encryption.zipAndEncryptFiles( + [state.file], + { + accessControlConditions: state.accs, + authSig: state.authSig, + chain: state.chain, + }, + state.litNodeClient, ); -state.decryptedZip = await LitJsSdk_encryption.decryptFile({ - file: state.decryptFileBlob, - symmetricKey: state.encryptionKey, -}); - -state.decryptedFile = await LitJsSdk_uint8arrays.uint8arrayToString( - state.decryptedZip +state.decryptedFiles = await LitJsSdk_encryption.decryptToZip( + { + accessControlConditions: state.accs, + authSig: state.authSig, + chain: state.chain, + ciphertext: state.encryptResponse.ciphertext, + dataToEncryptHash: state.encryptResponse.dataToEncryptHash + }, + state.litNodeClient, ); console.warn('⬇️⬇️⬇️⬇️'); diff --git a/cypress/e2e/spec.cy.ts b/cypress/e2e/spec.cy.ts index 5d81f33856..8b88e5fe8f 100644 --- a/cypress/e2e/spec.cy.ts +++ b/cypress/e2e/spec.cy.ts @@ -4,6 +4,7 @@ import { LitAbility, LitAccessControlConditionResource, } from '@lit-protocol/auth-helpers'; +import { uint8arrayFromString, uint8arrayToString } from '@lit-protocol/uint8arrays'; let window: any; let savedParams: any = { @@ -24,7 +25,7 @@ let savedParams: any = { }; let LitJsSdk: any; -describe('Encrypt and Decrypt String', () => { +describe('Auth + Setup', () => { // -- before before(() => { cy.visit('/', { @@ -62,258 +63,209 @@ describe('Encrypt and Decrypt String', () => { }); it('authSig is saved', () => { - // window = await cy.window(); // expect saveParams not empty expect(savedParams.authSig).to.be.an('object'); }); it('connect lit node client', () => { - cy.window().then(async (window) => { - const client = new LitJsSdk.LitNodeClient({ litNetwork: 'serrano' }); + cy.window().then(async () => { + const client = new LitJsSdk.LitNodeClient({ litNetwork: 'cayenne' }); await client.connect(); savedParams.litNodeClient = client; - expect(client.config.litNetwork).to.be.eq('serrano'); + expect(client.config.litNetwork).to.be.eq('cayenne'); }); }); +}); - it('encrypts string', async () => { - const res = await LitJsSdk.encryptString('This test is working! Omg!'); - savedParams.encryptedString = res.encryptedString; - savedParams.symmetricKey = res.symmetricKey; - expect(savedParams.encryptedString).to.be.a('Blob'); - expect(savedParams.symmetricKey).to.be.a('Uint8Array'); - }); - - it('turns blob to base64 string', async () => { - const base64 = await LitJsSdk.blobToBase64String( - savedParams.encryptedString - ); - savedParams.encryptedString = base64; - expect(savedParams.encryptedString).to.be.a('string'); - }); - - it('saves encryption key', async () => { - // const { encryptedString, symmetricKey } = savedParams; - - const encryptedSymmetricKey = - await savedParams.litNodeClient.saveEncryptionKey({ +describe('Encrypt and Decrypt', () => { + it('encrypts', async () => { + cy.window().then(async () => { + const encryptResponse = await savedParams.litNodeClient.encrypt({ + accessControlConditions: savedParams.accs, + authSig: savedParams.authSig, + chain: 'ethereum', + dataToEncrypt: uint8arrayFromString('This test is working! Omg!', 'base16'), + }) + savedParams.encryptResponse = encryptResponse; + + const { ciphertext, dataToEncryptHash } = encryptResponse; + expect(ciphertext).to.be.an('string'); + expect(dataToEncryptHash).to.be.an('string'); + }) + }); + + it('decrypts', async () => { + cy.window().then(async () => { + const decryptResponse = await savedParams.litNodeClient.decrypt({ accessControlConditions: savedParams.accs, - symmetricKey: savedParams.symmetricKey, authSig: savedParams.authSig, chain: 'ethereum', + ciphertext: savedParams.encryptResponse.ciphertext, + dataToEncryptHash: savedParams.encryptResponse.dataToEncryptHash, }); - - savedParams.encryptedSymmetricKey = encryptedSymmetricKey; - - expect(savedParams.encryptedSymmetricKey).to.be.an('Uint8Array'); - }); - - it('gets toDecrypt by turning encryptedSymmetricKey(uint8array) to string', async () => { - savedParams.toDecrypt = await LitJsSdk.uint8arrayToString( - savedParams.encryptedSymmetricKey, - 'base16' - ); - expect(savedParams.toDecrypt).to.be.a('string'); - }); - - it('gets encryption key', async () => { - const encryptionKey = await savedParams.litNodeClient.getEncryptionKey({ - accessControlConditions: savedParams.accs, - toDecrypt: savedParams.toDecrypt, - authSig: savedParams.authSig, - chain: 'ethereum', + savedParams.decryptResponse = decryptResponse; + + expect(savedParams.decryptResponse.decryptedData).to.be.a('Uint8Array'); + expect(uint8arrayToString(savedParams.decryptResponse.decryptedData, 'base16')).to.be.eq('This test is working! Omg!'); }); - - savedParams.encryptionKey = encryptionKey; - - expect(savedParams.encryptionKey).to.be.a('Uint8Array'); }); +}) - it('turns base64 to Blob', async () => { - const blob = await LitJsSdk.base64StringToBlob(savedParams.encryptedString); - savedParams.encryptedStringBlob = blob; - expect(savedParams.encryptedStringBlob).to.be.a('Blob'); +describe('Encrypt and Decrypt String', () => { + it('encrypts string', async () => { + cy.window().then(async () => { + const encryptResponse = await LitJsSdk.encryptString( + { + dataToEncrypt: 'this is a secret message', + accessControlConditions: savedParams.accs, + chain: 'ethereum', + authSig: savedParams.authSig, + }, + savedParams.litNodeClient, + ); + savedParams.encryptResponse = encryptResponse; + + const { ciphertext, dataToEncryptHash } = encryptResponse; + expect(ciphertext).to.be.an('string'); + expect(dataToEncryptHash).to.be.an('string'); + }); }); it('decrypts string', async () => { - const decryptedString = await LitJsSdk.decryptString( - savedParams.encryptedStringBlob, - savedParams.encryptionKey - ); - expect(decryptedString).to.eq('This test is working! Omg!'); + cy.window().then(async () => { + const decryptedString = await LitJsSdk.decryptToString( + { + accessControlConditions: savedParams.accs, + chain: 'ethereum', + authSig: savedParams.authSig, + ciphertext: savedParams.encryptResponse.ciphertext, + dataToEncryptHash: savedParams.encryptResponse.dataToEncryptHash, + }, + savedParams.litNodeClient, + ); + + expect(decryptedString).to.be.eq('this is a secret message'); + }); }); }); describe('Zip and encrypt string then decrypt zip', () => { - it('zips string', async () => { - const zip = await LitJsSdk.zipAndEncryptString( - 'This test is working! Omg!' - ); - savedParams.zip = zip; - expect(savedParams.zip.symmetricKey).to.be.a('Uint8Array'); - expect(savedParams.zip.encryptedZip).to.be.a('Blob'); - }); - - it('saves encryption key', async () => { - const encryptedSymmetricKey = - await savedParams.litNodeClient.saveEncryptionKey({ - accessControlConditions: savedParams.accs, - symmetricKey: savedParams.zip.symmetricKey, - authSig: savedParams.authSig, - chain: 'ethereum', - }); - - console.log("savedParams.zip.symmetricKey:", savedParams.zip.symmetricKey) - - savedParams.encryptedSymmetricKey = encryptedSymmetricKey; - - expect(savedParams.encryptedSymmetricKey).to.be.an('Uint8Array'); - }); - - it('gets encryption key', async () => { - const toDecrypt = await LitJsSdk.uint8arrayToString( - savedParams.encryptedSymmetricKey, - 'base16' - ); - - const encryptionKey = await savedParams.litNodeClient.getEncryptionKey({ - accessControlConditions: savedParams.accs, - toDecrypt, - authSig: savedParams.authSig, - chain: 'ethereum', + it('zips and encrypt string', async () => { + cy.window().then(async () => { + const encryptResponse = await LitJsSdk.zipAndEncryptString( + { + dataToEncrypt: 'this is a secret message', + accessControlConditions: savedParams.accs, + chain: 'ethereum', + authSig: savedParams.authSig, + }, + savedParams.litNodeClient, + ); + const { ciphertext, dataToEncryptHash } = encryptResponse; + savedParams.encryptResponse = encryptResponse; + + expect(ciphertext).to.be.an('string'); + expect(dataToEncryptHash).to.be.an('string'); }); - - savedParams.encryptionKey = encryptionKey; - - expect(savedParams.encryptionKey).to.be.a('Uint8Array'); }); - it('decrypt zip', async () => { - const decryptedZip = await LitJsSdk.decryptZip( - savedParams.zip.encryptedZip, - savedParams.encryptionKey - ); - - savedParams.decryptZip = decryptedZip; - expect(savedParams.decryptZip).to.be.an('Object'); - }); - - it('gets the decrypted zip content', async () => { - const decryptedString = await savedParams.decryptZip['string.txt'].async( - 'text' - ); - expect(decryptedString).to.eq('This test is working! Omg!'); + it('decrypts into zip', async () => { + cy.window().then(async () => { + const decryptedFiles = await LitJsSdk.decryptToZip( + { + accessControlConditions: savedParams.accs, + chain: 'ethereum', + authSig: savedParams.authSig, + ciphertext: savedParams.encryptResponse.ciphertext, + dataToEncryptHash: savedParams.encryptResponse.dataToEncryptHash, + }, + savedParams.litNodeClient, + ); + + expect(decryptedFiles).to.be.an('array'); + const decryptedString = await decryptedFiles['string.txt'].async( + 'text' + ); + expect(decryptedString).to.eq('this is a secret message'); + }); }); }); describe('Encrypt and decrypt file', () => { it('zip and encrypt files', async () => { - // create a new file - const file = new File(['Hello, world!'], 'hello.txt', { - type: 'text/plain', - }); - - savedParams.zipFiles = await LitJsSdk.zipAndEncryptFiles([file]); - - expect(savedParams.zipFiles.symmetricKey).to.be.a('Uint8Array'); - }); - - it('turns blob to base 64 string', async () => { - const base64 = await LitJsSdk.blobToBase64String( - savedParams.zipFiles.encryptedZip - ); - savedParams.encryptedZipBase64 = base64; - expect(savedParams.encryptedZipBase64).to.be.a('string'); - }); - - it('saves encryption key', async () => { - const encryptedSymmetricKey = - await savedParams.litNodeClient.saveEncryptionKey({ - accessControlConditions: savedParams.accs, - symmetricKey: savedParams.zipFiles.symmetricKey, - authSig: savedParams.authSig, - chain: 'ethereum', + cy.window().then(async () => { + // create a new file + const file = new File(['Hello, world!'], 'hello.txt', { + type: 'text/plain', }); - - savedParams.encryptedSymmetricKey = encryptedSymmetricKey; - - expect(savedParams.encryptedSymmetricKey).to.be.an('Uint8Array'); - }); - - it('gets encryption key', async () => { - const toDecrypt = await LitJsSdk.uint8arrayToString( - savedParams.encryptedSymmetricKey, - 'base16' - ); - - const encryptionKey = await savedParams.litNodeClient.getEncryptionKey({ - accessControlConditions: savedParams.accs, - toDecrypt, - authSig: savedParams.authSig, - chain: 'ethereum', + + const encryptResponse = await LitJsSdk.zipAndEncryptFiles( + [file], + { + accessControlConditions: savedParams.accs, + authSig: { + ethereum: ethAuthSig, + }, + }, + savedParams.litNodeClient, + ); + savedParams.encryptResponse = encryptResponse; + + const { ciphertext, dataToEncryptHash } = encryptResponse; + expect(ciphertext).to.be.an('string'); + expect(dataToEncryptHash).to.be.an('string'); }); - - savedParams.encryptionKey = encryptionKey; - - expect(savedParams.encryptionKey).to.be.a('Uint8Array'); }); - it('decrypt file', async () => { - const blob = LitJsSdk.base64StringToBlob(savedParams.encryptedZipBase64); - - const decryptedZip = await LitJsSdk.decryptFile({ - file: blob, - symmetricKey: savedParams.encryptionKey, + it('decrypts into zip', async () => { + cy.window().then(async () => { + const decryptedFiles = await LitJsSdk.decryptToZip( + { + accessControlConditions: savedParams.accs, + authSig: { + ethereum: ethAuthSig, + }, + ciphertext, + dataToEncryptHash, + }, + savedParams.litNodeClient, + ); + + expect(decryptedFiles).to.be.an('array'); + const decryptedFile = await decryptedFiles['hello.txt'].async( + 'text' + ); + + const decryptedFileContents = await LitJsSdk.uint8arrayToString( + decryptedFile + ); + + expect(decryptedFileContents).to.eq('Hello, world!'); }); - - savedParams.decryptZip = decryptedZip; - - // turn uint8array into string - const decryptedFile = await LitJsSdk.uint8arrayToString(decryptedZip); - - expect(decryptedFile).to.contains('Hello, world!'); }); }); -describe('Encrypt and zip metadata', () => { - it('encrypts file and zips with metadata', async () => { - const file = new File(['Hello, world!'], 'hello.txt', { - type: 'text/plain', - }); - const { zipBlob } = await LitJsSdk.encryptFileAndZipWithMetadata({ - file, - accessControlConditions: savedParams.accs, - authSig: savedParams.authSig, - chain: 'ethereum', - litNodeClient: savedParams.litNodeClient, - readme: 'this is a test', - }); - - savedParams.zipBlob = zipBlob; - expect(savedParams.zipBlob).to.be.a('Blob'); - }); - - it('turns blob to base64 string', async () => { - const base64 = await LitJsSdk.blobToBase64String(savedParams.zipBlob); - savedParams.zipBlobBase64 = base64; - expect(savedParams.zipBlobBase64).to.be.a('string'); - }); - - it('decrypts zip file with metadata', async () => { - const file = LitJsSdk.base64StringToBlob(savedParams.zipBlobBase64); - - const { decryptedFile } = await LitJsSdk.decryptZipFileWithMetadata({ - authSig: savedParams.authSig, - litNodeClient: savedParams.litNodeClient, - file, +describe('Signed JWTs', () => { + it('get and verify signed JWT', async () => { + cy.window().then(async () => { + const jwtToken = await savedParams.litNodeClient.getSignedToken({ + accessControlConditions: savedParams.accs, + chain: 'ethereum', + authSig: savedParams.authSig, + }); + + expect(jwtToken).to.be.a('string'); + + const { verified, header, payload } = LitJsSdk.verifyJwt({ jwt, publicKey: savedParams.litNodeClient.networkPubKey! }); + expect(verified).to.be.true; + expect(header).to.be.an('object'); + expect(payload).to.be.an('object'); + + const expectedAccessControlConditionsHash = (await savedParams.litNodeClient.getHashedAccessControlConditions(savedParams.accs))!.toString(); + const actualAccessControlConditionsHash = (await savedParams.litNodeClient.getHashedAccessControlConditions(payload))!.toString(); + expect(actualAccessControlConditionsHash).to.eq(expectedAccessControlConditionsHash); }); - - const decryptedFileString = await LitJsSdk.uint8arrayToString( - decryptedFile - ); - - expect(decryptedFileString).to.contains('Hello, world!'); - }); + }) }); describe('Lit Action', () => { @@ -335,7 +287,7 @@ describe('Lit Action', () => { ); const res = await savedParams.litNodeClient.getJsExecutionShares( - 'https://serrano.litgateway.com:7379', + 'https://cayenne.litgateway.com:7379', reqBody ); @@ -355,7 +307,7 @@ describe('Lit Action', () => { params ); const res = await savedParams.litNodeClient.getJsExecutionShares( - 'https://serrano.litgateway.com:7379', + 'https://cayenne.litgateway.com:7379', reqBody ); @@ -560,10 +512,6 @@ describe('Lit Action', () => { ); expect(nodePromises.length).to.equal(10); - - // should be serrano.litgateway - // const resolvedPromises = savedParams.litNodeClient.handleNodePromises(nodePromises); - // console.log(resolvedPromises); }); it('Throw Node Error', () => { @@ -598,70 +546,16 @@ describe('Lit Action', () => { const data: JsonExecutionRequest = savedParams.litNodeClient.getLitActionRequestBody(params); const reqBody: SendNodeCommand = { - url: 'https://serrano.litgateway.com:7371/web/execute', + url: 'https://cayenne.litgateway.com:7371/web/execute', data, }; const res = await savedParams.litNodeClient.sendCommandToNode(reqBody); expect(res).to.have.property('success', true); }); - // // Error: bad request - // it('Get signing share',async () => { - // const { iat, exp } = savedParams.litNodeClient.getJWTParams(); - // let randomPath: string = - // '/' + - // Math.random().toString(36).substring(2, 15) + - // Math.random().toString(36).substring(2, 15); - // const resourceId = { - // baseUrl: 'my-dynamic-content-server.com', - // path: randomPath, - // orgId: '', - // role: '', - // extraData: '', - // }; - // const params: JsonSigningRetrieveRequest = { - // accessControlConditions: savedParams.accs, - // chain: 'ethereum', - // authSig: savedParams.authSig, - // resourceId, - // iat, - // exp, - // }; - - // // Error: bad request - // const url = 'https://serrano.litgateway.com:7379'; - // const res = await savedParams.litNodeClient.getSigningShare(url, params); - // }); - - // // Error: bad request - // it('Get Decryption Share', async () => { - // const params: JsonEncryptionRetrieveRequest = { - // accessControlConditions: savedParams.accs, - // chain: 'ethereum', - // authSig: savedParams.authSig, - // toDecrypt: savedParams.toDecrypt, - // }; - // const url = 'https://serrano.litgateway.com:7379'; - // // Error - // const res = await savedParams.litNodeClient.getDecryptionShare(url, params); - // }); - - // // Error: 404 Not found - // it('Sign ECDSA', async () => { - // const { iat, exp } = savedParams.litNodeClient.getJWTParams(); - // const params: SignWithECDSA = { - // message: 'msg', - // chain: 'ethereum', - // iat, - // exp, - // } - // const res = await savedParams.litNodeClient.signECDSA('https://serrano.litgateway.com:7370', params); - // console.log(res); - // }); - it('Handshake with Sgx', async () => { const params: HandshakeWithSgx = { - url: 'https://serrano.litgateway.com:7371', + url: 'https://cayenne.litgateway.com:7371', }; const res = await savedParams.litNodeClient.handshakeWithSgx(params); expect(res).to.have.keys( @@ -672,19 +566,6 @@ describe('Lit Action', () => { 'subnetPublicKey' ); }); - - // // Error: 404 - // it('Execute JS', async () => { - // const data: ExecuteJsProps = { - // authSig: savedParams.authSig, - // jsParams: {}, - // code: "LitActions.setResponse({response: JSON.stringify({hello: 'world'})})", - // debug: true, - // } - - // // Error: 404 - // const res = await savedParams.litNodeClient.executeJs(data); - // }); }); describe('Session', () => { diff --git a/lit.config.json b/lit.config.json index 73f3bb5409..fdcdcdcb02 100644 --- a/lit.config.json +++ b/lit.config.json @@ -11,16 +11,16 @@ "AMOUNT": 1, "DEFAULT_GAS": 0.025, "CONTROLLER_AUTHSIG": { - "sig": "0x2b61d91d279bed9c1a161e27101698cdedd2c4c7a5cb7b60e3bd6fbcd6d1d305354918e1c01a8e61e1c7962b9cea213e3f17644957616dc160e49d945a864b4a1b", + "sig": "0xa9359e892580d4800e5c98eaf63dba48dfa53444cb99012599ff760c5c6ea5b456d1c05b3b21ebf4cf3925d3c9c5677d9054d3c227f7f6adfebd5994806899001c", "derivedVia": "web3.eth.personal.sign", - "signedMessage": "localhost:4003 wants you to sign in with your Ethereum account:\n0x18f987D15a973776f6a60652B838688a1833fE95\n\n\nURI: http://localhost:4003/\nVersion: 1\nChain ID: 1\nNonce: ThH1ex9yv1tKz4TiO\nIssued At: 2023-04-28T13:30:44.477Z\nExpiration Time: 2034-09-24T04:30:44.452Z", - "address": "0x18f987d15a973776f6a60652b838688a1833fe95" + "signedMessage": "localhost:4002 wants you to sign in with your Ethereum account:\n0x4259E44670053491E7b4FE4A120C70be1eAD646b\n\n\nURI: http://localhost:4002/manual_tests.html\nVersion: 1\nChain ID: 137\nNonce: k09wr62CvRsvpfOg3\nIssued At: 2023-07-10T15:45:39.922Z\nExpiration Time: 2034-09-24T04:30:44.452Z", + "address": "0x4259e44670053491e7b4fe4a120c70be1ead646b" }, - "PKP_PUBKEY": "049bc4a7b33316170694f6ca6d5917af9c4a492f91636b71105059e244f558b5a99c395001390f50c82aa8b44448984218a306951a30b0e57f133062dc9ceacefc", - "PKP_ETH_ADDRESS": "0x016013f36abb93F6304eC0aBAbe5b0F3b6636579", - "PKP_COSMOS_ADDRESS": "cosmos15f53jgu645yngkkzf8q7qz9cl93exn67uatdkf", + "PKP_PUBKEY": "04f9b7b3e7faa87939aa827f4d430aef649267a3a9382c8a068e837b4938b76a61024dca4cfebd7b0603baf95fe62a7e3b96587b63e06823a77d549c14471bdfba", + "PKP_ETH_ADDRESS": "0x8fb0374f46414878343FE122d07131E4CE6fB18b", + "PKP_COSMOS_ADDRESS": "cosmos17lvg8v4uyxgzzk3fc35tenkt3t2rnltrk0gmnh", "HEX_TEST_MEMO": "0x4a532d53444b2054657374", - "PKP_PUBKEY_2": "04a9c9a5db5472e6fac05ec001b804d3daa340a9b791e75dd52180312c7f0d4e806150473da6c785fadd8050ced5aada250146a97d928d0deb8b584bc7f169f10a", - "PKP_ETH_ADDRESS_2": "0xf26Bdd71BACf9D99F5739B4b1a2733E209248170" + "PKP_PUBKEY_2": "04f15c057db0337af4a099954710c0a17d70195a63f24465c0f0fc3db2bef03f8dd1650e9de25c1c169037e145949e1824d5078ee946bc661e6f39868a16b1cca7", + "PKP_ETH_ADDRESS_2": "0x1bAE3C79890d9677B824B6925566167c3b86bC5e" } diff --git a/packages/auth-browser/src/lib/chains/eth.ts b/packages/auth-browser/src/lib/chains/eth.ts index 03518a9d78..d3da8127f5 100644 --- a/packages/auth-browser/src/lib/chains/eth.ts +++ b/packages/auth-browser/src/lib/chains/eth.ts @@ -200,8 +200,8 @@ export const chainHexIdToChainName = (chainHexId: string): void | string => { export const getChainId = async ( chain: string, web3: Web3Provider -): Promise => { - let resultOrError: IEither; +): Promise> => { + let resultOrError: IEither; try { const resp = await web3.getNetwork(); @@ -481,12 +481,10 @@ export const checkAndSignEVMAuthMessage = async ({ log(`got web3 and account: ${account}`); // -- 2. prepare all required variables - const currentChainIdOrError: IEither = await getChainId(chain, web3); + const currentChainIdOrError = await getChainId(chain, web3); const selectedChainId: number = selectedChain.chainId; const selectedChainIdHex: string = numberToHex(selectedChainId); - const authSigOrError: IEither = getStorageItem( - LOCAL_STORAGE_KEYS.AUTH_SIGNATURE - ); + const authSigOrError = getStorageItem(LOCAL_STORAGE_KEYS.AUTH_SIGNATURE); log('currentChainIdOrError:', currentChainIdOrError); log('selectedChainId:', selectedChainId); @@ -495,7 +493,7 @@ export const checkAndSignEVMAuthMessage = async ({ // -- 3. check all variables before executing business logic if (currentChainIdOrError.type === EITHER_TYPE.ERROR) { - return throwError(currentChainIdOrError.result); + return throwError(currentChainIdOrError.result as any); } log('chainId from web3', currentChainIdOrError); @@ -571,6 +569,7 @@ export const checkAndSignEVMAuthMessage = async ({ log('signing auth message because sig is not in local storage'); try { + // @ts-ignore authSigOrError.result = await _signAndGetAuth({ web3, account, @@ -592,6 +591,7 @@ export const checkAndSignEVMAuthMessage = async ({ } // -- 6. case: Lit auth signature IS in the local storage + // @ts-ignore let authSig: AuthSig = authSigOrError.result; if (typeof authSig === 'string') { authSig = JSON.parse(authSig); @@ -654,9 +654,7 @@ const _signAndGetAuth = async ({ uri, }); - let authSigOrError: IEither = getStorageItem( - LOCAL_STORAGE_KEYS.AUTH_SIGNATURE - ); + let authSigOrError = getStorageItem(LOCAL_STORAGE_KEYS.AUTH_SIGNATURE); if (authSigOrError.type === 'ERROR') { throwError({ diff --git a/packages/auth-browser/src/lib/chains/sol.ts b/packages/auth-browser/src/lib/chains/sol.ts index 430f0b7a81..16e54ba890 100644 --- a/packages/auth-browser/src/lib/chains/sol.ts +++ b/packages/auth-browser/src/lib/chains/sol.ts @@ -24,8 +24,8 @@ import { * * @returns { object || never } */ -const getProvider = (): IEither => { - let resultOrError: IEither; +const getProvider = (): IEither => { + let resultOrError: IEither; // -- validate // The Backpack wallet does not inject a solana object into the window, so we need to check for the backpack object as well. @@ -55,7 +55,7 @@ const getProvider = (): IEither => { * @returns { Promise => { - const providerOrError: IEither = getProvider(); + const providerOrError = getProvider(); if (providerOrError.type === 'ERROR') { throwError(providerOrError.result); @@ -91,7 +91,7 @@ export const checkAndSignSolAuthMessage = async (): Promise => { const account = res?.account; const key = LOCAL_STORAGE_KEYS.AUTH_SOL_SIGNATURE; - let authSigOrError: IEither = getStorageItem(key); + let authSigOrError = getStorageItem(key); // let authSig = localStorage.getItem("lit-auth-sol-signature"); let authSig: AuthSig; @@ -103,6 +103,7 @@ export const checkAndSignSolAuthMessage = async (): Promise => { await signAndSaveAuthMessage({ provider }); authSigOrError.type = EITHER_TYPE.SUCCESS; + // @ts-ignore authSigOrError.result = getStorageItem(key); } @@ -111,9 +112,11 @@ export const checkAndSignSolAuthMessage = async (): Promise => { try { // when it's not in local storage, it's a string + // @ts-ignore authSig = JSON.parse(authSigOrError.result.result); } catch (e) { // when it's in local storage, it's an object + // @ts-ignore authSig = JSON.parse(authSigOrError.result); } @@ -126,7 +129,9 @@ export const checkAndSignSolAuthMessage = async (): Promise => { await signAndSaveAuthMessage({ provider }); authSigOrError.type = EITHER_TYPE.SUCCESS; + // @ts-ignore authSigOrError.result = getStorageItem(key); + // @ts-ignore authSig = JSON.parse(authSigOrError.result); } diff --git a/packages/bls-sdk/src/index.d.ts b/packages/bls-sdk/src/index.d.ts new file mode 100644 index 0000000000..5f95c75068 --- /dev/null +++ b/packages/bls-sdk/src/index.d.ts @@ -0,0 +1 @@ +export * from './lib/bls-sdk.d.ts'; diff --git a/packages/bls-sdk/src/lib/bls-sdk.d.ts b/packages/bls-sdk/src/lib/bls-sdk.d.ts new file mode 100644 index 0000000000..d9584f0c64 --- /dev/null +++ b/packages/bls-sdk/src/lib/bls-sdk.d.ts @@ -0,0 +1,55 @@ +/** + *Initialize function for the wasm library + */ +export function initWasmBlsSdk(): void; +/** + *Encrypts the data to the public key and identity. All inputs are hex encoded strings. + * @param {string} public_key + * @param {string} message + * @param {string} identity + * @returns {string} + */ +export function encrypt( + public_key: string, + message: string, + identity: string +): string; +/** + *Verifies the decryption shares are valid and decrypts the data. + * @param {string} public_key + * @param {string} identity + * @param {string} ciphertext + * @param {any} shares + * @returns {string} + */ +export function verify_and_decrypt_with_signature_shares( + public_key: string, + identity: string, + ciphertext: string, + shares: any +): string; +/** + *Decrypts the data with signature shares. + * @param {string} ciphertext + * @param {any} shares + * @returns {string} + */ +export function decrypt_with_signature_shares( + ciphertext: string, + shares: any +): string; + +/** + *Combines the signature shares into a single signature. + * @param {any} shares + * @returns {string} + */ +export function combine_signature_shares(shares: any): string; + +/** + *Verifies the signature. + * @param {string} public_key + * @param {string} message + * @param {string} signature + */ +export function verify_signature(public_key, message, signature): void; diff --git a/packages/bls-sdk/src/lib/bls-sdk.spec.ts b/packages/bls-sdk/src/lib/bls-sdk.spec.ts index 2dc550f618..706c448ddd 100644 --- a/packages/bls-sdk/src/lib/bls-sdk.spec.ts +++ b/packages/bls-sdk/src/lib/bls-sdk.spec.ts @@ -6,10 +6,148 @@ global.TextDecoder = TextDecoder; import * as blsSdk from './bls-sdk'; -describe('blsSdk', () => { - it('should work', () => { +const publicKey = + '8e29447d7b0666fe41c357dbbdbdac0ac8ac973f88439a07f85fa31fa6fa3cea87c2eaa8b367e1c97764800fb5636892'; +const secretMessage = new Uint8Array([ + 240, 23, 185, 6, 87, 33, 173, 216, 53, 84, 80, 135, 190, 16, 58, 85, 97, 75, + 3, 192, 215, 82, 217, 5, 40, 65, 2, 214, 40, 177, 53, 150, +]); +const identityParam = new Uint8Array([ + 101, 110, 99, 114, 121, 112, 116, 95, 100, 101, 99, 114, 121, 112, 116, 95, + 119, 111, 114, 107, 115, +]); + +describe('imported functions', () => { + it('should be non-zero', () => { const OUTPUT = Object.keys(blsSdk).length; expect(OUTPUT).toBeGreaterThan(0); }); }); + +describe('blsSdk', () => { + beforeAll(async () => { + await blsSdk.initWasmBlsSdk(); + }); + + it('should encrypt a message', async () => { + // execute + const ciphertext = blsSdk.encrypt( + publicKey, + byteArrayToHex(secretMessage), + byteArrayToHex(identityParam) + ); + + // assert + expect(ciphertext.length).toBeGreaterThan(0); + }); + + it('should decrypt', async () => { + // prepare + const ciphertext = + 'l9a/01WDJB/euKxtbWcuQ8ez/c9eZ+jQryTHZVLN0kfd7XHoLs6FeWUVmk89ovQGkQJnnFDKjq6kgJxvIIrxXd9DaGuRBozLdA1G9Nk413YhTEqsENuHU0nSa4i6F912KltE15sbWKpDfPnZF6CA2UKBAw=='; + const signatureShares = [ + '01b2b44a0bf7184f19efacad98e213818edd3f8909dd798129ef169b877d68d77ba630005609f48b80203717d82092a45b06a9de0e61a97b2672b38b31f9ae43e64383d0375a51c75db8972613cc6b099b95c189fd8549ed973ee94b08749f4cac', + '02a8343d5602f523286c4c59356fdcfc51953290495d98cb91a56b59bd1a837ea969cc521382164e85787128ce7f944de303d8e0b5fc4becede0c894bec1adc490fdc133939cca70fb3f504b9bf7b156527b681d9f0619828cd8050c819e46fdb1', + '03b1594ab0cb56f47437b3720dc181661481ca0e36078b79c9a4acc50042f076bf66b68fbd12a1d55021a668555f0eed0a08dfe74455f557b30f1a9c32435a81479ca8843f5b74b176a8d10c5845a84213441eaaaf2ba57e32581584393541c5aa', + ]; + + // execute + const plaintext = blsSdk.decrypt_with_signature_shares( + ciphertext, + signatureShares.slice(0, 2).map((s) => + JSON.stringify({ + ProofOfPossession: s, + }) + ) + ); + + // assert + expect(new Uint8Array(base64ToArrayBuffer(plaintext))).toEqual( + secretMessage + ); + }); + + it('should verify + decrypt', async () => { + // prepare + const ciphertext = + 'l9a/01WDJB/euKxtbWcuQ8ez/c9eZ+jQryTHZVLN0kfd7XHoLs6FeWUVmk89ovQGkQJnnFDKjq6kgJxvIIrxXd9DaGuRBozLdA1G9Nk413YhTEqsENuHU0nSa4i6F912KltE15sbWKpDfPnZF6CA2UKBAw=='; + const signatureShares = [ + '01b2b44a0bf7184f19efacad98e213818edd3f8909dd798129ef169b877d68d77ba630005609f48b80203717d82092a45b06a9de0e61a97b2672b38b31f9ae43e64383d0375a51c75db8972613cc6b099b95c189fd8549ed973ee94b08749f4cac', + '02a8343d5602f523286c4c59356fdcfc51953290495d98cb91a56b59bd1a837ea969cc521382164e85787128ce7f944de303d8e0b5fc4becede0c894bec1adc490fdc133939cca70fb3f504b9bf7b156527b681d9f0619828cd8050c819e46fdb1', + '03b1594ab0cb56f47437b3720dc181661481ca0e36078b79c9a4acc50042f076bf66b68fbd12a1d55021a668555f0eed0a08dfe74455f557b30f1a9c32435a81479ca8843f5b74b176a8d10c5845a84213441eaaaf2ba57e32581584393541c5aa', + ]; + + // execute + const plaintext = blsSdk.verify_and_decrypt_with_signature_shares( + publicKey, + arrayBufferToBase64(identityParam), + ciphertext, + signatureShares.slice(0, 2).map((s) => + JSON.stringify({ + ProofOfPossession: s, + }) + ) + ); + + // assert + expect(new Uint8Array(base64ToArrayBuffer(plaintext))).toEqual( + secretMessage + ); + }); + + it('should combine signature shares', async () => { + const signatureShares = [ + '01b2b44a0bf7184f19efacad98e213818edd3f8909dd798129ef169b877d68d77ba630005609f48b80203717d82092a45b06a9de0e61a97b2672b38b31f9ae43e64383d0375a51c75db8972613cc6b099b95c189fd8549ed973ee94b08749f4cac', + '02a8343d5602f523286c4c59356fdcfc51953290495d98cb91a56b59bd1a837ea969cc521382164e85787128ce7f944de303d8e0b5fc4becede0c894bec1adc490fdc133939cca70fb3f504b9bf7b156527b681d9f0619828cd8050c819e46fdb1', + '03b1594ab0cb56f47437b3720dc181661481ca0e36078b79c9a4acc50042f076bf66b68fbd12a1d55021a668555f0eed0a08dfe74455f557b30f1a9c32435a81479ca8843f5b74b176a8d10c5845a84213441eaaaf2ba57e32581584393541c5aa', + ].map((s) => ({ + ProofOfPossession: s, + })); + + // execute + const combinedSignature = blsSdk.combine_signature_shares( + signatureShares.map((s) => JSON.stringify(s)) + ); + + // assert + expect(combinedSignature.length).toEqual(192); + }); + + it('should verify signature', async () => { + const publicKey = + 'ad1bd6c66f849ccbcc20fa08c26108f3df7db0068df032cc184779cc967159da4dd5669de563af7252b540f0759aee5a'; + + // execute + blsSdk.verify_signature( + publicKey, + 'ZXlKaGJHY2lPaUpDVEZNeE1pMHpPREVpTENKMGVYQWlPaUpLVjFRaWZRLmV5SnBjM01pT2lKTVNWUWlMQ0p6ZFdJaU9pSXdlRFF5TlRsbE5EUTJOekF3TlRNME9URmxOMkkwWm1VMFlURXlNR00zTUdKbE1XVmhaRFkwTm1JaUxDSmphR0ZwYmlJNkltVjBhR1Z5WlhWdElpd2lhV0YwSWpveE5qZzNOVFl5TWpjMUxDSmxlSEFpT2pFMk9EYzJNRFUwTnpVc0ltRmpZMlZ6YzBOdmJuUnliMnhEYjI1a2FYUnBiMjV6SWpwYmV5SmpiMjUwY21GamRFRmtaSEpsYzNNaU9pSWlMQ0pqYUdGcGJpSTZJbVYwYUdWeVpYVnRJaXdpYzNSaGJtUmhjbVJEYjI1MGNtRmpkRlI1Y0dVaU9pSWlMQ0p0WlhSb2IyUWlPaUlpTENKd1lYSmhiV1YwWlhKeklqcGJJanAxYzJWeVFXUmtjbVZ6Y3lKZExDSnlaWFIxY201V1lXeDFaVlJsYzNRaU9uc2lZMjl0Y0dGeVlYUnZjaUk2SWowaUxDSjJZV3gxWlNJNklqQjROREkxT1VVME5EWTNNREExTXpRNU1VVTNZalJHUlRSQk1USXdRemN3WW1VeFpVRkVOalEyWWlKOWZWMHNJbVYyYlVOdmJuUnlZV04wUTI5dVpHbDBhVzl1Y3lJNmJuVnNiQ3dpYzI5c1VuQmpRMjl1WkdsMGFXOXVjeUk2Ym5Wc2JDd2lkVzVwWm1sbFpFRmpZMlZ6YzBOdmJuUnliMnhEYjI1a2FYUnBiMjV6SWpwdWRXeHNmUQ==', + 'trkIFY8XLxWAHvErjc5sEMfyEMjDVW0m4zSEiO8Ladb+F2vsaUmBMPIR4axyHdayDJ7/qdxUsxM1Xt/AUMcYRCVbUqNZZmkAGtOFGODAjieGdv9Q3aPnsrQXkDzW0ITP' + ); + }); +}); + +function base64ToArrayBuffer(base64) { + var binaryString = atob(base64); + var bytes = new Uint8Array(binaryString.length); + for (var i = 0; i < binaryString.length; i++) { + bytes[i] = binaryString.charCodeAt(i); + } + return bytes.buffer; +} + +function arrayBufferToBase64(buffer) { + var binary = ''; + var bytes = new Uint8Array(buffer); + var len = bytes.byteLength; + for (var i = 0; i < len; i++) { + binary += String.fromCharCode(bytes[i]); + } + return btoa(binary); +} + +function byteArrayToHex(byteArray: Uint8Array) { + return Array.from(byteArray, function (byte: any) { + return ('0' + (byte & 0xff).toString(16)).slice(-2); + }).join(''); +} diff --git a/packages/bls-sdk/src/lib/bls-sdk.ts b/packages/bls-sdk/src/lib/bls-sdk.ts index 95bfb33f15..4141587c2d 100644 --- a/packages/bls-sdk/src/lib/bls-sdk.ts +++ b/packages/bls-sdk/src/lib/bls-sdk.ts @@ -1,165 +1,5 @@ // @ts-nocheck - -// Contants -const skLen = 32; // bytes -const pkLen = 48; // bytes -const sigLen = 96; // bytes -const maxMsgLen = 1049600; // bytes -const maxCtLen = 1049600; // bytes -const decryptionShareLen = 48; // bytes - -// the number of bytes in a row derived from a BivarPoly -// which varies depending on the threshold. -const row_sizes_by_threshold = [ - 40, // threshold 0 - 72, // threshold 1 - 104, // threshold 2 - 136, // threshold 3 - 168, // threshold 4 - 200, // threshold 5 - 232, // threshold 6 - 264, // threshold 7 - 296, // threshold 8 - 328, // threshold 9 - 360, // threshold 10 -]; - -// the number of bytes in a commitment derived from a BivarPoly -// which varies depending on the threshold. -const commitment_sizes_by_threshold = [ - 56, // threshold 0 - 104, // threshold 1 - 152, // threshold 2 - 200, // threshold 3 - 248, // threshold 4 - 296, // threshold 5 - 344, // threshold 6 - 392, // threshold 7 - 440, // threshold 8 - 488, // threshold 9 - 536, // threshold 10 -]; - -// the number of bytes in the master secret key (Poly) -// which varies depending on the threshold. -const poly_sizes_by_threshold = [ - 40, // threshold 0 - 72, // threshold 1 - 104, // threshold 2 - 136, // threshold 3 - 168, // threshold 4 - 200, // threshold 5 - 232, // threshold 6 - 264, // threshold 7 - 296, // threshold 8 - 328, // threshold 9 - 360, // threshold 10 -]; - -// Encoding conversions - -// modified from https://stackoverflow.com/a/11058858 -function asciiToUint8Array(a: any) { - let b = new Uint8Array(a.length); - for (let i = 0; i < a.length; i++) { - b[i] = a.charCodeAt(i); - } - return b; -} - -// https://stackoverflow.com/a/19102224 -// TODO resolve RangeError possibility here, see SO comments -const uint8ArrayToAscii = (a: any) => { - return String.fromCharCode.apply(null, a); -}; - -// https://stackoverflow.com/a/50868276 -const hexToUint8Array = (h: any) => { - if (h.length == 0) { - return new Uint8Array(); - } - return new Uint8Array( - h.match(/.{1,2}/g).map((byte: any) => parseInt(byte, 16)) - ); -}; - -const uint8ArrayToHex = (a: any) => { - return a.reduce( - (str: string, byte: any) => str + byte.toString(16).padStart(2, '0'), - '' - ); -}; - -const uint8ArrayToByteStr = (a: any) => { - return '[' + a.join(', ') + ']'; -}; - -const base64abc = [ - 'A', - 'B', - 'C', - 'D', - 'E', - 'F', - 'G', - 'H', - 'I', - 'J', - 'K', - 'L', - 'M', - 'N', - 'O', - 'P', - 'Q', - 'R', - 'S', - 'T', - 'U', - 'V', - 'W', - 'X', - 'Y', - 'Z', - 'a', - 'b', - 'c', - 'd', - 'e', - 'f', - 'g', - 'h', - 'i', - 'j', - 'k', - 'l', - 'm', - 'n', - 'o', - 'p', - 'q', - 'r', - 's', - 't', - 'u', - 'v', - 'w', - 'x', - 'y', - 'z', - '0', - '1', - '2', - '3', - '4', - '5', - '6', - '7', - '8', - '9', - '+', - '/', -]; +import * as pako from 'pako'; const base64codes = [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, @@ -171,6946 +11,5750 @@ const base64codes = [ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, ]; -const getBase64Code = (charCode: any) => { +function getBase64Code(charCode) { if (charCode >= base64codes.length) { throw new Error('Unable to parse base64 string.'); } const code = base64codes[charCode]; - if (code === 255) { throw new Error('Unable to parse base64 string.'); } - return code; -}; +} -const base64ToUint8Array = (str: string) => { +export function base64ToUint8Array(str) { if (str.length % 4 !== 0) { throw new Error('Unable to parse base64 string.'); } const index = str.indexOf('='); - if (index !== -1 && index < str.length - 2) { throw new Error('Unable to parse base64 string.'); } - let missingOctets = str.endsWith('==') ? 2 : str.endsWith('=') ? 1 : 0, n = str.length, result = new Uint8Array(3 * (n / 4)), buffer; - for (let i = 0, j = 0; i < n; i += 4, j += 3) { buffer = (getBase64Code(str.charCodeAt(i)) << 18) | (getBase64Code(str.charCodeAt(i + 1)) << 12) | (getBase64Code(str.charCodeAt(i + 2)) << 6) | - getBase64Code(str.charCodeAt(i + 3)); - result[j] = buffer >> 16; - result[j + 1] = (buffer >> 8) & 0xff; - result[j + 2] = buffer & 0xff; - } - - return result.subarray(0, result.length - missingOctets); -}; - -const uint8ArrayToBase64 = (bytes: any) => { - let result = '', - i, - l = bytes.length; - - for (i = 2; i < l; i += 3) { - result += base64abc[bytes[i - 2] >> 2]; - result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += base64abc[((bytes[i - 1] & 0x0f) << 2) | (bytes[i] >> 6)]; - result += base64abc[bytes[i] & 0x3f]; - } - - if (i === l + 1) { - // 1 octet yet to write - result += base64abc[bytes[i - 2] >> 2]; - result += base64abc[(bytes[i - 2] & 0x03) << 4]; - result += '=='; - } - - if (i === l) { - // 2 octets yet to write - result += base64abc[bytes[i - 2] >> 2]; - result += base64abc[((bytes[i - 2] & 0x03) << 4) | (bytes[i - 1] >> 4)]; - result += base64abc[(bytes[i - 1] & 0x0f) << 2]; - result += '='; - } - - return result; -}; - -import * as pako from 'pako'; - -const util = import('util'); - -//https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727 -/* -MIT License -Copyright (c) 2020 Egor Nepomnyaschih -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -// threshold_crypto wasm calls. Since they operate on single bytes at a time -// it's handy to have helpers to do the required looping. - -let isWasming = false; -export const wasmBlsSdkHelpers = new (function () { - // s is secret key unit8array - this.sk_bytes_to_pk_bytes = function (s) { - isWasming = true; - const pkBytes = []; - try { - // set sk bytes - for (let i = 0; i < s.length; i++) { - globalThis.wasmExports.set_sk_byte(i, s[i]); - } - // convert into pk bytes - globalThis.wasmExports.derive_pk_from_sk(); - // read pk bytes - for (let i = 0; i < pkLen; i++) { - const pkByte = globalThis.wasmExports.get_pk_byte(i); - pkBytes.push(pkByte); - } - } catch (e) { - isWasming = false; - throw 'Failed to generate'; - } - isWasming = false; - return pkBytes; - }; - - // s is secret key uint8array - // m is message uint8array - this.sign_msg = function (s, m) { - isWasming = true; - const sigBytes = []; - try { - // set secret key bytes - for (let i = 0; i < s.length; i++) { - globalThis.wasmExports.set_sk_byte(i, s[i]); - } - // set message bytes - for (let i = 0; i < m.length; i++) { - globalThis.wasmExports.set_msg_byte(i, m[i]); - } - // sign message - globalThis.wasmExports.sign_msg(m.length); - // get signature bytes - for (let i = 0; i < sigLen; i++) { - const sigByte = globalThis.wasmExports.get_sig_byte(i); - sigBytes.push(sigByte); - } - } catch (e) { - console.log('error signing in bls-sdk.js:'); - console.log(e); - isWasming = false; - } - isWasming = false; - return Uint8Array.from(sigBytes); - }; - - // p is public key uint8array - // s is signature uint8array - // m is message uint8array - this.verify = function (p, s, m) { - isWasming = true; - let verified = false; - try { - // set public key bytes - for (let i = 0; i < p.length; i++) { - globalThis.wasmExports.set_pk_byte(i, p[i]); - } - // set signature bytes - for (let i = 0; i < s.length; i++) { - globalThis.wasmExports.set_sig_byte(i, s[i]); - } - // set message bytes - for (let i = 0; i < m.length; i++) { - globalThis.wasmExports.set_msg_byte(i, m[i]); - } - verified = globalThis.wasmExports.verify(m.length); - } catch (e) { - console.log('error verifying sig in bls-sdk.js:'); - console.log(e); - isWasming = false; - } - isWasming = false; - return verified; - }; - - this.set_rng_values = function () { - // Warning if no globalThis.crypto available - if (!globalThis.crypto) { - const msg = - 'Secure randomness not available in this browser, output is insecure.'; - alert(msg); - console.log(msg); - return; - } - const RNG_VALUES_SIZE = globalThis.wasmExports.get_rng_values_size(); - const rngValues = new Uint32Array(RNG_VALUES_SIZE); - globalThis.crypto.getRandomValues(rngValues); - for (let i = 0; i < rngValues.length; i++) { - globalThis.wasmExports.set_rng_value(i, rngValues[i]); - } - }; - - // p is public key uint8array - // m is message uint8array - this.encrypt = function (p, m) { - isWasming = true; - const ctBytes = []; - try { - wasmBlsSdkHelpers.set_rng_values(); - // set public key bytes - for (let i = 0; i < p.length; i++) { - globalThis.wasmExports.set_pk_byte(i, p[i]); - } - // set message bytes - for (let i = 0; i < m.length; i++) { - globalThis.wasmExports.set_msg_byte(i, m[i]); - } - // generate strong random u64 used by encrypt - // encrypt the message - const ctSize = globalThis.wasmExports.encrypt(m.length); - // get ciphertext bytes - for (let i = 0; i < ctSize; i++) { - const ctByte = globalThis.wasmExports.get_ct_byte(i); - ctBytes.push(ctByte); - } - } catch (e) { - console.log('error encrypting in bls-sdk.js:'); - console.log(e); - isWasming = false; - } - isWasming = false; - return Uint8Array.from(ctBytes); - }; - - // s is secret key uint8array - // c is message uint8array - this.decrypt = function (s, c) { - isWasming = true; - const msgBytes = []; - try { - // set secret key bytes - for (let i = 0; i < s.length; i++) { - globalThis.wasmExports.set_sk_byte(i, s[i]); - } - // set ciphertext bytes - for (let i = 0; i < c.length; i++) { - globalThis.wasmExports.set_ct_byte(i, c[i]); - } - const msgSize = globalThis.wasmExports.decrypt(c.length); - // get message bytes - for (let i = 0; i < msgSize; i++) { - const msgByte = globalThis.wasmExports.get_msg_byte(i); - msgBytes.push(msgByte); - } - } catch (e) { - console.log('error decrypting in bls-sdk.js:'); - console.log(e); - isWasming = false; - } - isWasming = false; - return Uint8Array.from(msgBytes); - }; - - this.generate_poly = function (threshold) { - wasmBlsSdkHelpers.set_rng_values(); - const polySize = poly_sizes_by_threshold[threshold]; - globalThis.wasmExports.generate_poly(threshold); - const polyBytes = []; - for (let i = 0; i < polySize; i++) { - const polyByte = globalThis.wasmExports.get_poly_byte(i); - polyBytes.push(polyByte); - } - return polyBytes; - }; - - this.get_msk_bytes = function () { - const mskBytes = []; - for (let i = 0; i < skLen; i++) { - const mskByte = globalThis.wasmExports.get_msk_byte(i); - mskBytes.push(mskByte); - } - return mskBytes; - }; - - this.get_mpk_bytes = function () { - const mpkBytes = []; - for (let i = 0; i < pkLen; i++) { - const mpkByte = globalThis.wasmExports.get_mpk_byte(i); - mpkBytes.push(mpkByte); - } - return mpkBytes; - }; - - this.get_mc_bytes = function (threshold) { - const mcBytes = []; - const mcSize = commitment_sizes_by_threshold[threshold]; - for (let i = 0; i < mcSize; i++) { - const mcByte = globalThis.wasmExports.get_mc_byte(i); - mcBytes.push(mcByte); - } - return mcBytes; - }; - - this.set_mc_bytes = function (mcBytes) { - // set master commitment in wasm - for (let i = 0; i < mcBytes.length; i++) { - const v = mcBytes[i]; - globalThis.wasmExports.set_mc_byte(i, v); - } - }; - - this.get_skshare = function () { - const skshareBytes = []; - for (let i = 0; i < skLen; i++) { - const skshareByte = globalThis.wasmExports.get_skshare_byte(i); - skshareBytes.push(skshareByte); - } - return skshareBytes; - }; - - this.get_pkshare = function () { - const pkshareBytes = []; - for (let i = 0; i < pkLen; i++) { - const pkshareByte = globalThis.wasmExports.get_pkshare_byte(i); - pkshareBytes.push(pkshareByte); - } - return pkshareBytes; - }; - - this.combine_signatures = function (mcBytes, sigshares) { - // set master commitment in wasm - wasmBlsSdkHelpers.set_mc_bytes(mcBytes); - // set the signature shares - for (let shareIndex = 0; shareIndex < sigshares.length; shareIndex++) { - const share = sigshares[shareIndex]; - const sigHex = share.shareHex; - const sigBytes = hexToUint8Array(sigHex); - const sigIndex = share.shareIndex; - for (let byteIndex = 0; byteIndex < sigBytes.length; byteIndex++) { - const sigByte = sigBytes[byteIndex]; - // NB shareIndex is used instead of sigIndex so we can interate - // over both - // SHARE_INDEXES[i] - // and - // SIGNATURE_SHARE_BYTES[i*96:(i+1)*96] - globalThis.wasmExports.set_signature_share_byte( - byteIndex, - shareIndex, - sigByte - ); - globalThis.wasmExports.set_share_indexes(shareIndex, sigIndex); - } - } - // combine the signatures - globalThis.wasmExports.combine_signature_shares( - sigshares.length, - mcBytes.length - ); - // read the combined signature - const sigBytes = []; - for (let i = 0; i < sigLen; i++) { - const sigByte = globalThis.wasmExports.get_sig_byte(i); - sigBytes.push(sigByte); - } - return Uint8Array.from(sigBytes); - }; - - // s is secret key share bytes - // ct is ciphertext bytes - // uiShareIndex is the index of the share as it appears in the UI - // derivedShareIndex is the index of the share when derived from the poly - this.create_decryption_share = function ( - s, - uiShareIndex, - derivedShareIndex, - ct - ) { - // set ct bytes - for (let i = 0; i < ct.length; i++) { - globalThis.wasmExports.set_ct_byte(i, ct[i]); - } - // set secret key share - for (let i = 0; i < s.length; i++) { - globalThis.wasmExports.set_sk_byte(i, s[i]); - } - // create decryption share - const dshareSize = globalThis.wasmExports.create_decryption_share( - uiShareIndex, - ct.length - ); - // set derivedShareIndex - globalThis.wasmExports.set_share_indexes(uiShareIndex, derivedShareIndex); - // read decryption share - const dshareBytes = []; - for (let i = 0; i < decryptionShareLen; i++) { - const dshareByte = globalThis.wasmExports.get_decryption_shares_byte( - i, - uiShareIndex - ); - dshareBytes.push(dshareByte); - } - return Uint8Array.from(dshareBytes); - }; - - // Assumes master commitment is already set. - // Assumes create_decryption_share is already called for all shares, - // Which means ciphertext is already set - // and decryption shares are already set - // and share_indexes is already set - this.combine_decryption_shares = function (totalShares, mcSize, ctSize) { - // combine decryption shares - const msgSize = globalThis.wasmExports.combine_decryption_shares( - totalShares, - mcSize, - ctSize - ); - // read msg - const msgBytes = []; - for (let i = 0; i < msgSize; i++) { - const msgByte = globalThis.wasmExports.get_msg_byte(i); - msgBytes.push(msgByte); - } - return Uint8Array.from(msgBytes); - }; -})(); - -let wasm; - -let cachedTextDecoder = new TextDecoder('utf-8', { - ignoreBOM: true, - fatal: true, -}); - -cachedTextDecoder.decode(); - -let cachegetUint8Memory0 = null; -function getUint8Memory0() { - if ( - cachegetUint8Memory0 === null || - cachegetUint8Memory0.buffer !== wasm.memory.buffer - ) { - cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachegetUint8Memory0; -} - -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} -/** - * @private - * @returns {number} - */ -export function get_rng_values_size() { - var ret = wasm.get_rng_values_size(); - return ret >>> 0; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_rng_value(i, v) { - wasm.set_rng_value(i, v); -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_sk_byte(i, v) { - wasm.set_sk_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_sk_byte(i) { - var ret = wasm.get_sk_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_pk_byte(i, v) { - wasm.set_pk_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_pk_byte(i) { - var ret = wasm.get_pk_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_sig_byte(i, v) { - wasm.set_sig_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_sig_byte(i) { - var ret = wasm.get_sig_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_msg_byte(i, v) { - wasm.set_msg_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_msg_byte(i) { - var ret = wasm.get_msg_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_ct_byte(i, v) { - wasm.set_ct_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_ct_byte(i) { - var ret = wasm.get_ct_byte(i); - return ret; -} - -/** - * @private - * @returns {number} - */ -export function get_rng_next_count() { - var ret = wasm.get_rng_next_count(); - return ret >>> 0; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_poly_byte(i, v) { - wasm.set_poly_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_poly_byte(i) { - var ret = wasm.get_poly_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_msk_byte(i, v) { - wasm.set_msk_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_msk_byte(i) { - var ret = wasm.get_msk_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_mpk_byte(i, v) { - wasm.set_mpk_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_mpk_byte(i) { - var ret = wasm.get_mpk_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_mc_byte(i, v) { - wasm.set_mc_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_mc_byte(i) { - var ret = wasm.get_mc_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_skshare_byte(i, v) { - wasm.set_skshare_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_skshare_byte(i) { - var ret = wasm.get_skshare_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_pkshare_byte(i, v) { - wasm.set_pkshare_byte(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_pkshare_byte(i) { - var ret = wasm.get_pkshare_byte(i); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} from_node - * @param {number} to_node - * @param {number} v - */ -export function set_bivar_row_byte(i, from_node, to_node, v) { - wasm.set_bivar_row_byte(i, from_node, to_node, v); -} - -/** - * @private - * @param {number} i - * @param {number} from_node - * @param {number} to_node - * @returns {number} - */ -export function get_bivar_row_byte(i, from_node, to_node) { - var ret = wasm.get_bivar_row_byte(i, from_node, to_node); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} from_node - * @param {number} v - */ -export function set_bivar_commitments_byte(i, from_node, v) { - wasm.set_bivar_commitments_byte(i, from_node, v); -} - -/** - * @private - * @param {number} i - * @param {number} from_node - * @returns {number} - */ -export function get_bivar_commitments_byte(i, from_node) { - var ret = wasm.get_bivar_commitments_byte(i, from_node); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} node_index - * @param {number} v - */ -export function set_bivar_sks_byte(i, node_index, v) { - wasm.set_bivar_sks_byte(i, node_index, v); -} - -/** - * @private - * @param {number} i - * @param {number} node_index - * @returns {number} - */ -export function get_bivar_sks_byte(i, node_index) { - var ret = wasm.get_bivar_sks_byte(i, node_index); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} node_index - * @param {number} v - */ -export function set_bivar_pks_byte(i, node_index, v) { - wasm.set_bivar_pks_byte(i, node_index, v); -} - -/** - * @private - * @param {number} i - * @param {number} node_index - * @returns {number} - */ -export function get_bivar_pks_byte(i, node_index) { - var ret = wasm.get_bivar_pks_byte(i, node_index); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} sig_index - * @param {number} v - */ -export function set_signature_share_byte(i, sig_index, v) { - wasm.set_signature_share_byte(i, sig_index, v); -} - -/** - * @private - * @param {number} i - * @param {number} sig_index - * @returns {number} - */ -export function get_signature_share_byte(i, sig_index) { - var ret = wasm.get_signature_share_byte(i, sig_index); - return ret; -} - -/** - * @private - * @param {number} i - * @param {number} v - */ -export function set_share_indexes(i, v) { - wasm.set_share_indexes(i, v); -} - -/** - * @private - * @param {number} i - * @returns {number} - */ -export function get_share_indexes(i) { - var ret = wasm.get_share_indexes(i); - return ret >>> 0; -} - -/** - * @private - * @param {number} i - * @param {number} share_index - * @param {number} v - */ -export function set_decryption_shares_byte(i, share_index, v) { - wasm.set_decryption_shares_byte(i, share_index, v); -} - -/** - * @private - * @param {number} i - * @param {number} share_index - * @returns {number} - */ -export function get_decryption_shares_byte(i, share_index) { - var ret = wasm.get_decryption_shares_byte(i, share_index); - return ret; -} - -/** - * @private - */ -export function derive_pk_from_sk() { - wasm.derive_pk_from_sk(); -} - -/** - * @private - * @param {number} msg_size - */ -export function sign_msg(msg_size) { - wasm.sign_msg(msg_size); -} - -/** - * @private - * @param {number} msg_size - * @returns {boolean} - */ -export function verify(msg_size) { - var ret = wasm.verify(msg_size); - return ret !== 0; -} - -/** - * @private - * @param {number} msg_size - * @returns {number} - */ -export function encrypt(msg_size) { - var ret = wasm.encrypt(msg_size); - return ret >>> 0; -} - -/** - * @private - * @param {number} ct_size - * @returns {number} - */ -export function decrypt(ct_size) { - var ret = wasm.decrypt(ct_size); - return ret >>> 0; -} - -/** - * @private - * @param {number} threshold - */ -export function generate_poly(threshold) { - wasm.generate_poly(threshold); -} - -/** - * @private - * @param {number} poly_size - * @returns {number} - */ -export function get_poly_degree(poly_size) { - var ret = wasm.get_poly_degree(poly_size); - return ret >>> 0; -} - -/** - * @private - * @param {number} mc_size - * @returns {number} - */ -export function get_mc_degree(mc_size) { - var ret = wasm.get_mc_degree(mc_size); - return ret >>> 0; -} - -/** - * @private - * @param {number} poly_size - */ -export function derive_master_key(poly_size) { - wasm.derive_master_key(poly_size); -} - -/** - * @private - * @param {number} i - * @param {number} poly_size - */ -export function derive_key_share(i, poly_size) { - wasm.derive_key_share(i, poly_size); -} - -/** - * @private - * @param {number} threshold - * @param {number} total_nodes - */ -export function generate_bivars(threshold, total_nodes) { - wasm.generate_bivars(threshold, total_nodes); -} - -/** - * @private - * @param {number} total_signatures - * @param {number} commitment_size - */ -export function combine_signature_shares(total_signatures, commitment_size) { - wasm.combine_signature_shares(total_signatures, commitment_size); -} - -/** - * @private - * @param {number} share_index - * @param {number} ct_size - * @returns {number} - */ -export function create_decryption_share(share_index, ct_size) { - var ret = wasm.create_decryption_share(share_index, ct_size); - return ret >>> 0; -} - -/** - * @private - * @param {number} total_decryption_shares - * @param {number} commitment_size - * @param {number} ct_size - * @returns {number} - */ -export function combine_decryption_shares( - total_decryption_shares, - commitment_size, - ct_size -) { - var ret = wasm.combine_decryption_shares( - total_decryption_shares, - commitment_size, - ct_size - ); - return ret >>> 0; -} - -async function load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === 'function') { - try { - return await WebAssembly.instantiateStreaming(module, imports); - } catch (e) { - if (module.headers.get('Content-Type') != 'application/wasm') { - console.warn( - '`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n', - e - ); - } else { - throw e; - } - } - } - - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - } else { - const instance = await WebAssembly.instantiate(module, imports); - - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - } else { - return instance; - } - } -} - -async function init(input) { - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbindgen_throw = function (arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - - const { instance, module } = await load(await input, imports); - - wasm = instance.exports; - init.__wbindgen_wasm_module = module; - - return wasm; -} - -export default init; - -export async function initWasmBlsSdk() { - var b = ''; - - b += - 'eNrsvQuAVVd1MHzOPs/7mnvnAQzvc29IMmBMgMCAeRAuCRBCIjGJGl8lBCaE4f2Iku+fwKhUSYJ'; - b += - '1rNRiy9dOK/1DW6Kj0n70a1onSiut2M6vUamldVSqWGm/UdP+9PvQfOt1ztnn3jsPkhg1XpK5Z+'; - b += - '+1H2fvtdZee62z11nHWLNzs2kYhnlYXfmA2rvXeMDai7+QNPc+YELKxAQC4WLvpUJnL1+haM8DB'; - b += - 'sDdvQLx9oYpqgpFhvFAam/4L64KKX9vVNkJYZm9e/XKXpyMO8Eh7tnDQ9wTwvcgBKrviTp8TK5d'; - b += - 'PJ09OKTHeGRd0gnPrItn1sUz3oOwPXujSe9B0B7ValrvenB9YfXqdz24Ycu69R1bVu96eMfWdxm'; - b += - 'GdcH/V18BAg3Dsw3851mWhRg1bMszTLPJNV0H4aZpKgfylmE6BaPFzOTNloxrKNdzlelBqWsaWc'; - b += - 'O0XFMZ+bRrmgY0U56pLEsp17A8zzUd01YqayosyzuuF0AGurZNw80aruEow5aGUHW6MqBLKHJMw'; - b += - '3JdVykzbbqW4Ziu4dquwkE5puPaOZfGm7YM18VxYknOVMowXRfm4hgm9eQaE6AOFrqNpsI2tipg'; - b += - 'EyhW+ANTgOZpy2um/mBYpm03QvW0BahJ0zjhloAAvJYMZcG9oL3juum0iXWgDG5guePhLinsE0Z'; - b += - 't2qZrw1CoUSvcFyopqEsAczyUG66lZDr4MwNGi7fHqQBeLU8R8mHOMM6GBmyFpRbgxnZdqWhaiG'; - b += - '1Am+tOxmEq+IHBwPSBfIhP26bZwaABbFrcCWT5Xx6pC/cBMvgAgzHRXLEcrzAez0OIDw0t207ja'; - b += - 'C3bI4YB8irHxyGYljUOqI2IgAy0nIZ8YdDIadgWDVbBsGGAyqIRY384Abg/0MvAQSqFfSqTSqHY'; - b += - 'tgzbVjgNGL3lQgb+ecCgloXNDQ/+MzzAq01EY4QgAaFF2spafFvoCgaIGYsobhiFgm3ZVs7IAZv'; - b += - 'YViZD0wFywhzwTgBAzoUJEtco6hX52UJIClcK468IeRMb4RQtJCi0gsVzhRH/ozWl8nb8j2qnJk'; - b += - '1s9GhIeC9INDc0NOEf8G0K/iEhbEM5CucDawfXZcbGkSpYnwpXH64RWJqIL8QgsARSEv7GIZJt2'; - b += - 'yESuDR4pLrjMOltGj5i30ZkO8ohrOdsJDpVDX8BQANGQjtIBkzRLRT/EATZ0yaM2HaKqAb/W6mc'; - b += - 'D/9wKj4wj+2Z28yPwH8OTHiu+5bMXrPc3d1vZPYa5cGv8LX7q3L9J74el2v3t/jaK+X9Z/ja9zV'; - b += - 'p/3XJY32vb96fKndzx+atOx5VRvP6jl2rd2xZv/qdazY90rFz9c4N/63D+Cc/t1MHG3/jZhCwc+'; - b += - 'PqBx/d1WF83c2s17IXuHSbZP+RS8Psv7lZarthPefPutn1ev7fuXzzTsn/E5dH+f/Fva/dxdl/5'; - b += - 't7D7JDbFM5gS8dugG99ZMsu48s8gW1bNz3K1b7h5tYnAD8I7yqjHAzvKvkfSnk4i29KeZj/EY9q'; - b += - '81rOfotHFWafdwuMr50Pr9nRwbBvu4X1lbD/4HrbdNg5rpeA/afbhPUe3PDONTtWw+7E0Pfw3Cu'; - b += - 'gH3QnxXXXbt28ecOuzR1bdu3k0j90J60fvvQZ/T4wUob+kX6fCPoXet1tIfSP9boR9C/dVuGBLW'; - b += - 't2PQKz0uZ2zG1dP1zZZ9xGakcQ2J47dnfsNP7WbVxfBRzgWa/rWLvj0W27NmzdwuVy/6d51sOU9'; - b += - 'ruN6zp2bHhnB/LsQzu2boZJGv/s+zgk5EPjOd99J1R46FHjK77XsYU6Mb7qe9Kf8TUfuGtLx441'; - b += - 'uzqIxYwzfj5it3Ud63d0dBj/4OeEQwTwdT+86+Y1O3d17Fi9seNR4x/9ggAhx4M0+rAz6Z3wutP'; - b += - '4pN8KtAOFpaMSbzuNT/kT1u7owMqV0zU+7U8Mm1WhwtjvFx7ctBMGPWf1hp2rO7Y/smaT8ef+hB'; - b += - 'C25qGHsF1UdMmS6nNjWH9YfW5V9R9bOSp6aNucuau3bukw/sVvigFRtZ/o1TY/ssn4XRnV5g2bN'; - b += - 'gGONm3dus34Va+BK23YsmbT6o7d24yTic62rF6/Y+sj2wx/XAykukLEAZOHCS3XbFm3enPHzp1r'; - b += - '1nes3r15nfF9cyIV7Vy7ZhMwMDHDg8yMO41ZzTy7NRt2bAB5g6Jy60PGd/zGBHjDlg27jB43SAD'; - b += - 'XPrxx9ZbVa9avx0VBI5xjfNgbrc5c44PeVTXqAGKqejs4xppzjR6P8YLQjvXAKOuki2/VLphrfN'; - b += - 'tLzpzlhvEFuykB3tyxY32H8ZTZmoDqmP8rf1KibMead8V3Mz5itiRK1+wk2hknbOaBR7Zs2B5i/'; - b += - 'f8XHiAYofy0r0GAXLuMXlPGN2fn6l1bhSWNPzSviqCAHkhs2LatY8t64K6da2GRrX04vEe3M2GY'; - b += - 'msYfhV3P1bvecFUEHLnnd4c9V9U0Pm/GN921YVOHVvRfWquKov/tZKgIpAbICuNWRiRsZjC4bRv'; - b += - 'nCoEfV3mCP7xm58NYAqTd7zJpSdbFNT8pRHywY8u6DWu2iFSkRWE8abXWWCNUz/i2yoV3Xvtwx9'; - b += - 'qNxhdkESYkyIYtsGyslsoCuvMBszGEx4g9oCrlELDgNpBaO42DqrWiaCfw2ppNqMd8NmIA4Iqox'; - b += - 'Qm/OYSu64gr/1kMpinJrf/anBL1v27d6q07Vq/b+siDgHwp/w1tgnq5MSirKSEMceYDdktlAa2y'; - b += - '/wpnPleb+d+rSpEazeNz4UKbWz3z/1Ihf+oz/4twinMTM/9LPxeJchrJcSeqp6PiaTUlumEtVPy'; - b += - '2P65mufFNjxvCTjN3fvvqBzdtXbtx9bo1u9ZAHdjujA+amSV33gtS+vqFc1bvsMyclrvnHkvldn'; - b += - 'SsW7t689Ytu1ZDe+O014xyjfI7t8F+2EHgP/OyISXWbulYb/x3T+v1bsvKIhRarQPAPOOIOS5B7'; - b += - 's41a7c+iCz8P6r2PNgj1z6y450dxlesDE4s7GJ3tGFGNY6bDZt2PrzhoV1RpX1mjvqn0SLg4Yi/'; - b += - 'YwqcV40712+ZvXrbrkfjip1R9xEBz5jZeEr37LZsPXuPJUKAWdH4sJ/Z+ciD0UB+N14MOAmh2UG'; - b += - 'RmrgYmFj/U5gkFB6yLj/ia/daPsdym3S5IYzzm34NaTLXeEJFlEFpZ/yWmSPpQGND0v1QjdcWKh'; - b += - 'bB3kNV91kNmlaCy+cpO0KgqEVbdxjf9iulgF7GXWxes42E3hzjkGzZoMptXdcRAt0K4TjHeL+bi'; - b += - '25OSPh8OJG5zGL/wx2XWCgREz3j5yIWBeTvNhp07M21vMpVHXHQJ+1Ir4pgmyLBELPMabOpimV2'; - b += - 'G8WoccQzezLaojQ+6jfpa1S44LdCLpgbcsFnanHBXOOwX032OcZ/92vtN3ONPjNCFxHz0+Z4TSr'; - b += - 'pZP59u0HTJpHMP1LRpGNSnvMrRZ5eliTzXON3qsk81/ioq2mYO7fvMJ6VPgmw9tG1m7bu2rp5w1'; - b += - 'oq+6zIglAdBUVw9e5HZ8/+b7ONXkEQN9u6pfMR0mFeEO4UTRT0np0dxuf0boBRYLfc8MhOHKnxx'; - b += - 'kJCC0bN+BtKmGpHBxLxEdDkN8FUdxofFfRpurCULEsqTmTrgAL0O970pEIVqloxQT/gXZnU4SKF'; - b += - 'saLir43W1xzjQ2Pra47x615LUtEM9ROzFnyu8eeila/dCmYOq5JxZ8esYQvnGk9bWcEv0nOX8dd'; - b += - '+SB7E9k6wOcAs+rzfsnZXnI8k5paQU+Zy41ORlTFXa/27Tj7qUuj9N7IeANTxyNpNGrwQdyCwj9'; - b += - 'vjIlii8sdt6XdHBPqW0xKCElW/5WQjnREX+V9F647zv6GuTCqy73pwA5j8GoOJXvo/vWkjVzTOe'; - b += - 'aVaNSr020+EBkOiltEXMsjcUcbx5+E4hqto/Es4jrkjjeOT4TgStYxPec1A0CoF4hkvqwtt4y+8'; - b += - 'bFQN83/pRds/Vj9mRvsrZs+ZBZEQ10ew73hJGPbyXU9XEbDWn5ixaoL5H5jNeJ8tq5Ob5NZmvF0'; - b += - 'ltEtTLzD/flPTlvB+X/QadiTv911Th2CdPzAL6za8E8c5N4L9sVnQNhiG/a3fWAnbbXxNNSGa2N'; - b += - 'iU215v/JOT05A3d7exvAkXGXNsNJS/8yqheJu/9zI4nOtBum1+cKfxhJV9Z8dapP5DHUBc419lE'; - b += - 'Ys6+fDardseNb7tFHRgBxqoH1GJig9SxY9bIU0WRjc87zVW0mm38V9uY2XF3cb/dlsFOGf1tk0g'; - b += - 'xDfEZSetrKYe7ja+5GY1BWy38WVXRwkAPuBktz+yddfqHR2bV8+Zu9DoV5ko3z7POG1lwuWOq/h'; - b += - '7XpSFbo1/9QphNhy78f3wyQjsDkRh40IMYZob/xZ3gw9YPqP1CjtevyjRkCUN51dVOszv2mo8FZ'; - b += - 'ci1xn/LutL8qGF+AmrucpCfGiHcUpMvggsNuJRK9I1NL43/pcXgTXGN4ZiMG8wDP6GmQ/BoVjcp'; - b += - 'zKhGEb8/cCLsoi/H4b42xbj70dVsIXG8yEGt4U4/Y+4I8Tgs1q/qDN40ZZDGPyclw7zgMGjcSlh'; - b += - '8D9DDHJ+9SMbtuy6fi5UYzBnBYPbatYGRtFrt8/TarckaodG+t8KHRLGPdT/bTtZf5PUH5L6myr'; - b += - 'qf8zORlsXIvgLbpxHDJ92G6N8hOLvVgMXGufdfAQUJH9P6wyxPOBl9d3Y+Ikd786E579yJ1QxnW'; - b += - 'DzC/LgRMemsOppp3YrwOoRd0IVVqXVH7jVj0BCbA3ardXYknaDdnK9yJ2eqkW/HbC6Jta4izyMn'; - b += - 'FNd9nDH7jU7127YYPxe9OSzouB9XiE2Q16/dDkacn4laK6V0oyVbbOtdKpPmUbZzPyG+Qn7Cf97'; - b += - '/ofg79PuPv+kt/1x/xve19VvOt/zj3jf8//K+7L6EKT/P0h/z/8/9r9Z3/P/BFLHfcw/6b8fft8'; - b += - 'PZR92v+f/NvwdgPwH/Mf9H0GbfucAlHwTIN+Av2/5XOs34O/X/X3ex+A6CLDf98/6v+fi337vX9'; - b += - '3/cP5Ofcn7Z+fv/H92eqwXrG6bW73f+1eo+1XzS97n3C+6f+p92P11/7vQ99+5Z9SXreedf/B+3'; - b += - '/t99yn3Y/7nna97B50/hDt/3nmP/xvOe/2z3knv/c5/2M+b3/PP+3/s/6H/IfO91kedP/Lf5/9Y'; - b += - 'fcS5oL7vdnuPez9xH/degBT+dXufsvGX//ux+5te+sSHpsAY7lXr91p7rjDKQ97GkpphBGab6lZ'; - b += - 'FI1DlU0ZnYBa+5qnFAWTb1J0rcghevJGgCLnNXhyY5YOqs00ZRRuSPZyEXsoHOOlC8qjqLN2JmS'; - b += - 'xkjjE8A8k+1TnTMoqdeM/9qpiGzg+ZnaWJUNQLRcoobVhg4S2PAjQXSOYEZBrCzCnINEoGmh2CO'; - b += - '90lDXtMAMG1V659cu2Ha3kA5qbKPWZnud8oPO1PChqDTuykgS85vqgg+3SQeXpJ8L59pQ1LrK7S'; - b += - 'xkWKmp80O4ONS4L9ixRW2rBEURHeoXy8osjsKm1YpHAQ5SNQtCEqgjscwiFl2tVBvGbbFQzZLO9'; - b += - 'XncXXQ+0hW4ZY+A8LEvsdwlsekcTJAmKGkzORGt1O8bV43ecUr8XrAad4HV57nOJsvB50inPwet'; - b += - 'gpzsVrr1Och9cjTnE+Xo85xXa8DtnFBXh93i4uxOtFu/g6vF6yizfALfvNzuIkuPY6nUXggnIf5'; - b += - 'CfjSCHvIxzyU+DaDfkUwr3OYoB5uBZxXm5nsQTXi1A+FUkB8Cvgeh7y07B/yM+A6xnIT8f+IX8l'; - b += - 'wgEvV2EerlfjfeDahu3huhLvA9e7MQ/3v778L0PPPukWbyz/+6l3f9Qq3lT+1Nf3f8Er3lx+/m/'; - b += - 'f/Q9ucVE5XVwV2MCQyIluMRekiw2Qb4R8E+SbId8C+XGQHw/5CZBvlba3SF+Lpe+y3GuJlN8q5b'; - b += - 'dJ+VIpXyblyyV/u5SvkPp3WIuDicEd7cQcdrs6oOBqtMPKgKvbrvbhNd0Oq5OZ5ZIwz0W85trV8'; - b += - '3htaFdDeG1sVxfw2tSuzuO1uV2dw2tLuxrE67h2dRav49vVGbxOaFfP4bW1XQ3gdVG7Oo3Xm9vV'; - b += - 'Kbze1K5O4vXGdloAwS3t6hm8Lm5XJ/BablfH8bqknVZBcGu7OobX29rVUbwubVdH8LqsnZZCsLx'; - b += - 'dHcbrCmH+24n57+aVyWsSRIcK2gEPwP3BTMADXucDHvA6D/CA17mAB8RHAfCA1zmAB7zOBjzg9T'; - b += - 'rAA17zgAe8Xgt4wOtrAQ94vQHwgNfXAR7wuhDwgNcFgAcli/D6UEbAcvM6S04wEaQWiwc1E8QMi'; - b += - 'BhcBwNOZ8mCyj7IKhBBXOF6Sp1yeCUj13r4e8rpLPzQCZxgClZ/bVR9CqWgOytIYcmsqCQVdjSl'; - b += - 'upPJWPXaqOrkuBMfS14TlfhhJ5OrO5mEVa+Lqk6KO/Gw5JqoxAs7mVTZCWdXxugCeFLKwqq2Oks'; - b += - 'G1IEuG6IuV1JqAMXcIbuzZFdjuMeOJOKARZ3anYXvWrAxXYldNUZdXRl2ZQfTsSQdlUynFHSUqu'; - b += - '5kBlZtiqrOiDuZhiXZqGRa2Ilf3ckVWLU5qnpF3MlULMlEJVPDTrzKTlR50O3kmYYoQ+B5t7PUo'; - b += - 'qNk0BWmYpQg/g+4ULWENxoX3agUkiqlVypipfFRpWJYydcrBVhpQlQpCCt5caWQvtpgeUAruYiB'; - b += - 'pXxY6AQudtoaderGPBbzQj68k1vNo23YfnZUtS1uX2OhtFW3vxrbz4mqXh23r7FGrq5ufxW2nxt'; - b += - 'VvSpuX2N5XFV7eVyfXB5umAWlo0JqEOtUYmv4hVBzDYyN/Wty/tiYvia/v2hWH43JH0fWHIG/qX'; - b += - 'wE1qbyEbj68RG4+voEVxdirq61HVgaNQuj7AE1xf/YJH9NoT82eV9T1I9dyudHkPJG1XImrrgMo'; - b += - 'f7LwMtPjsLLT47Cy0+OwstPjsDL+QQvz4x5eRThPHME4fwS5PJLEMkvURoXxiCNC3VpXJuDnxiF'; - b += - 'g58YhYOfGIWDn6jJwQWdd8EInihmMRi6Jhu0B002aA+bbND2mmzQHjHZoD1qskF7zESDtg0sluK'; - b += - 'NeD1uFm/C6wmzeDNenzGLi/DabxZvwetJs7gYr6fMYhmvp83iErw+ZxZvxesZs3gbXs+axaV4HT'; - b += - 'CLy/B6ziwux+t5s3g7Xi+YxRV4HTSLd5ChbRbfQIa2WbyHDG2zeC8Z4mbxPjLoVfGNeN2vim8iw'; - b += - '14V30wGvyreL88yIsbF26viW+j2qvhWGp4qvo2Gp4pvp9ur4jvo9qr4KzQ8VVxNw1PFB+j2qriG'; - b += - 'bq+KD9LwVHEtDU8V19HtrWIH3d4qPkTDs4rraXhW8eGIYJEZh1IF1H6jU2emu8VmYl6ChVh4Dy7'; - b += - 'myvUBdVJ6eeUigHJfL6/kdCj34vJQAGi8NBENQ6x/v9jbbxZ7+01ib79R7O37xN6+V+zte8Tefo'; - b += - 'PY23eIvb1C7O3bxd5eLvb2MrG3l4q9fZvY27eKvb1E7O2y2NuLxd6+ReztRWJv3yz29k1ib98o9'; - b += - 'vYNYm+/TuzthWJvLxB7u13s7flib88je1ukuCwlWEPBw2Jvrxd7+yGxtzvE3l4n9vZasbcfFHt7'; - b += - 'jdjbD4i9vVrs7V8Re/sdYm+/Xeztt4m9/Vaxt9+i2du/7KrVzDGqVjPrqtVItvBoZvBoFvCLNH5'; - b += - 'nJlQrt5Zqla+lWrnhTfKvTtUqP2bVKl9XrX6mhm6hbuhqbOyOURq7dWn8c2jounVpXJfGrwZDdx'; - b += - 'LbuXeInXu72LkrxM5dLnbuMrFzl4qde5vYubeKnbtE7Nyy2LmLxc69RezcG8XOvUns3JvFzl0k9'; - b += - 'uwEsXfHi707TuzdVrFnm8XebRJ7t1Hs3RaxZ3Ni72bE3s2Kvdsg9qwr9q4h9q4t9m66km/ZDp0p'; - b += - 'dud8sUPniV3aLnZsQezWOWLHzha7dq7YwXmxe68VO/i1YhdfJ3b068RuXih29AKxq2/Q2SMWKpb'; - b += - 'OR6ccMXKjvZCN1EpJAXWm6OWV4gDKJ+vllWseyifpRm6NQzf2dtCGuqq8t7O0KmdkAnOmdVShC8'; - b += - 'ZMq08VN0C107BcFpFVXD4FyZs5eRKSN3HyGUjewskTkFzMyeOQLHPyGCRv5eRRSN7GySOQXMrWN'; - b += - 'p4iW3JabMmpsCWnwhZb04csOR225HQYl+4BQLnNve2HpMHJfSjnOXkJ7pHl5EVIZjj5PCRznLwA'; - b += - 'yUZOnodkEyfPQbKZh4YH7LYcpFtyYG7JgbklB+aWHJhbcmBusXhJPvVQ5cMgdtv5BofQrOPkQUj'; - b += - 'O5+QBSM6V6aCIlulAco5MB0TVdTIdSOZlOpC8lkeLZrzHx93dHh9rD7n8OOCCy48Dzrv8OOCcy4'; - b += - '8DBlHWnLHRbeb1ZT9+KvN6Sg2gnD8PpU3BXXrpXZQaxNIzML7Q+yZOnoiTRyF5p964U1xnBnA1P'; - b += - 'Ofp/jGd4jrTj0UnK4pM9qrBouOJojupa1xceE/youlcYneVOhepHs5gzYNmcKd40HwE+1gou1fh'; - b += - 'uBcvEyva0toUrfKbCn/tsMsR7hXkXsNo7yXIGSeaFzkrNcvJv1u59HEg5dnhznPc0z168D4kiuY'; - b += - 'VvmlHEgJF/2zhnbZO3qkSY+WGbfhzTeGHcUNc2CdDrgtCYVN9ywB/ZhR+lLzlGWqpFrMkL9ksyV'; - b += - 'fYi3Elm50ousnnZxwSD67jy0YxW0YfMWsxeqqUzU5+uBXe5pQZ2OiiRTsNOm7R1tRZyhS+6oEgb'; - b += - 'w4okQlaghwmcsG4oAETDcH4wMYEju+Q21maEGSQjUJxx9t7D/LvUShtDXJ6KasxvVh6wsW7Nuil'; - b += - 'rNn10T7r4uBsvdSmVD+WnvfQ/yCtl7IyMwjoXIKeOp//+Ed7vo9LBdhkCbryfOcDH+25XnSGAVI'; - b += - 'uBnX9C3G1LKcCM8h2ltLlAiulZ1z0CNB4ZiBUO+LGn/ZoIDA8qGcYQZrUEw+TNqgTupHh0gBd0M'; - b += - 'b0Lu3hR+UGY7p7a3x37d6tetPe8N5NCS3qpd+7TZs5sXU8gJzevi8cQIMO7XeHH4BRXtwJKsYYx'; - b += - '7FQH8dsbRzZ8uKNrMFo6wY2VVBuEHHsJYkEhxJSkKYUftcLzLKBD5WzKlPu/nS/UX5NeehTsGd8'; - b += - 'xzEy5e/2AWB++flPCgCa+9IR+WWWSC/KluxVNjpl2uV92PS9VLNN+TAxtQslFjCbQeuymx6qep0'; - b += - 'zjMx77lUPs6vnoLh6kkg02MMTJV9grsRuY4dOI3ToRJSJQ6cHSXTovAszOciIQ2cWkuLQuTEwSH'; - b += - 'nD4e+HhQ9WRujQ2RlLTnG1ZO/OfJhB786m0PvSIIfO10vDbpO9Jnvk2itXcrtcvBFdDGOlpynYi'; - b += - 'H3k+dLAF5ASTwdZ9uekTWmT5rS5KbkpbdKcNjclNyXZZsoHoagzKoI77Bc/zn3ikteNZEB/zlXI'; - b += - 'VSSKu0N/zot25MQprp2NsWvnLPHDvFb8MK8T/8vZ4uc5R/w854qf5/Xi5zlf/Dzbxc+T9NVB8eM'; - b += - '8J36c520+9rpgo7o/uv+myX6asFeQGl7pxwm71Jj8N2E9kR8o7E01/TjRf3Om+Hnivt0N1zfI3j'; - b += - 'NPfCZvEp/Jm8VnclHkk5ku3h3YwI8OMCJuJRnQ7W0wQxwwSTzYwzKwf9lgtjhgwnhgrmSKE6XtY'; - b += - 'umrLH0vkXvdKuW3SflSKV8m5cul/HbJr5DyO6T+StgeJwUrI39OOj9y5PzIk/OjjJwf5eT8KCvn'; - b += - 'Rw1yfpSX86MmOT9qlvOjFjk/GifnR+Pl/GiCnB+1yvnRxAp/zUVyfnSznB/dJOdHi+X8qCznR0v'; - b += - 'k/OhWOT+6Tc6PQIE/JOdZB+V8q0fOuw7IOdg+OQcD5n8DLUw5XvJY/6Tjo1lyfNQux0fz5fjoej'; - b += - 'k+apTjo7lyfDRHjo9my/FRQY6PrpPjo2v5+AgNi9Pi1nlK3DpPiltnv5I1OC/W0EEtL7nBJH0T6'; - b += - 'MbHdSi2+8mdc17SUXEepU44vJDZuRmFVrivTU16YspjCHxSk056YqbDjqZWdzIl6Yk5Je4klfTE'; - b += - 'TIWdTKnuZHLSVW5y3ImfdDn1w04mV3bC2TtjdJ1wOpNClixE2PlQ2y/loy7vZHXKYjOt5FRjGE0'; - b += - 'sEYj9pIF389MZm13smiqedUFXDnskZioeokBH6epOrkx6Yl4ZdzI96Z47PewkVd0J+YS2VDyiok'; - b += - '5q+oR283OqRCeR8pF050Tdb1yl5kFMxSg5ER5BXZH01LwiJFVar1RKemqWwkopvVIx6XlZDCv5c'; - b += - 'aWQvoP6M1Qc0J1cVHke4LJj8MSKxxHEY/mKZ4on+FlXBY/OTLpjzozb11goM6vbtyXdMdvi9jXW'; - b += - 'SFt1e3IHvb7ikSy1r7E8rq69POYll4cXZu2gUmoQ61Ria/iFUHMNjI39a3L+2Ji+Jr+/aFYfjck'; - b += - 'rTrGq+LviFKuKtal8BK5+fASunpfg6saYq2ttB/rRQOMoe0BN8T82yV9T6I9N3tcU9WOX8oURpL'; - b += - 'xdtZyJKy5DqP8y8PKTo/Dyk6Pw8pOj8PKTI/ByIcHLs2JeHkU4zxpBOL8EufwSRPJLlMaNY5DGj'; - b += - 'XVpXJuDnxiFg58YhYOfGIWDn6jJwY0674INPEmsYrBzxY1zn7hxHhA3zh5x4zwobpyHxI3zsBxf'; - b += - '9crx1RE5vjoqx1fH5JirT469tGOwJXIMdqscf90mx19L5fhrmRyPLZfjr9vl+GuFHH/dIcdjK+X'; - b += - '46x45/rpXjr/uk+OxN8rx15vk+OvNcvx1vxyPvYWfZHjaKddp8eLsFy/Ok+LFeUq8OM+KF+eAeH'; - b += - 'E+J16cZ8SL84J4cQ6KF+c58eI8r9iL85JiL84hxV6czyv04qRTsw0RvUIjbhIfqCedOReLxcSc1'; - b += - 'MPnUG7V6oA6ab28cgn0sLNnVF51EMzOnj3hORcvf42TJskJCjoTkrF9vxjbbxZj+01ibL9RjO37'; - b += - 'xNi+V4zte8TYXinG9h1ibK8QY/t2MbaXi7G9TIztpWJs3ybG9q1ibC+peDlysRjbt4ixvUiM7Zv'; - b += - 'F2L5JjO0bxdi+QYzt14mxvVCM7QVibLeLsT2fjG2R4ZFftAo2iLX9sFjb68Xafkis7Q6xtteJtb'; - b += - '1WrO0HxdpeI9b2A2JtrxZr+1fE2n6HWNtvF2v7bWJtv1Wztn/ZFatZY1SsZtUVq5Es4dGM4NHs3'; - b += - 'xdp+s5KKFZeLcWqUEux8sKbFF6dilVhzIpVoa5Y/UzN3Ma6mauxsTdGaezVpfHPoZnr1aVxXRq/'; - b += - 'GszcSWzlrhQrd4VYuXeIlXu7WLnLxcpdJlbuUrFybxMr91axcpeIlVsWK3exWLk3iZV7s1i5iyq'; - b += - 'cPVvF2p0g1u54sXYnijXbItZus1i7TWLtjhNrtkGs3axYuzmxdvNizXpi7Tpi7dpi7WYq+ZbN0F'; - b += - 'lidraLGTpfzNIFYsY2itk6V8zYOWLWXi9mcEHM3uvEDL5WzOLZYkbfIGbz68SMXihm9Y06e8RCJ'; - b += - 'eHMecIRIzfaC9lIrZQUUGeqXl4pDnq8cFfj8so13+OFWxcbuTWO3MjTQRvp3ejLeTf6chrky7kR'; - b += - 'r33o01nlqrkodtW8OXbVXBy7apZjV80lnDwcO3Aeihw4ywchuYyN7ZvEh/PW2IezR3w26U3ClfI'; - b += - 'm4R3yJuEKfpOQXDXt2FXTiV01vdhVMxe7amZjV80GTp6NHTjPRA6c5ecg2cJDy4gPZz724RwQH8'; - b += - '7T4sN5Snw4T1pyWG6xdEk882BPzQWxp+as2FOzPfbUvD721GyMPTXFwfMCJGfLbNzI1/Nc5OBJR'; - b += - 'rzHR93kwnktu2riw4Cz4tJ5Rlw6nxOXzgF6GEPOmqt0f8tVlOq3xdGzeVhHT/Tf7Iz9Nztj/83Q'; - b += - 'TweSCT/QjeI1E/lrxq4xG8VrJvLX1ItMdqjBoiOJInYsJSfWTnGg2YiunBsXqW7OYM19ZnCXOM9'; - b += - '8xCuj35H4VvaH7pyyUKxoU4s8LMmd8xAt2wHNnTNynYzcOdFVqUVO/r3KxY+DYa/M7tCdM3Lo0b'; - b += - 'wyyZ2TZcSg5s5JTpkDbnKsCafMH8YNT+junK2huKm+pbiU/Sh5yzPxk0NxShsQZ87D4sSJDj/jO'; - b += - 'YhdcQI6cjqaIyc+2ApvcIIcOfO8y4hHJ6CtlA39NymR1f0385jIBxNiR8795KqZ1R0qeWvvdsXN'; - b += - 'c2ItV83IzbMhyOul+aSbZ76WIye5eZ4hR84aDqQDlY6c/RWOnKQv9JNiMaDrXjly5MS3T3KdpQz'; - b += - '69XniTpqtdDykLuLGn/ZoIJEbYYZUk1rOlN0uDdBLOlP228OPygvGdPekI2d474mVTqR07+ZKJ9'; - b += - 'KXeG/NkTMjjpzhABoqPUlpAPlK987hBuCgI+eYx7FQH8dsbRw5dOTMVawZceQssIske2JCCWkZL'; - b += - 'ejIaQSmOFgOooNlPlP+4B+T++bhY6E/58WnycHzxNMC+PS9ajP7YPanJNwmujgW7+YomcU3SPzH'; - b += - 'e3gR4rkBbpR4boCbIGpquMHh+QFKOXIZxDiKb8ZBmOy/B3shanAUBzHFLjqo6ZEfHeq4gz777w3'; - b += - '47L/X77P/HmwG5K/Xm2L/vRMSt7Enxf57sC1Q3MfuFPvvnbfZfw+2GPLfg42I/Pcu2uy/B7s6qm'; - b += - 'jlE5C/HyUMvYZiFr5oBvfxhUON2slQo/YIoUZBG8b6cO1RRXKJPYBephw+1MEr6D9ZvB5TQE9+p'; - b += - '2Ur6N53o6fHW9CPdBtySWtwN6a3L4CdoBWL7gq2YXpiQKCJCHo9gyYwaAKCVjFIAcg6QT6cqpM1'; - b += - 'q0hTCLYusEjngOugXAfkSq+8gEbzjMWOficsDjCaY4fUrbi1blukziN4G217F6gl7qsAPxPDzzI'; - b += - 'cNtWti1iF2Upw1GpQvPOgyM+UFP0GUfTzoujPEkX/WlH0rxNFf7Yo+nNF0b9eFP15oujPF0W/XR'; - b += - 'T9BWJoLBRD43ViaNwghsaNY3DbvJfCcOJrABnQ4B0wMmzNZdOBncouTob8FMhPhfy0V8Bts1Fz2'; - b += - 'zxus7tmn80a5TGb3TiP2kzFIzZTtddmv8TDNrtrHrLZXfOgze6a+AYlaqAHbNZA9+N1MijFeJ0i'; - b += - 'bx1NbVeXkJzT2tVFi0+Knrf4pIi4CrR24glQuolNQHU/Z/EJ06C8UHVWlHFil9vkLaWlovkuE81'; - b += - '3uWi+t4vme4dw5QriyvuZtZN+m8cdPnHqc1hZPebw+0dHHfbbPOKwv2avw36ahx32zzzksDJ70G'; - b += - 'G/zx6HNfIDDru57ndYyd3nsJLb7bCSe8lmJfeiLTw9J1bHL/rot5l41+GEBQtPgsGULKgMVQrRz'; - b += - 's9PeQ55Ygep8hAKc1Rv+XnMXVFNNuyhp2FcNqGP1ur2r49qTYzb1/TWhPYTq9uvimpNiNvXdNSE'; - b += - '9hMq23P2zoRfa4VcKne7kaNmU4Wj5kXZXEtONUpPuJFEuUhaKyhdmqNmc8XzootRJNFMxVv30FG'; - b += - '6upMrkz6WV8adBEkfyyDsJFXdyYxk0MsZcSc1vT2hE7+yE5gjIbTPTDhqniD3S10X8YWLGCWI/9'; - b += - 'hRc3LFM6VDfOAdVSJHzSkVD5YO8al3VIkcNadWPF06xEffUimkb5/+VAAHdCcXyfPRhgpHzWkVz'; - b += - '0OJx5oq1O5DHDGpgj1nJt2aZ8btayyPmdXt25IezW1x+xrLo626/dVJZ+ar4/Y1lsfVtZfHnOTy'; - b += - '0FyDKsUEsU4ltoZfCDXXwNjYvybnj43pa/L7i2b10ZicTqBG4G8qH4G1qXwErn58BK6ek+DqfMz'; - b += - 'VteS/pVEz/2KE/kuQ9y9B1I9dyjeMIOXtquVMXHEZQv2XgZefHIWXnxyFl58chZefHIGXGxK8rD'; - b += - 'lqjiKcZ40gnF+CXH4JIvklSuP8GKRxvi6Na3PwE6Nw8BOjcPATo3DwEzU5OK/zLpiSjXiERZblC'; - b += - 'YstxmcsthhPSiCOUxKY47QE5Biw2GJ8zmKL8YzFFuNZiy3GQYsdOM9ZfHR13uKjqwsWH10NWXx0'; - b += - '9bzFR1yXLD7y6rb5CGyfzUdiFy0+Ijtg85FZj81HaAdtPlLbb/MR22Gbj956bT56O2Lzkdwhm10'; - b += - 'uj9nsctlns8vlcZtdLo/a6HJJ1r/uqbnPYQ/Mi7bE0bTZA7PbYQ/Mgw57YO53JI6mwx6YPQ57YB'; - b += - '5x2APzkMMemIcd9MCk73TQk6fjTnEj3d4pbpLvdWym4TnFLRHBIruNXTW7rYSr5kUlVhIzE6zES'; - b += - 'l/NSeFqTuvllasAylN6eSWrQ7kfl4cSoE//3Aof4qAvIVnY7xAL++1iYb9NLOy3ioW9UizsO8TC'; - b += - 'XiEW9u1iYS8XC3uZWNhLxcK+TSzsW8XCXiIWdlks7MViYd8iFvYisbBvFgv7JrGwbxQL+waxsF8'; - b += - 'nFvZCsbAXiIXdLhb2fLGw54mFfb1Y2HPJwhYxLmsJFlGwRSzszWJhbxILe6NY2J1iYW8QC/thsb'; - b += - 'DXi4X9kFjYHWJhrxMLe61Y2A+Khb1GLOwHxMJerVnYv+y61awx6laz6rrVSMbwaHbwaCbwi7R+Z'; - b += - 'yV0K6+WbtVQS7fywps0vDp1q4Yx61YNdd3qZ2rp5uuWrsbG3hilsVeXxj+Hlq5Xl8Z1afxqsHQn'; - b += - 'saG7UgzdFWLo3iGG7u1i6C4XQ3eZGLpLxdC9TQzdW8XQXSKGblkM3cVi6N4khu7NYuguEkP3FjF'; - b += - 'op4rBO0UM3sli8E4Tg3acGLwtYvA2i8E7Xgzaghi8OTF4s2LwNolBmxGD1xOD1xaD16nkWzZE28'; - b += - 'XwDD8cOU8M0wViyIYfmJwthux1YtheL4bwLDF882IIN4hhfK0Y0jeI4Rx+eDL8EOWNOnsM46t5y'; - b += - 'BMjN9oLa/tqQp1WvbxSHED5RL28cs1D+QTdyK1x6sYOAtpQ70VnzXvjwJtbxUlhmxz2OnLY68hh'; - b += - 'ryOHvY4c9jpy2OvIYa8jh72OHPY6ctjryGGvI4e9jhz2OmxKo8sTHfo6cujryGG3K4fdrhx2u3L'; - b += - 'Y7cphtyuH3a4cdrty2O3KYbcrh92uHHa7ctjtymG3K4fdrhx2O3LY7bCgSD7AIKv6gs9W9Xmfre'; - b += - 'pzPlvVgz5b1Wd9tqrP+Hzu/JzP584DPp87n/b53PmUz+fOJ30+d+732ap/xmer/oTPVv1xn636P'; - b += - 'p9jXZWagnt0D8h7KHXRZbe8UnPwlqjobkrtx1B0b9CbbFtgHU3x9ZBc9+P1DVQDWTUg54/ti1Qv'; - b += - 'wreTM8eRVOj8AfCeGH4wFTp/ALw7hu+TrvvZH8Qm55ATsXPIMxbFY0LHkDgcJoho9iw8FLpKBW+'; - b += - 'uDIXJ8ZP7vNB3sjV6J6axeuGRX8zsUO4f93SHlMqwl7w+UfAmwl7CPpEYk1UV9pIb4rJKhr0c8m'; - b += - 'vdUg97Gd9SD3u5z2avr/32CnsxekSij6nuFbnPjrsbstArssDyXMJbYhgk8YpsDL0i3xSGt5wQF'; - b += - 'DBRCN4Ye0VimMmWWl6RGGayfBFKx9UKbzmEpfvxUDso6KXyXgdta+j4UMsrsodEYmoYr8i+VIVX'; - b += - 'JPrq6l6RtDP38hae0rQcJwpv6YhXJHLAUb/CK7I32tyjxjW9IvtS7BiYDMnt0QCtpFfkRXf4UVn'; - b += - 'BmO6e9IoM7514g2QovHfCK3K/95LvXcMrMhxAIrxlty8DKCScNf3hB+ChV6Q31nHU8IrkcTjoFe'; - b += - 'lUrI/LCW/5TB95Px7rC90hP/Zx8o/s+8Rw4S1tDm/pYHhLGwbQ/4lEeEtbwluir5+sTPK/5FWNw'; - b += - 'ZcHdRuEC5yyub3wFTNQrzWGVBl41UjIgVOmxMFn0djnBEbhB3aOBtefwsCZH7pWXbnXJqfN9MaS'; - b += - 'PcNQi8f2H+7tRqnt7qU2Jf3SzLtzJqYKpVl3w5JpC2Z1lV4TtN2XsyA987Gg7U05OzCvMSaB+mZ'; - b += - 'eZ7YWYZZB2yJl03ouG0EbSPKn4Lcb/hXuK1mTUR4DIsoqCNNZqFc+ZBaOkY0xcxGGGrBppkYwk5'; - b += - 'rPHK75Uax53Ex0MGsRvvNvl88o7GAWdTBruA4GsOZZpXeA7vKQPSzZJe/GlrB/WoH59JLZ71sy+'; - b += - '/3Ba5bs7Xr0sSWf/a1nz9t7lnT/3hd7j6suvFHJKhd2lQuPFBsRl5wupcrG64k7zMLbsH8M1CzJ'; - b += - 'AcXJrJmB3EULR5zayO0AnIFeGst778TWUNIoJSWz0BT10xR10xT1EljlF16wtheaIM+ftLfLh1K'; - b += - 'dZXsHJOwdpcnlXlNMOhdUoZQQ38XaA6rkQ8pfObnklNvugls7wA24u2TtDLEmaOxwWZ4zYcVkmx'; - b += - 'G2ZzvGqkSMF2GrIX9c00IEdHWWUkEKhlDKwpi6cCUgBDYLek+GHGqN0oTAooImsIKyK4JckFqxA'; - b += - '6phjaZgwgqANq3YgeIBWApuYOLFDMbB4lcgwJfTAm+x9+L3FGC5lYAdDqfQpQ57hQu+E1B+TvHN'; - b += - 'Tbx5im9uYdfmih0gfzJLcyg+rl6Zc+GidmET6KRsYk2YbWfRyeD6Rmwhli5aMCOwQAMH8GSWZ67'; - b += - 'KNTIdAL1FIQ4mWwjhgB1guF2IFOQLxOdeoKc5uWgxzYA4gcnIQ/KRHzRir2iW9zL+UjKb5TBka8'; - b += - 'XkkrU0Z8K0Qcgjb7k4gubAZUq52VQGQIAKBykAt34nzAB409pO/WZBZ1hiFNuCcUUz62dgJFb50'; - b += - 'gsvvOBt31i0wgKkX2DOV8aS9J6gravUhm+/mGUbd/JcCAaej0r8YUuyw5RgEm4G6wTpaWHfFhAz'; - b += - '64FOgihvzOYy5R8996xRnlLu+cqzIpJ7IVWeWu6PAANfoRoXIsAlBLSXj381BJyEVHlB+VIIAIq'; - b += - '2lS+9+7MiqVOINVh3RWvYScP4ZLQWohJosCpIFS1ivbanSiayj4vsg/LPAdJ3BsQ6Ls7DzfBCM5'; - b += - 'BzjpololY6ppY1Nmq1FHHF1aBWy8+UWiaO/qeMzmNmLXyC9PcRlanAX8oiEgU6otNHdLojo7NpO'; - b += - 'HQ2jYROUB+HQecwJdlhSl4pdNqEUJCOPuJTIeZIGjI+fajvBH4GEYeCqNeRXQL3ItgpzHinyNI5'; - b += - 'LleBPas4heUgCa1TLjXTaltgv7pSoqD2VK32kFejNhgKXGJB7Wk1lRPcy2BzgsuQV2oN/KA13qT'; - b += - 'CDa44XW40Hq+9TnEiXk+5xUmyQeVkg5rAO30xQGHt4AsmNr7vVizh5D18wQQ1mGIKVygg3gX7yB'; - b += - 'lRhsPYWYbjfgNbbiS/XRy2G8lvV5Pf0HkaeoPt2txeVqtyoKgFDvRskj1H2+1y3IFxh00HV0Dnq'; - b += - 'XhndQOP+/bCvbW8dyeAO0sN2uaapxtTCe7r3oqgIXBxfyWB5Af5Fbjb19hf04n9FTf+xBZrJ3bY'; - b += - 'aQgI70N7rBvtsW68x5qyiRplH+bjFH1AXbYJ1Rw/mIR/RNCZK2jOIyEb2OqykR2hGXr3QZ0Bhh8'; - b += - 'O1w1Baay4zmu4LlThOp/AdWE4XDdcDq6njg3XLSGugzSuizSiOo+odoKJ+AeodhnV7oiohvWuod'; - b += - 'qPUe3zcgxR7Q+Dagd2OEC1q6HaZVS7jOpiEtX4cpxTjWpnBFQ7jGoHUe1EqHbGgGp3ZFRPqUK1E'; - b += - '6HaqUC1y6gGEUOoboTOg/H4B4imbaqJtqXhES2anyDaiRFN2HAiRDsaojXhgQilBRX4Gqp9RrXP'; - b += - 'qA5eIlc71VztMFc7o6LaHxnVoHBfssbA1s2Ia59xje8HZoJsuXFZDh/LZjvpcxc3GMgArGo1QKo'; - b += - 'hVNHzUNVkaVGTDg7TgeyqMdPBYYafHmhGlU9mgi/mVB6lLIwhXW5bmbPgnmlW/JBN4MJ0SjOd0k'; - b += - 'inGUEO7j4hplMB6FTAu14ZW1GFztJVGpGuFhsKKgZXrgiuAqoAheilfS+4egVAvRoUmpGgULqSQ'; - b += - 'qOYUV5EH083o9KoaDi4FJJmVEgvGz9ZBfgZD1sM/MXUuVwbyYtJ4wkXC2k8XRY5QfPtaCjdvgPU'; - b += - 'H16JuOEwEXjB4HyziGlL1EUP1UUntIUAa9lVpIZ5sa44vI7oBd4wOuIwJdlhSobREXnfgqV3GTq'; - b += - 'hgzqhU6Fik0rooW4XWyyoERb9aJE1IL7wLdcGxlcD4qthJHy1vHrx1YD4SjG+IpOkARHWgAhrIJ'; - b += - 'MkTyYJYCzPGMsjxvIjYazp1YuxPGIswxiLjI48YiyP0Dw9gcNTzViZx/bZLD/aACsZVy/p9/zID'; - b += - 'Be4KU9gUCZZofjIjSI+krvrWB+vhIp5hraZVTk8+QIjwSnvhZ6yRVMtJhm9d1nOJCxQ/zhPPDWF'; - b += - 'nfa1hlF+3TJ6Nhuk0BolRDkINmmjygYpkMArAEcw/M7y7MDCx45ZemQ9hypQJAw8cQqyWIQ6SyM'; - b += - 'ryLOxnJ+UwOhA8XCzpNI0li987VmxHtOhLfmriRyWQb3G8umopp+wOhsS7RoSZflEWT5Rhnc/i3'; - b += - '3+anWfUHYXfQWq8UbThwvs7zY+xuZHsv1pCklAPVyKenAS9zITOVfPlQ+857NGeRIDvpO4ORafm'; - b += - '28W9l5hlLtd+ZIUbZvteLpXnteJGQnts5AyPmduoowE8sF3+9uUxME5aVBRi3x2knOtnDvNuSmc'; - b += - 'G+BcIMF+ODdDogBxrk3CA3HuGvYzx0PJUhpI1v1P/cDz5R+/sLOcLdyLhwAWMpGC7VOHDuFTDmy'; - b += - 'XgA6STuBUQAdw0w8waFmiroXKNB7DJPqliCqZCmi/icdyfgW020KlMl8Bxa8NFtDKT0B7oN8sGm'; - b += - 'hJKH1/r1B5NxufamSTUOjRTtQCS6XUiAs4CVUUCCYxV8STl+grwlvh0Z/zXOEVH7f7Mt3xlcB45'; - b += - 'hXHTuqnckfrMnp1XoE526+Se/gv+h7OK85ZLxc+Xgm8uq/APRpf9D3SP2NZb79KpFL+VSIFGl6m'; - b += - 'e/g/Y75q+AWSEK8Ef77YXPZnvtu+8nrLK6//vhKr5afDVw0/lV6zv0C9/jzLktzPlSz56WhC9i+'; - b += - 'Q3vpy4cN5VUqony+d+pVYO9bP3EJ+5Xv9xV2vr7w0/WXkj5drbWdeJdRq+CXkgXqvP2+y95WXkr'; - b += - 'oVZiRKDfpv+Fzy9KfbxRc/PjPMKdcQvsH1vK2fc1209YOuS7Z+0tXtdGpHXfsc/ahrv6MfdR1w9'; - b += - 'KOuHkc/6jro6Eddhxz9qOuwkzzqwkOmhqCh+qyrW866GqpOn6rPumbXOurC45901VFXX82jrn46'; - b += - '6krXOJKqPurCI7SxHnXhwVqm6qgLj+ayVUddPXTUlXlRR11DdHhWP+r65TjqStePuupHXfWjrvp'; - b += - 'R1yugSNePun5RcZV7lRx15epHXa/4QdNPZx9I14+6fo75KvcLdLyZ+aXb67L1o676UVf9qOvndu'; - b += - '3UH7f+Iq3XbP2o6xfoqCv9KqFWrn7QU+/1F8iazf50j7oSB1h/c5Wayp+bHXA3lrzRIpdxvLJSH'; - b += - 'K/siihe2QyMV1YKZnQFJYxWVgqueCwoUbQyDlPmBaVFKht45QIG3SpRmLBSGCbMoTBhHoUJw7QP'; - b += - '6RYtSJhXPmFqQcK8MEhYnxkHCSsNGyTMqREkzOUgYR6Hl+OIYJ4EQXNrRgTzOMBaGBSMw39Rk8C'; - b += - 'Jwn959LXTAsCPcmQX7tPeUfLD19U9DIt61MFIAjCK9AoKQlIot62EexSKJvd6xOksNmBWXq/MGf'; - b += - 'S6ZYkjNsgrrdmyuV3tpXhhS4xiKcCXxMvHnE7swgwa8HVLI8iWfyLvt+LLryV6fZLeBMvOV0SH9'; - b += - '+0rAR0Ofv+s1V26YhG/4U5FwRUM3vNYjUpaKd65vBtfT3Xw5XaHYtcCsjJFGTeGBZI+sSfpB3rB'; - b += - 'Vwrf1QlYSN0FzONhfGB8uZRCCGZzGeG6vfAfB80on/zSs0YnRQVAgoT1V+Wa8dXTpTlrUuA8TcO'; - b += - 'pjO6EcScAoWbOBCRcgQEsGFMqU/4cvsc4OX6PERkgxhlTEt9kpZYh+tzAxflcQZi5Iih1l2ZoqL'; - b += - 'sCF4KgLS4UKNx+OHQFDfbiBL6of+iAcEXzzWAogDbll1Jws9TKyaUGjscTvS5u49ujJoavaaCgc'; - b += - 'RTxSlW/YLpnezFPq5Hm2OcQt1DoHRoA8AfieXzghAEQshS8o7PUqkVBmEgxGhAd2WD8iqA1yGIU'; - b += - 'BDrVdoOJKwDqrthRxBBvPkd2oCgI+SCHM89JFAR7L6yJnIRAAKLgC7sc+YEYOhtGQHCjCBVOFKH'; - b += - 'CzcCYolfFXXpTXmhbTrwt7tHb4k4Aiwr/OO7NqpwbLVAUUbjCIdXAwXAcWntO+GqzMxkQGS95jG'; - b += - 'vBvAHJLKEJX1NmtGUlLs5ywsDkksuvN7tx6JAU3r0hSC0lyWKAyMumM/hu8q5SWl/jLr62jt1LH'; - b += - 'K1S0FB0sinm0vDNdTcssDDaTBj8qtRVKi2icHp0zJ4PwfQ2upT4w5ZkhynBJNzMYc5xaTFgHC0/'; - b += - 'CiLnR0HkDpypCCJ3+ExFELljZyqCyD1zpiKI3OkQUPFSdPJF5Sy9Pp/dSAxcGwUwWhm7S8IzcFc'; - b += - 'F2aJLPAibE2wTwIgpDtrlBWlkPA7nk6KYXakM0Ai4rchbAu8iGJ9L9hPcTRoDW3YHcoBwN9K77b'; - b += - 'kcxR3J4Sr0KEwm7AvJ7eCMkhKTQnfxLoLrEmNjJms79JkqLsFAX9O02rLnJGsfdXj7LLbCdVDhp'; - b += - '9+98n4bP+XO6z5gMZCVDjAeWJFkTNGP97M2GGNxEl4ptDzJouIUmNZ4lNGA9PHFvOgIPkc5oqgD'; - b += - '4zkGD6y7ootinKpiCBdZMLROiIuKsEbwJfJgCv7B+gxXyIhLUdYff8AWU+l4JaZxCaajlZjWViK'; - b += - 'tHgk1oCbBKgQ5CZTF+CRI7uW0QEFCNgUB9J3lhYXLMs29NgeuFr8nHWQ6Sy0cnIck1zi6KZWBfA'; - b += - 'uaVwQtQRolYxorZYJxKzDaF0hGFAl+ZywgKWRRZ8lnyZji+DAex0txkCNx4+GIW05Q1IMlOTgGn'; - b += - '8fgrgAUOigeM5mcmc1nwATKrwClLBdYK0Ejg9yyHEZIyGOUA8htDGMgeEEKla9U0S/7GZi9H0zG'; - b += - 'v5AamVGoATz5Yqihy0W/mMItLEUhlaoJ0hxMr0mQlmqCjNMIMiFJkJYVwbgEQSYMR5DmyyHItLE'; - b += - 'QZGkuF+G5iaKXZi2Kv4G74lkUdu9DgQak4hyKN8B2KpiEfxTWiJZXekRKgCxJUsKPKSFxxEJK+M'; - b += - 'PtUMU0Sqy0Rgk9aFJzMDFJCQk8m6REakRKpJgScfjZDIefHZ0S6ZEpMXVslCCOTzMlQDCSRl8Rw'; - b += - 'APUhTSpC2Hky7FqBoz2VIx2iXsSoj2loZ3U2wjxaT2qGCI+lYgq1hy0vsJLACOmlFKJqGIeqypV'; - b += - 'iAfV67iZxHwqwnwqxnwaMe8z5mGbaEL/uzwGdUGhBDCJKhaG9qkKHkU6kis6Up5ijYY6EAxfQvv'; - b += - 'kYwXpZ6cYaQFFx6ybpFA3SYlugppJFDzKSqomYfAowWUuGI9UwgBnGJXVAhly4UzteDMpPZcw8Q'; - b += - 'ssXwqM8gJ2VECUNyRNT0C5q6mlHNo1G2E8MjY5lJETz1czPwkcY5ACKg1Tkh2mRNAmAZWIoo6Ed'; - b += - 'S0kg9cQFdyNtG5qjwo6iIiIqnfgrArcohNSgazZAkfJBXOCOJ0DLBWQDIUM63J9YqCZ6E5JooNM'; - b += - 'VEfiJXEEI9SAWFyYbID5lKoOrMmW0HKK+EfB70j1RVkBxp2NxDGBKTKgs+YwBJIZWKvwiUygOin'; - b += - 'm0facYgLqtMfQSZcivoCdBg1I6KAT6A0tiw6PMcjhgsQQSohZKIYbwy2yKM0640BLWSgp2YEdx1'; - b += - 'jK4SPXjZBBq97mWEoYoIm0DJVRe8tzYMTGJAm5hDpI2VzGAKqck8rl2RlWtbtR2wUtuzHUt+/EY'; - b += - 'a/akTPpfjjEHJIcd80D/xDGMsKZ5QwCHo6AUTSknBYNycNQtBQNKRnxKHUZEY8en6Xu3+vgo7Tu'; - b += - '1MaSOQMNVYO8wfttTtrt6qQkYbmekiRYy6clCdwzIElQJ5+TJBjcZyQ5pV2dlWTQrgYlOaNdnZN'; - b += - 'kW7s6L8lr2tUFmGB5IX7Io/gWSC3eiKm3QuqUQcC3QXKAk28PjJlqdvEdgIBDDvpqGxgsST4BYq'; - b += - 'KnOWwbb+fMfgcX49s40+2gD/RbOXOR3MrfQpngHQusIRnLAxTL2MTHWtDxOSP8UIyJCjyIU6N8X'; - b += - 'oMdo1oXNEgfuXkb5SENdpxqPa9BTpCTtlG+qMGeoVqXNEi/g5HvgUpmDDvp4Hd6jPI+DXbKwQ+w'; - b += - 'GOX9Guw09XYgghjkrD4uRPAhszPEcK8ZYfioGWIYFzwmEcsXofvxADphxlgeAtgExBtmzkOmNUT'; - b += - '5IGQmhig/A5lJIcrRA35yiHJAdb9JH08yy/vcztIUuMFJbfz7ATYV6a/BDgBsGsBOa7AegE1H5t'; - b += - 'BgBwEWAOw5DXYIYEVkFQ12GGAlgJ3VYL0AuwJggxrsCMBmIDdosKMAuxK5QYMdA9hVyA8a1tHx/'; - b += - 'uoQ6xdjrHerCOv7VYT1HhVh/Qx01oaUUjHWYemXZoZYPwWZWSHW+yHzmhDrJyBzTYj1PnwYJVin'; - b += - 'lwPwpQqg+oeexQ8u8GsVip7Fo39ot0txPUHM9HwYK+D3b8In8S69pxDniYi9IJUGkYjnoOVrYbx'; - b += - 'HVIyQ8y4y4VENcgFqXQuwYxpsiGr1aZDnodZ1ADuuwS5SrRMa5BLUmg2wZzRYt4e1+jXIPq+zNA'; - b += - 'eZS4Ptp1qnNMgBqDUXWUvFpMP3OK4PSXdGRaQbjEl3PibdUEy6E9DZPCS3Rro+gM0PSXcUMu0h6'; - b += - 'XohsyAk3SHILAxJh9/kel1Iun4P9y4DX3uJhQHNY58GOQW1bkCe0mCnqdYBDTIAtW5EdtNgz1Gt'; - b += - 'gxrkDNS6CTlQg52lWoc1yCDUuhnFiAY7B7BFyAsaDL8SdQtygwa7QL0ds2Kc49s3i0Ocn7AinPd'; - b += - 'bEc5PWRHOB6wI5/ipqDLSydK2AoAtCXGOX5q6NcR5N2RuC3GOX6haGuJ8CDLLouVCwfsNfEsnFg'; - b += - 'YAW47CQIPhF6JuR3bQYMcAtgKFgQbrA9gdyCsa7DjAVuL2oMFOAOxOZCAN9gzA7sINQoP1A+z1y'; - b += - 'BO2xhMAW4VcocFOAexu5AoNdhpgb0C+sLUtAjbFe6Itwo63CDveIux4i7DjLQI6uxcpZmtbBMDu'; - b += - 'i7YIyLwx2iIg86Zoi4DMm6Mtwkd7kLCP7zWlglAy4Zc5ddmTpnexNFlUHgRpcH9wPz7b+eCzFNo'; - b += - 'wbIs9eYme4hydDvTbclAwE7SeBcrm5GlIZjn5HCRbOHkWklM4eQ6SM7iHC9DDNUHDTAtRh1+8Ar'; - b += - 'ThB6sAZRm8vB1PHodsFuxGZ+DLx6xMigEpaMFQkYKUxRtDjCzsDJkR9I4gH7UD/SL6iJaJekT0w'; - b += - 'WAT9YWgKSQ0UmA2DdjqdRZYD6BIhPLmWBhCriVqC1pCMDnKgZoQfSAPP8rQGUyMchgMuzXKoYEw'; - b += - 'IcqBqhB9D5UQ1O2CcokqOuzxwZSYMSE3NWZJyE2LhRTkpsfiCXJBLJogV4yFEuRKsUCC3BWxKIL'; - b += - 'cjFgIQe7KWPxA7irJuUy7a5h2r2HazWLazcQLCRnVGbTFqIJcKFxUREXY2CPBAv2HYsXUdmF8vc'; - b += - '8PfI29TXpv0adXCUfYcHFz5U93soiB3LVRDjZL/jQwiwvIzY5ysPkFc6IcbHLB3Ig/gDqDQJ1eF'; - b += - 'byOcbCQcbCAcdDOOJgf4gA/AzovZsMYB+djHAzGOMDHe+HiVhEvczRQO+oGtqvghhixkLsx5kHI'; - b += - '3RTzIORujoUx5BbFYhhyt8QcCbllMUdCbmmUg+0kuC3KwY4S3BqvSMgtiXKwnwTlKIeva9pk6Qp'; - b += - '3QenymLsgd3vMXZBbESs5kLsjVnAgtzJWbSB3Z6zWQO6uWKGxO4PXx8oM5FbFKxdyd8cqDOTeIL'; - b += - 'k0U/LNTMk3MSXfyJS8L6QkCOvg3hhddkRJkPGRcmJHlIT9IFJM6HM3REvk0VRC1OocWym2TXrpl'; - b += - 'hTMqA32MJywxucDRuEg/JRn47NJowi6a9Emm1/hox6rnN1Roq95IlVhhJTeiQ8ONKDFQPyyDEay'; - b += - '3lGytUJK7+Qif0eput2OHfSZS5gzvvErj61UYJNryc+B4WziO9L4IEiU+cIRs4Yt26bWRXYs5h7'; - b += - 'WLNg2tSmyXjG3TbNb29SuyGbF3G7NWm1TXZGlirluMzJSMbvPjOxTzO43NdO0TR2QLJiFwbgy0D'; - b += - 'Mat24YYv6kGdmEmD1lRuYgZk+bkSWI2QEzMgIx+5wZ2X+YPWNGph9mz5qR1YfZQTMy+DB7zoxsP'; - b += - 'cyeNyMzD7MXJNtHJtPV0QzIyMKvHBr4qfgeMrOCpIVFTF4e/HUsc7TlYdFh7AgWFuaPKM24alNH'; - b += - 'VWRZYfaY0oyqNtWnIosKs8eVZky1qRMqsqQw+4zSjCggg4osKKKC0ownoIKKLCeigmTBZgmuj3G'; - b += - 'BVotFrGFpJguwhhXZK8QalmaqAGtYkZ2C2R5LM1Ha1EErsk8we8jSTJM2ddiK7BLCnhWZJIQ8K7'; - b += - 'JGCHmWZogA8iSLH2xarBHUJ9MLv3Ue2QDEH1ak/hN/WJHmT/xhRUo/ZoesSN/H7PNWpOpj9qIVa'; - b += - 'fmYvWRFCj4hz450e0KeHan1hDw70ugJeZJFXdoN7gmngbyVFNROharhVOnTpCuXe39N41Noq3Fp'; - b += - 'sicS2EbhS7iMzcJ1ICUNlJQkrY1IWlfL3trSWkXSWmmFKimtaxTtANlsoLQ2RFrD4PbiF1L37tx'; - b += - 'env7OosJHp934NdRAZf5lulJ7p4aPQikwBvVF3oNg+uHFLpxG+T/AYB8VF4YMMqQAtoZAhhjSit'; - b += - '8iYwgFzJhpBSADBNLDkDYwdASC31EysGfApPQDEDtwOdPvYsaT1h5mfBkAZVKcQT6zg7RkuMtC3'; - b += - 'GW3q3U5oHfZq3c5pHfZr3fZz122xl326F0O6l326V12+1qXA3qXA9xlEHfZq3c5pHfZr3fZo3c5'; - b += - 'qHc5yF22xV326V12e1qXA3qXvXqXQwlc2vQh4X67ZC/58Qs/euHvX3jhvx7fu6fkLPnjr6D33Wd'; - b += - 'e+LO90gfuw0teeOHvn/j+Cy98ZZo0x+/2Ljly4XN/8sHnjh/6riHTwWPvJZ/5g4OH/37oS39+Tq'; - b += - 'Bo8zhLvvYPH/+tc//5vQ98QaBgLwD0t774whc+9hcnuycJCmz6KLCNn2aHseKXju2S0xU49z3dh'; - b += - 'cYvmHt2V4kKeh3gR7gO2LQTnaI2XaV0VynbVXJHmVN3rTkN1ZzToFVzTlatOfVbNeaEyj2srvue'; - b += - 'xq9uhzPzYEJdGLwEZmjJjIacEi7rM1wnHaRw0g30eW2YdJ4QgIoOlmYDn3ogFPQ5XaVCF6JhptU'; - b += - 'NVdMYf4Z7wQ9R2/gdK8bh6JjpsWpgprsmZoZqUntQ1cLMgKqBmT6FmEkTZvbrs+4qNRJCLJxLSn'; - b += - 'CHD84Idzmq0UTsqwh35fPcOh80IM7y1NgWjPS7wBJghHrUy0XGnxdksBdhqm6XaIHaIBYWdOT2M'; - b += - '3Kbu0r0+fMei2iCZpngt9e6HPz2qhr47VG18NtdE79DtVeTWQO/YH4Dfhto3od4vA0871ILTZvm'; - b += - 'khEKXLSEAo1UYxwxHlGgWShwSgkFmmIKDJhMgYtMgVSQRwo0U/dOiDMPaeIFWe7FFQ5OMQWISAN'; - b += - 'CpBwzA1fJ8TIRIvUIkU7VINIA3Gp8V2lCV6kVqEVUUcRE+Gxd6NSnLodO5EpSSadesxadesxadO'; - b += - 'quSaehWlIPH5e5iHbkKx5vY1CgYU6imdNcCkLJ/SElW6jGZGJ2hZRsFUqeDyk5jmq0EoaIkhOEk'; - b += - 'mfMBCUnYI0HmJD7Gb2ZoBkJOZHu7whSB70u+mp1nlnKk0UnS4lo3Zug9ZlatB5M0PpQLVr3Cq3P'; - b += - '8GDG67QeZFpP6SpN7SpNE17rM4mn8dmbkLvfvBxyL95YTe3ZtYgd1KJ1oQapK8ks37+R0d0dD64'; - b += - '0HQGLccW5SFNkWp5FC9FAFmsvzNCFpchscihkk0kxm3QTm0wTNrmohE0mx2wySGwyVdjkTMgmrT'; - b += - 'Gb9FuyfYSLbGLEBX0+4jqDLIM8xsRvYj4V/hhK8MfRWvzRl+CP87X4YyjBH0dr8Uef8Mf5Sv6YI'; - b += - 'gx+3hAGn8Ct7FA+MNs4+JQHi6FdaRpMs5nx7lOrZpq1TLvfx3URTvtirWl3+/q0T9Sadn9i2hdr'; - b += - 'Tbvb06d9omLaAc58vFDuVIJyoQxUvMKZ/OcT5BdVY8hE+k8RHtqf4CHZc3tMpPLUwGXkMyO6LGu'; - b += - 'QAaHKbORIB4ULfwoKa4wLpnONcQss9O7wgmlQTJsuYB4QLDuIL2SZGMudgQSC9/tJBLPo9xHTIY'; - b += - 'JP1ULwACE4EATv95IIbkIc50K+V4I9X8PeoInYawwXjynYy3GVLBHIRDS6wiuHTOGVRq5CilqAW'; - b += - 'Bwnq3ihLGKXKzQvsAoB7pDjCTOk3bUAokQi+zrDyu4rmCnwDX1Zkp5Gi14fUdQkmDlTiZku+oyU'; - b += - '7ApmjWlvw1k3hNuuKTyX1WZdwEmHYqdNOKZB5rzAaqUptcRTSkXK7vlwSrwNsVYmU2Jl7Kgvypg'; - b += - 'bjdeNxnvRSI6XOMHAcYfjbU0ON73ACvAzazgO6RPuxGO5GI4lT3W5V4Az2BecLrDaym3RV+52L6'; - b += - 'evtxFSSvhEsvdjz9KYSu59ORW+RQRW2P3ku2uAxP/KH+Gbcf3dfw3jtPnAD0R80Sn79HVT7AwfF'; - b += - 'Fd3GDh3A+6cx6DNEvT2wuVHbbsekxd3SmZ5NvuAKjb062Z+3cyvm/l1M79u5tfN/LqZXzfz62Z+'; - b += - '3cyvm/l1M79u5tfN/LqZ/xLM/IE/eJnN/LjDuplfN/PrZn7dzK+b+XUzv27m1838uplfN/PrZn7'; - b += - 'dzK+b+XUzv27mv7Jm/qGnXmYzP+6wbubXzfy6mV838+tmft3Mr5v5dTO/bubXzfy6mV838+tmft'; - b += - '3Mr5v5r7CZf+zlNvOPvRQz/z0lNUnClDaRmW/xt1UoKCFU6QzjBmC8AwoU4MUFXlzgD1eQ3VGzK'; - b += - 'w6IHAcP6M1QyPAwvoqF0RRAqclwlA9oyIDuLAW4jgF9WQrpFAMGsxiaNBMDenIUYyEG0FOMwgra'; - b += - 'TGFYDMH4NyqOM6PiODMqjjOj4jgzKo4zo+I4MyqOM6PiODMqjjOj4jgzKo4zo6oDtE6JArROjQO'; - b += - '0TosDtE7nAK0Bb7OJ8Kz8IGU6J0ETC6ZxEh+4TOUkKNrBFEoGAYVlVXEoG1UVllVxOBstKKuqCs'; - b += - 'oqD1a0kKyqKiSr4vA2WkBWVRWQVZ6maOFYFUe60YKxKg52o4ViVbVDsYaIlECsU+NArNPiQKzT4'; - b += - '0CsAdt2iTCs/Mgp4OT5GLGDMWLPxIgdoJCtgto4yo7iKDta8FXFgXa00KuKY+1ogVf5OZIedlVx'; - b += - 'xB0t6KrioDtayFXFcXe0gKv88EgPt6o4+o4WbFVxAB4t1KriGDyVgVZDnF6McSphVqfFYVanx2F'; - b += - 'WA9bgE0FW+TGb4BRMuRCn+DxPcAqqS4hTjP2TE5xS3J9CUIiCqzaAiOGoKPQgD3bOxiArcVVNLq'; - b += - 'NYKxSEWssrLeqP4qg/WlRVVRVVVXHsHy2mqqqKqao4ApAWUVVVRVRVHAdIi6eqquKpKo4GpEVTV'; - b += - 'VXRVBXHBKqMpRpSRyKpTo0jqU6LI6lOjyOpBqxrJuKo8kNKoQ7o3yF18GmoUAestpA6GD+1NaQO'; - b += - 'RiJyE/FTVVX8VMXxiLToqaoqeio/gdRjp6qq2KmKYxNpkVNVVeRUfhCsx01VHKRIi5qqOE6RFjN'; - b += - 'V1Y6ZGuJWIqZOjSOmTosjpk6PI6YGrG8l4qXyA1rBLaipIW7xSbDg9mKMW4yTOjHifB/jbepxUh'; - b += - 'XHSNKipCoOk6TFSFUcKUmLkMrPw/X4qIrjJWnRURWHTNJioyqOmqRFRuWH4HpcVMWxk7SoqIrDJ'; - b += - '2kxURVHUKqMiBpJajuW1HYsqe1YUtuxpKaO4mio/HA6lNQxbgdj3IKCHElq+qTDlDC8XixHPPxS'; - b += - 'oiYp8vBfQnJQ1KYGaJGVKKhm1BZ7Mmv1BDkjMDRVo9yfg9EXrpOjkUgTyXViaKcwC79UpT+sAoU'; - b += - 'Yld9aTJ9vRDUNeom1KsUqWhaBWR3o1wKiapZoTt9iMDWlTNGn50KlzBSlTNHHF8oYf4qVMgtDqD'; - b += - 'fFAAww3Bw0xwAM6dgStMQADG44jiLShX2kIiQgfkgV5DLW/yjJmh8lWeejJGt7lGQ9r7pLDe0aJ'; - b += - 'qMsll6Hn8SkFBbAKK57OQZBneLdXqY59aVI99cQma4ADKVFkY5wL00MiZOXpjCok+XboLhv9nMf'; - b += - 'wXiJlmdR8NSM9n3QFH6FR8tr49cGncR+lkPw6TcaZGU90RWGP8skPkWKpgBCx4dB0WjAqagfDlo'; - b += - 'c5jjGa5gr4Ad6JPZrCEOVwCrP7izpX2tFfUDP48qNm+DK1UtRBuh5XP0O3caO2mAPdq0eWDcZlh'; - b += - 'lrMGKcE5FwMFGFo3XW7jNQsQmjZip7AZswkMwuYLsFki0L2FiB5JQFbKFAcsYCNktUaIvg00uNk'; - b += - 'yMDATdRtjbUEc5ekOwxzj4v2eOcvSTZZzi7j3VrdZKzoc5+2gkm8IPwxD1DDRp3F2m4j7OnJXuA'; - b += - 's89J9iBnz0r2MGfPSfYIZ0Ol9pgb5Pg8JLwpcVCSdyrYpuLjwbEaiRsya1HqHGePSfYCZ49L9nn'; - b += - 'OPiPZSzI9ye7zeHqi2R3w8EOa8cLC496mSIor1KwYndzsgGRPc/agZJ/j7GHJnuXsEcme42yo8F'; - b += - 'zwgoma+A5aCNrrMyalzRHOXpDsMc4+L9njnL0k2Wc4u8+WsXI2VAJO+7C+os0AF1I6sZCsiqVoV'; - b += - 'S7FxCJ0Em3jXLW9X+5uwmcgX52m0ntb8RlIj7mx5OCnWuYru9gILed1zgdtowkjXxqUbObg4phs'; - b += - 'wWiZnBzHQcYxOR6DRHJyAscbx2QrBpbk5EQKPY6pSZC6iWCTKQg5pgp472tAF4JLG+hBcJkBOhB'; - b += - 'cAtB/4DKlWMRLK37laL5qwc/HzleF4gy8ZItX4sUvXoXTxi/Gws/srlJ+yQvwL//ewALYY6XgKf'; - b += - 'z+2QMBfmCwMcjj15O6So1aHTsIALjEfG8XVU61q3VQuRBcFTRy5Satsq9VLjyF3w97GCpPDq4Mm'; - b += - 'rjyZK1yNijolTPtahNUnhTMCCZz5Ula5UKycrZdbYPKE4MrgklceaJWuSVZOdeudkHl1qAUTOTK'; - b += - 'rVrl1mTlhna1O8BPm00JWoKpwbhgWjA+mA7iqBi0cuMJfBnPl3F8aeFLM328ulnr/pqgRcu1BeO'; - b += - '03IxgvJYLgglaboo+rCg1JUpNjVLTotR0vHvZ3L4RDK/8U9vx+33lvTtL3vYdTGI3aASoF6QQsI'; - b += - '4ATQRII+BhAkwmQAYBmwgwiQBZBGwjwEQC5BCwiwCtBGhAwG4CNANg+lMB3fcAPX0MWgA0TUD7G'; - b += - 'TQOQFMFtI9B4wE0RUDdDJoAoIKAugLFi1FFi1HFi1HFi1HFi1HFi1HFi1HFi1HFi1FFi1FFi1FF'; - b += - 'i1HxYlS8GBUvRsWLUfFiVLwYFS9GxYtR8WJU4WJUuBjV8Itx9uUsxnmXsxgXXs5ivOlyFuPiy1m'; - b += - 'Mtw23vvQF+ooutWHlwWUsPE4VR1iCsyuX4LzKJbiwcgneVLkEF1cuwduiFVeUVfL2aMGFa/D+aL'; - b += - '2FS/C+aLmFK/DuaLWFC/DOaHGH6+92UHTxEJt/0OHKAuWfNHfKoX4QQWAbm93Jp94hzMAvHD5An'; - b += - 'zl8rJTHb+sRZB3+2MTvjEQosrnoYfzxk0U+F23Cn2yyKMtF2/CnkCwqcNEu/GlJFrVw0W78aU0W'; - b += - 'tXJRF/5MSRZN4SIUU8hQibKAy/ZR2Yxk2Qwu209lbcmyNi47QGXXJMuuwacGgDn8emXEZGZggda'; - b += - '0HX2UGJ2QBVNj+9NY1Q5FiOATyvywzNfKfC7LhmVZrSzLZYWwrKCVFbisJSxr0cpauKw1LGvVyl'; - b += - 'q5bEpYNkUrm8JlQVgWaGUBl80Iy2ZoZTO4rC0sa9PKEKt4qMJ468R610C9znbCKWB6NvElYRm/b'; - b += - 'zUPv9kFkHnMnAkqGHQqg36T83G1IodWld9EH4icj4sX2bSqfPHGkodFi5lXq8pPkskKZbcxx1ZV'; - b += - 'OEUh7qHsdubbqgqn0bbHsjuZe6sqDJBRD2V3Cw9X1YANtJTFwvuEk6tqwG5bymHh/cLPVTXO0kN'; - b += - '5KHy7cHVlDaTU7OEZejbKk5ChaduMiYpHoRFD25VlbszQbmWZFzO0V1nmxwztV5alYoZOVZalY4'; - b += - 'ZOV5ZlYobOVJZlY4bOVpblYobOVZaBpdMmoARDhziNZSzikFBXLWPpm09S5FcWuYy4ahmLCPSkq'; - b += - 'FBZ5DPaqmUsoi8lRa2VRWlGWrWMReRlpCioLOKPvtaQsPSZUSlqqywCzEnRNWNgR6MmOxojsKMx'; - b += - 'AjsaI7CjMQI7GiOwozECOxojsKMxAjsaI7CjMUZ2NJgdHXyIA3b1TyYpS+xqTz6Byo+v2KOfXiE'; - b += - 'gV3STXiEgr3w3EMigLU71fggZssUn3gsh3aFLeyqE4AsD8hYCf2jFDzN4rOyFGXSvT4WZIarmSp'; - b += - 'cuVpMMHr+mwkwflfjSG5VIZpAynrSB3pxoEvS2gtwHD2HdsDc8APXDDoaoa+kATwNT7G7PHwwy0'; - b += - 'Xmy5CecD+0K50P+iJCd9D6kbwgBMOl+yJ87siv8D/njSXaFAyJ9jAmgCSdE/nqTKe59sOeY9ApA'; - b += - 'aon5vq6SQ99As9EHxwx98H2E9dkluwsdadBraJS59Fs15oLe39VzQZ/lGnMxasyleh74AgIO3oI'; - b += - '9zUSnUHzoTW8D4EdkwrcBPJhYkFpyy/596JjkoGdRF8+6x2ZvO3S0MUO/fJe9RcnZ3uGPWyEY+7'; - b += - 'WA6/0QCe5oBK2FhB6rJkGtmkhQNQmqahAU37kwyQu9wN7z/MFZdsbOiDO9Gb5V4LGHfAPhzEZnK'; - b += - 'vruXRexQOAxpjwE4osEmSBPDnVm+DoB+WaRrxUhRSEOCWn8lTCs4oQ+cznG4YkIh32IQ3esOOxT'; - b += - 'NXDYW5ORelQtHHbXxOGQWWtRmITDPlVqZncy/jCbNuNSnjBm4oTTiFb+vBh7SnviDm+Gryx46C6'; - b += - 'HaGdPZg9JEq4nwv84/t5hFzMtvr+R4y9PMdnEm1Vj3hbyX00R55LXfoj1oyHWxV9yAmNdXPVxha'; - b += - 'jLwXq/WQPrfWYtrPfWXL49Zi2sd9fCOpmg5KjdCnNmrIuTYpb99EoTscI2RDq7vprxWwpNMdL5L'; - b += - 'YUWcio0Q4dhT95jaOSPWTOlxkXIx5cTiM/x/Y68uN2a4Rsgudi3FAmF9EFi+DoxaOngKxQFcbo1'; - b += - '45csIr9ek99EiOkl7yM47Nod0Usc8nFRmZdDrwGjBr0Wb6xBrtm1qBXUIlahilY0sLtLkwDHyNg'; - b += - 'tNE6Xcbs/fKGGcDuZihz2FM+zXHDEKTVy4Db5jZs8fztbw3cpg1jOMZZzEc3PJ2guwsdA4vvCNu'; - b += - 'IrmmW/YuQXk1+KGAecVeDVaumvjQj58M2KmHxHVQ3y9Zk6+eT9Aif0vB7P5BN3c6j+gE49m93Mc'; - b += - '+Q9a4ZvQzTKmxvo/NvMBY74Ek8Wt2iTX3dxIyTKGzFJJKIXfB4xlmGMZQBFKHwBdVlypzbLoTe1'; - b += - 'LrYH6T0Bnxy4zfA9gXGx06/JrxI0R6iTlw2SqMP3EQpAIkbdCbMG6hYj5mzBnLz74ITe5k3sKE6'; - b += - 'UD8fNYtEtjWf3Xf4sHW/ME2LM4AtdDn/GW8MJLBXARD7cwTKEZFyqGUAG4/986PCuY2OIvLp9oY'; - b += - 'T4xDcnsIE+8fkIG+ITn8TGbERGkyBDfOIjZDSw5zeJH949cFShvLoYyqvxIq8iXnMFYzz3ZqIdz'; - b += - 'h0n6vJEm9hjmoXXxdB/O62vNBOp4Qsfidd6PvKZpvd4cZ4NMr2Fydnl2MXbJTKxUzULxW6PNK3z'; - b += - 'ribPmBsdHho9FUdgAccYqibiY54KGZmwV8CxhhtvW1LTSLFXd0GQIp79DrugE727ZHQ+u5Fz31C'; - b += - '1VfDqa77diny7VejbTdSmT7clA7Ir9O1W+EA19O22E77d9P6Ig6u8aJd9+oQbdhb6dic7DGz07b'; - b += - 'bFt9smzqa2XY/RhzN9/HCm+HbTBwLr9lfd/qrbX3X7q25/1e2vuv1Vt7/q9lfd/qrbX3X769Vsf'; - b += - 'yVDaL0M9pcWQqtuf9Xtr7r9Vbe/6vZX3f6q2191+6tuf9Xtr7r9Vbe/6vaXZn8de7ntr2Mvxf76'; - b += - 'fyerhr0K7a9ec2MpO8NQi6v/g9re9pKyOYMBgEpWeeYKmJm11F5cNopW1sJ34dWu8uEvPctvDTU'; - b += - 'GRtnuLDqBheAuvLV6Z9nEgEbW9qIPtbMrcmYZoxxdgp3G276RZueQh27QuCcAWhUWkackRkFi/1'; - b += - 'AEo3tlWOIPW5IdpgSTRaAxbD5FxB70rQAhWTMDA20rX3r3Z43CrzpGJvBxYoE/0qigA+lO4cRgT'; - b += - 'qsCoBHht/BUSS3NYXCnq1cCnQ1CQ2cZX0/mmE9mZ9FCeluQRXL425fm7Ai3q3JmjFs7o+MSEKhh'; - b += - '046xaS9eYhQLQAkYtx0jFYHRFJZ0f/Zr11Xglp2dw5IK9A5fmB2+cDgkKw3J70Ukj4ryGuO9LKy'; - b += - '7I6G8AChXgGE7yGKsHLNwzC9aIYMDglfZuIKZFuULwNhlRYQIVOGHZtFFnscsrUIgbjGFkSU6ix'; - b += - '506cIM7PJeXNseJLDUpkmlluUwMABUs2n8uPjhdsU008KH2aVhBhm1mN7+bcO/lZM3lhx7LzTbT'; - b += - 'XG7kBXTT5cKS7q79/3E3QOinHGzd3nOpE5hQJkEnm1kmZCJkU6Awh9+4NfMPYxXWNZ7YW6I1qdK'; - b += - 'DtweX/RTnYhElCMO4KtsZYiUJg08cPBVEHyRWK2YXHQB/07WpIhp0Eq7MaIoSXHCn4XIftqfhAQ'; - b += - 'SWgTbmdk1UtgxKeyIFPjK1PNICjtBClNI4Qsp0kgDEsEWUQGyDuHfxzdE0styVoR9ZqkU3ijFmE'; - b += - 'fch5jHiG0bG5RnmBlpkXUz6NOOt0E0WPSOYpBCerz7G59+2g/pAZTfWEqV9yyjoStpiRxSkhcFQ'; - b += - 'kr843v+5PsqbJYqP7aMGI5GmtLr/XtKp5ct9EoJvWyhlwUrM0ghyZxMMcWDtmjmKCeCVIJyQjU7'; - b += - 'QTUAWDhc4W/AeBW5+o1qeqVjenkavdLlfV8Genkj0is1Ar1sXDSV9LLxRl4Netm16KUCeyOIygp'; - b += - 'apDUq4mBkaXlEyr88+n8yIU1soAm1tCIq+lVUPPf1b//AjVt0cQs7apGtavFvn/idr+TiFv8Pt3'; - b += - 'CiFoWqFs//6IW/aYhb/DfmlJZQEkf13vs73zR0XvGEV2zhFS/ilVYgL/KKnwkFksYrdi1e8Sp5x'; - b += - 'dV5JV3NK93miLzSkOCVXuSVhtF5ZXhOUSNySi1usX1lGlbE9l5G4xHhISfiIZ2uTgUPZSt46NJz'; - b += - 'z6va9HVq0/fxT/1kmk5eauBGDVqqGvz4B89dNOIWj3ILL2rRWtXiE6e+/NvaoHZzCz9qMaWqxYX'; - b += - 'vf+Z3NDZ9F7dIRS2Cqhb7T3y4Nxu3eCe3SEctZlS1+Po3//Q72nJ7hFtkohZtVS0++pMvfjIdt9'; - b += - 'jFLbJRi2uqWrz39KVT2uLZyS1yUYvZVcvo72x9ETVULKKGaBHNk0WUH/Miauis3hVrLR3FSyetL'; - b += - 'R1PaWq4WZ6My8dkLcUrn8HlM5n7M3H5pCIthYNhdRZz0F8KVkwax+njG9YEthBUhNnAkvFpj8+x'; - b += - 'qkK1aC1hSBHIpf8ve28DZNdxnQe++/feffP+7gwGwAADEv0uR9JQBCXYIgYURZG8KPEvlIrcLVa'; - b += - 'KpVKlVLWuWu2A69UMaIYVD4CRBMlYG7ZHWqwNx7A1iZAAsYFobMM2HDPxKIa90AaJRjEUw2t4Pe'; - b += - 'uFLMiCs1NryIFlWNzznXP63r5vfjCkaFvxgkO8e/rn9u0+fbr7dPf5Yfs5XVk30iqNtAZGF3ZU+'; - b += - 'EejivZre7sd0zjT7eca8SgN9rDljm4coP4HqQWxaWN3BEV9cCZTojvWf6DMRQr7mJ2/9IXKkzRF'; - b += - 'EIsX0b5hGMwkc1ghhilFIBP1B23KZJ4QtmVbA6Zg2bCU8agD6oYqjHc7YAgnsbBEMvcnPHLXqAQ'; - b += - '1NMS8EDJnDDQhFGMCINw0Kw38AQMOSxsu7+Za0c117uYmTjhHKh0g1H3Xd989NuzHBwPs0+aCvW'; - b += - 'mMfZrx7q98uFXJFgm/sHlXGccSqvvOGQ9rA/aKOrpph/gcegmK9zvp+6mfdEQL3ePwVgn4SV19h'; - b += - 'uAkL09BRDVPQqaKmD7amXw+fhxbXFFqp1SJavkNtdjvF+UgUzdwLf9KJT29JJIXJNR4vuVZ0799'; - b += - 'pvEC1Z0IqM9adtOcGLGc2/TxGUMuDTqVNnfzUR427LLH7/aV7fuuWZytVJML3i9l4dyAvThM7fH'; - b += - '+mzM95akfCLHOZPFGMYzmJU6ZtymlTy/ZT/fJx/v2eJ86xB/c8+jhno/0Wk22b+slWyEM23AsJz'; - b += - 'P6vJ4GL/U02Hl3/W1u/J1piHoMKfeexNAHmPIX/ILChZox5EKhapp6K3mLRstkTZuycZS1HrLGR'; - b += - 'zzeq71Rspb6RCuVSpOg4shErxNBK1eyT6r5+jpa3n79Hd2Lmjfc0bgKreSdjJDt5Ip8RiZIL+lQ'; - b += - '5Stc+YpMVUISFa18xZ2qKqh5padPK9YWebk/K7fpzwoqXCkPseVFuZVZGwFuecubxOj4bmlSUZn'; - b += - '/XzdJO7eW1J2CbYevPvBWw4oMvBLt9gw8FzFeqTnOV7VJlfUOvBKGmC8jXPDgyp6zlXucOehXaP'; - b += - 'skFeNDrtDpsNjpMGZKmJMskB30MgHfUb/ZbYCUF7zuXqPZI6nLLVQ3EFdO3RAf0K54TpaGMCfOY'; - b += - 'DXifPPbersS39iEIhfst6uocFjrrKlc3xCn6OBN7lGCnHwvrEW+t63TGyThatLRulXZSUe5itK1'; - b += - 'eRVNdY2uZW69VL1qfqvzBvt27SLtHdTr6ljb0mved19TKw5zwEOX9tiWjudzXnL9nAE2hRXdDOm'; - b += - '2yHJ61Wzpn35BOQY+jkqGaCMF0bCRSuPfbPVrsjObCXlnhg1ZoNyhbtb5tMpuyYJxPj/sBnZLJu'; - b += - '3hPTJn3MnHncvz0WZdOJMg6fB5BfZWXEEEOA67s0oeyZbIkFTnzxdbPQkFHA9cgWVMozyR9zF5Y'; - b += - 'l7CklfCikTU8iQpTr4pXLRsDW0pS56zNwx4rgkKdtu9M5VjTd5pcifWNbuE+p7nNZ4vTuumTxdy'; - b += - 'nAr6jD7Jacd6n6mz3yeHwhq7+WK4j6kBV+d8TO7cjq5ZnFuxBhe+f7eVgVO3ikxd5TLptQVu8Kx'; - b += - 'f7AGLjyzYj9TlM3W7sEMsq6eo3ttl+7ZgylGI7HNumBlRXk/TFnqa5ry7/pZp05j8poNSE/MYWR'; - b += - 'UDFqa0hLBinzPl5X2O7Ovrc8n5pvV5b3FuxdaPmZWLfEM9XGDi9fVwb0PecA8vcs8Vm18bIz1bk'; - b += - 'U+VD5aI7+lhzAOHF67nK1Kfs2qU+7ZixR10atd+rdymX3sZvJWLciuzNi7W2msIHr5rmrR4p0k8'; - b += - '20byohBklQ9EyluOYptRNxHgyGlk7DRSSblUwTDfDL0ZbQ158bXlha+zpVUZes5qPY2Q8xFd4te'; - b += - 'Ye9baNtq3lRp65h6XILxS05yvhsu3nOtuX0PMF3dx4w4uNFrOhUY5pYarUeqb34m3K9FF2+voTV'; - b += - '/PFIUl9G5TYeFxb19bcTnY9Zbvp7y8Xy+s1a9ar3J9vO+8b2u8VHDd+JJv9a1yvThPXbF7167eG'; - b += - '+rf27TY7txfT+faljJFf5c1teIwDjwveSz9zLS88w0wvDXhBJO63VjNeD37p5kQ+6df2uoPHqxi'; - b += - '/7TwGW9vGtIGyvBGKMxmeJeSHYTQ4NQE1YF2jvdXWDLtpckUl6RFpgM4u5FMAWeqcqaIRb8wr33'; - b += - 'swk/80T+iXezHL1RpTxuO+qdnvLQPl3qj/ikC6yxHEGTbX4Lk1RkTnDHRGVM9s5+Nbos5zM0n09'; - b += - 'o+s5mvgZsTpraPZTeHOFbCuBX0Xkpr8EYxMZl5+/iC0HuZdoRVekzSpxsQW2tkhrEU4lPRmT2v/'; - b += - 'erXf2bjlHxov5rZ5KJQBu37tv/AZOqbvjOUnepDbTjARsDN0B60CxfhsBBu6mdMbmM83OWfmPHw'; - b += - 'mKXHUN4Oqv+3Oceh/VyGNG2LhfTjqb93DCgiimgIznIMEnXspd0iRU6cyQ2GT8GxDYWtyXBYRod'; - b += - 'A4NBJvjedZX2NXf7xGa87TGXG7DXAbJk6Se9xwRPjbhdEQH6A5nIXOPVkZG9xugAuUjY7XeC/7i'; - b += - '6I8J11dkGdu2CzdAHjfHPeBdukRxT/2yyQm4gfNpuLXtiy7l449Wb1wi7/2B30v270n3jz0H/0D'; - b += - 'vpfN/pnGf0RzSGMcr8HwUOPAKuYR5f1xZDg/hFQPWXIUe5blI9hOtIlJPm8T//jK2P+kRlxP4b4'; - b += - 'Mf8wh7zkK0ilpHE+coQUyKz/Ita76RGcZ/rJL7MTXxghJ6ZcQ9dZcILhxRF1Q1Zy3zvzFt7tOM5'; - b += - '5r1d6Ymb+tALxHd/GROi/KEuk/+6v/CRhKIA0eLF6QwCG1kPrkXjcQnEONXMoyaHBHBrKoW05ZB'; - b += - 'SC7FcKRyG8XSDKgpjL4v7xLlEcvq/ieRX1kQzBvSbfLbwIBjaATrNvGk+k8bD1bige+dgpW2T6W'; - b += - 'GvaTYvXSGP/fOBRaBsAZ9PDZd/JUkmRFPezfg7wySzjsyI94QOp7AxXnMAZjgiz+U9TX6NxMwCa'; - b += - '2cPdPiWKbpwFNAd4tB3Z3q2xMNVBfKA2wU5Ygpe7A1SjvnFAbdx9s1g/DaeYWJVheNYGi0IMCuF'; - b += - 'iAOCk6X/Z1CbSeha9TJMMS0zBQd044Tet7+22UK8nux1mi+ZErOZvqosJl48S3idMC9oaeycm08'; - b += - 'Fs+0R3Iw+B6ZEXx7nzN5U6X91jS13HWcVOKaAOCmgRBWx8Im0Nu06zkzw7a4SNmw3GyRDfLgM70'; - b += - 'bYZEkJ/fdwkRYY1CKJJf4OEeJ5xnMHZMJD6ZBDEJmVnleRu45kOC83lYzEUyiLO9rC31iN7tFvL'; - b += - 'Qr5LwYx2mGcTop4fJBqmEiyp+OhsIIkpxieKAbl4L2WPoIZCImjDy2nf3pxp/9sgjIM06CaIUJk'; - b += - 'wUlolJiZpBJQIY2AtwqibAUsYfSAM2kOY/ifSeokw2nn2Dg3x9rjpmHqJMNbOUCKMNo9LqMytkz'; - b += - 'Bqr5MwWisRBq8qM7zWEHDUAscscNwCsxY4YYFTFjjNAO2RsGn6zDb/LlHbgtkMf0TdPhuPL2jou'; - b += - '1zZMHlF5Q/gMypMPmvdigYSkTuIC/hPsi+yPAwKk1dDx+0kBNgq2fy35yvjmjPMvTfKGyICt8QS'; - b += - 'EFKeCFEhPq8CfJ8GReSK1Zh2qsHa+E41JE1+WZGc3sCb8smKyhmcBQo0CkipIgerJ3OmCg2u+Y9'; - b += - '9oeK2Yd6K6XGvqks8dq2J/eriX0m7p512V8SDeRpm//bEvx+CY2V2SSiuvAU4aoEZCxyxwGELHL'; - b += - 'LAtAVueQrctMANCyxZ4LoFrlngqgUWLXDFApctcMkCCxa4aAHxtG7C3A375Mr/pdHwGLWaRnYoR'; - b += - '1MY1TS/AFNwKEi4mgZmIzvIQlbVyoaeYFlRSM7eLj/kJlRYGkTQkHaXKRt00bBkFQj4eonJNHp6'; - b += - 'VIinQrWdXqG/pZQKG5CxVZCQDC4mfI4oeW+1g4GvDlehaklbLD6ZvMJvBqV3+Ya3XNmckH0n/na'; - b += - 'lcR34FDMfqbBR4xejdIH1TP1VkSoDW9qCV5eP0MWeOukb/nKk8qeddLcsGNXhr5bdS+e/SNdutr'; - b += - 'HJJ3yWvikQHWezr82Xxrq4lEYR1NPT7ES3PNeJF+Sq+vVyk2hV2QvVkVF/KQSKRv3F6r4JE+yzP'; - b += - 'k5H/RuacLW6z4SSdFWTbmrStSLpmibd0qTrRdJ1TZqOJGmpSFrSpEOadKNIuqFJhzXpZpF0U5OO'; - b += - 'aNKtIumWJs1o0nQtT5quSdJRTTpUJB3SpGOadLhIOqxJxzXpSJF0RJPmtcnTRTWmtRrnNelQkXR'; - b += - 'Iky5o0uEi6bAmXdSkI0XSEU1a0KSZImlGky5p0tEi6agmXdakY0XSMU26oknHi6TjmrSoSbNF0q'; - b += - 'wmXdWkE0XSCU26pkmniqRTmnRdk04XSafBUcXCUTGx8w0BGMhIyZ6d1XL+aJ/lByURmWmXicxVz'; - b += - 'Rzlmav7LMu47pJpR8QzvL3GcAYojSGZtaOeUe3OHpFMOovLol/h8xIgu9qtcX9UcdRMXVYVVZSF'; - b += - 'arfJHV8Fy0y0Ue22mXyq3Q5TWBUKHKP+q1Vszkb9c1X2j1mRcStInasKeaaDQsHpRiHydJOMg3S'; - b += - 'zDJV0SEZTukUGXLpVxmQ6LMM23SYjO73L6PBPN7jrJm3+7hYviNlrr/3ll35w4gxtYijfWWJOhs'; - b += - '9METP68185QJF3n5li54lTcGe5AUdC20/i9EYnGLz9pR/G23cRA81vGs69/WQ6gNwbJDNPOdvgn'; - b += - '3n4DL307dc+/01vgjJvt5n7kXlAMvMkNEx7JskMuy4HS5kTZO6XzDwtbYUWDWee/We/+WvVUuYO'; - b += - 'MieSmSeqLcR0S2YYhymX3EbmjmTmqWsIbpU486Gf/IPPlUtuIXNbMvNkthn+mTgzLMyEpcxNZG5'; - b += - 'JZp7eNkFljzP/ypf+8+Vy5j5kbkpmnvBg1UUyw0xNUMpcR+Y+ycxTIMysSOY/+dyhhTKe+VSvLp'; + getBase64Code(str.charCodeAt(i + 3)); + result[j] = buffer >> 16; + result[j + 1] = (buffer >> 8) & 0xff; + result[j + 2] = buffer & 0xff; + } + return result.subarray(0, result.length - missingOctets); +} + +let wasm; + +const heap = new Array(128).fill(undefined); + +heap.push(undefined, null, true, false); + +function getObject(idx) { + return heap[idx]; +} + +let heap_next = heap.length; + +function dropObject(idx) { + if (idx < 132) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} + +const cachedTextDecoder = + typeof TextDecoder !== 'undefined' + ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) + : { + decode: () => { + throw Error('TextDecoder not available'); + }, + }; + +if (typeof TextDecoder !== 'undefined') { + cachedTextDecoder.decode(); +} + +let cachedUint8Memory0 = null; + +function getUint8Memory0() { + if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} + +function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + +let WASM_VECTOR_LEN = 0; + +const cachedTextEncoder = + typeof TextEncoder !== 'undefined' + ? new TextEncoder('utf-8') + : { + encode: () => { + throw Error('TextEncoder not available'); + }, + }; + +const encodeString = + typeof cachedTextEncoder.encodeInto === 'function' + ? function (arg, view) { + return cachedTextEncoder.encodeInto(arg, view); + } + : function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length, + }; + }; + +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length) >>> 0; + getUint8Memory0() + .subarray(ptr, ptr + buf.length) + .set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len) >>> 0; + + const mem = getUint8Memory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7f) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, (len = offset + arg.length * 3)) >>> 0; + const view = getUint8Memory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + } + + WASM_VECTOR_LEN = offset; + return ptr; +} + +function isLikeNone(x) { + return x === undefined || x === null; +} + +let cachedInt32Memory0 = null; + +function getInt32Memory0() { + if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} + +let cachedFloat64Memory0 = null; + +function getFloat64Memory0() { + if (cachedFloat64Memory0 === null || cachedFloat64Memory0.byteLength === 0) { + cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer); + } + return cachedFloat64Memory0; +} + +function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for (let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; +} +/** + * @private + *Initialize function for the wasm library + */ +export function initialize() { + wasm.initialize(); +} + +/** + * @private + *Encrypts the data to the public key and identity. All inputs are hex encoded strings. + * @param {string} public_key + * @param {string} message + * @param {string} identity + * @returns {string} + */ +export function encrypt(public_key, message, identity) { + let deferred5_0; + let deferred5_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0( + public_key, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0( + message, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0( + identity, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len2 = WASM_VECTOR_LEN; + wasm.encrypt(retptr, ptr0, len0, ptr1, len1, ptr2, len2); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr4 = r0; + var len4 = r1; + if (r3) { + ptr4 = 0; + len4 = 0; + throw takeObject(r2); + } + deferred5_0 = ptr4; + deferred5_1 = len4; + return getStringFromWasm0(ptr4, len4); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred5_0, deferred5_1); + } +} + +/** + * @private + *Verifies the decryption shares are valid and decrypts the data. + * @param {string} public_key + * @param {string} identity + * @param {string} ciphertext + * @param {any} shares + * @returns {string} + */ +export function verify_and_decrypt_with_signature_shares( + public_key, + identity, + ciphertext, + shares +) { + let deferred5_0; + let deferred5_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0( + public_key, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0( + identity, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0( + ciphertext, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len2 = WASM_VECTOR_LEN; + wasm.verify_and_decrypt_with_signature_shares( + retptr, + ptr0, + len0, + ptr1, + len1, + ptr2, + len2, + addHeapObject(shares) + ); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr4 = r0; + var len4 = r1; + if (r3) { + ptr4 = 0; + len4 = 0; + throw takeObject(r2); + } + deferred5_0 = ptr4; + deferred5_1 = len4; + return getStringFromWasm0(ptr4, len4); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred5_0, deferred5_1); + } +} + +/** + * @private + *Decrypts the data with signature shares. + * @param {string} ciphertext + * @param {any} shares + * @returns {string} + */ +export function decrypt_with_signature_shares(ciphertext, shares) { + let deferred3_0; + let deferred3_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0( + ciphertext, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len0 = WASM_VECTOR_LEN; + wasm.decrypt_with_signature_shares( + retptr, + ptr0, + len0, + addHeapObject(shares) + ); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr2 = r0; + var len2 = r1; + if (r3) { + ptr2 = 0; + len2 = 0; + throw takeObject(r2); + } + deferred3_0 = ptr2; + deferred3_1 = len2; + return getStringFromWasm0(ptr2, len2); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred3_0, deferred3_1); + } +} + +/** + * @private + *Combines the signature shares into a single signature. + * @param {any} shares + * @returns {string} + */ +export function combine_signature_shares(shares) { + let deferred2_0; + let deferred2_1; + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.combine_signature_shares(retptr, addHeapObject(shares)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + var ptr1 = r0; + var len1 = r1; + if (r3) { + ptr1 = 0; + len1 = 0; + throw takeObject(r2); + } + deferred2_0 = ptr1; + deferred2_1 = len1; + return getStringFromWasm0(ptr1, len1); + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + wasm.__wbindgen_free(deferred2_0, deferred2_1); + } +} + +/** + * @private + *Verifies the signature. + * @param {string} public_key + * @param {string} message + * @param {string} signature + */ +export function verify_signature(public_key, message, signature) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0( + public_key, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0( + message, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0( + signature, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len2 = WASM_VECTOR_LEN; + wasm.verify_signature(retptr, ptr0, len0, ptr1, len1, ptr2, len2); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } +} + +function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + wasm.__wbindgen_exn_store(addHeapObject(e)); + } +} + +async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn( + '`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n', + e + ); + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + } else { + return instance; + } + } +} + +function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_object_drop_ref = function (arg0) { + takeObject(arg0); + }; + imports.wbg.__wbindgen_string_new = function (arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_string_get = function (arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof obj === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) + ? 0 + : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_number_get = function (arg0, arg1) { + const obj = getObject(arg1); + const ret = typeof obj === 'number' ? obj : undefined; + getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret; + getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret); + }; + imports.wbg.__wbindgen_is_object = function (arg0) { + const val = getObject(arg0); + const ret = typeof val === 'object' && val !== null; + return ret; + }; + imports.wbg.__wbindgen_jsval_loose_eq = function (arg0, arg1) { + const ret = getObject(arg0) == getObject(arg1); + return ret; + }; + imports.wbg.__wbindgen_boolean_get = function (arg0) { + const v = getObject(arg0); + const ret = typeof v === 'boolean' ? (v ? 1 : 0) : 2; + return ret; + }; + imports.wbg.__wbindgen_error_new = function (arg0, arg1) { + const ret = new Error(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_abda76e883ba8a5f = function () { + const ret = new Error(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_stack_658279fe44541cf6 = function (arg0, arg1) { + const ret = getObject(arg1).stack; + const ptr1 = passStringToWasm0( + ret, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbg_error_f851667af71bcfc6 = function (arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1); + } + }; + imports.wbg.__wbg_crypto_c48a774b022d20ac = function (arg0) { + const ret = getObject(arg0).crypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_process_298734cf255a885d = function (arg0) { + const ret = getObject(arg0).process; + return addHeapObject(ret); + }; + imports.wbg.__wbg_versions_e2e78e134e3e5d01 = function (arg0) { + const ret = getObject(arg0).versions; + return addHeapObject(ret); + }; + imports.wbg.__wbg_node_1cd7a5d853dbea79 = function (arg0) { + const ret = getObject(arg0).node; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_string = function (arg0) { + const ret = typeof getObject(arg0) === 'string'; + return ret; + }; + imports.wbg.__wbg_require_8f08ceecec0f4fee = function () { + return handleError(function () { + const ret = module.require; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_msCrypto_bcb970640f50a1e8 = function (arg0) { + const ret = getObject(arg0).msCrypto; + return addHeapObject(ret); + }; + imports.wbg.__wbg_getRandomValues_37fa2ca9e4e07fab = function () { + return handleError(function (arg0, arg1) { + getObject(arg0).getRandomValues(getObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_randomFillSync_dc1e9a60c158336d = function () { + return handleError(function (arg0, arg1) { + getObject(arg0).randomFillSync(takeObject(arg1)); + }, arguments); + }; + imports.wbg.__wbg_newnoargs_c9e6043b8ad84109 = function (arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_next_f4bc0e96ea67da68 = function (arg0) { + const ret = getObject(arg0).next; + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_is_function = function (arg0) { + const ret = typeof getObject(arg0) === 'function'; + return ret; + }; + imports.wbg.__wbg_value_2f4ef2036bfad28e = function (arg0) { + const ret = getObject(arg0).value; + return addHeapObject(ret); + }; + imports.wbg.__wbg_iterator_7c7e58f62eb84700 = function () { + const ret = Symbol.iterator; + return addHeapObject(ret); + }; + imports.wbg.__wbg_self_742dd6eab3e9211e = function () { + return handleError(function () { + const ret = self.self; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_window_c409e731db53a0e2 = function () { + return handleError(function () { + const ret = window.window; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_globalThis_b70c095388441f2d = function () { + return handleError(function () { + const ret = globalThis.globalThis; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_global_1c72617491ed7194 = function () { + return handleError(function () { + const ret = global.global; + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_is_undefined = function (arg0) { + const ret = getObject(arg0) === undefined; + return ret; + }; + imports.wbg.__wbg_get_7303ed2ef026b2f5 = function (arg0, arg1) { + const ret = getObject(arg0)[arg1 >>> 0]; + return addHeapObject(ret); + }; + imports.wbg.__wbg_isArray_04e59fb73f78ab5b = function (arg0) { + const ret = Array.isArray(getObject(arg0)); + return ret; + }; + imports.wbg.__wbg_length_820c786973abdd8a = function (arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_instanceof_ArrayBuffer_ef2632aa0d4bfff8 = function (arg0) { + let result; + try { + result = getObject(arg0) instanceof ArrayBuffer; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_call_557a2f2deacc4912 = function () { + return handleError(function (arg0, arg1) { + const ret = getObject(arg0).call(getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_call_587b30eea3e09332 = function () { + return handleError(function (arg0, arg1, arg2) { + const ret = getObject(arg0).call(getObject(arg1), getObject(arg2)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_next_ec061e48a0e72a96 = function () { + return handleError(function (arg0) { + const ret = getObject(arg0).next(); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbg_done_b6abb27d42b63867 = function (arg0) { + const ret = getObject(arg0).done; + return ret; + }; + imports.wbg.__wbg_buffer_55ba7a6b1b92e2ac = function (arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }; + imports.wbg.__wbg_newwithbyteoffsetandlength_88d1d8be5df94b9b = function ( + arg0, + arg1, + arg2 + ) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_new_09938a7d020f049b = function (arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }; + imports.wbg.__wbg_instanceof_Uint8Array_1349640af2da2e88 = function (arg0) { + let result; + try { + result = getObject(arg0) instanceof Uint8Array; + } catch { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_newwithlength_89eeca401d8918c2 = function (arg0) { + const ret = new Uint8Array(arg0 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_subarray_d82be056deb4ad27 = function (arg0, arg1, arg2) { + const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_length_0aab7ffd65ad19ed = function (arg0) { + const ret = getObject(arg0).length; + return ret; + }; + imports.wbg.__wbg_set_3698e3ca519b3c3c = function (arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }; + imports.wbg.__wbindgen_object_clone_ref = function (arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; + imports.wbg.__wbg_get_f53c921291c381bd = function () { + return handleError(function (arg0, arg1) { + const ret = Reflect.get(getObject(arg0), getObject(arg1)); + return addHeapObject(ret); + }, arguments); + }; + imports.wbg.__wbindgen_debug_string = function (arg0, arg1) { + const ret = debugString(getObject(arg1)); + const ptr1 = passStringToWasm0( + ret, + wasm.__wbindgen_malloc, + wasm.__wbindgen_realloc + ); + const len1 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len1; + getInt32Memory0()[arg0 / 4 + 0] = ptr1; + }; + imports.wbg.__wbindgen_throw = function (arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbindgen_memory = function () { + const ret = wasm.memory; + return addHeapObject(ret); + }; + + return imports; +} + +function __wbg_init_memory(imports, maybe_memory) {} + +function __wbg_finalize_init(instance, module) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedFloat64Memory0 = null; + cachedInt32Memory0 = null; + cachedUint8Memory0 = null; + + return wasm; +} + +function initSync(module) { + if (wasm !== undefined) return wasm; + + const imports = __wbg_get_imports(); + + __wbg_init_memory(imports); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return __wbg_finalize_init(instance, module); +} + +async function __wbg_init(input) { + if (wasm !== undefined) return wasm; + const imports = __wbg_get_imports(); + + __wbg_init_memory(imports); + + const { instance, module } = await __wbg_load(await input, imports); + + return __wbg_finalize_init(instance, module); +} + +export { initSync }; +export default __wbg_init; + +export async function initWasmBlsSdk() { + var b = ''; + b += - 'l5UhSXtBQZSOSRmp5LBPkKtlXPJDA8YYwuSn5eHD+DjXUXZB0pPYs0j6Lk723VwHQpC+ujLY/La'; + 'eNrsvQt0VUd2IHrP794r6Uq6AgECCVTnILCwsa3vlWRjmcv/50+77ba7290gIclY0GAE/nSGC0p'; b += - 'FuAXY2+EmhyzvcEyvVHPVy/bD00VjUycU1DM1NtnEVWwFPXMGXgisrOHH375BinhlmpPs7yKchY'; + 'anWheSJ7eekyGzjAZ0qEDSXC3kjATukPe0AmTKB2yoqzHS5Q8sp7eWkyG94bMaCakH2uFSb/9qV'; b += - '54x102cz1vOM0LvtLbFWlFjbJ861AnCKQ8Vxj9URdWqEOq9So6hUI2RcpUZRqUZFictqVJodA3b'; + 'On7j1Hum4b3OmOkF2n9t51Prdq165du3btivUc+YIRi8WMPzOW7zFPnDBOYBrbY53wU8AYnMT22'; b += - 'OzTOi+N3uWm/dSXcf9pph4eRbwQqbdbFeurl78pCvpjzOG79z0MOeMNmbNsSSB7X+m96z4WPE4U'; + 'CcI7ZzgawzQ8RMndCRg7BPqruM+GUCkH8ebYnsSJ/ybSjhz/PjxAAtlrePqSUBInlDlLXqEg0+i'; b += - 'xlcRYnP1fLBvkxniXy3Jv9w4lsPza9FY0iJMHhIE3HzwybygdaYvWAk7phdu6rv40zisfZeEe4F'; + 'zzku33yMwWMSzDGIF/Pvy1utd3vfWLZ797u9bx7se6P/4O5DvYP9e4/u7hs69Nbuof6BmIMFFmk'; b += - 'xYTWD0STOm0/3SrsjXbTiDMTzwDRckwAzMcv/zfp5W92EkbHGTszR4Zb6Q4DMjOf+23eauRVkKc'; + 'FjhwdevPgG7sP9r8bi81Ce6P/aMwopB18+wu9/UMBrVqjvXlEvjdmI2mpRho88k7Pgd0HDh060r'; b += - 'qlaT2dpLbEPBC7gByYk4JSaSChYVXNp4P0swpRs/DVoVa36kkg1yMWBYfaaVu17Owglqp5T+5DA'; + '+7/zC/crFG7z106EB/z0F6rl343P6hoUNDwafS76RP393T29fTkenv7Gzt7ensaR+IJbFAHRc4c'; b += - 'ShrvoM4++YCosKAIFxG4Fd5Rey2/gszQIqi8lv1qzLZ1IqbEBVeTbtY+UK0zRDbmAlWrSBv1Z2B'; + 'rRn7/7dmfbOlo6ugf62tva25r0DGf5sWYSfPNDZ3pzJdPQMdDT37h3YK4ss5yJ7h7741tFDu/e2'; b += - 'Dci3POpydS+prHLDcBKOB4LeWPehCBzM5f4+JTQtyzYCnB1u99dhj6QYhLvhR3q/TSv/N93ApI1'; + 'dfZ0dLT1NrW09LU09ezlr1zBZd4aOrS3/8iR3S1dnR2tbXsHWtrbezo72/u4UD0Xeqd/6Mibhw4'; b += - 'zzL26cwmY4xDyT/BJes02yoAsEv+mJiI3iZCCt4KXuVGkCkT51zVpqC03PjvZRCIxvLeUw7LE5D'; + 'e2d3f0t/R2d/c2tbf2t/e19TMpWrlrzrU17+7eW9fR097X2d7a19vf09HV7hKoKq5lfK+Y6j/8N'; b += - 'Z08yRTe4ytUxeJDEg+3uycMb4xdw7mrC8eR3q7jJ/XKcBkQL9OEsETpRIvpB2qc8M6xUo6rXB/G'; + 'tvDvXv7hxo6tzb37+3f2/TQNtAfz9Xi/yOLxzZyD+pd29vV0dTpq1poL2pp7m/kx+1mktBQ7zUc'; b += - 'bVwbnGVTVystUrWACO8PQIuUDLZokicK0C4Dq2go9QGMjZhqkUQLkhnydLpEgFJzSPJ0K9tFE9E'; + '7Dv0Bc+1XPg7f4ju1s7Bnpa9vZ09bf1N0G2l+tolXwvldzy5oEDn/ziwb27+/Y293f1ZJr2Nrd3'; b += - 'feDY0CzxHjOcfy063IYjliLOd95cFIi9eD4Fp2UZK71eWIpq42NWA6YJse2cF9PAZwQhe8lNI++'; + 'trZm+risUM128FDP0BtHdu/t6s80tbX2dvb0dbY1N3Vx6/r10P/e0d0Dbb17m/q7Mv09mY6+noz'; b += - '6vaFiiVCv1WpFwiWahtmMoYe5v1x9zuyg6Y4B9OsP4oZJ2Cl6g7aO7+ckyDoUZfynCivZ1IF5SM'; + '8wsX59TDw9sG9R6FimSgb9h386t0tA239Ay1NrZnegZ6+ls7+vPZ482j/UM9RaP6OvR397Z0DmZ'; b += - 'Ql6aAPaA6dJXA/2qV/6qZ7/qOV+1jaNv+/rtQLAUMBqZNwxeYty7SKuwfih6ekWcOeSJsVeh+oE'; + 'b+3s62jqYmri35HUf6Dwzs7mhr6euDr+ht7e9qaW6W9SkZ5F34lEPvAoM0dfV3tDb39ba39jT1t'; b += - '8ay55UkWYPGuNLiwtMXlWLHnW5EE1jhtcrKj+4vNq+kXwUu2h9RpovdZD67WC1pcVBsMxKw6Alt'; + '3AZV9bmgUO9PQde3gef29vRtLepq721s7OtrXmgpS/vWVwO2r+jJdPc0dbV3N/X0dzVxmWW5P/u'; b += - 'fotZnkDu+naQK+UARhmqahszGV0zsh01wd0jO5GZkG3ogx01L1640cZz7PFYQupVcqH0l8Rms/3'; + 'tw/29Q+8ebBfctky1W67O1qbWvv7WvoHmloyvS0D7VyxkkfePJIdGur54u6mtv72roHejtaBjs6'; b += - 'BVIz22pokQgviCiztYMQPjaMA/vcWP1YsXD1OJL5+pLcQPVibvN7BIyEhwSw3RJPjaechGX8cHL'; + 'e3vZefor8jgP9B984um93Z0vT3o7OTFdHK3S0vs4eLvO4fNBB6GAH9/YfGthNT9zw9sAASAao8E'; b += - 'eUu5354ZHmMF+seyBUmgyl4hSGRXko/FJobRhgqVzcMSM8mSLeJxQ/389GQLRE2Z/3mMmT85GZv'; + 'xrS09PU19b78DAQGced+/tOXBgd3t7R08L/PL+nr174Se25LU7l+js6G1t6u/vae1v6mptbYlZh'; b += - 'mk4BST0aOlpz6HwgPwsM21Y3YkmeirNKgKZqLK8qETV1MTbwumz7IRUl9VFLfY9V6lo+SOmFy6/'; + 'ZwBnJ1p7oc+2dTf0dLTlcl7S9+hg/27ezM9vb0tHX1tLb2Z1s5MR97v6+VvbW/v7enoyfQ293a1'; b += - 'n6E9Tj9qvdev5+IGr5pv6BUNtWfwbS7nnjILLTIKYSabT8Sc+nnb3Z/0AYBClVhCoqeyHUgyM56'; + '9Lf4nbpZMeq7bx7d1/vFo/ATB470w4/t8+uls6+5r7MXeu9AV1tvVy9/nyaXmrq6WkFe9DW1NA0'; b += - 'WFiQJ4eTlvoiTaxxh3pOyGhbqDldCPN3fW5bmw8mMr0pAiPCAajtIaeAjkS9xqzvAzt/KAvsTcN'; + '0tXXJyl0bqrhX3jx4tJPbA+RBF/TFHqiYnhaQaHxLQ963+K/vgr7d09YE39DV3Lm3JY+tj7zd20'; b += - 'xsTxaobRFtryI1u+b8vHsAmoLPZsThPX3vFx5L8OPE9PT4MWuJbTMaPmXh+q/23cQFyV4G52jpr'; + 'MP7Ots6e1vas/09fe2Afd38EfmN3BTT09vx8BAX6a9p6+5q4CV4Cfvbs10dfa37u1pb+7qbd3bu'; b += - 'QI7uGmjRRp0WuE6ArXHtAyG/aBLGcFNMspipqQ4hRmmLFeabFOG09QWsEPUwd/mmB4y/FyeUqH6'; + 'jdmqnrOH2n2HsBKx6GmkBsH2lv3Qq9p6Wre29rZ3NvHza0zM3zh22/48oxkRVqjHt03dOhdRldp'; b += - 'pihUQMrZBxY9lk5K8yBfkrTUE+piAfuvuxqPA3cWshD0xBTKkgC6w5sboehnfcPuBIeiRSfPLMp'; + '6C/0f+HQ0BehZ/y+fc0247ZtGqZhxE3TjtsJsyQBkG2UGSXlgIxD3oklzJhlwv+WGaeyJpDgBoA'; b += - 'P3TrfDFaLQXHD83tMbnijy90sf3gh6o0eN7WedYie9JHfp8fvuEWBCDTbDMe7IVWfYpUgxgkRNz'; + 'Rb1oG/GfEDdN0bKMiZhgxx4xVxUpiJSUl5oLSWDwWM834QtOsgIzlGDETrjHDjCUTcSNhmgkzHo'; b += - 'Ks18qdHpXyZ9boa/2qRPbPXLOu+HRDJd9kXPlNiMZDSYnLbsfAepxYpQVUWoijg8XaWECGUmw3s'; + 'N7jGrDSGMZ+BR4Wynck4gvApwVixv4DMOwrAQ83TKS8P4YFoKrZdjwKfGEY9qANMw4fB/8g69OJ'; b += - 'ooRjKsqTY+UjfLU9JVRnajGVmAR1E24LyivSNJzdCWEe7mFeU58fzyyuKyU9rGUCQjRoKQgoVjT'; + 'Kx4HG7Ef/B5kIVvNAhcbMM1DkUNLA0k+MmGHUsYJYZjGPAzDMuEt1lOiVlCX+OYibgD/8WtmAMP'; b += - 'AR/kXfyRG+CfRUE3ri5acmHVFjerLfoWnxBur72vax246aC+g41IXRisB5DZx3Uy4jcFEDF91si'; + 'Tpj8llL4KrihEp9jw21QQaYDv96ht1BlJeJxm1+En2c7QHb4V0P1leOvipUlSpcsrY0ZSIuZcbj'; b += - 'whc0sAlN9s1BK5o4IqbbQmBqxq46ma7icB1DVx3s03/MQVuaOCGm+0wUm5pAM882yE3ZQYBxCBw'; + 'Zwjp0YvBAQMG3xeC1NvwKxzSpIsrw91v4gwFrwX1wQwJvxu+KOQ5+FNYpoOCdMRtfC/9iNjzAsG'; b += - 'xA0cQ+CIBo66gVkEjmrguBs4hcBxDZxwA3MInNDAaTdwDoHTGjjrBuYROKuBV93ABQRe1cACAuc'; + '0bcHAfgDEs6MB9Dv3MWKwSE7gBylhQBP7F5D+D6oh+qW3HkljIqEylUo6dMN4y3oc//IqqeAkod'; b += - '1cN5NuYzARQ1cdLMtInBJA5fcbNcQuKKBK262JQSuauCqm+0mAtc1cN3NNv01IF4DN9xsh5FySw'; + '9nh4avws75ipuLMbtCebx588+ibPQfe/LH+2H+3E/0HST+I/ZnRCOP7mwNf3A1SAhiasLuxz+4+'; b += - 'O3/tjJNoOUQ1/TznKzHUPgiKYccbPNInBUA0fdbKcQOK6B4262OQROaOCEm+0cAqc1cNrNNo/AW'; + '8uYbB3uOvg3D8pF9PUP9R2L/u7F87gL/q1mz99AXgNH7w7S/MdPyRYoU+10jr2OABD20N/YP5gI'; b += - 'Q2cdbO96qasvvCVFtZ8sU6x1vDq6SysvDaOQwh8r4qh4lLYXVh9W75l5LqcCQsrb1dWXFjBQwQu'; + 'NOdTP2G9Y9Rq2p69vNygCrCi9dQiEUf9Q7NftSq3IwBCoD//dylPH3kMV8RC8+H+xS/4KWDFrlF'; b += - 'O/mBVuU7nUmJtaNt8gh9vfHDW/yqqDPO+nvT6kjF2rlQIw47IapMO7dxVp7selY5sap6h4VdmZJ'; + '00vmv/B+OnjZ+1f8P+/6xfNb5mfte+aX3XnrK/a/+lfdP+P+1TkPsz+2eMn7T+CnL/jf6+Drmfs'; b += - 'SoS8aivZGqmxahhNmvFx1sdcqiyqLxqYG+61itEaEm+u7reVVtfTard3G+kRhYabmWpCIHesTVJ'; + 'n8f7v2u/Rf2n9v/w8K7fwugb9t/bXzmsv331kXjl00kf9P+W4thhH7Xvg7X37N/y/obeMk/h///'; b += - '7VZqitWhXn3TrXa79Upc4GYmtWKLq2zPoEZM06vTZwPJWvrpVqGDvGQrhSlbXrVJsqNer26LlNE'; + 'q3XeeN/8qsEQ/t22fx1yP2v9P5D/aes71u9b36S/37GuWL9t/Z75Letb1m9YYzbf+3XTf/qENW7'; b += - '3OVs/W2r7dZaknou69pbsXW37yVi6xJoTWrVAPnBt/9ZCiiDlYTtfjA/HfUrPk32Kz5N6VZaxYp'; + '/pvW35jeMn7J/1v59oP+O+UfwpL+1xwD+OeMcfM//bUzYP2deN//Q/hfmn5hfMf6l+Qf2/2b9lP'; b += - 'FCQk/UYmjr/dpi23IaVGazrgxaGCKbO082lM0uvrR0iieKKRYhv9nGwIwrzBF9Zq8Opf/84aXZF'; + '2L1h9Y/8L+S+s/mJPmrxgXzP9knDbOm3fh3gvWVeO2ccf8Ofvv7El42p+aF+3T5vvwk0/bf239n'; b += - 'GysICPTna9C6bYkpDSWu89vRSrtt3NLWUi3Ir853Mmv/VNwlH7bluPxtVYQVMbebjqtaUVqSJhQ'; + 'fVd62fguUCz371i/Ir5DftbxlfMP7VLx39r0TX79hfNZ44fP7Eylj2b3O+tb4gJI3vGHGw0Y+5P'; b += - 'KmNjJ2Gmmk350KugZ23oy2VhwFzFhcTr2OlqogG6tcFqNelpeUt5Ovfxp1V83XM9fkX628adPon'; + 'GJA/TXnInPIzY37mpJ8Z9TMjfmbYz9w3ZOaen7nrZ2aMQa+Xs3d83G0/c8vPTPuZm35mys/c8DO'; b += - 'YZ8FzSExgBUBiuqQhi5E7Wwj5HWrbI6f/XmD6RVSlRdxDfKZUGueNbHjebXN/l3y17E0Baq2zbR'; + 'Tfua6n5nwM9dkptG8aoj12bPOoNcD6Kvw7r2iN/064KatQW+TQOggQDP2oJdFKDs+8u1Y9n9870'; b += - 'CHtDwB1QZzz76EQa7U3rvEmpGgI7qc0QOBkaRYYmwMzrDkIg8aXugMT26V1pyLZWIzYrmray4Fm'; + 'g2lX5OZPGPil+FAhtEj9iUXwCeEx/0NosNYm+6W2yGPzM7HRuEvOnX588bkOf6dP8V5rlK3TOY5'; b += - '+kZqa6CYqvFyXK23e2/G5GbZUdRNDSLkfkf1uZLxSZHOy53W1UixSyCaxeA0m0irfZq34TQgXy0'; + '1p1/zXmuWLdX8A81637bzDP1euexTzXsPuLmOdKdr+Kea5n95cwz1XtnsM81nYfQl9DiCvc/WXM'; b += - 'Um5Cer/BLqyNV3ax5TDPQTOlKKx7tSWwpsGVHNWzgDbrmR8UqRVPPy61rzmlg0j52ae1zzjhUAw'; + 'c5275zHP1e5ewDzXvPsrmOfKd38V81z/7q9hnpvAvYh5bgX3fcxzQ7hfxzy3hfsNzHNzuOOQxxZ'; b += - 'OlWT82r7AnCePYlqOx4E2mLxg/Uk5BzIIOGUDDRreHIciCrSmtgJsfLE9Ma+ioRg+M1+A7o175q'; + 'xfx0bZRga4DUgYqP0iz6q5bPmoPeKQAgbZYwaBaDoRtkkXhOv5JNeAWQ/VP4r8GfIhlgPTzqZGP'; b += - 'sLnbNFLB9QaqO+kEYjfQdAOJGxh0A0NuYJsN6HJVFW8U/dKkmFEglcjzsbC/SJhbfOWNLTXPbZA'; + 'Q+3Q4csb4d+lgOMKOA+YzETBBmBDCflZhrhBkGzOsSc5Uw96Gxt0jMFcLcA8xWiblMmLuA2SYxl'; b += - 'lvma5QU23QU23QU23QU23QU23QU23Qc3VG6Qk2XqcRk38eKuSV2WNZslwyqovpRvhjqENu8zDfA'; + 'wgzA5jtEjNOmDuA2SExFwlzGzA7JeYCYW4BZpfEnENMuzkdx/SsmfOsDeKnjnlpSlOUllNaQWkp'; b += - 'HQ3UaPcLJ7l9mY3f396abMM/TvmeHu3URIt6TDtxPoT3Q3CwkbpqnukEFXZ8HT3S4PUEAp1aUNE'; + 'pWWUOpQmKS2hNEFpfEP9T2549qc8e8Ov/R//8L3KLwlrw/fgX+WXjnlWN75pl7AB8/d/UvYlkfZ'; b += - '+Z1eiQQ+w+TGd+0R/0hojF6bMO1w6ifUP3oMUjYvbu7lcY/BgqmrJjgVgBEJ6ztC5GGiOWz+ifO'; + 'JUEiMUoGY2En0P/mfgJ6Kou8A+j987xt/Z3xJlEfRtwP93J3f+7fw6ooo+jagn/3a730z/iVRGk'; b += - '7E9HVFnNNxSc2p++hcLpPSfTDfRCa98ElO4ApC1K38vH9VUT7zMbaOzuY5DmQKRA7ihBvPGhoEe'; + 'XfCvR//7VTZ+D+sij6FqCP/Mu/+iW434mivw70P/+Lr/+8/SWRjKJ/Fuj/7k/+yxTQS6LonwH6z'; b += - 'zNQe8fV3oC9BE1GJNu25s7sHn7jEjqsP2ySmuw0mKessnT+I0xXuZHWtsf8mMsEAYtXMrhsBWTP'; + '//x9/7I+pJIRNE/DfT/95dGJuH3xyUB0euzV4CtPic+R02bvQ8c/xsG5LHJLwPl84y/B/jf9PGX'; b += - 'Bt08K5cRuHwDE9+JakzdakoahNYMfcRTjaDcGtutlGv8McRG89zqIUbE8dFGfSx935h4d+XzGT8'; + 'AL+b8XcBf8nHjwN+D+NnAP9vffxFwD/H+DuA/3c+/gLgn2f8bcD/lo8/B/gXGH8L8Jd9/FnAv8j'; b += - 'cxRg0vKUmS8UqSdOfpWnvOMENiQ0NaK39NZQ2lsSF7oo+HVHmXibePYfyD5b7cSzJGxRDY5klo3'; + '4acB/08efAfwnGH8T8N/y8acB/xLjpwD/2z7+FOA/yfgbgL/i48cAv1Gy+CRw9UfjZ0wtxdWy6q'; b += - '2NO47uM6Plf4WGOlxjVWalzj9o3bLnXdLI1r3L5xm+WFLQhtMXczi7mRxsjdLxJRYjBBskgcVoR'; + '1jQTPFVTOplk1oKMkMJRpK8k9SQ0mWczSU5NIyDSUZu1RDyb5QoaFk9ynPQ1GPS2ko2T9VJ8QKG'; b += - 'EMB2EPDxCap7H1r15xiAYE39i4h7K7itTdl+JsjsYCkTZyT4GaF7vI/pNTIvIubXPdGiK3scgPC'; + 'qUKGqUKGqUKGqUKGqUKGqUKGqUKGqUKGqUKQtb0+fDzgrh0t4jjZY9I4OU5UYKX50USLy8IBy8v'; b += - '1N7BUdJcQ7lN1RylYxmyoe1XVRdtxD2f2g7H5xz2Pb1GBJKPiiqqFzwQcx7WJFn/DF60raeJyd4'; + 'ijK8fEKU4uUlUYGXT4pyvGwUKbzgwLcZRPJG/IPra8IQm1D2knQfEKbYwJK43bxjkNCzSKDdJuA'; b += - 'dyD/sbqEWYHJrpNG0PI2P4DomUn2gvEPbHSVJ8K1xEMuZ8zVLk+2ASfSu95hA9PcX4LGy2SvcPZ'; + 'CA7cIOMfANAFnGbhJwBkGpgg4zcANAk4xMEnAGAPXCTjJwAQBowxcI2CEgasEDFsPX6Tim+YUqd'; b += - '+4rsHZgOvwcyf/oG4O49KFF62EcPN7mHw9KXfee7XD3+uO98XIpq2HFKjTD3nATPhKvBtDZJCG8'; + 'f8ArPJ1AkuMLtQvc4FZpeqk1xgdrF6gwvMLlenuMDsgvUmF5hdsk5zgdlF6y0uMLtsvc0FQsIVW'; b += - '4C3+zzLL4YheBS5+QcemLziXrQ5Xj41XiidSXlVOm9maZfVEMax2aKLNZetcl/Kq+a/uSdY5Z3Z'; + 'QulE4iYfVI6WYO+aALkm1I0KSRoYt6glEsKCSqZt5+RkwoJupl3gJHXFRKUNO9TjJxQSNDWvFcZ'; b += - 'f7uCHekIrurNnB7H6BOgciekSNRPJnFHV108RSCZE2m8adVCCWSJ9VtnxpCxsgqvHQQ0IjtF/gf'; + 'eU0hQW3zNjDyqkKC/ua9zMgrCgmKnLeJkZcVEjQ6L8vISz6y3Zwh1h3/GFgX3pQtog1sKqINvFx'; b += - 'bGUYaAazEw1xHnUx0/FP5hXNKvkVQ0s5eWqsToNQNLP1MeZbNj1QEFqPAeVcoRrU5dWO9BqN7oe'; + 'EG9hQRBt4tYg28Kki2sCBItrA/iLawGARbeDNItrAvtm0AVBSYWIxIAZIAR7D5sfhHFucpx5QNZ'; b += - 'MFmx/Z/ypbVgn++nx6X+7cyA1Z7f4g8Jqz1fVYWyPZXdwUcgqR2NJ+dwervER/cIfjFS4IIFfoH'; + 'voiuIMFecrhmKBUYQvB/AIwpcCeBjh8QA+hspBAL6HOkEAHkVVIADfQg0gAA9g1wrAfdipArAPu'; b += - 'lST3JSW/6R8ESLM3MV3iWmyHc40CJmy9v/G9442Yg4ujiDhObAx+uh/mweN6JO8x+qnz18chxqN'; + '1MA7iFJbHwMrJkoIlXvJopI1XuJIlL1fqKIVB1OFpGqI8kiUnU0WUSqnkwWkapjySJS9VSyiFQ9'; b += - '6SCOZ7KrvvPZGfrQbJlyNJw+0GZP5hdyV6id2IwH0qymDtykgLjMFB1PIAHKPYT7HvqDEqizUe0'; + 'nYyWqmeS0Lk3FE58N+EfsOUGErkzoMi9UTAzBp7eIKdi60kVGIYJzY8boBsg+g3QGDYSW9O87HP'; b += - '6plcW7/x61mhTcwPdANno4YHBAsAOwTPLD9lIVovLtBqYRf4yOwa5Xx5Gogb0h0cj0QfCsyf9aX'; + 'EODQh+zxlaSa2m7I0BdtDWZp7PUdZmnQ9T1mabb1AWZpmvUhZml99grI0sXqJsjSj+qTPpjDNQf'; b += - 'ojX1VphnpsjkN0TGncabuEe5HIzzFVU6iPuhUASE+u4leOvuYCGQ/kg3Gk2hyLko1wzE535OFFi'; + '3zYxj8i7HptWJsOlGMTa8XY9PJRLHBP1Fs8E8UG/wTxQb/RLHBP1Fs8E/MMvgncMB2UGwCZ0VbD'; b += - 'CtCaeXfKtLmdKTrOc/vdRjwUfaEH+sQUrV0v3PtvCJfqpf/HbqPeo/2Gx1PJQRZxzpWE3oBmxJv'; + 'HqA7WAEBmb9HaPQjnMRuPMV4AV3DQpFAF5D4FEUiQD0IPAYCkQAvoDAWhSHABxE4HEUhgAcQuAJ'; b += - 'NAG5NDm93GuE35w7BEiP+Z5g1e53x2e+yrhUEUlnwjENtReucilfoQRDM/0GJx/xe6UV42vZ38C'; + 'FIUAvIXAkyjUATiMQBNqEgAMIdCMygIARxBoQXUCgKMItJLojrtVpMc6bgNe17qrSJN13NV4bXQ'; b += - 'Ws9sU6ikArYc4N5XnJtSH4zUvqEOvMifWUztrZbCxodEmOp6Zac/fGheJcmOSn58LzKlLv1pKq3'; + 'fIV3WcRvx2uC2kTbruO14FW6GTBSO24HXOreT7BOO24XXGvcpMk447tN4rXbXkSLhuM/gNe12k4'; b += - 'hOK6bSuaoaQ2zc1EW5Kv1LDaCwAVR96tD5utU+k2PqObku9vg09Ps9Vswz6dtRKmw7x8PUGGE9e'; + 'buuM/iNeUuIB3dcZfiNekuI8XccWvxGnPrSGl33OV4td1Kkgf3nUAFiynVxglUMIW86wQqmELOO'; b += - 'G6SQXGBXPd3mEPCd2iivj2QUardk1+uEM8nnDeZ7Cz/uTc4y2W4HoW9wMRC/jRtAVzaSgG4mpUx'; + 'IEKppB3nEAFU8jbTqCCKeQtJ1DBFHLaUSrY+v0Sd9NRGtg6v9yUoxSwTh93w1H6V5sa4iYdTJvm'; b += - 'M9AY+pT0yK+U9r3HmY5mGCm4wzHJxQK6x5KaCdqubUgXC9yRT4HTIFTtfG5rOtyuvHphx3Aqn7B'; + 'Z60f16xVPgnbDXrK29AO3oqcErPYdIB+B9H1OVVr2HqAfhfRIqdqDjkL0O8h2s2p2kPeAvQXEe3'; b += - 'ZtbCZvDjE0+olgFowXxfNoZY8Q6GR5aQc/Q8oiVC8qDaqlnUN0M0tgZVI/tlTxKvu8T8oW9gxqY'; + 'lVA0idwH6xxC9MqdqEfkL0P8M0dU5VZMoYgB9DNGLcqo2UXMDdA7Ri3OqRlGBA/RxRC/JqVpFPQ'; b += - 'ptmf8p9tgas8PHNeBtVjPYMqEl80am8Lrkm72rnJ/1rTuvMsDoBmcTTRs0o8kmkg+UakE8tpYsq'; + '7QJxBdk1M1i+ocoIfRguLZD5L3Fmq8tzDMewvDvLcwzHsLw7y3MMx7C8O8tzDMewvDvLcwzHsLw'; b += - 'Qq5rNbINp4BYcdhMXSPurJ0sooSGafCFHiZyhneLp6tVIhKcFDf69/tkIuJn1dNoJTaWMoTmvjK'; + '7y38CHyns5wOpfprKXzk85EOufo7KLziM4YS7Rml00tagIOeVDNHqqsdDfKtmxU1aapRlI84Yto'; b += - 'FznvIWgqEHxyWPYuhhWugEQ1S1J1psafZHFDcP9uBGZLQs44FpuGKZciatj2oN5vMa/EhNaVXOf'; + 'DVnPPOGLaEDZAjzhi2hz2TY84YtgE9lqPOGL4CzZnjzhi2BG2dI84YvgX8kDPOGLYHnJHTzhi+g'; b += - 'P+4mjeYItXCValT/yLUKYxvvD8XiS7XA2P+VV/AncDEoi9XHUFxt7NzzL/mcwNHeVr1bQN3SAOb'; + 'lkm94wqf3qHgwE4Q52QrFRDlRr27PCaFelROu+qyc8NRPyImV6ufmRLWqmpxYpKoxJxarKs+JJa'; b += - 'MKT6w9qw0Z6GBbnFMZ05vTKB8pLjr9EbS770Rm9fTPdQ6+Gg1BdGNTu1qiNS1TZs9/lPtGAh9to'; + 'p5cqJGNWVO2KrFfe33gzPPIkoXU7qE0hrJTtWR2m9MnBDVPjdFTt+PE524KXL6Dr/V56bI6fsxo'; b += - 'PaZXNWn2hq6asj7GebNVyg/RD5Tl9G2jmAy146TkVcOFQxMYEHopvVpmfZ1njNCkijnFEnEfogj'; + 'Etuipy+/zOgS26KnL7/GNAlN0VO378IdMlN8QK6TfN40SBW5cRq8UhONIq2nGgXmZzoEJ050SWe'; b += - '8T6DoiY+JfcJ8hgiaSqLQY/Z6D0n5dV2OVqNO1M+5ZVdexpkYOQpPykjooS+qgDP8wm6fRT8t0d'; + 'yomnxbqceEZ058SzYkFOLBXLcmK5qMyJWlH3IKV4pcZzlWH+rAyzdGW4F1SGO05luK9VhrtnZbh'; b += - 'ux3dElNVlxSI+sYxJMz5CW7VCZXC0YBxJcTsLISVK0vV5WAY5eAm2NEKALGaCq1JVTmxiHgc1Eg'; + 'HV4aFQGVYblSGRU3lQ5TiazQp/qgmxR/TpPhaTYo/rknxJzQp/qQmxZs0Kd6sSfFWbUxv0SR61X'; b += - 'bixRkLQglBbQNAgr4CG17dnWJhxvf0VbUFmpBdbWJY6biTMnOuNJDMXyJLZoZzO06atVsM+Osw/'; + 'yz/4g3e2FTY/M/2MG7MnLwPgsTk6iqVYP3Ob/AbKP3BS4w+/B9kQvMPn6Pc4HZB/BLXGD2EfwyF'; b += - 'N4yuAgfsNnVh0DvQcBpYnw2kbM19V10yspReN0SqXfe7TtEbdpyhbQOD8j9KC9fth5Xb5bhyx+d'; + '5h9CL/CBWYfw69ygdkH8WtcYPZRfIILRAzj15GyRhvGH9WG8ce0YXytNow/rg3jT2jD+JPaMN6k'; b += - 'CoQ3hL/XMu3Ztd+iEbxF7waJ64dpEnfrQoMsrO5m/x2pCddcqsZJdsKk2N+P/Sp9b3jRvONyrZ1'; + 'DePN2jDeqg3jLdowXhUaxuMfyZRVwFh5w/hwXBwJGCseNU6+B+OkbJFF2mRQaUVHA76LXEZ4F+6'; b += - 'R91yzz0Y7bMaz7+v/FJm4pN0dEfW2crfsxFzNkfKxAzT0U6jQiz807iYpAdPazBP9noPXiQVSw6'; + 'XDbZY0ePB/UMBW0YuM7wD98v2XBJ1/+GAayOXId6G+2Vz18gbEf1WwMuRqxOHAlaOVG8OBpwcqd'; b += - 'kL72u/20/+JBxNouItV+H9shHO/yecKAmFDp724w4u2VL1TEqAKRmadmFfh6QgwrdHGBI6YV+Bh'; + '58IWDkSPWmJ+DjSPXmtYCNI9WbVwIuTmirDz9u4H+b0UqLppw2QTavdkHWrowgO1eHIAtXpyDbV'; b += - 'BjCuwIXkxr9DFkZAYWOjilFRMLGCBVCML3bY4dweIU3UxswDHaGwMAc4Ku4MUeFXiN4rLc4CbCD'; + 'pcgq9ZTguxZTwuyZK0TZLZ6RpApq5udbNwV7Frj1rNDjSvYjcZ12XnG9dhlxl3JjjJuNbvHsLXr'; b += - 'wr4GYC5wQcIvC0gFvEZzjArQSeEHAYVzoCbiPwuIB3iYtugHcTeFTA7dggf6hr8Hih28Xj+W6Kx'; + 'osnmrgsmm7vOmmzvGo6zVeqc6TaiJo1WAEH+Ex6oVTj5F+Q14S3NCZzzC/KV8EDbwqm+IA8JrzY'; b += - '3O0z6TH+7sjeDzVfQse7+u+FY/Hum/D4+HuKB4Pdu/F44Hu2/HY2b0Pjx3dHXiMdu/HY6T7DjxM'; + 'ncIYvyC/Cq8sJnNgL8obwlucEzucF+UB4oKDhNF6Q5wNO5nH2LsjfAefwOGkX5OWAU3ecqwvybc'; b += - '9514bOvuxGOo+z14DHa/F4+k+y48mt0H8Ii7u1imvzvGO/jubjxmvO6DVHUYhXi39CqcwVsrLZ9'; + 'AZO03R2bHhwU7UqzR5VBUWXlVhgVcVFpJVYcFaFRbGVWEBXhUW+lXhgaIqPLhUhQekqoc41i/Qx'; b += - 'Vl2/E6b0i1lQpNRTrKA9xZEh/gD7rsYNrtdvhWbsdnrXb4Vm7HZ612+FZux2etdvhWbsdnrXb4V'; + 'vql2li/TBvra7Wxvk4b65drY33l9z9Rt0ITdW7ApZQuo7SW0jpKl1NaWWRmVTXrzKpqNoksZyZt'; b += - 'm7HZ612/HusjkNIsnt5sFJc/ekuWvSbJs0w5Nm66TZMmmGJs3mSbNp0mycNIOTJpk0nUnTnjStS'; + 'aLVoR3NFBu0UHWig6ETLRBeaJJ5CW8TToiEn1uEM5hmxOie6RSNOVB55kGy7QGPbBWG2XRBm2wV'; b += - 'dOcNI1J0zdpokkTT5rapKlOpjCQCSuZ+ybMmNk9aXZNmgcmzbsmzfdOmu+ZNDsnzTsnzTsmzf2T'; + 'htl0QZtsFYbZdEGbbBWG2XRBm2wVhtl0QZtsFP2T2pQaNbVdpbLtaY9tHJNs2htn2o2kSC2bXJB'; b += - 'ZsekuW/SvH3S3DtpRifN2ybNWyfNWybNyKS5Z9Kkk6Y7aYxb4iQ7/bvObBGbpb1WyUfH1YodHbS'; + 'bMqUkcD4TI0mhNYsGcmkQukEvLojWJBXNqEpqoq43WJBbMqUn8s0B61kXd/1bAphXRFgklkJdH3'; b += - 'V67JmmCcdwzHgI7Mj4EBFx5y9SYhyJOGN4vtYuYUdhHI8hs4t6qcmAhgxwo2x9/cbFI+jzhQDhX'; + 'X8o4PzSaIuFkvGVUfcfDDpTWbQmVxXW5LT7vxD0Tydak6uaU5PrCbp8MlqTq5pTk3stkCIl0Zpc'; b += - 'hL2blulLqlmxDYLLVLhxDYwhqVVMN0K4LDZR1sOY9ALY96xOQj4qhG0B5/C0cc04jjntnMEcc1Y'; + 'VZQm94pYEKUJbRZ7RT85sPWSK/L88vT88vSDXp7eGF6Y9v0lNwPDFS5JIyu4CVKebTfO/j/sAH4'; b += - 'paZeIqY1YgTHutMjwHgiFMeqzqPAeCI0x6rM48B4Ig52BBCxJxGnIVMKSLOasQ5VrGgiHMa8Sr0'; + 'VlQzpo50QcRwyaKRlr2zfi3zCziPsEL7D+fV8wnbh+6ZP5hO2Cd+N/UY+YavwPd6n8glbhO8cfz'; b += - 'QRHxKlujs5RezdV3Qc9Vgp43iv+Y5lq8zBiojfk3EGDsVMf8mwhsUkblFgKDzPlO4xC3wxoahwA'; + 'Of4H+874N/x5a9CX1Abdmd0AXUlv0Ji6tHzM7NjuTmwGedOpAjObnAX32nT0MmLvBV38E05t8CP'; b += - '2GTwCsI/Bo3zKy3mP+6agFByzbIA/xg0YdDi6C8SWVSQ0sc8aCuDahRJ91NtnAkkIJSGWhGNFQi'; + '/XtTGPWLfBR38Y05toC//StTGOGLfBN38I05tUCv3SniF+6U8Qv3Snil+5EeaJtFL4n9gyzF/r4'; b += - 'wJTUk4XiQ0JSGRhNkiIZGEQUk4USQMSsKQJJwqEoYkYZsknC4StkmCkYS5IsFIwogknC0SRiRhV'; + 'Sqftuzavemst+pKQjt73wrRPCOkcfj9Me1FIh/JhJ0R7QUgn9JEw7XkhHddHw7TnhHR2PxmmyZ8'; b += - 'BLOFQmjkrBDEl4tEnbgZpcnyzTmyJgiaU7MHsBhVc3E3H+cIsrEHu15cO0LFbkKrpoCa7HByx5m'; + 'lve3PyALSyf60BKVv/SkJSpf6sbynfUAmVLUWyYOy1iJ5UNZaJA/KWovkQVlrkTwoay2SB2WtRf'; b += - '7RGx6xBySqgpj8FkCTvDDXUMiTKzk+W8mOu2eTDoGr15LpTz3NQBW8pzsZwHg7rVm2ehnIfmgLT'; + 'LgniI8uLsID36+CA9+LpoHNRk3beXy+zRKB2sWUXfbmkXU3bFmEXUz1iyi7q41i6i7Z80i6u5bc'; b += - 'dm+dSOQ8mjU5vnsvlPIdx2NKb50o5DyalwZ48wP+Sl9ZoODVyVH9Y5hCk3fBgEGj6xFwt76KKTD'; + '4q6k5qoG9VE3Ygm6obnRd0PRtSNhUTdqTlE3ek5RN2ZOUTdWXt2UXfOnl3UXbBnF3UX7SKi7oqd'; b += - 'hIvUlb0uzj03OzU6XOuC6ptzzaqf/I9MIfHsj7HPdxlDLtp33Zv/qFn/nZiFNE+7yBlEN+2sh+d'; + 'J+ou23mi7pKdJ+rG7XlR9/GKOtwxM5DuHor8J37eEP/KEGcM8a8N8QuG+DeGOGuIXzTEVw3xS4Y'; b += - '+6ffktSGvvklpZSDvtpM/utf/nFj0tNmvtE2YpSjvhpK/uduV/7N5LS4pQ2Dz8/bWd/evn3P/OP'; + '4Z4ivGeKXDXHeEBcM8SuG+FVD/JohLhrifUN83RDfMMS4IX7diH76kPupbMx91VrPO2PFq+iAvk'; b += - 'OKW9Ty/1aQT6aSf7yV8+vijf6XBKwkPQT5Psf/niJ57nhETRVOXRnoYTOoXQ5mJCJ5DQ9E3oBBK'; + 'EYmHlZfKq20Yxl0EEjS9svs+JlyOjopI9O5qFTPjqloV/Npge9V7Nnza3lsTLxE8aQ+zK8ewO8G'; b += - 'aBoGHBGwSeFjAFoFHBGwTOCNgh8CjAiYEHvN5oPtYZCgqntCpKzS1CZ3SiMAneP4ZZKsFv/mvf+'; + '25hV3f8hA14r4kXQ7zs37sJ35vFxMBEwycRn0R8UsPTJ2zw3wUPTg42xMp+4hNm94nVx1fGslcT'; b += - '/zPJ64kgN8XF83AzxD2vmR/QX6uKmuE+O3QR0JzR/gI/3k4/RNWur4wikMxV/P7BRbK+Q8G0y9d'; + '+z27ISZs3JQEP9cAxdtGT3t4TtOg5wiHELjTNw5khnBHahlBBwFC9/xShPJV9VL8o+LozV8p4qI'; b += - '76lMXQAdwoBrNylA6ae/DR4jg0U8dy4KfIN8AYG5eo3ndekdLzoZ9ufMf1dn/P0ix5zmWMtbsMa'; + 'sv0ClqEzvokK7hM07U716UU+3wKtrcX+14X+C2jnsqo3Datew2jKs9gurzcJqp7DaJqz2CKsNwm'; b += - 'jc9v8BtiM3v+LXvTgE1mh+JkaGRcvtZUY9hNx2J2U6y6SJ4D2H5JnpDzNAuD2WFhMDtku7c1XHu'; + 'p3sNwa7HD2jo+77Wdu+ZlpP3PTz0z5mRt+ZtLPXPczE35G7vzt4I2/okzu962TtYsbAJeIOlm7u'; b += - 'cHknr0FmjqXMkbbFJhTA3lx3yNWPtzP60k9tzbZ/E7NS21mqrYi67w7ESVnPZVddabYirwBDXhy'; + 'Ak7hVB+5aXwD4pDrYol+SSbnMqF3Nq9XNSlu4ON7J1qH7vbpXayu0+pvezu02o3u7tO7Wd3n1E7'; b += - '9Pdmvsp5hGibHCduswl10tWavtiLVaVMN0cmu1cOxrWmdMYs3TBrv8EyP4nR0xnbwVVPvcUG07b'; + '2t1utafdfVbtanfXq33tbrna2e6m5d72EgRq1O52d6na3+6uUDvc3WVqj7tbpXa5uwvUPnd3odr'; b += - '1iyorHsEXhqFnTlyCuZCW73mAnu5FZs2eN02oGZYCK8kXHaPFBNjo90B9j6DSpjkpK1YAf/bC04'; + 'p7larve7uIrXbHWaE/n53N6l2vMN8kfa8u45YIpaLEubJOPYuhLCSJ4GhKxDKr8kK/IPiUMXQt/'; b += - 'ZGvBwL9TTca0eK2uK759I71S1/5Q/NfXi//1WAu2+G8x/tuCf0Z4O8f/BukORf4GC/RbYMC0i05'; + 'JIlr1eNRV3iBIqagsbF3oAd9/k4cPGBR+A7wXwNYTvBvBVhGcC+ArCdwL4MsK3A/gSwrcCeBzh6'; b += - 'I1t0Jp96kTtjlH7uD/NeL/BNvGvKP3kH+60F+CDvZQL7P9otDYvV60Nt5hHDK5ye9HdERxD9CBE'; + 'QC+iPDNAL6A8FQAn0P4RgCfNTHFzaYbaGR7ntJNlG6mdAulWyndRul2SndQupPSXZQ+J0fFjb5N'; b += - '/pOb5Dx0g2EmjtOIwnLx+0igP2kkvsZoqP0F6EMML0APTCpr86r6aVQ2e5nBtQ93G0fsOmDe3KE'; + 'ZYOyqWwgHc0WG32byvNqbNhAYwMUuOUXIJvKpnCB21xA2lQ2hwvc4QLSprIlXGCGC0ibytZwgbt'; b += - 'XNv8GGcvhIvxenXKvY8llZKjllyYm5yzE0nZnrDuLCPecxhjjnsFQe9bNI1URO91IT7K58fycKX'; + 'cQNpUtoUL3OMC0qayPVzgPheQQ+iOcIHhBBWQY+jOcIERLiAH0V3hAqNcQI6iz0lKt3kygfzsoI'; b += - 'xbxy8mfsmGpgnCj3r2iTm3W6kbSy62c+O02JVZgmyOZGcCdWo+wvimlDWmnr0P5t8RLKTMw4mwd'; + 'AGjsxn2jL8YwnuIMMu4Y6QX6gE/iwQGSCeqa+gHIebykTHLOOyO+QuRocu9OdCdy7xLOj75SIta'; b += - 'RA8+TRF+w6/wy8UnE0UUvp2xNuaGmnRsT1F2NvWpYGVURs9b0naySPALCmgjth+FJGsZ5TDCeHR'; + 'sRSsUIsE1VigVgoqsUikFZJ4YjELA/qHAIZwd9WLupJbpXDH48+pQDZFB8hzeEkxHLApOFPdj+k'; b += - 'lRsx18RuwN5x+ECVqxKC3f9PBNH9/09JveBMuM8MBc4ZtixviEv9Yje5RlGWigEG5C4k2a7OThB'; + 'Q/4ilFiGio2dvS7nqnb2AiCrGDmhkOcAuYCR1xTyLCAXMvKqQp4BZDUjryjkaUAuYuRlhTwFyDg'; b += - '4XJyfFEiCaqFLPFWo+DXI/bVsIWwQRFxcy8wWJYtB+kZu0tialvHAextdWvwvy3WFJiKsXbbpjN'; + 'jLynkGCCTjBxXyJOATDDyokKOAtJh5AWFHAGkxchzjuqzwxb1XOfh91l4kzVnnwUlcs4uGxOJOX'; b += - 'KM+MyPOoPo/p87g+Z/V5Qp+n9Hkaz/m3QLzixzd5QwdhrbdPTDMdzFhTv0IMuzcBK0kVGA6eTBO'; + 'tsDLhirg4bA76Zq7/GgLPm6q4x4L25emsMuHOuzhoD/p2rr8aAw+fqqjHoAxE9FRv0JratkK17X'; b += - '1lWECEfNp8fBqQoSjQxskMXHEwo7ybOqT7xwwfCHowlH4acmJR7dFJVTBEsoxekvKbkKSEyW3iB'; + 'zX5VMCv9xTyRsCvdxVyMuDXGYW8HvDrHYWcCPj1tkJeC/j1lkJeDfh1WiGvBPx6UyEvB/w6pZCX'; b += - 'wXoKkaFBK/LTG8nCe0i4R4tYTm5IpFNSEbpN9Gk/TTAZtKfiPNamqzmlRCFZLaedH09ZnaOJtJ7'; + 'An69oZDjgFzKyElGfkSOxXSD4ltZuRuOBQ3xnGoI1Xa7NJRs7p0aSnLIDg0lmWq7hpJ8uE1DSdb'; b += - '0jxbbUD3A+z0KitaQ7nQs1t1IwIrN8M6Ifk2Ry26THVDtai+zW97aS3YNOrpTa9aNMAs9BoPKz9'; + 'dqqEkt2/RULKDbM5DUZ/apKFkD1TdDCtolCpolCpolCpolCpolCpolCpolCpolCpolCoImc/ntC'; b += - 'N7Kl2rgGb0IyayHmLailQ54AG9l0nTAD3ldmxIa8l/yDx8UgSqWb4NZmIYSthSRLMBVUHzfR43y'; + 'oh+fg5Zvdd3Ct2cufZwX1sO3fFbdxjt3LH3oIXS2zGy1KxCS84IhggbnGkMEksY9ygFQCxvj8GE'; b += - 'xzqXrb2SqyX/HR0Achi1qmIJCRJC8TWzWUAFscKAoIXTfFhm7pn4vKAgvtB8JbY9iGRHBcUlouQ'; + '5MK0k6VNsTWbakKsXlb6kFs35ZKEBu4pQbEBnOp/rBZXeo+bHyXig+b6KXWw4Z8qfKwuV/qO7hi'; b += - 'nxaglEHsuLUuIQ69sNDObHW97WrMon0ditj/ovpLzvfT7lTe5zKe9o35/yJvWplHex76P+xUk0b'; + 'oCk7uFzwsAUnvmlOwXnOLKLsXDCLKDsXzSLKzrhZRNm5ZBZRdi6bRZSdK2YRZeeqWUTZuWYWUXY'; b += - 'cNwEk3bNZxEp4N8Eo1jQhyubJLjl81yPDMkxzdb5Hhnqxz/DMvx0DY5PrpLjpfuluOn7XI8ZeT4'; + 'mzGhlB1mLVW1/zD+jJA4Gi5Ey9LRCYqQYKUNPKSSGiZEydEwhMUaMlKEnFRIDxEgZOqqQGB1Gyt'; b += - 'qiuHW+kqBpLRCLb6gqsz7qsL0fge2k1f+o3LP/mXG7EsNSDgtAeb8m/9x9/+xJWKxJ2jOGzuf/W'; + 'ARhcTQMFKGDiskxoWRMtRfBSC93Jeh9xQSI8JIGeqvM5CGjunMx8C68Kb5Mf9hjPlZmKTC/5a1n'; b += - 'Hf+Jr/0Xj5igOhwTf/OF/fuIPNe4UxeHA4dWPTX9rL0ft+avXfmR6enr+0J9TltmIiCmkKQpPWr'; + 'vVWAfNQJ1tNlgEnm5bXlLwm5dXmKyaWNFdZIp6tAcaDST6ZdqyssR+SE0cOZ+vfdpP4HnoH6M74'; b += - 'qP4dmiKQzPNk1peNJkcwTPDi3tePbTlh3PAb7obJgNtLEnEjGDtNfHcyNtxPHcRLtwPDeP+dfxH'; + 'joRIwN2gaxj0RsgfEcnDwjqCRqIEWrVADeES8nV59GQePVlAj6ORKS6NTOrN8tepN9sP+80C//F'; b += - 'Brzr+G5Zcy/iufWMX8RTxolV/DcNuZfxvOuMf8SnneP+Qt4bh/zL+JpxvwLeHbH/PN4pmP+fMiD'; + 'swKJhCafnDjByRf5QdN/UhqJ7pjYU3TW1oWjG1IaiO6Y2FN02taHolqkNRdOmNhTdNLWhaMrUhq'; b += - 'YT4cT/6LZyldwOmqOsNwnDewaaL5UE5PGvdSMbv9UMCLBDYFvETgoIBXCNwm4FUCRwS8TuAOAW8'; + 'Ib5vy8+0dv3l2LrJY/ma7FP+I+Rxqd4oVGUFvNtstpwmvLCa/FE1qxAq4OTHOX+kx8kWZ+Ny1mL'; b += - 'Q+ICUe4vKfZhjg+loN0vxEniYwKcEnCHwOQGPEfgCVXKRT5waMAkoiww8YLgntW7YzhvHQPts6H'; + 'gKmGDhHwA0GzhIwycAZAq4zcJqACQZOEXCNgTECrjJwkoArDIwScJmBEQIuWdpEFCPuzDPxjwAT'; b += - 'qIV8/s7U8Md3kiaMLKnqlghZ9nSyKNDM78+nA6yJbo/9KzU458PNnTZE0Kf5VcNEHsaeQBzDmf8'; + 'p5DVom3NIIBFAfvarNpjujbHmj2mjTlW7DFtyLFej6nIsVqPaV2OtXpMa3Ks1GNazaoO5dM5Vuk'; b += - 'dypRd0Q5MdRIURZQoH5wjcWuJmywZKGjJQYZ68NGTz1McY1j6c+nLA2ZIg1xxjxPOpaOEdtyEBs'; + 'xTbHQpnySZTbl5eyB8g90VvlCeC72Uje9SLwQnrm9RHX7yW76KipQMNv7JBV4uZt+AhQIzRBfpg'; b += - 'j3Ev8NhMcFrakOHaGeMu4RHcj3PRhgxqItIHBH4wJUJ9UOCH00HpLJ4NiGC1Le9LiWjfJ/BTKRH'; + 'KvdNPvhQKhWeUrVOBT3VQ5UCA0E/0UFXi1m2oSCoRmr69Sgde6qdqhQGjG+xoV+HQ3tREUCM2SP'; b += - 'uUwK/PyXifb/Az6VEwM8J/HxKRPy8wC+kRMjo1CPEP/FRkxydfYjmCUgObTFDZrPZZDaaQbOBuP'; + '00FPtNNDQoFQjPrz1CBz3ZT60OB0Gz8s1RgYzexChTQp+5+L0QZyDEy3M+hiszZz6NizNndaEfg'; b += - 'd+Sk4giw//1VD6YQsyhP/VjKl7vJw0wLLygRvO3zTqEEXx6RzO8TSOeF05y8Opn8bdqozLyR/OC'; + '7B40eHC2B80cnO1F4wZn90KWolu4fZCjmBZuP+QokoU7ADmKX+G+QYLScV8kGem4r5N4dNznSTI'; b += - 'DWOuGQ5JwTjqHE3KI5PFXE3pnHEX8sZJE6hNe46xfGJJdXdxhFnLmecuH/QuKuVcTkVxW5A4jDc'; + '67iYSio67meSh424hUei4W0kKOu420i1sdzupFba7g5V1dydem9xdpGDYruw01x0l3JixWZ9W8D'; b += - 'P0RJf/UaLn0R+WF2mIBFZhbm1hvJ7xAddu1ywzZ7IMtAO4hsqTrOIsO+LD2BUqeIHIvkBLuEiGx'; + 'UHakqDrzpQtRp8xYG20ODLDjSeBl9yoLU1eNwB9tDgiw7wkwZfcIABNficAxyrwWcdYHF/UxVL+'; b += - 'C5CbEqyWwl5jeoly+BINuQCyAL1bg1IcHgLwO8heLGSB+kD5DTbWVRIQPsmdoEETP0BBInqFtIH'; + 'hcofYnST1L6MqWvUPopSl+l9DVKP03pZyj9rOxknwhL+o20W88WL4rP5cTr4vM58bzYnRObxJ6c'; b += - 'iGDMidoREQO0OjIHWGdoDQGdoJMmfoARA5Qw+CxBl6GATO0GMgb4beB+Jm6CmQNkPvB2Ez9BzIm'; + '2Cx6cmKL6M2JrWJvTmwTfTmxXfTnxA4xkBPPiTdyYqfY9SClwIthKfA6DAPIuy+GpcDrxMLPwzD'; b += - 'qHnQdQMvQCSZuhD6C610E8ofCI8CGRQP3h2yjETMiXgFDF5D2ySMU9NHXnUE3NSyXiRyoxLZibF'; + 'gFyiQAs9TgU0wDHCBkBSQ5h4YBrhASApISxAMA1RJYSkgjUQwDHCBkBSQ9iMYBrhASApI0xKMB1'; b += - 'VAltpRqwYAJh6IztjMz0gSH+wwHvvWCI52vs8g8X/d54ca0V4YI2dzgOQ9VGomCV3ctDMEQtoc+'; + 'wgJAWk1akbugUVCEkBaZDqhv5DBUJSQNqquqGjUYFACkj7VTd0RaB8wq/jFzQbmW8+8QtQHb8UY'; b += - 'yHydcIkhEPrm2+U+yY1buaCHycpGvw/pquD7j/AypH05iLvq1hJ046fXULK/UwterY5bf1ctj31'; + 'T7hArKOPxlhPuECso5fjjCfcAFZx69EmE+4gKzjT0WYT7iArONXI8wnXEDW8WsR5hMuIOv40xHm'; b += - '4e+/by2LeXx769PPbt5bFvL499e3ns28tj314ei0sNEW23bh986/bBt24ffOv2wbduH3zr9sG3b'; + 'Ey4g6/gzEeYTLiDr+LOB+cRhWXTfUS1Dff2eo5qS4LuOanuCZxzFLATfcRR3sRLgKHZkRcBR/Mv'; b += - 'h986/bBt24ffOv2wVdpBDaa7SmGWF4mxUwmGCD+2kiIUb4kcv+IKBkXdvsrVJP+eLXIFfJKvkkF'; + 'KgKMYnhUCR/UQVgoc1aVYMXBU72PlwIGOli+LHqIpxCmidd5wimidU04RrfOmU0TrnHaKaJ23nC'; b += - 'H2JWQRODtvYyHpIEilFIEyhOu/flV/KQKlC8QrJAMQvpAsUtJAwUu5AyUPxC0kAxDGkDxTEkDhj'; + 'Ja522niNZ5xymidc44RbTOu04RrfOeE611AvvhOl+aJzw0NNrZk0awfI7waAAjv2dHAhg7SHY4g'; b += - 'LuKqC3IGVBNlVSIKMFZIguwtJkAcLSZB3F5IgDxWSIO8pJEEeLiRB3ltIgjxSSII8ijE573UfU4'; + 'LFHZe/HguVzhO8FMPbZ7N0Axk6enQlglArZOwGMYiR7O4BR7mRvBTCOVu3mno/BoFyMFc8VY8UL'; b += - 'TFNMsr9VZtiDEP9wx9EpHjtI//irEhRYS99qHDx/IU5OrjMZd/QyPz70Tw35RH5qW0+E+/FY2zd'; + 'xVjxYjFWHC/GipeKseLlYqx4pRgrXi3GiteKseLELKyoSURbxRRliWirmKIsEW0VU5Qloq1iirJ'; b += - '6aVvpbgdjzv2w4vjnirzUskQY2Vl0VTx8b17eY+s8Pcb95h3ml2mu8x32veZR4wuyDpYB407zYP'; + 'EtFVQUZaItooqyhLRVmFFWSLaKq4oS0RbBRZliWiryKIsEW0VWpQlos2xRefF4Q+/OIww3kq7rV'; b += - 'mfeYh817zSPmUfPYKgXdO9ndoJWMaCQ3VUZEa8TOOZhObUwIoTHm2CDSHufxcAckeHBjIpYhgRO'; + 'jsO/b5llMymuropI9O5qFTPjqloePoiagZbhPkg0hWU355Au8y8WKIGv8ueqOlfBA1fBLxvg9iT'; b += - 'gAEhIFGX9NlpGgMxbxRekd2ZFnyaPXQxY7F5TuU4y6ELgvqqh4l2bhz7Upxk+KwdWIkAo9q4lMw'; + 'd7LE76R1sZYkw2xsj9fZ244UUs+iPH9ntEQE7FGc9h0Tbh7/X4RS//Ptrke3m00mpu2l+MBJp2D'; b += - '6qZJ9d1312XffZdd1nS5k1u9eu85ZX99pwXlaFCWs1epDf+0OVij9H/+pQxbGfpJqxBL2KdogK8'; + 'hEXMOhs+NHvBHPTWo2m44X28+aLprXp/g/jJEWB8C+YR593VwH8m8P559xHIGdAjzrs2KZDnXYc'; b += - 'D4T28tM1htu2IyDIjCNG/pGnnFQM8LE9jpKrGNDXte9JB/XUVXqtvU1uS4HL1bPX6zpi+F4gab8'; + 'U5fOuSyr3ebcRHjhqDrpZ9DdzBskFbQKu6H92Ga4L2RuOPM/uGYPkdnYbrovZP81dwr5n5OYGgx'; b += - 'C+EKX4jH11VigKoE1qnUJrNJ3ilTXmkMat+6A5D7daAIFleK/KdCTM6gC5zVLOwhVV7fTEH0YS/'; + 'X5uMGgQ15tMHi46M8IE1m3Lnv3Oz/+F3F3TfY3/nL0jxLuo9n/MvHjX7Hcx7L/cebbPx1312ZL3'; b += - 'R099GU65aE0M3r5aEPuux8l3ifEzm+8CZ71eqkjsSQltQldvxWc8dhQhixa0WKU3jjtZOkaedU3'; + 'cdl/glJe1KWbZL3Nku4RdJbZfk2SW+XcEbSO2T5Tknvgt86bg6usWJQI57pPsV14Fnu08J0y4Xl'; b += - 'zhCUMJBTk9djZXciYW2XR8HHYTepzMrZmursRWKT8GGcXWMaKMwIpQoZfPAaJCbzYUTgw99slhM'; + 'VsC1DK4lUBLDhG+gsjDXjaF9HYGNMKPdBJPgjTDx3QST3o0w4YVGGDW9uLsOcydNL+E+AzewZ6G'; b += - '7BbnqgnA4wjrFpCmdYoE1uD/yeDXh8YrOkqXxDLOi4jlA+RUx7NMiHEOiHEOiGoDDPlrNrJIOYJ'; + 'XdLsRfcr0St1nRdxdLhLuCpF0U6LUrQTYA3glwPUAC2DEx210KoRZvpcWLchHhijJoKHeEGUZtN'; b += - 'QicDXJHQ6zWZDKztBP0EHwzLqs6u6cK/hk+akG0i1xjBWjR7h85xVhX1OddeAbuEXilymWUDMWl'; + 'Ebwsmged4QqzNomTdERQaN8oYoz6A93hBuBk3xhngkg1Z4QzydQQO8IZ7KoO3dEI0Z8wxe7Yx5G'; b += - 'As/+Tao+491Pesk/5K33KX+lT/hqf8jCzylLBXlbSqswYfdbwP8uLe3q8EJkingXzRcSBeKkiXl'; + 'q9WBj4PrmbGHMPrqgz8Crg2ZOB3wXVHhzWM1+0d1j0Drts6rBm8bumwbuN1V4c1jdetHdYUXjd2'; b += - 'g4NsPBfFa95x37i4/2sRstXsewYQuYuWvaaJlM5Be10OgF1mnFIjbDk6hEj/pXWFPyMv9e4t8F/'; + 'WJN43dRhTeBVZDCgvSHqM+j4aYiV8P149eD78VoJ34/XFHw/XlfA9+N1OXw/Xp+F78drN3w/Xp+'; b += - 'r3Ivxf49zz/zvPvq/x7jn/P8u8c/57m31P8e4J/Z/n3OP8e49+j/DvDv0f49zD/HuLf6dU23qyd'; + 'B78frOvh+vJbC9+M1Cd+P10QGo2OD6MhgVGxDdGUwGrYhOjMYBdsQHRnzGFwyGfM9uLRnzKNwac'; b += - 'NOrfYpGGm/x7g3+X+Pc6/17j36v8u8i/V/j3Mv9e4t8F/r3Ivxf49zz/zvPvq/x7jn/P8u8c/54'; + 'qYb8HlyYx5AC5PZMx9cFmTMfvg8mjG3AOXxzLm63BZmzHxUIPmjPkyXFoz5i64tGXMbdBuF8jDb'; b += - 'WUQr+PcG/s/5aNdWZMyx2SE3digD/CAfc0ZKxKTFOiLtribPnkY4ftKKQeXaozkW5XKMt3LOfiM'; + 'Gn2aix9w8Y+gI6sJiBAPpWuMWMdFjboUsrdRvffMZJnaWAtJhlrLKjeUSRNAA+42K2gCMK34eqk'; b += - 'pUqWlF7ELhkNAWLY5CfFsb3tqJDenlm4dAi5C3yu5NZH/GORnSnPZNdVaiG8OK1CAo7QuLBldW+'; + '/7MJ0mEhPi+unrfQf54l6pBSrih1lIPH1aExnm9egEUSqsiC4OZapFQoSq1/c21wcxUWSaoiVcH'; b += - '46uj4uB/RWcw2FdpC4EFRHsuwiHFvaDGKCeoizsQZT8ViQrCsvRUaQWDLOXo1eLRofjvTyC3Zv1'; + 'Ny5BSpijL/JuX+Tfzj8Nk1Pwy9MBs+l3JYIB6DZPTgN/I+NMSvw+TC4DfwvgLEv8eJpcBv43x1B'; b += - 'IL8iflS0BhqLG4EKLqbmPXHwJwY82O2fBS8W4EIBXirAywV4pQAXC/BqAV4rwOsFuFSANwrwZgH'; + 'GwGhE/BvjtjB+T5fdgchbwOxh/VuLfwmQc8JsZPy7xw5ReBcJWJlDPI3lBIHWQjQqk/rRFgdT9t'; b += - 'eKkDau1nwUAEeLsAjBThTgEcL8FgBHi/A2QI8UYCnCvB0Ac4V4NkCPFeArxbgfAGeL8ALBXixAB'; + 'imQeut2BVJn26FA6pubFUhdeasCoeeXiGqfoUzIQjWXqGquDhqgBinLFaXGb4CaoPUiWWYJ3rdC'; b += - 'cK8FIBXi7AKwW4WIBXC/BaAV4vwKUCvFGANwvwloKy3Mionubzsdy3YmCj1LcizxteEVlc6/Nfu'; + 'UZb49y0J7ovklsV4X0pRFvv3LQ7ui2SURXhfpaIs8u9blMcoE5SOGsQpqXdlVwbUFKWnDWIVJJy'; b += - 'GzeCFeZN1y3f0E+xNiJZ2ne0JVLS54txdgh7RVxK9SnPKzd+vCKp24MGzIL+fopGdM8avEZj4ff'; + 'WhNuUXjCIV5BwQRLuUXrZIGZBwmVJmKR0zCBuQcKYJExTetYgdkHCWUmYoXTcIH5BwrgkoIAEfj'; b += - 'jKdBSRVvippqESTuW+w84BWxQeHPkMdlPjMEFllhMdLti3aU+0UEFnbICVd7HJOCZYqcMrwedDo'; + 'GIX5BAko75BUESSBsVSPJriwJJ3G1TIEnH7Qok4bZDgSQLNyuQROdWBaKkRTEUCCFTREieSJnjF'; b += - 'tkhi0eBpaTY3Lg16Dz+BCPoPzH8sOGv8l2tQZbyKtwXoA1QAue/jO1kp6iOGCqvJxVeXjqsrHVf'; + 'uGUueVKJJPMLU0i+eP7kiHJWWRIchYZkpxFhiRnkSHJWWRIchYZkpxNhiTzZUgyX4Yk82VIMl+G'; b += - 'M7W8/ycVVm5pSPg1EwXOAoHxer1RnmrQ5C2mY6eBHO6efZR4jw9bV1f7W2vq9WjHyH+NRYrDXIZ'; + 'JPNlSDJfhiTzZUgyX4YkWYYwT2hyJFKEfAjp8SEEx4eQGXOKC+AI0MqQAdyd1E7uc9Ts7vPUOu4'; b += - '+KyqQyxBu/nnGQpMl4pstkbqVuC8mdTseLJ99IwAMSjriK+3u2Rp2kZjaGBu4f9JfgY2Ra8VoCL'; + 'L1Njui9wm7ie407svsYBxP8l93X2Z5Yr7Cndx91MsTtxXuWe7r7EUcT/NosPdxGLK3cgSA5RCkk'; b += - 'BXi5ABcKkKYf5+qRo2iecq8eOY5mNPfqkeNo7nOvHjmOZknn6hFR7tUjMTFi90JGWU04Usf/X37'; + '7uNhYUoBySUAIFkeSDu5llEWiTBuqDoPkRG7ufQXgMo1/B9RxGySI2dj+L8FmMlgXXSxgNi9jYf'; b += - '8Eagf9hrTcdtEKxyOtMQfmZx2YbnPI2QikekoKg5gPJaR2cnu4iW2KKzGH9Q1GoXVeJjVNCfzrC'; + 'R3hcYyKBddrGBWL2Nj9HG34wOhYaa1zPyKVx8915CuNqySXvN7BnNYg+4WQzPTZDmbIetmPVkqe'; b += - 'HzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzrCHzr'; + '+0wH860n+91WqRxulsrhDqkcbpfK4TapHG6ZRTncKj5N/SMhZZfYLF77ssesnPDl6GbOXwlEXcI'; b += - 'CHzrCHzrCHzrOFteNaQedaQedaQedaQedaQedaQedaQedaQedaQedaQedaQedaQedaQedaQedaQ'; + 'X4zvEq9QhE74o3C4+9WVvuypEAno75y8GgjThjw/bxCskABK+ZN0iXv6yt0UVIsm/hfNnAjGd8A'; b += - 'edaQedaQedaQedaQedaQedaQedaQedaQedbwNjyrnOqzbQp7wrjER+eBTnBecTKvmfXg2AnxxKs'; + 'eejeKTJHASvqDeJF76srdJFaIhZRPntUEg4Y9on+ggOSFe7EB5JF7oQHEinu9AqSWe60ChI3Z2o'; b += - 'jh1dNdhylqT0TP96NbXmlW4BY3ymoTBaq2InBMVsgC0JeMaZizxLTTvZTbn3d9Z65ahFh4SMvv+'; + 'GxDPXvbPynhPq8gfjAF8UdZuM/rgvO64LwuOK8LfjBx8XjW2O8+zp3Q2+53Q1IfUI/C/u/t8CXA'; b += - '8VNpVzytWC5MxPa9mXtj10rQuYF1Dnv4iXq1U+oXO+4JF5Pspd1TsRi5kGv89YsApyimAYDfN7c'; + 'TkKv5L7sbfF783OErmQx4m3zBcnzhF7BIsHb6guFFwj9LEsjb5cvj14k9DMsWbxNvmz5BKFLWah'; b += - 'CO/Orrwlw+pIrXgbZsa07R8rWd0YNmDXpa8WhJjmBrBHGnRt3dY0zusacGaWjpj//VW2ENGmbi0'; + '5G32x9hKhE8JXe0A33Oln68VzfnY5OVJQNiVe8LPrxIt+tlt8ws/GyTeLskmRbqSDhUA/3Oa24W'; b += - '9/UKikkqjyzJ8tHiJMeSxehwBTGceSdU2wb2NNSOFL80O8hCUtVSedDmMTJwbbBn8PrLBq9bDV7'; + 'WX24qXl91mvLzmrsXL6+5jeNnjPoqXPncNXva5T+DlgPskXt5ym/By1G3Hy3tuBi/H3A68gGrdi'; b += - 'MUDUoq8o0Y+suY5Zt69gxy4NagpLKNS9UXgUv3Abfsq31Itbe67mXGmK7Jx/JEE+RUcx8DcA4n0'; + 'dcRAzdZo03UtfB6klRXUnFXSdWX7Nug4j6N1zOma0tVt1GqwE/hFVTdCrxeRJWWVV5XqsLleAWV'; b += - 'FtPvyV3tTDfOIsPzbgDx3cCP2UGU+OH71d/g6oEu/yR6FKvMsfgSrxLt9AlXiXvw2qxLv8IagS7'; + 'twSvV0gFJtXXkSpxWcpwRIy05c14hVt3SkOgJQ2BFhsC75tsCbxnsinwrsm2wBmTjYF3TLYG3jb'; b += - '/IHoUq8y09wAbjLb+Lyb5cf4+Jvlx/i0m8XX/jJ2WIAw1ih2SH6XZHxXzyTDh+AtPawuf/AlNjL'; + 'ZHHjLZHvgtMkGwZsmWwSnTDYJ3sBrSwa3EpBt8LrJxsEJqVtfs6Qh1JKGUEsaQi1pCLWkIdSShl'; b += - '2vYIrA0hZ0zR9x0w2/L475P4JsW/3Y3/iMQnFH+vG/+ixA9S/Ggef9cj/kclfoji33bA3CXxdz8'; + 'BLGkItaQi1pCHUkoZQSxpCLWkItaQh1JKGUEsaQi1pyLWlIdeShlxLGnItaci1pCHXkrq6JXV1S'; b += - 'CcV3EQ1bkrQfM3RK//RH/FYk3FP+WA+Ipdio1j/hTEj9C8SMHxK3vVNp9xJ/2JGGUEu45YLqS8I'; + 'xqibWmItqUh2pZzClsaom1piLalIdqWhmhbGqJtaYi2pSHaloZoWxqibWmItqUh2paGaLSATtq4'; b += - '5H/EOasIMS0gPmHZywOzis5w/dUK2tZk3rfXQXNNsIh/vT4ZPsDkwiv4/xa4ZzOfPhRyjISR/hH'; + 'sx/jPajxKku5CYqkYON2rA06dQPlppCKsSV2Eha3u/jZ4SA7Yw+K9cHN6+EKU7wY9En7mIeSmfY'; b += - 'ignwS/VNiu07jEG3eQmJd/lJCflZFwK3u0kD5aTYeJiu5M8VE4eYiuOkHXHkZ+XxmeYwvjoz0vr'; + 'dxcTGbh40NtNqC7nyGLgBR3CZGJFMIo0i6WQBySDSPfym+7ZO2iRNwk24koR7Ys30f7OkTZm2+J'; b += - 'HBrlI0Av7ePQCGGsKM4QYovQNrfwHNqWQ3fl0N05tN3K3kfQq6QvfXgCCx42MdHEpOJ0lHAKX90'; + 'uDvDBEXbAt/W2U5I1YeMIa5KJoMgbZjHTqSmvTf48qgBhkMzIWivMzaFLZkP4WPqNmkK3LSJZ31'; b += - 'wT8mxocR+RGNjiY0l9kWNbUpsU2I/qrGJxCYS+5LGDkrsoMS+orFDEjsksVPspdsMn0TcNj4S9a'; + '2BSl/4md1TDo458yvDM/V48izvj4i/Ucu88iae620cHua+/x08fNuA7CEtRCPoYe8BHJhl+bRAg'; b += - 'DRxcp1lLCdE3ZwRB0Rd3PEKEf0IeIujmD9AVNDxDaOMLwPh144RveIjO63yOh+q4zut8noHpXRf'; + 'j7LbBlEoNpovCnPQLc/SghgvB1bQesg4be0uxeaRwp/OEEuJch2Fx6ZViqSOwqPYPFofVCg80W0'; b += - 'a+M7rfLsL5PhvUOGdb3y7Bm0wDJme62YmjfL0O7Yod2BUP7HXZo31Ua2jvyoXdXaWjf58Y7Q3ub'; + 'lrdipgYSVogsO8i5lZzDLo88wRgDhsWsMsxZlz0J2Ay4v/cHXvzL2nwHxIsC4/PTXP/OVsVaeqI'; b += - 'O1Sdof12d6g6Q/ted6g6Q3vUHarO0H5bPlLT0tCmqSDNTfm5Q5vmArXx987y0KbJ4J23H9pQ/Pb'; + '3LgBTYgL5BH0epLG7zMbPp7V59bfbWL8Iw/H9ZXgmNSvGOWFJQdhyyMbkSVAKDsaagTdj4/DIYO'; b += - 'PFKO7D7JEAVSJw9WGOM4HHsR9ljta4+V5WLX47tUHPPI8tpe2U/m41WSzrcgAFeO4NPgGl5dyga'; + 'zXkjEM/QMiRUL6jcidWuIeNDi/cL+prPXpxqjZ7V764PnhxffDiEhjMtadPyVdW6sjh+Ad5ZSp4'; b += - '01dFcf/hU+ibCDv1Ea/M3S4G/p4L+nNPjTN2vwt/emlQni1dsY9/7EpOA7lJFPKSGL01B8KO6ie'; + '5chX+ZWVwSsrg1eWCU9/+hg/vUSs1LFn4/gh0a8s014Zx1eatdlTX52reuO4FrxfmLXAbmWQ5wf'; b += - 'exTfGTjWd2yKqOf4qs2vqqeGDH+Kb5m42vitZJnAIqPbXwsltF4DqD4uo2vyw3hRex1MBNQms8z'; + 'B2FmBekQFMEkaGbsUL6XAa3ApB/5KIwsn8JJIGWVl0Eppf5GW1oEbzTQm1ek/s0QsG4PRxkxZZT'; b += - 'AQQuKzoXwDDTlQrOpBtIxnyQNuTFyxzdRDRmBatCeomjW4jG3ABJTj5v42hYg+UZQgRIoSf0px5'; + 'H4y967eDWWbc+Ov4/KlxnDeDJ0I60Cc1+wPesFG9eAreyNX4Nio1SMg6iYR2lPFGaNQXwuxjuJz'; b += - 'cW7HjJsB8QwQDKJgZuwlPhd1+nvu6AzzZdTfw7NYd5OmsuxGPbd1NeJjuZjxGukN4jHa34LGju1'; + 'y8szy8szy8szy8szy8sz9sN5xeW542J88bEeWPivDFxfmF5fmF5fmF5fmF5XkGcX1ie1wXndcF5'; b += - 'U2leA1VhPKLFmBcCQYXk6DCVFgZssaVbasEUMCBXY3/ML0hmie+PoWwVA/IUQPT2aEbCMmiyagU'; + 'XXBeF5xfWJ5fWJ5fWJ5fWJ5fWJ5fWP4RX1i+/A0Yhqd/AAvLE/LFH+PC8pR85ce4sHx7zur9+Be'; b += - 'NY4OeD7B9tggZZCNaiZzYWs70Rcyp6/eu3PXvvSa6/9xf988EAa7vn5r0DL6zde+7WDyUUwqLPg'; + 'WJ79FC8ujv/2BFpYvfPMDLyz/pzaz7cRSXFietvZ7VgPyzkk+YmIVr83ijQaGpuDMsJ+5H5OZe3'; b += - 'EolGv/TD33jtta/cLZHMOu45cf03f/nHL5099rWKxE5z7G/8s6PHv7T0H3/9qsbCwlO453d/71/'; + '7mrp+Z8TN3/MxtP3OLMqwV7IFPxcCWjjwopVJUFhxIQSG2Mc5gZShEG/yUpoIo/6b/5U14Vgpnm'; b += - '+46t//vUf/Xcay/zqHriy/9y/Pj+9VSIXwDzeG8yGuIq5N4inUphNOsdOR2D9795gLkxDWkOeP0'; + '/G0FM624HkpnG3FE1P4S9rwzBTOtuOpKZzN4LkpnE3huSkxeQqIKX+Ji/wjf0sSzzzZAyLLonNB'; b += - 'OTUliqebSs5vPYlvbWfAGSdstqvoh96PKaY+/aW3OK6an1nNR6PkhbeM6EMCtyb5BM0exCjO/zZ'; + 'SjmUv5cW6cJfg0e/lIjSQgLGnDZCv8aCG276MdOtdpjR5QAz5QdMB8xlwtzwo6UD5hJhJv1Q6YA'; b += - '3BQJW1omCqqPpVWp9hN++WAo0M2Hhisv2mzKzVtJlipadPBik3zV2ga9k/LmzfvS6cE6Ix7g2m2'; + 'ZJ8x1P046YC4SBiOnL5aYC4TBsOlLJOYcYTBmeo3EnCXMFT/iOWDOEOayfzQBYE4TBkOl10rMKc'; b += - 'l3FvMDTFNopjbt4xaZ74UaD6N7lBvmCgzlkuSFPrplXCwDkHA3OrYqC2DANzOETrxQCfrC3DwAz'; + 'RgIEVMMZJDhxbD4SlKn6Z0HaXPUNpN6bOUrqc0K6NXYbpRRnLo9CM5dKhIDh3d+KZa0RmOYdVBA'; b += - 'H9mJgmmN7MYAzz9oysvQYA3O+dPBSIB1splLsUPq4eYcFA30mkuZ1kHPRc5F02VckNR0kzQQukk'; + 'Qo6OIZtpx/I4ako+lKgyzgOT0fRa4Auwzisi6IvAbqM4vBMFH0x0GUQh+4o+iKgyxgOz0bRq4Eu'; b += - '5ZJDUkSzSVJnJqmiNp3l8NSdXlIwAHU71ImuPIXiTNcmwvkmY4thdJ0xzbgyTefFH1PCGTxUDG8'; + 'Qzisj6IvBLqM4JCNoi8AugzgsCGKXgV0Gb9hoyRQXH/8w4CJdAJPBY5+heyNXA/cX3isDzU+jPe'; b += - 'Ci6uWPa3Lyb0ry2JZN+tmzoovGap2jsOGicDoDGyNJasAIaZ5XWEs5yTvCVWFpTNF72nNHmrZ/W'; + 'Q3mF+GCXgNgMjBNxiYJiAaQaOYXKT8+9hMsX5o5jc4PxbmExy/gAm1zm/D5MJzvdhco3zezC5+j'; b += - 'sJQso7XH9q5AajtXojSzEqEly+kM1XqOSKtfieGaJQaeMwidvrhCKdBZUXT2O+hc8ktkGZTx2cc'; + 'FwIrxoTkbsk/TZGHEf0WdnxANEn50R3yL67Ix4lOizM+J7RJ+dEY8RfXZGxJackxNHuMDsrDjKB'; b += - '0R1laOT5PrUSWc56Lzwue4lPJsiH4FP1YweeHC3R2dgfzodhxpWTWdrZNipe3aNFHk/psk/wVmj'; + 'UK8iKzE53jxYVwO/hWyXGkhio6AKeRYPHqlQVSEbsfDkyhobZiRYeZnUWBQC+MsY9pI+buUb6D8'; b += - 'StTWpJ/0uWFlqYN2nWQ5Ma2qRz3gpNegwt6miLLle0RUqJ4e7gQuhU9Jq/vKZLnlvTwz01rTFmP'; + 'DOUF5e9Qvo7ytylfQ/lblK+m/DTl05S/SfkU5acon6T8DcrblJ+kfCz3EdkX0w7FxLKeO44FjbJ'; b += - 'SxZtqanvBVquhMVDbmiUVFD+v4Cvl/T79/0ln9/mgqP4GpA0ODpilJzvm+mWFZQPv9g+ev0icvy'; + 'RNYpqyA0aSjZ+VkNJflmvoSSLPauhJFd2ayjJyM9oKMn76zSU7C5P56Gohz2loWR3VJ0OK2iUKm'; b += - 'iUga4Omy6nwiwRfsmjVa/gC9v8i+OvX9Iff13cG1cAU/daF1uQObW8dOqreh0PFUVDWh2t01nT1'; + 'iUKmiUKmiUKmiUKmiUKmiUKsg/YsLjmHzEdPJJwBgX5ekg3uac6u+ocQG6BNFbcqrWAI3H8VQge'; b += - 'f+bmP4e5m+rcr/Ll5HBER4XajLLYe7ELXg125VBM9d4bqD6O5eyCrR9SIM2Wq3n62kNfrzY3KKt'; + 'mtO1RwqPYCuQ/S2nKo9QOORPMsRvT2nahDQeCjPCkTvyKlaBDQey1OP6J05VZOoYwBaIHpXTtUm'; b += - 'zX8VnR5xI/OjgARmkhZ5SwTnjq0IhdCRWLClgUooi4WHyw7EMSulijsFJSn8TFWlrBW7RSFgtxb'; + 'oPFoHhfRz+VUjQIa54seop/PqVoFNB7PsxLRL+RUzZJ4trzOB8l1XRrXdYW5rivMdV1hrusKc11'; b += - 'OrFsh6bvoIZik2jYFsqKDx/cTpwXpxzX1x0X1yUF4eKF2fcF+fdF5fcF5dk0YNZIN6h/E+YGdE9'; + 'XmOu6wlzXFea6rjDXdYW5rivMdV0Pket0VtP5S2cqnZN09tF5RmcUnTt0lnhea3DZ1OKFgDceVL'; b += - 'Hy1Yptqeb//qX7z2+emv/5+/4ywYtT2fnPuhfz/9sT8//i5nqrzwrW9e/MU/+fqf/1mltKjScib'; + 'OHKmuTPJ8homo5euhT3SQCo5pDVnQ3ycuoJpRt0E3CNarZZfN0kySOYhXZct0ktqPYSzZqN8n4K'; b += - 'roM+83mH1idiaEuPoi56wCTftusDjMK1NCVWuUrf5Fes2t1LdZjmyt3JY4frsVGCHYiyzmx3ndX'; + 'JaU7d1NA0IUG0tW6KbRI4r1syoKFxcIdZcNfhTie1wg6Fsb/TEVRy+xWbETxp0NIvRu1aL3blNf'; b += - 'cuwsSIOVFWooadiFvF4q1DXZoF1qhf56V5D7NbvjrJ2lQzfWs3camyUhMXKys0UZav3ibuHM+nM'; + 'hsFo16v8DvWbMSptt8rvUrWJIWvXqfzzqp1y4gXVqDnRGUTDfOiq2LAlVhaZFHhFJgVukUmBKDI'; b += - 'p3e21rDAbsAYM6tu5NNXZaRdIPOp/Vi+WhgYp1KB4VRsqtyAHzFOh/ddJE1pVjC2t4qmKN+xXJs'; + 'pqC8yKVhRZFKwvMikoK7IpKCiyKSgpMikwImeFDTAX0hJctSEFQfJEjVZxbGxQk1UcUisU5NUHA'; b += - 'l4aNU+kmxexHeTmw8xZPiLfHk1kJTclyLC3DEH/BpJuhP+cuKm0zwJ8bsstOrWA4mmYwR8JCAAQ'; + 'mXqwkqDoAr1OQUx716NTHF4U6oSSmOcq6akOLg5qnJKI5pK9VEFIcyGsF4Kjo/jv2TGsc6QuPYv'; b += - '2gLGCseuUF9kSenSpLqNnRtGj69HGHD2bLFtd0Z7ZIG9t4F6h9Rj92IfFqWAU+rmPppj0knyBkF'; + 'Lj54RM3tqgUaT4yJCx2fDvZdTMnfAvZBOR929g1yPtWsauQ9+1hVyDvW8IuQ963gV2CvG/9Goe8'; b += - 'UpJTzyQpGyRnCFdqr0Kerppjb/suXdBjnXoDB5WNRsG8+t1MZ5RoNt47GeNnbQFHboViyXNTPkr'; + 'b/e6CHnf4nUB8r6t65yp2brOmvOTs499cgZDgKnPymAQMPXpGAwDpj4Pg3HA1Cdg7eZJU595tZu'; b += - 'GjPARH9wHnBcAyg7chR1zWrRYhJnDUrMZslQ7I7gP/qGNgR93GgoZzZtMzRYEH3S4GwCW1309LO'; + 'jpj7lajdHTH2uBaOJqU+y2s37hj67ajfvGfq0qt28a+TPp2bmTaI/5CbRAiPok9rRv02iWbSIVt'; b += - 'm4T21nV9VB6ivAJXUN9EmzukrbXV3R0kuGPkXqkxuqkuscsax0JdU/lH4tI3dgdDstfARQr8AYR'; + 'Em2kVGpES5iIuESGqnA7upbMwtt9ZLg1M5Ln/hWiFkkiIVBLS1OVxuEiPTauikj07moVM+OqWhc'; b += - 'qQP8ILF/ACHbIBpJpJ54t/MQ8bfh/wprQnwvl9phtx4vleDain73KCvBiN/9cKIb4z2pxc2G3Kk'; + 'RHKK8+O8cFqq4bUaWoxjMFbJr+A4vKaeDFE0r+1DF+bUKFxNXxykJZIefkqmfcFcf9VFh6k2RAr'; b += - 'u6qT7BxvT5Lh1rd6qLYmFTnx0Q5m5Y5ZAAl2FFRdhnAZZwPlbg98UqygWOO5Wr4vOmHwbudWeZW'; + '+81VRuWJlbHscHy/ZzbgStRpZ5BWouVyqkkL7LjqrBCjhKgJEMOESAeIeza/3UcIg9dhbVrTw11'; b += - '9ifIbZgLjS1kynX77xa2Ge3C2xVhPW19XgDhvXlzIcAvntSx4e3dwIItbPQfiP3WXCHSbjDJNxh'; + 'U5fDTC1aJhmlRyQwT0LJt0J0FhCZsGTuM5zPSjcLByKR1qwS2ZegVNhrPS8IEXBuyMCZyIWGSVs'; b += - 'Eu4wCXeYhDtMwt8NJuHcT9PafPmn//aZhKIid5iEO0zCHSbhDpNwh0m4wyTcYRK+G5iE6Z+ltXn'; + 'gqIggOLplZYQKeXFoqnAhCDJu6MuLlNnJcaYhAi1CFv9nBta1k+CG4+JUSZmFlYIXGC58Lf+nPP'; b += - '2Z//2mYSiIn8nmIRPDYglzqWWCKai/GfYRh/kbZ8RTa5s7qvzbAo1yOZbEI0SXZUaLL+y1o6jTT'; + 'dRr5YN7pfP9P+oB/OCSB/cDkh/+UUbxW+2P/qHWP4pHJD74I+wH1zgf4sMfwG91Pvoj0h/8EeUP'; b += - 'bTEl3sqGQ2dLEJaamITQgVsXPNcb7hK8dON8U5TbUUu9AQh8Tl2NkGlLOrMNXlxC71Qa8l7omd7'; + 'vv9b/yi6R8U/CsZNff+PSDz4Fkn9QBj5ATRisWvpQ5WBD1DOP8Bh9gHwx0dokdSHv7X0B3Lrx8D'; b += - '4N9nZh9cDv1pdjNIins1rcO55W4aSvVtz7OOgul2nJco1zXmC3PlWvKcc1yedXxdEtG5PS1eaj+'; + 'gZQ+PwT/CYGD9QMbMD/Hh9j+qvvEQh+UHwCfGQ9UXH+CtP1jue4A98oemxj8Eg5b8o6im1A9LDf'; b += - 'iBJDuXQY9FSWqIwlGFVpK+fUg5NIfHQuMDNWwks4zlMlmLtye4mMeTlaYlahhB/YBFUupNwiWGf'; + '9TutX6gYi7AjUpFmXxGSbv6O+sMetOrDouzVboHW2RBaecbmka9NgjEg1KJShj0gfRAwcKLAhLn'; b += - 'ZoFxST7sCWDCRBXxTuT1s0YXX683l5rCe2VC5IdCK0qG3LJ5/txC1vlJWxl8lZ2vdOdvrztlZd8'; + 'AX4R8XRPlMjygs7Rrm00FRLa9AiKowmpgpRLRbRs9GulEQo/9Yk/kHxEnhIwZSkQtq1FksLzRLl'; b += - '5k3Tn7151zYN05N6w75+C6c25cd07pW+Ruma3Z4jeE1Od6SN2Sskvklohd8rbk6xK2JVyXpC3Ju'; + 'wxkXi8USeirayRYilH/rQvyD4vDMwjqLw6uSdHy2RYe3k6syHdxm0fnt5Kjsw+csdlP24bMWOyn'; b += - 'sRsidUlY0umLgErgW5agUDLRIuPBjlpcUjjluXi3/a6c3bWnTNZd87+deccWHfODevOObjunBvX'; + '78BmLXZR9+LTFDso+fMpi92QfHrPYOdmHT1rsmuzDoxY7JvvwiMVuyT7Ma8B4uns92c89SldS2k'; b += - 'nbMgLTfWIausI+YTWRw12/liqiY62PzH/zPPitiYmL3xknMU44tRJ9HRnvmmNd9emjG9Qot7qca'; + 'DpKkpXU/oIpY2UrqH0UUofo3SttL0L3/Zer2zv9ewEKnzTu6dMy/VkWq5nJ1Dhm95Xhun7iC5N7'; b += - 'GG5JXsrboBZdSSyWXk5iobOWkJaVPy+9OuCZxS1mzWd+8bbPYIbipqhJiXucZaW1e5/Ky7iSuVm'; + 'w1h+gGiS9P7qjD9LaJL0/vqMP0o0aXp/ZEw/T2iS9N7Y5h+jOjS9L4mTCcnUOHb3h8NFxjhAtL4'; b += - 'ss+rXe5hYvusO9lvfYjFea3PNJY1k8azMXOoS1nnCoJfbGzZfiiMGB2VzRAhfD6kstOSzxRhwDj'; + '/li4wCgXkNb3tZIinUDRNJpGTsxnzjT+AXMC1/peyYXcC6MS9QPsEXhuPPJyKdrnfZ6+g88/Y7K'; b += - 'MyBVaH/HMGYkKhZB6pmHaiadaBq1tAUVDVryPGajqpZd6iEKsTRd1pTRI72ZxrkNh0x27D9pMJm'; + 'zHztvIgaju5X5mFuIOWWyiz47ciJmDDApH3MTMScBU+ljphAzarIjPbt2ImbEZEd6dvBEzLDJjv'; b += - 'lJ+HRKM/t6oG/cWWRPSYngtym47tkqHBoGT7MWB1S86vNh19y8tpCTuFR8CHbJ3+BtwBiq3BWMD'; + 'Q5dmsGzH2D/QZz7NwMmHsGuwzm2MUZMHcN9hbMsaOzv8r0sDk9VoTT7SKcnizC6akinJ4uwunVR'; b += - 'rNu6aBa5aYNECVyxw2QKXLLBggYsWuGABtejoqUVHFuVhfWuwkEFu0VFCuV3BSCJyREYmKvWPa+'; + 'Ti9pgin1xXhdFGE0RuK8HljNJuvFbiKUDDhwNUdZNQ4sGzBCIrc6tajOLTp/HdPILe6uG/tMmMa'; b += - 'crKOuxgb9VHThrsytmE7huyBPl20JtG/bMPBk6vVrbvfbx3prb/Sxs40ViZaa2zECeV9gQq9mip'; + 'aKHcXYUikTGrBXKr+wg+izGNArnVXYP+rox5lJa/3cfQ1ZUxa2kR3O1EL1fGdNFSuPsUDlqMeZo'; b += - '6vjvVVczTKvIyQuPohh0qtaNiunY6WmY6WmY6VWMqpXt+OlVjaqVxovZaN69nOBa1DPWr3D3tla'; + '8fNx12JUY8wx5+bjd2JUY8yx5+ri4BnaKMVnmWXcDyXrb3Rj0SJD1tuqMIOht1Q9BytuqC4KIt1'; b += - 'p6tOmLq1qDe5vpxUZu4kGt9qss0uRk1uyC8QU359JYN4fXlBYhAvMH1sxo9tpCJTPyTZ8kz9eaZ'; + 'XvazfvW6rjtZv3LNXn2s27lupu8EpL9TR4m6U6GbzNUv0L3mZpXWsaBhGXusfjlD5B6ZOUNlHaT'; b += - '4/DYlqfG+IbXdV7O23MRyISs0wBuXWI4vNSV0TPLRZgUZ+wqTfFXrVg2T17pKrKEmtcKeWmGkL3'; + 'GkLpa2UtlHaTmkmb51faOv8ilkyilkUf7VrKMmSbRpKcnGrhpKM36KhZF9p1lCyezVpKNkjn9RQ'; b += - 'InssJSn85VSREsGb9M1rTU115mqU/0KsVa5dr2+t7aY68vtlYB1VbogCV5sdLKEW+O1b5kRat9Y'; + 'shM/kYeifv+4hpJCwlVCQhCru5Q+TukTlD5JaROlzZS2UNpKaRul7QXr/Ojj0a7B6OfRpsHo69G'; b += - 'vkSM6tjuy8u2e4Tg328mLWs7b5A7atxn+f292JxfBizOTzuoab1uxexVQ3HUJ94GPVNnGesasZ4'; + 'qwejv0aLB6PPRrMHo99Gkwej78aQGo//HExqMPiCPazD6gbgajL4gQoPRHeRBskmoct1uYsiopu'; b += - 'fF0lap/bdWs6N0Md6JKo78LiANvt6P2SL5WqOlYhq051ankmVMipc7SszmrOb0iNCPpseM5Xa9i'; + 'AahwLXDF0GPxEuMGHoQvjJcIHrhi6Fm8IFJg1dDDeHC9wwdDncEi4wZeiCuDVc4KahS+K2cIHpP'; b += - 'KbLExYjqFjcCg14ggmy4sZQD5r1qCj6/6vUYEfyHx44ObcKOyc28ajbBrEvmTU5jmc3yehCuRlg'; + 'J2jPVzgVp7OkQkXuJ2nc3RISjdJIFEvvJxYKRpyYpVYnROPiMacWCMezYnHxFp0a+3KiafE0zmx'; b += - 'WTtPGc2JBvslzuBwlumtZ+WsWbL4TycoMPe/HfdorC9P1Obyj13uPFBLfYjQ/N6B9GJRt7pum/5'; + 'TjyTE93i2ZxYL7I5YP6ND3YQDoaKiGElYiSKGLwixruIITJiVI0YiCPG7ojhPkJDiFAnWFLw0Oh'; b += - 'Pk0GCam8KOgwsYe8yn2n5pK4vT0fEXTX5H0pCd9etrTDFOSIV6WwX7hgGQIl2WQb1CSr0ntPY/+'; + 'RupLSBkpXUbqa0kcobaR0DaWP5m/XuG+y1v9ogLonUWsC1F2JagxQMxL1SIC6I1GrA9RtiVoVoG'; b += - '0EmarQmte7PkpSz5AXq98lQL2ioHTXgm7Rym9rc+gWPDlmn8/RZsxWobm7tZjJfQw8lNTs5mDxp'; + '5JVEOAmpaolQHqpkR5AWpKouoD1A2J0kXJpPnwlbkZQ6yYU5tDD8G5tDn0EJxLm4uJ2jm1OXRJm'; b += - 'bVLZQeTGbOxmNZ/8h+R+JMf1y5dkWcBK+RIG531PxW+sziuWfO3se/UTa/BR7h0o3H0gH8LzLwL'; + 'kubQ5ekubS5mKicU5uLidSc2hy6/MylzeGu87m0OfRgjNDmaOe4iIPq5qtwpaImvUvuDHbEAspP'; b += - 'FW2jGbD0xBENu+0C9uqdK7p8yAVYZrmP4D0DDMc01x42MoWna37PEyMetzDl9/p1cZ35s9OnEmH'; + 'UoSCUuH4cxGa6/gHt8vtk+rgdrmDUh3cLjdRqoPbeR+lOredt1KqY9t5N6U6tZ03VKpD23lPpTq'; b += - 'fgUVePgVHcjPEwY+n4T5bZQfl5u0362KR+gyh5Imyt8ZRMV0TkAhzUINdmDFzvH/lf60a7nH2QS'; + 'znbdVqiPbeWelOrHd31w59jHMNs46RaYb55wi840LTpEJx0WnyIxj3Cky5bjkFJlzXHaKTDquOE'; b += - '6mCe3HPwk3sePfwpdo2Vbj2Qbof3iQPsYSsdRnutm6u0fSAdQuy2qcLjVsO0pTpDy2uSDk3t8XB'; + 'VmHVedItOOa06ReceEEz3xuO7wJsuy8E7KMvwj3kwhr6AXUqFBrVSYUCCGDzChK6CVDMfOePogb'; b += - 'VMnD4JI3Gmf9QeVZs8B1679MtNoT1b3/3nU+3/CzOYGVt+ug3rgRPp+EwLdtIkQgTDjcDrOtX8X'; + 'XT3quARCQQwygxcq+CPYDJMOaJaLMZbaHqOYZrQaJWSD6qk60EM5VBoYvP3KDtQuOCbcJNoCd2F'; b += - 'ZGY4zgazXNd7VCcJ6l/gxFeRnMvPY9PQyjk2GG+X/2R6uan+qAEN7wGlk1A0s1feaPQk2mmnGQ0'; + 'k/2DBJdLeCFcK0RF1kr3oOWArhyRwEYXLvquMXINS4gqeU9pupuuFfJXpOGaQlMifSFeDwqTAi5'; b += - 'hvd0GyZ6kLzbeMnujgu9PZm3ng3poiWSQj/U2bTVGr2o4mbkAcGnjzRuP3+bs0O8awfIuWwVkkr'; + 'EmCehasJfiOEZauguEwTBQYItCZfBtUSUZE34sqRI0hXpJZKOvyiGXww1Xw5fFsN6pF+IMy22ZV'; b += - 'qljVeahSMZtED/jFvWlwxlD3J6YxlTb/fquFc+YnWwGf5BKZ9qOEZ4a7wR5PnA1126YFr+cmeIJ'; + '58zKw+UYO2zLGE74J3lmPEcKNY8F2+c5zBryZbJsY0scK16VBxtGU6UEt2lC8d3PVL3wZZCF8Rh'; b += - 'GSXtP3wE4SYcx0wbBRMSEbN784SsopOsRVVMKtAw2EpW/gMnJIzYp63+WSqDo/cQ69n+QOKkmtW'; + '+ZnAySKPfhmmtCZaGIh6WHSnM5EA4sP30L4VABPIzwWwDcRPhnAUwiPBvANhEcCeBLh4QC+jvB9'; b += - '1w/wFceUwRxVDs8xTTRHrjhclWm78D/8RVLhLEPrW/uwGXE/uJdinX/u7gngr7DkJa2jQDzxMFD'; + 'Q8ETCN8L4GsI3w1gULBNNqYsJhFVQ+lSSpdRWktpHaXLKV1BKYtDQakrRSOLtyW+eFusxNvibow'; b += - 'U7h21MfxMl55nWDZtJguyoHtZodswE41DoMfLCVUFT/fmpmswvLv/0fhGHPTiPrp7+LX/2C9WRP'; + 'KZ4olvnirUb12MfVaKHDOL0DibWm4wAUuIMXbsnCBi1xAirfacIFxLiDFW124wCUuIMXb8nCBy1'; b += - 'oet5iPCU3ULokxLilodECPj5/m74ONaCOcqQbclmke+PKV+2eJUi7s9mbITBNJEt/d9aavbqlyn'; + 'xAircV4QJXuIAUb/XhAle5gBRvIlzgGheQ4s0NF5jgAlK8eZLSjfG12EkTxV8imrltChJz1hwMC'; b += - '9ruzWl+0L5/8TRezO5q/aiFtfoYixbC6PWEDEtmw2j5j9Cpcxk0f82SXOMX21+CjVNhByeZrIZR'; + 'xlLbjtPUFe2s9NQwBd4CZCXY19mGE+O+GXIduNALmJ+z/SqspNfhY5hE+KMycFZkPc5c8rPjPmZ'; b += - 'OQ3oJXPiKN9gepIegYmo28qW4/dVn7eZpxDuK+pkn9Av/bNCaHpsz2KfhvMm1g/q4pQxPTFozgz'; + 'k35m1M+M+JlhP3PfkJl7fuaun5nxM3f8zG0/c8vPTPuZm35mys/c8DOTfua6n5nwM9dkphH6yVD'; b += - 'Wbrfpq6hvebbfvNEOF1T8XAsUgyRd23cQ80+ZsSGASJEZhuRs+1qNMw4UnP8QvE5npdD8Otj9jN'; + '0P9fKxlybfI5t9BDGmsCVCzs7+bVvg+yyAg/ia4p0o5A0oUhThaTrBntQ29mb+SQbvZ+hmWLkks'; b += - 'g0rN+GQXU9fgFJED3uUFiyJhFKczRT1Jld5Pldtg2h/kyxEAXU/LFCt6/dkV238ydh6HpfEX+Ns'; + 'xyLwljDtWMFHy40GIDzqLRoWp2kYcS0qIPKBDteC/K25lf/HaMskn4pQnipBgNb7yuE0eo0CDNa'; b += - 'oDNdgzyNqP6hr/wcn4emlucf/YIZ7x017pqZeGG55Yp6x0gwbFgrYZR0MB9AaLTZSYmLt3uNVYD'; + 'iEvACXCD0d90SKTX5y+AmFiK+IvGFK6Q0WS/hpV3Be4awG+GVPyrBHAqQBsAPBGAAr0MA7AOgCv'; b += - 'un0W021F0YsWT55/r5Fgt+RPhziX6uvWfwAGXiL7b3vHDAtEof9fOPsrsob6WPNoiD2UmcQQdAB'; + 'B2ANgBMBiEtW1wIwDeD6/T6EAXTWKRp8VrZTQehT3aagGCZND1++TseLyNdb8SLy9Xa8iHy9Ey8'; b += - 'RYGIlzHEmeXDY0nM9T6z/R7Vb5f8VgEA6i4vwKb14vexOOsoHIEuzwqNXsnbqtYj50mKLblUWUD'; + 'iX2fiReTr3XgR+XovXkS+3o8Xka/DiSLydSRRRL6OJqLl68mE8lwPrbcG8hV5YTqOoqBgL1eCOJ'; b += - 'CuyVNry/gmkWLmkD0ZGOaG22SX5v0n6wb5oYuIk18Be07Kf0M4EpgE2+3F8J3UxhBhdb1O5GtpP'; + 'olLeoOdoSHfRx7YSjyB3K/VGTipJmkRw2Xe+vYOZLEtC0AvmkGwAjvfHjg2a8VUFBsCYwaZu3HH'; b += - 'd3O8UO8YBHzrtFJe6XHwEN3/Om5p6IE/1Vkjdn6f65a9O4eoImTixVG+wk4SfUGY8VvanulmEwT'; + '9RoztjwbrhOx48cFtaRDHMUIO5Kwq34EeEw6ZYk3ZOk2wHptiTdl6Q7AemOJA07TJoJSDOSNCJJ'; b += - 'ReoAaXq8sQV1kdcd5yxK2K0ynhKHsqJrgykVQMrolD5uGlcuyqmG8cV62Qt3qFvNUr5K2rQkxdK'; + 'dwPSXUkalaR7AemeJJ2UpPsB6b4kjUnScEKRiEMAdUqSRgLSiCSdlqTRgDQqSWck6WRAOilJV+V'; b += - 'XvzrmRY1L0JYbxr2dU/0FPN5BWaBoD2qxXr7SLch98P46eyb1KuqjUp5vD1PNzk8FIeTjh8Iw8P'; + 'PHg4+Y1h+xjVJGglII5I0IUmjAWlUkq5L0smAdFKSJiVpLCCNSdINSToVkE5J0pQknQ5IpyXppi'; b += - 'cvhmHh7i8K08vI3D07mjDcPhQ3l4hMOH8/AohT2Fd+zDhOkzxbjtQdoDRTt25u0YhdMYbcMo3MZ'; + 'SdCUhnJGlaks4GpLOSdEuSzgWkc5J0W5IuBKQLknRHki4GpIu4b4cGMUHHAFl4YFSChzAaWQGmw'; b += - 'o/UfhOEbrPgrXMVrvUTiP0TqPwn2M1ncUDmS0rqNwIaP1HIUTGakjPT5UriNOmaJyNR0HI1LVea'; + 'okjOPhZcv8Ql8LdRIX0pHqKRduKfLp1hAfPVN7giT0Wo+lwF6su6EPt0MTuEtKvHXcxXkcTbg3p'; b += - '/A+QWvjPOLXhnnC14Z55e8Ms4ve2WcX/HKOF/swfnVHpxfK+G8cLPitmmGneSU23S0p00zTpuO9'; + '1467FK8jCXcZ6deOW4vX4YRbR/q14y7H6/24uwKvVxy3Hq/34q7A62XHdfF6F0+/guslx11JGnn'; b += - 'bTpeE+bZnvadKKnTad62nS6p01zPW0629Omcz1terW3TZigmJym/4gPwHu8tvKhs2s8VWyUlg4G'; + 'cbcDruOOuonlF3F2N14uO+wjNK+JuI14vOO4amkfE3UfxetZxH6N5Rtxdi9dzjvs4/SzUDkppgd'; b += - '3TCKSv7IB6/k04TKptPDZabw+aveuGsBnz03cXzkxserxIuhzXI5vAXWQy1ZlKfZeSq8qGc8u/O'; + 'jkMWJDjDu7h1GGl+TEUlGTE7ViWU4sF3U5US9W5AR8I9qFPbQLN6BdeDXahRtz4nG0Cz8mHn3Yw'; b += - '4D+BCjY2bCpsV0C6GD9tsPdEef5L9uQL0cpCfOLvDvJwFOB78De8JsXPIUxC21OxtfZL4RCwm+F'; + '9p57mkYQRE7IzIE9lcvyV0awxxir8ctOigY0IcFZYdXweLFq2QJ5KVZSHkLcMMTSjJvoabDeXat'; b += - '6U0SSEk70q24s4+PfY4mmoa608NBTLoymPRB6D8hiSxzZ5GHmMyGNUHjvksVMeD8jjQXk8LI/H5'; + 'tyhrHPasWrFwjjH0vLBr3z8mFr3PXwo1aNXSb0dr7nlvYbb+qKg5nzXeGZLCc8Ec4y09jKn8IME'; b += - 'PE+eTwlj/fL4zl5PC+PF+TxIXl8WB7fJ4+PyONFeXxUHi/J4xV5TMljWrmLQ/o8rM8j+pzR51F9'; + 'G4Zrz3gJ80EJ+Dkna9BzDMj+HqPI5Nf5z0vicBfwcEsuVc4ze/ByiFj6nEp+T5ueQDK+YY5Dn5x'; b += - 'HtPncX3O6vOEPk/p87Q+5/R5Vp/n9Pmq15A7UriWavxfiV8/mOAYY7GiUh+ZkgwjPxDkB4L8QJA'; + 'C18DkV+JxKfg4J/PI5dAF+DlELn1OOz6ng59DokJpDZeDnELXwOSl8Tjk/h4aSsjk0C34OUQufU'; b += - 'fCPIDQX4gyGeDKHs+/e2vfeunfv1XTrD4C1s92fPjf7bwma995re+HknUBYr63Lkvvnru1379V+'; + '4bPSfFzaNxJzqGA8HOIWvicJD6njJ9Dg1RiDj2Fn0PUwuck8DlJfg6NaPGwOsO3EzLv9iXnQSzC'; b += - '7jqD1/eu5//+yP/+K3Lj69O5A9FUwwZWac7Vg9tpdt1HZpmxjAHm2UmS4MmX6Y2BrljLzSehrx+'; + '7Qm+XepCGD0bkDYjYbwjwwxI1hJQRZbhpA4nMLgBkSy9cRLL72dxTmAc3u/xzACQh9+HN/A200T'; b += - 'qfWY7zSetqT5K6nPUlT4lYC66mTYokZ62mVqHbxK2y69WDyQ3L2B4uZB7NYZoNdRFn0Qyw8/T6I'; + '2ko8TcVSa8S3HiGwT+bJOTmrkJJGv6OSURk4R+apOTmvkNJGv6eRqRYa2zACIJSb0EjVaiVTGrK'; b += - 'nyEGH8DPIIM78ZMwuAM/TQZH8RMzOIIfNk9k8FOZ4iOEqam0xa6p2+Kgmn8T/hVf4QP8i73+yWJ'; + 'ES1/USdVqJ8oxZRyUm9RJCK1GRMQWVuKGXaNBKVGYAxBJTeolGrUQ6YzZmbzLVXYDUtS7Gi7cxb'; b += - 'PP7DMnXZ+DJG73LaHAqZlAXsUgX3JoPXtzWKIU+lGCbMUYufQ/nSThj9+4c9/JqLwZpv/L7908x'; + 'Gqcmgso3GIxxidZRsUZaTMyxYWlvMHKTWv9FD+iUutv+NkVWr/BH1qu8T9WTUrjY6pMsQA+f7H2'; b += - 'fp/SFNPzz3tZ8KKH2LhiGf6FN4q81/5he+uPjKFNscgi2hvcS2bDg5gX7eR1xhbq2LaGWAokOz9'; + '7QlNojQKO+AwyXZrAVcmf0Lak0huueD7U+QiaIXi2RX6IFr0V5reuYwy1WE3wzAqa6QPU2maGoO'; b += - 'aS16eWZfo7ZctLa/vJMwjFDJ62NMNo5c8zmk9aWmGfaHLPppLU55pkWx2w8aW2TeabJMYMnxYZZ'; + 'GXUr5aZkvFUa6O2/iz9ZBzJJOUiKUwlJyRG14LqEtx0iHodinlx5RO5/jtPVY6jT5Ck2ewpJvcp'; b += - 'bOJs+j/NV/Iu90GSfmaeYaGqQOaiQOaiQOaiQOaiQOaiQOaiQOYifjwM7gMzsJ8FE906LAzuZT/'; + 'imsMhKd0rM8vxbsSIfcDv2wb+A6sZIZ2Fekj2CQyfWF1YlXtGKWyXtQybNTsYSaK39idVmvfQ8t'; b += - 'bNV/ueLPgabbKjDmbIqYmuryOyHCB8/dIsoGusbuA19mXchtLvh0NHkZDT9L+PMnvTZpCwzQxcB'; + 'XxrLVukpbWWbBEYTJ3sCjMGG3Kd2ewKVyn0bHgLszR0l0kTNxlnaeKWlCZ6f2dyWaHNgliFpnGh'; b += - 'PhoIVGI9909JmGKLPXqQFqEfugvghp1d7q6CJTy9jQcF3ezUeV544q786o+mseVWr5qk/G1daTs'; + 'rT5JaSIjqwNF+r6CgXH9af4oYi4bvpecSStYJq5geeU+Zhgx4waHzyPMMUBcNHxHOhPXsUxcx/L'; b += - 'LI1pOPLN9WJSczFNKrQdYM6yohMJuB+JqCxBetbiY412lJQPKzobT4J61tNHXG+iSdgcDygcYb5'; + 'SPuIoIM4ZvjueiWtZJq5lUcBcQhxAi7PB8XIJsQ9NzgaHyyVEH9qcDY6WS4g9mOCalvsh17F0rw'; b += - 'NNZx58MkHzzL02iDVa5QR59v6hSPe6jBk2J0S8agbxoUj5v74ElmYqoPVYYgkPlQZRBWOR+qQBg'; + '/W3rxI/w0y+nq+QtUQdks45xcgJWlVuMAFLiC1n9XhAhe5gFRrHgkXGOcCUl9pDBe4xAWkIrImX'; b += - '1fqgCF5rRQxUIytYfqmDL7uFYA0bRh15+qDLMUELQVnFLQ9AWFuxE6maGkLqJIaRuZGPsSN3AEF'; + 'OAyF5AaxqPhAle4gFQdHgsXuMoFpE6wNsKPhQvIwT7C0WWCC8hR/Anlv3FdGsTQ4dOKdqkzySaB'; b += - 'IHGEJqP77KqR2GkNpmCKktVIZTGwwhtY8hpNZRR06tMYTUKkNIjZizQ2rAEFJ94QIJYkzAm2ZlW'; + 'psDFYauvwQuy0rqWz+I6c+tsrTO0xsoaE2vsqzGuxrIas2psOs+gP5IMaoV5MxC0SVHAlch1OCl'; b += - '+M7WL7f0Hwl4p8jFXaxFrI7XbC9db0mzipPNk4k3ttx7DEXqLsl3Q69kG+Ynsu3VE/lm67H8m3Z'; + 'WnsowE06xeyctpVFAb5gNl7ODJy2nUUhvmBFXsIsnLamRLzLMiivZyZOW1cgbGWbGyJ8wMaalNf'; b += - 'g/kejndvO5hlZz6emXvm+HkbwHsD3jDwLoK3Frz34E2HmvrPZS7qLCq0k73ZgdRyRh1mX+viOkX'; + 'JHdp9gF9KneHmNPJLdp4lj3XW8xEY+ye4zxLpuNy+zkVey+yzxsLuel9oogKmbJWaGOqDlNope6'; b += - 'EMXDrWGfRhyNWduCwBQ5ZYNoCup/17EbXsztgz26NPbtn9uxm2tMNN+yCYLNtRV7EK2fHqRwLsa'; + 'm5krnY38ZqbuzkYTDiMtBxHOIy0HEI4jLQcPTiMNA8cHEaaxwwOI83DBYeR5pGCw0jzIMFhpHl8'; b += - 'RWcsdNgZBpuyfM5vLr4qaiEL7xS+UtsYV5/aIRrBR5Pfu6+ELq/WjkigTgJAjHQfsmun3sJYht2'; + '4DDSPDRwGGm/02EY6ZUf0pMP005Ku1Snk/zQdSxgnk7FPIrhOjSUZNKMhpKM3a6hZGdo01CyA7V'; b += - 'V3j36v8uyj+j/j3Mv9e4t8F/r3Ivxf49zz/zvPvq/x7jn/P8u8c/57m31P8e4J/Z/n3OP8e498Z'; + 'qKNnpWjSU7KjNGkp27qY8FAmEJzWUFB/K7yLPjesDO3xiZRUGeTIp9nKHBjbm1O+nZQzNM9SkIM'; b += - 'L2WTgEe91QQZilrjur+2Sja+BqhaEYdIRJPkKhG3lWFxcVojJsFexU6uL2c1Y39WQyrqcCjA2Vc'; + 'xtGlin+YWaFIq5RQOrNa9QkwIyN2lgSvMJNSks80oNtDVnLpOCMz9I1ghV6ErcXGJG1T5X8spuO'; b += - 'ouQPeO+dZA2hTlFLjUuqRntRmKXWmJzUppR7tSR10U8VdlCQQz5snTePA6VjPm0Olco/3pG4rpc'; + 'j4losEUfZ8ujJvD9AO6LG4J09/SRXFrmH5Ul8RtYfp7uiBuD9OP6XI4E6ZjJ4/qFqrAiKHL4c5w'; b += - '72pJpS6ome1JFS6qme1NFS6ume1B2l9kRGMIdb7hmwMCxY4hXu8iKhd7eMZT0Xg3kJsxHd6q77L'; + 'gVFDl8NdkkKbS0zhzubj+bh4YnYfT7FJbH6wQ3EwSkQMKRHDUMTQFTHcRQyREcNqxFAcMXxHDPk'; b += - 'drixNgGs5BbPtocVxA6E9nkqDQ7iWuxsGRH30rLlZ1BtUtOm5DO/qZXFs5VG/YsKsdFFcayox4P'; + 'RakKEUuFpLuEf2LkTK2uUKkuTCmpdc22A8tc2HwtQ/vrmowHKX+NcE6D8dc7GAOWvdT4SoPz1zt'; b += - '7VGPa8E+JfOi1b4jxiKtZiYxWiFjtCxjvL6MMW7mYztulEJhcbvBmXwlT/F3RgnsjjtPOqRJh5H'; + 'UBSq55rgow6wqcQdXapxtg2gpcQXkN9GFrc2OGWDSnNodh1eZS5jCs2ly6HIZVm0uVQx/LuTS5m'; b += - 'E3rvzpMOadARJ7Ow7TzqiSTNIYt/gedKMJh1FErsSz5OOatIxJLHn8TzpmCYdRxI7Ks+TjmvSLJ'; + 'EjPqcihj+dcehxGoZxLjYuJ8jm1OHTRmkuJQy+3CB1OOylD6m0loiS9iybiuwQeIxTXHKAczflp'; b += - 'LYr3meNKtJJ5DEbtDzpBOadApJcJqep5zSlNNIYXftedLpQP0RVpSMLVVYeYlWIS/B4hw52ajTv'; + 'ieb4VKM5PS3VHJ6Wac5OtZqjU53m5LRcc3BaoTk31WuOTSLs1DQ/ffgRmD7E+GCMktnW3GPhOQR'; b += - 'nKGeK0MIbqNBo1Od3MB5Cn+IPH6D+oxRB9fjvhZ5wO4Fem2aKTwbYOeWeHU6m3i0E9cpeN8wHs5'; + 'aoGzpEWlJv8M8WG4WZt9MPnKD/Gakf6ZB82K0NJWh/QoEGvpPwnSarmz8NtAFhp6FxqQYzaHZb7'; b += - 'bXUh/e3zQYGJeWMUq/yMp0P69gKcXo8Apy4I8Ifjenntx31pPx9H6NEYe3Op09v0nXA93hzDkjf'; + 'IE7sGrKd/MJqdhChk42WAK9lgct/Z7dgN5WsUGBb/R5qh8RuG+c+5ofCKex56q6mCoCnUwlDoWS'; b += - 'HQvAtwnci/Y7Hgn1tlmdXF1RwOcGqGB3IN7JTQ0/4mLAwdB+ytw+4jg6ZcxFH0h6LIVaVs0g0DR'; + 'h0KpY6EUgdCqeOg1GFQ6igodRBUcAzUYjoGCj4LV2F9R54Cm5lNzkOuNLo5hWR19Fa5OnrLXaIO'; b += - 'wAZAwhbRip37wNnCbyTKGVV9rAoH/QEcdj30T42TcxSa+KyhUkISxw1gJzFjhtgVMWOGGBWQsct'; + '33Jr1PFb7lJ1AJe7TB3B5daqQ7jcOnUMl7tcHcSFx5D6B1jVB4dxCT6+00MfCXIbLTwOxV6PPlp'; b += - '8AxCxwVoKPypTb6sAUOWWDaArcCy4hZ4IYFlixw3QLXLHBVgDb9rMIKtGi7wNcos74Ij6bB34RU'; + 'kFKQi3kqxMmwZtsK2x2T69TKxWIuJWTEEbbBE1IilYpmoFXViuVgh6oUQnlaofMitVC8M2R3Z9w'; b += - '7MBfrzxskEvEpuFqrFJteIwbDe8baSDjg3j+YdxY+jwK6nKQHQrbKmTXMSFRiB38QvdpKIKtoek'; + 'tNNKnCykUGLSMbT5TPMn96eciug05xHp6nAll/v4iNDnJegpH3FPKWwdNsyN5VyGlp24TsjELeN'; b += - '4aSp7KfN5H59g5y6piRr7ELTSc571fNsjhVuVF/t6xPlEwpkzMeRJ1435izjZ8e4lhnO3f1Xhiw'; + 'PhAEHy8Qk5JayU+XiFvSIslPl4hJ6XVEh+vkNel5RIfr5AT0nqJj1fIa9KCiY/3kSTrbd5A0vAh'; b += - 'RfV/gSwTcUvkLwLYWvEnwoFPg6wUcUvkHw0VDKv0XlH9f4aX+3P6vwYYJPKTxD8JzCxwg+FzpDi'; + '5bs+oWFZv8qX9Uqgew20F20RSXCS9YGkZiWvgZWLVb6ofySKvhDoUtI3RtEXAF0K+jVR9CqgSzn'; b += - 'iVQI0cO0BNJwNARk8vFOSMrJufxOSUE7ohZQKYmIaDI1Mwz0Sy9dkkq+2clTxOVuM1lRMPcdWot'; + '/aBQ9DXQp5h+LopcAXUr5tVH0UqBLIf94FN0BupTxT0TRE0CXIv7JKLoFdCnhmySBdZJUocArp8'; b += - 'f1OW5kTct65dfKIOrJ1FvuZk4pJY/LZH8K9EaVRue1y+UBUBxKaVW40m9pVIzslKTExPZVzio/L'; + 'gRBV1hhkI+lIsUh8vGaPyY4sZJG4PxYzrBwCUCrjEwTsBVBi4ScIWBCwRcZuAcAZcYOEvAOANnC'; b += - 'bKmdbtDWbP/oFFovtaWpbrlfWbmrbShm6fGFPU0voNg1a6zCDN3ItCrgR8SCj2PVMP5+WyRjJpv'; + 'LjIwGkCLjBwioBzDIwRcPYB82KIoSJ4MIpj9VkHrVrih4vVtDyJny0azntL6Gx3O4oteaYCZWro'; b += - 'ez/LDjQlvdL9Gsu58FNJ3RIMNDxwiPKgSSj/vMGrrjBu/1hDNIjdNey6N1qsUOHXixpV3pK7IrR'; + 'WHZ7DtY87y2lo+DtOdjzvLeMjmi352DR814tnU5vz8Gm5706OhfenoNVz3vL6QR6ew52Pe+toDP'; b += - 'VXqtio163ovW9wvrv3mfxDVaSQfh4gIunCWSV3F33nxQ6HcuNJbUjTe87Ptz5hW1+c8Lf58D0sg'; + 'i7TlY9rxXnyG2CrPteU/QefToYEReSMLBpBQTXFijY6ZFFSYLMFmISTUmizCx0aMY3R+GRGpI1A'; b += - 'NWsphvh4onGh39sK9mKmb2/aIPbiYBaaCvqhlfkTLT4AamWeGHFXsZEWcwAfSlt4vIA98qj/fMq'; + 'yJpUNi2ZCoHRJ1Q2L5kFgxJOqHhMjzNPasrLEfBqQTRw5n6992E9mYa1nr5dhMXt8OrzwaCJXS4'; b += - 'G2Z9L2TD7+1M2zP5UyobZ35eyYfbHUjbM/nDKhtkfTNkw+wMpG2bfmbJh9h0pG2YfTbfyliYd5n'; + 'l3CX350ePmxhEuU+v5SGj2pnuDQ4bI+3ZH+VCnc+sDxj9WbcWTV32zh+uPDfLNw4Y/HPKtwzLPC'; b += - '1Pyv4ntqV38Q4qvZu3YOl23qelhjdzaZd3fGnK28L0HtmMjazmZoxa0MguRK6LO6hcZ/NRycUdx'; + 'g7UdOX6H1/V46LXCqyOLC63WZYWxeWyWQJiuzbEAwrQxx/IH0wYeqCgvcix9MK1jsUX5GpZalK9'; b += - '52LSi7uOG4uKrm447hTkeviDlGui7tgFpKbLZr28GwTd4tnhxhgPBPikfHsJzYazwHitPHcQMw4'; + 'moUX5NMssyqdYZFE+yRKL8jYLLMrHHv44iC+afRxcTXMeO2oglLKoW/6EKdNtxusN023hMdxtnU'; b += - 'noPEr+O5ccy/hV3HpjH/Jp6bx/wbeA6N+Ut4bhnzr+O5dcy/hictQFfx3EbTOZ53jflX8Lx7zL+'; + 'sUNXbLerhpum3R8kjaVbpl5U2bbnu0UJKml25Z47dMNxMtmaR1pls2023T7YgWT9KA0y3b9o7pd'; b += - 'M5/Yx/xKeZsxfwLM75l/EMx3zL+B5z5h/Hs8R1rEOWSaqgYEG/aAGVLqIZBmcjXkAZzkzdoIdDU'; + 'kbLqLUcLKBbMsSM6XZFCyoZT6BbctFdPAo+UlrJkAPdkvXu4Vny+SKLrdOraDZFDHvfVHPRnHha'; b += - 'GnGgOYQFpJwt1+KOBFApsCXiJwUMArBG4T8CqBIwJeJ3CHgDcIfEDKvRXikA2xwXS0mwXwCDxM4'; + 'PQtNgE+ofJf6atwDvlblO1T95ERGVWpOtKuWyIk21Xw50ax4ICdaFMPkRKviq4fPtJNzMm0DncN'; b += - 'FMCzhD4nIDHCHyBKimu/BqQk8+mv0rVbDnX0Ng/uuGGNDA55j3e8nlIdJuQdlrgm65mloDnrj5u'; + 'lz6m9TZnRzKkK3DTnHCTpHC57TgXuljnn8EjncNlzqnB3zDkHRjqHy55Tibtrzjkk0jlcdpQad9'; b += - 'osdFWIxlpOU3MtVk1pcdIluvrSSPQFSKd5DJfSIrRSXwdUlRRFh6vek19M4XXwxE0BIzb9N+ppn'; + '+kWUyUeLyPccN8YyZxKCr2AYzvVGZM6hM4Wwhg/FXKgEm9EOcIAYz1pkyX1O8BlnZLkhcArlNUb'; b += - 'fYlNhNI+3bELLTYhXS2hOrlAUL5C6BaHvG2q8txWtj/mgp6mbIbAfVJX2erYN7dK2oXDO3gQ731'; + 'EjfYkniB8A2BU5SH2qa58gfBY4sVJH4JAoKN1cRfRJFRfRJFBX550CQFpHS0Hg4uq4eGeSdRT5G'; b += - 'SFEloa+Eu+XOLgUxDNY+eaUseSC3R2sBkUCUGREK+WAD/qKxTVRIttNZzbfCCadoPSOl9b52vr/'; + '/HLpykSz/8rgLtq0gedPYKLhk4P0AfxyhTfw5YavCtm4168hVvaXrll3ogktSjO2H88Pd7CWkwW'; b += - 'Lx1Tds6v7xZCdG6MC8WfQsNAW6VFO+rO892vhEMLL/XRAOJQYQ2bEc/JM9g2KbLTtKXhds2SNN1'; + 'qW4byq5D2Gf8k7zKioNpTKa1gaelRRZ5bVAZjMaUppNgYHYPA7lTLpI2slszBZaKKSjRRfEAqUC'; b += - 'I6nrpQ7ZXw7skOXgTQzbhZj92Ga5rzQMW6jrg4vN4BZMxjGPhH/wOCQCK9nSEFTFW9nbnxju8sh'; + 'd9t5arqHwLaQNLt4qo57oyEFm1H8iJI+u5DTIcme2Hc+IIe+5qGZRskR/UiSPtuY0yNJnjh3bii'; b += - 'osixn5f5KBXISPBh8tguAU2+fSP4vUSqURFAUralvxRBoZN4qmWi8vLVRGlsSjV8ZHA03LvkdT0'; + 'HvuozJA2WI/wBNH3nPXyjBlaARxhYrA5z4ug5UtYVcAPxKf+6QMWZZspxPY/Yh8oLhw4DJyO2hR'; b += - 'YK6hLSDnHee3E8W8r1MUJVhHCpAazJJHGCED92I+OVIolyyq/rKFEXrdnSAHsrp/nlRazLNDstV'; + 'kflAgeHwZWglASXFj9AHaggHMSOXhAxH6gNNQsWECmJBXbS0WFAXLC0W1DlLiwV11tJiQZ3RY0G'; b += - 'oWVJPBqVS5uCLxWlbsdAq9X5fqHwKWq3BAReKMql0gE3tR7Jkx1VdxDMDhdw10Eg4dquI9g8HAN'; + 'd1mNBndJjQY3psaBO6rGgRvVYUCN6LKhhK6fWbT/MYT4b81z86zUv5PrwmU/14QNt6sNn4NSHj8'; b += - 'dxIMHqnhXoLBmRruJhg8WsP9BIPHarijYPB4DVMog7M1yHkweKIGWQ8GT9Ug78Hg6RpkPhicq0H'; + '2pD5+0Ux8+nKc+fJ5PffgIoPrwqUH1vpTu0lBSpncGIRxIHnVS2sXHe35/p0DlxYLyNuaf4jRhe'; b += - 'ug8GzNch+MHiuBvkPBl+tsQwIIYRFuuMnwoNAEvWHZ8nEMJWw6704eQ+lJuJxspEc9Xh6hIRons'; + 'tn8c5yumd76/JOcrpres/lnOV0xve7805wum94z+ec5XTK9dfknOo2b3tP5ZzpdNL2ncurnc3Qo'; b += - 'qzb2YwXRJt0BanQSjNIHOaBaCEmT5wMpfafiCmvKbDvak3orvH7NjPfYGtgERiDCSEqR/ee2azm'; + 'ryunfj3Hh/I69UgvbAnxtJOgNlO6hdKtlG6jdDulOyjdSekuSp+j9HnFPLLKvWCtVUaIqg+fBMX'; b += - 'kKTj0TCj+IpjazZSDhMnNPI2EbmZr1CE0kMzHqFRJxSEGvp1ySwwIFYA9asV/6iaPTri3Pui4vu'; + 'LsJ6MEKUadXO4wAQXkIywJVzgOheQzLM1XGCSC0iG2xYucIMLSCbdHi4wxQUkY+8IF7jJBWRn2B'; b += - 'i7lZr/zFGffFeffFJfdFVvhls141ay8pKuwleepTpWwwSfQqo7LFJA9mvaIeo0m8c0b5837ah+e'; + 'kuMM0FZAfaFS5wiwvITvdcuMBtLiB76POSIiNErRRuaBMQ7v8RAr0HnhCP50STeBL1+2ZU/ltxZ'; b += - 'Mz+cp1qxXfQqbITHrVZXdu5j88disVzQljjhWqdv8inWbW6lusxzZWzmY9arB9L0cDODTVXV/0O'; + 'tCO3gMd/iLcyo+wFCcK5YfQ5MfasPx4LCw/Hg3LjzVh+dEYlh+PhOXH6rD8WBWWHw1h+bEyLD/c'; b += - 'TaarWO+Y7JL+ILPOuqwhOzXjhmyr17iNUkbhbMerWnpOXz7FTAs2a9PDbrFZna2k0U5zW9TWR3r'; + 'AvnhfpjYUOw+UBghylur+Qn4MaK8x/ICR7HF33s0L3QUW/y9NXnBo9ji7zXmhY9ii7/3SF4AKbb'; b += - 'L1NXKis1ET4smDTQZ4169XQGnZQhzmuVZ/i4JjFgTX85bFZL6Ag9y/REstmnpj14qbBrFdTvZ94'; + '4e6vzQkixxd9blRdEii3+XkNeGCm2+Hsr9ehz0uLvufkCBs3+4oGFoFNtIoKoXRQ3amnQgno0QK'; b += - '1qyX2kdTLMGsF7B02fpbCAssLYrxsw2KWfYk4lmzXh6b9botnsxKaEqWY2kZhvgLhjYfLcXSOYs'; + 'x4wWb1+qgAgopeE/DJk1H0ZMBaTVH0JQE3NkfREwEDt0TRFwc83xpFd4Ju0hZFXxT0rPYouh10x'; b += - 'lMW22kRuofadmvfrEthkjYUFtdjX5ZTXr1Sx8RXhi1qtAz+FgBfTMKHquWatnFj0btGfUrFdVzU'; + 'kwUvToQKx2SQKsBtDV5oYxYuwK0xWqO9GmzdraINTOHdbLFrI8lWBNbwlpYkvWvGta9pNa1VGpc'; b += - 'EBX+yYhc161dg6lVd4ElGHKW3GqJr18mDUy8FjJGa9+FO0IWPfIugga7QrKYgEZr1qeRvPrdTG+'; + 'qFKxsnXbYGXrlgzAOW24HqtP7ibWnNzNrDS5W1hfcreyquRuYy3J3S6VtR2sG7k7WWFyd0HrW2u'; b += - 'VIbj/W0MUFTqorgUxbBGx0EPIf2syk1ud4Vs17WzZI6YoJ9hBbnGFVDWoOSoSVmvUI2pBUz8oiG'; + 'sCRuPasP1wkl7cI1FB7clkJkVhLGHphWElsnbCrLwEVfhETMoazOiHo0sAsUnyFUPXbM2oXDdLJ'; b += - '+tiOmGfNetW0R7lJMOsVQp1BsNvbpCnWtpTGXK6s0GHswcWSzFCPVygx6yW9IlakqC6hdJF1lCS'; + 'rwcOtmPNW6BY+zbsVzrNvwoOp2PLl6x8PvDfnDbURvyB9uI7pD/nAb0R/yh9uIDpE/3Eb0iPzhN'; b += - 'eXPKPxKVv7A6GsqGuz5a2fHHDQbyG+sfws3M/p9p6VVjY8uGCA/uJqhjaqrBPqdde67D3jYp4+m'; + 'qJL5A+3EX0if7iN6BT5w21Er8gfbiO6Rf5wG/QLGG5xplhK0aFovT8pltFUy6R1/wXs718i6shn'; b += - 'DnG6r5mTveKJfV63gDhBfmjjeEpczMk3rIMM22r76UiO2rxWpuHpN5IT5ZbxdnkD44fTmDZCFKT'; + 'wY/oZMnYAuXKI4F8HSjYUULGd6rwPSAoSkwpRXeqlCGnOfjVRhzNs+IxdP6DMeFZsQZ9AUHmPyM'; b += - 'K98uOPur5p8sOKrS1h2Qevk8K3b3kCO8HHsnugbs9BMtSrELHwQSrh0/xZKbls2v+WWjysDHJZ2'; + 'eQdfA1WgtXIVmwga0D65Ew6DL8c9NXyA/yOE+yudmj86BK8OeJH06A0a45OzT+S/CI+eAzn4RDj'; b += - 'tFRcFlAnGvcrvi1F6xfab55l92H+iUhc2r8qwdMaPC/Bsxq8KMFXNXhJguc1eAXBUf9iJBwmgbM'; + 'lv6dwX4Y9zVGe+CHec93Tei/DGOaazXoQzznAe60U444zksV6EM85oHusJ5Wtz0iA2ictAQClyg'; b += - 'EzgV5xeWXLZtwVYCKLWZLjkBUtE+tUYh9tT5rrKAmYEkcu6YHWtrCQik890ZuP6Z61nqazClFbI'; + 'THIBIB77WolF1YRF5aI5cSAfL4kMyA6vTADokSnY2WkS0ylFvQL4Qr2F2PHGxgDymWkIbGCw5Vj'; b += - '4KsReCe51+vWoZcCrWnyuRC7hKFwkR9HaRFD3PNy1yAzPotHKDGbR1WGBld45Y4bQ7b6m3vL1sH'; + 'PIuGWNkfLzdrjpfiEZtjxn6vtgFjLBrSlCgMjP5iSEMiQo0A3VBQA0CTChIAXVcQepJMKAh9UK4'; b += - 'IltDG7QvHJZNGDcT0kJUYlibQxX4IYnfRpKn96S4EUNHmJvbHy6geARCV7R4FEJXtXgcZ/p4XqY'; + 'pqBogMh4ikAZgnU/B/tjpA3hYZJsP2JhQrumYZ/E2R5svDl/ifEnwJcmXEr6U8qWMLym+lPOlQj'; b += - '0wOOTZa8ogEsnYKqsO9lp5oNtcnhw1Cahtj1cqN0uBnzX8DOoW375kpa+9go+vbl2PY1x0on2RS'; + 'Yf7fTEd5T7iCmJSPmIGxJR5iMmJaLUR1yXiBIfMSERSR9xTSISPuKqRMR9xBWJcHzEZYmwfcQli'; b += - 'LAL0s26gXY5ucSm2EvqdcRzC4egct7xy92dusd3lDTus2m6F8hglh4oUjVjDxoi1c1kYx41KnSm'; + 'bB8xDgjcl4l/KYNxpeO5by0ylWp3AKVW6hy1Sq3SOUWq9wSlatRuaUqtww3lYoKTNEoZZ8/LOqy'; b += - '22MwCbNdlk3M/I262CUDXEH35AhnlVOu5hGeUaOl8RitDgRQle1OAlCV7SIJxnUkdfqeZ9PlfFh'; + 'J454y0X6/OGhDAgKdNZxAF11XixHzD7CxAGzQGIOECYBmIUS8xZhkoCplpijhLEAUykxewCziFa'; b += - 's3nbwrG2QREjjDUra72F3w2SVK3RhOqAq5gqKGeN2q6hAp2MF50LLJrx0pKbqABKdr6YvaXIKZh'; + 'Y3yNaCdCWixVIYkQFIJbJwtDrEFUOqKUSNcqoFKBqJGqEUWWAWiJRw4wqBdRiiToGGN9v2I+ONK'; b += - 'j2altk1mowHsj9xTWyuV/CUbv0XiuScsgW+0BYpBnaYln6KcgnA84zlTI2KbWuI8q3H5PKq5tCU'; + 'WgRuUt7MdGmlSQUD7CfmSkCQXVKM9gPy4S9w8ZFWmdT0n5rsB+TKQ2H7CDSEjz/eOHpX+0hfpHZ'; b += - 'uLbRzxqql5XGhQ5r1HIEOlnWmrogKj7scHPdKy8EJr7QcnPZKy8FZr7QcvOo5y0GFZyd0Q7+2S2'; + '6h/rAv1j/Wh3tAEmGrqDZtU35G9YVOoN7we6gyvhfrCy6Gu8GKoJ+xSHW+RxGwTtag41QG6ltSm'; b += - 'Raqmqoo2hFMZ0ipp7HVfU9rKOYwzsanuNLlpqudquV05fH1WxPcTkNHTMVHpbYJwyt0NdF/zfyO'; + 'uvylqjphFLoc1ZICRgpXoX9pLe6XIm9lz8LJDGH6MAHVXlWxhcEMiLQPk2Q+KcmkA5ik8kkpJr2'; b += - 'DtBLVbBUPzjjvcIGIrZWL286w1xt/+v3XJS39+o5SQ2MqlrGe5b9GD8FbEKyVdKoYgQYjJrSkQP'; + 'FSTqflGbSUUyq80nVTHoPk5p8Ug2TjmFSl0+qY9IweV+LfJpg2gjRGvJpDUwbJVpjPq2RaSeJtj'; b += - 'uyTZZYaUlZLPBFwDk1URCZK1IHTMpojNPhvjWzTfK0asAb5dViKA94mBc4A7ZLkCeL/Y5x5lH9u'; + 'afthadYrkDsJ5n+T0AFDybKzOG9UgSAo3oOtVmalJRL+vUJFNTinpFp6aYmlbUqzo1zdRqRb2mU'; b += - '+Irz7TrGRDnCnLHwAv0dsdgP8XlkdAb5LucEWAg/kGnLdXbnyXHcs16vr7s5V7roP5tp43Xfnin'; + '6uZWqOoEzq1hql1inpdp9YxVSjqpE4VTG1Q1Bs6tYGpjYo6pVMbmbpWUW/6VK5nqP0m4lWq+SbQ'; b += - 'rdh3Idvu57cvW+7sO55l/3vblSYPeRXHew+6joDXYfU3lNUTRs47w/N9AoIZEI5Wv6duk6oMN/R'; + 'sdpQXQNMGzNsXstgzMNOVNyA1MlcG6Kvwy4EpHXMuiH6+v0gQIC0nvk3RIeBxFuBtE3MxaECMO5'; b += - 'fdZwU+xG9UrNoYc7Rz3rjCZV+oVuXfnMvTTbCWvqpJsjohJlMudVLUWOhMXFMFfUk5BTfC4sbmp'; + '49UjbxrwcKgDDlCeQtos5OlQARjXPRdqLkq9DJWAU9Dwkviy5O1QCRk1vJRJfkzweKgGjrNeAxN'; b += - 'vSD/2pKnRs3k3Eki2cyW80ZoJV9hUB5cIMKaL9bUJTbqZWOYUciDPTyIohAf0RdLqoL6YRdJZVm'; + 'clpxeWwIZpmo3Jm1AN5mEhgsljvJkiFs3kGIm8Tqdeyacup+0S0UweAw17hU69lk+tpy0V0UweE'; b += - '8IhZ2X+O8I8pvoNwoR9V8HuIWisUhjuhhk5UcovG8TfO1nv6N8rEoxQn+duboKzLEbgaYsa2vma'; + '4I2WUQzeQyds3TqZD7VE55OvZFPXSlW6tSpfGqDaNCpGpOrelayWNVsWBarag3LYlWnYVmsKjQs'; b += - 'duMRdrWi61VCtSoryNms938iWlElZI4btHJaS+nPrXwFW1B0sF/UWrYEgomqnPcg/NgoqVWm1Kx'; + 'i1VthmWxqsqwLFb1GJbFqhLDoljVYFgSq+oLC2JVd2E5PM+iHxeL1qJBBqaz912z8oSBS/Xp/V5'; b += - '01hWlvLtpq517zd3Gd2mPvNO8w7zU7zPeZ7zbvMA2aXGTO7zYPm3eYh8x7zsHmvecQ8ah5bTWI5'; + 'ZQ8xcX/gHcuXvjBfs9dlkNpn+j5Ybz1ZzxsmmOWNkYzKbNY/u98zs8PAxDJIi4oOD+7PvHs5a+z'; b += - 'XCaxHI3LOGCBvtDewkRiG03TRXysVkqPb5PenFyr/CoLo1j7Sf1SsYh38JFqveoaovdD4bCr/gp'; + '3afLKzVsSeKy+BJ9qDfKudvfuHv4vhgjaXJ7PwqftdyzyBmeywub08tixbD1lQSRM7AYAsBp1Nv'; b += - 'BFs0A/g4/pQzx+BolRLghiuy32RImrc1f7Hy3KT2uqe0oSo5sV0UMOQD/yzQdYWkBVpw4PexND0'; + 'vOGF9v/TtY4DA8yju7Pdg+WeXF4dXbq93+Xtlp4Rjl8kxuD/52UWZZN8xvlNzr7RWxnrXw//8bs'; b += - 'sqizVXuap2R7nqr0O5KmTlKigW0OAoVBZDVqmKHJXFkJWpIkdlMWQ1qshRWQxZgSpyVBZDVp2KH'; + 'DH8F7qDJWu94sXfgV1iHN9OOjHtMe668TJjwXPnBHnxymYilL9j78l+d/o5Nv0MY6T+1vJi9Hh0'; b += - 'JXFkJWmIkdlMWR1qWi5yqLtchw3wx7+m6u56E3wPSUB4nb3AOuDsIKiirGJkmLaUGptjK+oqWh1'; + 'vGOmZZK2wtntmLRSIYZ3UugaQsWR5rKwMMHb6b2zXgbu/ZsgvFtbOcosov2rTbqG/sPyPgrvMVE'; b += - 'DmlE96TXIKtVM31qkS1+qRs2WF6nR+UwtC/zndod5cLvFuXC0FUutEqEW1jpsFAutEqHQ6wsWCg'; + 'mZiRv9TxyhKkGvD+uoF8vO/IH8JEfGz8F9S7cR6cW2wi8DMEP6h5kxkymjjCoB1Mvjwnr3cMaMl'; b += - 'XWmXBNZQLa65yoVVGfIPKhaEoF1ZFuTAqKRfWVlIuDHPlwjBXLgxz5cJqrlxYzZULq7lyYZQrF0'; + 'ZFdzjqa/ve4j+i/2q6VKoM3ZeF7s/WHvdjR9F38NbGjh7ESsMLy3mrJtxr5bzX8txraW/36h3eb'; b += - 'a5cmG0TuXCWq5cWMuVC2t/V5QLQ+bRYmYuXOXC30u8GNvshWBvGo+gwdNQACC08DfibMe41DmGJ'; + '8t0W/1yL6gPDgcLjqQrzfv3m8jg8/r3D/AY3kR3+DlHcOLCRalT6ZOsd+LzD8AWJRu3nwndQMKp'; b += - 'Q+FHsihB3Po4Rx6bK+FzlfyyAsFeLEAFwrwUgFeLsArBbhYgFdzcE9ld2Do8fO/9OO3Pv25X1r6'; + 'EmYvm8XiG9LU4fmJcJPgSwy+NlxV/kTnni8wP/CKD3Jah3hFA69eUdZS8q4mjLeyUyGbQoDZ0Ej'; b += - '/QococR7Xjvxa4d/69P/x8d/+iCuYOI9/+8f/3/svX2QXddVJ3r2+bj33K/u01LLaqtl69zjtt1'; + 'wDk1jrBcgbwDqmZ5VjSeAZN5ayMOhQtc8AFMwokV3+TtY+DD2CW2hrLRJqXQqOBm8SBvEizBiHo'; b += - 'KZNKAbbkGk+h0ETseJy+e91JTmar84Xr1qt5UK4/nloQmb5ClDpGCRAw04AwaxoAgBplgTwQYRo'; + 'AvgO+GHxbG9fe4/LKu+kP1daDmgGGXkbeQQ42OnegHZlz5y+2HPqMWPxGhN1AsC5nc2l1tBh/Ni'; b += - 'CHtBlPRhQCBCigMHqDZlCCEsSMaiLyNEFEb/3WWnuffe69LXWcQAJMFPc5e+199t0fa3+tvdZv/'; + '6N6MQuGFw+UWHUcAPQOjLn/NADb0+8ZzUNMOM0uc+gY5yIDAIvCXDRAAgFEtZxYwhhW0lxnFGCa'; b += - 'eqffOT4Xx3/qQO4IErn//T08TN/cObPfuFXD2AzkQryRFqeuLgSlBPZLmqoRt7EUxxoZT9GMz2b'; + '2l1nQXqbWXgb1E26vMuoongW/I2WXEY8IB55CPwnvwoDV1JOsENUitjfofqjAAiGs1cpOaJL7Pi'; b += - 'MFCw3+jQC7tZKj8HA8NyxyLuOHYAZFZ0tKV/W9K/LenflvRvS/q3Jf3bkv5tSf+2pH9b0vYt6d+'; + 'DsneWmFM3wDVI2+7JuEESxDVfol+l31sdA1JRl8aPxgjHNh48dBuY4scWL1WLwNcSC0DkqEIyJM'; b += - 'W9G9L+rcl/duS/k3LHzAL/RYtHU1M3002cEf3YZ/T77GabxtgxG1M4hheFGY1TRC7PjEcRYwGib'; + 'nxDkkSplUqWKZY3/brHtvEM/B4k4ZNj/me6nCMcCgkUIib/9GQZneEKbSl/uYH3UW1QaUBgK5rc'; b += - 'BBosWow8i8eU/ugJpltFj03srgI50Rv9mGoTo+Mv5HeQtH2CYSNChmfslsp9cxoGRShnsgZihkY'; + 'pvKmRBl+TtJNZUexYBlGlCulPLwM5g/4iJP4ESe/49eMgU/aib9ECvkRJsHnTgEruDESzL9mi+S'; b += - 'IMKkBO8/W3hyxVlzM99/i//8EO/+rl/NSV8+QM/88N/evLU0c/uELb8lx/7rR/46U/9t9+BwijY'; + 'WchMjqieJDXHAOOU/ZDNu5dw5VO7gB8TS123oYrH0H9sitbWcorBjp5fP9Yzn7BOCnmQPwpudbK'; b += - '8td+7o9+70e/98/Pb/S5kgWPu1jWnjBL4owdloE0x/djzy6v3wcEIZ12WJzGOuQ1LobQGIo1ZoG'; + 'wMGpIeFjyRopUnt1MFJ0XpIIye/DX4iRbJRyiHklJ+ETJwwbu34GPlW90SdT/cXUJ3I/PTLysB5'; b += - 'TfKXjBqY3JyLgtNDr1vDlaHu4R15fodd98voavR40kvh0xAAtqQ6g8bKxt4iy78ckySC4YTm1Bz'; + 'igLflqW+mcJ0Tx/HPcq92eXQDMi48Vku+4XtH/UH9ZFyeD2Wq8cW6JClItKbjupD1ghfYBrhM7K'; b += - 'eMe8qlpeu08OB9b7n0pWgRTpP27tr1IC8RKRS41pA2lrTpWtKmkra7lrRdSZutJW0maSfXknZS0'; + 'hWca/AgDXwGSPIEthexLGytIDDiD6I2437NIPkKPxJ5n+893/OebSt+gEOx/gzHa8KTs5P7BQSw'; b += - 'k6tJe2UpN28lrSbiSu2LJTJXt7diX3XV9z3gdpenYh2CwdArQ6El0HYIwTu9ZMgvE8IXRBeAWGf'; + '/hvU8PDyMvEBf+as2Vc0aqKS0qIC3ZacZ7KBd62m4ZG8BRqTwm25irhRzeJNIYg7LiwrIIatkkW'; b += - 'EDIQVkBYMkKZBOU1UA4qZQqUU6AcVspm4abdlp3uC5YNc/VyxV0+Yxk0kvEaybhGMtpIuWWsNaS'; + 'fhAr8AawodJbeXU32WbylP0KHAJfu9GNXv39jpcYtODcC2QAwIomTeEGLOPkLNJYhKWBCVoAQqY'; b += - 'dsYy1hrSzlrHWkHabZaw1pJ2zjLWGtPdbxlpD2ocsY60h7cPsbKwf6LmBZ/YUmmwzQecnxsLkQA'; + 'UFUwoIoQS0dI8UiyR0JWRF4DPs2tYUja5KkkGwZN0Yx7J396F1J3RLPwpSDL7x8P3ICyNbB/aCt'; b += - 'wpwTHDUgLYBbAeQ/5Iz4igAcoEfThHe0LkC1ML84Gc+DP7Ns9zYzRvhP7QgtWzkDAbcGRVeHbBK'; + 'SaYTzKC+RNgC4hlfBSpT1tha7pis8cDr+PfHQGKjnIxlU0oRkcoBqwT0M8zZVAIHakZqBaD/DLp'; b += - 'lFwmFU0MBWzpKE8Iwp6Ts5QnvIJWAxWfMJJG4CE4VrgFPwklnjMqgEK4VLglAWFcNQGAElw1LjK'; + 'ob3GIB1MO9wOhuMqXjLjtJ8b8FGN+gmHUlyR6xagbqCuOqG4ay+sPHjYpsDoxroEIEtz0bmJb4O'; b += - 'LVevh41f0SWVrPaTUIQa+JN9LOXDGUcYEXI0uEg7dtp4RhBeonU2gQZ5BE2mFOcIioAXtLyhXk7'; + 'J8tjV9tvW1OJf3YyMLkVkvim3x99znRkfJ6r9CfRbLTc8Xk/KH5UtKR44sCV8a+yJZrxIUsLI+b'; b += - 'eBxVU8UdXNOfN4YPs5mz+LR9UyKg8pOUZv701erJoejlADYV/k0Eg5IYoHpWL/Eb5PoeVljft4S'; + 'JZQxDLYSAnaRD5ukQ6OrQcI4F6/uIVuvrMysf3BmDjBTExqT4JbP0FM7L8FZPBp/OHfq88U7aR3'; b += - 'lFQ7AeDOWXDuYXi+ZkUx0nqjoKO8cLxEWfOATcxz9SKaG87tJ1bMtoe9E57Ak5wW+NdhQtv/nMm'; + 'IUefQzyAwIwEZnTKyARWhQTu6cVOImV4goFhvdgpBEYlZVQvdgaBMQmM6cXOIXBaAqf1YhcROCu'; b += - 'pqPuqNqPvigHNV+UDV8ne3XYgZpDTSgyzCuvNfVGrBdubJr37IBv5zidWzbaIvZBhxUWZKWWbBu'; + 'Bs3qxSwhckMAFvdi4TrmCwLgELuvANQQuS+CqDlxH4KoEJnTgBgITEpjUgZsITEpgSgduITAlgW'; b += - 'AcFlHGgDDzeCG7mnaYjOY+amQj7t1S2v84aXEdUTWkpN1VLyPfU9PVA/vziPCMK2WfDKIzyjjgq'; + 'kduIPAtARu68BdBG5L4D4CMxKY0SkjxKoSuKcXO4mU4T+U7aMXO4XAqKSM6sXOIDAmgTG92DkET'; b += - 'NVaNif4XaOMFXi1dvnp1fsFt4IfTyBJCvK3NbVL8iaJDRxzvmjeiS+Y3Kbej/ar7w1WjUqhmbtZ'; + 'kvgtF7sIgJnJXBWL3YJgQsSuKAXu4LAuATG9WLXELgsgct6sesIXJXAVb3YDQQmJDChF7uJwKQE'; b += - 'rcqlHr/PsVN+pgdn7B1t6oHX/25XAgK1CQJzyjp7zyMTixTvcBvTJmsQtD7dStRayvzlM9C9KBH'; + 'JvVitxCYksCUXuwOAtMSmNaL3dYps4+zeeN4viykwVobx2kohnE8Nsii8QEJRNrYqWu7z5XHPqq'; b += - '9h5Ztysx+l7iU7frZlArNK6YpWGW94mHef2Frcv5N3pYopRHvEHSCt7iw15A6DjxTokWQ/9p/U4'; + 'ExA2T6UHclFD2E4vM6hPlaP2YjvuhL64GsXMpygH6DZRTIAw+hKuMDzST5wcClL8OgzvHaTc4xb'; b += - 'tC7wGXBvAWh33F2u5y9wlAoXyi3fUYzvLDIiRRyY2EmHgX4jz/DI8jE8xvJJkX0fYGixPRBATeb'; + 'dfgKfEFG74tMSCdDd7X4HquoQCeqB3A2I5dEUa5xj0lnHaKGHTYRq46ENIjhSSJpcF2s50EaU1b'; b += - 'QC10PmSEDlVEmvZw/XsQeoYkP2jhX0F4hyOPpXfl43uPYbM+uXfm6srlYrNubb9izCPXRvUVbLH'; + '2TgHZkITwXwOYRvBPBZhCcD+AzC1wP4NMITAXwK4WsBPIbw1QA+ifCVAB5F+HIAjyB8KYCHLdpP'; b += - 'TNAmAHmov0TZMOZ3l75yLOOYadXGQ76Njn5ZdxZlTFCfwmZYr88slFeB/RHBuaYwM5NmyO/bbAr'; + 'auVkmP7vP0C/7tDDpsKlvmuOCpLv1aBrjk2B7sk1J4hULwOTo2sO08k1pzZM30d06ZpTF6YfILp'; b += - 'DVkkzLGCAf5BE3NVOVxPG5jMyQ2Q6WW7kfA8gYv8Ykkn8qpA0J0wHoGCYBG0W3QPMpwwO1vyjfi'; + '0zVkepr9FdOmasyJMP0p06ZpTH6a/R3TpmiPC9GNEl645bpg+bFAB6ZrjhQuMcAHpmrMyXGCUC0'; b += - 'sTHvohV63HbUWKnYsnapmuwTbxo18uuzUeozkW8aqE8b9YEJJh+cUZ/2IleF/vSkPnQiL4NHy3A'; + 'jXnAZJYdccGTwEtetQ8JAkdwKT99rYvNWnsCssFAupGHaySnmTH025Ev/o8E7oDnSEFwd7ceR+o'; b += - 'PX3pQvTRg8fHzMeFhryBGC2Kmsx3cuSnjzO8pwB5FxMYwXGtYn7LZkW/91BJTqqbz/WOJ6SgiTK'; + 'RLNr8xGrzLe7ANYP8xscASOSU+w6TibaqASlg7WWESQPDAR49s70UcJGqJaLCqII0NOcexFxDvA'; b += - 'hqn4u8QA1h5BIPv6byAvm9vIWrvWHzrWYV0ayZb42OYPOt4axGloB2uIEg6bG8xoi8xoi8xoi8x'; + 'q6Qvka2w8NDFBUiEMV43xeSREWps7fzDErGYOj+ffMaioZRPJqRzEQth3iuFRwWk1WmOuJMfpUM'; b += - 'oi8xoi8xoi8xoi8xoi8xohMwoi8xoi8xoi8xoi8xoi8xghQqhGgVCNAqUaAUo0ApRoBSjUClGoE'; + '1atVwXUTXgySmjfCvMMj3KfQD/TMSsUhKfv1CCeNZiHGaiGH08SX+SUK0aQglgsH7IgkYZeAWAS'; b += - 'KNUIUKoRoFQjggEjQKlGgFKNAKUaAUo1ApRqFCjVKFCqUaBUo0CpRoFSjQKlGgVKNQqUahQo1Sh'; + 'MMTBMwzMBNAo7xZkjKv8c7ISl/lLdBUv4tyl+n/AHe3U75fby7nfJ9WhiWPQ9fxFw1isiYa0YRI'; b += - 'QqlGgVKNAqUaBUo0CpRoFSjUClApT0HI/jUTeruLmM8kbhZG2D7MHpJ/s3wzKHtqL3B+h9Eco/R'; + 'TNhFJEy140iYmbSKCJnbhhFBM2UUUTS3DSKiJrpYqLmVjFRc3sWUXOHvABpex6v/qhjem3amyej'; b += - 'FKf4TSH6H0Ryj9EUp/hNIfofRHKP0RSn+E0h+h9Eco/RFKf4TSH6H0Ryj9EUp/hNIfofRHKP0RS'; + 'Cl1WyFOmiip0SSHH5K45FAMKedJUoYYuKiTuxytj5AWFxM14KUaeU0jciSfjD51VyPsywjp+skL'; b += - 'n+E0h+h9Eco/RFKf4TSH6H0Ryj9EWp/hNofofZHqP0Ran+E2h+h9keo/RFqf4TaH6H2R6j9EWp/'; + 'ek0HW8ZMV8m4QlMg/3xc3GxscuuXhsy68qWpO1kU7yVyci4aWuRgXrSFz8S1G2pmLbfEE6Lm4Fm'; b += - 'hNofofZHqP1hxEuFkQXNNf+ZcGHQS2HAyGfiClQVUiq/f63Z8EwoyL0XAyQ468ZZgEMQUc55lMt'; + '3MczEtaq9z8SxOhudiWVRR5+JY1FwjGBZ1Tx7EyIOUxzE+LRbHrvQNGxezpunA2F+oNpedWHRcO'; b += - 'MOe9RrjDlgke5ypSLHuUaUy55lOtMuexRlrh4VzzKQaZc9SiHmXLNozzDlOvV5AbVEFqNr4+Jf4'; + 'pQaDTF/oc4V/oKe2+Av/Lkr/QVCd5W/kOiu9hcc3Uf8hUm30V/AdNf4C53uo/6CqPuYv3DqrkVT'; b += - 'EzoR5XPVRrB3ftcLAdQLZDznaQ2g5r24FwO3RuB9vtsL1xGJSXZ+yLhWh32O0O1N2hvTsYeIcP7'; + 'SJ1L9psatKw0mtWug5e0G8dLyk34a7Du49mUC/N21yQ7JTnRrcV5fswrwTHjwPte7XFR8r6oFY8'; b += - '4DjHaK8g5r34OifXM3WXYEAGgoKYfK4AsVm+If6jM5XMqOIQ3O/qi847Gxj29TYNjW2TY1tU2Pb'; + 'fP8bOcHWoghnsfVcrHjsOTOLj+3AlAgs/qmP34VnFiF0TYM+j1fAALikioVERlp/34uj+CP0FCY'; b += - '1Ng2NbZNjW1TY9vU2DY1tk2NbdO/fsRBxhtcY5uGQ21qRrWpGdWm5qZtqjpjVlHZQ4/w/LwacY0'; + '8cBxYjworzOAk5igspSFh9HHiLCPXnPRs9Hg12MKwVq47zUczQd87jnOYYkxqAtPI4eyHTVrRhg'; b += - 'pys1x3hzwoxqqgnZai1l2WOj8WTj0mf2LAjQHkRLlh4X81cEzrDfvV4pu+KxiHA7mqs72kpoyZr'; + 'wmNQGg4zhvRKBTGiCSsxbPWj3Pki2Md1qjBY7uLpzZAuybRUkiL133K2w6APYGnXa1aCBfoUkRl'; b += - 'BQUzHztb3mFmoJ4sGW9/XOVIPNDIHfxwysE+j7oKpg5ZM3Vn1ZT3dLVay5IMnQz8vfwNPmc76Aq'; + '9ylXPaFTk0CtK/TuC0rUoVuRobqbcgis00ukocSKQh/CvBLVUKK+0O0wr0QNlKilGsWpVgzj250'; b += - '6TGlTV2OtZOPS/21gUBARVVNkt2Dl50SSirtaCsFoGymv3Latovq/m+rCb6sprhy2pqL6s5vawm'; + '0POd95fkIiFHDi7+vPB8BMWLgOTy+56NX6PnoFno+Bm8MaijALVe5FSpXT0e34OFZuOKEQfcO0+'; b += - 'c/u6XL0+W70erV6fq16PVa/PV68vVK8vVq8nqteXq9eT1esr+ipDcUAxchCUsMYtK2YAcdAqhgY'; + '4WaAbrMJmhSA1qNPsOYwqkwzRLlNh9hE0yNuljDxA2xdiUj32LsGnGpn3sUcJWM7bax75H2BrG1'; b += - '+Paj7/h0cgYw8aHliTnEHJcT5c7fnuJx2r4M5OQa6ol6SvTjD3JpUmveGr0eTOk8UARtB+Z+ZER'; + 'vjYY3ioS+3/z977R8lxXeeBVa+qu6u7umdqBgNggBkA1UVYGlqgCTEiwVAKzeIRSSEUTW1WOUd/'; b += - 'UJBnLviAorrb4f7JkttPrStLW0EvTp2IqRyJKEjP88Nl2sp59/786iQakBOoADzMSePhwF8UG5f'; + '6GS5uz5ntT08igZAEG2WxIwiSEIsOsbatE3btA3blAHbhA1JtINN4HjIpY9gm04QhzmCbDoLyZS'; b += - '3suSoLhU0VrZzGOI9S4PS4383E+LvdwOE7gSIuPyRkfjtt6OE4FW2gyTxbYxjB7DJB3WZ7uLFI9'; + 'NtWgacZgEtuBw7/fd915V9/QAoPUjtk+Iw+l6P+rV+3nffffd+11qN84jvBL2rWAbCTuYsIsRTU'; b += - 'zuYdnPAyd9hNpumA29bzNG7YE3ss3pX36Ny7N2/SEZr2GHqUzhYxB+8tGKQq0QNeggNespPPwYu'; + 'RsZ8QCI1qI2MaInYyIETHPiJyUp2+oPmWlwtBCwmOsGkt4bKh2Ey8yVRMKjy0qTeEpoXqVXjO85'; b += - '76JxyIA859abFghF9mjiycUVwwgeAAN/uNgT6ognT3t5CeezDr0JuAM1MpzwoOFLwsSSwHsAk4m'; + 'EnQeU+CXvQk6JwnQS94EnTWk6DnPQk640mQI0a7PDG6yVOab/Pka15oTlDRm5uU3nQqetPBCv82'; b += - 'cybeMZQopzYMC+WnwXCoBdRY4yfdq/izfcJgx+9kJViZ2VWCcKf4+dTrBvA6hXTKF/ijuoh/JxO'; + 'R2+2Kb3hst/l6cE2pTYkTW+pYrniQXASJMzXyUdbCY6jTxX5SJTgOBJVEY+WEhxHohzpIIn6cI1'; b += - 'v8cgCIX932/zapbQKAHX6JdI8hxWnmXebH1WP+2fAP8h+2GKoGw1J0QUGyBw1wO5gj2qVuai/0i'; + 'EWdKRk0TVyI0QqVyTdnJJ1SmOUKmdmnbzMMURGnXzWooTYKoHpDhQrotGyI4siKJ7chzluYE7Gh'; b += - 'T9idbpKvf0RwvPP12TSUHgEl0s3vFHehnXwSEozONPH1Bqzvt0Eu1Icx3pYFK8IBe7P8R7j6tul'; + 'Tu4op8OBJ0Q7XoNNs7cHLZPkqHto1mu2uxaFY2kjY5n1cSEqihgxzr+lclRoGaR8hhs7gqSQr89'; b += - 'deZ6vq0Q4xd6cODcF5/JlfKqcm4JzU3DuGDj3rpw4liULYxAwCMeOLfRngNbxaP9u9Se1jAPgmD'; + 'Nvmp+R2P013KAHCnZmN6SuN6nf89C6UjPVTJW49aAtHQtzSk3mBydbHNNpR2Yxu93wH3BT+xYmV'; b += - 'BvB1ZTMwKKsS7vKBdvpLc8tVw8Juf36YV8XT7N3LlRn+m0jU/hKxigSEzv5Bu9eJ+L8zEBe+zmd'; + 'wd2REiWD8TNEclvap9diFJKRNsWEQ5V4kt2Gxgt1arh4it+aGi/0qenim1b2bylUy8W39CoysDQ'; b += - 'w1wMEYjcXgv575r5nezTKXJYxe4ZY/qsYlqIM2chxY+K3s+FByLhG8AgIkDLGrKJoZgsd/K2xA2'; + 'qcfGJUkph0ZbgGE9iuugLGq1o7keQANqFXgos9ZpQcxjJkSIZFAwuzAK1i5HoDqJBx4qORr/I6D'; b += - '5XSyGFfJDLPBRLnx8T7NReX44/2UHs3H+xPUq+YmvdoU4SD3aRt9OkG7OddxE9MsvtsFXAelZ6C'; + 'aiQc2w9gK1lJHoCUSDpsFDGa6G/3HYD3haxxNJaNCfJB3vZyTc/SlS6v40SXN/A2lxf4bEt78RP'; b += - 'n07sYLBCEKRDGp3eVZg86NUantgTFmXo0Ro/G6NEWevQ29CjrzrYsyvPevLXQX0eTHvXoRr9HW9'; + '/P9TfjJgfq6YHYC8XXBLADtdcHsItIrlaPkw1vhhFJOt5vkBD2Tb8inhV+ezLM6Bl4IDLxQMfAO'; b += - 'KjbfToOunRDs0m0qNj0AqJKxhDhrPdgB7bIIiR+oynbTw7ds7b4vSZnmNefK1HW2LoG+e3rdajU'; + 'FpNLvNLs7svjfXljX97cl7f25QnQVvOJfXl7X97Zl6cjb8nzUkl55dy+UrpenibLcLAk02Jf+l+'; b += - 'zpnUq9u1F5VSVm9V2ll+fVu2DsQ7r9LgUkmKHlJS8dTi0VjJ9WwsbPfZhAfWjp4xch2E/9THwp0'; + 'nzdxyBP4wXyzSfjdPdwaEWTUHio3l5KD80FLRoO6WxMpDUjR2Yl7E0MeZrDL0iuZOzAt5nKoeZ1'; b += - 'KU298QF8uYghssh+J3gG772VIYsa2CMkUOlcp+rlLTkfjGHrJTVMd7+UN1/aV6x/MzfEWF3yxtH'; + 'TlK4/ju3LM+I3kTXEhqE+TvRAiTgpapZ/LsD+LS6LJ0hyUNjSX+k2JhkwhhE+9Fu6LemU2gAJTe'; b += - 'rRdsRCdgj6frjuMkCLHID4jS0+zpuGkQACU9/pQKtYfTmBVbrTOArYywff6k/CV+dVOIeu8mYp2'; + 'VlWRbTUbwv1bpTZouoCNMquf0r8U+yfXMTAZ/JPXf+U4wNwMJYMCnMfdUea+LLEmAMDqMjUS5K8'; b += - 'W4KvK+xX7XUlQNVTPtQCLae4DynNwPl5Va7g4gj/yYqsyITG8W2d3FiHzDkXjF5kAEury2NfOu9'; + 'TdSvyYzamLxWeVvvqZF6h9+geodD9Z68R6Zf854eoFSvo/YxFHQ2WZWQ5oFis7xZhvnmcvsHiy3'; b += - 'OEYj0YpFK9RA0WCeJg+0izqktL1x5MygC3s+OJO1vcWpQHuYcM9LN4QE+xK2tLVGFZ5h9NLE9lO'; + '5ljJ8YE4mcFe+2Z+Tn2TQn5efeF9/m5TaLWcHsj67aGhGfF+ZQy1pThFaFiCBN7bFosEgVIVSPk'; b += - 'N7bTu4Od3vNary2tN44d3LjrWWM7vk1rhD0iRjfreGM7XrV6e7bjTSd2vwIbgKrjjdfx43mn6vj'; + 'GZL7UMQwx1vmlOl5b0SdEe9OFJXX4w0ABVlCXXUhhk4WJklWOqdyxIJNB+crhzNvul/A42zP3AV'; b += - 'u6I4f8zo+qore5Hl0oJXb7Cy+FlOVGZHpzSLR8V7Prdbx4pDLdt44d3xbO571kG/d8ePyrfYltZ'; + 'ew3+GUpqo2fNmSD+0Eqmvv7sPjbzkC4X6oyjd6YZm9MUEflNh5TMXIfKgP9ZljKEN5fNGAuEdy3'; b += - 'frzHyCEawUl8gshge426X+IsKgrky9NjHVYIgYx5HmOpRhPbPwPsfYjCZVS8Esvl4UnOv15C41J'; + 'WH5YNVsO4ntzSA2ROCgfYXzi4yc1+hCjYx/NooDEbTSqDA8uymAWYfZnITjHjFTzNuLdwreljS/'; b += - 'Rt5ptqlnb6BJkD1Uw3OSJC9IOZfkI4F4CZ9nbCDSqoAPx7hKkSOF5uKi2oqB2op7FlTFJJxy2iK'; + '/F+nmLshOAz/z6Hs9WHVBkoTMQ3eSml1tee5EuGwVBkKmJW5PlqSZSyfVfDWfOAlhnATVnwP4B+'; b += - 'o21Qo7xz7y4RRXC8An1SozFYJ5JkNomWt8ltG/uO2ZALdE8Xyth9J1rlmEz7GazKcTFFIy7cTes'; + 'nmvLN/qWjt54N07fQSepCA3/vzDUtFuJ+PRZspYBEnEK+dL/OKAfZwB/OqI50vP23Z0WCF6bfkj'; b += - 'kD0IehrkN8/BTDXlhRVTrUa4k1Seu16WFi6q2fP9S3rDDCuI+sKdgjXLciDHV4FryfQpXKLZjqi'; + 'ykIxHEASH/suOz60n5pSwOeD/v0LisNzEogNoHp6OKGFvcg1FXo4po3huXwbTS8T2m5uS2Ps3cC'; b += - 'HjHMWQ38HBJ9BSNqT1w85HeuZOi4YRe8arf+2mq2N/o6arMZtpWZRiD+Uj5mPsuLX4jhWjY7yG9'; + 'nA3WN8LIIKQ0aEYpDx566CcsjC649E3Zd2yVZ0YmGtnVyNl7uPhn5JjNN3egKjvyrQSl2iyrYvv'; b += - 'JHxP0nOxoZqoignYAcGAcMk3DtymnGJycbYFC7UU/RNjMHgSc9ibSvaeJfR3hKZFW8JTBhiyvGA'; + 'DRXgvtOPyzYsyJKnOZCgRSWMTO/URwpB0ZDgmgJglzy0ZkonhIUn8kLQxJMnQkEzKSEzIkEzs54'; b += - 'CbtqHdat44xLsUMppgckm41pVKwiOm2QM7xGq4cRpYmkRZwMqHG1C3GCK0Z2YUqsGemrXbeax3F'; + 'OwNYl0/AQnemd/PrlUdPbzsQiZgtXQRnxtSCbtkDhdPPyE1zUk7fWGBPfwtkHQfgAO15RUUDqvn'; b += - 'WtVaUzCXWWsXHfJzveV9LquovqBVeQgyDPYDw2FhbQ1fHGlVLIZLDpNZziWsHhudQ1PQKQqQ5YH'; + '4CSgPwIZVkiVQEllw69GwIIIQIg93F5SOg47tyUQrk0Odvu+AdSuagPX9kgbU11DJoTI+ERh+YA'; b += - '8fMzhB04WWXIhzgSVuKoQRUBaWsZBFPIBvYOMEQ62CtfC7xSVo+Amu8E34zdK0K2QEiXNgKWkV0'; + 'QDN0gfWKLRk67sjq8uC5nxNjDDp++FESbxyphCIJDjkD1KEI6f1SnjBDUA1+Nax9VUtM2Tq0XuZ'; b += - '3TtoukCL12vlsOImCZsI2XEcHuNWda5WXslAy1VNXNzlVZim1eFZ1BDzMzDe6lAYRDT4lcgbzPq'; + 'ZLj0FB/PCa7X3KS1b6oPmRQ9S1feRJY4+GtMUgkd93eag6BFNd4kKDND76WkzfFSCqGQoqouobi'; b += - 'toxgHnkNPtY0ZKXR2bnAgsMAl+rvIlrMW+L/BSvRAuZxRnLFQbaVV4k6LlEK+YaFmW5ZAYeXE9Q'; + '2qCaIL+LIQnREq8U/kqxHIygGhwKRz6YDSFaNsm3s1RiI+XRcnaMtkycoQGA4fng/2mzKKLdXbD'; b += - 'drH+YaIcAUyfSJx7otPOPEVnQaXbU0LAJU9EkTdmG0iZMNSF73Lh1jopQbeE+FYdJgSeVSWTDl3'; + 'P3gJeyBVDcXyyvul2l9sj5ETcssSkINKyPXuV2NCuyMjW1DjoRUmQc7LqGWIR2nKjvUSrYzJzDL'; b += - 'crI03e7TRtAj0K1BMwNvZqOYT41dBaccaKsPCTPVU+afxP5ZMh5ZP874ryCYYmK5/kX2PlE0Zsm'; + 'rm4yDr52kZ9QKc6htpZNzpG1Mylmj1Bsel2zKKrNIqlv2o/QbwGnT0FFN7vP5RSDBQOteFco/M4'; b += - 'qaGdconjT2Qgu4uMLOsQfmkjq2qyifDxNWUTy4Eqvthf07PMpHVPqHpbVj7JK0i0pr2yegI1T4Z'; + 'g/eEps13dIxxtOTA7oIQAyu5/5OjpvbDeGMcKVRfhGifkXS50qRzkHUYfN2ItG3ehOSBIsDCzsD'; b += - 'zEr9Bw8WIdQdK67eeAooPdRZL5D6ga4fyPzApB+Y8gObbUDMvW1BGqye0RxUz0DZijDbIhWxf7M'; + 'BXK1kAgVgTWaLSqX0sMenUOJaYdGoZS0Q6NYslIp3axBKPjgaxhKOjNSyx6G73UHS0gwUOHXz07'; b += - 'tqq4TSh/9DZRWhHq2tEPKC1I4Rul2ygu0jsoVVYunwhZDDLgYLBEA5lmB2PY1VgN4vnL+jF0uUV'; + 'sLPAiDn5CgKsLlbhTe+GT/zgJi7VTawt+JnBsByt8oG9jfw0wWc3K3CbxPYZLfimgQKaxL3b1fc'; b += - '7wKKeZ8qJHOcOUEx7lLFNe9ijnmHLSo5xnyise5YIovniUi0x5zaNcYsopj3KZKac9imhonPEoV'; + 'HMCIXGwSUQSAOzCjlwWVOpQRwPUACEjiuj7uEuNWWrLwfNxlxh2RuIk6QskFKfocVukuuIS/Ccg'; b += - '5ly1qNcY8o5j3KdKec9Cp0w0GYe5SBTLnqUw0y55FGeYcplj7LMlCse5VmmXPUoR5lyzaM8x5Tr'; + 'P3wYMiJuBBrEbuBBvBULELcCK+BtAjXgb8CNuBZLE7cCU2JPf9vWAh7jpWi5Zosolyw1jXbJElU'; b += - 'iaeSwWvUr3T5IIVLobx2J8TKsinfCR0LB+6EslXuhNLV7oQm7J1QxqtXm9esjq5ZLe9OqIdJje+'; + 'uWnWNdskSVS5ZvGeuSJapcsrxprEuWqHLJ8uaxLlmiyiXLwliXLFHlkuXGsS5Zosoly7eOdckSV'; b += - 'E2nmLVk17J9Srr0F8J9Rxd0It/05ooroTSu0KN7GGO6HeLe6EWKOuPXAn1Kah8S9exc5pxJ1Qa8'; + 'S5Z3jLWJUtUuWTZNdYlS1S5ZLlp2KOjlawXVKvQO2J1EERQcGP/XgoHlMVjGVIXniHcY6svExw8'; b += - 'HupzDtrnIn1NY7oc7wnZAcfBq6u4eUlYWvhd6aNyGAbfAJA8J22nSy44t8Sora1JNYwMXFQcqCa'; + 'jWbBim2pUMXK8k9F6qLlKN2ySEgBTwjfyWtY9f5CiJOGXsUidzyw2BKRUAz+goJYCBQCSxST9to'; b += - 'SzYt9S9dd1b5t4m3duUe9vs3nJ965YtlNVtfWgp7vI91i2uZjpyNZPiQoLeUrmaSZkzUu3ZO7B8'; + '6otpIxsvVJlZ8Q2+V1fMHLqynK8gUCW2w17IKnDnjy0SDjC2z40tD/WNbWtuXg9ricljpUVsdsJ'; b += - '38ne6BDcgmBO/d7EDU3Czt1qQvxtVojfye8QxzI9EeP39GqmJVczOS5C7nRXM63hq5kt/tVMfy/'; + 'ZnYk+MHostPiXI0WlsFI4gHYktEiVI0jOxJ0mHY4uACaJ0Kq7BZK7EFgMTlOnp2JOmK5HFugR1O'; b += - 'tSuhbezXTUgZqLbIM317NFBDkt+RqpuVdzdyV9yDIn1FBPo0m8HlHZdLN/C5R11tHaYWZNtJb3r'; + 'hFbIEsAZV6OLEoloDKfij065muRdZ4JdMxjsfWaCXzMS5F1lwnJzZOxx8d8JbIuM4GP+URsfWUC'; b += - 'LM1IN8euTVTGvaxhMzjQHoaJ0K+jd68RgmTjGzx8yEc3GhzNSxzkafh1sSOa724PvEE+83HU8Rn'; + 'IfNiZJ1kvo0sBNExH9cXbwN+WGT9ZZK4XYiEuoWO/MA2zBO5udyRttncEbSNuSNjzbwiXn0QrJ2'; b += - '83wXqQrngXTunh/28ClzWEz8tKG9pmUQbs/gQsbnjX8K5tMrmwyXNm06NF8nHZyI65svN7uDl7Z'; + 'gVW8CmVoAhfpWEKddoEvj4OtAq4Rq3fqNJ1gXIrCVVyFYsHi7Gr2CNd3VyBVs8a5GrYJ861WJVZ'; b += - 'ZP6VTVZd2bT8K5vWKlc2E3plk464sknrVzZpdWWTDl3ZcE+3padT9PQ66ekepZWeHoPAz13ZtOU'; + 'BvuSqtAkDZ1UgVAMiuRqkgP7kaoYK87Gp0CnK2MWQKTIcyD+3qajB0oElydpxR6iFUY4pKJ3plO'; b += - '8tgG3O6OubNr2KOZdNftXNrWebqsWkruzwS4QPZ2iY9vc0222W09X6+mN2tOjLnK20XLwJ2Omww'; + 'F1zBrXBkTS6L/9yasyh7vINPJsIMYApjgp85EzfyxMcPSgvn8bRu5tP78+7i32coRpgx/JGvCzH'; b += - 'hy4c4ipo8hiBPXjLRedAobvBC8l88/wNyAiF+814yFYcBe89TJQ4pDjEiKGiopaqikqOGcPKRWU'; + '6R16chC2EoxcAwzZZN4TvliPpIn6kOgKV9gWdrHJ5oMNtp4TmEKwDE3DY9E8jpMV+K+ECoJy0pm'; b += - 'tSoe77znTx8rdz33tp9q++KrjzwdpYWN3mkNEWGK8d02qwu+PhCvAcPqz04bzJHEYe02OT2hrra'; + 'U84hQpYxsGNJTnqh4dMvAilGNMLFF5m3lwhpg0Tv51Ml+S/jatIz28mgCyU2btjdg2iddDKrNKv'; b += - 'WrFEkLu7u6Um36Oj5fjEzf6plEVENmaEN1hW07BXgBSpjjVhmM48HovzQr77agqPdyvPDTEL+OS'; + 'Oiv3Uob9YqXFjjUURX1UUl10vprpOCRxwZwdMn0rA2PUooT99hg9pkd9evi7xmC4F4pOioDOs4b'; b += - 'msesT01HELjt+aFREHhPWq2Fc8+XDElLa64h9X4ytkX09XL0uVa/XjHu9Ur3SLrDugCjG5nHAAV'; + 'EbkfDy1tHib+uSAWjWHLtSho+SngfPuhI5hGfj82h0hTHowpMiIsieV3840WQYXMocsn5AqRF/X'; b += - 'GMTeeAA6IYm9UBB0QxNrl1B0TqQD6ypzaafrN/zG4qRNGjpU4/KnmRwqE2+LxVUcVHYmqvY/2oK'; + 'AQ7XDDCrmSmbTZjrq43t5PixjfzYTvw3GNtozdhO/MXG1g6X9Es1vhtgKadLN8Tpe5kjK21N9Ww'; b += - '7oL8Kg1f5ls0K6HLnsScOt/6Nb/0K3/oVv/Q7f+h279D936H2P9j5XH6i46WV5b7UHlvNeGAl3b'; + 'UurMR2i9FSF+5+c3zc5Off2S4Gzr2bBTeahvzyHDD7GDZoYtkSUHbxY5Z2k9wNuoh9kAR6TF7Qs'; b += - 'J6ajiHLI9D4fcPWxxAjSibjI4810hJ3da8bbTDPllEd5himnPcoyU854lGeZctajHGXKOY/yHFP'; + '/YPNjZsxFOxFKjBukF5Qbycy/rzpHraTdwukUcvIBTrUNpS4Gjonxi+0HexnYc3jiS8GFpuE8ar'; b += - 'Oe5RjTLngUZ5nykWP8gJTLnmUF5ly2aOcYF+a3J2O9jKnuupRTjLlmkd5hSnXPcoKU5Y8rezXmH'; + 'mwblW1X4oC2nVsoC0hfg1op+1hTkL/+NEzOpiWXLKVofx7p6tKrFBfmupK2p1w87HBp032OIhpp'; b += - 'LQo5xiymGPcpopz3iUM0xZ9ihnmfKsRznHlKMe5TxTnvPO5xDLlGLlmQiWscwcMQ0FQd0LRaGhp'; + 'gR1yfWtksbiDb3SNtWKGO9xRQT2RpjxCq2EZKqbrJP1UajrL4SE577PREWBvaDYH9IzgjmBCfj5'; b += - 'zqhNay73gB8YQ8j4GZeo9iOLHuK9580o7q1qyMIrWWY/XToBaN6sFUP5vVgxkGFhzXWZ48RHS3c'; + 'i3h46Y948uJtcBu5uVZAMkA3aH06mZdjvqZwH4xX2aaQRyhRTaVern6p0GVqGwtzdTxFFc3BTEA'; b += - 'O7Ann5wJcF6nr2O0UdNXwXL1klkw10AJHd4+4ID2e11r5H1lwMh7blUjb4zrcjZ7Md1UmXWzhvF'; + 'gzHAl9xlNT7Stb9/YgMcN0CQeUYzbkBN+BkQgExpjYwn4u9nvWEpsy51M//1yQHaFut8598Ki9e'; b += - 'c9hJoDKlx9PirgSNAs/PST3sE6FUi9KKN7jfYYJpVK+ecwTQinEW1M7nUFKzou4JP1WR6rm4yna'; + '4vmHIXA0mdzEIO0UEaL52eYWbkqqjUqh6Je1bYcIEer2tWqPlCvajJc1fZwVduLFJSwqt31qppc'; b += - 'zJ5nfON5leHrD5nVWbxOXXYfP7s5/80o0bNz5+45cPsOE04xrUDX+XRxtOouVuaTg55wx/X08ZO'; + 'q6p5p99IzbKrGf6H/LhIeTsifSDPLYiX5CXKnfLGg6x6JIXkafZvVRAa5+li0bxfpj/FVC2K5kg'; b += - '7aBtNl8y+knX4/lNCsVu2ZcWaUZV77CZmzxmjxoP70y2n66asab2E8PN+PK67WfftKzn54dtJ+u'; + 'jhW43uo1UBVag4o3orrvDvPHWIPh4PnkYj1JZhPTZ1J4jfZYd3l4uJBD4Q54ES6CQM7/Bzg76PX'; b += - '29bOjTSgnhtlQD13U2PYNRj7ylXF7KCx70rNgnp5zca+XzHP3jw7v2BrMvadu5UF9ZOjLKiHDbf'; + 'gqyJtFJ29o9zpjVFRZZfp2hjTkMYdkDHe98YO90M+UxA+JnTMJrMU6GISm/VRbOqwnX8+7JRXbe'; b += - 'nviqtulxr1ZU1t+rKV7dVV4Zadfl1tGrHn49lfcNFR0MncbGnrltFX2Gr6KVuuOlAF2vKirHeRO'; + '4taC4wNJsyqGwXqEZ8bHRMeZuyYJDomHSkclkxCKcJ0tFVJvVUT67SqW29VUmuVTqpu1SqdXt2x'; b += - 'bEmQgvZY2aF4A51vjJPSJ3Bv/JG4woruHsi/AcmItjEIpSFyEV4X18wEI16IgFSQEdsvp8hsrpq'; + 'rUrQqgltVVJrVffarYJZX9e2qjuuVVJbO3t6PM/19s4tUnrZruR/LRp0UciJyDJ2k4fRMnmaX+P'; b += - 'I+Dluj+TfX5GDfZ50NW1u/xgas/xkeu/jiuRPi8RgUL1e7qPcUEH/qKdXzsK9bzwa/g89rbiw18'; + 'kaWLy6M0UNo6hkpgr1ClWiSwxbzGVj6HB36UoA3F51IeggM3QJxHCHF+p0gCmMPYLLUqt+QX0Z2'; b += - '+KODO45/xUY+ABZ8oHu4uJ0PgXB1ygfBIqspN0wX04KWWd648Ze/852LL+WZnPmi6Zf20YbjZz+'; + 'dOF/myjILQo3I5habLMOGE6fWCWlLuVLoJnZngNkIjtW4jflLnNoIspbcRiWlyD0irXh+CtObxE'; b += - '5n2j0XmxmLZc7jkNvcU++meZXqOzAkcAmqFVMv5Qjj9/5HspjX34HJ958vBhH4kzS0iFUUPw57Z'; + 'GlNH+uGWwEMecw4W5JLocq9w1G/gdDzNuWpTz6LLW6Me80mPbyucRTGM4F0+gVJ4KMcFh6TPGu0'; b += - 'dufOwvDNJutmnHkHZc0tKpNZ/CLTWnff7yv/vFA7W0PaQdk7R0zM03Ap6f0x77qX/3y41a2i7S9'; + 'tkeiVHW+Xa7gg83RtMfoFSRS0Iaff/I8DT/hGLVoOWvNw9Cypzk45CKwjEFA9hu4R6V8vMAmdFk'; b += - 'iQtrh9uwyU3p/34Tz37XD3fDtJ2JS0dpPMNuIXntAd/+P/9SD3fNtJ2JC2dvPNJbJ847R9+6l//'; + 'CkwgAceM1CUzx8IGziwTgca6Q/oSb1AJO54pNwIaADQwC0uFwlVpsQWAr9sCHirkhb3NzqsFgyh'; b += - 'SFxL20LatqR9OzsPSDXtL/3Ofz1XT5sibUvS0tk+XwfREaf9kd+68ZtRLW2CtKmkfRelnYB4m9N'; + 'd+68w/fTTXMKbXn/2Ln/psaMMgI7/0R7/w6diGe7IAf+BTf/gfjQ3jGPITf/Tqd7v0KTkB/fBXf'; b += - '+7iMHz9TbN0LaRNK+m9JuZqxIokVCe48qxDCvfyDcBCWfAFpm/c3ivQivd0DRR17vFF9heN0CZR'; + 'ui3XXhDPlP+5z/7ic9FNrwx31Re+eSXP/F/2vDmfLb88mu/96Pue1vyreWxH/3Rr7ZsGNgql3/y'; b += - '95zcXJFF77UPiR14LduuHtLnp7mGkz6t4AjqUegKdpXJ7OESuCIaOKmUx5P+u6RZZH99GrMGZMj'; + 'V5//Rww/JKPWFjZlZIyJobvGfXCzPPddawdITScMR3vNQFsv16NJTc6LUcdy7gW6L8albTI6xcx'; b += - 'Hk31+8e/nvvcfqcanTP8aIplVKbyRywh47l7uXEM9p8cZUS7hXuopSO4WY45V2abVKlhB+4AtIg'; + 'oFDa85pqo7EjYj8alCU0qL3xydEaCsnbWRoWjE1FW6CL80yyYo2FBQ/qAN8XarRL9uI2OhWfThF'; b += - 'y253ccpiOE/4aOhTSsdsBafsD+f5AqUE0pBjtT6nzIfzhKOHLZTSMVrOKbcM5wkndndSSsdmWzj'; + 'gTnrAJiU9INOFJm9D1CV1NOGYTMp+QacJTNmHGJ8xowgmbMOsTZjXhaZsw7xPmNeGUTch9Qq4Jz'; b += - 'lncN5wlvEHZTSMdmddsQP5nmSUgJU0rHYHTUW8/KEy4lBNsMlXRPhu3UOWbaGhxFfB4MFG3VfKh'; + '9iEnT5hpyactgkLPmFBE87YhF0+YVduD4iM3+3jLaKaQSKBU+i8MHLOCy2cWgxMgDGJ77CJ3XGJ'; b += - '5jelFBLdJk/1AA92kF+HTX5BDdnYhEf06UX9wCkLBOy5yoIhnPvojdk7AZnXi8Y3FEwmuAGIJiq'; + 'dy1qYjYu8fnAvjozLvWsS50dl/qCS50fl3rOpebjUl90qTvHpZ53qQvjUl8K9I5P0nfJxDM64aL'; b += - 'v5rNa+1imBOepJ4qkZLrAVnVMjtx1lD1f6UM1XFzZWWsL/Jmav2p53BKo9qKSePaikpj2opK49q'; + '9SmdaeZj9XZnsfxfAOtkSHWe31y6PZHS5HjOQzbzeMXNj7o3oDdNkf8tKbN2NUCxUDb8NpNBYSF'; b += - 'KS2Paikvj2opMUY1lZmGNGuCsRcfz7oMvob5wJhoPP+VLujWkdzzbr0P8m72vo4Hyd6DwtzttNJ'; + '0YDcukVbQd2r8r0cCLt4dl0vRxZCXSvJ9SAGPnTNzLpFUMTm3TmhjcKMJkXQxuba7UZ3hNFO6k6'; b += - 'ME+PdQQy9hQZKnwbgXV6iqV2wl+BfjBhXe9Byjg0W2TTTa9QVll4xa/mlF8WkupUb65WJJVtdKc'; + 'nVReEuvwvCGjYWAOVHZO97gp6GkEElj1Tt5XRSeesE0ROHdIVF4z4vJIQqf8IJxiMInrWVSZ0gI'; b += - '/Pz1WUlQQr+hVWcrTxXAqrQjdARfZs7RqztWvM1q4xW7vGbO0as7VrzNauMVu7xmztGrO1a8zWr'; + '7n2sazuGROFNXxrqbXxpwwJxMywQ31EXiG+3AvHEeW+CQDxzovJnKhE6BOJTTmoOgfi0k5pDIL7'; b += - 'rFoWLJ9a8z2rTHbt8Zs3xqzfWvM9q0x27fGbN8as31rzPatMSxb5fryWbOa+DeRK0e+JPiOfkeR'; + 'Byc2tQPxNViA+46TmJ5wIfcEKxDc5ubkViH+rFYhvdlLzY06EvssKxLc4ubkViH+bFYhvdVLzJ5'; b += - '5Vk5MpUKOUWttlV12J13FvP2bif9bNuEYzn0T+G00apgUcIxTZgurClHRZyfEXlqLrevHA9dLoD'; + 'wIfbcViM+r3Dx0EnMrEP8bViC+zXqUokD81rpAfK4SiM/qjZ8XhfOuz4am9ZbPhhK93/MC8u3wO'; b += - '81UtIDe/pfsVefqpFxvdA5cwjb2VU2zV/FQJKDQcBKKl6jJ/4bsq8zvcnoXgEDaoyPivHw6yM25'; + 'dCHz4EbICof5+nlJmDD3wxnBG+FHwJKyW/Nb3nUWsasbxNzPSLzEcB3b5xSbKeAfFuF+F7ZnVBN'; b += - '4ay7FN9cAcUrFtXJlzepyHYLNuU8o3Ij9u/L6NbE+gYHVlMfF4bOPFHUGjFp/eIh5+kFfPn5Xqt'; + 'GBkg4PaI7/1x6VsrxPdiXPqWCvH9hnHpNQ8cO8elb6oQ379lXPpMhfj+pnHpGyrE9zePS5+qAN8'; b += - 'INVBafSEtcBqW4IegOODBI3xkT2Wk8gjgxWySECW0WWrSDIpGXmwz0zBu0C8aSyDkY+rEmA1SP7'; + 'XxqVnFd77jePSWxXc+7faBBWQt63kW2hQWhOOd60QHPSmR/KowvEJS7pAWybJ3Tjh+OWO2aQEGF'; b += - 'R/xNvw2RhGDb4oRmAXYjmEW0+H6o4SDWGcsWIjfozwNR2yeGo4jRIJGVxYw2Ut6y56hosYDq+4j'; + '7oDPQ53ZWevZpvZ8v22j6xZLhjrSkbSLHWmbG94k8lLuCm8EHloCIlfLwRpGU2IVcISS//lD9X7'; b += - 'fw+1X31ghfqIf4L6ElowLwbcEqpRP+1EkBw50O9uFJuBbsxigsDjo0dDaLir32G4V41vDYHuYCp'; + 'HicFr1vhAiHWm+7GlsTc3utCKpj3wYNi+3biQ03PcB9RKLtgO2VaLs7x3UKMTaMDjO8hjDWqZ56'; b += - 'tSOONwxuEXYBbF4SleZw1wNkVX/9ZgpMW6BwNMYNiuFCE+iqlfprC7qD6K3EeRQ32NsW0BYwF2s'; + 'ydN4Na3rb5FHHgwQANz26dA6wdsqAR4OEAC4t5rY9YHQjXMCaeE29E2oFnNQBOShoaf001hTuz4'; b += - '8maf94XTfdF0/viFW6UGOCbCb5IvC8S90XifSF3GDEgONf4xWuMahwDiHONX5ziy5AYcJxr/OI0'; + 'QvnF+mFCCaWBtV0wqyTQ8TGRKMo01uesDIZznCiWYBlZ3SkrfhH4MLCl9swTU9K4PhHGcN2aUYB'; b += - '33vHAOVc0xdBvk5vKpj9Y8EgF4tcNiBko1zWZ2W7XNavZdNcvqtm69y8x2+boRhWQQbHYp8bO/z'; + 'pY3ykp/VYJ4PBhPfI1lFgaa4knpNLwOGId8JlbzUNCJmUjVL8oIGbGeVmBB4zKy8okIM59CBDkd'; b += - 'l2OEvxw5/OXb4y7HDX44d/nJc4S/HFf5yXOEvxxX+clzhL8cV/nJc4S/HFf5yrKDLzM1PWWaGK9'; + 'S8rpuZlxQh93PKo0Mutj0J5/NF8R779WkSPV4M3C+X7JtjOb76GceCmaxgHzlzDOHDDNYwDp65h'; b += - 'yKlWkT5THyYQ0RG1eoBbFYBLMvYQwUHTCjhko1SKrhsdrAGAGmOrWXHSpr96HnAN0jQ2IN2KtAi'; + 'HJhdwzhw4hrGgb1rGAcm1zAObF3DODBaxzhQnXtDUFFjuxoVmzdm8TZri1d5skg5LFn0bc+Rxcp'; b += - 'ojXiEELYU28Rgxa3NvHa8Sgxa1DvEYMWrjVjdeIQQu9kXiNGLSBeBfI+V7v54xMjH0O/byGCg79'; + 'fkZpYVnBMWY0hanLBlqVsaOo5tkB5QBIV5dnqdM3RudiGlXioj4xzqbC+BBW9FDjKK+Q8sOd/HD'; b += - 'gobuwsDgtxmm/6LS7+bQL2noHg79Gw3diyHEb7NM/2Wlb+XQr2joDRz6VQ29EYON37Yx/d8q/T4'; + '2y8szvCdPczu6pgdwJ/70bIm7jbZZM+bcgZQNeIBYjIjvI9lAfXOadTOtCs7kXSQkQuUaQ50m9O'; b += - 'O/ZqGvoFDH9fQm+D6bsx80wG9UYlxo2JVv3IjywAG83tg+wWBUhOPd8E+GQKlNh5vh4EZBEqszf'; + 'ipS7dzbC7vdlKLVXUFQ/sryu3upBgvIUyHCC1eLdhl8B7EHIbqxcRPlXd8BdKpyx5KiHkEJG2nx'; b += - '1tNHVEECiN4fEwbWIjCJQyPO4vJvCYg2PW2XBbsR6PWfhSnQ1nig145HDZia7YiMcUPG2iw2/HI'; + 'ahFqWlxOLvWJMBiW375EPW3JULaWyuaBfap91yhfD5d6DSA5TiBPiKS0L0yvD/V9Nmw5KyvPA1D'; b += - '4NYCmw1jUdabBYl8jtEe/nO1XBxelCWYK2PfsoOGg5gR6CIbLirCQUlqNjicIKK3CEFFX2HFVQU'; + 'LLJfLCIWEQT2Ex4yPj5aPMFe8d07aMehHZdhvdINU7zo+UGxU1wgU1gz60LUlAUS4udjfxN4DLs'; b += - 'Di2ouMvhBRUzDjGouNthBhX3ONSg4l6HG1TMOuSgYqvDDire4NCDijc6/KBim0MQKu5zGELFNzg'; + 'lif7McuJPF/gbJQv+xe+eKWYop1UWDKn4bZx8Wq3MGNy52NCbVgcOC7hg3Rrf35/WSREEC7p/Lt'; b += - 'UoeJNDkeomHNIQsU3Oiyh4pscmlDxzQ5PqLjfIQoVD9waU4ja7k6Z3bXNiP0Z2CBvMsxB3mLQg7'; + 'wBfcGpOukbGbAPdt0zNQf1V0wf9CXkhKnpSI5mGkw9iJAHXn09D2Agrmfeoeu9mCvr6oZsuMAqT'; b += - 'zNEAh5hwER8i7DI+Q9BkvIxxg6IR9nIIU8Y1iFfIJBFrB0AFp6PQMw5JMMx5BvYHCG/DaGasg3M'; + 'spm2aSBVnYDGaD/Nu7xqagCfNb2nB61UKbXJy1AI/fEDU4fpgWxlHRkvldti6w9RzFaJuhdi/J7'; b += - 'nBDPiULxe2ycmySpWRa1pbNstjcIUBu0ByB8xyHFXGyptRgYVZ8pQYLyOIrNVjoFl+pwYK8eEoN'; + 'iuE71ZL+WwWxDsth6oMeTywBlQn+oMWBhGwe0geiHKC+tSkgApYdyUU5TIjYMXAQkoVCJffpLz1'; b += - 'IPmaGDRhQ86sdipVwyU+XFIwcAaMBOgCV6mjDodpHojySWVSRfVScyTvVMCYS8FX8Uw4wAxf4Qn'; + 'pBMPogBx9TnvFxs5LjBR+SppQv+dAU5cBNqRuHPyrbspfCboF4sAu00ikPf1my/4TR5bVLgbkWM'; b += - 'xWT0nDubKApemnsHZEZxvFhZ4EvjGEE2MpyjCIwkATe2sE7Cgxuj7oKXanP4J1E+o/ogYGeEWZO'; + 'Et3L2LOlZ29uIQ0Za7ZH9fspawr5MyheAobmRiSZYUJblG2mRAbDJdabV4nMdwuE8hk2gDKxBVm'; b += - 'D3YpHkaw9Ygp9zIiTtDfjPlT7E7a9qnzwgj/vl8c3y+CZ5fKM85uTxJnl8gzzuk8c2ebxRHm+Qx'; + 'Cfn9pfPPqgC3/FWs+YTAqPjTzU5HuABrKR5P+54eeK1EViY1QE05izo1yqfqTZjXJsyuaUIjlwU'; b += - '1Z5zMrjXnncI4+75TEjj7vkUcijL49cHlscwNCQKR930WBjVGn8RjdDfVVn16AuV5GucR0wp+0v'; + 'CXiaj3ZCU9Aze+73QHmhhpyl/ZrKfl5ibgt09tuxt/VQ1eLE3N8rnR15J8Kc7+grE/9n9PdxaU5'; b += - 'Ic5b3HfHruHd0TeoyYfkW78nbDc0RvBPyHaU/hcdkb+IZLBpMfpCWhsPQCOBVk6MYjbL3ZQ3ypV'; + 'dUQkpuMpCbBujLDMnNXe/qxalKngnQp+JqHS6dbl1cULwiQ1ruLp+U7sleVNSjLv6kKWmhg8uzW'; b += - 'gEdOk6Aw2yrcsOiPtGFrcsMaATi3Od/IM9WnkiT8yIvqoaQLNnj8OBAKHsr1hFtUYaoFe/mHPbP'; + 'JpAMIx2U0IsbOfnKbeIsVQVd3OmjLOPxEXMu4Eu5FoxJNhd2JBhcGK9EowJt6dcEwZ0Mi3jcib7'; b += - 'p7D34TKHBloMCVgQJXBgpcGShwZaDAlYECVwYKXBkocGWgwJWBAlcGAlwpZvcsxMVaF5RvYv9o2'; + 'VzGF8B0I48qnUaH/GgXplzqmoUBJMFJXim5541ExnlHWOFR+dA2aCtRdh6KwiYRuc1kjrwSWvVE'; b += - 'CoAwB1Ku5AjNNnJHzs9oz40vv++Jvv3s1HhYNTTkBFpZORHpjwZ7hPPgHTqFgWS+4LYTwSGYsP6'; + '4EQPke6NoIgY4+UbBRAxQ9Y1iiRhA8BtCiRjA9RsiiRhA+xsCiRi4ATDEETHwGGAII2LgXMAQRc'; b += - 'TjnHZlBzC84aPZQ7UC1WzKzFXxqRsHPsfhdrRsQ+7WJDPzZCsSJOxJGRH8ma7jTrssYp72MMm7a'; + 'TAD4EhiAh8w5DvexROYD5B5y+foO+XT9D1yyfo+eUTdPzyCfh9wd9J/s34d4p/p/l3g2W1EscQb'; b += - 'VcG1mFtWZOEuio/IiJhCZ6MsDogVbk2rHu0W2jdPk7l2e5Jv2fBy+7MJdDl9x4YzDV114ksPXXH'; + 'HgkTxzzMO2Zh8TxG1O1KMuiZLUoy9VM1qIsIzRRi7K8U68WZdmtbi3KcmhpLcoydZ2hKPKB7VqU'; b += - 'iKw9ddeDOHrTyedp8cPujCMxw+7MKzFDb6vm33rp5Ui46kXp2cAq3UY87VQ5VrU3l/2JVf1W8ze'; + 'ZRpbnmmkkxz1mKOectRRjvrJUTc56iUHnXWEnXWEnXWEnVU5DIV566O+D2gG+6hvPy1mH/Vtpyn'; b += - 'f82V25V0J2S97e78qoKby7v73LlVCXfWXl/j1dGeyVdLv0XlikOoK8ypJsHuRrqpQKvq4bvM64Y'; + '/o77ddBb0qG8zvQU96ttLd0GP+rbSYdCjvp10GfSobyNhCx717aMF8qPe8w6x5r++U2NNh7aAeW'; b += - 'j/Dj6uuc4R2FNmDda5wb+8jlJqCQ/m8q0qN6x4UmwF9C142/dvO4Ece+2bcCE2N/P+6aAcVKBxk'; + '/G9b52sqS/zaaPDJhPv53pa8bYp7+D6WumhU+/i+lrZpJPfyfT10w+n/4upq+Zrz793UxfM8V9+'; b += - '5Qk+YSzdCVXiILtrC9XwGlCzZNbxb/bI+RcWPsQZxHu9knA5Iy+D1xizypdZuTV5EqtRmWKmNrf'; + 'nuYvmZV+PT3Mn3NQvLp72N6tehayoUPccbZu0n+41GXOoBr/mD1a0/LKhZQ1KTmWoA30OUo+59V'; b += - 'KfNyUPFQGju9o1XSwzK231b0q1vg2WAzg60pvsZpb+itjrzo74GBa9CVbcYDt9q3ZnPXNDh9AoQ'; + 'RoAr48ABQK0FXoLM0Vgo/p/rhPnw9SElEZbOF4kFskoIAXfUXhImay8JmwpWR9F2Y/SjMbWQP6h'; b += - 'GYbPcWEEd0UlRdarBRoc41r3cTU0KVdiW2Isz7BXrXCGveIN15JvsTxq2V9jIWRjYoF4LW3aJfU'; + 'XUG1KQner48V4wbxfNjb5eV+/h5/39ifw8x7h8eTn3f0MP+/qT+Hnnf1p/NwlzKP8vKM/g5/b+x'; b += - 'EAdfhb6+Qwq18eJXXFZw/zvkH2uOXm7xgpNWD1D5b1tLCdt6djYP38F0fDWef3PJY9TX0iTyHRx'; + 'vx8zZhMuVnd38z5er9WYrfhT2EjF5YLgjy+3OU9vfneSXQ38Z7g/52Xi7A3Srsd3NeUvT7vMjoF'; b += - 'kd9b4nZS2+hY+mLvK82m58t1Sc8G9HKyhX2e2vXYds8x14FMErPKN5xJcEg58aN2Fe0XpDn1VFQ'; + '7zs6N8gvY3bT4+iwva8HxwHD1NoBdvAFrD+rD3rzpqz3qw168was76sLevKmrKerCXryBqyfqwd'; b += - 'DWFktHRnXK2ruDDfqHumPJuS233QG1X5THdkSVIhr5XdURnTV+MbrefryYi9Rq/wxqnw7VPh1Z+'; + '68aasV77xv9HbRLY88QqEVcFEhnw488GgzyZs3t6q4zVOaYpHx9NSVzKE6MpXVfak8MpYIAKbM9'; b += - '3So9uIn3NYRt44NduZunK93m8aM8DAudcTA6qzxi6qO4u2ap2Q+yoxKXdWo6Tig1k+OeQeotfzO'; + 'UMYp1LljEsKbO+L9cndQa7SRt8CU2q+WaRdMfXO+b8rXRlMSlXB5N6brSrgynrNdJ77ed9MG/bJ'; b += - 'JHbisQ7L/WnIiE6mPw2F/E86Qj5Xz9C1o1ukwC8O/sP6mXeGthGMq2Bj9YuRPnQ/ZMTcmjujZiI'; + '0UjXYS9QHKcyfQrMg1q1nNpBdHU/xMOj+a0nWlvTScMtxJAUmYfJ1IerzkIqiK/Fnev0QVDPmDR'; b += - 'SOjfaiIiGwP5HRbC59XBWfFlkKq/VmPQGVaFlqvR0nO2cSJlpoSVQ0hSvIUrAIeGkKLtm7Kv+9S'; + '+h7yB88dnH/jjt33LPjbh336bhDx705HaJtg6Qflo15kd+wTusLIFoIQZUSJVTuOJj+XMMkywYM'; b += - 'L1b/VJlfs1M5TfSlsRGXpW7SGZUdPGFTjcbVVuRmADCR+kLpy3qjfrbSTlHdyWd8Q7Xu/RRI6aV'; + '6W4Ynu/GqbUFi+V+RPO5huozCL99YJ+324usdqDU7wBMJQ/uc/Z7gMTGTwRTwoO0DIQ0pATMOxj'; b += - 'MppmLcBhx0av+VJerbE3qA/Llr1/YlyUowd5eCRyMEjkYNHIgePRA4eiRw8Ejl4JHLwSOTgkcjB'; + 'xRA6Wqo+Be+9+zG/Q+ozYY82TjzxadO5034mtCmZkfzse7YF5OhbygTZ99W/H+ImlCkAq02/DDE'; b += - 'I5GDRyIHj0QPHokePBI9eCTQGXwbPXwvdlSEmhe7hyjse7Gbo7DvxW5WsntGs13GcxZDO812Mfz'; + '62A2l5vwHLRPl4hLqwAhFRnZfI+OeNJd9QKF1Z1d3YAjrYVPsh+9kmPtT0jWywB9v0G6EtZONSN'; b += - 'z7AJk/gl8LX4s0sjsH8kLbbmQimnlx6KF0mS7+P5WP4KfmJOGfwSvK4Z/H6+nDBcNr2cMlxqZjM'; + 'hTeDu+sd6TClumv9YPIDHi2Z6o1LYM2kYyJ+yBM/eq9qt4thnq28Rfr2cb479cbnKfHAYAADAZ+'; b += - 't1QQKrkVma1Kf2sGdmK/eOndw7Frl3eDSUxNvWkvg5TTy3lsTHNPH9a0n8vCZ+aC2JX9DED68l8'; + 'Wbs2qHdtaLs2rnVt4LsWZo211PW7Nv0viYkP9WRvh84ZNFYnyg3Q0oeO/gTwMaGHT81tsJTU1VJ'; b += - 'YuaeMdaEp/QxN+2lsQvhzTpTdBckkl/vUUY4FIoz8v6vKLPq/q8ps/r+lyKlC/1eVifz+hzWZ/P'; + '1Wq+yDX38jgxLSh1aYtMlldIxFWhT2yXJOG1mq0eb4ieV5dhF9bpOj7aH8IGiAx3tzmCkcC3Bqv'; b += - '6vOoPp/T5zF9Pk+7hH4KgJy8xRvpJgNkVCfGBh/sGnJaTWvHxYEo/6w4ELWPbTP5oOjF6EERCro'; + 'x2rI66b3Cm9Zth9WX/p8b5FKI25VOImlCrQGmTOSSVJy5eAn2Qh08WLaL2SPV6ZrmkrhklXCFVb'; b += - 's72P/3jG79P4/RQAIh+dC+N/KvJ+ikVHhWao+rcj0vB7SyknPa6HYPF0NAZ48S81H2yh6Xg5hOD'; + '819VGHr5hnVntHylI3kDQHavOh1r21VJ9lAhe7r1DW7x3bGplovUPUQx+1GPnEPXA1ZDegUmKXx'; b += - '9LzVuMVVcA7Gh5lIvotriI7oiL6K64iO6Ji+ixr9xFdNu5iG47F9Ft5yK641xEd5yL6I5zEd11L'; + 'opYW5elg9JO2yIZq7lZ5m3l7KAu18QFdMCimIbJqQNbBPjMQ48Dk/G74arHa/dD5xuAbeUUKRg+'; b += - 'qK7zkV017mI7jkX0T3nIrrnXESPORfRY85F9JhzEc2NCh/RepTig1TA3Ols2mchEXNQGxpOB8Ld'; + '2rB54N5/CkNWmAz+Yjtasw67K2Vlubly1P+zkmKlPjnyjqoN3XWfox8J1e8LPkw3sgnoPQNJRGS'; b += - 'gXA2EJ4cCE8NhB34RgyFiljBN6BZJToTv90NJ8TgZynVs1F5FGeQckZsc1ju9mD4SsyQahKbXTF'; + 'BMQCM8j+SDvX4X0CJsStc3ZRILv5rdXUdp7G/TL3z/BS78yZHWEAIDcF0TaNQEx3ryJKyMDXWpJ'; b += - 'iVosLJNpuPA7xXM+IQjjukejwTPsY0Qtnz7aCKG++xSioOnZu2ffEzve1XDu12R223D2F4iEbF8'; + '7xxQk/LpXAP9G5Nyanqh3Odto/nk4tFRtohQzal6pYTfr0atlBmrdd7h8Jcni2pqYUlGR3VG08t'; b += - 'on/tVK5YNxx87yBT/80EJ5zA8ftYG5vC02QbAdzH434aswyFCg/g0ZMUSBbKl4tPqerQ9P+OFsw'; + 'QcmWVIXcptoW2PaYWgtS1RafqNkv91wJNZKUpucS06SzapIdaxo0tVhM51MwA1Jrg0kQ6x3/QOa'; b += - 'f89tmL0fw8H0QVx7zz7Xlh+4BatzZo5IQstD4jJEuO4Q+n1RCwntlNB5eTyhVgOmjt2OtIxhkBD'; + 'K2W+pEPbAnrMfmbmnRogm8mnusl1SScIzTO4/mfecKrxxg+VSmu4cFvDkBV34niOSdnAmRuxGeq'; b += - '9dwvwTZne3Q0ljs9fsw8ojXM46qGHe77PgdzrSSb8hyNkRFQWPJUc+2gT5suMEUb7aGaheW7+Qp'; + 'BJ02o3YmhoPah/B2VZ25EuRmHjSVLMGapGO6N3mo5soNH7tCXpxhK2dq2qxUQ+sZZoEp9lnZTuO'; b += - 'P7Ci+kh5hpmkJxiPaizN2di15eyHj7qf6ZC825e4x5p+nTpr99sK8oxcKap9Bpfgz+iJUpZozwU'; + 'ik6x8kyScs2DJn5d9ke2sdfpS7YNbSQLrq9a/FeODKxHZnYjczMeKOeKWx5b3Rw/LY9bnDCcYMz'; b += - 'L2pUTbrsG+Q622EHuEtG13NJa2eQ6wAIJn9NYebOdQpKIFWOFEfqGPPfcXogW2afq1xgJmS2qJt'; + 'tcaox30n5eC07l6R/5KP0gTEjdPEyX7Hj9PdCntSjVXsYtCGqo86h/JWfbwiZQs6a8drnZTuOin'; b += - 'ux8894jvZBtU/v4+cMs9+B9XTEpNV9iEm/tig1CuqYGdCDdJu3MNlQbt0dXsPd9IYJaon5/jBVM'; + 's6pYbr3jNeE2tHa+RurjxatXHC6MEzXk7RI6ON7wlDzgMaWJXpmWow2TJTs2Sx9QpXlijeCOEe2'; b += - '9cujFJjI9RtKvoyWOhUNdMZKtFDvjZPRat1xIsLyRLWhLlA7+Thm9KLsepNahE24eTLgI2P2zcJ'; + 'Sk8AN5Qw8D1tPN/RDgPvxYTXkaNz2ofQ/FCZ8pDFH7eImL7eQ9c8LL43lCJoaOpUQNBumfJmabC'; b += - 'D8+Z/7bHLgK0m2G5wDTiFjXcDVbcUACKwYb2jpICcgGm9Upr4aj3V3QYzVh9yQUxW+TobJH6Vt6'; + 'oIhpoAgOAQuL/khYPHqw+Pu4ah7eMw9HHEPh93Dinu4EtqHy+7hNfdwyT284h4uuoeX3cMF9/CS'; b += - 'i8RG26HiGuDB+iXQiWobENEVvj7Qx7R+Dz1pmIGaw8iXMbjY3sLLjkMFVw3LXOEoUyF7pG3034A'; + 'ezjvHl50D+fcwwvu4ax7eN4+LADQ2ViscWqDZP8xtEoa2/T0Lk/bVe+WXlaNhyOmdFp1JVz4cOg'; b += - '3A5on7CnDgrw1pa5ySfBa5Q9v8iFkbUeXJ33qFajT3ai7uNjgx+yyNu5FsOcePe8kfFHcK5/GMm'; + '1JB5VKbVqRrjwI14dgsEPqxaECx7wqg8Mfkg1HlzwYa/mwOAHVLvBBb/T6zIw+BD+AFR4x9ekFq'; b += - '+2Uj/aE/McMmN+X7w29B8+Be+DncziW0PdFvsp9rdBPIwmYxjGMMurgbdPCPb34OEkNkH0hwtFr'; + 'WWxCqwzJ3A0l++FzuIh2143U6JZXWvTqhEZHjeZaDIslib4axmsDLLG9ZmeEEzWKHlzrUZzmkGK'; b += - 'lc53YWY+nNq13eFHITrAIKh1YTxK7nsjIqK8nL0Z2PaHY7L+tYT1ZNv9zPRmxnhyLhtcTTBUD6w'; + '7X8lrUZXtQMVmz5prUZzmsGK7d889oML2kGK7hcWJvhgmawkssb12Z4WTNY0eW3rs1wUTNY2eVb'; b += - 'mNgNHryeHoda8nh6O/8+vJJxradiPXE2m7w5G0zTPRmtaTz4SynvxYfPP15JoZWk/kkqC2nlwyq'; + 'bArxsO0tSyvfvvY2JeLc3KaqTaMizZBI7dAEbzlMfatQKvHrCR9wPoro0g/6BpRAROW5j0JYgA1'; b += - '64nF3iCCr31ZDn01pPDYX09WcLyczIc6IwT4cB68kK4WnfQMXMN68lhK/qS9eRw9DVeT86F/npy'; + 'ADjqIiiuxy/PM8SJyLFDEYFdXrCr7WHXAB6nSz9bTI1JtJ3cwVqH2lxITLSdr76AiIlaWSfbzkX'; b += - 'JvTXk1Ph8HqywpJ8luuthLKe8LyM9eSTDV3hq/XkSuivJ5fCgfVkKaR+Cqv15LCd17G2UfY/Uq0'; + 'YLVD9XL68G2R8bXEnvJgQM7qM0DzVD68lNJi/Uki/Uk1tMzmvJl+rJCZNna8krf1pLbjM5qyUfr'; b += - 'nmCcnB9aTY9HAenI0GlhPlqOR6wk4l39M1xMRVOInhteTZyJZEOw3X+Z6MuJzfz2pTeu19STBen'; + 'Sd3mJzUko/Vk1NNdmmn6mnwmNW5+/aPy5+V/xp99O6Fjx/G48qV1kfvnmXsysrlyY/enXz8MBKS'; b += - 'K0ZyJG/XGriUhTQ9+XlxOzllDrZOHfGb1gK1j7gK+4tJ7Zp8KvD6ySaACrJOHrhgGskmGixSqJb'; + 'IzZCnmePaD7ELxzh6yjqyOHDhwkkavI2Cm5XBbergttDBbdrBbdrBbd9wW1XMEhfnqDgpCo4qQp'; b += - 'oJVkoh3tQqrJBrCKomGsEqiIaySaAirJBrCKomGsEqiIaySaAirJBrCKomGsEqiQawSmQFrSCXR'; + 'OhgpOagUntYITX3DiCv4wZjPKbVXltqpyW0Pltmrltmrltny5LVfuh2AvgXKbVbnNqtzmULnNWr'; b += - 'EFJJNIRUEg0hlURDSCXREFJJNIRUEg0hlURDSCXREFJJNIRUEtWQSkTO7jiYuNNKk2moPMXC9h8'; + 'nNWrlNX27TlfsBCKhQbqMqt1GV2xgqt1Ert1Ert+HLbbhyHyIQyIX/IpPkSKQadGoISvU793jEP'; b += - 'yLp27IrhFuguNVdLZBEuttWV0rLPGgvXWWLDxWxVs3RoLNrnGgt22xoJNrS3d0vQay3fHGsu3ZY'; + '+IHbeyiLt2qLt2qLt2hunRrdenW6tL1denW25ii3LQqN63KTYfKTWvlprVyU19uWrWRa+iytpEr'; b += - '3l66+xfDNrLN89t+iIlVm5tR5OUuY6l3kZshLCKulZjaeI9fJGavPfg1Vzz1537mtEycFVgEPCO'; + 'nhcBlS5SZGPcvcrhTtheLvN+UyjHSs/drXB/z47w0gfituzJWH3mqLpRDBOwC22VDMMM90JEH5I'; b += - 'TEIjXMLrBy5QKOV6fc7YfeAwUnnQqBmrbmBXTT9mdtXZG8O59hq4H6ajpUc55m4BqHI+znyIdpZ'; + 'nQgiNWmVOt6NUAYKOuNAHoaf/HjBcrzQtlmK8YC42hSGT35ebMN9cMBeaQg9i4qAmLKq8+FPSkO'; b += - 'amTqRT7EkQ/TLl4ju17kwxy5Y2eRamTmRe7gyNeodVsaO+nFfhvH0o67aGvslBf7No49DWtWjd3'; + '+PvKAZ8udWeRmxJ+mkB1mzw7G6H/JS6Pdmvxiq9siJ8INSnRPhw0VjQNjExiLt8o6H0FTRt4By8'; b += - 'sxb6dY2nJLroam3uxT3DsWYrtaeyMFysGvOcodkxjZ73Yd3PseYodV3XpbRx7HO5P3uM369NIrg'; + '4sWC+yuRffp0+7T0DBwoux3lrkm/GzkhdrvQPPKs7ZOimKphZ2tGnLkKf/Su1RODkyJJ57iS3Tc'; b += - '0d59ysSDhvPrCPo2KJos3kUFQqUV1xRlOL6kpUlqdDUZlETeatoahJiZrK20NRUxK1WdzB1KI2S'; + 'd0dwPrLdpd0PJVwHhd+mkUNog6fSAV0xnxLC+DMuknYQ8q34puB8V14+8ZSr//kuLKt59dTUqye'; b += - '1QuDnNqUblEzYgTpVrUjETN5mNDUbMStS0fH4raJm6fjXiloNGT/T85ezeZgx+cPaKNeD+jveLU'; + 'IEZu04AzuCAIqZhEPLNSqo+6ScL6rt3IwxR2UO5AzRvGf78p62XeH/GI8uwNywCvhHmpNJLeZi1'; b += - 'kgCN0pRb1DsMeFOUzDg1jRkX8/Cq3xBXrvLNa8GqH4EfV/nq9OpfnVn9q7Orf3Vu9a/Ou6/q31j'; + '16hrjNvAylioZMjq4bn/JCd2DbI1nSQfa4cdpK2sFXooJTYiWGu96YWiC3SaxkXxi48cr+n8jar'; b += - 'VY25AXHuX0s6ANNrJjhDE6NGoCxL1dxS9pFCGArW7+NI+5d5AEAr5UMl8GjttKSSr92H1U857Td'; + 'BCZb8G8FtmiG7xb4H5wU3ChS42xSGHXboR66Y3BF7sfk8VtGyn10M+dSLN/H+sDpdsXLBrZWd/l'; b += - 'mVnV4eCEpDhDaHDhz9hP0FxgwxlFlQn3ViiUttnD/ppBLXtXH+nNOVuMzG+VNOJnGTNs6fcCYlb'; + 'DWg4Pxlrg05A2NyiicaPYlKfp7ErJq9M6rb28oV2n4I8bb7W7zZzCgpJjTyBhlvM9dKG9+/m/T1'; b += - 'srG+dPNlMRttnH+ZLNZ4nIb5081ucTN2Dh/opmRuFkb508zs8L8dm4R9E2zuADlXFaxoUn9Zzrm'; + 'jBx/aZnIO+JSM3u/WFkxjZMF0dMFIhhya4O3yCbzxg1He8fcpO8sTn3LzS5chTD24JPD34fLET4'; b += - 'DexEIbKeftSQv1kZ8qeVIX+7MuTvVIb83cqQv1cZ8o9VhvzjlSF/VhnyT1SG/OvEkH+9tURgdZm'; + '18JNSP6KDbDzSyH5beu8fVr2hkv2VsBpkwSIzVwxnKLE/ji38AzS93b9Mtz2otgL8rWdihYb8FJ'; b += - 'WhW707YfFul6StQbshMO641foLPYnvwZYpc7+Ph5wkOvrqhtryC+q7qMssWu68OyJVoEjvD+JdV'; + '4Yf/enVoHwL3H90B+UqAqeOS94rIYHxZrVhF5/ShsXQXGr6O6J5TZBvJRrL+6KZ8rKuKcjXaHou'; b += - 'ekfm3mBkyyNeO54XwFYWLbQBtu85zsauZXrJPeOpqA/WvrUZEaq5JEXf6K9eo7aFYu0XMLfuI5Z'; + 'pEqmcpPgiNAtb2b/LNShz36TXhx731wq+MU3TgXPfHocFXzh09ekgr/0BqngL62hgo99eh0qyIQ'; b += - 'xjesg0kCpwDBumWKTyjcmkyLslZZpsme7XpMJjhGPDS84l8Xb5+VUABOVfCFdLS0vMnmrsX82i3'; + '1VPDJT1+VCr706XFU8JVPf+Oo4JVP/3cq+FeXCr70GRm9C2+ECr7ymbVU8MpnrkoFr5wa+ch4Kv'; b += - '2nJyfhoJy519u2kuc9Hn/egPLZ354/216At+NGyBklr0RT/6D0/85Bfr0Zf8aFgXNWvRl/3o3z/'; + 'gjV6OCPzJMBR/77Foq+ORn16OCn/9sjQo+/owEDv/iGip45jPrUEEmrKGCL3zmL0IF/3ViJtQm6'; b += - 'xy79Wj77iR8Ne6Z/Xoq/60T/8i89dqP02m/aE7Bqq4+hnwOjX/O9+6Dc+8K5artf92H/3bz/1MV'; + 'ELkjDIVpFPPxZGF53R+2ayWI1OcndAqjfotgCfM6mm6BvFQSuujJw3va2Dd9oT1GdWfgvmcxm8A'; b += - 'NFjzYU871bKM/wSsPuTSoXNpRJc7dzKd+0CT1fN02XMNWE6cKaclSTe3HRObnLW/giFWkIJ6u3j'; + '+2qsMcwMjAk1HrZxcDxFY5hNMBnU+M30Z2/tYmBOd8UZ6ER0KpWpTU4EYZla5ERwwtafx+/FsL8'; b += - 'gqfXiQrRcPxvjitrCcAztiqOQxY+y/xzfUfdc0ET9UtCyrGmnPZd7CuHWaADt6h8qra1KkoSVsL'; + 'Nvy+HMFWE1zXYL8LhGqwV4WwNhopwtAYrRThZg4EiHKzBNhHO1WCWCJdUsEmEUzWYI8LRWn8hz2'; b += - 'MXhIStn3tXplorlqpSkyHDhdCLeGrzW3C46MBE9r8CBLCcOzGnxGguc1+KwEL2oQvhAo58uas+h'; + 'Dm9wG1eImgRmqtWiZQMx/qof5hZQ0T4QBSx/B8aE90CWLL+XwaVjBTj+bb8w0whZl5NM/zjbCH2'; b += - 'q4696jQoVkyWxBQlZhIPRHloCDiktBi21fqxCPqc4r2kwDRXycixI22HlgStkcUCoeo4Rq44v1S'; + 'fRoXuSbYRQzC9C8LbCM2QrQvDk1j7HqdBv4d4Z/N/LvJv7dzL9qLrNlXaMZlWlNO5mWVzUrpijT'; b += - 'icCLq5cUWsaQjG+pk0pmRX9ykVsl6h7wDL/SzgHdQzmOQiFPx1P36W3TGg2RrSbOcTKNoS4bISL'; + 'iqhcRpnWBi+qmVLVRcq0NANlWjNrM5zVDFamtXFthhc0g5VpbVqb4ZxmsDKtzWszvKgZrExrdm2'; b += - 'iaQZBPhqhIusy9vIlxXwtUEEm0iHLTdliwIQNszTbWQmA0vNGiEJhVfNG1RImvx5MokXrbatuqx'; + 'G85rByrS2rM3wkmawMq2tazNc0AxWpjW3NsPLmsHKtObXZrioGaxMa5tNoUwLltGNmkXzbmvWTO'; b += - 'DUk7NwUVsr1KS1VtFKrUpmopoV4QJV4vtaXwDzzbZDY6qJV7ToLPaPB5CT6rwRcl+JwGX5bg8xp'; + 'VgU5lEW/vkoxbJU5Xx2vRECJ26Zs22LraWvg2rgtdaYxus1nSh0FNj3285e8IitIbYAemJN0rUO'; b += - '8pcks+GLDtcISvS43q64I2dPZQMdV3TfcNqhSQ/3MUeemNiTsyijfTBjZNlWryKeDXBQqVEpVoC'; + 'sreIQTlYmJmDrWXqYfS3+SdiFQORjre+UjqHZJ0vZOSnveRM+F95Ex63zeZ95Yz5b3lTHtvORvU'; b += - 'WvNUcXSL670Kh/J7+x1KhXr+I/7Ru1hwhZU73hVari0pF8yxx7Nt3O4PmYAviVufQivzJ/XuZX5'; + 'lcVmdWwxq24utqjTi63qAmPOO9SZKbu0zNiEi4Y457tBsc260TGH8m0AM59xbnQite4K4bbL5NO'; b += - 'syr/Mo8eT11vXEmtTwZezwZLqyhyMOF1QbymzRdEFgnjybp9at0wVbQUrPvCl1xNNNaPzW4tQZp'; + 'H8sjHxxI/h8xT9dhEYrciNqtijxdzUDvflG9BwqRPiI8XW6GWvimfRcLEoTzWhMbxYgvgFjblm5'; b += - 'jVJML1g+r+MrrmrRdTzlU9PhYcIqx1DIfNqJdDocYtFOHlVSnRoB02aNcGKQcGGQUMl2pNyQi9L'; + 'HQO5Q37KXH8WIWcAusUQ6Jhb/Ibh0vNgNwgUk7IXQ4pCqejxTJnZKX8QsQlR3KE43feKdkZPwuS'; b += - 'a8htdUzhfAzMKJKKmSHb54M0gm1ckzkxYFs4BiKqm7hs9O8+BPSkbodls5jB/Cyws9O7U1Pg9dH'; + 'LoOyWpUFzoL+SbZG+dxmzOvGk+wDawc5Ri1UJXI2HvTMf4i2txJNApJTbzPnKFUQFJEo+5yhnIQ'; b += - '6gx7vp7ECPd9G5gR5P0JmBHm+n8wI93obzAu3haY9Pjx39DXg83L8Nj4f6G/G4vz+Fx1z/djy29'; + 'm2LUbddQDoBUNEY95QzlAFpFc9RHzlAOwFa0Rt1s1XKwswFhkYw65xrKtEXhLDYBeWFr5dFrKM+'; b += - 'TfhMdufxmOmvxmPvH8HQzX072R0h/4WBoTo54wh0e8z7ES/YKQKAI3RHr8/w5AY/bvzGFq8R0N5'; + 'cIltsAhc3X7kBG8qzjSAXJXPtKrZX3sNquZyTnM3gojYBQj7fjGHazPtuvS+HbFuSYt6Bx/lmde'; b += - 'LuvzsD6X9HnNyPMKnh4QPsyoayj4sKWuQeDDoLqGfw+rah/8HpbVQ5D9Xvu+D4C/gBVDf8CCCy3'; + 'plYxPGJhqbuNguY7sa23WxeoueaWzmYmcYO6OxMy52lrGzGjvrYueXoOKmPr02Qd11E1O2I9pYl'; b += - 'K7cmtyW3JLcntyK3IbcgtyO3Hrcdtxy3H7catxm3GLcbtxa3FbcUtxe3ErbQKDgD7DoPbroZ1Zr'; + '16IYL5t6tEL4a0Iz6lDLxaF8Bb680o/n5hkeYasSzDsJzD1xGbKE5tpT2w2eGIz44nNRk9sNnli'; b += - 'ii+7by2He9ip0bBqGHubSLPYdyoi6DvAArWKzoptXdzq2TdHdVPyXoWVCW9pLwLlI9LbqW7Fj+Z'; + 's9kTm1lPbLZ4YrNV/QQqAIq6C5xRd4GZugvs9pue2MwJsWnRZ1cAYrNVLf8SS2ywEE8KvZ1zxKY'; b += - '9+VTXsu+vpqz0S9RqR2w2wrWS594FWAhPkbUJbHdG2iHkPl0OLV9Z0ooT1vlaS7q/opbfKGNrkk'; + 'NJXfmTSR6y6G87ePfpq62OvlsPfZ29bPVyTdXsfSz9Q71s9XJN/mELv1s3aU+wTr5xkN5VxN69L'; b += - 'Ue8SI9uzoewZCZTt11l7Rj5/Nm0lgTd/Ae3ZhkeqaLryBLKr6HhMPMv+ZMTpVDQtSdJbJ+nuqn5'; + 'L1TjB+SJg5lPc0YYJuwd6lNcolacOhfEKTJo8X5jY51DFppyQJZZzUpAya6oxfkHihjZl3afhej'; b += - 'KnIY6F1bRMH8G1o69siFUb718b2zdBufVkZb9i+EPvXrn33wy35Dflm+Et8ZRGIf5TH73agB8AX'; + 'd8FLRDnu3BP9D7ucP2gwq5Sn39vq/sH3F0Rn0rVLfX+AW/3hCatp8K0rj1KaKocbfUP2B0lNO16'; b += - 'IM2OkKHdq27O1c7pppu5TIMYXtNB32pbcmLzMK/vJnVgJrzunH8gokgpQBuYiNq1JgQAZCEawOI'; + 'Djiz640SmqEccGw3MUpohnLAyV3nuDqwsv4B31/EQ+4B3wd3gTXvgO+Ft0BHSrJR+jM5SrWqz1X'; b += - 'bBCArIvmvnAD+vfwKOLRSaDjH9ailSX3gRsh6x4SHH5r587J9APgFZpCBJfwOAqbfH2GjC8ijrK'; + 'dU8V1/VPPP02M+tvavUQpMq6UnHNAxr/NOgc0zjkgY2+3zgGNcw7I2HdY54DGOQdk7F3WOaBxzg'; b += - 'ChhghfEFx+HSjgIZAhPweEeBdQish0M8CkwisAH+8ihwGwIb4U6PAlMI3A5vexTYhMA0ZHxPFpt'; + 'EZ+07rHNA454CMfZd1Dmicc0DGvhvepDqVc8D3QDczV53PfML7BoR6J/ZL7xswgLNA2SW9b8CA6'; b += - 'rTnHUD1qrPP17r3zf087BUaf84q9+5BeMhrt5r/ylP//Yz8UaJo4o/8VPfe7zoYaJO8qf+PP/+r'; + 'EB52/oGhBctPeMIC/MLrbCxnAfZpRjIk9mvx0WY/VHctyd2ifmNuKeQlP2I4Z8hDiUu/vosOXtV'; b += - '02njil/JE/+5d/ZMPENeUXvvgT/yHSMHFQef1Dn/7u79QwcVP56at/8qP294izymM/+qN/2dRwk'; + '3ixXfv055LmvR0M0QBaW0X09U17+tecC9f2il4+nosmUL0PzIoDtLM43MJ8Lsk9RPBOo44widnZ'; b += - 'G8ur/3kv3/tn3P4SW1vhjytg2GnQ10h4ag8MbKjBJA1qHVuHcd1RXnGpwZD+TeHJIojMwkUacXh'; + 'vRYMwnMBbs6IGglZekpL5R7KUwl2U0cF/CIcZUKIz2Q/GVPDST0p2bU55WKuZQ70Q9yK+1nyEhV'; b += - 'dg9zqkOPre+UBgtOtOwDYT8eGRnyJmmFR0tSN3gbHDuMEu4zLiyKCxZOLpsiYofvTpjFAuRnlRz'; + 'zAKvMPFQIGWPP0F5F9QerOEjTfFeS7sjZfGerW40qHUaC006BvZQAHsGH1rTa21ca32thWaxVdq'; b += - 'vzmOJUMn5UY1IXYSKzZ/TiK6LUJn5MY3IXIQKzJ/XiEkXodLyFzRiykWoqPxFjdjsIlROfkIjch'; + '821Wo3GSg3z2lDUer8bpdou1hw5+ITvHtXsD0gfJGWSfTmiESEfTJnpQ1QG9rE0B6A1u7LyCExb'; b += - 'ehQvKXNWLGRaiE/KRGzLqIWYl4RSO2uYhtCjwn9DlH19sjxjGPBb4q4EjxjcwXSByZjop8WCO7o'; + 'cjMYLJb/cAlOoTjC98/dI+XYXr7nakVCY0kmlOvAQt1eypAvDgaF1IZO7xbhyGmAry0VMayeF6U'; b += - 'yJ37JTIbFQkbpI4dnJU7CkbOzUq9rSN3Twq9oyNzUfFnrWxM6Niz9nY2VGx5zmWOW6bqFqC4WJx'; + 'AW7qUcP5zzwX9QG2BOUV1Hv2clHV/T7qctuaBahujh7IX7Fzubu0GaXYqJOYYRt/Wot4ZeCyXCZ'; b += - 'Is2Ym8ye2YIF+8wWdsPMPeFjCrD9hobKwMAS/y3HOqZ54O89fElYjsM3onmEtyzq8AxIMWhnxjK'; + 'pKNZW9PS7L7KfD8gkkPaFZ6WyRI98LpMStkynzf3ipvCi1G8hCWnbjVUQl1l108EBB4GsYmLoxx'; b += - 'qRI+J3sXFgmsa1+PSm8Rh9zwqT/WDZhFRm4JBNlSUBFvQiNak8JEiGigPG3/Eudg5D5Rn1TgpTy'; + 'ZpQNeMUasSYYbhaDpQxMfoDO9L0WBK2YOoelq+3H6CFeuNgv+GWK6HNaPwJcR9t2g/kwQBetaDn'; b += - 'wZx7Xd2GB5iFlgnFZGj7BmsRaLaxrJ10nNXXn9V2tx6U3iurtG5zmiRHRUX72F4r/5FlqJpYWSr'; + '1BhUYUiAFu6nrnfcA+pfY1C0ygUYNtPQ1ZkULKr3mUXqU8OLarmsilJhme/txQqbCBK/GjwoUz2'; b += - '5sWOpNIiRpfNyW60JASNb9uSnSlKX7HtSgMZiF3DbClfqTw8m0MjvtaXHqTOPYZyOOe2XNkeWQT'; + 'GRe9CefaXHcAl0+NS5VLhA3OFKc29PaPxMEGNfAhoGbEPCe0sGz4kNLNs+hAwSVo+BPCRxIcALN'; b += - 'pHcfACyxWHmdU+0wPhBZbygGd8y5OMIqQvkqzroyvat/LB95SFD5oeDdyJN9XLtYXMI0xWS88a6'; + 'L2IYCGdHwIgCCpDwHwo+tDuyXU86G3SWjCh26X0KQPvQOaYz4ESjLlQ++U0LQPvUtCG3zo3RKa8'; b += - 'XsITAJUxi3YNb7zSGvdMYcUKk2SErJDz6oviWKRrv6uH+5H0MW5w32HvOfMDn6ZGl8D5tcpGelo'; + 'aH3SGijD71XQpt86H0S2uxDAFeY9aGHJLTFh6Dos9WHoAU050NQEZr3IegPbfMhKBdt9yFoHu3w'; b += - 'I0qSANLgj7kqkXpqN7wLiqoZaN3YypB4EF/qZvrKsxOSHh5+SzWrH4Dtkrl83jyyuY25vil/hH6'; + 'Iagl5T5EpaW+D1KnqfBBqjzd4IPUiNrpg0cR/BYffBzBN/ngEwi+2QefRHABUL0LQzMoqofKP5G'; b += - 'pWXPAf6IJCfeT19UJXxy+uEwXJ8Rb3ADka6fuGsrzcpmF/MBlwX+SUL1tBAVelu3Ua3qKfzp7Tm'; + 'ncptGvMgJhkkPU3xDuAb6r9JFI9GyfDlAnLhvxoIx4FzzyHqPKuDbC663DxbRPT3W5wF9nYDdka'; b += - 'HsWVlrooYiAvL38MnqHxFK6xL89VTDsrds9VR1762Zt05K3K8fr6clSzqcenL7tqX202deV4nWy'; + 'r+C9WOScTXrxdNJRWS9n4LHEEABV1vyaKappRmUZcY7AiAKHBATVWaeXjQGhIQdiCxTMlerjTV4'; b += - 'qnkW0G61XkT/pMNw7LUNOSB/bq96OXvWO+R5GYCzYoWO9CtpxI9kVQs2xY9cqkTA+PfKUT2teKi'; + 'PUo060DFhPRtbBcrtfkEy3Tpc9Irn7V+10ccvW1WHSgktgF9sFSHwiyHao7TqgJwoY89O78ikYe'; b += - 'zyUaJ0FjVdcNA2E9Z5haPbv/UvliL7G6EtFi4t4DfjSmzPyEIXgEh80KtdKFiK1AnQ8BXRlbjF/'; + 'Cds+DT64cZIa+1PAnLAEpzNhTKj2I9Z1ViNPoHlOUObMai8apS0aEK556hFKg+DoUnpBdgTVJ7e'; b += - '5xyjMvuQjDkfaPmlMBpvNDaXOVQYaTG7tSf5tY5i18wT+MHlzrqRkXaQi6u21L0QJ3QxriScVKs'; + '/yKDsM/NM8ZvOnVPXGleoRiovM9K8p6rZ5kCBr0MNH593Xx79qBYIUHYGE8DEYtzSPFZ7sJpDtI'; b += - 'HzfeDYrgXtlrl3rOMe4cKZ3G69WtXs0YsQNp1m5mBBknYTRM+Vq+8py4OHzNxCKMyiXPuGbLYKd'; + '6qcU5ht/IOq1JemaDDmi5NSrHOtW4lck1TFSynvNuqVt661Zpo3WrrML6B1nsVZhdgYpyVRqIzt'; b += - 'e3Bzuo0dFZXXdJvxtu6KLcleDUTe1uOItO7M80eBrdZu+gthUCXw7H/cVhEbFGB4UwDaSbuFqc7'; + 'vBfgCRNvaHVPuWaVjXhEJsA1dq7K49b9AeXE1gFYPc0L2ux+mrQxNGACv60q7+3uXENmPY8NfNM'; b += - 'eGjJEkjXaCr0lDrwkbtgihvI5ovcYqrSeFYW63zdD1i+k8XCCm5TN502oyydih6kzYnmOKz32us'; + 'O0X51kg7rGFMWvca1jqZ9qeVP/PKqXboqe+tCvgj5dYalU8dz1uyOKCAH9lBGvJ3FqvHt7o3MfV'; b += - 'mA+rWwwxJuBSM1SFYMasY1ZAde9xrsM3zjmFFN845jTTPGNY84wxTeOOcsU3zjmHFN845jzTPGN'; + 'rq77PrB9wOy7WLR1SW7XUYS9ica3+VgE/rCngJ66EoCohTU8mJlbnrdV9Qz7Izjrm2pTPkmWhUL'; b += - 'Yy6Icp9HucgU3zjmElN845jLTPGNY1hrxoWucrxvGHONKb5hzHWm+IYxS4w75RvGHGSKbxhzmCm'; + 'xoZD8Sq+y8PPI7q0HlEEsiVuoRFyXi8m9XEVDkERotOV3kQ0RTEAZfCIQiKxyL5BkyZOjaEcaG3'; b += - '+YcwzTPENY5aZ4hvGPMsU3zDmKFN8w5jnmFIZxsQ4XdAk/wttCDRwoGf3HAFfQGCb7bbc9i11b1'; + '53lbVr55PnVIPsBogDP4s88d/M8hu3Z0+f1qiWC+ixvg56hPHaRHkLjQZ/c67cvqePy8q4l9Vb3'; b += - '33lrm3Sfc25d42uzdrstWAyVZDkab4TPG1liJ4RdFj+9dYjFArkD0lf23lCLUi8aH0ayxIqBVoq'; + '7fcr24sWA0wNlodfYEkae46jLlv6QSmPMNBEwj7jvpbHdwSQmiNjYbQ10hWq7VOumkH256F6FeP'; b += - 'fX1IEmo81Hn60GUUOek3teDLKHOSeNfe2GCYt4pOCq7NmVxgkU+DQeRT0Ho/FBH4E6Xxd9quEMw'; + 'DjdGlELp65WnDWzo6CJS9ivgSJ4vk7rdDE6z9cdzX3B19/HBxPUporbvDj1fKYpM1ZbEdo9ptR3'; b += - 'tWGGCSfM0Ct8MHxP+SZGWo7tqT7xMKoM+++hcjvc4sSDqQpHxD6NiVPjIz++Ebv89wGjX9PEfhp'; + 'A00ysZ4bFWQtyjos8Oo9+fxFM2IMZTOChfcL2NK7WIDuQBTPIq+78r/RjB8llVz+N7iWgUlrcvl'; b += - 'BrWL/XA5tGSBaiT1FFKZWvMD/2NTKZgajnh5dbKPlGS6wQmglLA5grXmHsvyeEXDEpenHX2+QxM'; + 'bffxzE7ZWQ7wZwRzjgpX/HD82QEB1Qfi7EKGCpChnX0C5PBfxZu92tvv2TfxjnpYzHeC+4I4Our'; b += - 'ahQZs6cvLfHhRo6+LRq1IdZTkevEDXTXftrjR7LgSscUjMFXZydeNr3DXf/UXsbvYeAvi3XuY9D'; + 'fDwa3H1M2r4a7OGuhK1dp9IKmnSElT0csaM5DLLX24mmpRMbRGb7ZUWkkdxncO0rv6vRg0RN0Wv'; b += - 'E7Q+7sdAFbTK7tvK5rulu5tReou5t5etNxd3BOAHdHrt3cVHXfj9u6i6y7Z3lP03L3ak+Kfg97+'; + 'fM36CCnP9qxaJ2hBXBZbf0N6Uh2fUUeJA/UfMwkmEDMBSmRzYRxeuDEET8+C+fawdjUDZyrh86b'; b += - 'D3HYQW//VDx40Nt7xaUHvT0lPj7obY84/aC394kXEHrbJ25BoNppxFEIvR404jqEXg8bcSYCZVi'; + 'd14uE+mHOnzLXOZV6e+LzrvxOs+Vnjr6dwd6B3BT7mNGPOm6ErrFWzJ8Iyg5Zork2Rgi/qbMctI'; b += - 'DwR+UEW38cf5twyE2n44Y7TaPvavzaR6VMLU0iyLjyP53gYgG10eA5mf3L8DmR1ix+SOLzW8Um9'; + 'u/fyUTAnyb3c2ZeddNZbxNeTsJQ7xKg3wo8q2v/ywMg4YSLE1OhieJGs5W0O2m3NzGZTeF0h2SZ'; b += - '8oNr9RbH6j2PyGx7KqmFDfQUnYYfNzjoPo/PDcFv9tueFSmSWEE53v6Zn4QG7eajE88bvW61bgv'; + 'i+Amdg7u5u29sCDKMB+7+KxlpH9f2WuaQ5B95iFUpRaA4cl+2HSnWNqNUbInGlvaYV/aH1xHadl'; b += - 'G4FzutW4LxuBc7rVuC8bgWV162g8roVVF63gsrrVlB53Qoqr1tB5XUrqLxuBep1i97U61Yg6hnq'; + '1l3bxOkqbZGlviZK/Ob60i3/gSvv/rqO0CZYmc09PJ2tKO+tL+8PrKK2nLTXxaEtDLe0ZX9pXrq'; b += - 'GysQNQ71jxWIuof6yAoqr1tylzfe8TwBvGxc3Mnq9ZXqdaV6fa16PVW9nq5ez1SvZ6vXc9Xr+er'; + 'O0bqplBENlPOXLePHLz/IAVL2Rjn3j6FXe6Ix948rvr/9Ge+wbF6/yRjL2jXNXeaM19o3Vq7zRH'; b += - '1QvV6sXq9VL1erl5PGEGQAbwCr9fqlg9Lh8G+gmV1HjEcRYwGieJRwPpKzK39Hi7uy1+6fO7ncJ'; + 'PvGM1d5ozH2jRNXeSMe+8bjV3kjGt+7X17/DTP2jZev8gbVongNYkVo2e/ws7tBZf5jM0yWnbAA'; b += - '1+wgjp5Yr0spJOVqSTSnqlIr2ipJWKtKKk1yrSa0o6VZFOKel0RTqtpDMV6YySzlaks0o6V5HOK'; + 'NsmUkkT7FDnvHvpJNlCjsoI4+lJQm3CcIGCrrU6CScNxzjbLebQrgLl98B3UN3qdNtiRvMm9SEg'; b += - 'el8RTqvpAsV6YKSLlaki0q6VJEuKelyRbps3KCZF/70kWLBez5SLDjTR4oF3/pIsdzVX4djb3D8'; + 'Q+ANYg+1Yoh34//RArB7M82QfcxqXE5xEnhAXD/k/tJesb1x2D2jGaKBM3vSBcmXlUrCEdyL/zj'; b += - 'iA5XkO2S4UgVfUoGI0KpVGPJcCiT0GEJTenAZQb73Nmf+f1GncEsyWMwS/IYzJI8BrMkj8EsyWM'; + '6pg0XQI8OawltsHi0qI4eU+8iVpFrzQOst3OJ3SJEP7d0nfz+0d989rBygxdZ8xdYQNbfNQs327'; b += - 'wS/IYzJI8BrMkj8EsyWMwS/IYzJI8BrMkj8EsyWMwS/IYzJKYweCeymcr657KZy3rnspnr2CAvZ'; + 'bNfVTmjOnQ3OZyD8GwgjyoEZCjMmw4dDAPVj1JC70dzELCAi5gDS9WBMg7GkB59hSY8SKmryf5e'; b += - 'Z1Tw4UAYAA38IdijxX9PmaPk/p87Q+z+jzrD7P6fO8Pi/o86I+L+mTaxZ9i/mvrCJv/kFwxnQ+1'; + 'nzu8UZ5Xn2Fl12C2WK0gY5SrSY8s0bIutuAIMdtc/sry3x7gKfRPxj9FfAIfAju3SJ3Cq3uNBt1'; b += - 'ArbjNLG7mPLcbhKLVo7C9oK7AQeNPZMwThWry3fAVWu3UBMgC9OQ+t7uENcvPU4VT/EBoF24Iv9'; + '81AthNiLc0Vy0oXaLeXOvbXuTXCQa4barHNuVCUKjIACxO1iFBymvAj7eQZgS22IDmdSKQBiUM1'; b += - 'cYRo8oTxER2YxjAFjvEerrn7pbzx0r5i4s2sdzfGPmnFDMxGT7DPck6A12Ld8T4u8UJgDHVg99z'; + 'ZLihdPKvhTkRRO7g2FxJeNL7iHLoPo7YgSUQ6OoYtqxbefioKesWYtUsd7rSWsa8lwSYpz0dw7m'; b += - 'Jx3neREQndr+ixmKDv4IiRYv9Tt7cWYy91M+gvkoF75XRY/GO+aC/rir5vsV+11L05kLzbrJmKt'; + 'XZVqDhjZZWsmJaGUYRoe3xq+nTLzB6Kl4lshSmAHx62FzAw+JkkrpW0DRfZ/YywVn0aBuZyNgSq'; b += - 'vV78/X7SvWSfGh3lqL4aK7yPRmkd1dzkC8HonX/jo2lWN/eYA8z7ty/0HVdYXiY+BAkUJsv0KbR'; + 'FVYhfqYJagUHffjZQEwrWa4hfmYIaQXrcPxsJKIVjqv42URAK5gK4mcz8azk7A+NgD7vLnlextm'; b += - 'aMUWa98Cy1j6sRYuzBGFxq0xGDvpVp/CE9atv4Wnz2PqW2NtS9viYavkSXSRrOldbEeCdajB7Pj'; + 'rcMoh1f3TVr387gG6w96guTzuwmqrPxHO6l14N9/sbtX8bZO7sZr1mTfr1XgKi3wLJDF6ebXZZ9'; b += - 'fWN7sFGyRW7KPYgI9GDL9WDoZYNfWc89OHG835VubLK+3ohunKh1Y8dStBv1ByK/PyaUyVosRaj'; + '6kt+SdfKNDneiM3mNt8pk36oV5O58hNATuCUevtDb6zDN6d57kG9zdYTJ6uzXjM2+w1+hyXrVaB'; b += - 'FVBzYYjHCTSLRjXRoHI7Ea39ioBu1K5rcja2hbrRF0m7ULLQbmxav1yxqr1El0Q7G9VxiKdp7Ck'; + 'Wtu1DdU52NehONGvQm/61anYfRyqzpPTx0v5vVyvZFnTtHB3/q727Epnz/jJTpdSOSTTmfC6xGc'; b += - 'XA7dpaeEDMkPI23vZVCAHoQS+JJvDs5eWdLdRD3PBpH4pP4ni//RnmAvszpv4zyCDJs85xGrV5l'; + '97dpLv/k8WK7XjlH+YRTvvCaCS/5y7ahOzNqbxzHkWLLcfDZy/uti47q9r133N69m+ruvXvc3ry'; b += - '/gwH1vcSf2arz+OQLy4c2Ghs9wKe9VkVHTK9ey5uQ+BfQdGgAntm0PKtT9pm4Eej8Q7XAO0oehv'; + 'b6uY9PW7v3U117945bm/dTXXr3j5u79xNdeceSdzEcY3RS/T4OK62tle36A1GbKuu0ZuMmNe7L0'; b += - 'pTQ8q6A0k/vz9cqPqUhoBiLr/NpfjxwWWObLt2htqegtspZPO6zATt+uP56UQUfMKzAlcokZcn/'; + 'S0GDGn92o8vR+39/h6/5b+cstsOWS4WoNCV+shVSSJDqmiif7m9nfe/s7a3xn7m9nfrv1N7G9sf'; b += - '/AnMzTZwdxEzQrEYx7KgzeKl/G/DyUI0HWHM4zpvvfamY3L9PCpayYzRqnsd6AbQliDfot7rMT1'; + '2UEDhWxWiXXsPOSN4ag1294XYDsm6ELULvoj6lV1OAEyWQo7B2/tC6ighB1hyA5jHDDHuH+PcLt'; b += - 'q6Fhy77FsQNJJIO4TLqQVtiwSUalZrADYKQZeNagnt8gnlwXwde2Rz7VE08YuCduG3TD2vpMP83'; + 'fIS7+wjX+hFu/KN8K/7MHfLqL9QN8Iosj2gn1ZDx2F1eQ8V2XIWPp11Y4eFpZ1b4d9qtFd6ddnC'; b += - 'kBaxrtYn2+oJdmAHqUxDa/IAKBM3trDmVya4mlOSPVtcGJGwmgpC9DJk9og5/a0DrrkhkA4O1XO'; + 'Fb6ddXeHZaadX+HXa/V4VB8sTq6O/LZ8vd+OUTn2q+cE3Yf5UXWY7qTnSSa2RTkpGOqk90kmdkU'; b += - 'jvjZAgLH+jdXFskj0qx32BuuePKL3BT9hkJw5LFOzCU7qbM/ykNBMjRDP1rl1ZEabjhOqy2dkA/'; + '5KRzqpO9JJvZFOmli3k1RXQra4efAV8zyOB/k2XcmNO7l+J+7kqu3dybXavZMrNFVy21ES3Vayn'; b += - 's7ofCJnHe6WEQN7tRB1WUwb6enaVR+1Ar8igADanov5auDVWXtIUDzIj+cKNgVCIZ9quPhnGpcY'; + 'uhW0NLto6lbTgwAgn9dcbjCLwoDBFK1WPBWkCRjsWiW8NWXN+laD8JCQ5H/vRQwSlxEaT4gpwbq'; b += - 'bqegwgvW9W7X03MMa42/1eZ3GfTGBam0ZN8kvzrBoj0brFxknh4i5PAHyzJHX+VTfqsXSVzT/wP'; + 'cy/g0d353FOcINnmPStlPCtlPCtlPCsVOsgA724vJas9XAizhQN/z2ZF//JiQKdulDo2pQaDwr2'; b += - 'w6qjzud51ph50CIGSmqtke0AqW0DPWb6kEeJ0LMRREPaVlNVVhCVeoq4F8qgH8t9mAjtkA0Eswe'; + 'jzs9Q7UZVBUYaH2lsJMTl5iDFdI2BGvRCF1z4zHI1pPL6avjgXEHIhial6RaL6Eqodyql7YQQxR'; b += - 'LmWKAbkLkTaqBeiZhoWeiVGLmBJt2dvHDSjbiXeraYmz1pOmGGHga/0U33RqJbWFpP8SV9CepYC'; + '8Y0KEd+iHgvYkeJyCTLVsHKdjbV37kHx9OlgBgq8hb6yQmV0vsrpsIdSRAlAW59c8KB35sXgLFG'; b += - 'b1Oke5dqG6LxdWxkSsPL4m8UIRwELEzd+En6Ou/HDCcctzydVXZiberYSTVeJ2GUVD/xclYvWh9'; + 'gOp0OsfudICogl/B+VHVuKHy+wggbPJpadmGdc/BP2xzSqoGxnYDwbVBwvaUNyLrFTPiMdlGjCX'; b += - 'piJ7UiDZxksG5D9arVqRjjWrFh1mI+Jog7wjBSpZsluVUNoHihDNVQbpQvh3uBRvB4rbRtS9FRo'; + 'qXIlY3OlEsvqzcvOs7Z2uEJ26CwhxsNQBgjmXj3DyiwMyboGfgYGfgYGfgYGfgZGHIQ+ASUWi5D'; b += - 'H3LLdyUluUbQllbx2U0J64TmjrnVJ1gU+EdNqNSdh0P7WEWir2fif2fkQz8Kux3jT0fuAq0tPBN'; + '9ZXQG1gphtlB7D7dPOlHTV5pmUhHdc4qx1YmoA22fKdKy4NkTHTcJB1Fd4Zx7mLShnTZOOg9FCa'; b += - 'Nw3HumY2XL/KHNEcBEJq4srfpmkuDMFYeRBITVsRnYZbvJ9svtTpZ7Hvr87OwhmfDVCboZy0RuP'; + 'rDZ8Ll75P9KqBr1biyDikSHMmaepRMePEmHYoTJV3LJvYwicgdcB/c1MNkB0eyeB89rZqBHosSe'; b += - 'HcULQSXg1Xkq8ntEfiRgDuZo/OiPnp1WT1PtD5ieZneJbzk6f7Zj0gKgxWPd6s6HKsektFSk2vX'; + '5yMeZyEq6ZIS+OpEijHOFWy2E511AMAPN5q6YGy7Q+UdO4b8+iIocr+V3aAHAMDHCRvCrr4kyom'; b += - 'VFhk1vmUiw6W1S5Nf0pt6e6W2zyK4BYSuSa3qbEbk1vc2K1BqobA86SDERxZvFCkuD7RQMi7OfF'; + 'NZekHDju72EJGXuqfkCPcDgLdlJqT9hzYDt1/mdlbWquxn29jvZYw0PXtwFziNewsBfzSXuQiVS'; b += - 'EmGgzNSgRtTLnmUy0y57FGuMOWKR7nKlKse5RpTrnmU60y57lGWWLthydNuOMiUgz4IKlMO+yCo'; + 'QD3FyXSwZFNN7okwKnj6OOmEkOqjiXAHJUueBOaBz3RTMw2UTTKj3zvH+jodVo1pRg6J1RzAHba'; b += - 'THnGB0FlyjID9lRV/LunPMKu2K541eS7I4FEOACA3AvBe2ltCsqV5VcDtvt0dvrqpzKBr5kffFW'; + 'N7e8DazIBFBJi4VKHTu/aERNBr6AQa3kYEG/VSIgMqIzNBv0C+jHT5IkGRDCpVNPOOetasvtYsi'; b += - '0Sd/LUB816Ac/zI14LGTHREH5PGt+PO/pgrzAlBc8yotMedGjnGDKCY/yMlNe9ignmXLSo7zClF'; + 'd7P9P4E9Qn4xaZ8fuijcUrgsLaDyTfy+PrkA3iUkyviFSYfN8O4YUgW81jvcqYgBojgl7nslE+4'; b += - 'c8ygpTVnw4WKa85sPBMuWUDwfLlNM+HCxTzoReEy4xkKTBs2JDRr88GNWxeA3+1rB4Df7WsHgN/'; + 'e1NKWio6R7XB+pjF1ZhhNCJQQrOIw7odldAPCfCbCta039M7kJ2yqU0qjCKuqZ/8uecUW9vGNMr'; b += - 'taweA3+1rB4Df7WsHgN/taweA3+1rB4Df7WsHgN/taweA3+1rB42WTD4xe54cazYkdOdtGjXGLK'; + 'HXMwXWmG87Nca10o/Vuz1xs5A5TaJdBx47Qcpb4kV0RtuGP6D3aYocibBGoDvjvViihZMdwSEpA'; b += - 'JY9ymSmXPcoVplzxKFeZctWjXGPKNY9ynSnXPcoSO8Ncir3GZ8pBj3KYKYc9yjNMecajLLMygWG'; + 'HouvpMuCnIsFjHipclcaqIy1eDxYmkFYZhErY7vOuOyy9JXKMhcU0a8hT30tbu5nvpSeElHLjRc'; b += - '9xIaDt8irITDI3qxo5rM7Q1jIzvPY92GItHh6t9ge8Elfy8yFOn/YNuOMcdSw6NeiKso4FIkPgc'; + 'us9E63IvjtS4WKR/SehCCo2fCnQACWCN+szZX2JPlOK19Vnyuc6+kzJW0+fKdxq6zM/CkD37Fnq'; b += - '0oqfAVqb4AGQWICa4cbf4Xey4o1Vsm62lWXkNFixYTQE99zI7lFc42kML0R06wYIUJtcqneez5e'; + 'Wd0cJnQqwRpoe28OO9AmuhwtQVx0KlIvzyunI0CzhfAZEJVTw9Vu0RXpqV8RSv7695xZvr8Xlk9'; b += - '6y8Gvo/IjBIK6xNKaq6mX4FpT2YYuuPAJGlK4QBLd3Y8wYqYCmi9efVxNj62SIxEoSj/LgiheMc'; + '84dmgfEt55Hctarte8QTZrxvt0bjWg+gO3ndy6Bp2UEZeSDTrf6ISHa+z67meDVFx5ro5nJYNce'; b += - 'YYkDKrM+wLhkJzqc9R8JbTOKu1MW3CQDP7rC06tAkVch1od0wQEfr1WDaCYjaqex/OOqXNm2VfN'; + 'UuakctoSF7e1jSK2eDAaNQ13P2uewc2Ke6UzQ2PBXtJ0FbLFeOnlne6zxO7OupNf23L6nV3wZez'; b += - 'TcAfYFK1RKbj1nJ6tX3TRXO5m71Ivk0A9smHxKYl0TdtYNcqPGwtl4miuDh3+Z5uk8k4Ze0tFpJ'; + '0wfLC8hlOE6TnYvnzzN5G4VMVXStat0XtO20rdxZrgnE93aaNHxWep95CZ7CNH1Js+s6f41Q0IJ'; b += - '5aY2tZDEXehIPGtWTs1HyheK3tanLjR0+wGmlcqcM2iXXHJSPusoQY2TKhONpMvBo17eBK5HXA0'; + '0cRwXCPVm6oMPRDSP265YsH546Hax6j9hbGNmyr1irL2xpTLs8o3Si4yXlFmZZhm3xfrJMT1HYk'; b += - 'y8SNlepRJNjlmwXJcoaqtwsLOxiurbNKlB76vbsoAE72lej67NUz9haLbNf8AZV1GXn8St7U018'; + 'I26Ze3EEWHQVIn2ma8NDsMtHnQqAjt/GzAKkP0JGb+Mkh54G2daKmHbGadnTUtCNV044uWQtIby'; b += - 'VsA/xwooeWDB8rkGEmIVXX4d0P7lHlm13wKfK2XCjEU7l32BWGrH/rxzDluGUkdgn+irQ3uuvtM'; + 'AhnKBaCEH0oFIRHiiyk5XoJlLRzQRgTycBe1pMnfRCm8gf8yPloHvINsFs0ye9uGYoG/jtLrL1m'; b += - 'GDCyHBnaqif2NSdW8vvPYmaBzvh2OC3gzHAsILkMqQJuwMVD3FeG2IKWzQfC/4HAx//6lpaW57R'; + 'G3DSS+oGcrWpUtzydZltpmTXkQzlA3j10G2lNk2nvTCmaFsdMOJbB1m23TSi2WGsuGcQIDXmNk2'; b += - 'HOPBxrWPtBPFyUWxbh2I6VaEqYJ73IhgpHjR+6gNudmKfvdIG2kLGkF+Sj7HpYTBwvROEhfrQXy'; + 'n/QCmVo2b+LQQs6EOZOTXhQzlNPaOTSRs8WcrUpFeSjnVhU4AHQWzInkbFbKzUM551RWkckW5aB'; b += - '+ejIyusqKOmMosQ31JIfoItka+FkJExIFcojsKfg28AXCSy65mTfPgIsfwXTUelvRAj5b2IFd25'; + 'ooQj90tq8PFm3JYMsXit2ia3YpZh0gpcpK3eJJXLCSV6mreAFkT0netlgJS+I7DrZy4wVvSAydc'; b += - 'ZpVZMmRfKG1LBUoZhbv87Qtien8Y5gvsY+IUggdxChL4U8G1GxfUU1v+S8HNy/8ou0S5QDEdxuz'; + 'KXjVb2gsiOk740lvLoOKPaTvzSFGIDUUrRcPKXFmK2SkzTCWASxGyRmJaTwGxGzKzEJE4Es8lKY'; b += - 'V390KL4UT26Nz2EFOUcfJWp0t5BNyRdddKCeEli6Uv/pjr6pyA/owRx9GHe62t6DbPPOzC4E0WK'; + 'FB4rPcajgFNfygxs1aNInCm67z7iO8OwWTQOjYkiQ+ze0rKbncXU4sAJL8xWijm1XZ5ZfX14KMK'; b += - 'rmZ2ahDxUV8W/IX0M9Qj7HvsHrXSp9CXbU4DniZJgBOdsjhtZCohXn8aLScDDq0yhUxxWyQxyq7'; + 'Nv7+gqjmtxebFvubrZ3a9zz00f526ucfV7Dz9ym8+XvVbP09ioduoc/fobbWO9UaOO/PRkrsZ0H'; b += - 'qk1Vfejw9U1nDUbxlT9f44nvarnL/CkWPU5Wp2xO2IJX2GzBAnk0umnMBrR3doZIRUISE5wgMLX'; + 'att0d/J1eSBf1EQyAmdLKqa2p/rtBJNr5hGUl/jbuASaQJDPszFes042cDulpNo6s6OA8VzVNdC'; b += - 'INj6xCwMsVWhSjBIVMjuaFosH5T8DzPnNZxrpCXmz8iG8e0LIQNIhfmYDqVMx9EZDHL/V45SylO'; + 'wxbeHwG7o7uiHng6KpGlvyEwsHSixVNfmmvgv0PqJVODsKGG1cNFlqGGfugDZYVP6/IeraA0/d3'; b += - 'IOR+rEyJBEYzVWZFACFKoKhsV/UosX18z28Oz+PoauHQrVUmLlEiTSIGfw7rgQs9CFOOyfoZCHR'; + 'afy+SYdgNv8ZKu7ZKu7tH4FQ92VF8BQ++wxs/cq1rphb1H45j60rQMFuximEciaWT5VLYqxMdHA'; b += - 'vialOWBxk002d14rF8sQwezT6JS7nwvuBkXIaPWB2huDT9SByyOPY5xewD/ZGIZUuh4NHjtjaP/'; + 'eK6IHBMuLcrI9EUV0xc530hg+iLH9LUHFnNUKPR+GdB20eiTrmcn7349/Ojd+cfz7Yf78/k0md4'; b += - 'kFwjTth/qHDDwc35HX28LcGfyWv6eE3B/8jLD9wjPjyjZrfCQROE8tk/zEOvqJMzttM/mPbtBnz'; + 'pqGxBPrt3Lp+Gy6LOXNHLJ3P5//65Pj2w5525/hZ6N5oEChYO6HkLmnzwVjQx5K0okTChTSO9os'; b += - 'pqXb1nlqhm3lpeUVCDL6jfBAuGPUvzxg91MXkoV+mxaPfpM9Z7bhFgnOo1g2Ul678AmjMMuc73V'; + 'i72P2n+pF1XBTlW+g3XoqVQqehgJU3+kk3Te3JH+6FwBQT2ZwfifINZH5logycf6EEjo+SvCN77'; b += - 'sAxoPhteMSjHZ32befIRmScjjymP/+ROsbNZv4a6FkiePxAfUwVKS/R5j2i6FtDR28AZqi3V2hI'; + 'uZ+k5ukEPgnv+IcBEER92kfQmkoKySSLWyG4Y1IbzxQ8taq2I1QM4u0bMMZRyj7JvY4OI7uDajt'; b += - '5bieTBcEmKULRYAiiWhe2aIxG23yO+ic4l4jwErlGSheyj4oFKaOyHCmRxpgWXW9lZxoM4xxcaE'; + 'LScG+cJj/gsNvqDYzurkhtbcQmEUxjP73oinfVp9W/1imOtHGVEF1CBhUt+iTfaMAozhvWZ55g+'; b += - 'fu7ytvWLQ57DxEfWI7CX8O7Z1eis9+KaKmcgzepZvmEOJfCT324SSNP3X1yS53WlqJBa1jC5Vqr'; + 'F38IfBBv9GX7hx7phY1l542jnWB42DycWwsT+Z+IkiZIx/7Xwp0m3POBcY3RmgJMMarz7jgCMys'; b += - 'PBo/0mOrnA+9Jm0VoEynXVud8trqjLFtBWrg2uqM0bYCLBteWVEvN1oCdGvNoww32CnbYOdMrcG'; + 'rp8O0h3Lelg3IlfnsQDGV6LVgvV7OW60/WzdWo5Xp13VxxLddL6+YiP7xiliCX8dnfvF5u3i/Lq'; b += - 'm1LNMrcGm8Gdz9omBBmNAZuCDehmH5xOeiAZYBE7U6hU/skJTPkzmTv3Qd3lVXwubBKuziVQ99K'; + 'lmigMllL9bL7mwpQKH5SlimB/rNst9vyP9Gz/HmrpKY1gdzINJDC/XwrzxHtDfJDJ27+6D7ev9c'; b += - 'rOJ741cks2ilsy/JnM/sCrfKL8Aa82Nea4ZJRFhEG+QIP6vkC+abCHNddeRb3FHipp2Xhrr7NJG'; + '0SLStYwnWaoWD8+vh+CACVQRp6pqBj8Y8f327tamUEFmWSmf3idD/7P60MaDUHkvc+j3f74htdu'; b += - 'ygSR00PWQdqXdx9vYPba+kwWg4HgVMf+vWAi5hWGm/cCqZigG67U7bp38XDlXMo+uI8HA2G5Ud+'; + 'BpsZlv3z5XzoN3kZ5pJa9AWlYSAXZdKjOsj0ES1DVD1Ii/kKpZ3n/4B4rTuy35APU1/h8Q47Vzt'; b += - 'YAVzCZe2PIPA1e9f0QmJx/CFqDx4ZG1fHlzWL4mp8f+LH1zbd8/a75DuvuBTyT8IHqqS0QC8gvf'; + 'kYbl3VG5e0l/6YTHlkVYqUlQbzZHgTw1g15bXytapOehY2CgDf5/BoT+Ngoyc7IfpvD6Fc+ecSn'; b += - 'nq9ypPPLn4iH7C5CAvLysIW4h+fOyS0El2NGRFv0wOvdUoi8yYqXvsj/TESGU2YXst6EKe4yxKT'; + 'CQ3PrlUnj+jhd8RTDAqPjgc21M8uZHYrmPmh2IVey4biVXAupmR2DZUufb9b6U5WISsOnS1FosQ'; b += - '/esgACUO/n6dUCCES5ybri/U6QBHTzEVmZbRFyPJvl1sAFImuqy27MYZ3b2FeZW+8rUix/DbbTT'; + 'JhNRCUwKOBJ4XM7ZNwfB26kLZQblD0iYr9PDyo1hc08g07VsgyhNDG4OmTMoO6ih9PMdakpwB+e'; b += - 'WE4vI+vQlc3GY58k/Ga2a9nMkz5WZPhxmA5QnFj1/S/TblQT0tRUrZebliT4caQNXTD3UQgOxaY'; + '3UQuIfC8Prsu0q3g92EsxHneAXsgMKyt0TBaWpz7XXSzP/fO34MTzGz8tz429UBz7sdfSxfJLKW'; b += - '1OoWrq1iq5l5N3wz71G1EjPv0CsJWrMqxOurGKyN0EZZV/QJWUcajti8TewTvvl+w0JEoJCmVsj'; + 'K/+Hl5/PHZvfsQf2ip/LFLnXvl6Sd/VKInJJbeyR5aKi/8Zuc+FQaE5W/90nNBuav82X8mP8+H5'; b += - 'AM0Vv+KborvGFCTzr/Vs11y1zxL34l1dlr554/m2paFTha3w5dcV3NC77wSAcg5dfwzHhiJoOcr'; + 'aun5fe5KHscyZArlv/81c5i2fT1wrnr0kcP7E3VaeAzn5b8C+Xhz8jPj5vyp56R318weJ1T7R6q'; b += - '7a3r+eKq6a1eurWySq8J2jrTA80N4/jInIdZuHrc3/vb+I+fDyVHY6lpNJHs9/6d/8jxsfW/rsf'; + '+/1VG3LzDRrynJZM0AKAciU7EIpiEN58Up3j1UMR5Rvpv2iaxrI5NLwhlK2lwsR1g5movBEcTKT'; b += - '/r9QKhnmHroxHf/1tL7v/DcNwuR5T3zp774F6d//nOf/cLnNekJBnCPLhiIcrdG6T6GtbjGdch5'; + 'Cn0gJqBCAKz8h7SWAPTdm0AE5Uhdcn1ZObqr7AQiZyiuSpQX1l2AE7LllcbAJZByrk4PkUOWpyA'; b += - 'LrhiinhfHlPZ961SiGOjCxEMF2JEAZalAMcMxLJbozMGfm63Rtm+oinIBzgLS3EStOM+KkZXSnl'; + 'IZr5PSXSelNQRk3IBwFyoYqgNqbQLgfA9IQOtWp29cOU26uaTYt3XcamGWbwZujbWYyI0aKYBrs'; b += - 'SyPTVCQNY7ZuXcmlkKa+MKKVIhoZKSpsD+qklw3Ds0YqhIyMVdIr4hTacTS7oOSlRM29JQZtI+c'; + 'K7tjlEinSwB0953J/kM151xeo3uA/ozuzCqd6GL9fW+e+W5z988tiddytjOHJfYXT9xvS41IwYf'; b += - 'Q+oKpqVV6wVWlLirZU5airyvIaqjI3qib5iIpkI+qBH5krurha5hKdkp9O8w7/YsfO/zB/kUrxs'; + 'V+ngMRX9evRxBquxoHzhu4VOmOwDtMDSqBcRFWvUaqBxLyOupXErocat/FOJm7BxRuNOI25O4iZ'; b += - 'IBuo1epp/xKHbaV6tUqJZ53kXqHX6eYIY/hJRNn4R7jFUpR0uGSPInBaUtybVRJ8n1s0igleUgL'; + 'HGvjnzbAJp9chXA7Sce3CgFCpPpwT9asKzw4IhurD4P7kjw8DQghSahfebYE+sMEVDVjeQxMe+H'; b += - '0pUELUZZDmXsiVBF+Fp+gfk7Q2FbXIIeFHg0a8ZpDgUHxLoSFWyQfftwTC+nBrFA2E7cYYGc/Oj'; + 'BhlWmFMSu1mMtErQXIjIu5xJhLtZiLjLlYxaAZD+0xD1kv4sQWyfWbFxm+WPvCBcZcqMWcZ8z5W'; b += - 'NkE4wEtCz4/Tj3BwJGqcfl6kChEhmFvuknmEeP/ESNSPmlnlYdqFu/P2+p1kDgKeW3CGEiDPVQA'; + 'gw12PHXx5xlzNlw6Jur4R4AyCimSKRo1va76kMxtmddCT4s/NCpX3w2ABbbnRacRDPsfrg898+Q'; b += - 'QkIfZ1KjhgOQlLGxyBD9OHHcGi5/1kyzQPsGTvRusd7G052dtP7NmUJSFOzQCamgEbOXGgIW7oo'; + 'EK9F/B11XAYdZtTDVDVbZcxqLeY0Y07XYk4x5lQt5gRjTpih9hwze+R/9VusPotta6A/HeKvf58'; b += - 'vLex+Vk0WM32lCRm31nLxTvEmpjvm+BVZv3LbDKAX91QKpB9XmsF1uzJggY39kz3bhDB7vZ8vr7'; + '63fjrY55gzBO1mKOMOVqLoe44/lYzININZqUWd4q5TkXu60divhXX3mLMSi3mMt+5XCvlEmMu1W'; b += - 'f103kYEzdk9YLdA8Pk07nBDn5MBzWBoJofJbGguhcl+aCKHyYtoQQuXMtCmEvPKMKoQZR2gJYdY'; + 'IuMuZiLUY9JNMLfFVr62VZfvl9Q9dsd44bjibtGkZGCDhTPEKVRz+LUQ0sKnNgy5Df9HONcHJ5y'; b += - 'R2kLY5ggdIcxVPlWFcL8j9ITwkCOMCeFhRxgXgjXBoDEvBGeJEZYTQjlVUdYJ5XRFWS+UMxVlUi'; + 'HZkVT3Fq3fNtuLQEKgqzNvw+k5Ymw5Cw9/r4B+z47uTa53WaaEoK5MKODdyCmvVlYN9V0JQRlL4'; b += - 'hnK8oGoZyrKLcJ5XxF2SiUCxVlSigXK8rtQrlUUTYJ5XJFmRbKlYqyWShXK8odQrlWUe4UyvWKs'; + 'K0DlwJeUR+uhJzK6uifcTsobDrzbYxyGbwIW6qwjnNkhMFwD+AxOCPWDS5mR3tJlYPLMY/PI+x4'; b += - 'kUoS6byQiuUgxWlL5TDFaUQyjMV5S6hLFeUGaE8W1HuFsrRinKPUJ6rKPcK5VhFmSUKMbHPxpEf'; + 'dCAskVEB2+sKGxATO7if4+0GcHHKzxkkfs8Rrv4bSJvmWodc04gXZcGLDTRvu2nDDhoEvBP6dGE'; b += - 'Kn/6u349KO8QwmeYy1mDStSotywWTbacy0OWbI5DPzLUEYehGvZj9USzUMaqZUeblp2F2VtEb2W'; + 'L8BcIQkA5pd1EYXM8p7WDcOfjs9nFnGXdW4lo+7i7411qVqLaPun2Ay73TkS5IeTwlj7vppnDSo'; b += - 'ZLqcLRPu6xK3hg1bnOhbR66plE3VTFos/xtPClkVRbd+TUxfQOI54Mtu/IGMd1l7YWO0RDz+0DR'; + 'hQRuqjDrojYqw4mKWITAiDU51VlTgG924dOSKiqwDEJVd9+Iqx/nEPvqxBY+CV1CN6toST9WEP2'; b += - 'J1voiTMnwvlCoe05kr0QKpXzr6Tt3OaU3LA35ZXmqZBLK1K8HOIpnBXM2mqgkaJtWpypTvD98Z7'; + 'EfgMSBxwtwxpnP27GLcYBI50kL3HGuqMXGKLOPtx4vtiypRXXrNgkIrk7UB/XZ6BzfbYf6qy0Vv'; b += - '6DZtd/Mg23BUlh+/MDbaSahapp+gx7lDSNRNwxFwaryS0r4kiX8lYGSFO3YUeUmfWX4Y9rmNh9h'; + 'jaE4YEWnWJ33WpvMmiAynmtVbdGgOSYi+K62Vdxvy7tO1z2ButkY/sxq6z5zxWVvVZ9wHfNGXfN'; b += - 'TSX4wcMN33tgbJGzzWUCKQu0tJMSy495rGhMQ7koKV/7/KvEep99lchEmVKJ3wG5ZsnN4xD00mM'; + 'Ev1IrGYg1Hi5ZIW/RLQ42tenBt8eeMK/6VoeJ9qy/UWu3fkmVr37pi33LD5d/0XYcz67lGvetWy'; b += - 'XdTJTonfEegcDtShK8c6YD1CPSC2ItLAtoPngbT0oafXDjrRAjjSUuJds4q5lLghhnM4O0WiejB'; + 'Zs1tKhTLCrGCP3ndYqSN1pVT/pKXPCVeHK9N1tVJdzn/YeFPtsPP21fD1g311sJ5ucfNExXvckd'; b += - '6DzCiniQ4M08AtF66xd/YbnGnRstmyyWm/idk34WH9eZ1xz3vvmDaa8oqZiLssmY+3h/cT5YWrr'; + 'Cx2pxbPMUHhuUlUgMra8m2/oYUFteyHna0BVm0KJrqrN9GA7CzUQSYZ5fROCCGp+p/fydhGKBKr'; b += - '7JFaYIkb2e3ozQ5PcjazglNutCUwlu2AItRvHUXYEmKN1wQva3bZHksxlKLWQZlo96JgcO+f4H1'; + 'r09Srm0Q9kHRgtUiV4+RkP7s7oOcvoZY01oy923NhFrGWJ2mt+YgeC7JDjxSTd1rFzf6k0922Xs'; b += - 'hHEXJgn2DyR4ejDB0wMJ9tUTNMrvBEGakqFIoPklFYtGV13f5yOp8OXP36rC73YVlmrOcjUhUqO'; + '1j/aRXP8obkjZ5vAhVdQfLTu2e25YFJWRHtx+t5XrDoRB0ByIlOFAgaOUd54+8McQd204z1CrSp'; b += - 'fX/mLV4PsgyKpaS50ClE5tF0fua6PFqQWxNEYmhwVSD8SA8Ox4w22Uzqgg+HA2zHw7wtw3cPIDj'; + 'nedWTO9QcXss1StauHtC7odUAhX3QM2p6m+2lN1Btpgq4oeLArYZw3XZ4mkdajx3rR9Fo/2WfMq'; b += - 'R8Ud0/No/zxNDYkzd39UOpOTHwTCk/dF8Q0he09jb27OLDDG7frvB4wPrd3bNLbE9oodlTLi1dC'; + 'fRY7rZNY7QbsAUCGgX0Wa5911vRZvG6fxSN9FvFtzF32mTRhTJ9Z9XROmtCppocL1ilMH0pLKIq'; b += - 'RbxDYygKXP6ZhctyktLrwXUuMqelDNv0VmNn52YZ/xKMwYCS/Fj0x3eP0Xc9HxahtKddEIiDX/Z'; + '8o9XfaGkxgTAAx4DBCQDfYyFDmOivNgAdsZyHci57i8rXgesEj4hLRTiHO0aZCtQ64QVkeVO/w4'; b += - '64RBvvyC1zn/n3ZOIp1z/Zbc+E9d5zzpOkc6bMZ1WM4dRhPIf/osi/9jnav5Mt7Y2YC37tlSI+h'; + 'md9uHsXGbP0pB6RKRWCfDB+vfU001kvUVFON21mSXmuKv6TwTFJXQkbkdk6nvlpdArL4VeeSn0y'; b += - '8sGXuZJC2SGRVzqFi2ynfOb08p7LntPmcop/TAXTqgU5z0CkVOn1DVkPUe+4B14m+/sQJcZTOyV'; + 'ktN22L4ylosUh6d2qq8VCuE2Tjb2+iTNrM18xYAQr29C+ofYjmpLYFwLlZRv4BWOVryJ4ZiRi8u'; b += - 'oDF/py+PCgBLTUGxxOQf82B2HQ3+jQDfpTDvigf7vDROhvcnAJ/WmHpNDf7EAW+nc4/IX+nQ6lo'; + 'aPFyrWjSEkWOuT2YlLTkBIfD6U1BDvnH4kQUmjBKr100rskJK9vUHmnC2CGkngaeWs4xvDd7aHq'; b += - 'b+F8QH6ucq4Q4VPa9bUQNjNF8ePoosGY60yogSwbDylg8RTNTGam5+XqGAMa/HULt9thiwd8OMk'; + 'zh6Ru9oCP6uql9uMas4fQmz2EhE6t2kb/e7wioqZKSO3HZdxWYQ1L/q2uCiMl85sye/daVS69jh'; b += - 'bybaP7HvqVCT1sle+etqL+IczSqtDHx0JhRXR4M0/evp/OjfxqokdsbIBBdMBjR0vFYcCOKoJfo'; + 'Z+g3eG0hP9rv1weEeQ+25IfDe0q1oE7MNSwXCGmyP0uj2mOVrrttevkZXGr+DmKFNFuUksLeRyV'; b += - 'wyUB5BlQwJHjFLIxU2cAXFRjDal4pfD8dcd2PDFdAeIYBpuKaC5mmjYfOloELDy8+vUU8O49ZNX'; + 'hfPNkxDLw5Xvc+QnPbCRjgr/oLQfSf51YuB2kWfLFowFg5vjPIiUYvhFi2Gr8e9RFKzGE5qFsPJ'; b += - '/1zCFguG0plwD7JKqjLW1r1NdfXIHiGPUWqL2xwJrj9QQ4+q2aQwJvgYn+NCuh0NHu+1rmQcxDK'; + 'WovhD3ATXqjZC0OA/DJsth+hNp2svNVADWJOW7B7yCSgcjeLP/OwGIb+XZ9wLVnNmIVCcWcxTFa'; b += - '7GInCzWGHtzFSCyfsuhlPHsJBBm7NhV8M3YsauAn7FjV0FGY8eucrHDjl0FU43N5gRwjR27Chob'; + 'oTGhLCZvf80+5jfRKgNPLV40aCl2hNxWE1WOEcGBnjbozqr199ilvoC05MSmCOwKgjrwW1A2GjY'; b += - 'HLuKvi0C650ibn/SaenSFGNVeGmKsfq9NMVY5V+aYqxmME0xVm2YphirU0xTjFU4pinGaiPTFGN'; + 'UfUZ6LuCQL5juh4cq+VzASnOyNntSHbIUl65NhQSSpY+GD1KRTW2EChCQD+yrNhQ2t12hwpcbTB'; b += - 'VlWmKCWz1twgaG15zgWrDa19w3PBaCMgbXu8SBDi8zgg8nLh9Cmz17xFgObzeK6hzeJ0VSDq8bl'; + 'g+Ph2/EXPgDaI1tYVyefbqyFpb5wvqWefnUTyoQsVEzX7oGJdTVMz9pOQuMmRH+HOxyYMUfYE59'; b += - 'V1YzhZ7r9BtJHx+kZRVcbrNtFjxut9ouSM128QDWi8vknUo/E6J7rTeP1GUazG6zeJ1jVev1nUK'; + 'mDVf8GGw4PkeykZXQZ8ban7tRD80Ff5rM4Uf+8zXcQo//ZmvZQo/+Zm/7lP4yX8+dgpf/oV1pvC'; b += - '/B6v+hr4/UBUeLuPyhG7f3tKjYMVC0sqfxDirKZ51qxIYQBRT114hc5Lyw1X2viwlf0pNUFXp5U'; + 'RU9/AKXzir/gU1vl7+fsUtOHrMn+fePxrmb9HHv/rPn+f/8Gh+TuoUeHv/QbO1F/rmuZyzJkaOW'; b += - 'jv5ORKIuGK+S7dJNsg00vlImVdeQvus4VsEQTanEd/IX4FLSqFaer4Baz1Ps5bw81dQ0iET1CfY'; + 'XbiGBSpbkjUHU+3C4+WI8ik3vh2/VkeMoM6GPjWERFJR4d0V3Z90Tl66EqfYTQxmpCyI8zRmgLp'; b += - 'KmA1igeuRhUCch1q7XvVPIsRgF1eE5p/Ai+T33RKVjoza1de5ocJqXomBrSI+d2BNNcqb7SrefB'; + 'iMJIMDAFUV56Z94eBc4fSgv1sMLg/JCLQxNa0y28y4upy5QufKJ1aCcyuAtgp2V/RYdKsyrPtOs'; b += - '5czYOPQW6GfQLVPP7k9+T35rP51vwN+Rvzbfl9+Tfkb8rn8m/Mvyn/5vz+/IF8+61z3L1LPOnu7'; + 'vVdp3cur86MUqvE9C7ISA3ceq5Pe3vlwY3QqhE8CwJwAZKWlwITPQ8LWOlmkWLEdLNZunnKxXo/'; b += - 'fwabvFYAe1CrDDguKm+H/OAqEnQXm1YO4KvyC6xpIee362X9TEY+n46HAFghk0zcF9NtIdoJ9PB'; + '3p05tsXZqi7XjF6v3KiVrQT6J1VAkbrmiw56HItNLRtVNEmw5LSzZpz/mnGMkg8p3AJYs9ItUdc'; b += - 'C5ZJXMvyEfMhHIxCoNtEeIvpTBpYi0aaLliT+iF7UW0g/Z3bHq3A/fiOnWDkiK+pDe6XQcLVMFP'; + 'vhrLR1ybb8ko0plIHp+VngrZQvfMy5I3nJwB3JV62itYQKwzA0WOA+AEs2hoy79vYZ+zZkhF81V'; b += - 'ZWoQNRbL/EGPnTaOLfuFRPjKf4zvH09ijezmHr0XboyeUCQ3kMtlvJLLH0+DnVLFRiNnPJLkSHg'; + 'kH7Mvr2RVNfs1Rse8GoNQ5adZb2ys+bvsYdQ9w5+yktPVd67hYu3GuYgm+tROpew6h7DS0B7xms'; b += - 'yXI/u7UEvLPhXZX+RrIcjNRWjn/xrkkCeMVBMOTRQKTOunI1UrCAWHIhAzeZaA5jqOucbwA0JD5'; + '2phnFOtbI6YbCzjZMCrWUKObWYDE+VVr/Ko1dtVyQFwr5e8/qZYtp0+Za51l4Z7/qOu/y6z5E8R'; b += - 'R2sjJfjYj0sz3wPm4Swb2wHCCNtHFZtHElz+A38hBbgjCvAh5oy+Qsx+6VULTSYmH2m4apORKsb'; + 'QKTo6pS8x7qjGpRp3kXFHNK7LOEzBFVP09kQX4GRd/ZrkPdwiN3GL3N1DRydTgzzVpy2DvMOnPL'; b += - 'YtRSAN//D6y4GJ5TULD7SCJdv/nB8GAkr1Nol6WI11P6TK+KiX0eDA9HXN1sQawXtLqTNFtQdeF'; + '45OBq+PehL5A0o93tDvcgOxgC0NFSlUPdHtV3CMlKHq4rgEuNaYyeV4U6ZIobFD87oOwZAY1TUq'; b += - '75IqtZzZQz1CHpi0cbipf9foFfXsuVk4Y1TdnYmXBgZ6pKiY9czSq9UxqmUCK2oW2I9QUQtZsAX'; + 'DLcpxQBF577yhusjCoGHEuDngqz34EY+qwKqKV7fg5G7CHWaQNDYohWxbMyLBAIghrJSIAIcUwO'; b += - 'ICa7awfdRAkSPumsiyPzL5cFMr/mHtBFzISz+csi8/11Be+LA6+Mg+3dAKc2IaF/J1LMpZ3Oav0'; + '7nt7eMpoYcZ+S2guyjHlue+X5R+yTHWQa7JnCIqT/ZxQrlNGKTrS6d/UitAgKYClXPZw3rDCflQ'; b += - 'bnuirFaBdJ3rHxw9kNW+eDm6S7adDQJ4P8HnXIDFE+ufsiqHuT071kX5/Jcjqo80eei+PDMitP9'; + 'SHaLF/htf7HWXSGSfh4mPtNPGvYJbIyxkK1pulC8z5lQt5iXGnKjFXNGYqIo5HPGtWsxjjDldxe'; b += - 'olX9mSrHqHzehlSZ4qzN8yNpaA5s3Z8HuCKi7Qs9jxraFdHzKdrC0ONttH2hR077I3qcNLQ5CnD'; + 'SNG6Nj4R7zorHP0R7McjqPRRVhsHVH8L/rsfUDFlOxGzfYrZW8BXMALaObXZkDKmjx+4I+QYKzS'; b += - 'vgy3H1uif0gaJHjtoc0SPKdqGBbjfwiZka3TY0H6Hnk9iI7I1eoh2ZvTIIOLbGr1gaBcV4IYKe5'; + 'pn38UZoDtWN6r0eNu03DY04R3WvFXCfdp6j+ta0AjU0BR3VsaahqKG16KheNW1JDQ1KR3WpaW5q'; b += - 'Ot0btpQ0SPOdqz0SPFZIZ7Ntpd0fN9tEWixxPYu2yNZmkzF+A2pluu7OcbCFotDuV3HcpvP5SvP'; + 'aHM6qj9Ni1RDs9R60rwm5YQmGE7KNWknMQyGk3Zq0gLBDoaTFjRpF1ERhpOgXGx1odUxR+T02WH'; b += - '1RQG+atQ3n/UL7xUJ4fKpJ5c+QQLmYO0SKS5hOH8uxQvuVQPn4IdzIcGR6iDVAjX3doPjxSbKIV'; + 'nqh1JdHG1eY2cPrumxpqa+NTT9dREU7s+9Uw9taupmU9dradmmjrjU5+vp85o6qxPPVtPndXUeZ'; b += - 'Zyy/7VC+4VDeo28OFROUKE8op0Pz248U01jjkdvUobw4RB8V6/ImZxMfmn/zkeKe+QOHPnCIWnM'; + '/6Qj11XlNzn3qunppr6k6f+mI9daemLvjU8/XUBU3d5VNfcqnSz+mVOEysBmULBkE8EAAdroQRC'; b += - 'aSxdHNKlo81uPFPdSd2w4NH/vkWKzJFpHvzp1aL59pLiDVvXxQ/MPHSlmKf+Nh+bHjxTjkmgjNC'; + 'kkgLRBUWLQVak0Oqzii2SS5Pwhouw9DY7QliQCP9PKz+OaQAFXEidQNChc/inwXalHgm/G98tTP'; b += - 'UPzU8fKbbSotfMO4fmZ44Ub5DI24mw/tD8uiOw76B6zzeOFOshiDlEv1zcKYk2QL/z0Hx6pOjRz'; + 'Phdg/47wtRZE9HeBfK4G91ulFnNPL1JAT3Jchm94kywuRMSQFLFoKege6A1D7mZLZxMu/WxlgBV'; b += - '2SH5m8/UmSIok/hTJSaaf5bj0A1mOo9P3mE0VbTQ/ObjxSp5HAbFbQ4NH/fkaKNJVqIE/Tbdx2a'; + 'Te17tUIfeE3IGlRRpAjbgtu4TLeLWsnXLo20MA27uyYCqhvKaTNyLLWmp7I4g3kf/VbB3rt/oUl'; b += - 'j44UHazaQuTlm/OODvWRGHprHAPxyZZD8xuOsNP6Lvrk7vmxI0Uo0bgY6x+af+ORoguuFWI8v+0'; + 'SIiM7enuy3JUz4XtYkFhAPUmpylxQ7Niila6iCkRDUn3VSdSBmQju3STtd1Z02VgGbWiZkDjofl'; b += - 'ITih5V8KYRa78iFwuAYqaqVRZ2tVn+Xr+2TupvYlTNufTHLznUDFNbPQG2kvcwamLO4jlMiBmS3'; + 'Fp0Hl4sd++zNIrmic3SLFruJ6KpUNFE1k7Z+ZDm5I4IWXX1srz0cvBBQtrg2/cS0LQPHRaaKmt9'; b += - 'CG+HNTfi8n3nyo2Ezce2c+xsHeoeJOYvGt+SwHiWPuJsa/lzYRm+TbTcCGyBscG1KFaJjM0k9tl'; + 'hrpQ+kWbRI2b5D7qB6Pm1M/6WCPsWMgzB4+oVw9RGd0RLCACiv6RAvkSD3nemfhEOg7Lzg41Kzp'; b += - 'diQDxg45ohWwPR2Yml63r49gtJ9E4tmkHe2RzDN7PKlVr5uO40Net6xPYJvpHxqewTEv/b2CPiC'; + 'sv52dapUMDg8TKzoAlSynhAQLTaAaYXr3IUZ2FspERQT+YaATX55zO/fjVDeDSLVYmB+WjZFzvY'; b += - 'tM7CLHQzL39BvnF7BIdJ+cz26El6tLZHAByMt0ewE920PWIYqLu3R4Ayyu/cHgGLamI7H+DS7RE'; + '4jRx9bUFLpYBkrBA2oW1s2DlBiqrX49vUqEQ5VIqxXAkZG0sEd7POZ6lDPUj9vXrmZBeuOmCk7/'; b += - 'MRyfZvSpNottp5NNzw/boKXrctj0CJGFje5R3vj816YFq+0LnsnLfItycwL2XeRybwMd39Vh2BH'; + 'fJqakdAiRtG27HXhEsU4Ql4PIaTJjoApfMuhAJPUg23SxAbKQIzltavTRiORDnh0Ww/VCUOFRfb'; b += - 'vu+DHYdjPeiyh5WKNjoqQsFYZjxQXGfskF96Vkqfrizn6S61KQWxEnG6gueIHQD0QuwJJ8RmsRe'; + '4ppVcU1bXIzi2qmWMwObWgwpCmSHqT+3qrulAPS1cZ2c0gVf0VDDb5CsvHW/6zYSrRaLYA/SOKb'; b += - 'DZeB1L64XpunIzxWVKIYlMV3kcLtCttvhW3HTnjnzoRK9zWQX9dpO4WUcmgMqGIJaUmUgvDtcCU'; + 'WiVCuhIYlj3PExPrd2Ewsp4dIGXm19M3xqeH2NHXHE598tJg7ro4SdhW8GFwoaAu2s6AtWF7QXG'; b += - 'lEAKr+UM/BoEfg0Cvwb0CWpgt8fi2oPKVM+Nkxkkk/sHaOWF7B9jW2AkBYocQpjKxFCJHUgT9vZ'; + 'y+oC3YbMEJOVPQFiwraAvWLSbU6HxSLdRlG6t58i6D+3KzVERwdkA3SLjudAAuW3M6xMozqcZWQ'; b += - 'Zvrcgp3hqDb5VgRiG/zw2XcSoWoMvRxkkIaaz4GLBDlgDD2wIqiRsLk6bEz1D8C4NbjjL5l7IY/'; + 'KyoA4TIgblsyek2K5+U9C0uPdF0bKkEBpL0CUmfdeldTcemujmnC668J+mbXXqm6dhWN+V01JV3'; b += - 'fuKt//XQfTxQWu100i05tFdleN7Mu1KO1nWrrs5020SwR8B6hnp3vLG++/3oSDUH4ulO9fit9bZ'; + 'JX2TS5/RdGysG3O688pTSd/o0mc1HVvrTE6nX3lH0mdc+rymY3PdkNM1WN6W9A0uPdd0bK/TOR2'; b += - 'ntxH0Wjlu0BDDuXxXcQtgBMls5Ce3m3h5aIuJO7j7maCzARmuXGjRtN7e2vWeXr3BKhlDQKb1Um'; + 'I5clJQPbY9J2ajg12ChA9kt46CYgem76g6QtU95giCEjeXLSJuzRxV/qVOGzbPTa2VgrL9j4qvk'; b += - '/lhZje/tzTvzqK8cd9NmI95POs/q5ZUFJgaqDUMTJwAYZXCZBFY1fGJgSNHEQooa1uqmFt7FwKF'; + 'tBvlqkkG7BwtjH7rsJ/Aok+hwXtJaJdb6oVwXcu7T1MqaD0DyuqMK8I1sxfBTyMtJexbiLGOHG/'; b += - '4NfKqOIsMI8quQ6JddCB90yNv5VxijNxIkyS7WJ2+w7fmg8iiZtPfFljRUgw68kRQnKmV9AaSpa'; + '77qWlq0qmgYrQrbHu+dcI9Twse5veTh6ZQH7seeo/VGK4duElD089YDc0DSSIUQNigK6T6MXd1v'; b += - 'EKk2xGoTjHFinZjEJxjisUZ7MainMMRo9tmhqKszR2VxQ/bo2bfABTvOAgfz1hJwcDQMMqDKo7P'; + 'kabOBrhTldoekAgptTRQApZtr9ozG7pncr1KoKNGPyXgxrBhwpMjKD7BaBsgw8KIWOwMVRLPW2r'; b += - 'S08OGJPKCMI3YOk8szFlYCFORTIvshrwX7B7xJE4gqPuEIjrrCIKyTiCoe4QiGuMIgrBOIKf7hC'; + 'tjwsmtcABQhuNzw1v7gJs2orMZvEtcBOn8i6CkqUOlsPdyfk7PjWY5w3sPYTN5zp1d1fs4ZGuj7'; b += - 'H66wh7/GyMOimhxVTpoZJfixniyDOxl0gz2AJAA6xzDfu9t6T2PUYjgnZdel7NiU3Z6yU1R2mco'; + 'O/r+ZR8C3297mvyxZc0m8h797sp0aK4kfyaG+KWuRtvfnqyJiwX/pGjWYgWk2/v2FiBWsQ1kk31'; b += - 'OVdndKjtjZVet7MiV5zQf2dhh83Y+3RS49GP37CyaM7jUNtknab9AvZg8VZg95Vto0g8P4Ny+kz'; + 'd0DddbjrMb36qyz9uBABrEG4/RQSiyU9dBHYaO8m3rpu+XEvy97zFjgvrcWNAHHAf8mXNjH5e8H'; b += - 'WAQlH2oZlmL08rosajIYwHKnVzcS8PUlDMHpr8FksoQ1htSobEimS6iZwXi8gp9kROjydyCjyR0'; + '9/ag+vaq/EJG8Jr8Ypr/DrHY4vKr8gth0m6FTJCRJUHu3EZtJnwge4wG43T7hkPnr8ZQNtp9d/Q'; b += - '9yJnMpO5HR1IqekY+DFwlgwe7MX951d4DM8vdAfKw2KoBjNojEBXwaNfIwdTLx3QXzN456/+0gx'; + '/VJgHtw9hHuyGPWCkVkcm+78ITRlBn3y3loLYz4e0Ns6+VxHl1HsBOY+AeCPZ9+mWizO9sGg3mp'; b += - '6OICKGOMGEZb9UEXF6vGibeEFoMF0W7fxaHe1AaKcc8Liikn6oD3pY4/UwHdY14CEDUR0BnNcvn'; + '0EFm6wkLy1x7xtqKyWLcvWMqjX0m5fY2pJ/FutYpNGwrf31VKIRUFX8QdXodH7pbCgZ4KAeiO7o'; b += - 'uBanfzII6CQky3tyu+qDOjMvvpM2eduY/r3VmfKvOZG/ohveeb1ksIESjVi7inUxJ9hbRTtqwIl'; + 'Sn4Z5HaAuy2/k0+r8gE7sUreDGqvRgPvbhiht6Mam++PvpmNPRmCx3gXzSs9U7nwyUd6eI0+0rc'; b += - 'JcUTTLpZmFv8Euh67cYk490kbPj9d6nPs7liIN9HosvT7u9Xosjtw1dY8B+fJe7sWnt4iHXNjGi'; + 'p470XYsyB4P0q0KMVclmxSwW7Z3QUaiADSKVlertfEulqqb8mdO/PLO3SChZLm95GKgg73J9Cp9'; b += - 'y0HDLTXwAEwvm/LHGCdHTD2Aiz/jcAwJKzPE0j22RytguJCwNHKILsTpTt2D4b5ByvDidj6RQjC'; + '8cowHVHLR0kvu7F/FQZr9KRUuVLxKBYjAGgOAfwepb0OhLdsTwcZUiBT4+gvBoN+TXxjNh/tgTh'; b += - '/XI64aaZe1Q0DRa4V/oROx7E/t13SyApWQKbx7WUvAma/+nP3/jvL3z/D6zQCegF2kvO/+If/OY'; + 'lpbTSuvwEXz7P9RCp7TihebydsFW95WL3k5Bm43FsU35+rWG3tovIWaGwk2W/DjFV2lwjDvgFoD'; b += - 'HP/Vvf+VPfvAAneFA+NiRQ3/6Q+evft8/oYMTwkf+8sSff+DD3/sZCi8jfOPG7/+XL974+CfpkH'; + 'XD7oQgPas0qPE1LOyK0QmMwYXmyWN7ywcL2SuR65fsv/4n0imJMlm99WBh29gqYOVz0o1e4b0Rg'; b += - 'cY4Y9+Esvof/v4t9O5LlIJP4RT/ynyHHCrCS3ET++wjteyf+I73K4S8QVUefhnXw3Y06RLwenPh'; + 'tyRc9UpLe6WVW59M7BUIh4tpXQUUsCWyhvyBkBCNriahmuZFlp9KisaiMF2at7MTZtzSENsww4Y'; b += - 'NaolXfCsD8/WZmx2tQgz2UfS3uGry3kdZ5NWEXhsJxlO1jR2HOBhxbmRQMTD4Ayw6ySla9QWtkN'; + '0SJULAC+VfCcuYElNlVVJ2TsHzaEyfkB+tV0whZdG9TcadV5MvFOg4jYllnbBBIhWyqdXHDMpwZ'; b += - 'aJXsL7CBtV4Gc5gXCi7bici3v12qGdw693MRTyO+3YdcbqyuA48eLSJn1xIpc3iu8CJVUI0G7Fo'; + '438mom+5w6IFKWN2AJiRJttdmnDQmZ2KD8yMrKyocBNZlqdMpoilPRGrA38qeb/QzOQDyvKDR3i'; b += - 'iqL9Gg3Yt0ciyRGs1//CLI1k+tEqWX1b1LgTWvMVWcHZUBesmLgMVlI7pG6+iGD2+ocDrqSTx/G'; + 'C5kLRJsLLZPCdYLdwIGOPIJ/sQFGkMMTcnO+dFVz0MhkFQMZojhCeut2W/F5VsrjS3KULnD60kp'; b += - '995sanf/fHfnKpR2OAzqLzf/biD3/vz//l1U/cTWMA4T/+we/57eMnP/ujP0+D6hoGyQ9+4T//0'; + '72F4p63VZK9mNanQIrot9SjQvgG63IvF9M5Ah2bjTnBP9CGzMeftwzQ0OYWqbYRkkApoRpEEujd'; b += - 'Xd/9EdO/wIRrsgoOv7v/+LGjY+Ob48uIfzJj2IU/fGN92yPLkTuVk2HT300gZPsYLEjQ/R8lmoc'; + 'AJ3qxSIeNKfNuCW9FKFj2ugkpbyL7VJRPQO787yKsChw2d1rQ/Kg+lbuYvUm/o7O3W37ydy82AM'; b += - 'd6Ju4h3quPwnzlxXMpk3Hap1Ry4QaR56pkmHIFqGfi8FKEz2fFqE2e+kshnGlJT9VNpjeGruGgr'; + 'PVlaIeBvSqn7vd8jFJ2yt8u0yP2E/jDqE949o0jvKuDmKnNo2bmMabdBo386ZOY4mVU8IMdHzpk'; b += - 'faKrTFtE5jrIz9GV5+tInoC74aI+luzhyltGjvbB8jeiqJcnD6lxDTIMX+NCHwQY7ROhUBdlvyo'; + 'hinaHqQkFncwSzukFeuZrFfjlM6i7UNk/LOpMx7ncV4EQbAB4pJ6mpPyiwm3OwDMFSWVlGTzLWl'; b += - 'lcT4uxO1QmYIUEGohdqDjTXhTn15c//QnDfyhJuR9ymb3/bBE2yDjpZv+xKeqV/JOKkRDuKM9IM'; + 'v9mok3Rpo3r8gpTzYXXz1ammcminciiM8iQbhakcKgR6qFPZntf0gO9NpxvVVJadfEqjpxjNK72'; b += - 'XO9BqpKza8s5uci8x++81uwDjpM9hPN8Q7nIOlOId2p4XR0EpTzmuaummIGbUvdusACF1tro7U2'; + 'dQeWmGVNZOQWwU13AOHDthQDOQm20R1hFxQjzvoTQ4TPajxDTohIN8lcNcBfde3w+XWc261YIyz'; b += - 'rtZGay1FtLU2t6o1KkslzL2u8Fq/G3WkXlzy0/atU162DfJOaoOlpX1lWqbZR5vlJD+ol+S5s/x'; + 't6WEwxypvsFE4xRpzCTdhQYEqh2J2YGbL+O5L7dvrBQKp0QYp6TfRncgpGQq8NyTN/N5+4vwd7S'; b += - 'niziO0YlPSbRy72QfQMHj0zQL2pbFq2TRDzQT2pvIJxA4UB9ok+G6ir0NpztpNQ7f0QtsHvTBeX'; + '2iwdbXyE2DnuOQmdMmdolYfEGGhRVh04BmCk7tBQzswy9A11K0tt13QhD/jRXn+IMCccKZVzrmp'; b += - 'rrBzwVsOKtYW3Z7P1pbh6H/ho20kUg3pFQ9+ynmUulETd1Qc/+INyJjtWfszV9B5HwWh6g+jOo+'; + 'fcAJJcQp+4mYMpCUn5ONs6W2+TfAVIBXia5ihfCqm/OGLBsVbkuLKHSXSdPgqpyC32yqY21GvWf'; b += - 'FJI231uvt8Iy6uIuqqf0K5ato095LZpvMPpI9pSldGe8hXqBZpuwgO2P4qQTvLRniJiicFs1WFg'; + 'K8z/g7/omy3NVYKo8WwUa5aoLHA3ZmC4bix6gw7YGL6cgtskH5dHQyuFhNTHji4DFxKQPwVpiyo'; b += - 'eNa5NR2WW/FBnq/7GBFPHnRoTTu/kobpgeb+2kUrz6e9JzDqemy/gP9t+cc9FnpF5bEDuXmTmaJ'; + 'UgOT8a7okuQd/2FImHh/09Z9XzGzCkyH4lpnFAnD0Vs6P47Yu8ZpYVOuuLv8AoWYhbfNR5RglJ2'; b += - 'tyZPQPenNL9H/sncVZrpIyqdwyd6bzz9I+yAiSCRgIzT+fRKfDcQvLRlNsE8SpEMJ7C/slwTxUA'; + 'uo/Sy316BxWzWWpPwzOZwf+hUsSNU8K6aMuStQ2CqJ8GdRmx40R7xeK7bbKm2yfTGSvhjLK27M/'; b += - 'L5DYoKXdRbvvs4RKZFsrPM9pTZd5RngveWJ44nC+VvZ/8XVeB3g3ey2Ua8hwK/8imaq99kgn7Tq'; + 'CeUQOpG9FuZzuavnfO6qty0frdUF2+RiVl7flP0xKgmjotnsF4lOdEo5eSwKmoBwceDeIOVOydw'; b += - 'U6e+JRO32Nix/GBYpyyhvh7/i2HP0g/AJzv/QUgq/MxBMbybP8+lpBr+t7+YoxxhieUAtSd/Uyx'; + 'ch45y3w2oK+8kLpK8TnnOWeg8ng0H2RO4P17qNTy7pFyQyb5C9wgJsWey/xBaXoeZm76YSS1F/k'; b += - 'ee7jGqT7GI95vMTMY8qTWpgFoDO+ZfGlonf4OFV++bcDDOKkXDn4rWCipFz69T9802M08tKyhdC'; + '4Osi9GeXqTlCzMeFOGNQz2hJZ8YjCld11MRj8+6FwXI0OjfmpsTEqiK7MkZMekoLZCvnxwAX0Tu'; b += - 'zf3Y+gtpxP+UYIdCOE4qu0JeEXjRxFL1famq6iwG9uyStx4lkSjjobD82DVXHuITm47HvbWh6Kg'; + 'aCs+FBRwVCZ/iRsW7zCtRQ0lR2LlXmfyh6LFVBsi3WQ4Ru7pWpu+cwZ57sBthNT2Y8CH2JKDynn'; b += - 'NC+ILYrVGyxshL/yXWaCoZBym+02/ME4N8sD8WMkYv98LSEu39s+9gP6jcKUUL+rjjuDnYV0x8g'; + 'hahh/UyWclri3j+prDhAko663WBKovMpVQO4QOrDrsGCSXlV2nSj5MZq5h5iLb11wBvZlJykMlF'; b += - 'LWIbtwQ9Po81p6DTmze2plHj00XUAZmhFmRFze+HfpK0IKFbkojb78X8nBWimrTtlXu/buP9KDD'; + '+zvAaerMPgOj5QD7Qgn1xmB0zeWypkzACi9wrU1Tk16D42KKKAPgMtKMFpJCJ8uw/XnXKxOVHkr'; b += - 'xZq+gmuSN6iC+PPtfRZolic+TWvZ7eXBP33VauDzyZa1vPPx+fZS3niJKpOPZZ8143a7zmqf0eP'; + 'eHxA+QnPZJ6GF5HlmslPgjTSQYPnbxGK5TfgryGlMCCTpbQiAnRCv7A4ClpZjs4CUcR3ICXrLNc'; b += - 'T9IsdnJuoq/rr5k0/o6Jl+brDTziHN3ILmqCU2Xx7fz9DnvuL9blUGcVdn1Mva5Fb+gNqF4ntdk'; + 'j59U/AE+4z7+LT+EZo21HMKhwSBIfL/UJg9LVwQYT+mcXGpTMyJkLgj0pm98hna0RU71I1870bz'; b += - 'tKApwmLkL5+bNU4s3lic9oicsVeitnyouWkIPFyyt/8qreYj6D+H551cXjMPnsn75qDWu8n0m4r'; + 'dFjkmD4b0L87sHVsyPM9Mhksa93LVrkz9mju1gPGYLwPhkYjNckzqPK+VU6+O6SsZKAvuMQN+Y5'; b += - 'uP76pWGAs3zNv2/bIYdPlEIMsW44pZD9o2LCxYStBkNmDrCLMII7AFWAqPkj0FvTFT1eMXNo/e+'; + 'aYaVwwOWLR1xv92CzQ55AzhDvuTv6O0T10oPDE3wfFWjTxo/HCjvwPHO8b090EcrJb7M+INrgbX'; b += - 'VEzk6/YD+JZx11k6OiaA3y0G/KbPHvXhnulUPS7zRaOGwjuxP88sBPt4bi82XBQPPv2mjvReh3z'; + 'fJz+NPrtI1XRu4V1fgzbwNFQscwvB4Ed18m7msImaJWBhkXxHeIHtKTm1sutqTkzVQYCh7rOpiO'; b += - 'uWovjHktm5SdhjX+Ln9TMYuB+a3Kmp7TR65QMQhPLOVVaiUFX2xWyPYMTx4wqaylAluV6J4IlLk'; + '6We0MuRPcp0sCWF5O1lzLvZR0DQzwfKta2ElgXKW9l/DqsrHCEi3N9vCkLd5+lUF4f5uxblkK7m'; b += - 'DimXj8WlBkbPv7SGV2FeIptJN3BBsX7gA14SiQe6Ar9xNuARqZrQohV37Rgv2P/kXJw6/Qfq4Qi'; + '0eryRpgc6DjrW6ZIyuI+Kk5/NVB8uM7V32ymKrhIdgKLu5V9zvhaJDcRGJJwbYnM0q0krRPGRGQ'; b += - 'i0guXEN51pxiRWLugYbznC1cGPxtDgFYLHqrlFpJhxIrvM8wNC2jYFuZHRZyrHTn4hH/eaEB5I7'; + '4EnrsiG152HoSKN68Lvy1TFF5OVF7emhv6O28MN3qfgWQeBatC8V06a4wtVbm111KuG4p4Rsoxa'; b += - 'kJPWKDueNxxIrtdftb7yQaRVyxO4Uj6MbXMkSO6qSbRLtBqxB5Kb3BIk9y+aYfPAJA77czvhn++'; + 'xXCsrAWZorPW/dFMxC7pTcEcxKAnBzwHXgKI+upRJSrRt/ZKQbs6obhYHJqn5s+n5sDvWjcCyfl'; b += - 'BcBu8azwQzvbX4zHTn8QjxwX3A+FmaHM/EE7hwvyBcBJa3A+EGTS4Hwi70N5+IEyhuf1AGENrG4'; + 'r2sVvvm2to3az3ZHN+T11lOuG454Rsqx6xXjutNzNK7ODGJS3PXIt6+hW+7Th6gi2MaHWNV4I0P'; b += - 'P4DrmPIEq+me12cFyiIdzZjwmjk9/B2P2w4kWTckpcaE/vz7uOHgsdTtg2+fRU6BnRb/fpXaFPE'; + '9ziSOsn/D10SwnbT9EFi/lH558T7a6lcCOZ1qNctlgxSWod1gDG2S+G7o6qJvGWJ10xnxr2zFmd'; b += - 'n3K0XtvpoRMnyL6xv3YfIA+9mZKyPTNRL9tP6/Pguo8JfSc6Bv2W7hoYuTNQp8h+uR+O0iIJXKh'; + 's3CO1ON66bLzqGqNuTjjQEx7a+D40AHyhUoJaD2RnDMUIYJiVc7ylxrCgAh2cbN/Pg4ivgD7ZA4'; b += - 'zxJ9vXq72Ffc+WZKyPRtRKd5606m40o67hsxmErKrk7fMU8W9OfpoiNsHaPp0KJ5xzFy580s/47'; + 'pM1uxPQWOOWuZeRTE3Be9R8cof0sQ0LY1Vx4ERECAjQpBKoG9R6f99KoJ5f3+a5E84lZ5VqGlbW'; b += - 'RViE3mB8FgXjX7iJCbjc/Glu6nhed1aMhOh/zoifr0ZCnj3vRU/VoCNkzL3qzH30c9x8Qvk94Kf'; + '0obwi1Jhp/5e92ZjpSOaFmSedZCGXnpC+Q3WAD+eJd4IUXG4102dLyjSKoPhuSWSkgRq5ACa+YW'; b += - 'J6ikSE8jHUxohBQm5mP0FTZPWUYLZIOcFsPUFLL5WQZFvR5iTb/CQ6bIsQxwRoGC/qTS8PDTvsY'; + 'nuxYijvZxfZkF8uHNpI5wMkuViFFrCe7uH6yS/QIl4wIKfyBj0IKe/B3kgae7KyoAJ3Qz1JeJvT'; b += - 'gjDZbjEMlxioaZKTYWaCrWr1K5Qu0LNlJoJNRPqpFInhTop1CmlTgl1SqibQaXVFqTNIOSshmjy'; + 'Zi7MUV6Hb2jdLx76dc2H6Np6lN9wWwCCpcVsQKUXq2oGIhFm0W5vtXJaMrsrUyWp3UdWhNOW9tx'; b += - 'Nsid46BvY0IKQgthxqGGbDPMmwjPiN0Jwoy0nnfOpaZ3QJEFYG4SMhYJhBQyLRlZa9X9+DT0sFf'; + 'lubzLTN2YfMbTV6PMnkRPm7/yIHE8C6mKGZW9QXqyH5ZXfq8Lc8bJPRFTqxGRWuWxuHSxTgmH3P'; b += - '0FBk7IGduDwfizO3gAJy5/g7EiOvtgJu5vg60mevpAJs3c8iCNTMnOKBm7nYH0jzLIQvQvI1DVz'; + 'Y5oETieRR3ySoG3kGUBBCw4i/SzNzrhIxQ7r0/4+Mkz/3fHCx+/FHwDpY+yMih9XAnXSh8lri59'; b += - 'Q0xyHr2ft+Dlmv3qy/4Tx6P8whizckRsvWk/e3cch68X4bh6wH77dzyHrvfoJD1nP3uzhkvXa/m'; + 'XGk56aPUqC5+/FIwRv74peBrF0B+KVgrgXz92Oc6XgL5xeCbJoJEXb6xMki2jDJIadY4IaRE/5W'; b += - '0PWY/d72KFq8CjfiNN5i5YC7FjorMciqQbtWmk78E7evSTq8T4Z7g52AuhuhsbqmTZ4fWYV7c7/'; + 'UQkq9ryKGxERROeQXAwgivxh83SSR5+JrSCJPmHUlkcdaV5FErppRSeSLYGEvmOuVRP7+Cz8UqS'; b += - 'z977B+l1nWWC9/d3v1/dV1JLaqnb1v0+NEu7UHb6DyNpHG3Q1Ua2heOJoFxbSVVqy1ub3XJ9ck2'; + 'Ry1YxKIv9A0r5BkshV802SREqrKIl0bRkniZQ8f9klkVLFsZJI9iMObteWRGqXX48k8oJRSeSqU'; b += - 'lW1rFNSNbnUQBxTFEExtGOxhowCDV4gbBmOCwBtrgBIUYImbEYCA1CNaAGByiYZ2JJnHwnud533'; + 'WYFVKAmipTkNyiKZO3XiCJR6zciimQpVhS5ataIItkJ1yGKXG1VokjMeSuKfBGfOG1UFAkLBkh9'; b += - 'PuuV+3LHtnCDvFluz+zj3n3HPPOffce99zzvM+j2VWAiQytYjt1hg7KvyQYCuUfsI15y8jmVoey'; + 'sCy/ZlHkMTNeFLnS8KJIa8YvFWjVRZGnWnVR5InWiCjyGFxuCoPOptdEkZDnqSjyWGuQ/Usnivx'; b += - 'aqJLT4cqRcGE8f8PdbEGROtJcTgXWpimRwPjgYdleoxb8KWrDWcEIN9AjHsguWTUjWteu4IKoWG'; + 'UTRQJ9fMRUeQls0YUedGsI4qk0O+JxhpR5NHGGlHkkcY6osiVBsdURZGo8ibbJ39hUSRLlCbXRZ'; b += - 'O60Ogxo3d5XLShz9KAg7GRzjqc09uta6bfkaN5ustFdCr7CTXEyHMHDkcjECDlfyWY2NTpY9+qm'; + 'HHTCWKRDfVRJFCO0dFkXYcvChytTUiijxvZAGcN1cRRb5yvaJIKaUuijxv/luKIs8bFUUei4ZEk'; b += - 'Cpq6H7WAcopncYuoOoKWw+ojpBd6xiYoMwn35EAw6/l2bx/oG25+5hqZA0khDGRxraLZuQ7M1DU'; + 'T/mRZHfNVYU+cp6osjLFEX+SE0UKR02XhQJV8/HzBhRpNoWsGtUFLnSUFEkc7uxsqLILwZfiyxS'; b += - '0lrtGsbN1m1fm6cvdg1XaPECDTFV+dnUH3z1pRKgbFlUBd2WBTTPLDCG8P2BQb+FmFlwdsik38K'; + 'SvblOVmkkicwAzVh5BfMN1YYubb8ccJIIVtOGHmsNSSMPG28MPKEGRVGwmdyve+GhZE/Y+rCyHO'; b += - 'MO3AzbFZn7S4dMBm2IrDQL4csCm2EYtqAFWrc1LEN/EbYLBSMvI2BQ5JgXGFN1ubYr2O8yrgDnh'; + 'x5WNOm0oY+bwZEUbKyfgawshnrTDyQlwXRq6O1GSMMFJecIleGPnsWGHkSssLI1fCShqJg8QJU0'; b += - 'mWNsgbaLv13ieyZ+qx+/V+ILE7/Fj98n8cA3bnbxnXdEWpNpE29sgY7Emw/hOyV+1sQbW6DrbJO'; + 'kjgZLFY0ZdGnkk3BOdiK4pjjwTUQZ5OvLiyBMRxZGno69VHImzDcSRl0bFkUdCZd0uvAFx5Ico8'; b += - '7Jb408Rt92+RdEr8T+EnfNjks8XMmvnC2ycw7zEuG8btM/OQj5YzaFO+hq9dAecUSNStolM+z7x'; + 'LgUDN64PPKqr1IgeSlY/OZIJL8YfF1Ekr6Yr00m6Yu5qlDyEmCbr0MqKfkod6l35tdDLvmZq8gB'; b += - '4e5ueEp5KRt4tllruPYw7Lgkl7xRRrJGFtqG2/3bTIGsk9oDa95KKZXJjkrpc81UyeIgaxTp5uJ'; + 'bQuuTzB5XQVdj2Tyugq6qmiSfYoZ+6FKNnlJRXNfCsZJJ3F16qST58O6ePILoZdPfsjKJ387HC+'; b += - 'k9zih1DFNjcZJpTMdSCsxWxuWLICLdWxDCb8Mopa2uHRp5Xqgu1XajTsBMk1PMsBlZhfoHeH7AZ'; + 'g1KJrEsoPOQklFsf1iigPjBFRvhSOkVFebd0hy4W6kPJIWJNSHgmHumKtmNKmjMgpHwuvR1B5aU'; b += - 'xFwgZZr5zizg15kLjN2rsc5cYOw+jXXmAmP3a6wzFxj7To115gJj79ZYZy4w9l2Ijcr8nNgLJuY'; + 'RQuRKqKOZno3UklaCiC+ZwqKLKI6EKbB4L68LKfxtYaSWspiMf/EaLKynEorjyS8FYeeWXgr+0A'; b += - 'wKKEwF0B8T+0FRGS1ATHHCACSys45sRjo60CLghEl1i+KL4XyhtgJYLOAAVY7llxNXHcSWc0fxs'; + 'kupmpVYnojekMQS25/r4KuLLA9LP3AP/DrILGVb/NpkltJeK7RUE8LzsYkUN6GCJVPcBNrBvBNi'; b += - 'W91iFSXEvtVkGsm281YbdGc8eseK/1NK0TxAnw8VhJyBXhb16FjDKpLE14oFH2WXAHCAN3FweaZ'; + 'pJuCu4CV0ITldQCshBbMr2UgaH7drMyvm5X5dXPI/LpVM79u1cyvW978OnHm1++C0rKzu0bXPw9'; b += - 'uPNy7TnR7+3pmAPR/VVERVKPnge9YUYriUxVxwLc92qWFuVKBW417JkVHwqVpL2VIIap0fCBW7i'; + 'YgferJm7okT6e/E01uyb7HFFH3yIlkI1ukI1Wg5e8sRYp4XbYTes1fVKe+U3HVr8EiILsY3qmR6'; b += - 'vFanegmpYGZZrusKZtZtN9VqZviACL11R6KQh6nmta01Z0Em3qt5Zjt+tbWmGojCDmnonzUMTVN'; + 'gIGLYYmARKiKBAU3v76d90mG+x5LRACdjjXhwCSqAh0bvZIsAivAsVfGdfm5hLC9+j37BqBop76'; b += - 'DqSSKVUZvBEM5x8Zea4FMbzyeMYk273FslPXxk5hSE7lRWdmzedCxjCFdv965vDlC8nqE5DDkdW'; + '8ytJesjwEBcMCuESVAHegCPsJq/eDGAvTWFlQTtihQlgVEHYDmq5tYBzK2Dytw68ObWgTW35gDY'; b += - 'wstUdyWa/X2vVtbcOqOVtnNO2TbqBN1BiY0lRN1JuJVTfeQylATtAcptSOvY6pnYzQ3Buh5tHTG'; + '1sXl4/9mGOQjIlBCefo3XJcdU5yDwDoDo2M/Wi//eBymy2p3QPfvQZ+mAEm/q+4peqFFvYOTTFo'; b += - '9IGWKy+Ge1G5rZmNm3vjNwdlAqcaWkF7F3FhdjVUd1LSaOXkDuSU9DYT0fuwWmMCDxTJlOOP4Gc'; + 'fw2+axsB3JjDV7a7dsB42MZREZWrQGzeEtnaEQS3LDlWpWYciILA9wAMTYQQeUCkHAiR1UUoIjY'; b += - 'qTfeEol7IzGwD7JfwmoHL4lvtMJbqMsQi++Wc6fManfKVu1OmdfulO3anbJTu1N2a3fKXu1O2a/'; + 'ba7hTtcnm/rIjvevzEuWA/nScuLpUr8vthWDk4iym4WJTAOrkitX+WT9GdIeE5ciMH4Nh9S6tI0'; b += - 'dKSdqd8rJ2p2yUHfKWLxMnTvlxtqdclPtTjlVu1Nurt0pt9TulFtrd8rp2p1yW+1Oub12p5yp3S'; + 'Qv3sSY3xSK6T2HfKD2Qtrv3onRt8yDorjUP2Yx67yzY87F6GH2QnRTqW/exn2SDhPW9flm+8iCq'; b += - 'ln1Y3yFnWgspIwAvEyT8lD6t8FMH7kmPoTOW6oxJgvjKDk1BNLXrM+ui6VY0wNBORgzxFfYB7xC'; + 'Sc/lLdhT5qagLzXILOUtHgevHH/Oyv+sQRPMHCCaEvoqJ3yYeeV0jnpfvAysL9ktF7WeskVhA8+'; b += - 'tcEnsrvmWcbsgoPNS4QKue2j9jjnZeiEu9Q6haZ0KmQyqoalIJESxo2m6sQ+FlYSizBt1qV2neU'; + 'TfotQpU1XyD1SCr7ak3OFkJ4wJvJz9kdx3zjX7dlvxL1A50vE8M9QnAMXHTCJyKPsVfjEXPn155'; b += - 'Tpi25XVsyDJQlt8PAp+KFTBlU5bFBd72EJICiWjw9gdlfcu0W1WuQ3Nhq1/9PwknigTlwzOUiMH'; + 'DnPjW/gztVYep6prz8a88FKkhWJfJT8JeOl3EVY9XIVwyxNbJPKcSYtYaJvZPQBn21QYjXhbGCX'; b += - 'zAdW76CVEtR8ovUDXnOl8QekJeqNk+IMqgGha8UNLce0PSg/O2fKWxXJmsdy+WG5bLKcXy62L5Z'; + 'mSUl6Rk/gEpPQTbwYP/cOk2HJFM9oMxD0X6QeK6lYe1grlRYVxVXz6CtgasLP/QXmZQuHpnX5Ba'; b += - 'bFcvNiObVYblosNy6WGxbLYrGcXCwnFsv+YtlbLLuLZWexbC+W+WLZWiwzUwdX4iKcN7/Rss6bq'; + 'swTNdwX5rqzNJ+yJgtXXSmeZfAuRfJpEFX89Br4wodB8FxjbBcZ3gXF+Uu9T72naBeaaXaCVXls'; b += - '23LYDg3Kq4na4mt2UdnH/21gI6aqRDYMfeHW0Simo6L7wUNCfmgzUMievEYvSoUT3Jz0vfPj3yG'; + 'TDkU6qUjgD2onZT8dMuLDS+XFzz0HuYJZdqUKN4FdKjp4oCCYOCwK3ZcxjDQjMynxZXgnEeIHs9'; b += - '8zklON+LAi8m9IyLhPxM+HoZS0gssbDF75BV/2IiLpkW7XA1qWnQXhKzxou5xJiX6hjlY7+7jOC'; + 'BYT1MSmZ6Jw9ZyXcLNrHTkhCuP6INFG5Sm/i+yYtF2GT0slZCVbgYTJjLwGJhHD9BKAYqDD9JFJ'; b += - 'v+qBCcZzP6gOWWpqTXGFXxv6YY1dOiC0tY/iqivxBDGdVwEzN+6BLDKo6qxJE/AF2xe7oA7KimH'; + 'RiC++2sLJrKrMkyAsCegyxp6rHtSrhUXnjlWXr4yBTDROgunJOU2YF9ZefguBx5sg8+FtamJHAW'; b += - 'BnSx0ppWdCx6jhuuYB7ZrrQaNvyANn4hqdUxBADF5l7Zw7KTlwWj0xFfbEzCBMkaTikwk53ZMD4'; + 'Zw4MxaobEAyGRZhRdsWU515xPnPQArqnM+WFV72rHgLk52ZvLyay6qVX69lhPMPmoRnhmKqEZfN'; b += - 'Xf3UfQZAj5YHeuNaU8yScWvxHXpqNj5NlIuC74/diz/LybDbE+83IZVIZGZtuRCu25JRTDts+1h'; + 'AuToaXR7942eD8nv/mA50lIE35alX6t+EoLCKwNL4YxcKldL1r/VtA3yKcP0ONGV8QDjs0br9Lf'; b += - 'eLDfxjt5/sEhBcFi/rln5ggX4gUkxHqZs9lmeEZyvLVITnewn9OFRSjSCbY2R+oc6XyDtbt7ucK'; + 'lJ1RlQBRVveUxlHnlT8O9bUWs5PBQ+YnWVInexBKl2o/xIyJmGJfCRMIM7ogbseX43cu4u5WQZ3'; b += - '6XzTTrNPOOZHdIY6ET32iZlBOqic+UTsSvtFZz9izqutnkFa9gIg/a5x4oV2faNqiPpOfeCMqZl'; + '1W2eDNQhqX1WdzImuCg752Dm6c5TBohzPXbUThgRFV5lMk4h+K3RLN/M0o4aYL7TlKgBsLYUvlh'; b += - 'ThZVcFtvJKXL3q6KfZg13tmx/AeHg20QBGCAPmdsOrM1K25sg87vj6f6EVTQqQ8EKoj38po/9+C'; + 'ggwJMiS1DMoBRzdGs8fV7U30lijvp2XUj4EJqaxNhhOkUU+VsOuMLcsww1uBWKGSmjg98edhx2h'; b += - 'Zkav19COZ4Ihnq7zahnqMBgZmhqd3RMQtO7o4ckNLs7OiGhcne0FEpw5+7olAbn0I0S3LU7eox0'; + 'clHPU550uZCWH/T2yGe9SLwO7iTodVCaGNEd6F1BYFvLO8X5QNqQqFqrzvD2v595qkd4a2RM3zh'; b += - 'V7o2GKkQ4O0SyrEmGKkQ4D4JFbuFb4vXfqeEprEGGKl38LskVGLtL1IhwPskNIc1v0iFAN8H+YN'; + 'UNBUayEf3/n723gbLjqM5F+/f8zDlnpkcaSSPNSOrTHvDIlvAAsiTGjq2e2LKFTezk+bGcPO5av'; b += - 'wRFmPs+Z3UrBg5n3OnV8ygNZYvlDx9L3iTFTdin3Queh8OOBb7+nQWELmdzkccFw/FQ5akD2wmo'; + 'nmsFXLGi8VIiiB5kjVYMgxGgMAOCGODwCZSwIbhYhNBDIyMkoggsEhMEMGEAUyu4DpEAZMoxEFv'; b += - 'smnHOvpQNtcC6Ah2bOemTYXVh5eKibYPBtXKDUrmjHixbn0QXoniNgJlfdhSOcMRqL+2jZXhjGR'; + 'f9+u6tPnzEgeYxvIvWiWTlVXV1dXV1dV19619/dJAr6BnNWqxh9NHuQLHnW1ecqngt0ypKxBjJN'; b += - 'xmEUvrCEVl7XqjC4yappPZNiFxlcHQIv6sqOs7dwbLD2NZRY97lVXhsAE1d85PBXfMj5Ua3A/DR'; + 'okLMZLqGj+Nmvk2K/Aa98NqfI2fJ81ycFKi+Ilz3t2Ev4eNev9delBSy4ZG2pjwagLFeXfq424Y'; b += - 'E6zaOTAQfPQc3grhcbKK7DhWbjBz7uOLpvV9LhnyHV+au/Ukbma2OzqLX3MfnyCMZXd0JrQ4NEs'; + 'nD0HlJ06Yr1ngX6wp7HVeA6xpsawhyjmnmm9JuONTB91Ae+Ar52BKoxUEA7NnC5RXpCOF9n61zv'; b += - 'kCxeDwvTmHuuFgLRJOZhA/HZ5dqggcr+EE+wwvF/COizNG6e3h8PShKb2cDCa0OweDkET2rlHxl'; + 'VF5if8aLfFGvDOAjZA78lXq+O4MODpJBrH9PqY9jRFPx8HKRnqOpuk0mh75yynOmU56njqmsk7q'; b += - '3kBttcNG86JDy+IJ5QPbwketU2Ygk3DviWu50EmKazxu5X6t8vY/017ldm+39B+z4b7/vE9Dpik'; + 'w+pwvUqQijXeIHZfHe4c6p5eHLuYZ3sV8Myjo3h6Uh48utno8rzoX30ZIBN/MeWka1XGmUL8Trl'; b += - '6PmNr6Z3m6N9bZQbcoX9QKA/1DjPmqq1v3JVpSdLPBA7wfIt+TXK8GXmnrdLfF2KVvEh2d0eMkE'; + 'n9KRLDNBIOR/4KVqjqN/SodGFStKFpIgiL4wexgbyMeoxHHpZgwqP7SmnRNjmwaAe+GqQVPmhrx'; b += - '3swsj2CjS7Kk41lSQUyFtlApUXxswGtDByZm5zZE4hcXaXFeeup202bxZ98J/J3Gn70MTuHP7Qw'; + '/ZK2MNr0CoR2dOe6ozc/l9Zlf/8vw+18+hmOSE+RlTCojc0bifP5psOZpuOQJ9AiWSaKzymcBdv'; b += - 'W+DPPYA9/dp2QfTXzZ+6E7L4lWFLizpz5U54Y2lU+AnG4hEeEzwlB8Ay5UTgsROye3e32u2JUqP'; + 'MNwO3rsqrvhT6AIz2QCIashWFHTXUD+wkFZGUGwdQ7hxSVyHqAKQImKfZWkk4yocvAEWA1w0K0M'; b += - 'COpuvNtBjVmvCOinrhKkblet5RXq+kxahixzsKHh5urPW5XWjKhTa70BYX2upC0y60Tde9sE+24'; + 'IQlMF+rz5eBxOejBwQIFHkywI1xfRGCgRtKLg8XQX99QX0JoOWWBkPG/k2STsd/GU0DYoxk8A+2'; b += - 'dwCuTnM5HrbuYXFYXxHQDHUsjiHVaJpxBlrhFKp5STjtiLO2GkUUi0nGLcFcdkdAWVWyz7jNiOu'; + '5cqQnbSf+8zS15jdgnxDKJbAPxt3x/HhBvAju9zlP/sTtW0MqE6lpOj5+z2Qx7uUKtG+NZT9Jbx'; b += - 'dUdAyBmWqEzcFOJyaEUhrsu4TYhr3xEksv/FuI2IgyoQ56nTx+8IdjBUmNCtDOUmdAv3YJA6wxB'; + '6f3LeNu9xZsjxx+ubxY9+8Ke7JJ0Oz+KmP3fXekGYdWbK0XPrVyQ/8JIyjfDJ2rf7iI5+/uRh35'; b += - 'StzOE1G3cKUfqVoaQukW8NUxoMxfXkbqJIaRuZAipGwgUQOokQ0idYAipfbgBM7XLEFI7DCG1DY'; + 'pPlDaR/O/nJzxQJGZElQxnzT8e//o4/0k19myxvMn3XA3dOh1Q8ZclQ7N32+Z3XESciS5UOkX7u'; b += - 'diprYYQmrGEFJTQhqQKtwTSI2E1cmEKElWW95lulgmi2W8WAV3dX82DyfoPdjy1RAxA/pTwpAoQ'; + '01/7KJVQNtlTvsDK94u6ooypVc7hUKAPlVT3uQMTZkmVakp0TKk1hifqaFocowd7+Zq+RNZrRYM'; b += - 'pmprGDqEb5xXwWJHZkjDJ2Cm0iCUamXkxw4v3gpXH6QpbWGFGCtmnYZh7dFL2d76M7wRTl8RQ9f'; + 'o4nJlRg77GnFxsKDEDntRejKkYHeUC7wkNBIgOL4gBbtEVjnzOf8s54KznAvPcq5wlnPFs5wrAd'; b += - 'lsNX9fAVOXxND1+Vw1MtOXwtoojGYy238HrFvEIuAZEUOdWQSKV+Y32N5xLqyVJrpFK/DE3Jkmq'; + 'AZRj7QO7FpylcpDXxRhmsBa00wN4oYXhrFskol7KSIVXixTdDGB0WEeOm68hi5zEaEb8l8ucFHw'; b += - 'kUr8MUeqXoVLWPiOV+mVoTlZMI5X6jdU5bV5Ct+/m5oI4p+2V0L7d3EAQ57T9Enrnbm4SiHPa3R'; + 'XLpGIjP36SLTF9BffAa6BUvbe8voXBLiOi6a+VmXg3RfvrDFi7dxUe3Qw2hOtT0DosJhS7XrkBV'; b += - 'J6125uBIhz2mEJ3bebi/3inPYeCb0PloW3vOqY6eSzJ3+vqVChCGsC0prr8SUKLIQidyHUbQ+pE'; + 'kyKyuIpk7mo5sEjJhGQVy11mNUZp+FI61M0HirsSwx3/KhJ1EwI/eoeHLRAo8rF4d3HSy90OxnL'; b += - 'mvumI4k7gKHgaWWuRDbvFcoKx96co2BEj9Z/pUzieQFb3aMocdAU8XP6lYyIufy7HKKxVZP9u9S'; + 'sVPb6wuhGQ3Qq4jngigzoIjkvQcewxjNbCvLBLTLDOzxsKUTS9YIraqEtGppWmuLNWl28PZp2Af'; b += - 'Ksqa3Opqy1LVcNKnk8PCZ1Fr3q2hjbvE5rtrdP3Shd3Qld5p0NRx1qQjGGO8Q+rGhygQatUE7QD'; + '7A3lylPVso6s162Eo4aUAwANYF1QhMBkgI8qgz8sQkhoVaZOonMqNFUmmpwDHEn5QfrhzSz/9QD'; b += - 'E0HwiaYzyJ5PGKH8qaYzyp5PGKH8maYzy5xJvlNtnuOPkHendo3cigC+RbfRDKsc84bQgRSi0q0'; + 's9Jp35k+dIdaS2ne42jahwc9KxR0nptaNoKGRrxkvJn/4OvTCJDTSCN9c0RHyiZlmsQb5pgP5Zx'; b += - 'e4N0U9XFow1L+Sh+FJQoDE23h91alxliU6eR2Z2BBGcZJmrbzd6fb6E5PFBmFIeVsQitTfrlEl+'; + 'rDiG0S1nCAlRUJiki5Xl6xS5yWCIY3H/2ONhF2LCXhPGJhw04ZAJ1zH0G+YfQJJgie81EYEk4eJ'; b += - 'mwHoj0RuByf++Hnue8fVb9BNEDEKSeeKSv5Rz1yM0UvTqe9DcK3ksvMet0Cl12Bg5uXV7yV8i6+'; + 'RQDgU2ctBCmZv52v+EnnCMFqLVFYZPBCulZwrFT8nuBxSwkbVbLlbgE/h1xQGIjUKeZMZfMivZ6'; b += - 'iQpO2gK/LQ7+0foFnnIFfu5NFDghBSYWV7FOgS8/aQv8zTdRYN8WSC26ZoGhFHjJFfj5N1Fgryt'; + 't4lUzUjg2GiGesLXXlHTeZuqwJgWXqIvAiOcDItSzj5NStD6lYFL1Gik6Pv/khJ32xApPu3i3x+'; b += - 'lWEG6H3qegAxX2qqWVp/RvckZT685o3OTM86uOaN9kzNOrTkjv8kZr/zQ+Bmtm5zxxTVnZDc549'; + '+WHL51WcmDrpc3cWeU74vAc9BUoZZ9nFN6W7KiU0RHBarNEIiElHgJifMt3tMlFBL2wceXMZ1Cm'; b += - 'KaM9KbnPHCmjOSm5xxYc0Z8c16d80Z0U3OWFpzBgAddhxbl5niJ9iD83jtnGqF+UkspN4Wl2W0c'; + 'zoxBCSCHHaQOMuxEAM0qz+RwIiMSsJfaP9vK4uWSUEg5cWAPXCZlkm8IcXxyBlkuIMW+zDMB7cm'; b += - 'mKP+bQJlTWJykXQby56YJjUEdHJatXYbUfApHOPiAyMoOsj27FV/G6u2J1Y4CyCjodhvVSD3aTQ'; + 'lKA/QRC6FUs14LkE5gE65GQfQSddyAFUsBxDppVgJpUfqYPhqqpDd1meAHaxLOqQZj4eeUuFVLu'; b += - 'mJWC6fQio/Ui4/FILKLCq4u8mwIXpdfFwjATxrmxy2FlyORXKE6mCgxzmFKywuJTZCpPJHSFJcC'; + 'mMLB2Scv28Wiml5M1901cYOQgchkGF0FTK0G1sZl7vqe47VPkUTfZIUCeSJNXuUOhdptaxijDCt'; b += - 'Arp+YxVX/vbamjdZQYwzzba/4VFrTQWTHj4zWi4zHI5ut0ZXCNlqTCKnL+PWazUmsoISZ3hefAM'; + '+2l7/gXmTN+VzE65Moh4mWkt2lqGH1RNfcMgZkkgj3wW4DhUS/ltEge1UIBFSjQdrjXEK7EYww7'; b += - '9hUhM62GFSixnUKga1fEGtW1ALFnhKBZ5EgadN4IkSeGoEngyBpz/gCQ94igPmQ0+WmrJ9pCuUf'; + '1D5jaLASCQqp8VCibNUdqXSuqiSqUhipbknKJNduJs3bsimNtkY/xmDOEgtbKDDaY1mLFNNfu4J'; b += - 'pjlYzyRI93ch0MQtEsFNFdlx03zGNq/QI6M6jsWuuwjPVXByrH6Q+OegfeBW1iqOJXF4pfmd2ck'; + 'jG8XG5U1pCddgVsqnd2xiIj+LnqFyoTaJrz7KxpPflJW5U8R2OWZJleWl3/4vhzJCElLV3ZNLIJ'; b += - 'ty9102EbGa0XGY9HNm+f8rPAu20Yye3jUt7cG9xBUd3r/jqeQkABc/NQ7YS5QPISYzVYSQ+uzsO'; + 'vb/bkEEqEdtgkf9L3ajuCmNAAeaXrzkUK9mMZEEyupvnM0IXlL4uk3JiEQNBCpavUwff2Rd377j'; b += - 'cFF0vbnGYQRp5br+0K7gOFQnBBheHy6SRVYjjVpsZ7xLX8rEyY2ZFmbFfZiy92ChTuXKM+YPVZB'; + '7iukHa+Ly7ct13EY0IpdQJUKenan/ibScOyP+kYi/3N5F9ZvgVz4dZNEKbjTmbRk7JqxI4nzSfH'; b += - 'y17ebtMHJOvsla31/Zg3PRTfdey4mtidzXYQJgAbJt1KqTRXL5vb67JI+uWHI/7+rYu3CJkfPmH'; + 'NoHgu6RMGoUm9wdrhQq5CsIptw3vG0FFOrbjnriXXM2SUATQW/9AFtb3JZ3bky5SwnftjKv3xZ1'; b += - 'fMXtmJP4mjsorT42Iu6wChjqjq3Xyca7G3S2ijdm45gd8sl5BBog8jf+WcUt4u5s/8pzcSeA6pg'; + '60U0Skce+CTWe2JZE8rs9rt0XRybrdkXu7FIYS8n8Uybvyh7R3FSudHduS7pJDCn9MdpP9pVRyO'; b += - 'LLNEyR55JIgCHwNho5ZivR72rmNL6ipRdl9brgXcQeQjMmyUXCOQE+yutKlWILVAWcKcgdL1WE7'; + '2eXKal4VYjWOpuI6zUtqQTwJU4H0/EXdsIEzaqzTrWwBReSVx8Md7tuy63dlbKMFi+FS9mCw4He'; b += - 'mpjgaba6dr4nPFZpQwwXMMxJIcWcoahHbHFeykXezl+ojVD3Dn1bd1rxk+1IBKMhGdCCDGxGpqX'; + 'bjpPgv+mJ0YsCeOt52I7YlH2k702xPH2k702hNH20702BNH2k5E9sThthNVe2Kq7UTJnniw7URg'; b += - 'oqG/bCqCKZI4sTCGQ6Z2MBG6GTbVBcxFDH1rz5lF5uhZN4iAt5hsNB31LGTA971RB6KdxCmTQT3'; + 'TxxsO4HdIZ4wwGsQO7fcZ6HXtlvU0ecg3N9IPUi76KLe5sq+FW5kBV3zcdO5dvqg/FSlQ7WJlNc'; b += - '+HEhijow6sfDCuOaqoAGFUf9nSwITpZphAJMJ/V7+Q3FVoBHW4u4ZRUZQIw2HYsEMFqMgyT6o/o'; + 'zYd+bDjltnI/U47VN4pwxH1XVnqfaO9034G4nFX5N3R/2t446hqWGGkNlauGWrlK1YEZFTAQmWS'; b += - 'EAktgLK7yBMiewJVArpUCYgI1j3EZ79FhYAO+agFHelkAlKVCYhEJqCjMgExPXW68HkoO+BOKv7'; + 'IhVqHyhkNbYqsZq3E+TjrzomkXJKMuWfSPwUINsunmuBPC7eZNcVWlUolVVBCVWIfKnhIrq7gps'; b += - '3yM1L2urveGQijsIAfYTtmvbbgt6IjKfQvYe4haNNawgnpLVwwv67+wlcduH0BcYHyWU+46n0We'; + 'ZJKmBIrqlApsYLKkZuBqkzRUWIBpcXNwKamgLh5E0G9SM8tre5cyZWun304BxtUOmXH+KCAwNRv'; b += - 'bkFRKQ6eI0FH2kNJ3c25AG/ZBXHVDWOedHvs3lZWkFTYaIa/jGbKQPc4SOi45MmHoneJmjy1tVz'; + 'Epj6xqrXEpj6xqS3OcuWzLH60IwXLKnBcadJj8rdjGNOkx+VCUecJkEqE+TLnlt2Ac8+v+zyzLJ'; b += - 'E9IUn1D82g+08A0QRNb3SoxySgCzrSxCX8F4ahbRSb89YCGUwUX0HzGRODqpOQCZ0Q1vwipFXy5'; + 'ryK5YOto/z6RWo1Q648RJLkS8GSoJrleK3FdoOwFtTkUBStqu8KHRLrYvG5Qfrwt+K+0nlLGxNP'; b += - 'AiTnaEpcYoiYZhvDMuiymt1GNVmFLvs4jIPU1rW7Tl0lW5omQRi1vBolXk1jrwUR+b/K1lil56v'; + 'MEdEQFuhW03zxsAK1w5gnoiqoATJtxAgSTJKVsv7lcgf3P9hPEP2/LC8bB7rg8sxAoujppSd62V'; b += - 'fg3+dVHsSZCKdQzPw9L5x5cHaRt+wTq0k0fGVJDqqJGHu5CDGsNhwBKv1AFwXd8lHCHayaDZk1a'; + 'MInfRYyyf/2nIbRs3fLwtMv6ll44Mqz9wDln70o96kvDZ95RYNfiiJKcy8ifPZezs9Q8WfhWQvP'; b += - 'VrzweUbYjFpScWCh5/9MRN2Y3IjYvQHxdBiUcStRz08QgXWGPvTzp1iOqKXumf52HXikLI7rlAG'; + 'vIjuuRfR8eyP/+CXYnh0/VJ03M6nX0Tp2X8jnb+QjvwsvMSnCqvP6Rz4LM7zz+Jn9lnoH8/gjXT'; b += - 'YgL6Xjs2wrx6Fiq7Et0zmKEgyy0ZMGD2QWm4L54a1m4FVjW82iwJXf9V0rC20wAx3VFehYK2CTR'; + '+7JdWfyGX/hw6eO256+DP4GMQ/EK+mT9DxcNfqrHxHH6Wn4V+4j6n68Vn8dJfbO97Fkfkf5kW/x'; b += - 'bvyV3PJe5boPj7m8pKCUrkfrnYDiUppGpDqP1yMBd99DR8wtcA3HKt5jPnkLoxRZ2IpVgCBkCPi'; + 'k6aOWXopk6/6u08P9Jlwa/kOmu2G6FoqfIkNQWztARjRcUTsSYUjwSZKYUwF1xQUuv0BcFbqCS9'; b += - 'ajlcjx0bOUh0jeTLGRS7AHClq/WqIYoagDllAwjui61RRHZt5sdrZmtL2U6QjNSX3eNI1Tbo18I'; + 'iYmCASs1DNLC2MFfz5psBVMvwRFEsxvYfSrvDBu9CU1Jd8Bfy5aZkhYruERQmi/XfoDRW/hFiZc'; b += - '5+NBSGqQuxcK3dzt3sZ2JrmHO7N7bGOY6ei62BjqPV2BnpOHwhdoY69+1jZ6xzRzp2BjsOL8XOa'; + 'hCrKJp250ND5Q67pMJjxSZh2XEOvsGrL9bNdpo+h28TluEA7hw7dK654xkIcTnMGiKEQd2AHphB'; b += - 'Mfh5dgZ7jh8KXbGOw6/KIdl4DpM1r3o2N/ybk6kt94yIUW28xymR1obiDiX39yzYaO9T4aNBi/L'; + 'X+GjmfmWDUl+CVx5cHZx0+R+k43B42swWDq6Uqdl56eY+GFQorTd28mGIevTdH/9H5wpZRxav2m'; b += - 'oW3xU2GjxefDRoufDhstvhA2WvxM2Gjxs2Gjxc+FXouFGc0+X/aOK2u++dAvt8LspPk2Az3ybfI'; + 'QPf2Oshu3JjhvjcqMeKm8eXR9aipUSr2TZm/sq0WFX1Y7G6JX2jyNOXOq7NlivD2moIgqwdIYxh'; b += - 'qJwAeW4fD1gw+o2VrpDNn7Ke9TT/aXXJNhlWyUHNMku2heLeQZhT/k2hXxWoUODrR2DJwms9A6H'; + 'z5kSdkB4wLJDeNS7rHMQzmXOeafjYzHXt9L/FLq6NNg0ygheJAhq69ZY/4wcw5cQxI2Rakp6qb9'; b += - 'OJthEBx9wydHyboc/EGfpMnKHPxJlZxsE25i9tn0vUK43Z6ILtcYlm4KBs4XsUWr3BvNKpSYcN+'; + 'O323N2/gZU2pItpXzhxoMwyrQKWhnsSDdT7cgAKRxPpsILR0CZBExpA6SVIifbnVur75elXZTFx'; b += - 'aOUsxKPUFUYLMyZ9yS6cJkv9DEJoRzskWGGzzASSryOqvjOGdCEhPgSR3ynu4ITYyFgwldmQkyX'; + 'Fp/FQYieCwXoXgoF6hCCud5PWtT6PFK/1+Uru2qPkrguU33ShkuksUtoZT83EqFqmCjivW6YKOK'; b += - 'YQcVLuLktoISmNY4EItrIKxqADwaW2zQVo1IsKKBFxROKrmxyfSLVcFZO2R5YumEjUaJdxjeOwB'; + '9cpgo4r12GCjivXfZW+Ot0V9cDT0DTzmmzNPNiaNDjRdCexwuhOY8XQGse90BjHs+HtjyeB0153'; b += - 'AOCsDBwOBRwwCMsKeBJuWKJCF212NRFzRXou1MNbWIWXYQy0xZZ2nY5fpCqItwzuC0q9DUHdaZD'; + 'A0teRxBQx53ya8fd27eBEeU0Ri+MmPp8q2Vjxhjy5eq4WDqRBdzrnhp83f21Kc+N5ffZ3r9L8/v'; b += - '/xtuvM98XvOvPBVwYiuUIkXRVpV8VruqolldCWZGNdlcFUXKerrHZUsG7vBNI70nWcd+YCNoOHP'; + 'z+dJsvd1UXbP1TxzUfN39tSnPjeX32d6/S/P78/nSc4273mzzXsztmp+Ne89J/PejzyvugPknDT'; b += - '8aVqQHcSAX14crWIQdDkbZeV7qhbfpG6Gknu97lpP5yxe5fZ+YJJX5lkNRDEKwgOkwTId7n6USo'; + 'WTz0lWIVxRQnkzvWCsWsoZhYEhCGBPUNYlzXT+K4923kNTRnc+7bHHi0akhr3+dVOobPFlMGFKU'; b += - '+KfTGkKWu/pcPoODsg7iKRnEpOskgxd+sFcOsmcz3wbzXoUXB8z2BEydAZC4lCIS2/wKzSA82SO'; + 'OBpgywLqrlTBlo7tViylBUAiK3xZShZEwZ5I7efSOoQ63FiqHYasXgwXDBu0+qxKxqtECbi044+'; b += - 'xv3GU1OZ2rOZ2LLY6bPhY7HyY6IuLzvzG4kNXkKlHSPTKzXr1gqfsXQK2UmCk303PQneJRC+R1J'; + 'MKyoTYSTezarrYREn+DSc8eI1d64o2qQ5eXRlvuk9xqo7AtkQcJFUKrBruETtoleKPaRmMKRKd2'; b += - 'dI1rmE0OKUqbyr2FjzwXu32F0IDhMhr5FjoCo9nTuC3zDA+FGdgXwoPu0zA5OWo/eVgKsnw47z7'; + 'Cf8D9kFKrupoEGhQ0qCqQaRBjwa9GvRrEGswoMGgBis1GNJgtQbrNLhYg/UaXKbBlRpcrcG1Gly'; b += - '0KF88xrkJeLvEtjjQ9zI11jFKraBJcQutqE4nl4JWaIJH4hdi++2H8lxv4rMfZfiUlzSYedmcor'; + 'nwfUavEKDGwwXrAaGGfZGDV6jwRYNXqfBNg3GXQ13mXDChLvRfsvH4HILRqYyGCBh5FoP6EkacH'; b += - '0SuN2biKQ4CEsDC3yuQe7RoQYQD8p09mIE8mHPDWPpnGfBEjNuHzSJ8hhCAzJ9ewT2bSeIkFCtc'; + 'JAUFA7sw1JsS8z5wmwA1ugnWScSy5pcqktuYqyCvA/95vJxE0EBjYdVF3CTrq0ZpJ1dDcTy/Lnp'; b += - 'ETORgX14syZonM268xAjVsW8sSw9Xpncq3bO9XrMkXqNMD01ykSe2z9yah6b7cQBNpx8R9/VcPM'; + 'eFWeefRWOUWeIGqtaXXZm1Jgwu/03d8z65G6caSPv69Q+alduor/gYTnAyID26B3NQuqX/J3u8f'; b += - '42iRd7WxzPpsSZvSP+Z5vFp70rbmhbxLW9J95oW8XDvS9OadPi6D4hvmnbxN99UlzUtovbeyGea'; + 'Mk5EpdSNvqzkYAONEUwNYBxU8MV+CQ6eOMQ+4aWPfPeQurMQyCu6AwaOdJ6FceLjjlqHDxgXGg/'; b += - 'jPi/b5BHNZmxQl+o/itAX8QWs/uE8Nbm2CNHeLovRF6K4Is2djAduxwgIxbxO97QzlbblSv8wYm'; + 'IF7j+sez6x9n9jPeXZucstIYmNl5L0erHy+JcLc7T4o7OWpwWNqMI2mT6W2Q2p/usY966T45KOO'; b += - '5BaXc1bcwAtQ5KvfegNLMutyzohH+GS53XqyTzYwKDMu53Z1Di+3WV/4iQZ2ZXsNHBE/8X45bT3'; + 'v0GGy+7GkP2+LREgOzPXRNGdPaaoNaIvs/mUqxKh6JKNVbx17tNAkrjZdiaVS9FJXo0VOnnaDyP'; b += - 'W+g3My7YabCIu471yq/V56zWwMjUYZSv91oA56ZZbrOOcD4IpyxrDssU5knfKzdb7zsfI7Cxr6M'; + 'c/129jA4Af5crKqlbbHpesJ3yX/t1+H3xH3DZIov78zRq9ok1Mi25PC9rhwfc2vVIsVsF3Jd1BE'; b += - 'vmc8Agwbu4XU5ZF762l3murBEzU/RAn6OOzibrB5gT5ZN7p+wqpxoQHAujubWG0fjO5iGALGOu5'; + 'D9gXayx2DfqpH5dhoF6G53Q5rtC6DPb3HZBaXrIBfbUj5gEAUGi9P0qyUpj0AQYkHeL0GX0lWCI'; b += - 'oK5aTqaC9ym6WYucJumk7nAbZou5iG8wspN5yRGfMbb55yT+JyHqslqr3GB3ojbuIfPScS/zIJ4'; + '9w9uRvjBWulo3feEwJB8Yx6otvOb2Te50qAJmeEk8JJJUeOhq+lxuoiE8YJQUZ4L8J546ST7yAU'; b += - 'PLd1sL2EJ7fxYaSoq+mMR8RFL3tEvPPkt9TfWf2d1t8p/S30t6e/uf4m+mteFo8MW0RZ8TYILOt'; + 'vHiqPHsiMv9hURwEufyBKlQS9yYTHnN/29uipmYqwcgfVWc8S1t7pj2DULrucHYcFp7Zem40z+3'; b += - 'No7JOECR1AgSk8rqI5T0RywsiljdDLK+EWN4FsbwEYnn6Y3nsY3neY3nQ8UgPbtU3nIyLTWXrXJ'; + 'ZTpl7+2hkbdsK5W+FKPfbzZHUrN7sC3MbOw3T9bYWFuEDcLe+IrtrD7H5lq7cvsAjOvOH6WK/xZ'; b += - 'k8uDI09c7gJZrBhTSDf2kG59MMnqkZKCwy8FtkIL/Iyln8uQV/bn2kbDkKKHDS2LF5QprvwF/aE'; + 'r5g6yxXerFfsO8sV7qxXPPnIGa+ww6byVrxJS30IyRx99YXo4rLiuMiFL4B/CJDCL6VDu4HHIQu'; b += - 'Q4apl3igGPaOQ5Wpt1UE0xJhzlImnadA6xpJzo4m3ZnudEds2Pdg6APBiwERer3yDaershGB7lh'; + 'vD1dmk69XgypMiVWNENMGf1R978K0PzO/l4Oehmo9IICnH7iHHI2pT4/sQO1aifsXVJqFOyw89b'; b += - '/raHSN132lvtsd7qjPVWd6y3emO91R/rrYmx3poc661irLc23LC35J0+yJWdNZWnNH8Hn80N7+A'; + 'TwfbwmMLdp3iErFH4LIKHMFUtb8tGEnsmYcAoNxUuwZcembJhSxVhIOESBxLqrpSZxVvn+rPLyy'; b += - 'TWbyDz+HkO/j0Tcjrsy/v2568oJXjoyOfgLZ8M1rmI9Ndzc13MgWA81puzAQyyxs75peHuaNvez'; + 'tJH9z3kpPX0wN0Pqd9AevBuJjxqE/ROAxLIUjRA3YK6WzGqH6hPMLL+zXPDHWmUlqLvyhx8ldxf'; b += - '34yGGYhS6m9RHTbmVOy0+Z+PB7DvyNJJlXXX7gdvNue30Sk0/Tn+FHBphV5vaE66a4YYfcVh0v7'; + '43UpsKQxP+3RiGfPBZ58ns2BrL9G5Ts5Pr4tppt5ozGavnYsBWggPtdX9cXOaOy+jNNqRGQ5e2E'; b += - 'ruNDWDuf9k7DOIwM234rQ8aO/cAEM5d86Y8ajrA5i7N/Qq/x/yxVfgusIe1D0QHzJTAzHerz3+w'; + 'o6Vf1MZ74NrWRBqPRpeqw4EUnAzr/Y3DD0588zm5dOTEBuSKFjo4hV7NqIkf8NT865I6U9W3wsj'; b += - 'evGDJshpoZzeFRjs28OrMO07e+Ir5hccqi/huL0nvoTf9I7g3+dY5q4imiGDjMLLMDXyA3tPH1g'; + '5iosirGOVpRWcA9skHlGvQBK8z6jDyWMaBmYdiqOpI0A1cBzwGcAns/eR5+WixD0QIBXvQ4sgAq'; b += - 'yjcllMzo/0Dp9TtOrj0CdOT9MUrPQRJ7yI7uDaAwno0DVWJn040Mz/JW1U9AjJlANPpuDXOIvsI'; + 'nE/eh3YBP8ZMEEoZEklLlQ+6+mUBtQv4vLGdNIuKEZAAd26RwIPa79C+sU/eYhDq8DvmrKFO4qh'; b += - 'X+BILR28MzqKT5ML3A+cnuaDWnK9UZgDEuGjN2QKRAffbH3urZSbc6VoEqQtjV0iq4e6ZMHzSBX'; + 'ddRppHexhxRgpZjFH3MaI76itwZYuxXSyf0PcTFXSN/rYhVYkBi8eG9Qh4+hBpdCxsauwF7TtLm'; b += - '/1GAMlfZgeNB/8WwPAmx6vN2PqCCIIx78DzuLQUHZoZpsX/CugkSqKpbMy4MySlTarVZiGtMi1a'; + 'DlzFisSk60KIfkTu+39zxTDUxt999ptszRkCZCqNRA8vRAtdva6hzBPQllq8F2hKG0U88ziQexc'; b += - 'YnZeZNzZ3DqlkBD1TL4nXs1N8n8bXsQeTPqdLAVZ59iMOTSqRc8F+Iz8WLReS4n6u8jcPWlrxG1'; + 'hONiDmk2g6ILYaekn0nSwuT16BaZ8PJWI0ie2NY1hVRu+DMfWkJwMwOoF14bFag+s/g0QW0VDQQ'; b += - '16Rou4YaMCLX7Trvuu3G39bgsT9dMwTUHbw+fZIdrIUtvppB4vC7s6v/cUo1J/wmMxH9QPfMXlu'; + 'g6S4Mk3p8bJdW0O4VDiRZ/Cqq6Ywlnosx5u3Wc8vuXZYOEPD5U6AyAETO9vhUw6kT/ubaSn8scy'; b += - 'btrbcQ7XvR1CS1ZC+rcBpF/a5xo+lrWbjtpJI7RDuDap7Ii3nB/c17nCQPlNbIz4TgjVjtOdEdP'; + 'wZxsHjvg/jb4EaVsOHOS0BcpxS03d6zqHWEd/Ccfar3jR/LHixrppz/UesdPfCh3x+VnuiPuN91'; b += - 'Xac29FMemRtUqhJD6uCwhx7hUncC8dUIRF3gNC7IiuDRUK9cHTjC0c3vnD0Zi6cycJxo7lYgBzE'; + 'pZvYZ7+M7ufcxfYb38dHm+7gL72MflivR9/A+psj8a9o/ex/m/TzV+/jzp/U+7n+gtXUefKD1fR'; b += - 'qIRcXXwcE4eMJxdIXYVUqjCeFGrSm2o7dpYbVTgTNqogVw9sOcGaDhhPetMdEFm6+S/BHSUjN4D'; + 'x9oLV1Dj/wTN/HT/6s9Y43H2x9H28/2HrHWw8+vffxbl83LYYMkL9x9qAqPLSq8JCq8JJOe0WR4'; b += - '4qQTi3ZCIBxu47CI+glx7GtC5agrvVS6HEWsrfi2YjgFla+ZhgNiK88suOs7crg69gNma6VYkqo'; + 'wNmAiE91eFFAlqU04mvq28Gl3tNfTcU8yiCXKqB+tq76mRxkiuRcvqocwUxSpIN2bWotJ92zZKd'; b += - 'tmqhVV+9SRN6r2HxE/3giL0+LHS88kK0f9YuDkqC8FTo76cuDkqF+q5ai/WMtRk+0A9rSZzYCAr'; + 'iFkh8UQK6ZG/P+REX/EUU96AZd0W5MqQFar0sRuIBFFRIADHzNz8QsiTNp1FtMwT+TIjwke0lpn'; b += - 'AMSmVIIJE1f+PqVnK3Gqlw5jIyhb+ZU28wcaKuZsGw2U4tNcMWA4uYNz6LGCvGeM4uVsadLEd8z'; + 'tj+BqbV2P4ouRVUrNso6bsmhHXVrrtRbDdavhUe8CFFwhPfj3xmfkuCevBjzvugyicx6WUVsaFI'; b += - 'n4uFxe6/z6LsZH5D9wsVJFFnidabdb9o/W25X8S4tTkpKsyNBn8F7EAZBGC+AJ01BkhEzgwuUMK'; + 'IV6WorwKfQb+s16mG8Rr0KW+NVjptIvATzYqKNEB4srlwl7Qv0oqoMkg5pbMK5q0jyMt3a2EgGB'; b += - '9go4WD7uJbcXYfc6VY6/z5LjdOXLMOz+OXc6NY855cewUJ44NN6X4kFDfhSZcaLKmEHRzuQTVDh'; + 'Li1kkeh5lvXGZRjUO3jGgReACUpcmUpvf1jsp54Mx4GZMU84oo9u5dyzdPVEpBKdVLmwmdQkcBC'; b += - 'ZWjFm3j+4HxYHp0/sI1i8OFCYUMZSbkCyAJAsrta0pc+1hZx+9GTo8tcUQTs0YwqkpuTZxqjNLS'; + '4mvRDyjxpoAn/xvAUAImEzkZ5ATa7bRDdC+6BXoNQEi4WD658NiDlZG7uQ5H3PAK4mJV0v/E8uf'; b += - '53n7KNzRJenco2Sp3YYwqlwL4DCwUptwZY6OdpHX4seT51kCKdOMIRT+zy1ZU51xm6pM6p9dN3o'; + '89J6P2dWOZBmr3Op7YUbyHHKvDm6uziqHn+5VTqik4A585/uTUhrojCT9IL3lgJT4RvmJy31k0i'; b += - '89RNDOHUjQzh1A08NTWnOru41GnYPnqCTPDUrQzh1C0M4dTNPLVtTnUmdKlzt310LJnkqTMM4dT'; + '738cOT4/9mRn7dJdLbkpoeA/ZU2wk/JjBgtdsxMCbl7G7juJs/2w36sUkYAoJxkQRDjfSx/coqL'; b += - 'tDOHUbQyVp8sNJ85hL2xhBKeQWedCscO5UNzqXChu4QZpcarsnip7p8r+qXLiVDl56hx9KH6gFR'; + 'q27wuuBhgCo1ouIaMG0Ej/L8nmW7hMCJnI10qWDQx0UAtcnHnbWQXcClIuQ8NBJCUoidTZ7LV4d'; b += - 'b4zl1LrA8FsTz2vddwitDN0lyZTnzHCIERYfOxr/4WE77bBHfl+jV0n44X5C3RTdANkmbeNhNOH'; + '5iB9Bh4r0LStfY0YHivTnQf4kBIf0irXQfOMuhJja9jBGtkwG+8zQpu8iRlqEkqo3Bb1KRE6Cpk'; b += - 'n6oPoSAQDLTRk+VXimfvIusOvKnWHFKP6rS9UNFz8cOPd/MvRyNxiTeLVLfspzU4H//TKcV/2pI'; + 'pK016ZjqX1wJFDPz4roecQcehAyxq+GE5zmbBu5sH3sjtwK3z1qo0Ro0FEHyNqmOgkX7B6D98PL'; b += - 'SPsLiTpuyOGLenhK3Dou6+FjcvhFPXxCHUb08Elx+nglcU4fqwm0P7XB1rWhI3vjucLdY1GQNiF'; + 'eXHvjJIWrLvPRHVKV5FFWgMfPogmpFOCxBejk8B6mz4HxQ5eCRGSJ6OZmipQvjRAYZ7ClksJdO/'; b += - 'x+qOKokPND1trukt8Aq7YbpI9RHEigDNA2/cccJ2J9KLZMei6nnaMI8woXe890eyYJ5sd81TY6J'; + 'Mje5QnHCorelsRJT9zykEFj6Wfi7jfa497stkNZpUr5ChA/DdM3sbUcqrGjhwNdFjdPuIwrVXqd'; b += - 'inw0bHPBM2Oga7h2s75oytJLFvurvd8SoU6rCDEs0G11cT2lfdcmPtPDCM1nSTeFl43UQuFKwnr'; + 'IrG+ly4g/PTQ8fQfn+f17ogwWqZ9frQN3LflWEiKQFUM4LWATeTY7UsHUpHq+qLfhiM4p6UpAKY'; b += - 'euFgX89P2VJ3UiQUMiV6vHrXEzmMZSsP9E1agK8mglY8VJ0ZJiCwgBboUoq4gTqnTy9E6d30vRO'; + 'at/C9XiOd+nIGeB/AfTM9mE+YkITJXMKIguEH6QGbOI6jca+ht5Xu8CXf3IdfJK0LVg9F9KHvO5'; b += - 'mN7J0jtReidJ7wTpnRy9PIwSeMUGrtrAyzZwxQa+aAMv2cBlG7hkAy/awEUNgBsETBxKF3IDkey'; + 'uHs7lL94mJJN1Si4PttZicpRZHWmpxgEdE8WjWA2RX9AYcND7px0wGqW6WNkjn2/SYY45POY3oP'; b += - 'DhA0BhFkF4vUWQd+tPoj8g9g/SPyD1D/I/IOWPQDKchhZAYzVUDaFv/F69yidjZXwScCZqpcjO5'; + 'QH0QIYIT9IIYx7OeJg17c9SoFv53dgvv/NvpwALwrg0ItG49tqFKuhRA8MgrqpEczOZPg+6hMZ0'; b += - '7VMyQZ5Jxt2BaB8rItZBaYbLQkmC1itwKbHaqIrkwYi4vc5AAwsJrmelFC5UDz0kXB0luAfa+Gk'; + 'gYSbeIwq/gzk6Wir6jtlIjRAocACjdMHjypWYimNtUqD6lh1EOB/vGgf/SThzlIyreiC9lB+j8B'; b += - 'p+6GNg6oWTdPBUqOfYozhAWnzSP6CDs3nCCkioe5uRaozfwkh9Zmxx6yQ+jszQ5GjOZQZGnGccm'; + 'vOEubZBpoRSs2Dbg4B921/l6X5iR7ud77nEIrukDpBZSfnPgXt4HB7QOI1k2/lx3hw/+t7AjFOV'; b += - 'LJE/YfkmVWRs3jAYcP+WBMrHqnJhsVo6udglbhzvfPPU/btW1BYej0tz1pHf3PyEEFuSBX3aino'; + '+T4g66Bhmbe0paWVnp/TaRBF0f2G/oqzfxmDsz+V7CnZl8L+HOTL6XQOHo34CZw6atV0clz3ZS3'; b += - 'wcMUG6HdYfD9RjLfFq8mB8LuSR+A8YFkapBByQPQFU9o4NPmK70vqE/rNE6qo+HK6TuaNazKbqO'; + '3RSImKUCNxsO6jRjCkkJaA/Wm59qv3WJ2e59YSbv/er5OCEvkTtmx6eF05c7BPqBaSe9ibJVSct'; b += - 'I/YE52cctIDl3agaWlUxAFWPruPfHFHUjcOXIZL+4YFf/WO2+nV+bVadAvsZ0Xt42GsQTPbzd3R'; + '7ZgjTthSzTVttdRqKPOnvC7n2suJtxyrG1azd/eat4s6OQYSjF0gSyiZfmITzNtnryIJFXQZR78'; b += - '4KnZ7Qg/1ofNtdaXvqLoHExzWkvJoeNi52/BTRfUuytgMwyePVWMJJJFXasafTVAXCukjo0T6JW'; + 'ovfu89NEvSbf7M+gydh+ThPnaa9M9D8vBvmMWagldH+82q4SscaGhRLI80cIRI7/CA2yRPQA4e6'; b += - '8FvADiaxro2m39gUNiLxU01dtFfXa03dc3PjjZm7UWPYDDagUXWT72YlaxttyXpeXTIby2aygWt'; + '854KSDF1bASEz3ydCK3h9YnGGCsSuoVDWd+lsFlaoqAoEOtfnShXowVQaZT/ewc4MZmCUZK/Waj'; b += - 'btEObcKP2VrEMKNTFjq11e2HHf/le0Bwbmxfq6+FNq8E6h+vUWTV26ht3IEzLbldpa+bwfP8ySM'; + 'Bzd2KsvhdWGC64TGShxvR/0Bj75rMBBc9xvgD8hPSIrOgCKn5RwgdodIQucDI+DVDgdMgrgCl5E'; b += - 'D5fJ/J9fkGac3suMcfccDXAJGsVluyxlB1qPBF3AG4/a9f+WyoXwFhvJmDEtCVAFJA4iIDcXtEU'; + 'ETMKcUyJKGF6CVFeiYuRJexxFWDbJHTGNRtTRP3mGby4WvPSTkX3b5Yd98ukiAXNUrIO+7EOe+m'; b += - 'z4MFPHP/v5nwwaZihVdQq1jYQGqQeBXCVQ38cXHYrxUrqZYdv5uVg25M3UEMJbe4YOknDkd6hma'; + 'U/irnhkD5HDz6rPtAq1njHfcZPw4l3CngYrrpckL60duvCFhcN733qMXEhS//oGLMXi0zEE98iI'; b += - '4ooFtYqLknKnYZBL8b8dCwEvl9CWT5oZN4iirPCS6Z6n43FSn/OxsvoQllGdTcDpY07++AvC6UP'; + '7rxHu7LO7IzUtwHrS7B6DzwDmUNxp9hyv7Ax4Wi4PevZ761N/j1UlWsc8j5vPxZgUetRUY9K7Hz'; b += - 'o3dOxJfU5H9ekPhdiy+qD2MDR+lyIldfnguzPD7kZX4bW+egaq21MeJ/W53y8x/QLqFrYTtM0j9'; + 'ytiYDk8fjRjrfCR1Y3egIXNpWN1BlfxMXCqLIeFrXK2ok6kWmyQPtms/rX4uY4514/hs7Zb0Xcr'; b += - 'fHxAmvD1vseH0+y+WaqyngEbGly3g19cuNXknBWm77ak46rPi5GIJ/cmbiOtdUbLxz0atfS7TTh'; + 'Cna21wNnQxzz95q+JBqtV9IS9p2h+vKba6ZuwtCDjKIx7Bz0n6rB5dkuVV/53llaO49AnLr51la'; b += - 'FHuJ1JpZk8pWiKq55C6JZDzfL8N2LW0NoRbSJh6EpBzkamnugr+KK5BjdHzeCMKJ5KjxjyZf6l9'; + 'hSLIcRC/NtTi+MWC20Ba35+fY6t0qOs1sdEXji7ufotFN63Ff7tKrdGtEG0BF2brZyi+fsTkC3D'; b += - 'JBGmKb+VCA/RzmCyW3XMv5ctD07Nq8M6kVfn+2saHxO32qpeON2g8nkl3R1djOszMQTJyPOyOzN'; + 'ocTebBMC5kw+A5yjIjzTP1v9fU1z6H1H+eqX8ffXy1/mG+/uvwc3HcF8+btf5Yj8gDhLgPH2AeE'; b += - 'C1/1Fekcwnu8aDl79fsfcg9FUvfw9NWtPUJ2yrD3XszCxHjxg2QuVZGv/uCcv3WgcyRYMuHIkuT'; + 'oC0YPtPoP1HYV4Hs1s0X5ViOwziZ6Xkzr2qGD8DLMO+JljJ1UMtrKV/atJQVn6ugxI2YnU8T1Kz'; b += - '/cIocN4JL3ilBWCT+fWOxAzAGUZCskd1NEW0qHBnXVhGQrBIQ0tERSIR6nUEm2GEsaHTLogGQrr'; + 'rolZnn0rRA+Nu7EH1q1InbN0ceIwqvjb3rm1meluDQwrs2Tha0lCYnajnonLhSbIz2R1wfl00o8'; b += - 'Em2LItaTbIVEhgaeiRbIYGkoUeyFWKwk2QrtCRbqJlHshUktaCjkGxhKueRbIUg2YrwPIYk2Yrw'; + 'XYK2ZG/U+ViOSvkTyhcw35RNKWgoIsjnvCNNOoPws7RjTQEleziY0EdqP+7JsoIYWvTleLKsQ9K'; b += - 'PIYk2YIyVk2yxU4hyVYEXiLH+hRYTzjpGc4VgkbXPKBdcz1o9E0xkrhG5xSkHALJVliTbIV8hQV'; + 'pTPjQWcRemP8fQCXVhbnQM6AtoasyBH3cxJr1tfhzpg8VR+uTDWuUOcxtHCfgU54UHUEpkBzJEy'; b += - 'KsqWNxDj+0/hgv21PJghX4n9N+/ZgH9c9m4+kcoCP1dW6mOyJz+RYbDzY57sZ8l6YMeVSJXBgxR'; + '+aAaP83SFHzQXCI0V7v4eZj+zcSLRs0EfkNfbGCGko/4qdKpO0o7U2P/5Nc8z3P4LyRtW2QVjTR'; b += - 'gOJCY/LQRlZnB+HM9YSFSCc1DjMyaia6TAAgwSeZpkVmFNZnX50foJSKoXHrXj+o3PevnRN2Cys'; + 'R/zmYjA9gWw/gHO1f618tzDJ4gMuRZwyBfDSmCY3uBQXTfwgd1E/lWX8JJfSvT/IXdRLyxx70YH'; b += - 'rRYrz5a02LF1amP22Q0Qf4848ivzMXO5l32J5r9A4RvKr9VaPmtQstvFSq/VShON2aAPJoJv+Vq'; + '8RcsUPFGWzulQejB/UUQDHnvRkfxFy3U9I0sSuex4/iIqs6r2ohP5i2J20V655lT+CkIjBdkD/X'; b += - 'KIq4Idz2ZVr3rA08YwMXbOBpGzhvA0/ZwLINPGkDZ23gCRs4YwOP2cBpGzhlA0s28Fpsp7Q28Ko'; + 'PuinrsmrWXGy8bWfcG+cmg45c1oeOXtUDHLxspTVjo+GUjvRl0/LKRQQMdv8xCx4+j4H4U3N8su'; b += - 'NXLOBV2zgqg28bANXYp2aRcIIIqtfqV0tEaIJWVqBK9NDShYOwF3KlRJhsOTxGFCeubUIOSv16B'; + 'L9ZcH9Lwf25gvtzBfdnBffbgl8n5S5FuUub5S5tlru0pdyluXKX5spdmpW71Jb7GrbRXrTRPxsM'; b += - 'VbSqaYyvqCKWUHPQMu1XFYwUngYWwjRPSWrBY7JI5MmaWtLmVE5EpCNRkr/B+HN5hvw/+JUzIsz'; + 'IoztgzYha606bl5v3rzevHm95eb13M3ruZvXs5vXW1orRsFxs+C4WXDcUnCcKzjOFRxnBcf51lq'; b += - '/9v9G5J9QMvakZDcqlkgi+GryXnttFCmR118i0mB/0ckCnnCr3NlLtM0HV8w5ISzIgTkX6UOzMI'; + 'Ocpc3y13eLHd5S7nLc+Uuz5W7PCt3+aytlXFvKs1akcvnbMkfERy3uQIjyVqH7sCYlDib5C70+u'; b += - 'agkZQt0TsuRhjYhrlGVoizhqBQCT5lViSz7p1RevgaHIB0txoZcpPiqCMyDNUDZJsuMbI/Kjjux'; + 'sJcFX66wM46q2fg6Pe+vNw1CPd1kPwfBxF0u09BOfiqCojx0MwiKOSDD6gs9RX4CiQ8eshOA+KB'; b += - 'xKfGMyJ2+gVTW0nFcx0iqqxHecOb3e9VGojW005pIZW0hzVkDqVTyR35j59Q8mhPrKMUrvXbNvh'; + '9g/SaKzLVlq7JrSk69XbJDk/P1JRS06+uPzpHPEE9u2Jf022xOaLT7fYn4k59EeCttyy+IV0kmZ'; b += - '4J7eFcwzwq98TXImviXIt8Qsh5tY2uRT4h5G8k4kt3LbKUkEJw+FoknLJCqE4T6dUIzIQqj6jEh'; + 'f5nNf8rkPy/Lv2J/Ulajk+XxoIwW5l9u8z9p8q/I8g/uT6qqXonjc6X5mT+2+cdv1vyDWf5z9yc'; b += - 'LyYEETiah9vOU8YRAbFlxPLW7Y7Wo3s1atVk/f3Y3tdwCjFlo2Vr6xxRTDgobll2LysMsFoI83r'; + '1xZWpx8+XbsD8dZt/l8l/bpb/+fuTTt3dPyd+nvRH5j/H5p8w+Z+f5X/e/qRLNTlJPBCfo/kTm3'; b += - 'LhyG7puoFuEZZ0tNCeshvpHlnX0sqzz7iRdCNRNvyHjYddR1pj3Fp3LhDdPIoPih1DXJRNesj6u'; + '+3yf+8LP8ADMrihNgoMhUn+8diAHrL0BrYP7ZJdUR+fI4ky8cHCWRajetM6ERCDxNiJtSQEDFhO'; b += - 'RrdrvZLVROO/bhK9Gnk14LRKHTfrDShHzu6PrkVqEKKhhEaL6L9nqr7UI59UgxHm0/0xtxSI8Y0'; + 'ROqSKgyYRkTykgoMaGfCeHYJn0/ssBnQmVsk27eySc20TVk9jWVybqUHcgk3JF9U72s8xLR2TXk'; b += - '3EK5bXEO26mGrg5zIZKMyylNBYlGq+akyDCx534wXH3fiYZ/C9Qb4XbD7zXOC/U9/j0zRefsx+y'; + '1guhLfdtP16E/Z7sCHuaR7Ij8oJO+ZDPDJKTHO8jcRjtJSnimby0l6SYlyWAZheini0NSwP4b3i'; b += - '0rz79WGMfiyTXs8i6bNY0hFF1AQDmjOEAeLzdWMtt2A33fszoWExdPqADgWu3P8LPYAh8XuXJ9k'; + 'er1rhyA5AaPS9HURLvYb0GuORCccD4sxj/TwmZzcNOwQElGVUllBgQrWZEDJh3lZAZp5EQpAabg'; b += - 'iQDAcg+Wb5zJKjw2LFYUvjor8NUJE2lSdhxfHG5YEeDqrA9HxbSljzwTzLNxRSCrs+OQ1R7y9Jl'; + 'R35kXTzNBeZpjScCZ/RWjzTGmRancBCjh4FMDOAA8MCzFqLGXttB1kgiV5XwH1ECt8oC5T2epvC'; b += - 'n08o4WHVWoE1d5Okxz9SKwFQbebBF1UGeLvNsXhGAaiOPqNCYPB3m2bIi0NRGnmnhNzhmMiLP1h'; + 'Ix1WvbBk7A71GgSKGFEk8BmCT+M0ctlKYgfWQKtpe2OEtPgBpXbAjfc0SQ7VAMuynmnnZfp3UqJ'; b += - 'UBpXp5zg2nBQfZQrac2fIVgaM2sm0T/CRYEE1eZGutCBC1kW27AlGRLWO2bEUgqI1sM4LXhBzbj'; + 'qnaVxCcHmE3gQWx8pKWMrMKQD9ONb2NfQi3oy/qSUAZCunwr6BaUpAfo3r1Nrh5nNoIeUA4TiO9'; b += - 'uPw7zlmTkHudEXQp17uGn2q0NNEoafDSQs+3aDY08RETlj06UYFnyKyb+GnmxR9isiexZ9OKfwU'; + 'rhqDHy3bMHcM9gxYLzZagp+Q82I5QywPbDHnyau3TtI4lJrtn93oIc9iILXsSId6q2rlaO5Wfe7'; b += - 'kV0LQN2s+FNEdiwCNV0oZ88xKrUQVFAVljNgdrMY1BZiti8sWlQupY2SctsCN6sFhboVMdPgiLM'; + 'ldPMp1gE4m5DpVjQm5TlVNdRmfKyW7iJ2q2l5mLfUNr3JbqbZTVVMyE6iu2LwxcO3SXcqNvuQ2n'; b += - 'w1C2KQkXhiVDZQJ+BHAffS6+p/epq36ZPgjH1vycy6SEA6DCq34TIbNgUmaXL4D0zJCauChGr1+'; + '9c8JYwoLR6msY4oVSylpVP5uud20KzBIBVSaeXe2DDbLvUO0qaUN+BNdCggpU+1ohP9jcw+Iwfw'; b += - 'R/NoLYo4jLpiJiHIrQbgYR42RsaSVU8eKsTN9NNNAlq9CLj6OT6wVF/h+2sKiAklolzYr0kIkwP'; + 'Ity13mOeIoNPe0ZaBR8oLQGOuI3oFk8R7Sh4DCSBjOqUm3bXcDOTmkiItpSS8KW9MQlH68zdm1Q'; b += - '0eoaAfNWHMjId6birTvALv1iM64b5+M3l1xi/ZI9aGl/NBMP7WybAmlj8FCvGME11jU3UzXh+nB'; + 'oI6msG6T+lgZNDkuXx5XLN6mMHVhGU05vQASV/9Ilq1oNWdtO7ZdP+v9EL6vmyC6P7be8OkXcLV'; b += - 'fkYhwyHVAY8Mg+oDnAYldJj4Ql61JBxUx0Y4hDZUdRl6tZdVxDcpW0dEsra6hvhrqrQrGkLRPTN'; + 'TuEbIVgwgBltRGr1sY9I640T8olybx06HROuCa/WvHRI0emHqhgf9jGvf2B2Zr3HseeG4b9689R'; b += - 'IeQkpL7kU0sUyBcw+pgZHjPkj3YsmmsGEnswYOJ9x11F/XgiB97ICyBnZWu6tT0nsKYmUmoouMk'; + 'WpszlJszaLyxtMYPbyKTLnuJpgiEyQREw32xWnfhXm2tGXTRS6JZsA7bNmLU083LwoNzS5z3dBo'; b += - '8g8EmklBNPnbguRzzHm7URx3BTouViFeobXAzdimu2/Gr+GH1xIUb9yIK5cFcknjMr8SxXjgDFE'; + 'UrJOZkqgPpp0MKGwETxDknTIAXYgk67hHgsImgsgv+iQFFWCFNK1eHDC/vcYgzxOjQAvPXFCtZd'; b += - 'se1NrdSaGjQgQh+SD3sjK0vvdyqpZczraI4t6xpvf15IZQa5ybC/PZjuNtuxY0PKS4UcyBVD1Un'; + 'B+sj/nKIVOensTkoyTWjQlsZ0swhBs6glftUZNVuQaOEScIu3bKqXDS8uLGIPnpjK4BBj3eBGVz'; b += - 'OFJnZLPPDHAIHgTF/yIUWPSysdHbEW+i4SxlTtlu/v5O3r2s+3dXMu7fYeS/LVgN+w3akeQtkY7'; + 'tik6c8uw07RHe89FxlxhnZ8yXnOswufFcgMEnLDaihAyA8O5phPCkhuGn7fmkmbCSnjzmvTvAC0'; b += - 'E46Qj8RrSkdTSf3iEIGGDEETJPRzDfJMWJHGJ5OuwHrWWgyMQSxJ4MBcj9t2qH+VI+ZSog4RKsm'; + 's8ceMhpgFuOqmVvlNsqjzk3jmq+thzylRrFbvTI6UNfveDlcanucKe6tF9u9x1HlXgYSaxFg+nY'; b += - 'XTuCKiAqHEELkT8XuVGKGcaBB7LMXCynElHhdl50YM2TSwea3EGhpnaTZuRBRyJVYilHQNDweil'; + 'iLZ3DM5YMlkz1cWypYSgLZ9+Ddx8hqEGQXzxYT8MSFjHNkEqy/PR6Pe54yu98R89/biubxhMPGP'; b += - 'Dlfq5liL10mYJnjEyEPhlwF7CDBOFmIXCGQzGNEHquJVbIgQWDLMmEowUco3B7D9pr4tlyeu/By'; + 'aPwi+a+KYAymTZFmStsZbaT6rUM1Ik6NqQaBgodyvDqN/8CxinWKAroN+Z9BbraN1iCieMdZP1O'; b += - '15K6IloVq1AjvZypTIejFonr62eiD5JIF/n8HXmtVzLG3ZHU1B9Kz2KC9DezY86NP9enKVpjvi3'; + '6cuDtTcRk1UxFgwHdbTQzWYtEuDLGVeTKz+2l9SpUdJidovACodunLiLq7knWBQup+PzOnMDc8a'; b += - 'zWCbH29ocXf3p5wM1dBONktw1+0cKJhIz9frejLy8gpSHL9NwU6lC5pDa7Ch2Hn5Nw6myoxB6OD'; + 'G+Y0wp6mtqmZPLSI6YasAG0auAoK2ninnZlJqaJvfcYxZRDiglqnJ+Tdv7W02rnBz82Wzsf/dhz'; b += - 'YNN+thQc+m4RY97NG1abhVD0Vlcjith6JHOdyGw2QFzqHA8Xedkqd1+VEfIXUqUi8kdVtSP6fy9'; + '1s67PzZbOzN1Rjvf+bGztfOjH5utnR//2Kzt/BmDYByptaNxny5a92nrLq2mSIHOntZmKe+GDI0'; b += - 'KADd0vzAHfKTWXvnK1xh3JacJTowFGiA0eJDhwlOnCU6JTdR2pY0zfDqcFWVtWWq1wFO527UtcK'; + 'mkOZhy87ZWD12ZZ6UmaZKZ+SaTqnh5bTsDWE5WknjTel3QfG0xBYVB9EuF9bd4eWcyMNR+hAHoA'; b += - 'XAZj+ppJU54yEfvKl9jM10hg5mMqm71mjkwsr+JGKp70USrGhDanmjlysck23kjLk0Ka0+Sl7qx'; + '8Or5KP5bs//o/wRT66+Lc25Y9+R83ZZArm0sfOkv5Ix01x9b6R0yLPmY0+lKnq6cz3GAw5xav61'; b += - 'R8mxIaNJnSAQ0u+esX9DGcyJc2bZalhs0Irf+SIVGtKzT0qRGZNazaUIjUuv+1NeIxPpI9c558p'; + 'EHNsSC8NLjid8b4HyflpgeyYvO2WFyV9Wk21NSal08TqgN07niXW1Frt1D9GwpgE53FAbwAJ/Ez'; b += - 'hB93f187LkCDME60JQUOoRZlAhRfkSBAnFiPUoJTyajMgnynCoL0FsWU4CLFDlltYhUg4CRqxDF'; + 'ZajQ7E7e30NwdjDsQjmIcWr1YA3LVhGxj+xzFypzY3QXbHWDStO3g7DeMNw97TTSIfnQyN26xkR'; b += - 'GGLldN8Fo5L9rvgci43YiwXRquOW4/pw5W0PFZ+zcRRc16kXhNucu1kncuuadZNLz3GbZHZdnk5'; + 'e6djYJ3MgPkTGJEnSr8IafSsnbd00TUBfBBNwFxsTaoniKfNig/5V0e8rWdyZ7rf2ObgdlsaSkt'; b += - '1jBlrE8l4l/boygxV7xP0WsI2RoJSG2cCsXxRog2jY1rsHekjlFjvbYFjmvDkXQklnTjhimEWGW'; + '57wKL1tx0GyuESsw0tx5caxOxIOQ565FNzLjWntASKkpAWN0uM60z6ei/6f1HRTbBlwuyjPM9pB'; b += - 'KErREKoFy6FpcFeLQjrymVAG2w8SfItLLBh0LhgrteEwYgd5hxWPZHrL6oaHt64Crr9rXFIrp/l'; + '2IV0od0vKwPu9qrnGpCyw9YVhNWWF7rBtiqcAMncYaVTQCsg2TGE+mlzm6HNQxuawkI4MtY151n'; b += - 'IrjPFYXYgJhhQC4+IwJlcU5KMQHwX4KDgnOnSUqKN6HYXtqHlHOTwq5UFED38o4kfxvp34UxI1L'; + 'yKEjRvOtmSAhyZ0hgcod9T4cen4s6xKv5W6+fid5XgZGWDF39NW2MLtpRemV0BJIsqJmF0tI937'; b += - 'LJ2VLyjGB518iihR3W9+A3hUbI/Aqdjy/wnUrWVaNRWIk5biSptJXK0VaCvOr67KlGerURy1nIa'; + '6IV1ZfP0M8/UxRyfsPe7TnrC/87Qm7NzeT27Cbu79rERO3fqZywT9hhnTanPnp9TIza1efufHzN'; b += - 'ishsJeqylcjKVqInW4mQbCUKspVIx1aiGVuJWGwlKrGVyMNWogtbURCWP/fLz/vl5wH5eVB+PiA'; + 'sow26O5Ofo3qyw3CaNfjk4R2ebNJyj97h2kv47zwsy6znfoCg4q5ySoWOth/qSNJ4J7gHmgIKa0'; b += - '/x+TnIfk5IT9L2s5T+ntafx9TuNbpcHTg8c995PKvvvQvvr4Ze2ZxtWSivvTSH37ya//6sx/5Yi'; + 'qWUt40x3dtgTBfCmM6VwHJWWVu3JYRc99TADMWSOYtXv0VHW8sFXAGjAh5ZF/rB7+CrlZyft5KD'; b += - 'Bx14PRgc/8zOc+/IuP/uCff1Xjrpm4X/q5H/6Rrzz6U0/9kcZdNXEfXrqw/NyHlr52hFEHvvH6x'; + 'hKFWcmhDtZJjGq3kYMSONwolwmrlYKaVnA/+Z1rJSceElZy+AOk/GKPapp61hVvCzThrDOdnxnC'; b += - 'wF/OPUfTZb7najeV0MloxYxsa8qtnSIYRtawaunQkEsmvouY4sgvi1K9kRPabC3J3pag1N7omc0'; + 'VYadEXAq3of6GxhLuQXRaIkFjGczPGR6KKpm0J41IbJUoN0ufIhXXXJJwqOBt1CjVhOt615IbUp'; b += - 'OLsnek6DO/dEL2hw157oRQ3evie6HKnI4u7oixIb798TX9Hg3Xviqxo8zFVSBt+zJ76u0EQSFxE'; + 'bBzkkfhSwwg3uJi6I83VLxWFQfHW1xG88Wrs4hxq/BVwoO1qkfVH3H//IhbBOBE1HtZ9Me7YjOh'; b += - 'i9aerlBZtvOIa6lT6AiBBG9jUQIDFqZQORGDqRVBZ8HF2xd161ySkdcT+sReZrxcJ6ajG6VzMD6'; + 'j7j9OJeXrPaKB7WnPQJMC0+kTEtojAyLSqZJZ1WMbcp2LynCkq5uLfCp6fHIQ1hwZzhZF+g3krl'; b += - 'udd9UciKbfvw1X7Qqql1tUZ0BHoTOuiM8u+WKSqlw4KCRwwl3K+skbbWSX/GXbAXWsE9I6Ib9RA'; + 'bo+km5BtIvTIVE1HNsp7SLENdPr06eJV6rEGNNzS1t9LvFG4atKkdjS9pFFJ6OroZw9Xz+jVbY1'; b += - 'mWu1halIlRnQltlM4FeSGQBBMyVxoQAN0EibMWXjAn+b0KdnKy+tMptxuLt5KHV5E+G7gW+/G9X'; + 'lCpZaiohnKBw5F0THfcyqcChxSdtJ5zZegq/7JuMhqRwfeMotfBHouEu3yngAg2cSkiPycgXX34'; b += - 'AyaHXdsaTRw1dkO057yaJ3XNw0aTGgmmSeHNmqTEi3hh2zEeYozLHAb7MlwCCmWm0Yy4NB4BkvN'; + 'KZKbElknaV1uBKCemr4SKd4KoZOzI9frsgeDmGuNJja9rMuLTyAU+t742Cc3ZlnG+UcTvop/J2H'; b += - 'GxIXxiGX3BQqqYlQ80Ygr+qo+lqgCWeJ3CSX4pF9SaVxL4YIowOIz7U2lBFkq3RZ4+az8WCodt0'; + 'pZkltMRrRqs2PqcNkwn81JLVwn3WWc2vZbXotfy2vVaXrtey5tVr+W16LW8Fr2WN6tey2vRa3lt'; b += - '7SIpVogfDUzSJ+UbiDFlL7hDcqQ/qUwhkL/e3pby7+WWDFWJQo7kzK6550rOgX8wK7y3LaqK6Zy'; + 'eq3YaUTv8O2HJHUqf+VlfrvPbK3f/Bo8vqv9awALhSd3PeXyHV8eml5j0ev+rIv5o7tmW8wzdcZ'; b += - 'YNdO3jVDMh2zLlSGXc/nQmr2lJWYxnXWx2AxbguaWi0ZoWASTeYyoeYKcpUPrEaoowR4VLLLaoz'; + 'i/tFdZ1vM775ltsX8nbe0L+YpnLZ1Ni+n8HxqbfrP2EH8p91BvKfoIJk2varadNcMEjQYR6VDTa'; b += - 'x3mlpvQME5t0zZtdiz5jorNrJfzy1gM+Zbk1Yy8LNTFl5lpTk3q0pJGV44wU7B7LgSwINBYWMD+'; + 'hPcJEvcU1QgiEtm9VpcDzE1hcFJLdqdGw623ta2uhXI3FPfiQeejZHIpQHt0k/fWf7MDxy23M+D'; b += - '+V5cCxHKJm8Sh94qJkTjBUK01GTQTO4dvxmDP+PHY0b+JXd1jrSGJWXNidtWw7vgTd41XGdLUX9'; + 'KFYsPduGYNMnTEGD9x2tjF4/LbZxuCJ22Ydg7/qX2eZ6d/9q8Y5w+Cr3Kp7obFnaGqHyTOGR+6q'; b += - 'XAIEdkT6bzqbZUF3UcaecbHaX1veiVmX+HGv2iz1/qSGS92+Rwslf8BRsU1S71nstd0MWHtrw4N'; + '5GnDWoDrsJLaYFZ80Gd6l6tYjDFjhmZZWkDditSfiFxkaZmuYfeNdNyUFLC7raoWKE9FAjceR5a'; b += - 'CVgUR1dw2keOc5ZntWxiqG250OtUOhpeoYNPc9wrZ5n6NO3hngdYaGhJd6fF1TPM5SPSSSgEmwh'; + '/ByRA+xPCfZDrXWnoW8ry7TUYyh03KjcY6sOllAUPoC17V0WZ0t38A8L7onlceavxwW1dNO3IbI'; b += - 'YAKcSDjHVDeXcA+T2p6EC0xfCwlPYaI6JeFpTEmnJTyLyeeshEtsH5QS3on9hZ0SnsMGxJyEd2G'; + 'JKm6jUcMyqW1485CHzkXPM63ear99pef0OXu5J++Kc9s7gtHQG+4VzZuaZnrWI7AvntLx7Z+YXz'; b += - 'HYpeE57GFMS/h27HHcbuE9w4LWGsM7xtugMnG8P7hRthtDL9zuAnGG8N3D6dgwTH8ruFmmHEMHx'; + 'tEvXPT/GP/mntjJKRtysnblv7nVHen0X+mCWBbq6XGJU7z3EqImeaqd81V9RaVWVdbd5IKiGowv'; b += - '5ugS3H8H3DrTDoGH4PtoLeI+H3Yb/nfabfvvG6MLGt4wdYlJNrvAozTgzMzbshHGEGtmJINuulp'; + 'It0LGvfTy+lpdHr5y0hLWar8k+v6HHLWRsv4Iqadr5V8i1+7WX79rZsbdDoKRKDseq3MjDVJL6Q'; b += - 'acutJQ0ZEY+U8Y+q2CfnVDeEI1+xUR/fOnSHz2i1CEabSy8ChZequwhGv2qif69Cz/+tVQJRDTa'; + 'dkg7AwGpsZlPjwVjExUVeXGxe7EihXSi0xkJ5cWhW1ni1qn4TUUkudnmxay6ecVP1Ag+MtA0ZzM'; b += - '2IgVbMSWsn1o9Gsm+t9c+PSvMHrWRRsrs4KV+U95C130KRP9L37hySsse6eLBsTHmKn38b662Md'; + 'FVDq9yzFUz7oZ1+gdr3rk7em8yrG10qSFNKtwySiQbqSttaju8VYm2+4laT8w8CZ+Lc9SmXqGzF'; b += - 'M7K//8u//rNxiFy1v1a+GTpVELUx5EcHi169vgA9lqLpvyxFxT2phMigWJoNiYTIoFiaDYmEyKB'; + 'rTnAMPJAIz9JMeCdhRMeRPRr8c+5619Hn0BsaMYWK8fWGuWSZmMWAfYz+jn0qnsaQuTiuG3rfEU'; b += - 'Ymg2JhslyxMImnEguTQbEwGRQLk0GxMEVYxznvwsLEqmK9rBCV/rG2Vi1MUWAxD+JnMlHfXo5I4'; + 'eEu6DNnboqRq2G4jnoMBfq+hfus2zLfzeAYWm8DIwrPMNyy4z0tCngOvCXgU8RQ9hhP3+UmB58B'; b += - '0DeUC7B9I6ZuAfNBYC9eI9AMA7Lj0pR7pefvfIzb37q+QH5/L25AW6cPy/AbffnBBg03nwAI86f'; + 'g0gePNj1ylbAFfGt0Pkr68b2UPOfmPZCSpbijpA7m3ZCSZfjiSuqKLHVcUpfjcSX1vCz1lNwFeg'; b += - 'D0TmTpQ9qL7x9QTCPnrel9EgFfK8k6MB+WWrKw8DaNsd5rRG+c4i7sb8rT0VJsp0aLOGUqLPDJi'; + 'P/SKAJyrYnCVOBVYoVWR9y5Imcpo9Ikr1qrC2IJoCVMxqtCEtREtD1xGgOgAsF0a+xoA4JQUgXS'; b += - 'CN1a4zWPLh65vN/hgY3OM8w7PnA+rwzLB9iIdX/hItWITOSo+HHFhJRmT2h07rrAnhpkNWQvgkN'; + 'HrNkOtFsA2XcJ6UVpXweYbI7/kYX2TRw/WvjhfKe+tkYyxKOuIu0tN1y3vrlateHc9PavFiUtX1'; b += - '2B+wr+v2eGG+iopwCkYQTlMjdIxZFW7cocG3Uwqbj14UXm60X2xiN1bmAhDmYImR7LubkCcuiJs'; + 'yAtbIle+Ou6D7or1u9NrXCgjGgbGj0tVIxycH/cjWIU2lbReHLwALqCa9wKJPoY3i4OheCmCF+L'; b += - 'sdubrFjsK6gXdO2SCkuPyCa3dNGJ+h6CI5+FI6TDLqGd/hPMkr/UX2IJ7X9+RNTs9JeKdPvV8vF'; + 'BJW0eDl4EsULzggTxUUlfjIPV8TIEF6L98f5xsEYOdmnetdiulPQlOFgXL0fwErwV9AccDEOv5T'; b += - 'BObTn2KnkTltbF5/bbH/5RR+pWmybxSUGRhAgGowPTxR0dtyUkZCv6IPphsXy3Rs+cU0nLGPEbw'; + 'LvRZCBJL0PBxfHMQJpSPogLcTBJXGI4FJJe0Ivwc7dYTm9CAdpHFzoTbn1kTj3QnMve3ls+8Gy2'; b += - '8CSktNjudaqdS7TSqnUK106d26tROm9opUztdaqdK7TSpLQWtBF+xcVdt4GUbuGIDX7SBl2zgsg'; + 'PaTpbHtR/1x1s/i8+OV2+MXxKu2x0PxBdvjF8Uv3B6vjl+8PV4TX7g9Xhev3R4Pxy/ZHl8cX7Q9'; b += - '1csoEXbeCiDbygAXiX8cViJ+EyPfFmsrxffCQa2suyECUueFysS63ulE3zyuAGEBcFmyngn9N5i'; + 'viT+te1xGq/fHo/El25Pziew2Cr+voC/F/B3iL8v5O+L+Pti/q7m74X8XcPftSPL3zBy6RuTlSM'; b += - 'xajwyAcc1xFDD0k590snFwLzTXGUKSctaTVxqUC2Ye07q/MJy8BHV607Bu5bvCtJZemKDdkCrFL'; + 'f/spPAWJ2fgZFdv4l8oDxonilpPzHw5Wd8Sp7ivZ5zAALLZx/+FY5/4LZzvfJ+Z+e/uiP3Z3xBb'; b += - 'q6U/0Lkk9kVnHKpMppTUxZCHGNu75iIzNjl/42RMLynJJVPLMq2ThQ5Q50+xDtyfTsPpk0IE0CH'; + 'Od75Hz9zz+uQfk1kOznV8i5/d98HOfLOyMXzjb+fly/rMfvP1Ouf5Fs51fLOd3vesbd8v1L57t/'; b += - 'UJ1Cdc2B1NvDjD3Vz4Hg2CRflFD/mUDQH4meL0GJujYXJEKCfrYN+ucU8S5vN8zNlnqNNg1650b'; + 'Dw5/9WvfeSOYGe8erbz3XL+Ew//4Licv3C2871y/o4vnv6CvzNeM9v5SM5//+5dx+T515oTl1BF'; b += - 'wqNgh8ekBtLJmumS8f2R2njwG4CGrH11oLi9Taq5b+Jl6gEh+oDaT+F/5EvfZaph3bP2hiNn/QT'; + '5XBIYQhjQHVg8ErYaQZiTf4wDLvkr8pZ6iRNtkv2SyDf0DN8Bc4w/9uZv21eP8t0H8h0b6Z6sxm'; b += - 'C+rlvmLTaVsYVT2TYcOt+GLcHRhBN8Q01ddc4lbP2gK22QyxlUHf42dNDGcPLpgficXjo7M58O8'; + 'tu+CGoPIRs7ETZ45z0b+6Bo7YbDQgdKHWT0PrilpqRLt9u0+gcMROG66wXu+lyQbCP7yDSkhDxE'; b += - 'OnojiliSUDY1zchBSWmaMWma0B5MCDTQTC31dXgSohyF+K+YXGjW5ALYqBTzyJj2SCNtBN4mdZS'; + 'vDNZcsrtFt/K4CEYFGEkRWVLWw2gzEKirG1rY9UjAbVSqCzCqE1tVVR7PeRrrnbSIvfdXl0tDAj'; b += - 'p2jZUbYJVi4+bqjDXxKiRZxJ5+lJ9k2eoBC/RMb9TUnRKyk5J2SmZeVOlplO2jcrpYY/ym2/cKX'; + 'nFZ6Kr9lmfUcbxrIMO+op943xD6IrWq9l1ShQyOjxs9CmeUPrhX7rC5Ev2voP3BK8bysfI2L7ON'; b += - 'nZHm43nWJ+XadMolN6A9Ong2nTK+aVO5g0PYP+g9aM3b4qt45gw86Srm/LCLbtNDXYN49g805xN'; + 'K2Tk27JUHZNF1fj4YeMNThC3rfLU6ettGvS4UKPfrAlc4YUvo4UImyxsJLpXE/07jUR0FxW5r6i'; b += - 'XhqBFsYezSbyu0j2Mg9EuBtHMF2pjhyuWEEmzohP18xgq0dlIK++Voapeo+GNl9GULNubspoJxd'; + 'p5lk+iR7QhwrYmikbEDyl5pS++u9u+zU+c6qRBwQfuN/TsMYFXE7OcZHwFWFFkYP41VMLUbNNA1'; b += - 'QQ50zT/GUD7wIWNAzO+JA6EoNmZdsECrAUKlCyIqtrfeLiUM8KnICVUtR1bsG3bha9Gwdc70GTi'; + 'n52KetXQhqAg9Cm3CXaRBL8udw9enUjT0pvND/FsABR+BmROHXWBGpFxSenMpoGF7ThmlA+VBFk'; b += - 'Xkrv69bxtbw0jfNZqbxQXCJJ8NiT/qoM1ykvUw1w+Fw5be+KzWGudVshlQGqjPQz1RlVvt2oeVT'; + 'k8PEH/KV9Mk6MhjQwUIuR8D4HaPm8hwLUuor7/WApBBvLvabLWQez76nMrxJKZWxzNVH1Cwp4/A'; b += - '/yY8/LIh6bVaJZkbC3fAfaQr5eYbqdF4wnumak3LhvC4QIU05eDfRsXMy0f47tx1UOcH2W0jrXf'; + 'KqcXgE4wboKR4gpYvq5wFt8iHwJjs+oYAyRjXzStVKPpzj+ZEplK/c/SKRxM7jdOjb9qnkr61Y/'; b += - 'tztG7sVcEwLIJIpZKbXAlHHMF8UCoIFouXMNbuXvbilUDZCXnErZ5G+4SP95GiH4EvEsyiWi4/P'; + 'nmuf2++Vg1wOmeX7kqjyvoA7EKsDojn7q6j4GQQ0AwuFHitHl0jSRONqBiL9ELFidKHABWOp9ok'; b += - 'bXGgPWRspj3xaVHmXQ3Fc4N36IK5C5kPyz0d7onPI+U5uv7HsB/R+fDkdUcvAv/dlDCH4e7dQ3i'; + 'P51/TVmTYYo5cjFiPmGlJcn7gY8gOs0hCSUwFaA2J2FaA4kLReWX9WEMG8xPHDVANw3mulWx1He'; b += - '1LFTp8eKHQ7qHR28Lzkak+NKtgEr4jsUtzpxmekf8KrqEzETi9EpIS3xH8CybcGDv6X3Br0pw7v'; + 'eduBzVuktSGTZJaRVCoPO56wQ7vJp371M+0twFpDLOizK5BeourW0gf+PqUAQ4tNdIFQPriNp0R'; b += - 'R/F/yyBPPT7wg+HVZf/4nnBciJ0s4/ZQ6eNjedQM4/S8P2SRni8pZOhOZYiaHzQSdGYkduNGy0V'; + '8c9w1l3pQE5SQmxQwJ6WjxtxOKIPeZbikc4HcWkXzavJFxkX5aCUOhVLp2v2aOHPJGU4uTIsuog'; b += - '8zpCb4PYDY1caRTJS5agDHMH1KowMHHkioHwierzJT9xAIhWkK99ZDgYwKSCvPbmBgjNHAErGR2'; + 'R2dMi+m5BC6yXyNErpcksB8OyR123AOmQgqEq0VQ6XALRagFFq+JrIW2p5YgKYyVJHouLmxvGwi'; b += - 'gQ+fZegTDzcuzh7si69WpllYkLAXi/93BuLeDlFppn9NZCSRkY2MERlLZGwjE0QmEpnYyBSRqUS'; + 'ITEhWIV1NB2+mRBn3zGBiLxjZLZZa9Vn7mvxbRDhSbGFS0sqyJ0cOBHAp8nNLmsc2QC5dALlxAu'; b += - 'mNjJDZCaRWdW5q5+JwAKaNYyh1sSldeBA8Hh2zWuy7FaPPnH+UnC0ev0bX//gaIH84oRQIbHdTF'; + 'RDVSPyGwd5BSS5LclESN5UD3ijAlcSgq3zXnaFpsIoFo1b4L6w7j15rFQgP9nn1Hf5Nhu9aBcrB'; b += - 'yslj704VMP8d2C4SCwYeHeS+4VfafqzH8wd/KUaKODcxjdeGSgfgcjuEKO9eVdJDxmXyaqIkENi'; + 'hqoNnLoPHzULUQDQpEA/4o75ekfjXiuw49P9w1glf4KEQFrhTiEgJ/ZhTfBjXRNQu6drgqpi6HR'; b += - 'EFMvnVzEoSh8WQFh2DyH1rklUI9Gzd8EFDRDZA++i+8G5VC73cxc8JqAYDMVChP7+WLMb2rj11m'; + 'wYEZaAyRE0G6tcrp1P3suRcyDoQ+94U0RvaoGW0xEvzkVsQTo1Zy7TBEx1F2rnDqK8OdUREKM5M'; b += - '7Cy6kRNi5HCkDAOrSBE3M4EEDay6npAJR1bIiwt4UviuzeAG7v/lV1QDgzngIagRT6biCbOsb/h'; + 'FmEYMyE0uwAkUEcyriPJr4DjWLGIKpyCrnhSginFMRLwLiNhlbTRHragUEL0ERhTkVMQy0bpLAm'; b += - 'vFimDWNB/i7QM1oImP4P4vQtziqIJvI1ta0HHjdl8pHbzQ1bRCfPISC1bTfQKOaNCFeMpKVC+pp'; + 'iLW14h8lKKI4pyKGAHStxLLmjKurJUQbEQZpTmV8VLAhCtbrSnj2loZwW+ijPKcyviteg0wBrky'; b += - 'inQqcMJbqv4yCF1EMHJHXcetv0rqTVsLmNHVqog3J9eCoh1oRWTxqX70ZGNN4aoJQKVBJEvVXEk'; + 'rq91IPhtNeGZSxm/U+80QoIt44YaT/x3lFGZUxm/Wwe57IlcGa+qVRH8PsqozqmMRj1SH9KsjNf'; b += - 'G7xS1dCPXjGUQBy8ppjSihr/5n+xjM2nQ4qFBoXLojMS2/4pkRqLj+hrHXXrGeKfChUy7jtK6lg'; + 'Uagho+VGbUxmb6t2S71SujNfVOhH8IcronFMZf1Sfx/myWca4W+tC+HoXpXTNqZSb3ToQJiZyxU'; b += - 'nV5ZZFrib+QrkQx7HuwDx/1aimI4oUvWk7JMMyxq5YbhBh04G1V+2YIVsNC+SYfylDh3DR3wBEq'; + 'y4tQjhm1hMNKdibnXrPUZWs8XscWvdCN/OYrrnVMw73PoCg4Zii9nr1uYhfDeLmTenYu5w6wstP'; b += - '5PgyFAyPzcSt02l0VVxM8F8PNME+EVybCozPcgogXNcI8XcOtiLisEeYBNAZ4ZNllIjyjxgyPLL'; + 'IspZp9bm4/w/Sxm/pyK+YBbX2QRXUwxB9xaD8I/ZTE9cyrmQ26914LAmGIm3doChB9jMQvmVMz/'; b += - '9MhMd4uJ3erOrQEroxR9a/lo/5GAKI3G6Iu0yWXdVE2Vj2FasxVRYN9IXsgDzMwtvmN5AYIhJUr'; + 'cOuLFdAlK+agW1uI8JMsZuGcivmUW19ixGdbzJRbW4TwEItZNKdiHnLrfQpykhVzxK31Ivw8i+m'; b += - 'tjhcahS7AAu1Cd2AjKBqKtZlIYoEGv97E2PPJSHLGPEtTtZG1sEPmiiU0443RTegW65wT5hMoPv'; + 'dUzF/7dJd+liumGNubTHCL7OYxXMq5m9cumofzxVz3K0tQfg1FrNkTsX8vUs/7OlcMdNurQ/ht1'; b += - 'GZPYAXJwx1InAuMpxbi75N0f785498S7G9598O5AQOvc4Tj0EgCOaNM6dau6Zde2p2f+OYkYIdP'; + 'hM35yK+bZLz+wTuWJOuLV+hN9jMf1zKub7Lny1qdGwxZx0a0sR/guLWTqnYn7owoEbGtysmFNub'; b += - '541QWEdfqhD/sqKuWo5Hdyx2miMcllQNL+ajGdaRj7/UQOqqfWNdqmzrSdvbudhws249Fv3g60i'; + 'RnCf2cxy+ZUzE/ceqJoNXaNsoNzjmeWGq/3ah4tkXJFmb2WXV5ltkIlhm0oj597mYk8NUVd3ogT'; b += - 'JjHTpKJytjrY5cTRnrzEGElhyfkEhZW5+oppR1Xr9DXbxsgtl3pK2GwHEelt/11KwbEtLY6O2Oq'; + 'jS1rxHWNLW3Escb6G/FyjfU14mUaW9KIl2pscSPu15isQvo0tqgRL9HYwka8WGMLGnGvxnoa8SK'; b += - '1k39K6x0dv35a2x0TtREyetq2ad+teQ9o5pWrf8a6CFoX+NM4lTxBZl61DlokMNkarpm6hsHdac'; + 'NzW/ECzU2rxEv0Fh3I+7RmCyM5musqxHP01hnI+7WWK0RRxqrNuIujVUacafGOhpxTWPlRlzVmC'; b += - 'Tx2nXI0b2F2jbN1z9x83rO/Ux69R9brVULY2ZknrpDjC47N2pIwErB9BWwYLpgNB6U7e24+2U9Y'; + 'z1KhorNuIOjRWMG4qXhrLw1ljQAKAcIdtkAa4xeQWhxrDHV11eUQ9+6mm0lavLTFpPLm2pSevPp'; b += - 'Gm9PUvhm2jhgbvaXZsWiQONUDyltQJ5bxuC2HFGkeQRoFpJ7D6Ag+fqX5ifgNGxpbeIHegye/s4'; + 'fWbtIFcWp9JW5lLW2LSVufSFpu0i3NpvSbtslzaIpN2dS5toUm7Lpe2wKS9IpfWY9JemUubb9Ju'; b += - '81pdh8CKvpBawEm6oh1C5BuQh2H9hgCaUXsGBsjvnubx+zuN78+KIs9DKnuf49IngmpVMkacS0+'; + 'zKXNM2lbcmndJm1bLi0yabvcXGKXSdydT+w0ibfnE2sm8c58YtUk3pNPrJjEe/OJHSbx/nxi2SQ'; b += - 'vTQLQ43zuEcGz0AK1hFd+EVfoTCtmhdJillqKK6qZWVxRTVTRySQ6r/EWH+AQaiYWsEiRh+oG3j'; + '+mE8smcTD+cSiSTyaTyyYxEfyiaFJfDSfGJjEx/KJvkl8PJ/omcQn8omuSXwyl0imCK9hjGQDWW'; b += - 'W1V4N8Rcbtz4VNdx0HjlojStlXanpgcW7QI3eojYAul8kQ40pWMZOOSJobccPpZbRT0ikRMSdZq'; + 'urtC29Vg7OpwkBumtwgbPiIguNFciyWOTf5BzdSSJUBvlekgFNIeLGEZq/JJwzAu4rIcfzYNIag'; b += - '71X2A7gQxPBPYTFWp0WZGh7SjW+gfKtOAIBMcVKYdXXQXxkRYj5W6nJOsha1A0P1SKtic1YTu49'; + 'KgG0nndmilg4A8oHKIM2XM0JoPteRoLgVfOGDbCU8UIZDHKS8Z7YIkr0tu3W4XUFouH/10k1NuL'; b += - 'z4SBURESsiIlZERKyIiFgREWGNiOCalTKR0tkngwXExX9R+QAegt+g9+HPe/DnPvw5jD/vwp+78'; + 'XnVHAAl1yu7K0vZ2JIP6Hckgd0cycF7GtGVKUN8r4m9JDTQBsFUvtCDtpk564FOHIOV3B9xJh1c'; b += - 'eed+ENH1334sxd/bifpKqlY6W4r3rkRt/S43adOslOOSoT0reR35SVvhNQbxoRnsJMWdOFHdpAz'; + 'z7GK9DUkIxhpFGQ9rijUJHS80US600nIMtW0TnVg34C9XlEXpyjnKkOhFxnsmDqPnIwpceTjNnT'; b += - '81w/OKquZfLEqcmo4rnOSoyx4qr6zF5kvl5kb3HsdIwx20V4c2zEuMjM++ZBfmAcewMaoW5O5JP'; + '5dJHgkY9f0JWF0LmXDUiP6hq9692+o0DuQoyApc3M8mq8Z/8RXxqSi8qmQP6kEab0Dmt/AXK12T'; b += - 'OJdSTvWy0WHXRTQfIPjb6Q1WwTffIHjZ6S3aw0Xmyf42+lN1rdK3sXaOnZecaHS/71rgPsmsdcb'; + '9U11DiqMSuR/y+nc06hQWKfUFVgcSP6tm+0foynb4HbNe2c09unDjnpXzq0+EofxcGDhw4ZyDd8'; b += - 'dxn4T2y441bprsV+Meym41bqnsVeMOy041brjsU+P+yy41hgPhhxSvAqIdLtcB+x0bdZTJKvnM8'; + 'NKQebJuO1rYxQJS0SPHBjuikAELk04978ujl6Pw1Xn+TGbCDFlnyNYV79zzqEvGooZJD0WW0iiM'; b += - 'pufF2/nupMosBVP6CpKMapTubBRlYRiV4F543Th3QQPcdobL6ZRLOzzS6EASZV9PlvDPp957PMd'; + '+qnysFfe/+ag92aNGaPHYPouar3txWZ+1H5vEhejPPXAqohVCaXHz7P1o/XRCn92CBBO5DS+VPu'; b += - 'j30+a7LPZ459PpkZtsA+34ZzVoN9Pj8sDO5r2ec7wj6fkH0+ORCa1317Dft8C+zzLY99Pp0ZtMg'; + '4uzNMDQKoroih9Oi/DVuyXp8jdE6QvAYh6wDkFeOmIrSZKOuaU9NjfWCdPmMOLECpBv8iREgyIK'; b += - '+bwK5ss+nM2WCN2Xbss+b1+HbQ2xS5HviD5QxuOcfMEctQiThvv5Pa+J50HIDpsUdUUs8n4kAUU'; + 'CjBynqUHpHSos97dT89amIeLwfurjQfYfUUwy96W0AzCBjocTEEOwaaIt/v6fbJpEcjbWBnOnFE'; b += - '04nx2ewbsFRPRw+TrVTKhCsFjEIC6uSV9uTj0fV3Sdj5V5fifwWG8PS2wmY7jE8DA7zC2UcmRGT'; + 'XE8n7lrr70XYudbfg7C21p9AWFjjEelziptQ3/KfpU0oY7plN6Hov/B0tqI8bkCVzFaUEo2oppF'; b += - 'UWFS3fSx97sSQQklo6ctJocFQoJLg9yteRS0EhMBLv6Eo+d7z5hmuWe+HBX0J2HFXH8D8P38JNd'; + '4r1ESpHt3T8m0Gh30jTtzehcS5ksCe2CQTuK4G8eeqqwVkjNQKyJfkatXN1Kj+eo3ILUuMAchVk'; b += - 'kgp+TS14NtHJWqxUFqzoaMRp24gb1b5rzRQ6t4cCoDWj+TfWrHg8FqqMGfEMssZHxAOCbcFEINg'; + '2/VX11XSBqr4RpCl40/EWnyOHkUsejqLQuX/4QY/BWGOSojP7NpUqL7ge66kxdJQZx9CugJl3ZF'; b += - 'R1ASCXcFVINgT5AWCfUciA79roDeE/5r4DtnoIQJESLADe+GN2IqU4CZsRoZKgx3YC2Nj8zVLgx'; + '8GjWVTq6LoMDW72x+hNldsJs19T5nKzsszG2L3Zxlj2ccl2xH7sojkNBkeQxwPOQ5JvDPLMqTJX'; b += - '3YC2/FpqSlwQ7shbdhW9LSYAf2wjMipI7gLD6v90PaCD+3qp1saTmStcsjzrlOCVWbHgHBmmWIq'; + 'vgCw4WH6F84G+f2us2FTza2MwOCI+nl6LI/ILDAiPXB7Uhxx/q9g/YhXLxAf7lOf1u0Q/Ntxi+S'; b += - 'AxvsD6SiaHYLGReyHfmm04JGRdZxtc3gvGCyX0tQMlI9uNjQdwKpJE72kqCUcZeZOzwkZF8kQIv'; + 'Fl7T6x6VOtMtVSIiaqx/EgPrcEWCNtGbcZzM6MzPCFwUoG0X6UuMLLV17rU+3L35vfuRalxrlri'; b += - '0eIjI/kurZMEfKTu1TcWLCyEUabTnRI6sn1j3E6aifOG8hb/M0rEY8hP6UYzFZ0yM8wtZj45bWa'; + 'EDhlpOkYZCFaME901C0yNlxPsKPgxSBMAIr2ykkz88BGvF1yzRFb56FRhWpRV+nBSw98GhytRAq'; b += - 'P28uZcra8df3cRxeVcrz7A5Y+SgYyuyBZ+8nVBqYNrK82bW3kmk+uwkAtJOFspHsWEVYDbfB0HV'; + 'uGZmRMGdQpnoT2uaro+fWEKsYsZhgwlUvFUvsZAYKZ4FKRVAmCgKQwpnWu8kgxf2Z7Th5wmYY8l'; b += - 'yqg9dDF7xWB6+OI9sjrPSNIdsjrPWNIdu5eTGGbOemRRPZ3kCyxKskJDNT4//BW50Ii3+MWUgyc'; + 'ebnduNLn37Taa4WWNjdoXKMfCN2LkdnzZdYtEh+NElBa1cUlVA/2QOH0udsl3wHd+HAucrkvcZG'; b += - 'ilUOdfwUtvPtdytU1b73hmT3hkbG2dMeWds8c6Y9s6YqcPLt3j5d3j5B17+nV7+/8bLP0fbVq5d'; + 'rTDnqRUl87oZB5/AMpevebyiCfVJOTxMyHbtbnKmDLZigjc9mWjGw/SgCHs8Wsz2/LuJ8+G+ebj'; b += - 'lTrVwXw71jxUEkjEXrry14Ff0aWvBF6pX/UOVv+Td3Dl697B0t/45yyF3jkf9g6unPIOlr7XO1j'; + 'KUODyixzydgLRGZqGofK+mK3y0ZlFoZE4oDjhk5eXW3qMeTHrgCFjCVh3jERCQepUhGM6qNk8Vb'; b += - '+mH/Ox/1zvs8/54x/zif9c57wz/lBd2DXDD+PnRvzWJQilIP++Flqm8c0VcVf5jdD2Y77/z1NzA'; + '31A46WEmPtqA2UzBPgqrdS4g+2QQSlkSB5VbjxZtNr39aOwoYzGDRgwtjrkYIZCHYZqaCyYnbFp'; b += - 'PLzqnMvDM+biyj10OdvvGRaFEiIF3gpBkW56IgniCkkB8iNoIbICbPDPK0gLnAm56Jg1Z1kknUm'; + 'sYe0GmQGXBpwhVBKH71TZrzVas7gpasNtJACCvG9FSgMX4+fa/WiK9Uzdj2V3tBslmEQsQuLuBM'; b += - 'iQTnUjMzIIeIwF2tMXfKZBvQEEQRBiQfhm2+ZsPO/xNht0VoUnqrRw4eUIcGh/m5mrhjj588Xu8'; + '+93huwM+rog8z+wlMru4K/6RPzfDeAjb7gaM6YVEdOuQDY8qKvohNxSsAsngBzcjd9FYCAHroAA'; b += - 'o7/5xY/9yXZ39PUvXP/5He7o+hfO/tmsO3r2o4/+q1vc0crPfe7K9AkKgJnX92LZWSzbi2W6WOa'; + 'Q0BtvUBDAAHRToDzoVZnsXs3U10i870d+w2GCNc5vP4p03+1YJm074jeg9SIYawE9EmP8oVknuF'; b += - 'LZWuxzEAzv6BDKSlmrQsHRtUyrVJ9bXJMJTKmEhlTiYypRMZUImOKP+sUU2Iwv5CGkxjM85an7J'; + 'dB0A2dQc1rqCldmeP+ErxfaJ0z3FLTZ38bGnPDT4gZrbqotptradE+GZ8QmmPABQ0xKiCV8EUD6'; b += - 'tHmR3ZTROPO0zdFCNLzuWRflk+Llmh9fi9PC4vt4/Bz/0Ye9d6jF01T1byhsRW+pm6GaUXia2TN'; + '4uIskqH0b3dkLBHYLkzf9p4pJ4NDkEve+J7ceXmXp+/IsUyg7e6BdXoHJ859/i6dGGgbEZ79HeJ'; b += - '0+RRajotXAYkD0bmYKjJK9nwqtIIJbXJb2qSdeRRDyvS7quSa8hiZhel/SaJi1FJom4Xpe0pHjV'; + 'pytJLWt7hHhJy7i1E99q36OXeoj4e3uJer/kWb9DC8BKHrqj5P/s7rJ/hFe4p2Fd4l3mF+4r5Vx'; b += - 'U0gittclndKk00givtclndakx5BEjK9LekyTziCJOF+XdEaTnkASsb4u6QlNOosk4H1dyllNeRI'; + 'hmr1ByWraR2V/htBk5b53tFaLBTE+d5RWysw423+FKfYeDz/QdounO+A6DinrePy5HEwqjq9QkJ'; b += - 'pxPy6pCcj0siZUXw5Fc+NS6mgXhNLKjBUq0r2IJrkDbJun7tI89F6b8PLo+1RP3CTxWL3y3YT2J'; + 'FHlVymWChzPV2BRI/3n/LFU4MQdrRWYzlcADftGfNGW6zwQrMnunw1Pusvh0c41N+/XHtWb3omp'; b += - '/WnhzWS6FXe0i0mgwK6mYhC8IK9nN+Hwryf6/vNWJ9GSj/sI4LSNx0AbniiCDmvSrGNucV68khe'; + '5Fw7lZw7cyrx2h9hXfMRLtZHWPfcPoJ2Tn6c4HdqH2G1PsLQUz5CRadcKYPzsIaTRUBhs0zpPOx'; b += - 'yuPx1aRSH06lpruHxS2lxQsHqel17BgnYZhjfvx2vfENmbJejSkZezzVaB5jyO22zgrVFcNr0lj'; + 'oHy3K9PZuAuZKb0tPSDS6E5cXV8jNOjC/D9UB9T7YiE77ZBXXsBchBHaVGT1d4xVlAIhMUcS3aS'; b += - 'Lint2h0lURT0jerVknoFdaYrjbo5b4vE1q3hN5GUXcdc4Zg76lGUCR2E+Hb4pcvFQKLyeGw3mWz'; + 'h1SbA61Ij+wefKGQv57DNeVAOEdxovnczXmgtU2pVEWi5FLyasy2yc4iuCHSoxhipNudlGfJAUc'; b += - 'FWpLNHubj3iKXUjpVYFkkxrLIFUVzJx48igfFpMYV7Vi10HiXUuJsyuzEkEIeP/58AIDNiWEOAz'; + 'NLSpDjQlDgy3CpQhoYkYScM+SqnlLqggIc3Ns6nMcZV5hejyAeqAqQ+w1/h9651mgIAlCK+6k0y'; b += - 'YrW/etmItm962cIEV+7mjPqjkszNLGe+iuxJWI0rhp8RNS0LB1H8mdH6Iscdl6D3AIBwKHeVhTE'; + '1QjkyuwYkCvSXnpcMZ66XcZ3GoYjqxyjj9RFgtRDLTdgqvB3spTdZv1L8CH3PwVvaJUWlP82Xf4'; b += - 'e/UnLV6WCqSm4q0WJED4XetjFUGH6m9I2nnq1gvTm6L9wqlc1BFdwT3i6vgJeKJ9x/BadoxS3S+'; + 'HsE0oAeTnAY9LnYxF/r/DCSJ1foMeofd7WA2Gl+078r9u+dHRb+2429Ddl1J/S3rqsKxZzvexSJ'; b += - 'nFdWVNsiwqg0ccQrDWKlggEsORixknJaozHXgmZrbBlvrTl6mlxpXqioE6Kd2IZiqFditmKIWwE'; + 'MLrtQF092K7yuxDyS20JM7fje7wcnTvzuG9ik2aeiLloZeWyuMwzssg31F3zcXKNNG/5NJYYayA'; b += - '8cjhybTTxVHCXm1OFerq9P7ai9gZtH79DFWZYR2dcN10L6tEUaMWEiCQwvUuUPC3eT6VRBOq48L'; + 'srU9EOfecjhxlrOJXvY6VUn3h6VLBbr1Bep0pisow/KZdE9rkIF9NK7Ql7cFcYAH8yTqbw2gh3A'; b += - 'a4BMKlmqOjwlz0wBDMn6GQ5909qu68V3ZFqrD4BDbRabeG1a5Rpcvt8y50uwvtdaF9LrT/iA29E'; + 'qEl9deAai/yLL1fSlv40GKsBUsJBTfbA7dolHmDem7yiZx+7Z+bZTAg56xMexRN2/xd/wq+6med'; b += - 'LjIi3XwxTp4qQ5eroMv1cEv1sErdfBlDWKh5c/Q6wfS0/u4GP+nPOrr0cs82qxH/xePbtGjP+HR'; + 'ToLpJ3C9Yz9AD9w7HUUCwEaw9n1BkvDpd4dXykeCISsdEqSFRx3wVlGF2tZOZS3pNlW5slNlY4P'; b += - 'P9CjP+bR2/SIKwMHvl2P/hxH56r4mDAGawcFsnkRAS8beXjZyOFlI+Jld1OBA3R7byZvInnzN5M'; + 'fpMw0CH584cr61PSLaXqoAHZayqqR0iuqq47SkVUSAtPS88mBfcVVFMB1aYyjMMNE3iaTt0P4n+'; b += - '3l7y9N5O3J3mLN5O3kLxTbybvlOSdfjN5pyXvrLEFpjEZqfMGLm+geWe7j6ehGbWewvbDw0Q4CR'; + 'j2ulN8C75DM7y56L540TE86Bnn6YEjSDmhj0Wj4CEZ/Ru/OcReT1/qcnV5o7PSm/tSSD7DQ1yVu'; b += - '1XjblHlrskESpCx2rTTMolSfhvmkk9SRKmnGZSIUnCqdNMmpIkYd9pJk1LklD2NJNmJamkTnkzq'; + 'xkFTUkqE7JgECFHzuFfNUrNvzSmd+WWFGp7lsb79lI/1vjM81ugZH6tpXxca+7rb/+y5eqx/Kqo'; b += - 'ZSknRQ0bybtlKQ5Kp83k+YkaRcl0ptJoOELTK+BFc5TqrbqZtqVZF4IF1aQVbrzxAnbl6Rm0LTc'; + 'EOGUoEmSR9aBI7S2yBRSinb7nuESZ8TYoV3Eh9a+gpxlJjgspHe99Cl1mOW35ZbME5GQnjB7xQS'; b += - 'S8slrWfTel5aT9IKm1Z4aYWkTdm0KS9tStKmbdq0lzYtabM2bdZLm5W00qaVXlopaTtt2k4vbae'; + 'AsElckS8xSBlWfMfgZcj/liZ90qRI96DascdKxis4LBfq+hKCs27EZnM9SGgigxwO8kNCW56X7s'; b += - 'kzdm0OS9tTrY8pD/PjYTPIlwYmfl792O6fLAcHhlm2OoQV8kUjjdVwA3pCJucvSo8Dt8kkOANc2'; + 'IS3S0Q644T0e1FiChjBghbQo39LSP+fPW4jOoJRNEUmMVlyRr+pc8rxkkr+x0rUBqB5pqAWkfBI'; b += - 'BAU8BC2/pVCoW31NiQcdlmqAska67bkXcpFVqn7B4huLdsHekO44P4KnDmHVfBdw5J455hBR7re'; + 'KXGjT3jNdhtMXV1oxsy3MqFDVLrnTxU4jzUlfz257KODVOaMBzVqoScC6HLjgN7NFGZ9LGFoca2'; b += - 'iruCUS7bF1buHoq25Lqx2mSBc4dV8kx2Y/EC+0YyfJkX1KQz/z4kYAdqyTJQZnTgsKOLl68KsiB'; + '22KwW1y8yKOXhoYJ3VHOVsYcGKu8fK3ExRH0StjPkr6PBykyiMl9hub3UcCggRb88it6tR828gc'; b += - 'LJhe9QRZk1Brcmcf64515ratU/i2wPTQwsE+tqQ0/ZG6MMA/pDhj9odHjZlvofdYi5Bz+9zhhm8'; + '7Bl+JnxemUe9wsvR4x66djJWWRTXyOelzLtjoOoiIoc9/rmncEQ3czMKTtuRJxOV3vRrOk42WCK'; b += - 'lOxDdF8o+N7zHAPsnKSvmcS05rN06+OVIJR67OUx328rSkaneRpIWcUrYI68f5umxwHJZbfJHah'; + 'Tl6m10E8ZPFJFmh8arWSFPhZUVPImFPuZGOH5iiFmychoQT5ehdro6RotWEQEFyrEQNCWglyR4D'; b += - '+EXh/EwjOInlbev0aJnBbZEhvFR0PTc/fITSO3Ox0+JLFi3y9zp+JzaZjqShZhPrhVPazY/NTzQ'; + 'h99yE8+ZVDH7cgnrkGNvMwFl7Cmv9YfQPTrIIyTv4bOYpwtN1kMXXJVutA83mQwaGpnWiMs3dw9'; b += - 'svMbc27EoUWc977tuD+vqxNs5dNT8rIhF2EAUovQ9FzNO28kys/UOgtfk81HpOuvBaSqvcgjHdS'; + 'Plcmbbq+D7ug7QVxCX47LY+alBtLYFe2MbHYZAWYZispI00hl7HSIpk8nEd+XzYYFeGTlhvuknw'; b += - 'RFJ4Vu3b1AmWFXTP2B0VXcX2mcpIq2hIKMw/qBnRxGsZuiIxk+JqletpcfXsU9jNmeZq3fSoeJY'; + '33o94zHu5a9dxw14TmcP/K7MO92VQ6UnW4T3kc7ke8bLifrLUO9++cYbhn43tP2GDmswz3P28d7'; b += - 'bX+h2M8CUtjtEFHbFqUReBXdRbaqRWZ4q3USL+S1M9otYJT7qvQeJEODCfUtXCWRXHgSELUqQjG'; + 'lJw9PnW4f5bz9pwf+wTv0TDfdefPXfD/duzDvf3nXW4jz6D4f7IA09nuN/1LAz3YxU73D+jw735'; b += - 'SlgHS7QfEXsKZ6xNVWx5SUtEwP9iMtXUNri89kjHvFZ6LzJMWnNywecsCnfwqw9Gr5J60csEZcs'; + 'yQIVqhu9145yRqZCRnS4fzA/3M11GO7TTz3cT9ZmDnezTOBw34VVwhOfaA73Sd9gDwQ5Zr8dyqj'; b += - 'BFlAFGkNY03lbtpu1OBoXgVS8WrTldI3qDdgfWED6xiVGAVozCGik9n3HyjBofWeNXW+F86V5Jr'; + 'o6OqSi+qe2UjTj3/qkOEHBxffarb/UAtX+lA7x3ipoU5AKXQZr9sMZ+GrFAiKgFHg0gvS4589RO'; b += - 'WcOVZIyC4FLiZgaSA/4ew8RSKYA85PHYnsstKc4Rc/XQv5Q0ZqKXlO2A5ei5pPlL3aT+qu5gWsE'; + '48eq3caQ8CcpCQP5wrT7Unp+Or9qZq9HU/YzJvrenhrKZ9WlEHWzCt9b24tb6WYK/ypeYuOn0Vu'; b += - 'TpYu4ROqEq0E9maTIRHXWTuQzvzZrL1tKveSkS5aUMJGZ6kUsldXZL4b1NcdKESrEi6FXCrdVbE'; + 'GinTtpplSxKiuiDsexdPuyUDSQTVnnypu5xlTSzVHe59y4ShbplG4nChUQRYifUVdci+v/A7rnG'; b += - 'nno0btz0daa552Om5c5jTnvbjYe13W03a14SXZMYCoyjCtG8V8rgvO+wsVrvGnm7P/00rjufYqs'; + '+TeTKNycROHOkCjcnEThtkoUuulZ+aKRKOJsd9t4VyTuVS343UBbwnoVk83GPsLSAb87MPjdrmF'; b += - 'V2puBprycXPh6IwdjW2CmNy1WvAvdVlXkjdJbCokLkjDlA5Ra8ojQ9dSwN381XVBipKLVVRupap'; + '89xW+yFf8bj+P3+0b/G4/Vg9/xe/2+ZBc+ip+t5vhd2caoSZ+t6tsqv4M/G71VfgFP87fPNuPc6'; b += - 'Tx730UB/LzIspcqwrCu9Qm2U0kqvzHrSK9M3kl6Bk07EeZmvL1ICYqAYTDO189RF5lVc5Frgi4u'; + 'j5OIGSLgNOVyq1kQ9DpYunwOrkY5cnIbKZPIlvniQ0TxLok2TA6u5swOrsnHiSvzLA6iHFxyZwv'; b += - 'I8soHrPCKyKycCcdlVk57MSItshSOC6/sF+GV948Lr9zfEF4R8RC8ZSke4oRX3m+FV654wisPWO'; + 'N22UZ87lfn4NOo65je55w12cOWfm48AqOBH/vIh/TGY8FAU8TUV4KvipHcCXAA/2OpXLxt8wr2r'; b += - 'GV+33hlQdUeOWBdYVXznPoXG3Krty/J16ObePNTBNgVjOAPhNJQDuLekR00LR6RPK93R09EUuQ3'; + 'yD9LFVWYHue+VBUgMD88RJysEN458BPyob06bMr3tEwcGncnPUiPagZ4+6hTStTtOupl5MD/xZw'; b += - 'PNnhDNj2afEgB7R2Vi91c/EVjUF7PPRvVRCEj0ikgc3tVKsqqKeSE2R/UdEY2Rejy2zPCtxbHe0'; + '3tKl6IENJMtmyU3dUqlPR2qFvxSJ0V6A/Ouw6RijnDrfRm+VFcxgUujT2sNJ4oSmN07SC9iAmi0'; b += - 'HNeKKMtWSejyxxo6Kh9bK3bywkdrTaKgetnm+IMk6p/sPkKTFZ9xY9gONpCPfLCR7OWDTeQ6H0y'; + 'fSVK6TCFyRqhhu0DrkVAV6CHem2G2cF4mLMeOMa8+0ieWWaPptiyzGM3w9SsaAwe5nleIS9rPKm'; b += - 'RFn2wmQzqgy0kWx9sJS/7YJoU7oNtZHsHTICM8ApRXHl4OHOu4tGuIb+Dc0NVGSLtfDlsy8DvyL'; + 'DcZj8AYso7GMnY/i+nVpAOGDYyXwOKxPi7Z/Swmcj/rao1zP+vKmBx72M8a77D7WXuK8nWOPhHM'; b += - 'SwKzPJnkw++zJfnZA7MCkdWzT0ts2nu4wWhqB6XOCeP9B25IEsAZguVsoZN83Zfg6rySHZ4yx35'; + 'dAkZ9PYUzbSPvYgi1gI36MHtRTDTs69ez8xB6qll04lsS8wYq8ORXw6wS4VhWeZ+mMLspZ1GA9y'; b += - 'LZycqXc7rJss1lyyYLJy3Q5sVJuc1mmbZaeZMEcZmvZXymnXZatNkshWTCV2VL2VsqtLssWm2VK'; + 'j6mdsw0zelVMvFxrpJ5rHVBp1ZqYHQc5F1VPS8A7l31Kacu6zBbptKkvbu1rV1nvvat0qOHBXq5'; b += - 'smBGs7nsrpRbXJbNNsu0ZMHEZqrsrJSbXZYpm2VWsszSObO9Uk65LJtsllKyYJqzscxXyk0uy0a'; + 'p7X9t947PcV90UovsDVmDQe42um1+l27LjLtw6Br3XcetGlv1xJduxQ+Njhc1qHgnMnt2eou727'; b += - 'bZadkwWxnQ9laKTfWitc2y5xkmaPdkZVWCXt0RNN3Sfqu7p8mUedk5CQI3P7LCl2ImtrZE97sEi'; + 'C3SBWKSOyb7itjnznbtamv9A76Wp3pwFIXu8Qe4Ul5cbcT/zZpvWEpppaOb2Fqwcg2lj4D8Ir2n'; b += - 'rXnLErZeyEN7vUtNxLc7NLTet5aW52qWmFl+Zml5o25dJIrOommJo87SW3dtdzTE2e9ZKVi57TT'; + '2EhvNxtJwHDItql5m6nA7L3ImvtIYO3++SAuKEPijrhst+LctHhFLbC9CtBR5oHq9Mg5WkqAPuW'; b += - 'E0uveT27nqmqck7veTO7nqyqclzXnJ3t/Ak7gJSyEziB5N2qhZWO44J9C48TmL9QFLyYR8pIaJl'; + 'ukA7ER7udRd0p9580D5b+FYliHy41d6vcC5wvli5y/oIs6MPOYY/18na72gH5IHI/ruKyukV/je'; b += - 'yJOJh9n7EkkFcRx35HgnhRN2QE2AxyW1CHZA2YDHsxRE2AEJAx5PU/lgB7QKeExRhbIHCW+v6gl'; + 'STUFdH/+mpRQqqcrLMbrq3yB20ciOzBtBd0nIiT7wH4s60XFrbL1f/oRbPVh70pss17jXEjbR75'; b += - 'ydCXHHLlvMXR2QFaBcbsIQpRGFEONLLhWWdff3FJ+ph2p/yu6G3Ql0E1Ny4HSPWY+Z5h0NJlNkj'; + 'v7PZNsG08H3tPaqKTk2z8Ve1T1brzI+iKjPdJl7UMRLS0+UjSWCUT674OeFUFE2n42TZd0bWp7t'; b += - 'Fmk2SM2SQZYzZJmswmSZPZJCIQoArL7rFhCmQvSNrnBTucVNcegdHbHmbk2YBJeRhTwMM1mYnQh'; + 'DbFivVKxt7+ndVfnQFvF3t9W8Xe/J7erI60YvcHXGi8/2/grzbH7283O9u5/r+3+Qa770z/EdP9'; b += - 'Qxt1ojnEjs8zOSzZj6SeUUfmlhBM4e5Lwn/sZjM7BX2Q8EqMiEcg44uMFTcqqwQqnaD4lZldU9V'; + 'su7NmOvCM7r8l3/0hXh0JZu3+uGf6oG+7/y7b/UBn19L9D/h6ESAuJv2Wjq/dDd1ftzGnAnT/Qq'; b += - 'GhS3KitzcjtDxa0yVKreguJWGZpTnQbFrTJE3CpDxK0yRNxqoCw5+yRE3CpDxK0yRNwqQ8StMkT'; + '7739LS/R8tt3X/o4Ht/lN2+L2NHfOb5Zbu/43yRc5bitr9dxe1+x82PoBTQa77Z3WLvvDcdv/1o'; b += - 'cKkPErTJE3CpD7xNuJXCr5LLpNzDjddAvu+zuDB2VkjOOW86destZYGNp2fHJciWy47nahcp/Us'; + '1n3v0x72fqff/cfZ7XY67LuP/um5s+n+xcrza8jX8tCUxPLsik1+Uz+O9PZSI+2fZf+8q7cndG7'; b += - 'e1gbkfyk6kFx2oPwu2iFpefKSVS6Ry9L9PoP9obrVSkUyI9dI2sbA/exWdiWLnfmts8w8TZm5KM'; + 'v2HuvHCud55QdrmsGVbrzYee8d6ua/Z2n6IZslGp+/gYvmFrN5OlRM3QMleN1ZWHLp09TlDJ+ug'; b += - 'Nbl/52ohIVSbgF9nmC5SIDx5hC+wjCMkjLFekmXB3hBSKakryMjqLDSSpGMIKrZFyfiKAhjeqZz'; + 'et9UAwDX9s8UAoPbsGAAU1QCADL9NG4D2tvZzbX3AsEBmjX2dNva1z7SxD/hPt7Ep/RwJztDYU8'; b += - 'MWSB5IzCtDgUrSxYv0HxDsFzFrgIn9EC31y19iR7IsR+kQrPYZWmxmNDiRokEqn47dnIfL3I3uI'; + 'EZG9ttNrZcnm9sTHlsbBB629a+Wlv7yp9Pa1d0Falz/Akb0dUWzo13qAGw1BBb+CWYBTBcZ46xK'; b += - 'wahDjKOGiY728aW1vFXQKahv8XdX2osqGsvPLBWhb0ESSGhdCRxIKiaOqkZhXma1wqRWm5hhypw'; + 'x19H/v0YJFWO8MSNr3hTG/M96dc4iRbnW+iwFuwpX2pQfOiEiJaa6C4gGyMM1NUc2LdjjPHwuY1'; b += - 'LPY30Lujo5XLtUt0XuHj8yXy/SVjcbw+hZNsu4+891EbMQtYaTsjyUDCNxmZ4VIkmhFGkBlqxEb'; + '0wVu4ssRzpwsUtXGM+PlBu3HkL6nQ+J6jwpM2QO9Q7Vhy69BQ2hK75S4lt1FOBMtmb7XL809wT4'; b += - 'i01em0erGPA37gfbu9WpNMUMcKDwHrLJgZoEx7EI5NiwaAd19oo0T8MA2CWoygk7CeSb97zAdfW'; + '1L2atUZuLTD31CV5s6oYnuEhrY57gxVqL5jU1+wQv1nvyCXjNPH0CXtGDJ2D+hfoEzM1GZ94+fQ'; b += - 'QHESxHgRt6pXv/x8UK2aXsOlIDlR7cf8bzVQR5cyPNiPhVLiO7iFxTNG1vuZDiSIwfKc9aI2841'; + 'LmXYonYN7l+gTMC3+M6KLK917sna9WrhCKOgcMs7YRijrjTghF8yEUMR5B4FmnbNxGKGJ6FYLTZ'; b += - 'e2rVFs/LPXFMn6JbzcsjrE0JBSZta42FvV+oqg2U2eHZH6zQsCCM5YRhUV6HVUSUVSI3O/HZwaG'; + 'Rqnkd96iRuhiIkBhsbVGhcpFkJRJ4Qi19y5Jneu0eNEPusit9SoOqbBHwWd+caub76x66tldn01'; b += - 'YQQ4QE/vZB1TnUjyrwPgOFy6SoW0UDNe4d60gGJ6cYyjbMYYZhWr1sGlB8NKUOOXdtwSaA2RTd3'; + 'teurtdr1eWo2ujpz1jcj01NHAI5h3AMdG/c1Q7kGpWetiWxRAwF5BJVnjRrTmtQ5f0p69npJHAI'; b += - '+Fyzl3Wk4K5CavOPzGV6Tx4pJpfNA1AGVik5eornVsA0Hn9dbyEkLVTdT4gOekuQyvCnWxOejn4'; + 'ATU0GQT3ApkJgxUt4tVaN1FEiZ5XIhPtc/B5wReqA7Cgfd/rlyeg44dVfpGOnBI4nK3WU4hfBVp'; b += - 'JwMumJpr32myoJCDHGQtrU/dgYEgxjFF75lvvbixoNoF3oM/7n31M6z/8JWvr8FYGLfKeAZ+4fd'; + 'bFJYtQ41J6ADNO00ZWJNAVHljiwSx1wkDI5c4GPDtNk8pwNOmS2nXhFsliCsF2x6CLzO8LcCuA2'; b += - 'btM7LOjNMeGTniTmPXtGjnt0a5ZEYH6/qkUhFXdejaR69pkezPFpSOoySR6f0aCePTuvRHI8e06'; + 'kE70hcvwc55r9Y/6UfasrgfacvT44eniPoS4y120LZEHmkxNiZOu2TYKKYnMT6TjujTrkikF9br'; b += - 'NddO0L7sJdgwD7wHTwgMyUPf45NGM6NXq3kvPSGzle28iGkrsykHmltgYxvbTMK6Ojz3QZw37A/'; + '/E34ew5/B/j7POlxF9afrxdI7NwsNpjFVmSx87LY+VlsZRZblcVekMUuyGJDWeyFWWxhFqtksSi'; b += - 'QFbHF1eBrkZCT0SRggvGz3E8BbqI4YVOEwCNUzmHU+Y4KvxPWxZ+i5H9jQ/akS1REoZexguLucH'; + 'LdWexeVmsJ4vNz2LVLFbOYoUsFmaxIIv5WYzGsBofdj4KRbk37HyECvNh5z6Esgi9F2E47HwYYW'; b += - 'et6nB8v5JcafrI6NTpZdUiJhkbkLVzYc9ih/YWynLpnNoM+cs7n6de2Ja88g78pFYlv1YLyePtu'; + 'HY+RDC8rDzpwirw84BhPOHnf0Ie4adP0E4b9j5IMLuYecehNGwczfCyrDzAYQLh533I3zhsLMP4'; b += - 'eq1Owbp38jB3pOrzkOsqUQA8ijNFT6td1Jjwy7OwEoUNOHzvczgpeARF5pXLsWaDeWRXfQwt6kI'; + 'dCw8z6EFww770X4gmHnLoSrhp07Ea4cdt6D8Pxh5w6E5w0770a4YtjZi3Bw2HkXwnOHnXcifP6w'; b += - 'mi4iOAE50cVbA34ntmzN8udodoHFbbwHxhLI4yO1ZFx3mfsFvUIqFuW9zHKn3J00esPsj9g55/U'; + '88cInzfs3I5wYNi5DeE5w847ECbDztsR1snsAKuwBI2Gb0GZG5nROCaFb3pxOe6Le7FrKmt/u4E'; b += - 'PgHU/7BtH8waw/agFW0TcVykhLZ9fq/1zhYYwPkHxjCm2pgbEEBYdJ9LRDZrHZykjInLqFsU2Hm'; + 'C0y+ZVzsiSASF6H+ibe90QRsOQEOqhtCwewqNNR5vLxMBq9mxxtuD2bmMbZQiQAJ017QIS94iLH'; b += - '9oofUT6Uxrwqc32lBcVTkThnZWUuPQwhqbYZOCgNQyU3N6WLIrzTO3g7wN0qiXJMw+27cYVeMph'; + 'nfhRsttmOjCPBF+Z1wm0TdRYrtRZKvBFnaEabBGMK3aSAjfQ2XA2V4I/HT4GGntCNeFi+P42gSd'; b += - '+k+SI0++uTL8jWRjR6XdXJm5dmX5HsiKi0+86LZe0nk3reWk9SStsWuGlFZI2ZdOmXBq1UaYked'; + 'dhTgkmquZ9ktDt1eFxuzJexVVtMT4SGi5u3mw4bcfPmx+Wo/bbHQFKJLslvJW5b1qbyKEUdcdVq'; b += - 'omT3vJqbx8I1n00Ol3nZzJ2ziSBQ+dftfJqh0n8qJ2+l0n5/K+jmShQ6ffdTLV6eCrh9XCb+csf'; + 'uzd60mdjGU7fgx1aQkkkMFa6A9+pYjrZ0Yi+i6bD27g5QGMd6VDqmjS+hoNeP+S08OMbETESxu4'; b += - 'L3ptzf57txw8t2pJ9/+5Hrn2OS6HJtcz9ppclpPvlNvGs2uY917XsUjbzqPT1DXTr6jevKduMl3'; + 'iq3Vo9ug37dSgrdFsZSyJ+IiGsLyoUh0eM0uZYMrxZopU0zkWrvXHi/EC7BfZwqTKmC+LmRlniN'; b += - 'VE++I3/y3f3DJGpBYwhYBbgt4WcjQQ2yHjE92ET0A5yX8EMsRAH/JfxsJp4CLkz42ULgBbyY8LO'; + 'sf7og94CLxvMw7b/e1UlB/aiUbtNVTm/QjHeT+XCORqupDabKo2q4ixH0GEPen97euzE7tb117n'; b += - 'VCI3BBg6+wbQP5Dgx3GblaURrcvu5oZIgbICLixUTqvMk3oreNEdMQp3EreUGK0BUZ84bC3cYP9'; + 'tzfujI70TxeALXlpAsOeeiBF5AzQwIuyhaYRZm8QSy8ZI7twmeDWsIunbVVkyO90HvMI5IltlgD'; b += - 'TdKbeUhRUtqjP3Gkt4GE2UqCk3l5NW6KjOXDQW8zC2ChKsubWmvpd5qrGsh5E2RWa2TWXfCirVm'; + 'q99BBG0d2HYO0uPw9UwPhI0MOPQYU/blUo4wZW8zBR1tj7TzlBcvwiYe7+mlMkU9iA7xorXe/a6'; b += - 'acbC3xYNJom5drGUmWXugI5906Z9Rf8PIRH95wKQkblRqfbY2aikPMpO3bd0UxYzzkhH1FxnDjn'; + 'uJCcpToJ4Xn4OUppIXowypL4r/Ek3eRGpdXH+xVh+LsLFSHBQViXux3tbgh95vJB+Zt4O0P48qo'; b += - 'hHxE63HynBPyEUXI4pwT8hHdyA3nnJCPqEtuO+eEfILuM25br3TE0mYuUvx5YvUR+XjJhkUuOsE'; + '8tn8t9Lj6X+JTW8Xl9HJ/X9F43U2qV0vcFSPpmZoJdiksi1XsXOXfJdxIT650IpaVPePqVnfb0M'; b += - '2HmCpeUSRIg40Z/NW8bev4DTsQj79Bd2bEIVjGsZwkTTm5gVVzqO/KeaJxWvmOyxl0TMcJjzVFG'; + '1uPdENsIciAU+rjF2LzG8CTIhFW9ez8AQBBLgS+dlUTpy2KkPlclqPHArPCqUhyRQaE9bw0Hqvp'; b += - 'UTaFZUf4V0ZcrM3m7jLAgSwvYDeOpT9dWgxUtPbLx+9Szumg74Hk7A8YRdlEREg+FPHKOnaf7G5'; + 'UPSVgLv7ktYNgyp45w56r8DP9fi5Dj/X4udq/FyJn8vwQ+6Zi/GzDj+r8TNEV1n8DOJnAD8x6Wf'; b += - 'ADABFU9ksUdHESCs5J/2s3hMZUIuRdQ7RJipEFg/QhMX1TPfIEC6Y/9lgqkV+d/00TMVa+9aBXT'; + 'w00u2GnLIKEQwrOK4LcJNkU2z/6PfGDxKXdqkjpj+W89ii7NYdxYra0yGou7HDDXiblkwXpeuqs'; b += - 'g0pAfgNZEOI2uGxAJOLUrL1/RzBb/dEXdDPCtPqxSyb8yot2LwJxxY+nMGrfUh/LHPi30mGgLMA'; + '+TFYp8P30zZXg4My/dNoblStyT9o5tVfABpMoqKDshA8ieA1gfTru506XstJQxWu+hH770jHmpP'; b += - '0EljaJzPZJQgU6mBMIenpkHgOZPkZ3iEtwG5ic4UE/XnTcu4i3sGWU6ykuplz0CTGxw4u6lILRA'; + '5rMS7eDviT6v2Ecu0rd9bek8dimdHzHJnqRdatTI2ghh4yJGhMqCsa/G6RsURYDJgBaUX56oh/4'; b += - '1Dcar4T0mUyag100xqa4z/03FLf9ucN6YcFX+cmj5Pis+2gNNJsGiJPTx8ZMUPRVgyStmzVuK72'; + 'CKvyha8QdJqIZ14cbuDOr4E8r0YfVxsCNdDF/kZFCqIopPC7HNg+sMFlmVvVT4HMtB5TAHgoYzi'; b += - 'MpTu2MqN8+NHDFeLlDXYVr8pcxIMSLfFvQGLXWCxbrqSGb5Zq6bysoJkBgVfEU+RK2IkkrbAQzV'; + '6WQ/L6YNYW0qZOIRxc0UuirQMriejeKFxgYpQ24XZchDViXTnNtL18EJusy9Ud05d+3lxFB306P'; b += - 'kxybaZl0yQMcLhSfjIU+cLwJ6X+pJkyPNWFamjB7gyYkol/NVuw/YtpwNanbULg2TDXb0F23LBL'; + 'zFNWvAgRZEfyjTJRegeyj+qqX2UixIM4VBScemGUzUxZTUAbakupiP3dGqi/lsm0T+yeYxRxHkV'; b += - 'm76ZYeURX/dvEe1cbhu9qvicupfV/lcrvlwVEhOvP1s4gWmyMYqWPbVKoSSGTFPADOzmSl8L+I8'; + 'TfTxbjZlo9r9FbWA4o7Lo/JKa6CpaALzL0hH2C3Jr1ZSpZUygd8Tgj7LPqCswkKnBLw2LBHEAEK'; b += - 'Q8oGfPm9ES1MHqsYt8Up/6nD6pX0vCjvrzCHPPTgfGiu8IjAEjDuvJnjjHBAdNisXk5k9hVyBop'; + 'rVWCLZPaIjwrQsN00QoNkx6EBtXVltLxkC9gkg9y0IvuNULDeGiEhomwKTTsCTPXlExokOKs0HC'; b += - '8iLc0oERklogVeH8BvwDRIfqx6CVxe5tRVEo8AgwYeUst5D6M9OXepJlPieuKBA8m8w7+SYe+kD'; + '8OKvQcKwo5ybCMwgN4yEsj8pWaJBbWKHBmG50wSeWQsOx4kyhQerfJjQ8lhMapitNoWE6JzSMF3'; b += - 'fQ2HtWOhjK56ZcjkS48Nu9X9oyo9Lka1VMy7ftC4fuBfn3c6KTtww5mVl9YcsAPmTHNzD5QfQ9+'; + 'NCwxoKDWsoNKyh0LCGQsMaCg1rKDRAJ7mGQoPGBrPYiix2XhY7P4utzGKrstgLstgFWWwoi70wi'; b += - 'kZtDJGhYbm+tcKnAO9OwVWaSJCKmKj4HKpYeb/tcBSEJNkHyOGRZpqMbNTST2esFVC76IXYm9Zo'; + 'y3MYpUsFmWx7iw2L4v1ZLH5WayaxcpZrJDFwiwWZDE/i6nQwPivhIam0ABzKBUavm2FhvfNLjSM'; b += - 'mBlpjVJWZaYoAS210pahaTZ9zAnDAsc5b58NT9a85G50a2V8Xzayhb5Pz2yGLVIaEsiZXAAwamK'; + 'nlVokFXrUwsNtL2aITSYsfEcCA2faQoNH20KDeZ+M4SGP0cr3IXnO1XICw0nC3mh4URhptAwXTB'; b += - 'QnLWjPEtekeqetGLiRLu+iDUwbdi0nNWqK0UVTnKb4/VDEhZTERtq16U55rk2MiRrI2uTbSrk2u'; + 'CAxRXvG2L0PD5MwgNRyqZ0DDFBWvFrPErM4SG45W675MUZ3ahYapshIZjFc0e/ZadGozQkLXywX'; b += - 'S9nRVXhBKvxRdN1O/OvSDV/0bTIpzJKm5OKn1bLLnkfLZJEgnMR6e1tfLonOF4fq6iarrEeVYiW'; + 'JDHzETESaZcjKXcoApJwotQsN0Ya2/r0yh4ZgtTKo8i9DwSCX2VWiQ80rDwkqRh4WVzAsNxysQG'; b += - 'pvbvME2LeNFb46pPK2GTq1i3+GVZ2QJcUKXfLWRt4wgbO2MBjNnDaBk7ZwJINqLddbL3tYuttF1'; + 'qTbHK88ldBw/wOtQsPRB1qFhsMPtH4eH3ygVWiQtfhTCA3TlUxoGA8zoUFmbd3/gtCwK6TQMFls'; b += - 'tvu9gyIcaWCTG2TIixZUKMLRNibJkQY8uEGFsmxNgyIcaWCTG2TIgxmBBvqE9RO99tOw7iXvKI4'; + 'EOPAyAhTngoN+2zCKQoVJ8pNEeEkU6ZzKSeYcrzcIjQcK0uPCig06D0pNBz1VGg47KnQMOXlhAY'; b += - 'Hk9VpULi3YtUQhBPpcIMBEjSfy58CmSYVTjX91QSsaGUtrUaJK7tTbSDqVx0abGUIqFq55DKfWv'; + 'RPlqFhinvbELDUa9VaDhZzgkNTwZWaJj0VGg46HENsBuf1/RBL9sKLKUPF5F0OmgRGv4zuMj5Yl'; b += - '+1aGUuqGUqp50psMpdRWxg6l1AylRAmvPhlKEB8wHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUq'; + 'GFhqNFFRomQv3Kjof6ma3PV7EgGnB0gVWKIxUaojjKhIYycEvkfFWhX+Fz4I4mPQPApNfPZRh9K'; b += - 'JHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUqJHUrJf/ZQSnQo/UISJb'; + 'zDuahXDYAvBoBvCQ5DDXJbVF3SLTfFh3oAj46kS94g8ohSFspCITFg1YcmEgYYEdtV1vjQIFrsJ'; b += - 'UTlbyWxImKrAOE7BBduMH87K39YXBQbOASJyij1zpVweK/sVMV7C7MP9SpKlKg10NCArtXz+XIO'; + 'NoqxWKYowrUkwIDlZt/EzZaYJf08WWYPNbigr2JBX8kv6OfJDczCvNJc0CO1uaCvtC/ocdrNnW4'; b += - 'fu071QVwWUnGneqitariHfqG3sh+ZXpiliftG8fLOHb4gfUqYoMCtZpeyRKf647lkO/c8QhaV4g'; + 'u6CtY0Ffsgr6KBX1VF/SoRnQd1+qmGlIfVKOq1fBmVKPK1NmrUdVqeGeohtx/VO8vN2OlpK1exW'; b += - 'cpLIk4oenxCGUG9tN12vwjGxbj7wF6IRm+GXPEgazYaPU6Pd5ol9a41mnS5Ezu0qEKt4uRavDsD'; + 'r0cLJIzyhdzFNhIiB8tBEvuOSX1wq75OjWQGJRFpMe3g35otvIF91qVdNNLyZFv44DlS84ZnyZm'; b += - 'EwwqJy9MvJU0nf26JfELc/PuhcxvGLpJjEqvcJNKGei5UuNCUC0270KwLlXZNtWrjQyIbhLJVs4'; + 'z8eNHGbPZUvug2XrydJPQASVPmAAkS1Qc8QShh+DZJPiAEPCcMnNPtRr8FScQg5BkTORsIglsj8'; b += - '4ffUY/+pZsLeIZyNSPvgU/evrXA5GTHwJxWKp+9Bn96IldJy8nEgcp/eizmQHs4YYffXoDP/rs/'; + 'ODISxnzUN2qRMOarhDFf56KIa+bIShjHOIfPz0sYWITKtFlsShhTxVYJ46DXImFMembkPVMJQ4b'; b += - '5t+9Jn1o0+bfvSbfQf4//n/vRt95JXiF/n50PnU/0ES7rSr/CE5W5SHJ6l5eNKahyereXhaNQ9P'; + 'c05IwdoVrWNs5SBjynHOVMCa9mRLGdJFwDDUjJHba7bZOs93WabbbOhXIl9ttndl2W6fZbus022'; b += - 'XvPwtGsenk7Nw9OteXh6NQ9Pv+bhmRACnsnSkpi6rY6mTE08JlsTjsnWgP3iVKhoTKHIqUWIakb'; + '2fNHa+GYedp7bGqIDS5jrqDu7L3KH2xTQSrUqw9zE1SvTTcwyaEKE+YBvvK6RQCSAuakS6soFcj'; b += - 'PG8WHlMoJZfNkXra0vZyooiBFBpFgP4EVIbQTK39z0d7BRvw8OKB0+b7BFEGqg81EjQy2EAQ52E'; + 'pbjaTmelnPiO7ac87Qch1e3Fjdoi7NIQ5XPmqpDj2LwdtQ92SDisBR6J/QqMonCCqZ7p2QheLNP'; b += - 'rkyGAaPw8NthE9MuAO8onBDBEkQku0FA5uIYxkcCu93sPBDmJJBpwonA4HAwJKBkN6t4eDbyGqZ'; + 'adyJ3hoo53fEbTm5o5F0aNjeCyPJSLFEFGMlbVrOl9bSorDaMDam9CzgOwEO/KTcJV2rHh8nED9'; b += - 'LBTQCU7wehTRuazvaHcaP5uKqfM383lFvN3azlt/m4rt5u/M+Ws+XtLeav5u6Mszd9BOTR/v6Xc'; + '8yBigp0Ea0QT2PjxA07Gx3YISHGTWWlLNKeW15IwpQ2MpGRiHRfozwM7WmGzQZLLde7HNYHIuHo'; b += - 'eXRxGKgU4dEFLvVna8l8/I9dnXsRnDyPJ9EGuGIqhG52ICDJgYAkB1ybKAZcy8AMH1voA6Iqk0F'; + 'zWVPILxsJ1KNfc/eoi4Uae9fKIQEvhqKuE0frFmndQgwHdZkZTJ270VT92c/gj36FNe6woNUCEy'; b += - 'bMHdWdjQ8Zh5RXT3dfA4yaQGXnUOs7e44vjicWJF1083+guWkLNPlyNZmtvaKrJg2shWyvNdCtp'; + 'ZDlvUxelko2wb4IKEk7w0celPb9o7rffEd+E9+rwoxqv8HO8155mJuA9ARet9Puzu1wt1jhDyYB'; b += - 'zZ8hVZK21k2yDLghmytZittSKrpI1sG2U5MUW2jNmylfH1UZNtkyxDdpEtZbZ0RVZGG9mmZPmyg'; + 'bjt4y844uGWtP4gWAi4NU+Nb4lDTY03v1fTeLL1X0yNNj7L0SNNLml7K0smzjDMOfGYkkPuG4Bi'; b += - '2xdZgsBbTtehiuyKOrlrhdFdUXUdMe5hUWsrsqaaIqbOGViunZRNEPMpgXi7WRVtIWYjSYms8ui'; + 'o7HabTPV+xurmq2V0G/G88tAFc2OCV663PLV7CzG8nyeGl+7HL0XlzXOozdqfV2XeH7gdTVYSSy'; b += - 'OWI2mJiWXRdtI6YwMRaUVU4gZtLEtO3KaA8xfRMjehM14O0PEofG0I+V8JrCHScUfYOevmqgn+l'; + 'ni4YMoo8wx2GqAQStQ8aZgO3EFO8RS8VcmLh3xQcHMNdKkgrnDQWOV8yrQhq1yfj+pblRsnjXeK'; b += - 'gFmnNm61qfbnSbOtKYqL+GnJFY2WVeBlhMHWEBjBfMN/1DvjxsBajL8fifDiI6LhEdzxupBLtYb'; + '4GnLx9Q0FYSl+o/FUFG75aEsnz/gW8QeZ10oKGsbkoOB9IGYjsmtL875ibYBk4hD5SuMVBBUy54'; b += - 'EeZt7YkiXFsprnm27evYTxI9Rr/FaVUJbG1PmeGVgEXRCA0j2n9yCmAZbTrokFgamN6wntKRsna'; + 'NJn/CKMB4QiKSlsdb6gZXHcYwykMEPkgQOhAnIEmt4mrjkZf92K9RGr2YTLCynMNO1NubKoJmmi'; b += - 'wjRyGQzn9UaS5EKlkIgKilwFMF2AilSAim63HnvwSJT/vsY/ioxVxHRx+ZJu0elpU3QjBN4m7NG'; + 'cgX/N/bDgdKIPeyaDORU0vZEUhzmIbiS7g/qaGgiCUD1qJ3MJdLk90ExA797nrlWoyUlCTZbj6k'; b += - 'oAHlCl8QBpEgd0LVAMaGbkQ8BELUIA1xCQucCRU4Q9MJd/kg3Yf4HBdmNg+AhCoemL6WrxBCBHZ'; + 'b4ysXyN/nHhloFsx3eTl0tOjcqImPcYRfc7HSvpHH7K42+1DxznE7ZQgyPS+WNpr+edJtgR7ICc'; b += - 'EcCPEJ8mYXNttyWMns9gyPgRuQPPMm/uAB2I3ifDMzSE9TCEywT+fRKnYz5cC61hT8DuAZQSi4r'; + 'Dfh+a2PFZ1XPNKJ4Gn3nZYzX/NowXAtmmGTmtbl8x/AJ+KEQx/ldNJc4ClK/LVoTruO84D6KxV5'; b += - 'Hk9esp16m4/qUaHyTPCkZ2zV3G7F5hjZ62DgOU6ij2xPNl65wwbL7zULL/gOxaSx/t5hY5vBiK3'; + 'B9kCyTroW0NueL/Q7F3uSoJ0z5KkwzpN+jo1wSaHp2fUcoFu06P8UF1TD9Id6vOxsU9Xe80ciVd'; b += - '20RxsZAKLx/MANbJwAsoi3eRqEtWoNtWOQnZHFovy1bGV6xMlKmxUUm9mRJKx/Q7eQHV80n1vxh'; + 'XgEx1UzBzfklZzytvA4aZazDMrLe2uuVQ84+xtJ3wFTJSAvZCgIOFxLlI/Q1Kby8fRDIISwwAka'; b += - 'ouAAZOGLyyTFs7As99Wr9HsHXJK8XcqYh/YGZ4nZnVi5uHORIBroUoSWCQEaFaz3fXJXaefbXk2'; + 'FGE09FCOOkJ7ElLDl6udQHP0EcrlXHD4UJlBtUJpp4BnBm2YEBi0EvXWKJqVz0Ja6hS3CrVFYEO'; b += - '9CryFPo1v0qfv7gdv0KeUvJI+NfdV+pTVbbNrH5Y+bXN+07IW9rr9eokwh79vY+bZHzK37KUf+r'; + 'RFicaDycPQWorHIOaLSO4TIyxNzGszCcusl6vNfzfxQ3oya6OsKFdRMDU3k5lfVVImOb1scKmBo'; b += - 'sbM3UF/qsdM09jG3lszOQjHSrDluv2WLodK0I6njLX69wzWa/XE+n1VHo9ll7PhRakzO+EHXbnI'; + 'KFOKAY5rrJS2WX8lDDJ9BXFkHgmusHl85vnsjpfWFBEs1r72U1891+XFG/ASKQ3v6bXqntZkfyX'; b += - 'lY/XUe3RUwG+kLDzn190KN33iNvTvZ59gZ93r5xn6fr93n7nEAvtM/b7PPY7/MYXU2nbDugpWpl'; + 'kP4c60Rc+f887yleRa/6kc2MS0AfEwHqlfy3nNqZggpc7POEZr7Ea8Uly7jeZY6SaohlXKXCrWs'; b += - '+wT0mDmO6XRm6mn6vIueP2E+1uzvuNHfUn9y9b6Fmoc3qbk8gTequWjQs+Y6WjryIHbZgIel5l1'; + 'YWHT2LgLVmYJRH1O8PQQk+XTLQSRtBkhVA2tHdLXUMp084ctp5eVwYcX4rLlzbR7C4dP41sKnHh'; b += - 'T8w5rztGybu3/fr5hln7EDLblH/m7e8PUFfiv9g1zWt0wr2TCMY1nPypugw1tl5pgIpJkXfd37C'; + 'BZeTPszt6FYOvOvUMc2ObFfEVFlfh95yRuklOLELt6G77Qgh/UC3mk6X/7ufNSOfykivdceSfft'; b += - '6N3Z0hJJVL3TXJetokWY9Asq7LTsp6II6E/YgTr+hvc9UowqpRZFeNuJDn+FTjmk81rvlU45pPN'; + 'UUeI+emDSLxVEm1DusbFR9dbLj1M0ELwIMu1ULao9I3zHbdrBjPIReNxakjurWOQ8TNln9ptere'; b += - 'a75VOOaTzVey6car8OnGq/Dpxqvw6car+VTjcf5VEX4IS5+IXabJ9dDlbPAAqmKOIuYLmnJMGmw'; + '6GWrDrdNJgyNjiF6DxnUPRV+cOPDJ4zp2pSat4+op/YajyydPGVdOHNZ1s2eWt9anT1fNBlvyDi'; b += - '6rpyMl3J/0d0fmyMboAV9EZYvLxA5cMGFW1g5TqpxuVF5utFUppzHSbbes1O3nrfCuOfK3hXMrG'; + 'xyH/atX9+tZxr8LePeaxn3TjbuOcQtr6wd9/TOCrJxH9hx75px73Lwt4573KDyTtdCycU5VEG/F'; b += - 'pX/PxAbIkPTdS93lCW+jrJbCWWDAsg0RcvIjivSP4VogHzItX8M6+eN3Cw3m/7J6niMgtJoQ87M'; + 'VVQXROTIIcqGPEpo4YuP/sNqqCrqIIlw53qZov4KAnRY307AWJQrtV1bRP4z8+9sbeahS4ECwer'; b += - 'FdJulbR8VfRqC/mDKTWimyGCgN9/So+Az3o6dl3aDgNndMp59C1hPghRoK20QOfBh3NOfIvxEJ0'; + 'HYhpWBEffe+Uk62fZQ2osgUIvxNFMkkf3U3ZgmTrbw2kmz2xm2IAWYvufYvEJ96aoVXg4+k0JQ7'; b += - '8Mc4B0Y9jdGdoSK7AgF2dEq/s9U2o+m24b3Q9mN3wVQZ2w74Y5gn0WXYPla0CXPfF7RJRa18tTn'; + '5U4mDuaONMDR0zKyUW3gbZl+VWsCSotO+cQ1e4QWEXbRLbCywrbTiWJjM3lmvilLXuDxncEq+Qi'; b += - 'LWolxqW+dU0X8sF4k6W//HmHXTE9LeAiAXCY/sdElLNZznZTbIna3YWpUbGS4EsAYU3T4d+qN6H'; + 'e7ygnPhfO7zafVdB9TTt3LeYHh/XV6jgsv3Ro/bunRvVN675prPoHqP4iRVKl75uVAbvZVp0F6X'; b += - '4voh73mVbFCGJIMI01d5AvixwAjdYX/08jIygenEciWOGkenFt9LTqBqABN2f1m3aa26b1ty1X0'; + 'U/Hl9ccX7kvmqIAudFNtlP9jFXb+96fQ9VutQto31Anydkp6F88ZZ01jLqeQebLUpaoe7dI+FNy'; b += - 'nlwzW3Jy4kNL8nVgRR1RNIR0JCOFko9eAcwBqVNk8q/mchxDhTP1MqhPBcdy9Gxc9waBGEIktUi'; + 'f/r0+zRlwZqFzLPNFQesTB1d4NlEyZNdiHU3/Z7/NvCCHcU2Ri5YngIJRXUpRLwKFSvFppSwmWK'; b += - 'awaZwqFMHP9u8kdkTZjiZ3gI3CfULXvF4L2fXK0V6pzu1xw3kR+GwdqdfZfrhI8zJH7Lsl8Nz4w'; + 'meaZw6teYfyH6kfxsT4qXeCYlQEoQF0fiiRF35zaeCvRUCadKradKeqqKU9XcqfIlUBLgVIRTUV'; b += - 'AAjHICE5LB3xCiu2cwBfDTaKMIueg14wF7f9zItGHL7fFuQ6+EtzkxIOLjxOV4QryWIRkuhklTI'; + 'zOTnVcotqBC+GpjZ+O7FTlEvqxyqlenOqNK9mp6iXwdMWpfpzqj6vZqdol5Jjj49QMG2kpPfn6Q'; b += - '3vFuqAJ4ccs3P5DPdAdAUWKohjkhWXcbATABzFD+YkT+lvAHgiWz3zIMavJLK75dj6fW/SuWXx9'; + '46k7NzW8nCo4ba4lD6RP5s9nz17Kn8Wj1g2xJxZjifzOfCkHe05xm/O5cADV9pz7MrnwHNX23NM'; b += - 'R6KpPJbnVmVUf9VfM5eg4H135Vh/2/1sFyIbMMhHSbL34XS0kvxZbOTpQysSvJKJNQ/MeQiwgSV'; + '5HPg8XEiruHUbnsKD09MHLsHxBkqzA5kHBTsQbYz5GdfuWDHs9mlvOiB4GeuzU43WzvZbxyp8rJ'; b += - '1wGa970iFsH3EcozqbiAkFF7/nRbQG/D4mKiybA/9io62TFg6lvo4z1G0zviT9QPfdTpqK/nw5a'; + 'PV3oAiKhfMWOafswiKcoEGPrUx6TEqm4QRTjt2JAU+ojKKCtJ1xprEBY8rLphc+yHquDiiK9U/j'; b += - '1aqG6FsXQ6BpPPdL2Mu9FtkK/isgpkO1ThJuLmmevV6WBCQCrOP1aOQyG+P7WkQeAdsLaOQPiiD'; + 'DDsMrwVjHsf4C1kWOoQbkwq1NG0I0kmSJ2iEAt93em5Osjx6ed3+hjZHzH1X2bpmS9ooMZdyGpl'; b += - 'G/iN+vr2a7aqfLcEwfBpWoxl5580vcH7Mdr2Rra6uI+1Dvb6BpKek96ORxwep6b/X4t4MQTRCKY'; + 'ZzbVHdypHyVccPDmK3f8DLMuo2vwcbxAnLrOScPk+ey36d7Pik/pWiEMMJM2SGH13NeOvYmOczS'; b += - 'gSliLNt1cvUd1el6k30ubBg/ESbsMXsW+O16HmxcN2Fjf/yUxgGG4X5XzGZsTLSMV92R2dyfihR'; + 'XmYA6Ob+1rws5qbHviffxcO+6nKO6wGnLQqy0y0J8qE90UzI4E6Gndh+wicsIJXVDVIyJsB0C7W'; b += - 'ZUeQ+MukA/jGrZk+flbTi0jhrF+nn301+wuYFhd4G5jPipOx7VuBV67t8UXQtmuDOVNC2nVM6Gc'; + 'spzIzsO5a0n32wFfQ2Hynq4vyNlJaXEeGvhlktbKWHNNZW2pyc9Mv3GjNVjkxgDqJ07lBfeez5r'; b += - 'hl58MvQJJyDFq64yN2KbMCco3cTZsKabWA4t3wRia8KJ5VAZJ5bD9Sgn0AHnUYPTpBRZDhvUE2f'; + 'GAVLm2y42YJqCVReMwxIWebiyBiyT98h9P6atNJ99psBb3e9kSdAYEoqpboYYdyPSyF2e6Wo+km'; b += - 'DPfFS6jUPHBUMLqWj4iuhBCS9WKVbz1IK/yqkXCd9y2Op4JtsmdGpdJjuia8lek1LQKUXOpPa0v'; + '+mDD005ig9AJAmfKlirpI0I145YFWASbUunM62UmlpYXxXV/+or9USEXYDZlkVWEQsvcAWYxGtx'; b += - '+PWDgXzqYAUWXb1eYNJZPjqIgtR8XZj6G7YOxffBzM6+uwVcRcPhTP1LRbs1CAMgPhJx51H0/ut'; + 'jCIWX3t+s3WBpopYQvIbTaxzFk2s6bmVcdI30ktZfcXgnCGyX5/xGcP0QHEwaFpx6arJQH0X0vJ'; b += - 'phX8pm0zmYuK2QVT9l8N6CniKtnHrUEFqiW/LnscrBVXW0IOTKuJBpYJpPqsvrdlEeGwTgcs7p+'; + 'oUkwXXSViRHFLetv4eDB2+aaa9h81GC0Z3kxy5yj8o3JsgBymsr259FSXcLafq+0HTytUDO23b/'; b += - 'lV9P2IcIViex9PyaRNKhkQdmYLwe4b6zRtEa2F4oJ2thmsKFWwikArQ45GbancNwhqBTAddNj8B'; + 'qQWWl60nRSm4OSII/J8XMS8aPfssQDSgvYbFI6FHGl6epK0zUrzckm6ocaLHIBGOgOMp3CqbqYG'; b += - 'klpD4xXw0hVYtXAAzmxmpIrQ79n1P9pvPexUexcIxBaxwn7m520/tlwPmcCKymAf7eCNGd/WFco'; + 'pfiF6eTEkSPqNilqgfv1UTeh7IFqgyop0dTb2vd14XRgPaH/mbHzt6X7dget44wJGws4AvuiemM'; b += - 'r8nWrDJrLcbtJa+I7exJJI4VglloTrgJPaAfz2RMWn0y5n4IQrXvi154OqEK3rVz8DL8kXVPvY3'; + 'hP8b+9AkBlBvQnXoFIgPyc1Ou2NpQYW+b9nDjewv2OHgccdGqJoyqFCkWZAAsAkbuMl07eiwE8x'; b += - 'MYXVk3EvzNxz8P7MKdhM+tQ0maOgwyijh3uoZfQ+d96Xt2GSPFrXg3fL+K7pquwh5LCj/LUZym4'; + 'I/aozS7K8yqDy/2Xg/zrGHMNXy3FjRlwaE/lzlOMuJVxdTwKMBSlux+axdPnWy0fXKHNoP0/ip7'; b += - 'zGteQPip39ZrNsqXwqfrwl/8bVu4OfEyzlnK3kSdTn1hvE6fSG92qede9C51/UW91OvunYhd48Q'; + 'eeX3pGgCTkuN9Ccs443Lqp8nrqLdi4A/po/fk2hNuMP2s72/eQBFmKmYKy0eca41D0SAikjiLPj'; b += - 'fpDVW2Bh8sewyO3Artp4/TttpJxYhjGEgxmjCGYXgeJnpdyKk7pJMc5wTWfDoKQsebV4zsbPgKj'; + 'KbB1oTnr5L3MYih4+bJbWNXeTwMbIVPRAvUDNy2dqoJMdXc5SpdLGsdpo/sf0i5cNP3kj4ilJhO'; b += - 'ETkeJT2TDDH2xZVatwnlV7LxEn1sPG3lsy77e7sacJqyrFtw1bNZf5BYJD4i6+plO8ph8LJd9p/'; + 'NiH1jZhsQioaISWHulEKiojfs1KSUmmk8QbVNkASMlYYOb2hKuRzMIBxE1c1as7CTRjByOKsfqB'; b += - 'T0VyglLMB+fMO90dY/9AQJNvn1UfZueKzZlHKxrG6ZiZVgAsymr+BBbPM3NoTiiA31qO+VL7JRE'; + 'FzGjqEzyrT4BjcXOTHAKpTG9P8CWWss2LbE3AdQXAKD21FtU1gZFTmwDsHEyVxFPIy9l0OF5u9X'; b += - 'OsW8D4HlFw66Zt/2JEcu+zeMmoWjGA2csbzCjQYTRwy6yBh01Tc+R4T9E7anpT8AOoc7quUZjPR'; + 'GTq5t3lFBWOUrqkTpXdGG6cg2nLsVkxdgxGC6A0Xmzat9bYHQSab0A21qa5dZZcHhU4+gin1vZ2'; b += - '5iuR5kjw/k+r8McEQfz9muri0AyInYDTiPl4OESk56a9SDXyZnsByu9SADcpIlYvk8RensJ9KZH'; + 'rL0MSKrTKY6wzsZY4NyuetDlnQfLXrIw6qrpFk9LsHKwzO4fwyZg+H+MZqr38nfdnZFDz+Mrr4P'; b += - 'Vk3qpaYOObm+HcIOemOTfSubfO7XbuwHNTnvv0buN+XkhfyAxDBplQgbizwlxDhhtLO9UTZh2iS'; + 'qxRrU/nMqhT7D98rZXoTdHB+Dgrsh6q7L9FtTbF0vZbFJ7Fd/GjcpzSpm+VNMDmRRgm7FFg8Znn'; b += - '8Mbq8IdVNe3SAcGO2nRO4j8g9g/SPyD1D/I/IOWPVDgkBIxwbkbczTe99C51BYPVAAsWInvRDbq'; + 'gAHhyjlWhJhleptG4+NS4yI+qYktL2DmgZvHx40UvB0DyffhmuvmqFI2SrgNKZ7MqBtK/z8WfDB'; b += - '0urEgq4TxceO02OCSY+sTQo16eERJRFVAohJ+OBBFrzE7i4vI4IG3sUJpWheO7ClBGuuPZ70Zq+'; + 'oRPZzr2UodqoAHosTFWAKbzxfOXNNXL6MA8yks66cw0F1Hv2HXxw6MBAK1ODBaH2VISjvSid1WY'; b += - 'tYk3Fl0JSVZNq/1GFZs7T878GRHLVa0qLKvS3p79rlAmj5qJZXGU1TTYoUe2y2d/JPTePC/ZB0f'; + 'SdHV2R3ynR+pogOqPk6qObrkL9Tb7aKPQ+wUVScV+qO2t3AZt9pwgArE46I/iTBwR3qjhLTGzxp'; b += - 'Hp2o7XXk+l1xPbf0nd66n0+nhSqEk37fV0nXFW3+6/xQuHDa/xYoCVVx9ZWS2dXOzKa3legU5QB'; + 'A1HEFX1BmuzjQZ0QNyC5AUtGxUJHxU7l82W3usPsFJW0Q5OtHKZ3xqTGMyY1nv0SGpMaow9XlaF'; b += - 'jTTwS/kgPoJC0nxk3lfJqcU+QyK11tcbga1AFHPxSUQdb4oltJd4lYAopHKWJJR9QKMrVAX2czb'; + 'vTGp8smYlQWZSgy+Ab74AWNEak1cY1CbAAzVET0VLc2Qnj1SEw3c3+3JADTGTuKopEoY1PWzwuY'; b += - '86WMXGdmtlKMBoGFwr2bU+XPR6I1KHCGhN9UAhuwcpbCvunJazPHDX3GGDf8g2/aI2j58Q8uiEF'; + 'Jmf6bdWVLVRZQ1zYvUZNJrYo0WKS3gU45WTMqjUpZ0DK1EB2iI0P0reeSmclzmthgU5imvC4B/t'; b += - 'X/GHLiveYC9IDrLokFSQBqumvur4M0tBmZfmH43s0tPUufqxlLKBLLt9F5Lu4Nh+pXFFvr3SWyb'; + 'CUpc1FdNtBNAaGb9nk31iU9veutf+VDXV2vASFJlYgK3wQMuRsJ6GRgI9qQnGpywxYkp8KsSE6h'; b += - 'NetKFJVPGpHOoSosFouyDSLohcF0QWzMFa2y6IbtoFUum1NRGqW9wC2+sm4+ciRsTHQTdzrHrOF'; + 'amZDMPZYJKdCJa5ocoXJBskJ1Eol/FSjPxVhXId/+jlHydMdbQlWi2TrIroFAWjMpScFhHhk20E'; b += - 'Ih6nbRFw9mlBEp6QWBK7tr4TopOa5eQClpCUak0C6H8oLLdryRhy7xnhkIGuVTwz6EZEDiR1YmA'; + 'bg1uHzaQl8jDSMpWKpduinZVaVRcNiXpRqYRossLNyX1eJjeoA1PiqYIHMoc1GoIwFr3EIEd61E'; b += - 'ir/vfuXCceF1D0SKiQoF2axwXcmEIFcZxXzGuShyOVSmAFyEE/RPrGxQsjhMGCRJ0YiE5PIwwZC'; + '3hyzNFTi49M11oxsfL+Vzq7qxn4OScXdGVu2JeyxU9uSsW5q7ozV3R14zD2TjLvzyXv57LP5DL/'; b += - '6MDwrIbJBiXcIOlSWcdGniS6z7pIQ2aAYIhsUQ2SDYohsUAyRDYohskExRDYohsgGxRDZoBgiGx'; + '/xc/sHszun0eWZrNHsuNrOMo+kfOmYgSSxf1fEfO7ly/y13MPXvuYPp/8gdjP80fw34ebNrbs4d'; b += - 'RDZINiSNigyrymvVCf+VQx9S1jHs4AI6s8DeaV9ok0DE/+vaPMov6QihF8kw0/8YS7IdR/Rp4bq'; + 'TO/KHYy/MXew7035a96cv+Yt+Wv25K95R/6a2/PXvDM7oI5vwKxISk2rfHrRO5mC11Fp0Bmhzhd'; b += - 'DVQCUkMxWhGHnvw51IFScvS6FdMNBWQ5Do2GutbVD+SOtjoV000lY+kfjb6uomm6pEyr2r0ayaa'; + 'fyKraEklH/v3WVaqqib0G1ZuYEgx6n0/dP6YE6m2C6F+9ODAQc9EebFv9q2fgsLM6+KYPGx3MJ1'; b += - 'ikfSLhu9ZGYsVDuSNtvoUyaaSkfSHzb6tImGypF0lY19zMRS4Ui6kdHdr8aydAERRqEMafuUIW2'; + 'oxvFtkCey9G1Q3AAEaXCj9Drw60Z2x8MYrGhCv9tw6BWHj1JumVNiYRcLwMwmjXx++xy7ick2kq'; b += - 'lDGkPQQlHqewGZUgOypBcKENyUobkpAxpC2XINClDlmKPMqQFIhJShrS+SZQh4AoZtEzFcnDada'; + '+FSJlE4rRJFr5Uo9l7iXbyjRuf3YDTp55Q7Zewe/OhN9NzyjCY+JfGGk9SmEmLhy6PU0ilnjNPP'; b += - '1nWovGnzCvZ5Izc/ulmdsvzdx+aeb2SzO3X5q5/dLMTcozt1/awn5pS3fsIKOuLB35eiwdrTUsH'; + 'pWPkdQvspyJMKSPKZyUwoW9Cz4Quw6J+JIpSRIjO/U32bQiUFF/kUyHz6egY7ucuUXg+R4NAg5I'; b += - 'aCOz4t/1GDpuLVsO5aO0+6N07acbjm2rMHS0cIV22TpMEV4p3dUZvDpJMytD1RKFDnckGLlDDZm'; + 'GVQ0ig+CnQa8G/RrEGgxoMKjBSg2GNFitwToNLtZgvQaXaXClBldrcK0G12lwvQav0OAGDV6pwa'; b += - '6V1qVKlnH10qhPSfqlLc6hSXyHnQcNP7wssqqvRWJyss7rU4bmLFM5/OdsREJ9NaJ62GkoRN2qC'; + 's0uFGD12iwRYPXabBNg3FXw10mnDDhbhPuMeHtJtxrwjtNuM+E95jwgAnvNeGkCe834UETPpgxi'; b += - 'OXo40J+iYQ+piRbVIE9PdaSGJpsUfp4WwPV1FoCIV1EpcWvEp7Nt/CkcNsSoeSjz2hHMvCy77/7'; + '007jXoxXYktSL7RIl8f7EG5LQ4rlC2bFMWvyDeqp8wrbTvr2rNe+9kwpq21354eKN+WdB1Zfabb'; b += - 'D3/lF2HNW5aFd19zk9c85ILXvAY0uJ+5w4L+N77Yt4z0h6xo+oZyHbQoCde1ksk5Ws5T+SFdYZV'; + 'ONm5dBZKwR64knWiksvl5Sw/nFEIqxUDBGZmxQKtlp6dUTH04KzH5iuMigGxVCoWmIp56W4XFcE'; b += - 'h4zUhSvF1sasAIC20EYQwQxWGAFKywJlMSAABNGtrAF2DA2JojESSaOCEowiZIYIoMTv/q+vau6'; + 'SmdyNFLBj+iXccsiJXpHuqAfG2u0xxy6Pgs34vYErpc2b1M7CnCrx+PHsuMrjk9lxxOMnsuMeHp'; b += - 'z5kZWeZH4N4bC+Z0V/+qru6uqr33t78vEyEoo2pSM32MvTEq5L6C/DVuevqxWFqQC7JVWynSGuy'; + '/Kjnt5/GR23M/jcdcexzzelR0P8HgiOx6UY9fEV27eRBMAIsvq4yB5dfMRhrJHgA+mrT6cMm3VB'; b += - 'OBcsei3BUrVhLGlLiRcjcu8BDIOEVqcqU1vc1eqvuWonUeOk1WzVLRIZueOQkzelUHPJV0gsEMK'; + '42pnMYvy6oMP05bXTh22qrC09NWE66ftorwBTXV8+Ac2qyeojqH8imSZUKLfpIuLDNSdfeogP5H'; b += - 'DiwswrsFVm7LCbsdGtKfPG62AUSAZvVjanOg1nfdlyHYjCQNzmPpHL+Cq5z/PUM+D1mmT8XKAn7'; + 'rad3IYq7UAbYdgTX42dC49fhZ5fGr8XPuMavxs82Rq/Ez+sYvQw/Wxhdj5/XMHoxfm5kdB1+XsX'; b += - 'mj5fb3+vlZ/r9Xfa/T3av29UtATPf2P2Jb1k7BwqZwnAKuX9lpFA3Rf7lN12+DipN67HMpjyH5p'; + 'oavy8ktEh/NywPbl0JH7jtmQ9f1P+jvD31/l7GX8v5+8G/l7B3yv5u5G/LzXbOJeMfPgrP8WOyK'; b += - 'ryoyPbSTSF4/LZAhakfTV+PWhpEx3BSaw7jMNyLBOi4IJYg3ovcTM8WK1Dz9vaaTtBOichn2ZOY'; + 'Vma2Rbcukl3kmYKF4iKf/xcGVnvN6ekkzxBDM8YTM8fKtkSGdmOKUZfnr6oz92d8YjMzM8qRnue'; b += - 'z2dbyZ+iQduWMCpoO/bOtMPPUvO0ikT6Os9JUCL1zJBfTbSUU3FlYpytHco5d77b34cMCM8k/gm'; + 'fxzD8jdf31mBtJ8XjKy74Of+2RhZ3zZzAy7NMNnP3j7nVLC5TMzTGiGXe/6xt1SwoaZGXZrhq9+'; b += - 'THQ3OHo/L/YkF5m9tU7njYOzRTyTaZj8Vxs2uYnhtmBKXSc1NNIsz2GsoAaCqyv4T9+CKF7emBw'; + '7SN3BDvjK2Zm2KMZPvHwD45LhitnZrhdM9zxxdNf8HfGG2dm2KsZvn/3rmPSDi81Zy7x7vTMfiV'; b += - 'zWx9QIVstrFIJ0BDxEzEbvw3iX5LyPGQ5HEVDYBiwEnHDbMIRQhxVDDdZ8Ii0+Cf9AVl7RFp7aA'; + 'sT4qtvQ7rCRf9jV4+AeQw2E21ZgKqdRhdQj6ayX0cb1A9TDNqvs2qKh1CD56hynfpZ8zR0JJekD'; b += - 'MpVhI4vc2eunuiYRfBD9K/FW5jlZsjrrWpltmXYVbE5t5SuNErPFvUJTArDOX67Zx0qctOhPQlV'; + '/cvABoOJcUWxJ7dVxg+AoSaKtkP1ivKrQgua3ieqfi+XURz68eKWjmUupH690KdTlPNQLzY1f71'; b += - 'eXBMcZ1QJwTV/q++a5tmuWZ4PpYRkK4lfPcC7a6YQeZkEyfHk1LSrjgjFRnJR1wgxMQmtqgx0TW'; + 'oijsF9htgX1iqSHTGTJAkJVJQsVqmoRibaTXoV1WkxMt2SJYrr1EUgtWa5AarHaGa5OluW8spOw'; b += - 'zmYTzhv9YnvGf0P+AJ+7GQTxWPeKeR56iPeLU8Pj5ibkK74RFjA7SM/REj8oi5/3I84p3mR/eIr'; + 'L6mn7lhS7IuXqT1Z2Hfftrh+n3Z/qUexb5sMBr61/cmydPmW+JL9qbt1k+JAx/F8XKEdXnObd3z'; b += - '6o94p1m8Z+EMsr/IY/4qvojPqvnGmHgEZ9FBlI28yge8dt0sN9jg/v1P1CJ1fiEXuMTeo1P6DU+'; + 'J/mQ+ci/TzKsl8/J4HjOz85vMl9jM85B5vmYG3Wdf3M3MHAjtmbuReZ5mvlgyL4mXMjMHRXvmpc'; b += - 'odf4hF7jE3qNT+g1PqHX+IRe4xN6jSb0ilkxa7rx0v7dH4O/b9YM+nitF1yNKck63dEx2BnWltV'; + 'jcrZmxtlocR8zMAdKeOULmpZr5MsncG3cxMwdLe+YuZI4085WSeREAiyQzB0575k5k7tLMV0vmh'; b += - 'LPUawlv+dyZc3JP7dYsjnfzd8Kri7aw5bmAiFjO4YGd3uC0E2t/vQWvlvnaffnXshPgyImKWeiQ'; + 'XEHM3MQtWfuQOZOzXytZF4QV5mZA6o9cxWZOzTzdZK5B165kpmDqz1ziMxVzXy9ZMaJ/UgLNe0V'; b += - 'Jc6QJsIrmDKEMo5IkAjhV5HsvsZYT+Cc9MenZbPZozYwVIexlf3G4Drpy4SK/C2MZYEY4k28VF3'; + 'ak+QAAJxAv2cQJ/g273Qc7L3DJSABHxV0oO2kYNXz2rfRVqp2YXCZhfi7/r9cqnc8VJUnTfFcNz'; b += - 'fiqESt8Zw3Mvl8kkQY36lmiPvUqzqDZMMJzFi8Cb8abimwHyZDgEO4h2WnGCnkL92ew3F1bXHOW'; + 'L21zMgmwPQUHrbedjm5SaF9zpKpM4LrC9JMz636XmJh3NC2iXCpkaV9iu0nJF+y3ucQ01Oa6w/e'; b += - 'qaUbRxLq1jy4f1Y4SPM3NOiHtLzU6upSl8ClxMC0MzMvFF0kZGHv3+8Dw24MLu/ZH4LGZIpD7d3'; + 'Ws9zjAK47qFbbTnPUe9/KKY3qF7Tlnvcckr3hEr7Dd56z3uJ9XHNcrbB866z0O8opH9QrbkVquC'; b += - 'OLYGRZKozz0ky+6Jw3UJoVkREiLCNcfJk4b/zb1wbjwsSNik8EH1UALZ5R8RiyqMHZp3JeMADdE'; + 'NvuASyBS9s6ExaC1fycscc1qLbhzOm9CNfi9skciUF0ldqpDMCMKb3JMGHomkq1HCH7rBulsCzb'; b += - 'E7UygBLLC8BOgiC5HtdaXQirxUzrFe5bBTkae8DuJbbgbJNUG91mDpv0iNr6FXj2B2Q3DrSYJb/'; + 'WBM5UProqOqMAfQVbpW+ijXr1s0JtltD8wmBbnwMakGXzpuQlvshLUI0Ysmxe/n/z967wFl5lve'; b += - 'yo2MTVGjAd1sd33N71U0SrCt+C/6aaCU8P8/IGGZn37lOgTkQe5gFFYUsBDAXl4TvkCwZcSS5Ju'; + 'i3/td1loza9bM4j5huLzrA4YZGMKQcMkV86EhoTEmaozRqk1btXahVkiMNwZGwQQTrGOku2gxGR'; b += - 'KdKem/R1kwrvGxORj3mPXx8XLU+/zrsDdw7PWYcK86ps8VAgQje1g0Vn5FqC2vRmTqYqPgYwg0D'; + 'UFLdixpbtsS90DpXbcm7bTU3qku5zjtD92D/XQs6fd1M221Jzn/zzv+33fusxakDRpzz6IWfPev'; b += - 'NEI4zAmMcdbXs4emII4ziAXB25R8kBu21He71Kx0KLl0rM04OCOmWSS4lk2W6lQPEJjiNzMouQY'; + 'tv7PO/zPu9zZVUxjJ3lFWjAEALJ0dmOiuO8VdEJV89b4YypcH7xOdfIYYxeXHYaaIc97FahJIx6'; b += - '8RwHJFrYHWDbTg6mqdTTyu66kwIeEG8p/1rEiuDW3+SeRxGXnAMVwL7gHfJv7QilwlmG5xzWwLc'; + 'P6fsMBHcancwn4ezIzHOttVaaMgr1jNXabY4bGOyxXFeCrlQZjrLt8KWCmfcLD+ZddhuNQDiB3M'; b += - 'jwx1YxjVVB5jfChUNRW0+zn6+I9siqCyLSSYirrZqpP3JCiWSb5z9NoCWuqTyw2Go4zEE5m0QxV'; + '+9XQXzqUiw2VxCk23sR1mAyRqyErDYyLzynLR3crsPjfI38e22tABLGvklq18QC+yWMZKZURsAU'; b += - 'VivBXDlGtZa4uXZekU4ioW0ixd6K7Kth32pT7LpGtX9VvUr0mPanaiOFvcQ2bYiOcNxvSMYqV8w'; + 'tc+hExpzkX52GXPdM8u2j+2nfJmb/yTJaCtxgRakuVV2IL7t1i7q39rZCiOmyGGhjoiRDCSNFKW'; b += - 'tB2PJfVitlV2kGqlUIwgM+zv3VeEazVdfCd0ubWeKIbHopK301KnsVikGx3UBYU+U8o9xRbljOT'; + 'X46n6/l6b55um+ebsSH2hg2slQxJcANRFgiTzenfELusojnADya7bI5+GuvK/YQOsW957kXs5nu'; b += - 'W0Eo4DHqEiNsH8VoDNUYVhpuW0WGF7euBwpSIR+m9RMu4ScajMucBde/lreP61AHjtvoKDgwXzg'; + 'G+O+C6Yvl+rDW8UTmspI5YkADDy9SbWBED6hK6QaUzbuhsGRAZDrp6jzDHVO4wjkRwaEujMNf4q'; b += - 'wW7kv4CqnLfxoV8hFiYiDaX4Z0Swi3J7g0ZieHQaGO6KyzjTRl+G/4ONxdmmk6PBNjtPsoVFrvm'; + 'PLKHLjbQhgKSzwccVGj8dXZDSXqbKDFQKVLlElZmoAL4IGjcLFYgeLlJlNirs24VAE6i0UuU8VT'; b += - 'iCRQWjGxGI/rHtO7B3E/3OwRZwM++Jlo8DPR4Geiwc9Eg59pFfykIauBbnL/Mfh5KtLz88kWkUw'; + 'pRaQeiIdAcKvSa0TlXgkSEsO0kZE2zNG4XZmAa7S5gELkyF5vIU7pI78s7C+gX4pZw5w2av6iDO'; b += - 'vkfztKo387ynkf9+uYfp5eeACRJ4VMJFwBboHccfhKKRhzKozRZWu8j4tLelm99Slp2dspaxnMb'; + 'nkX4c4O09kpne3UyRsGd7abzjnS2UqdvDdwZ6vpnC2dbdTJ2wB3tpnOWdKZo06m+NyZM50zpTNP'; b += - 'Gr1PUoee1Oe8g9jYmZmTfOzMzsmfk715UdxGB90Pbyz4hYnGuTKxR0R0k9N+WGnh6gC1Nkdpdqo'; + 'nUzcuTNvOmdIZ4E6mY5zZ8F0ThcCrFs2R0yyy7rF9HhEgaFPpcq4y9Ri6EtELdYjh5qXQgCOkck'; b += - 'Tb5TZLlIpMT6gUCSnEs1dyXlngaYsoKynGqsxXyjDLAPAZO696ayR/CeVucag3cmSaVLLiDpHal'; + 'QT2HBUc9A9Sqx4JxnAA8sOOsZwAMLzngG8MCCcc8AHlhw2jOABxaMeQbwwIJTngE8sGDUM4DHux'; b += - 'JFwp0Ssli11JEJshHkhAoEQdrJLfESHeliinIdBJnnJUe8p8Kdkd7Eo0epG/oJA45G1i/ryg+rt'; + '6nSldDLJiexoJpyRw4xF5Wo8T6BCXm6vVVKLE+QYkbpDOFEusTlOiUzhRKrE9QYo50plBifYISs'; b += - 'o4bNuOpO/P+DhPzl/f+Q3oi4T43tQg84uUkepM3oKLQgZL77g4GDB/GABelD2zSxo/UlizvWs+J'; + '6UzhRLrE5SYJZ0plFifoMRM6UyhxPoEJWYIg1cPJWDfySq6yYMGFfb5aVQY8mtRYa9/bahw3E+h'; b += - 'aOwZuNUoCmouVGKUmkfCBY0c3Ua0gY9rDwjBgEPcBsB3oREZtbhpXlMCXdSo6VFaKb1j0LK2fDp'; + 'wjE/hQpH/RQqjPgpVDjsp1DhkJ9ChQN+ChVsdElGhf3+dVR4CahAbMFTYHDgq5TaDB5Ng/68c21'; b += - 'HQro1h5nkiwdZ+PlXNEUrs7hpVzhf7jPJ3qc0B8oy106m898qIbV7Iq4n2v5FT8zrVd5Fyre307'; + '7AYR68V6A2CXxXrBLpfYCOPfFe8EVJ7UXII5JvBdcclJ7waST2gsuOtf3ghe7F0DAvk9VLHpVZ9'; b += - 'hgjXtfTbDxWtYqRYXqwozi6eV5wD3o562MksCDuNcbBYEHZ6fr24CjuN1oursNNZ9eIq7JTXi6u'; + 'Gra1z0Kr3oVXrRq/SiV+lFr9KLXqUXvUovepVe9Or6on/Ri95whS5zhfslPyB76UsRM79Xipj3I'; b += - 'w07J6cRV2ateLq7DTcL24Cjtl9eIQdmrUS6uwU1IVW2Ws/5b3PVlCZ4nuVO1ChhaCcqGV6W+kyo'; + 'Sli1vdIEXqi3VKchjUtxelY0VKcgfUsaUahTLosxVlYy1KcbQ5EGVTmYCVLO3ROF6R4A+iOFDnY'; b += - 'URLA43t4FyodBA9JCxIioQXaPKhRH1LvHajleZVRGn07uMPEmZVX0oltl0pNKFIq8DYmr8oXSh+'; + 'hRS7wGNIcSE4DClCOXVGigvAXUixBN5CiiE4CykuAl8hxcVInyZvvARxKqXYTUXz+UvBLEmxh4r'; b += - '91lJGcqonZhBBR1mHrPsWRfreQoS/ZUJZoMsN6fHRPz44nMrLUeT3HyIdjN1RAFFPbuNVb6CwqW'; + 'm83upaD5/GRXN5y9HzEwp9lHRfP4KBL2R4o1UNJ+/EoFvEGoKlX6qmM9fBZ5eioimYz7/ZpwRpL'; b += - 'rHH1oOzGfGDPIsHFbmFekRPtbwpHuEUTwcdwiJKAkeBDFGStbaWwKB73zqbU6+sNaQuu02WwXBW'; + 'gaB3MprsGpXoprIRKQ4jrIE6R4C4QRUoT623z+bRCDSPF20PlRVeIQkPT3TiN+hY4Gfwu6hSX8+'; b += - 'abwM80IOspRICsn5LBcaOy9veEsDT7lnf7ddOxtaK22Em7WNLC/POjJESFnJyixnCrjtq/F2YQI'; + 'Pt+SF5po82jVnl0hG1EnkWzSAMJC76qQ21gzqAtLCx1OQ4U7gd+M4/aVPcDk5Kpdz+IXdezSjaH'; b += - 'QCYrto9cz5uTEMRlkSGjJ3wl/ppyEr3YsyK1laUEEUc5CSFnqJk7EASqtV0YgVcddZt9pVijI3v'; + 'v5LOUoIg0ruuFyVc6JszaoFaAo4mzqJhXGMOtQG7e9NnZWJbHD6SIQiYOdRm+Cgp59ut9KpyxGu'; b += - 'idurRzvBLlNMiIrDxsOEC6x1HOaCS3bLzIZ/CTEUADiTuDX8Off1Xd+XJznj8/kvK8aSbyJ7yaE'; + 'JD7UZc/hrSQ61gT3UmgOnK0lDxcyCDWrkkBvgIBog0xLRkA6iQNOIaM2gNT2LKMIcoic3EDXqQq'; b += - 'kmMbrjMSI+pQ3xzVt2qeXljV5qGgMjnSak0yZ2oPTTMxZRKI+cSsULwRGn8kXYSe+Af9J+QwZnL'; + 'QuvUCXdKgX6cX6jimCbIaJZZBeorv1Ut2je/UyvVz36RX6Rr1S9+tV+iZ9s16t1+i1ep2+Rd+qb'; b += - 'ZuLFxkjaa2dBwqz2ybHm+4qyzR5/3/HPGzj1v5aqf+unzi073Zy742f/j58bp9bnpC+61yfI7m0'; + '9O36zub3/GxrYnFkfEscuz5mIAwf4uVk8xDbLLFTv6rN7iLdnjbjSHUNNaMx2GHis9AMz6kqjTj'; b += - 'QXfe/zwI/7tb/H2gq/9udYW+7XHuxb+yTWzvJrf9B33Hux1vZrt2FtyK/t6LveU59zay2/9o9YG'; + '2UQznk1rxrOxZjwAoKxe0eodRTvp46wNrWcfbMSMqjFj1Of+VhYbQTHuW8V49v97inFWMDPm9gn'; b += - '/Zrj2NtxK8d69v2hb5tn/lc/Xof/ly9Lrd/rl7P38HaMr926qhbe75fe+Jo/Sx/fbRes68drbfZ'; + 'mihoj1i6zg4fPClff2MmymjZTZo+Pml6V9Lo1vdLuVbez36Wq1C6zSdnbjPoWycveVqn0jHZY3+'; b += - '3NH6HX22b89P9q3dibVz/Nrv9l3hpr61px6o1/OfHqhf728eqNf6qw/Ujzv6QP2pfBRrZ/u1Dz1'; + 'h/E8rPPh0003wK/VC6RhMEiWJtUzT5KatsKn5SiZxSpeSU4rEXsOit+Ca4yhsxpWIxJWhS1ogpF'; b += - 'Qr8vs/fW19z5Qb8Fb+/a8BWupX5vxe7Z2qlk0G9xfIr8mVGjep4vhX9y6QRVWxnEWCJmajOAsEK'; + 'cSUEEtGnPyoDz89+FmMH42fefjpxM9M/BTZfpFtzbS1v0tH4u0SAeeQkmBRObHa41eyAs5HU8Gk'; b += - 'I1GbtZICRsMmqzQAjaZLxmgZC3yUjNAiF2kzGaBUL6JqMzC4QQjuMy14UrTkbkzdP00pr8ywYRh'; + 'INTECqXipCPyTVdPQ7SLecXn3avwk/HYIai6yU6R8aJBS+WMEz4Yd+lSkCAK40YpK75PHPjljlK'; b += - 'NZiAGRxVMkNLwFCrjYvCkSuNi+KEE1K7XEUjOzbdhFA8oK6LAQl99VlITD5zOsiO3qAsjhPkOWf'; + 'LmD+3Mn4gqheUaW2MIaWCRJNpZxwhlsUVtRuwhPgT4AnxJsAThPeFgm4WYwrxI8AV4kSAK8SFAF'; b += - 'mJH6mxAx3iONSl3ynSEgoc+CMurynCjYLs8Q3A36fME7oM8e0rT6XkCeVt8ZSNTq+wSZWn3rRKr'; + 'uIAwFeE/cBpCHOw/jpPAYhKaFSVgNhW3Qr/eY1ELag2+mXKDn9EiWnX6Ll9EvUnH6JntMvUfTHt'; b += - '22u6y/jAHLbhoXH4K+RmTn1x+MvmJyjAIugYZ8S/xMn2D2+HVbYV3dji8rEPhLc3C69kM72UjvJ'; + 'oYV8k3W8bGGj/V7rN1j3R5r9livx1o91umxRo+1eawmZN0jax5Z78haR9Y5ssZRLPKhbWRdYxxs'; b += - 'BpeBOtfwWTn8x3b+CN6y0JTvZvwmxMYUSJ3GEOhSU385wWVwvDMR0rqm9mCwjrxX+WQPct/2haL'; + 'RFxUpqL7FS8H8WhCrRl+Fp3plBf9/u/9xW+w+UafuMG86O9wTS4g/ozQZGbjhGTzJCBKZ8ivPjN'; b += - 't9Eh7w4NjkHi91gK1CKjcyKsludbdKcImbKSLyyycCKYiVESxA7VkCqqA6kiupAqqgOpIrqQKqo'; + 'sEfcS1rC2hXmxCGsTG7GC+OW2T/lpXUL66Ewafe57Ox8CdpsmOplGv/rb+yfAXdg2hJT5u7N/+e'; b += - 'DqSK6kCqqA6kUorvlFz5UuVW0ZT7klqEHYHX9SqiTdkxEepseLVck5J+nVJwaL8uhb7oAyFHmrv'; + 'xH44NEgHNq9Gcj/+E70E7YNjquRn/wze99Ihtz7QFOrdH3R7784yA+fAUc7/Pb3/ric0F8Lghwh'; b += - 'DO9zNYjUVVtI/cHun8rpu7JW5+/mM7tAALBVwBbcCYuPEtRi/A8rTlE8z1awHlHYUmNAI52jd6K'; + 'o2eGRz/wfaYqQ9wFo8+MTgyvC0+IgQ4g0eDgwdGsjF/H9DqyZvjx6NpA1CbO7D4JIdV4j/RLXDs'; b += - 'OiTZ98LFmVWRXIFuzETMoXiW4VV0uowqfMpLRFmn/aIlHoRAISFCzts2olIO1oFgiA9EK73671C'; + 'k6MeFhsOdGE3n+Si1eaMl03OeEvQw97xfnLGW3qQndjOOeaMx9mpHXPGQwLxM44547VKgCs544E'; b += - 'OKIgHJ3gru9fKJoih2nPxRJAfC2CNVKWh5LlLkzxRxMmDvT8rFEidxSOU93uNxrZT7s+oT5se4Q'; + 'DOu3EZzzOHS1nvAKk3E58xkPgAXvEQ75he8KDuj+bBqNvTnhLDkJFZA51S6sOdUtwqPPNoW5J1a'; b += - '83uSXqfFT8i8wOw6d409BSzu0Br7ZCIcrr019iQmjLiVlvcaJby/BPnbRaYbATu6j8lMC+8uWez'; + 'FuCQ51vjnULak61C3Boc43h7ol9oBlDnVLcMDyzaFuSdWhbgkOdb451C2x5zZzqFuCc5tvDnVL7'; b += - 'uktrdIV1s3B5POjzBvKZDHUs6zCI+aJFSPW4fS+AKLfRGzvP3ofpePKVuCZcu74GPTK55CH53Wb'; + 'FnRHOqW4Kzom0Mdd7YkhzrqbDGdM9BJh7pcfKjLmR5Xd+PAi0o/K47SAWY4rzt8xYefrt7sIBGu'; b += - 'zbejcXp63N4PvKNJGdb0LqHjs+Y/8SnIz9S3DCLvoSzFvtTeQlQNpuCjZfvgR/wpfgqPUvwW5Ta'; + 'aU1pQthGC3Q5H1s6gdwaIyiQXGMfBbJrTKdAeo1VFcivMbgCCTa2WCDDxkyLI62LBRfIsbHz4iO'; b += - '6aDRl6C283Cl2Cv6XsJjtjwEsza8BIcsuElkIxfvgT32NpLsBf+lPI2E16Cg+1FXoJ5Z0oes/IS'; + 'iefAckSLZA+Ku5IA4mBwQzYO7RHqE4nyRHdlToXnwQpEb2WOjeXBJpFxyVoRxGc6J+LPYHNUyRi'; b += - 'PGrDSzBH0IzFS6CpzgnvL4HLiC8BNuIlOMJnuPDuksXuLqndnbwER6y8BLNWXoJDVl6CPUZegnu'; + 'eXrdGc8dkmZ3iGlurTkRxKEI+watLdGoUnL9tWVtHV3oU3Tey51c9vpX+52i24RokHBVfGKvGys'; b += - 'svgS3Gf8S4D7qL4FuCZcu95vwEiDXWV+CvSa8BCCPXvIlcOaOewl+yhgf3SSj7kSUfymWYdttfV'; + 'eqK347e3553oL9jm3I6+my1yjt6gD3vGOWdtSnGeScjlr+eVeL5sRLPnnOE+ciwQSr2SuyUfOJJ'; b += - 'rBb3NpJRK0GKyxAjRquCzx8LvFgI2E3yGspUjCRUCOCkqcI5GywPvSCsMo8TRGp5oaSbP9AMiZu'; + 'zjuL6u9AqXPQfIlazCehxfVH15xTOOiCYXZcPW+LYXemGRPn91VFNFQS0dCpjj7YV4661qbjEB7'; b += - 'iErqw1WaQmMIusBD9+QggNdF1BDarpVd9o+yCLlNPaw15wPJAKRohcFsMjtqFckQMlYwJgakeNZ'; + '42klzSOiqE8+whxv8so1sqF32Oqt+mjGfloc2fNrhqZ/Gj+lJx1F8qU879Yo+7fKLeRr85Y1jlL'; b += - 'F5wLZf5cvOO07zRsv3egNJMwm6lCWwFE+Q4AGpv+iPlYS4Z8VQiSjD2+Evfm4aCyaIAoQ+aihr4'; + 'imJd5R7LKvrD138f8Sj67YT0oxA2yvqYpNYwzNYy6JrmaOlKPSyN8PxEbx9uwKR/0vcXJ64+QmY'; b += - 'LmfA5czDq+YzKhJCLoGccFJGggXKd5PVErxxxV/+km1acVz79SZ+faWQXcoXgSpFnSKU/wIhaSs'; + 'WmQGxme8og3EZ3ac5JPka7EwyTa+VX+6oijp0n0nQ+woxLUvLhf3rqn/6GnsjsMA5ax7mAmOhjh'; b += - 'bIWLnvE7PiJynncPxb5Xg5BGlRoEcQbCGZwwGo97KzkjPCNHHSmGTFwlTQK0bk7EHHSIiSc6aWG'; + 'fburOJiZOPNychZWY494xtTNupSEil0+ApvAhV17uQkuRp8/NuoUn1WStXgxOzxV3LIFIkNP3Nn'; b += - '1WqeRllUaIXm6gtUxShW2UuKpV7QCKAb3TGyj7eh3MLmXAyXMYGchmkM8cX2vZadgzl04fYOrs/'; + 'g60Rk0LqqmFh/YldXBCXMFj8nzvk6h2C0Snh3JRnW28JWdiHg/IBhPkq8jJ113gc4QhW2tFbE+A'; b += - 'URHrSOJO7dZv/pTbeBOAGLd/ilnFRz5V7U2g4pc1Vhk4jwqSQ0+X8VSyvSw4mWRhIth0NxckPu1'; + '5MmgxHTqQKccUlgyjTE07NzuPYpY4PPghun3jRBJy9wE2SIsGoWkLeHfgd+eKAA6ZCuSjJGF7qT'; b += - 'iJpxlW1TBXnfxeW6U5RjYJaEybMf4k8oZOfkMTOmGu4s0Tv10Vk9X257I1M/y0kDqlDN/Oot3a/'; + 'P7J71TMJOLMMfXLf9cAEttqU0Dyg2oeL2kOTW5O+43yeDTh8X/wDXr8Z+sBUm5ZCUiI1LP2xnMr'; b += - '4rs0yCd/bw/8Dz4+eiaxLaL0jUtqDMleRvNkzfwPrlgsy4TBiK1gkE4RIBJKzupEJb1BCeV2bbR'; + 'nMkNJPfGkNwzNSTHaiF5F0fEmxqQdwkgxfd+CkAyovnx6yHrQPLRMA/iLJ5flw+eAo4veiL/6es'; b += - 'F7SZo0wBiCRJMpk6aJuYw0T4nGwaw9YFTyfu5loVJbXuTcZRgev2k3WRKuEVKYjZxVWnvFOppRB'; + 'VE5ln9zIUtsZ+7+K87Iq3mHgmw3GuTVzI6DRe/LLPshJa3V+OAwB1it8JYssF7F2Sk5L1ZudYhi'; b += - 'AoQQKnlA8tWYKaMrWt+MbSx566slILldfGyLi11ZE8UijARiOgBPxpTmUQTUxnr5PUHKDMFeEZJ'; + '78TGYat8L8gKd2qO1qW8qTOEX9EuRxlnMQLg+h0dkn+FYvBwxA4AN4nMEtliNCrvNy7P1j292kP'; b += - '0M1AQGa9sZ89y8Des7iufdl4R4rVxrNs2xBe93dATxX0nioXXzp1ohp8hvwo5HG8HorQMr29cqS'; + 'c92S27x+8o6CL9HuSbQgX+3EEj6zM3ae2CrOE0z+VZw1W2DcAo3CDaZmFzifyUJBYi2SWZkcCB0'; b += - 'FORAonN4w0fCb9oz6/u22XuICv6anqAvbZL5D6CxwPFzAhff9ISCrnmXL2UQJBZpJ4KmpVoqUFY'; + 'DTzjN/iCB7g4/wcdbiCOs/0mXqfNI5mBGNYXp3IucwrIHoJJp4Q0t67k4I+84r/3xZmznx2FAhR'; b += - 'hBI8jyRuj/UqWoFHBNaCXjolqRpatKT9ELM99ydmDEfTKJtzXzJVRJD6FolnWdQKZEAEUMRXeTp'; + 'vCbO4gMursdEwjLSZxmzkPsBiw/4y21cNAmq6HJ35IiHBaThjE7L82NnI0QH+i9pYcNmqJ2oH/g'; b += - 'd3IJV0i4aYWENLpNrJwlYQ+JPZ0toZHuEFZGJXwigajnSYiFKr+d50sYRqJS50iopjuClTGhvT9'; + 'cSjR9CGRo1kk4EnClH/z6pwzInal9rLIbECduXLdKPc9QGEoxT7jtT7lsEqqbvS4i9L12nVzmUr'; b += - 'XAEgc5/NUWb74R0NutZgSmQbDeux3Nn0xpe55xXl9+0lICRcDZ3uRgxQelPAghAcdfHFuH487Q0'; + 'iO5StVzdYPn8scWj/qIGIxpk6feUsohLmbGUgQkBIO2+HEQrV5v0A9bNnhvYBQ4piSP9ZBfETdi'; b += - 'pqxRcjdHow0qJ2vMR1pEgNepE3liK17CXMI0Vq4hdDVZHa+hL1kSI1+oGA90Vq/UsUSIrUDSBkh'; + 'N3JvY8r6IEvc66fydfek03W3cMQKXDGiEJJMnuUS0ZFE3IOcj3OFczrDAFW97i4f2cnZ7lBFe/x'; b += - 'lKUSKgoqUqsholsVRRrmOje0A3MBPqK7bWv373OOY0+192BMhx0jgxRfsxiLMJqx1lspqMMUGI4'; + 'UIu4XOMH3n2Qq89Bnbnf+GXhNC+OKx0+EAw/H0OYXHPTFaG5EiT+/5OFmT0jk4fZtHu6JDH/vbs'; b += - 'CyhURytnTa4uv+qqele5fMqNj8MbVxa2x2zkieXXMG6wHQnCkPdCdx7r7hPJzgVHRNAZx7YZ+yr'; + '7XfSFTNphovnciE9KnDMJ0bJwubTlIV39E7m7ycI9nJA93MUlDP1P4hSKxsak83G5VHm63Kg+3H'; b += - '3N9vZSTfokLxIVTTYFapjQ3XWLqwNzIu++phafdY+h+oQLVy+wVw1IpTh5fFvHY5KGnTuFXZNOJ'; + '+fh9uOQ4OwwZ/Jwcyb28cw6hjHn4T6bqc7DPenFGYhx5YQhmXPNi7XJiyHE34n0ixCy/UWSMZhf'; b += - 'lvJQm4WykfddvyHcI9gkPskoe05K4kXtR36FdiO6JKOYFTdf0kIIIAiFKq5ig+Wc/niW8iE3bN7'; + '7E+rXvx76TzcNIvIw81vPLfeG1vs55k5xhAQREpN7W4fUzui5GsMCresiy/GpZMZQ/urcXg0xuF'; b += - 'lAoXOe+VvdzDB+qL5yIRCJvjAGuNoJfQiEKNGIiOMlVhOf9ftPLz7202xYqz+QKmcJcSc0M6dJH'; + 'jruDwBwWHj7kJDl/wBYfH3AocHnU58YRCtF6FkPbRXotqugqHiwYLfAnAcswVHN7F08j5IgiHL3'; b += - '4vUK83Czz38TJOYG6UhHFZHJTwxSofuFTbW7rIgRaWupbjEuB3klH/0bInZQVwQ+GIhLY40LCrA'; + 'kWh4+7jMMXGZdOuXHaORU9z7L3/+FV4PA/erc7X8wIDu/PCA6f9w3ofHke4/CELzEoiv+Jd68aH'; b += - '2/xlKp3dE7E8a6eNGCMpiYjfb4lBp4FVaXmT4yYth/KwQ0jaVD4yFz7NYIUvufnJZctVfriFJd1'; + 'B4RHB51OUBvNQ6PMA5zYP3hNA4fcy0ODxscziU4nEKVf2kcHk7j8KEaHB7KVODwCHB4bpy+3TNh'; b += - 'ZvGinlm+cWkk9veav88js5PbsZnOGk0omLZeXt79KQ3hE37dpW1869oZuIuDM1nSGxWyRB8SARb'; + '+l4aAo9cEwJf4OkXLErN66gbSgqTBgg8mmFOA9uQcDNCldkpXfatO5ibkJQFErZAnMxVOkG9qkp'; b += - 'WdKOkOLt39TJpvaFO3t39SWTTnVfWubGiLsTD1nyAAXjbCp+RJJl4VCA/SCi2bYlL3Eqt7vKgoL'; + 'Qr6oS1COUCuKb+3HGgin2BbwKh+nKEL1GogAOoO1LooAM5yjLSSmHGFMZCfv4lI2MW5QoA6M/YK'; b += - 'F1nYNPQSJtRGL6JAwFBNtjZW7er0JV7yz83Hpg5g18R9VhTBTeX+iP7UbVltm86h2tyWeKlc3a5'; + '/cQz8wXrkSPYSe8X6olFKBfjpt6BkJgXNNkX8kzowncWZ8xJnR+bfHsYLdOBC5DWlZ5LuYKGfxX'; b += - '3GTOB1W1v+O1J2K5zrVFuby7crvOvMW7PFm7HTWOtGLr+LqJ23Y7uaa8CvpeT5/nYBzgIWQRg6y'; + 'T0T4hIBayWqqs9hGaJ9CBsqxzR7MPsXvPvgy3r3kZf17pefPvky3n33N2ru/nBFkDQnPnM7PXzU'; b += - '84F4VPdFkNNSkfLDGhRbVVTN1Zuv3q5UTEKqQTdqoz+vPrQgn+ouQOI8JysA1+Za0XnsPa69Z6Y'; + 'vtqneFW3/UFtHEBiBL+joKc1MWYQTpq5TZ2KyaOKP2JhRByJBkFokIIh8mxoXSLFeyTlAq1YE7a'; b += - 'TqsbVnrheuwdv1aL2yHtR1GVm+3xODerDNwYG7X2JNG6+Lm/VoDH2uQ/EEppKyRbFacCKCDulUs'; + 'lNbqNA08z2eRQ5TnrP5ypuM4KAkLXBN4xYYOJgDJrL7y+xKiSeDeexLsxXXFc0Z+NoWLM23mda2'; b += - 'e3+iONykKZRDVm5ErXUi+CRlicWyl9j2d9BzowDS1B82S8RCRvhh/cxyzHVq6JvCaB2j0Ixy7es'; + 'MzjngMybTBfoE/z9a1a6bNj06fGxVTd1sCLSwOKSd/Y3wyspoiVfyJssH7ZMVK7Dl+oXcJIBHn1'; b += - 'E19AMdzhPD8c/YQRl5B2RCwH809uwP+vgBEKHDKwfKDdSPluQCVCe9FrNoMy7Xg5Dnn3+iO2md3'; + 'LwRHxWed41INaiMbioBHJTIWZNGyC/hVsEXOnyp6ZEQpo/KU+D6l37KXyq5lp/SXzYpO0UEq0Rr'; b += - 'Uj+mEVmmby7uKbycSh707ibXUE1iNV8wH+oBvAEasl7i0ZptcJ7IL7adxb9jM+7p2Sb5rOMMS93'; + 'a5v67QP+UmmRmNrsVnyuf4eEaD3lJQTKhh+MKVjSYEJmJQ1aAkolDRynt8c2MNjk4O3bKMc0of4'; b += - 'Zje0gOS6qT1M4Kq77RnTPrOKHNuV9lLI8Iv0ol1Oy+LflcWx3f+P9E7ZTHb+ZLo7aa8cQ+Jwvja'; + 'OE2zcl/Di/j2V4cXj0OEQexJxlNDhiBhPZ7d8ZfDwX6hYrm409g8S6TjOjnLVCze6KKSGcOOiJT'; b += - 'lAex8sT7fGLdD3CSp8NJYpC4RmWhwoZY9gEKqwGK98d2yD1yr+Ujvnc3DThQUuvG9WlJ6NNG7oL'; + 'rRvk+edBg9vuurvHmQJKpE8O846gN/jdocTTrvDzPYNnxEzMSx23s8zEbOAyZOS0QHf0SxQTCjM'; b += - 'CTOjWEtGhT7wQ+EhQNGfPppuz2mbVMGfnppvbtc0qRMO+TTfntc2qU86uTTeP1jarMjl7Nt08Vt'; + 'CgoricRmTzEZ/ElHpZj4jRwdksbwYZz/yBcRZIWIn5uIGF0bD5bRLG5jyMAZeuHsfFMGJtAtxAi'; b += - 'tMLXL0ZqIIvwpWAiR3gvz86IDgfT4geN8eELzPBgTvEy9438K6OAFgtbZdXZbVKmKwz7Acg652x'; + 'SRQbjneflSg2MDpCFBuYESCKTYC4NS3QK9L/1KbIlSg2WQ7+5UugxSyNkThwfhLExjNBbDwOYuO'; b += - 'Eveq5q9G1hgW1bKOvf5bjetaxIA4MTpR5XfsRtf5CnFigfqUgv3JWnQi6oIRKAk/kt8kZsNRG7k'; + 'ZIDYIa1HKMg9qwoex9lxYp0CWdzYJYpOFYVUgQWyya+PoG3WD2PDnE1HNmLfIIa8tLs0wEHA1Mm'; b += - 'n48DnWka6EwbMqdqFoN7Q8x8LpbuD0SlzcBl6ics2OOErfYg0pcVPBb3sbLPxWtj+NakI93tmUw'; + 'bIsdyjV0bIAZzL2U7HhQ2OLyIRnyWaWGrm0OHAfgQ3EYmETUjBO3/GhFFKR7zhiCUcLSQnlPo9j'; b += - 'tyEXr+52wuh/NZN3PwtG7l33yGlCYEobMveai2umqqgQs8bwwmdrydt7GicBkanWjpP7Q3JeqzV'; + 'kgInMVOdPEPToKb5ABgNjK6I6JlJxr/Zwl67ohomalPn5YgdyKAcehkykEngViXaThLlzlgJ+80'; b += - 'csphaWKYHHd1u9jFKUytQ0Rw3m6SC8MTbp9gGXhLORXp3w5wZw3UOEq3FD0Xh1iclfY8K8yRW7v'; + 'FQvDbktXvxxoHZw7N1q7gb302w7+xYmX5bb/8LLcdt/Lc9v6zMF2DhYx6nBYLKQx24BBr9pyJPS'; b += - '7+4ErK7fl+34CY0N6C7iVvtRouooMJuct1ZWNKU/M6wqksMIY9nSLgZ4mK4514/93aNdPCDTuH/'; + 'fhKQJfCLVdu/C6UD7T4qljpIxT5a8DTY+nQkXDJnYu+P4NEqEbxzoHlRKlySODgeo0RLoBjI5Wh'; b += - 'vpzepWKEgxFhMz1hcxqaLDFsXDUSc75Zri5A2gBgtpv22+3lCyliDr/vCy9FhBO+gsulgHvHune'; + 'HFz3ghbW/uA/bIb9I9nfsk8cMdwpVPPEXlySdNkNFLbSIiTsRftzkdtCjmGczORMwYZ6JTZ0ZZh'; b += - '5mnI+W5zp6cyA/De6yB51q/lvwLdpr5oesRI2ha1D4waN+o3DmhmFtSP1tVck6/1ej4byyPMU9T'; + 'JiJ7jAiMdoxQDVQ6oDSpEKWizyBOGP+0wkjq0NW4QyL8ZPJZnltNplspbNcukViolP/LWU+TRvd'; b += - 'sO6NFPXmyi1nvVS3sy2Bb1BCWmg8Uy0XcmwYhR2v7BBCUaFvX0Go5j9QQlW6UwST7fuh4n+zCBr'; + 'B7VG+77Ly+9uonwH/tNJOycosqgxOoSSScTEFRAoP2nWPpJk+MQ5lTxEVMa5g1OtaIl6S+T9zHf'; b += - 'u2b8StuNK/Wx3uLzfsLrcpjxkPLab9k/PwlvcjW0ou8ZaMdwwebYryIioXoMazXwLlhzSa5JNlF'; + '5KrYuy27x7ypepI2Bg+DJQJ9DyRZN9iz6QjpxfwCmQnxT5DoW6grZHdqgBuKI7W31Y+Xl4uwEOZ'; b += - 'sWQXuQ0ru6LcFSwFvbt1A7ffn11ka9lFap2g6j+reXtoASPpRXF//tgheTzdBmRRIADnWmuq2yz'; + 'udIBUxT4ixRNx7MbfgzFUPI7NEgEmr/Dhqoa8rODILLRy7jD4ynjiPSxKbzWR9CcTKzGNDDY6P6'; b += - 'nf37TCDXMpDIGaXae/yL/P4uMdiQ0I5f3yte7EatxAbVFBnaLkM7GZIUNjJtv7/EizaluCqdAg7'; + 'Nh5xDsaP0meAdbvyrO9aMfGgiPX+eY6P76GxlimU/P9YzWWcAYpNdbZXSfjaMKyEr+M/Dz0ascF'; b += - 'n6ZHRq+BxQhUDic+hEPiyMIzvKuxsLjU+LEff+YxjoB7qASxZAAi7Fl0axLCVCteqW0kujVJYal'; + 'M2iqbAw42iwrWmF6/t2TNoQUbyp+Kjqc/WevoUM8y2iRQ7EATpc7jOSaY/dbM06s+WgwJ2k6AiQ'; b += - '0YNWWpeGjW9GLnolapYRgiog5Zka0fltijiy0wU5RdhgkltJauvtOsreX1ltL4yVl8JEX7JWy2Y'; + 'L4oQ88+RPJ33OYG6dy34D8hXyCRs4KhbfVPhmifHW5uWjM39/womWR6eumCC2Ee4vcfPgE8pXyp'; b += - 'iOOq4pq/9dXYLNuuQijCpSw4WY0JZb3AuDOafy4Rgtg2xvuXynIGobf1lJNgludYj/jv1T1PFju'; + 'G5DfzhJ2VS/Hi+mG85esVsLzFHDj92noF5ZklezWpkJcU81ouCpnCscVqYQZL0IVYsSRo0GxUyG'; b += - 'ugpUgpRG5wQtEbrDotEWDsCEahBbz08vK6IrOSNXTxgQQZBvYjzZwOTFgMYS3kX0aIQnVFuhC7B'; + 'ibkuUeOMfNKWdEGzIMnMBZSljPIGXUtRhp5hsfqVCIUnGIOfIOflxQnvuSUCNLkWoszakyuJT94'; b += - 'YVrjTKrFUkVxEc674oN4wDU+aGlOGiJnIOEG1+Y6KiZu7xi5s3GxEBOuSW3uORrlQcDmtx/oWEx'; + 'Z7JaXVbpFl0TXXPwyglhMIsfkJMTLR1OGhSd+ydhQn2GMFhb36amkKh+rEuwC7rRaqyTbqRqNbK'; b += - 'MTlJSTlKJr5YWXPtRtkRja2BDHnEBnWcetL7JBxhyh/TGNH/EroD6bLFPdG7rOXl0+7+pSZ3Fk5'; + 'lYeiZb90ccoh2X0KyMuIIYuVNXgs+yQHmi+MloWVJzIuXRKdNq9EpSyI6Q18adUf7wWP8Dkt7Vj'; b += - '+2m3whpiCnnKMpkDHn0LeUILwUK3Os7Vac6yLgqlF9RKx0NpUSu9IJSuqpUWoXSsVroqlI7WSsd'; + 'jFCGx73qrBjMc6i1UgAz/lGK25ilaXo38UOSN2gDugvuT5IWyILrG5sWJwS5ALxfxNvxYtuGDKL'; b += - 'CaV4rHQ2l7VppHkqzWmk7lCa10iyUgs/el2L6b7ZwMbrBm/8/gl+6D0o7hctNTZd2c+vhWDgud8'; + 'YSA/5TwNxnhtpjNua/muH5NGzEt+q+6dv996ff6Wnyvi9PUHJuZi5U7xWFfZGPDxpiJCkaxx0e7'; b += - 'U+aQIZ4EntlY6Ffgfa9BwyOnGNfodRY6aIxbLr5QzvpX27ShLRbuOzrei2QmJBLd0q0aLV+UcyU'; + 'aLmEjfNk9bFJCpTTSDorkrpLrrClk644a3AIrEmTpBj4qIrvM4fALL3jme/Qxvy/I0k6LI2K/6f'; b += - 'oCfpB2pq5FH+HajSm41YH4F50sVEponPqcrWJVyVP1yjP4J5ozXdZbZH9FT9VqRFpExj/kMIV1s'; + 'iY+BzHp9tz6Pz+64JJ4AY8A9yABmCpR1yyQxhix6XU4WxMhEfVbDaSK+4EXpLeGKxssqlupgZjz'; b += - 'zkhebl9J/grJmqqnmlHEmRtfo2fvq291prDd7x3J0X33Ku0ycK9uCDkG4Pl/LWfdj4ZEAJF2veQ'; + '9NALsjHw0HJc7GVpA8CXWtkFQ0VKgf0yaaaIMq1682N1LRSBv7ZNR2DLbBDilTbVakOBk3ZzGt7'; b += - 'XYkmf3WU0b04c0xdw0iHQrTX8QjjA/4O4FLsxY6Y+42rm3UoqLzML0Vu1Eu4oD/7ebBQmEoxzlP'; + 'himjjbqaKnumGxlP5LajlHq6JR841XfQR03wKqp5jtaAKdWna/5jpYyXEZqvoKb22q+AWeL2uZh'; b += - 'vqRQhwNMs99aLdfuX1qp8EYy/flYXEPFeWHzLe09qs+1ib9C7K6vpJeC/qE/XXr43HOZzy0WyXO'; + 'bi7U3DtTDudGw0MnnNqJHaS+9mjyMyec2ikcD8phRzSKvtrJor5iNIS+2vmC42008csnnNoJQP7'; b += - '6V8B/ttkiomm1Z26Csnvs1Zmgw6AUHjtuSnJB4kGerMoqM2iCp5FJJf3gjp2a7VmmEFII5QOchx'; + '26dEI+mo+Fr45M6JB9NV8GtxyZkbjn6a+2u+DV3Y0jL7Omu+Dk3Y0uYf6bqj5PjjrR6N7mH5Xf5'; b += - 'SZSaMalV4rAY0zt2o4s+/jF/w7damcqkISHEXXpsrYDDhKv4uT3Mb/3nw/yxPcx3PPvDvBVekOY'; + '9RRIwP1djV07+5EjWsNr2Cq9un7uqYuqs4dde0qbumT901Y+qumVN3zZq6a/bUXXOoqz0a2VuLX'; b += - '28Q+k1OvtjFDd100EoAXcWU7l4E5OneHOCqoSI2hI8WLluz9wQ/fsu0TgYFVX5iNdUvSNdkX5tD'; + 'x3R4N5azCpG45+rxalp0fDnarFpejT5bC0ezYhGn63FoJnR0LO1uDMrmvhsLdbMjkY+W4svc6LB'; b += - 'skE59hmfPIcNxtexJiBLMLO9VFjz9FHJmz0uKpaan0WUX7QHF2cEGfdZfbVZgIuQumkiuK1oHir'; + 'z9bDlEkOBq3+/wpcl88o6S62jRl3JUtnNLGXg38w/fGq4pl5kongQRPDcVQZJfUX6q0rmuks7QD'; b += - 'LDLCr9LJrtgupMXwweKFWGX3O/Sll3g5FheDB0o8rDLcr9LLrvAL7KsyA4Uy8Muy/wuo7ILXCkj'; + 'FtxENQYrv+IK6r2bfgAPE1HmK8dOoXNu8E1W9/heu+vVhWaN0xQsOsWFtpvoFpan+C4qzTDX14x'; b += - 'RfNAsSzsMuJ3GZNd4PlALH9EB7/epG5fJdtXtW6LbRueKSNyZR0qmRGs5ga2EeZdd5aBdRDrDTp'; + '3Yq15CWYN+frW3SWywVevdk62eq2xtUzVEzYyOVsejC7SC7X3AcXloK8frFFgMkFiPBSb95+EV7'; b += - 'vsBtoAyEE3HDTxIz8rq3LET8HxC2D36VHeXnawkaEyyl6tdzN6ducwjXLcfzfvc25a/LOWRMImS'; + 'lKJJTvhcfhunS0+h08Fn8MFuj0VIDEPbDrb5SKSM7KznGF4XGZ4MmB4rsB2hhiey7A2vsz+lhkO'; b += - 'wDax6m/QDv+cyzIr+c/soVjGlcXzTwLpy17fruCnj/0cruSF7ZypWHPeoVJIKuHhni7Rm5jlzhi'; + 'zpKjvzTwffRnN/NB+ejCfxRuR7EfL7idPDKbMutzBuwD8cKXPdrk89FlDD3riidjCCX3DxTupMo'; b += - 'ru6mmEDw7wcL59+w706UUyKJrKwfu4VSUDRCp5tRKSkTN/ehnvTcWwAfC3czbUpeeD1NlqsuBo0'; + 'yeG7F6N2jMlpSlpmxg4EwQqOtVjDvFm+jG2LTUT6ipiqqC7QnEa9kNbh+bLktRj8QGsvsRSYG0k'; b += - '46oC1406tI3oe6ofHunhRdp6JDbZ9v/tOW/dLGgbXiA3fZzquCdLf/EQ3dOv60EjukYc2aU2nLM'; + 'UqL1vDJ7H99FZtyDEm/rRhQZr3wU3UNJ+n5nZp3kvNHaZ5gpqL0jyEADim+Rzc4KV5D0LbmOazc'; b += - 'qe7Sxhy/vJitDTxQLJQIjIQ2iKOvbstNsa0/jxKmcOK22NfEgm0qSpsl7KzR5bzXDd2An2uo+OU'; + 'HCXZsziLNN8Bt7t0ryLmrtMM1yr5kkzeM/5pvk0NS+Q5itYD6Z5jMp5ab4MA3PTfAqoLs2XsFKl'; b += - 'lb2GsQ12mqdHcK9ExppO9qlD9Hk4wwrrzbXGEjuHZSiQC+webvthQlROpl7GUJkTZGxClHxBQdX'; + 'eQ1SAy/irGrLOZblSv7t599V/HsT/97Mv6v5dw3/ruXfdfy7gn9vNHEw+2wczOVxHMzl691RwKT'; b += - 'FbOzByJJBvfdKLyMUjgGdlDMrUIzDFx1Gxpuj6plcvYWbf/FlWs3tgtTZPI2KFWad0O34NeQtIq'; + 'PxsFcGYd3XM7BwWjAKTuA42D21w4YkwEmDuaq2gGnZYCJg3lT7YBxGWDiYN5cO+CMDDBxMFfXDj'; b += - 'v40zxqTHKxNXjiu0KXhtChFMKC3VSDoakaccyZatCIJHDIJHRHzjs4uwWwKHgi2aolXtThW1Fqk'; + 'grA0wczDW1A87JABMHc23tgAkZYOJgrqsdcF4GmDiYK2oHXJABJg7mjaZnvXuRY/S0YlWGelH9O'; b += - '8zMXJZdZEyenqHWqeAHvUrNUwrtXc1u6oXl00nVbWPbLV06epZqtVsjPAc0NRizx/bnj7Y7UlgE'; + 'Jg+s8MLOaQ9+MI5lcNa9EIZBoRtLQu+HOcCkGi3bToWN+2yTUfjpkHbNBI3XWkxTYfjpsu26VDc'; b += - '0V+DIm0flncCpkEn4PaknzRgWurFeOAskWtSy6aShiHqE7a7dR15fK1sZHjeh98Izu71E3b35Po'; + 'dMk2HYibJm3TcNx00Tbtj5su2KZ9cdN527TXNq1xJ1q0uo7r/+vgOh3gwsXA2EokXox/jOt0lKM'; b += - 'quq1XU07XUVB8STzaaYd1QnP8S3ffDMB1M5XTj1wbR2am4KiGRnUd+GKx2qdle2iyT/ExPOM14d'; + 'DaYueU+0VQ2xHOJeubIVrfzRKDNCSaPIbxIYu5IYJ2i50NIQGjCD++OtUnEvFOaDHv86xj+bAj4'; b += - 'UZ1EDsv/0NYvlz/aKKoqV5VdtJoSHPJHo5rvIhNjuJ572Q7xcrOmyjV2hx8ya+1BN4dCKm2ikNL'; + 'sfg8OX4kM8WKkeakOfb8Zo8fDF2qTe7qrelrgXR8ZeqtGDj5g3oQcfNu/g83GsRLOh+Zk4uHWKf'; b += - '9sU0EChGmmDScYEJ1Y/eVzkbwdVwrpBOrBXEVh6i8xNiUe+cR220siLGtxkSKCbLwIUWCL4GhSL'; + '4/SuGmJ/uGm+IubdtK/XtOOey2JRn7D3FZH49+MP23yiPk01nzTEZruPcIfeANc3PhhOO3hfvg0'; b += - 'Oup84nNRTVUtpzp7fUJiL2c1RfEDRzr6uCwE0eL7RRjeu7DaqkNqg868Zlr5LaUDyBphYbvQJPL'; + 'tPqmV5vndFe1p5/P7Sx8WCpv8ZvJW3wreYuR+C3AGrTSd8qjcWCEkSceDZclPAJ/049Ot6cfvZD'; b += - 'ok2RepuwfibKcdDHa8TMSpAqyQQF6rAy0MqOUJYDldtSgarxMEIhHGLLTehnpYw2C7FoTDgthqR'; + '+haYdTwxpKnguad5bTVCHkJ+JYzdTTaZ9zA0IH8AcgOz9vOvLfs87vezxvLvLvs47uuzlvIvL/s'; b += - 'BMbb1nIJ4bYXcQnRtheW37tTg22re+W+vW75nvdrrO1bgpRQNkc4j/KXLGR5XKr8zDaf+c8P7UQ'; + '07t+zZvFvLPs07tOzNSWbTV3Q/Hg6a0KgDQRMadShoQqMOB01o1EjQhEYdDZrQqGNBExp1PGhCo'; b += - '/8T8/njsNj1uYHVmJn17I+LhU+ZltPvOfH9qJfuJ/fjx32tqtMyTINnuKKyNzO0zGKuKqeDGKq3'; + '0aDJjTqVNCERo0F9WnU6cDIBN3a/djlfBtv00t56Q8HVSeApfSvRJiJvzfQXwQ0vZ042n5w4DnO'; b += - 'gxiiudwdUP5xxcqRbUcacSwRg3ldvJeD1d5XbSJCS6mZXbiRN6JblECk3ZUNJBnjaR2L8k2XkFY'; + '/ojzhQnIl7UHGekwoTzjIG1ZZncV29Vs0XWut1emrrGjxX7GGK7sJnKqjC+w3+MOtoRtRwYY2cA'; b += - 'mGuarDbx5/YTydTqRX4cYXJCrNaIVBe6be7XtwEGlceX21H8mSNtwrJIhaiyiTwcounPEnXQi6v'; + 'ItBi/20LiDXwjupQJDWW9gZcjohJxAjR+nvjvEg9AlfniwEu7P1UWGA/eaLhFov2E07DjUwXuIO'; b += - 'SlRZC3iwiCpjZKOO46fjCg4sIT0SNjYq+hbNGe32EbaEjVWpEWUysOFLctQFEm8oJLSwShSJxzo'; + 'F07PVUgcNhOAO7fAun63DCmZjzFuOrNQtsDF4aldkcM6VQGcpaXIBvhG+uVBSg95SenfgD0/vON'; b += - '05UfFeswlFtGWWEQmsQhRu5Ao20WdZSSx7CwnV6WzKEFVCasQZzyLocbO2eL6GRUQ9PPET/J8oW'; + 'p2udM5K/IGpc5bp9KRzZuIPTJ0zTWdOOmck/sDUOcN05qVzeuIPTJ3TTWdGOqcl/sDUOc10LpDO'; b += - '46h9FnOvg75xbEoq9WJwa1GRJZWifWvaU2Q1uW1outbqnNMCpLV4rlbanNsEqWrhZNCEtthgtk6'; + 'YuIPvPwgh6pG53zp7Ej8gZcf5NDU6JzHWHpQt8f+wO2mx9crDnLo6LUEYfB6KagvZlfsBOhHrxH'; b += - 'RrRhLDUZrjI4/w2u4d8LtJ+i3OQ8ls8H+m+xfOQ6luMIs23OBspvsVZSO8tVpDQLEc2b7Hc/Y2L'; + 'o59JAP5sG+pk00MfTQD+dBvpYGuin0kAfTQP9+LUBfXHyydcxwCGGaW6y6I9lKhb9SKYC/plrhH'; b += - 'ZZunqRULWOpmUon9sUZk8fiyCzCtMmVjS3d4sjt0AfCQw/xSXEVWkuwelrsb1Fci6icmaCYmaCY'; + '8mDf9MGv6ZNPwzafhn0vDPpOGfScM/k4Z/5vqif7GLfiTDehezNxCdzSYI0F21/vdmrw3+x7Mp+'; b += - 'maCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaCYmaC'; + 'B/LpuB/NJuC/0g2Bf/D2RT8D2VT8D+QTcF/OJuC//7sNcG/+/r6TyMD/c/yAXROT4G/pwr8l64R'; b += - 'YmaCYmaCYmKDmByRg3i5S9ISolZLSxmevRQKJHwkQPTt4yZin7TXAk9m26IWyyg5uud1N3bol1S'; + '/PtzKfDvy6XAvzeXAv9QLgX+PbkU+HfnUuDflUuBfzCXAv+VawN/z3Xwp8GPCDVzI6e4mkstXKK'; b += - '+LlCgDgEL7XTGXL9a3/NeGC+d4sPpw60LwDd8r6SUbhtvugY6ZA6zlnx8jMtAqkJzL/ND5AiEln'; + 'dAOFe5zJDKA1zTRftFuhKxvpQ0rK0OptkeZxgq+r/B9mvU2nC2ZxT6inL+N9SEsArFwb+XRK1CW'; b += - '7IFgkmQA7/2FcU6ClTJS9/mu9zsb9MsJ+Wy8IJE7lVCfM0zeiTWK7E7Ir0e0SOE+lFOZMzkVQ9T'; + 'nOlKSTz0ZOtIpF1RzBk+69qnjUXCFpnorf80LORwsTFLEYWYXXSCxckaKWHYVgJKLEooPNS9nTV'; b += - 's+9ZVp1qHU9G/uV5OZc/kVEc5zaSndi4KN7qdn1K4zWvcHHfEWXb9J1Q376tai505qlQeJUOC0f'; + 'Yzc8xxXxiSX9eJ8sfDz5QyvW+WmNl2sV5Eu1mT7/pH53klnc+UHTzqbr+2L/8qp+GSqNv3mv3Je'; b += - 'WkYu2UpaIPcCARRkv+n0TPKbLvlhovocy0Qv+QhNRGH3n/J2uWI/K+DKY/Hni2BeCREvht9wpMA'; + '3EdPsnP1lF8tt53qs/ni/EM1Jv2v2iKZVzu4lnkibmjnhsEJb0vU9kQ0gaYCTNWjgrgWhE7xWU8'; b += - 'pw0tGllNy/iTULaHxdulxVu81f+S2HASNre5MzRYhgekM5Zsea4FWYL3BMriniym24i6W5j0u0P'; + '7nHsXebitCSUSsyMUnS4eUpKS0FpQwmMaJs4wKnY5k7tYlKCRBmNyNpfE5LLktDl5J5//se8GO9'; b += - 'PvuE+Kn56HW9TlNq59eoJ+4elsTj20VTxypB/XdH3KuJ2f7Iyu5Q/h7AMM8iELoY8SI7tmjD8dH'; + 'ztiR+HpGKPrcxjI0561R1QnihjKG7jSbh3eWI7xeAcZJe9HOJGrHBaxJTsu87GApxHXrURja3IW'; b += - '2irgEJhVJ/kHkjWaokvsi3MA42Y2L/CruIsDU17mtVHYid7bcTDZ4/USvn4TrZ3L9pLp+C9dv+f'; + 'HrfFmrJHClldWYUIQV9nd3wgrPTmJTq3K6SmMiZfNLiPQ9/DQ86jaefGcVCOAuwsaFT9LtoudO0'; b += - 'R3f2usRuyq8YM1+YeeJ03e0ibfY59Tk8+aepPL2hk0OfCjbPI/ei5Nfsvpm3wmHmxy3MyiTU7e1'; + 'MKjpfip1P6TrZZtKZdzgJFMwG2sz7sCxOysmYWJlEohTSVYyuTvity8J443Hfqf9+ATenEQ+YNt'; b += - 'nD9M2ly3Jo2+S1o8o/EksG7q6m9Fj499Jx2DYPCc/RUvCf1ndZcrJqy4/ZR4U5XxB2VrHd5OksB'; + 'PUHIaFmYfZD/pJC8zIfEGNSCGPTRnsApP52UO0nmZg1Re5qBuXmZMaY9Mdy+mW7Hx0ApnWfEfZe'; b += - 'wGW9/NOJ7wdw5BX+SNd7WvfUHtszG5VP31HvBx6NF3YEBJAaSjvbCiVn9xpfq3aNqb6qN/rY/PY'; + '7Yo68vDtMozs8mG7Inuepd670TZ7GXBHhiYcWZX1Uc8tEsFuMowGuFg4PwYoFOs9f1Y9cVP7VYf'; b += - '0XFwU7VhteJb6ru5v5aDx9xK4IOVe8trd7WyiZJ+pZq6ud9sDDemmUD7KifwpFAHkzlPOxj4y6v'; + 'Hn1VCLtB5W/I5rBh+8ZD3TZpBnipSGJjz0GGdsdu5L8OMyUXPhrOPcWJNN4Jsknbf2o0tFp2iS0'; b += - 'uk+o1iJkcuMeWVrLYwLNMUcGpfVq0nVraeTzpXvXkgnxLJLQVeKl9rA9HxWC1zPs4/S5B3wgSJm'; + 'CsKlWKNgttpDZMr9Xz1pQlU+x4bukAaIVbC1r+zhVzUxVH66YmkrMZFLZ4LPVWTFFPh05CVQG8I'; b += - 'LQraEEhxf1cjAEz91EGOo48pgIqG5IGa0S8/sOkmYBbiGFpTqtTrGc+5S//s0R3dlX+SwO3Q+5P'; + 'cRKf3EZou5zzG0WWUx75gDJkfMSEDbhGnlTtKAcfhOcWB4zhMAmeIf0h8/15Lf2D+mDj/vaZ+6v'; b += - 'MKY5+ZGqmiWhATz7JporzT+F+D19i6e58cbUs927YGxy3krePt2eLUg1C0BXEz04X9NseEkCbks'; + 'gH2flLEmz5km5Lbtxfed+75L630J/V6dv217/tHfm3VCQhd4s3hWLgqL1id8jJSFHsEVPXNnaed'; b += - 'SsCbUntJvanWIgi7g34qNjQXRXCqbb5uv7yloM9v8a421cS4v3XdRklBIsJy573CUvxefwPil0f'; + 'E1iUWPlpooraAS3+6afkeL+2CBOiA5NqsMeY0xYOL+0oS2cb2mG+CUo4zOmOJ5NW55x2fi+CUkz'; b += - 'nl/X7T+b3ywXu5qRwVbZSIHRuO3/+Fw9F4FDE1FXHKvW4diFWu316t2InbZmZmZu1aBGiBgSnKx'; + 'y5fdZiTWgl8iIEc+jF6VEEtPCJwrzpOHfygWlYzJBEgnH/mRWLEed1V2B74jF/pMXTdao11RMxN'; b += - '3D+Jmca5S65dP44oDJ1ivmuwZLJfxWjrsUNmkuj3OPanmQV8/c2POot16p+3ubvTDr6CQgph8g8'; + '9zaYMv1mrpOK8zY4xIn4c2Us4+EM6b3Pbezkixa//+Tf+3GGPlxxuwIa87PHCFtyctpmpvfV4cY'; b += - 'HL6XTFJogUIurbfJ2vvb1KpF5fF7q3rJV1M/2TwIrBr+ZDzFGpv3nZZVmrufZzlP7lx3+AIOTmW'; + '3Hi6sloLB4vGCDlPCQjknQHqdtduRzHabnxuMlyMN0D81ZIfPGqtm6rrDHi/U5YRcrifPDr8S2F'; b += - 'H+S/5HcCjiIu1NPmyQKbPqCrPPKyYr2B5VYbWyXeQg+tcUmPGYa6JhznzOJO1gykmHJmmKpJO7p'; + 'mYxuFWLQYaL217+jcbDzBcYO9HZ/0bL4O8UYKQR78VEIQmlfPnvR50k5Ai30WDtGvcvDhGcv0/u'; b += - 'eEM/caIbR9VZcd29VdIbDvCpyxm0mO1pDkaA2LsgA71nWSuHWJG7hgMPXRH3WXwwJZDgvkR09ol'; + 'aWNtAr+GXcTHZN8Ug++wKkw5rzncR+O0dSXjcJX51zlJxBE2jRRnQYMI1NdWFpty4wlFS0PClLD'; b += - 'HhCo9gTGnUR1UVod/PUdLn95QKvrCLTQejPBqE/G4T+bBD6s0HozwahPxuE/mwQ+rNB6M8GoT8r'; + '7mFe5VmbmLyk3E6e3F17IATvgRR3lUiZeRYKohBgmEkgpiOGuZG0ZiLRx7tPNwpUHMqegk+f+kO'; b += - 'Qn/SEZg8bQWizbuXNKaXtqT7GE7/04b+MdjQH1R6VH1qIsgIRoMNGiwmU0DczxTALoosGLeRS4/'; + 'ZpUTQxZt2GYf5bgt2CSrilaBLdR0BRczapcXqPF//r4qBn9kiJhWp2SyUelcQcddC2JEikhL/Ko'; b += - 'torQAbvXXQkay7C6uNxAGYIZY0Dcl4jhKaWCU0iCpLE/rc05lezy4PR6RdPGl62fr9bP99eOLF+'; + 'pwVToiv+2+uCsxChm0GLi2eksTpRdiwSB4oRs3itKxTFamFMS5U7C71QMGwjy0VvhRaekP/fqIJ'; b += - 'pnZULk6leoWK5+VVH4qqLwVUXhq4rCVxWFryoKX1UUvipwE1iPfo1k9qLsEzKcldqV0uFgxeHAn'; + 'Bn21L159bmxkHlveD548YSzvz52wRvnE1p05aW18fV5r7JNVajUfG/klBOSBFwPc6zhwHCxK3cd'; b += - '1XV1/WUtUPbzbaCsGRAPYgTSTXWKjiRpuBEMsGJDAlOZFhwIiqOWQOLCFRkws1eDtzQbd+1EDOC'; + 'Dv/hDL8zdXZDIOWJWkqtYSS2a7aJbKlaSCY3Cg+BSYCkP1hbbx8v00QPFPY/TzPOX5oQ4ZeIVlT'; b += - 'WfH2zQeKtuAwZKd+zIid+PePP/XMcsBC2gGtobvVcCMKEZl449HvvDcFQKS+c2EVOzLx2wff/FA'; + 'Ve5Fkhdb/ixjRZ3OxU9IJzv2xRwgwkEZrbyrD+Zz5lUD3A0Q0Gi+bvoPGQTDhXr5pzFeudtqSBY'; b += - 'EcMjA5n78yMTOg994dwyAyCK7VRiSiaPf/faDtmgsuluFIym//MWP3dF0n0l7SSzJb2MiWVFBlE'; + '/BE05+IsluiSTQQmQOvlr5LfBFzuk71PVUkHr+pK5QdMyq35G9wmYtnRoJ92E1+bPAgpkDbybNe'; b += - 'MQrszdm/Mh1+CbBHMR5edIGFbKO6DYmLm+zLjmRj389HRjb7L8zSmwxTn7Q4ucFTIJJC5gUM58K'; + '7DMAwqDFhwKG8o6JV1YdyQy5363Zu2vN3lUSysyHk8eXVXqKzb6SXj0cb+2ky+gausmeBTSM3Mj'; b += - '6JXEGWec5T2+/yW++Y2reRyN5T2yut7+TldS+hF/kjWEeml7UzakY9YZ+wQoIbE0xT2sr6iMfyj'; + 'jnQuOGRsRHFdt7Iq5O9eyuIa7Uyn+yp5F2J86vqL2BMLf+4bKnTnllZ32t5Z45IZ1MqcixzKYsS'; b += - 'fBVJTB1NOotxJRmNXYUmuTmoX+f7CC/3P0d43kgmEUayJvgF9TgZNO7AEZJ4Az+r7ZX0XsEMkwS'; + 'O02ZLvkVuOC20VQzln491mpjQdRSToBnwTVZuwZby4Rm08TTbXp025cmvn5eH08KVaGMLUu0vsj'; b += - 'C2xEX5Gww7nQ50TPHgBznD2c803mA9DTFcTQn/j70VZhD218YiaheMS5iIkiCyD/cxDQVTp4RUX'; + 'ZwEuBWcjAzVRZCjv3dNOnbx5maQmvgfKn7z10nwucrJ+CHO8T8RlyZhLXkfL/4ux5uibiH5Znf0'; b += - 'KRISWTvGeODwJmSYWzxgPWjIDEmvK1jkkIO8DH8j5BGGW/D/kWmlRd1aDZsVqLXxB1P7rHSNOIF'; + 'E16OjfXNrotLgBbCBHhwe8U19GJ/rGRr9MzWiPA62u5ehBriuZ7fVINKEjkvZF4bdv3sX9HGUbC'; b += - 'lXMg0rCRuVF3BQLRDrZhDTJ8hKdpMH6rVfcNVT+MxQRhTtpiNKhWBqWpG1xgFE8tF754VDtIUHn'; + 'YaiRbDocs9S3E76WPNMFEzA7CwaSYXV4rgfnoKkwNv5OZMRwzrCe89jdh1u5NPu+lfVtyo9y/1I'; b += - 'tTwsjoRg6JAlmSeZLJq9tGi21PqRUTVQlsGdR1R4a4fml508U9meKL+/IZQCZMHZZV4H5Z2T24L'; + '2meqM/ubobRTLbIypB4UNqoxym3fr4e0gZ5B1hc8M7gZC0Zd0v7uObCkqiaGy2vuF4FNh93taKz'; b += - 'VGEPCi7m/NTmdeab09gnqHBMJxYWSOnOYEB40nrP52UR1gLqhqg4GfRLXSEw7hd0GP8IGYVlCgg'; + '7jiPk7Fp135kNgFmgmwbE+xB5EEPMzJoWWeHFrkHNJZlnOXHELu4HWhXfMa98M1jx/4NJ/a+IHP'; b += - 'v25XdisPzrBFNsWtmxJKFWLR0aAbyVlAJPR009KX82rCGF/5CpKu9elINGa1/4yn/Xel0d10Jdm'; + 'SMwQ8CYVL5ffEJ9gPDk5EhbcIztEdNExOe7k1BKdOcFnFZZ9DJ2ETy4fVF5dcwsTZQESidEG9xi'; b += - '4/SGWxIVCjMy4Qg/ol3ToSnsOdP4ZbN/9rAhyy3qtac18w2QTPbBM1sEzSzTdDMNkEz2wTNbBM0'; + '8ynsYc8iXdI/q9xj8SXKPwz+J7/EaFqskoeHoJu2eo3C85RsWXOxhPE1qowkXIHNW4GMptithFn'; b += - 's03QzDZBM9sEzWwTNLNN0Mw2QTPbBM1sEzSzTdDMNkEz2wTNbBM0s03QzDZBM9t4zWz3lsmzyL9'; + 'vKxV+jiSaYeppjFkSTvzrqsJTA4aAG0YV0HX6s6frZuJK/qxJRsL91yp+ZghtFOauzS/v3QcU9w'; b += - 'qxFJW/lS3sNMv7PALM35BeFNFzUkWnvQLJ/3CE37hhF84rgvj9to+4WdMsyynWeduLWejqX6yT8'; + 'waIczrhKdD+AVkg1Vyry/jqxCiRo8m5+DzYRu0zz3jXi7s6OvsVw3RONR2Hq6bjcNV0pOtn48q1'; b += - '2qVQjpp2rPL1G6orh6eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4e'; + 'f83okZfyNXJ1dPhbjb9m7NuVXzP67cqvOZauj3w7Ae41z+4f8/ucPm3eB1gfzZQzKzu0+tFMwzY'; b += - 'El4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEl4eEn/w0v8w0v8w0v8w0v8w0v8w0v8w0v8w0v8w0v8'; + 'CRYopmYc5iDGyOMlBzMuvYYZI3GMdFhUSurG4pYP5+TJLF0vwa/0t4oru5oQVTDqugo2qFxDWck'; b += - 'w0v8w0v8w0v8w0u+n4eX6MN7qKIFq2XY/oUGMIRFRsMYk8tsHJkWmTjGZC9JGIxLK2mUbh9x/a1'; + '/rK+NAYqIkeiNiWf65Cc8Eqhows2tFSDamY+3lYBvM5X/24i7vfymXS1hUfVUvv8Ex7BWzeWUOt'; b += - 'Seo5x8efY8rKQQTV77yyDS27ytpa2wa77ZhmJQvJcudut5DMNkZBrd1LvU2qJGdXuAhY2G718RJ'; + '8B8B2/cZXPINHkG4PHpS10mlYn3RiPK4NB+Ar5YesGYYBxslRxWlRHjRMMvpMUY+b8J4nOZjU3L'; b += - 'KnqA+I6Si664pWTrOsCMXGePCyld1kUt4yTiubHCSYBtXUo4TmRVnnhOgKF9v+shFT7nOVKi8sH'; + 'QUUmAssknUWcMwkJSW9w1mXZHqcsmXDBhPRI5ZyLGBEu7mqjQvrW41iXo/NJJMiMiQSZMZEg3Tg'; b += - '70v0NOhPcLVotKA1I33Oa7tEgX+HdhvbLvIWJWRMSVdk8fvI4HUzUf8aUn8Zi+0F60FuUZLNREj'; + 'SJOeX4JwVTSJBenEkSEZovyJYso0E6caRIF0TTvglR4L04kiQUzyXP9ZEguRg48ScFR/nsxUdv/'; b += - 'FVDEk2mIPyoRvtbCqFZOu0Xounucx2rfouTO/K/AwW2FB9l2xHAPPgMTfAYm+AxM8BmY4DMwwWd'; + 'slVp7MKcfI2We5isHAxOZxy4gZ60nUj/7iQU/Yew/X37KOHwTqEN212URyYxmqiHzM8z449fMOu'; b += - 'ggs/ABJ+BCT4DE3wGJvgMjHYoXGKHwiV2KFxih8IldihcYofCJXYoXLpScuqMdihcYofCJXYoXG'; + 'XWe97n4eRPO1T4wH3+pyicI0C+M/mwz6W0y6dcYXg0vCgmgF4dXm2Ky8Q4TgQmAK0HVOCKsF0eE'; b += - 'KHwiV0KAGo/z71COdegA7ohPyhlBalXS/g+/ENRbRSiZKEJjDRCVCbgjNWnb6YQ0SynPLrEcgq3'; + '9SQ0J624V03FIPQ6al18XCIaO/S3CXNw/G9j5uCqrz/+o+T6Cz+Kr7+z4noTHet/4BCMNSEH/vM'; b += - '1PD+a+EhWOKKONl3fd5vqyPPagva+0KQo/4gRRTRDsSlQe/fj8p554htbCb2+dPN2gR4NXnqYWo'; + 'uSEbkpuiF4emv4WplDkCpq291OAAFAX3wFDzYOeg2U43iNMcpqLl5jhTh5Jnie0a/Mo12qO894S'; b += - 'KZEULiFydGe4tcFBfRH3Kz2+noORbuxIOlrW71kPF9dz5n3XAIwWS/l4E15EZn9u84YimV56b3U'; + '3e0bldbeM8IpHagoPics8prTfHMZ8jW5SKOMpLPjvo9HKbwxZ6z/W/V1pG49br9T9HD3Ul0scyt'; b += - 'HE2n6GStfHgLDmoaLBm5IDRuwMEYBWcUb2Sjf/s3DtJQbeCSrrMhrMxkX/JnuM5MA9pHaMvRtGP'; + 'htEvIad4dINg/K/3C5qV09u+Il0deyk6urdB6MXOraEflfYs0HtLPVGXsmIg/j07NMYc/nlF5yd'; b += - 'FuTCRr3YvRKJ/kSa5xS//CQH3DLa1zFXytQGG9AKQIXTeCAKSug5SW+dVyag2ZP+oWv61XXKIm/'; + 'YfeDoerS3am213dFHuQzXXrpg12Ru5m5OQ+iG3GIj36L9V+9D5acDarUR29nL9aaHvkk/dj3e33'; b += - 'vJzS12eSyBOurrFxbyHV7/BCT8+jAan9vhsGpSKSdnj71NnTlGxyP5UL/9G0sdieIWkhiYk9sSU'; + 'odJV6NrgbaOq6Sn3Rf/5QdPpDVNR+2dwBAh73dnUhR3/71nkT9HeDWuedRb1nnTeOv3Su+GFOwo'; b += - '3o1sS79yVl856zVomQ8JVEUMsWAdMTa50cF1o2QqHRhIlJ90/2dJ8XT0s1VP7UeKwkhCpmD9R4R'; + 'FEkC+6m5FNC4KKyHugC4Q1+sqBk050AD84Amivi77SeWNXqZMYTAIu1V61+yA1lxbGUQpchC923'; b += - 'PDY44yzPVmUdR7GnO1GtCp7qkMyzOPGr4iiG5k1LHkgThHlUb2O9jn+W4tOP+MC5pjzhGTGkmQj'; + 'Hz0eBRo90QIbUiXdt5Lhf/4z859BR9GLLlyaSb9LSKtlxP5T0SzyqVWQojttOlO26ynUdF9oKs0'; b += - 'aryqP3U40GycXlk1i++bNBjMYzkrtNBw8DV1ve/lllUS3njwgt65GKlpWRjz+3prmd3D4gVkdq9'; + 'PWGA+e4tcPcNwbDQ/ALjuy34Xlj4MNHw1rsLXjRMrMBK1RliFyEEEhAUHyJwhMBZbtJP6m6CRGj'; b += - 'pCyLsfuiV7v7DBvGooYL8ZuAYB1UvKx3tDrDkvmeVJknaE2JxXOYJvuwiaBYQL/HqgSmkW2eapo'; + 'hM+qY/pz0F6v6BweVGeDLgFzNAPsEVwb4NQPwDAco4aLLQZfzls2hs/lENO68Nxo5GJSjPy6+j6'; b += - 'bkacFvFct5JuhplaDOPiLU6Ass1FMuX+dofgXi2ksMHCxuZu4i5P1odhDY9W4wdAYK8H3Qsujbc'; + 'jTnzoPsLLMfxz7w96TThlfbM2Ew2V0efeGHZ+kuX+SkFbvDru3h730l9qXS3UbUsbZ8Uu3IzPM7'; b += - 'n3tQ1K/F0rpgsryuJQ9iKI1YSQYyNvfJ6lmehfLkUb2NxEop5KvgqrRSVZuskjPMov08RI3GIK0'; + 'm2617TopXrZdm7ptmaz/Ja5bWw72x3JWWUfnrxSOeXN4SyOuLN898ESOr5gOkqugUs3IeLyJ0Na'; b += - 'IRS8tbf43GdUbSkMwemLHPBF3k0Lj37t/jKXfxDt4hwO5HVAnK9hC7BizadC3yfVpYjrryxRStT'; + 'NANh786wB1rF1qj1PoAkch+PLn/pJCfj0AR/lRflLMF96I85DpgTje66k4+sdIb6/spNBaLaUQt'; b += - 'e5Ny1wrtp3tOAwR3tiZwQXp8rMi2cQU2WYP4P5YXljidCSpPDDWjyiQbgiEGwNnQ+A7K099+3CU'; + 'qe//vc94mmlbiJtAjDTSrbSwqOI+rWXDlRBeyZtx5lGVI1ArSErXcF3pdtMKICQGyDX86Y4bS41'; b += - 'vwnvCvIMuEaCigbuA8kccMqUJOc3sY45vQ5UIiLSb0CgeUs59htwL70S+G73lQLzkgIQlJTPRFP'; + 'HDYDoxZaIsHnnkr33TTS/FVerPl0xESlU+Eeb09BOhei2976zohRe8LaWCpqbNJyB/pUOtbt3UF'; b += - 'wotLet72WkGu6/qKMrnR3MFSazeT5SL3K8F/+HRNSd37HJ6S6XaZa/2aV0zy4jSV9Uaj66xmMWZ'; + 'bZHanNpFkwFwMFq//2sPWjdWMiJROO9m0usxpV9UILCztpYaAFjBH20nPaJJrRuws/7S4isQ7vB'; b += - 'WOmmG7kWlpU8n40v5UxfXO/unPVFyH3MXFExVXK4imSlRc7fkimKc4Vk8IoFunlpgIRsChgMhnY'; + '8EnE3jzw5ZNGiD5TwvG05GHQQnMNg5bpBI7WQe0fIZDoZcU9qi2Xtzcs0HsBlKWlIDH0bn166W5'; b += - 'Ho1Yons35ilAroppi3Cs3PGWYv5l6S3wUHjr+tJrmIuJn4z5CoO1XMVG4vlKoo7id0jW1bzrQVy'; + 'eScmd6D0fKGTl7Xo2tBLyaAK8ec0+aij1EXb17iz16Ha+byh5EfkNqAlv0KOX6T48OpuP/uwz9N'; b += - '8xyb/1v/2fw/1OY/ZWWcXV1TaBkHXG8chuw47NpxmLnjsHrHYQSPwyYel+d0Gae8nAFzQsz5Mae'; + 'LzokNfMi8dHaNStDg6Zxs0MD4af46qu9F/Dl9Zii7G/YgecPTLprviOQ5/ZM+29Ndy3I3W6FR8w'; b += - 'evBZvTxzQ9FTTq+0ZMNriWQ9BrqXF6J+7Sstp9FFOo41yGl2UH64mCgl8v27NMIBP5NwsZzL+2b'; + 'fQTpRkgHj3uEIsYW6JRoj+zhf60Q3aYYTVAJbGp/ZcmP708aYi4Hi59EKjb6xWJJtGypamhlfYQ'; b += - 'gSwJ/J7vAFhCEF5DPCR0H+1y9lYakdlvKwNBqWxsLSqrBU6FJSDsF7f1QFbwXCQaM+1IjsCY3Yk'; + 'AXGp7n2YyB2IEecx6F1Pm2MWuwWtREMynK617iG4qTq6l+1+0NDGaojIAT/252ymM6LKkb+VWvb'; b += - '8dK1k4Rr6SeXHRFp61pfsNuuIeuKjKqFRMeV7rFmWDCh5D9N1QvzBYrFEx47XBN5/M5Mm2CnZA/'; + 'bFsWhrvnvOO27R36frlcDHxnYcPILJy742zcMfumPho+6WNAHQ3WilIF8iInx6+CNKVEe38xWKH'; b += - 'SgdrKol9rgppfhHYryaFM8w183GrMqwynxrbgp4E/EtPN6cgtJNt5SiKj3zr9LTEyYxQYjzrvt7'; + 'J3WpubT1ALAgpliGSbUdSeofZ3xgMhuCekL74TyrhsDz0cXPcYjF8OBWVzs2HmI+lOrWGOULjAW'; b += - 'WPJN9vTV6Jvt6e/VM9vUW7Zns623eM9nXW8Vu8jKGtNBq3yjsG+m+q1rPWE0MsD5iXvTy+xuDPL'; + 'saoB4Ixn60mYIIUlEuzUBWl+t2cwo+wEwTJ24JslTTVyKHnQvUBcTXOlBuQulUe5ZZFxvoTjrYE'; b += - 'NEWtFJVMSLEc3ebQTacNB0Y8WNHTI1rtnm6bhmExkjmgNcs27q8QomPuvFM3HV16Bdx6xgf0KHP'; + 'PaKmXcTFCM6m6JexlcGLo4fo/S5s7yAfg2H3elZOwbeDYNQtzdsH6gxK9dJjjYFKQCQ+DCQTaK6'; b += - 'mcHyKiO2kXZqGZtxT4rILJZS0e3Al9cWT7Kj61LIZei4UF5kfQi4l//cAarfklmWdvHLLs/MMsC'; + 'cLyFeFjaxzRWPM/dZDwQkaraZJqLlfkIPmrKxTOhGvTQr+XxbB6ghzGdyoJMHPi10MpyF6bcjHy'; b += - '7X2PZ5Z9t9pLJ73sBulMIGQZ2IcOUcfCFec7YzGiLowPxaLzKNxEkGvsWt8wcooTOEVQtajO8Zb'; + 'hMjzgOkje3/hSxFgyTpGcdKfWCe6qcJqJ9n/kOramuaOz37JqqmLdsmcHRYO50b8286V47Z3Gna'; b += - 'YH/8LTELbbSQpQXYEs8Nx9BsIR5/YpfQO8ynsdPKwzOycjcAqGZdHb1LVUg4Dx1NEHyATNp8SU8'; + 'W0wV1pMMaomi27AE8WfnKcuKhxSoRI1JX1jz32FDs3RyBzilqDOw2cjCYESW4xcWwaN27eUpqMm'; b += - 'xA0YnUFdNzgdKEepxSju/fWUwnUh06Ocgq9pL3g+unNQDYhfF8utbV29/ybnKauvvK/5F6Fqm0t'; + '315yGYdNXlhXbBKRjQL+VDm6QzksyCmJg4V7YqcYiKoFLh0FfcMmojc33Le1HHpiLjhrE7I/bdp'; b += - 'mp2shrlPFae9Jqdi2zb8Va/Dfclf478tj6a90LH02xzBnMnLm1FXROisL/ZW3Z+w6apSRf5L8Yf'; + 'Kzwj43vxl9KTpuiOC5zFoYVsQk72Lz1qyNzhEDfOjK3HDyBCP2PM523AODWuj/XHDgc9Sw7rosG'; b += - 'nPmxiP7Nx1yzpbD3/hm8Ye73HyLm+6KznkmctWvKrlDHQT8c1m/5cyQYk29MVL/dROpOGBO+GL7'; + '3Qc/0deMzj9Jr8hXjtnLy4fCstAX73WeaFPbww4cV9WwOdy9MnC7IuxdYs+EEcy+PlyEh6IFrBw'; b += - 'O5KpEFrKr+EA//j03W/4v5U1PH8awWn7h39zvx+L87VbonFzLuXl0OV6ewM8eW+58yv1+xLod3B'; + 'nZ4SUOEzOGXBQuzdine5bGZQgQmHomnZdUz4kIbJ2/GUvF7wMEjZObdLKHMRzuAyV1QQAaRgpgY'; b += - 'cpufjzz2CKPv/Q8OVu5YG3/0avbG6ES+/fWf6+kyz/y8e39MplG6ex4Y59bvmOsY3QdbzJLT7e4'; + 'GV9LGRxQFZ4xTTSbtHGydLMW270tkhJjkyFQgrQSO/eKYLSX6hDIE6LRvkX7hMHhBL/R3C1cz3p'; b += - 'v4f/drmXvnRP/+vbieh3rlx3UZWnnhEw9uDVTL9a86+KpubD0zAIJ+LdrihK5Y9amR4SUAYpiC/'; + 'jGTBVT9sUPSgyxhdZb4kZ8YADTJx6ZMnxPhT4d035OnSluQ/SCPOSyeuegyETFwV4GfhCvVvWxl'; b += - '+CJcaT8u8FFA4awOKJxLAgpnXUDhXBZQOOsDCuelAYVzZUDhvDygcK4OKJxXBRTONcTg0ObaaXo'; + 'YKezrApbCJIJcsCG2GuBM940TYBUqf0TOYM1G6SziTHKcqLXEikSxOsZcxXXQix6rjRO7KkG+gQ'; b += - 'T7/jcjY9+5tjvfu95a7188QTcst995P4bH1O981NRbwLO3I+/9V3f+Fctc/PGCbiAv/3WD+79Ky'; + '/HNJW3p/Fr4pmU5twKeHQ9yaVApGWS3gvSgLJLCl0L6e8YtlxbR3yteuYRd4ACtUsQMp82otESW'; b += - '074crgOL7nDTPfnWTRxL89cxOwhTu+43a5Vhr/lwK17F6LJG8J7rvpDVAIwh0gapGvI/8i4oSuB'; + 'fcmRWxHPRX8ve6V5+DsclOYLfSgtoPefxUg4CwFXExE5EVX65AKmZRbjNQsRXWsIiPPpRsZ7yMf'; b += - '7iShWZaIpaRkgsgB1Ht0Bi6Mq533crU79bjOqMNHGzoi0br3VAusEz2RKC6ZO5DeeLNR4ym8HOe'; + 'KZt5hY1dglcQC/EfIzojYyTNdiex6MWN1kKB9zmD9PcZQphbPI2TXIzLIWi8O8tcBOAF497BKm0'; b += - 'mkg3hDi59kJjaZGwE3JlceiDxtjvCNAFVHiYbHr0tVEulrG+DihfSyOdIJ71k9BT1r6o4KhFijU'; + 'jWDQZhDdVKkau5TK6iHY+Vwzm08EGxpldTrJmWYvGwDj1Hz91E1GjOJku0OvRMEK0OIlodVUTrB'; b += - '/N27nD7BfXC+OS6Ne5NVVJ7RaNYXvvsn3QSdwU+WONwVVYeR6UIqnVgv7Umf2wE/MMH5GbyZxGx'; + 'la1hZzojZfbFiIwmDn7daEYRPG6XhI/xNUd1CM2Ht4msLSbiL50CH2ZHmNklKNvVyWe3Pn47z6Y'; b += - 'FwGyDtPJrK7x82pGrvbHoCNbglAkBORhvkIOMlqmfV/A9PFs2Ni5SWc8cZ2r2uMHVWhhqKbnUnU'; + 'ENHkIsUcJlcsQV2e2/wUc6vuASsqc0urykXAqsKmAuheK06TVNtY4BR05agftc3gkNraUjBAfMZ'; b += - 'qBAMDLYHOsEQJBJIOgyAR60BU+3vg9P91LB040Knu7Kzogg75bRpIFsOuJTNEiuhm46EHVn0fCB'; + 'IsVpOrIu8FCA8AYRXBYhB/+oBocSwvhEgVAwIdRWA8KYGBETSpTqAAAwgXb0vAUSHsZci/rKNuM'; b += - 'cDpgdrRYroFyOrB3z6d5BOl0APLGJOEaaDZXcWLUGkStZcSxDRPZ1nZ/R4BXgzCF+7uCmLaziXJ'; + 'dSG8Ro0N7Ns0g+qx6SL5oCEEzM6yN5MsGeib/aHNOJ5PybxXR9dZjeEWM6TTB9TpuE6Fa8ZTqY4'; b += - '7HnFv5xRjC9BsO5D2Tg7q9T3QUbgPpClg4gQu6Iuj1N0t/dDInCoTAmQaeB3fAqGBm9yfIltZIv'; + 'DYhQ5UTHF47FUkmWJkItfEEs5SN9aRVE0y0/JWdYOQdl7Og8Gf+DjFGshNslolnDhJu5SSreJJV'; b += - 'UmWwlhQqGvaK9II9D/0RxDRre7/b7S8rYnqFPQtwGyUYjNrsAcDJ1tFq62A1eLBy8AygVzaXSO+'; + '7SQ7ZpIVT3KrLuCDseSpTQ6mPN2Fah6xkntQU3EPGWDENXEPikNW1OMepuhpm6JnKu4hkGPv6c8'; b += - '7mkV+574rAkUeJrSstzepIx2bjQjq2NYVi7BzmEHzyzFKlbxaXROrc0vDYedz9DcExzf8q3pOTY'; + 'Z7qGNJrVATOtxNLAOneif1Fi57llW4+kXy2qomDU0rAZzhrqWMyRIEB8MOEMKKKxXms9R6Vpqf/'; b += - 'QJ+Z8rtxb9DbzQhVh3pafSkAGcdYz9cce7g3qnyzCDG45Uukup2mhuJAPtkEG2UqUjtR6xFrU9H'; + 'Zlf/YFRMZcvgmIgMQxh1cBo7gn+dCgPpCCKYEUTAmk4GpZPH/qeQ+uYd59zPt0szL8ZOJhmQs7V'; b += - 'SmFMsqLA00rjfRJ/w6p7IMvQzggY5gjqhqc+ZCkIM5HHmjDb/OvH+GXpHmblmQhHFsGfh5sN81O'; + 'mbVxt34YGSpDDPm/lUz5uk91ZuC0jCteUFtQQZOWNDejb0Wb+xAMIQzWXuZrQ5ocXp52YYV+Czd'; b += - 'IhlNgG5s4CwUMfBY8oSkQRBENYfjj19MCFEALoZDYSblLvcIRjJKljVKw6GlYXzbsEf/zSjdJZa'; + 'DqtQ/v4cx2fGu7vmazUYa1x260bhtriieO3mRLSmcw8UPPEe6eeDLm/kHp2Qo1U6dzcSarZHq2B'; b += - 'oRxveaM5p9vkmri8838k0Km6neXaW6+332s7EfQiVjtPB5Gmyb9aXOMlD5tajFScbgX2mhdU7uB'; + 'f148X2igNPDpnRkf9OGNmWE6X0V2vxds9sLUAs2OiFWxIAztfYX8RS++cXV+8nC7Gy4lq9xccbr'; b += - 'MWnZbkxqhYAIkhtBmSKCSO8Fv0x3eC0TEsBkp+dA4pIeeoz8/HqM2/Nq/7Dg/nnQan1IB8E+u85'; + 'wSN87WmdtVjv6wteNszSq/LNxiFzuiYkvjgpOuRWepFM1NHcBborEcEgPvi7XfLbql1xvKrfNGc'; b += - 'wG9cJYJM6+2saVnzaByG8g2kuhswlgo3yaSX2IleJcs/7Xad+Qb5LKJdRF+rLDySIiBfnE1bCgb'; + '3k9Q7fcqMZyIUtiWrAcW3rc0Rx+T0GIOE3E6MVfVmhqo6+mPzl6C2g2qM+9XQ3l9DS+GNHcODFT'; b += - 'vO9qALkz9qqV+Uvr5rtsB5i5c7sfDUQ7gvpM50G2W8lZBUwbHqGhyr7qNuTm0l4o4pDFvcVz3Fy'; + 'S+TcrvYjricx6vvwd/gALHv25uRuuFzx5cr0f7Wy33tpt/ea3N7FtHim72tJnzxNxqj0mK9XjWG'; b += - 'MPW/F+MZHSeCVdAUs6c1eO1TflbPaEWdov/H3wt4dpm4Nrp4LXLn5/qmjLd2gW4S3iVzdaumSIS'; + '1BFQVpU4ZDgvhluh0zhyZWrCqxqD8WLgW89iiO9diVosiFCxuRcyTnEQFjg5D77EkOnMgkVOmIE'; b += - 'EG77yalpVCtmVCSSq+a/XEjGUqsqA1ECIQ9no+m+Y00VnccMGJd74cYRw4gNqZm7zdK8khlkaHU'; + 'r7kjLJUttEu9RXo13qS2mXelPapb5K7VJfWru0FNqlZTXapb6r1i71Tq1dmq+XiXZpeYV2aSm0S'; b += - '3c2nA4fxig3kJnNd46TFnZuFYQVa2Uffzxr87zMAOy9tQL8BcEp8z4KqYG6bEA7v5opumAl2eXD'; + '0srtUtLrXZpeYV2Se6AnM/zb1cfpj/Lkea1Dbql91Bt6TrvUfpDC+2j16JU6mOl0nyjVOqzSiVd'; b += - 'UC9VQ72WEmZFr4vTClDKePeLaSEnVpOcOrJL5KKVizJyGWlvOk7myvGKGPCbBMg2UL336CSbw/l'; + 'o1Si7V6XS+30p6NcKoo3TWu15JZ6EWqjVk5rikWjPOplWW3Y/QiVl+pe+mOUGbFOCT2tok3ysfJ'; b += - '8jdIZBiJ1HjZIMQXfPqeh++Aoj/3vy3rgvtlDtPqCe93H2CBff4AgRTMNHlBS4ok06jJSqUZIcH'; + 'b6ZqlA+FySaLjQ8Hk/xtWMNG0viVEntTNooYjOti6gbjeI2H37nCpXr4TSe7o70PEOLVq+4X4uF'; b += - '7O6frW1KL7CaaW/CGiwfOgM3In7gPyNm18cCEIwFrdCNw7ZcPnw3eiSCU+gGECR8t4ojbAhCoWs'; + 'ZMiOnupW4o1VS1osphRRX4T/9xqsSKqljxtApTvOFVO8NlT7IGKrxV9FThjZrVVjfrW7dv0zfHW'; b += - 'CQLIlxDXD4lRlF5D6bqGzUdGEI4EvbLCCkJ9YqoJHzdIVnDNLVxBYwOdeQYpaksPGekXJSNQaqX'; + 'iirqQpXV+iqVk2pqyrdtkGxmY6TUlaxqmrFk2H/BjVQukmv0su1fX7v9vjlqD1+bLd5gL4Zz699'; b += - 'KpmmF/Y00KJGZrSycpi44FgN1LxGH2urWANV3aLeXuG+8V5EZrC9Q2rqKzOuVEWawtcqaJq3WyQ'; + 'yhr6jpu308bN+/dyfvnSMnporAgzCazpW/q0d8Q87fbtYR895nbz0XfU/dQ7r/JTw1XbNqht4Tq'; b += - 'wT6JmVc1S1qV57/ClqVFle8L+Wc//wryF53u7/E87Y686wkq7HMQRnYdJW7ivPyem2egeHYkYg8'; + '9YvfBMGdVZzmrOstVqM5yVnVG67eQVp05rDrLpVRnOVad8ThRnTmx6iwH1VkhVp3lRHXGQ63qzI'; b += - 'ZFerU3TRIVzO4Hw6Sark+1L+AaaRHZtwUjGmYOl5gAm7Q3wPtB82KY8rHoD4E0Vp20xR4L4o9wd'; + 'lVZzmjOuPuWHXmdOWJWbttW+kWfZNet7O0lHhYtVn4gnXQEm3Ty7fpNdvCngF83Up9004iOGL4l'; b += - 'iOVe58sHa2n1peY9fPaH2hwfdKAvRIkkjfhosDv9noWWo8Ti4Efe62vqSO8qVY0il1AoXFMhQfp'; + 'dPe+0u+kexME0vQosT47i+Hs7GXr8QgaNPC3BFNIF+rl9J6fhjHLjoiFFzDtxLB66YbdhPMlpd6'; b += - '0nSVL9mXZOw7GvrK7SpofdYQbXVOfGqPSL1BYceoP3CJ6nHTrx1wpFcg7SuA9ck2W+7gKCOWZtY'; + 'cTfoV3E3AmUr4QQmFTcVk2MxMFsGTRcRCAwgkNObhUsfAeuyHCSgR/e/tZQjlFmnbxkAnLu3lVb'; b += - '2ByplTZMd7nSvRMoNVAiIyYUiTMGNJkROlG8RMK5h2n8NhlzPcn5dlsWikOlbHqgDGZnq3qxH72'; + 'TB/VjLVFtgL6Fhhf4KVAGKr4T3ad/2wAhVL9eCTE5DRoo0TIt3ejdxX1ht175EN3gxm1U7dn21q'; b += - 'UYiAfe0cDT0HkoAbm1Z2Gx6NTXkAsGhdNQXeAiRObId7UERwko0riTqTGJdC3vK3JgQFd7LAM+g'; + '2SGCLXhu0GcoHN8pI3YtJ67UusfGuhg5r6B0o30lfSkqUO8Kft+Wga/Ts8bJkc+vTodKompnTQM'; b += - '6Ag/tdiZe0FsY6+Uft362BUYnVxuPt9v/uwqvA94OxNJ7WTDGw8qbdyve7i80KLfHKh0FWZSH3O'; + 'nrQMnppLePgsBVDjz5PDSuiyecT5UGFwg5kPJof7fp0ldx6+PkqyfbQ81Wy78Hnq6Tjk8/ZBiM/'; b += - '8s2RvpsOwoE4KzrBJOBdApaggAd2w19Th/ZdEu2kQDIPm7OyIfQjM82pb7N1JU68Pu3wjeinrhk'; + 'n3gueShYYcEGHA5WYpaX0XID5Fe8lT4EsKC1prbRsl+mVzzEKrFwje5+ZCstEYIyppdmlsjLbVi'; b += - 'PtXX8dbl+Wv9xEAdfmlYU7yDkMUuAQvFlbQNVD+6v56NQetV9SrWbNHUa8m6lUvRL3q60vUS4kj'; + 'Mt+rbB4gA3TGg7xzQqzB5d2haj6u26b5tpeUbHH0LXbR22zaAyCXgdktlGXCJijT/ax4idOjbRn'; b += - '9lilGUgGRDAQ8744ehjzMmdaHDWaDXypK5ICV6/PQX8O82GyNbjSByVHoUulTRqFc2Yz9CfQjXL'; + 'O/VmDFF5S6+WAEAbaeDZAxsuL5BBvCwW0EeVwLAwY00g+9Fj1+uV4xQPSlR694KzuQolByzD3lt'; b += - '3WHdP6juWM9zLNZJSQh41EJqM6a6V0yJpviycgQPZ1nazpeqt7iXfNJKK1mSvLNxsATZW/rGU54'; + 'DEtOj5sOBBZGnfTPW6SZ+NmhMw3PUSLrXsAODvw1q3wASIM2eAPPIKt4a1baCraRdlLZ0xTIua1'; b += - 'KcqxtUIrq6QbEnJ+umyHNvM7/OXWn3btW4K6FMwLXfll70tBuLcte7va6eW3sFAT1FuScU9lcqY'; + 'HfYixCazXxBYhqWlbnlEDo9YbR/Rj0esfkivlkesjh+xbMMj2+nbHuHizO3pB3nxg9zUgxz21W3'; b += - 'aUYQcL9OUMuAOY0ylw+E71CWpv2nOSQKvA9PyQWnvoNPUk+wdHuY1MspiQ9cVo7k3vvKcdKTGd/'; + 'XRTaeao19elsxtDPli6FbxWYQ2ayskzBVOqEPSKXYKIotaZxiwzGJCFR09Gsn2aWjbEu5crT30y'; b += - 'fkrI1ZZz7ayt7hNya5Ly29gaNi9jQbsqGCl98vvCfeYXPcVIKUNy7YgRv88sjyitJNgnwkyEqQr'; + 'aRGRiGHlfj69rgC1LqEPaiy4SzVc01w/U4j2UJ59Eba4iXQkNMOABEXAYdca9exjriPmduaYGoi'; b += - 'TuuPJwmyUW3Yd28cpMx7xpvVWkYJceE5BmatGkv0P6ufn6GnbnYinbc9NP5mets+eoaftSPC07U'; + 'vGly9aLfD9yjVmRURUPK855tCxWFfvyMbGqWEHLfEiZayvUzGPsZJpSMx9WkiI5ffXS9ThlytVL'; b += - '7wv+Nn4GkTV9rbMvn9ZrrApfawj6BFHtJpy5mCfzauROcfC0osVpszU3sFOrkkiYh57fwOQonWh'; + '01dPenz10vjqMxh21k1fjZDEFWpqBUb/sid/9wXaP/L7sBWZQk3tnSjNg5ggVlPDevDNc9kbomy'; b += - 'cT4ywZNTgE//mFDYgZE9cTSqaX1NJVxEq7Ws1QKwhzqSSoy9x2TLBTqY7U9ONM9yocplpwzcV/C'; + 'LCCPtG821PDCtuZ4nmmu86TwwPcV3mqulhIsdUWbztUT1rDKbhVPDCsrsY60wfmkpJ/oLNkGb9B'; b += - 'bpB5bKD+Y4JBzCr4AnCBAbEAQGBFe02mYwLkNHgWg2fS8+1GonUfyzDJ19MLof7HffMbB775M/h'; + 'DrRE/nU3fPfYVp2hVJhgthkwuFZI79pgqQiW3fUjK3YREoPbmUYVsQcQUJ29lXrhzONDpIJyWGQ'; b += - 'gBz7x76eX+HF88zuUAa4Iye75LRJNDCB378TBEM9MIv9BBHC9Z4O/hd4iEDIss4mNxQEmAifUmm'; + 'yYoo4MMaMOcuYkWycxYBxno4iYWFG4t5cWbN2OCJhDbNg0yuGlVOsjJz1RR2eGhKjp8eqiKUu/9'; b += - 'pIFNyj/BuqJy8VBucJwc4LsP75Aqx/Lhte3s081h9kVYtg/V/e8pfc/rKRRvngJ9znfp+bywct+'; + 'bBUtP2cbdM7fgcc8Hhbl+1KSU5nhorx6Uedj2TS/cRGy6XxeNP2sgZRpdhMNpIgMjJkw4NBDaBM'; b += - 'mjiDQhrIO4B4eqoTJWsBGzqdtS9lmXUt+pGspB5pm9VXjQlJbmxpv4WZ4LjV0KaQTaMVJ8CMZef'; + 'WJXb8JiNUzYtQ1WFZg8PiDqNRlvcRbagjILaSVVd7BLhMWt5BrEoG/pELXsfxOejO7Ylwyq8jnG'; b += - 'giEnBqkiLUxFn6dsyonIsffTKC8sFKRF7XDwdLvZQ519j66NLV2WjyoAJtfftv4K+x5gecq+Z/v'; + 'LtY8YKp4jE08bdLbZIRjCVt60M6lhZaKRAFsa1UkCH3c/r97RN0cPMaDfb+JeQAIBmIG80JPMwj'; b += - 'Z91Kw76XhtKmoN9KstnL6SNn33H0Psu8JZ0aX1NENvVCjxq5nNXLeo7zuQva9FOx7qbDvwVnW3E'; + 'fNg9+NWSOYyLJ6q/2Kl+I4ZbFkZFk91Gw2kEU8pI5py0qIphR1jmNfPmBtriu3SYH/XxvOIBWrm'; b += - '6Ddzk7AzFokY0cTZbxlLtNV7tEthSGyJeY9GQYiBpCnO5Vj8TRmUrSJ+BB3SZFitnK3cSdDmJlp'; + 'UlXOZdLzrzifL2XeYjw/pAye2yycKTwnwjwds6b09LuFeIHcAgOnN5s5kJW6WJj0/OtiYiX+Ta8'; b += - 'blyBC0Tb3Fm6thUJxOflVsaKqB03yU5Gf3vgrShuvtWwaw0iqEt054WEQqLaAnXtW5U9DDPHoE4'; + 'QkF3zrCqeVyI/00VKLeRmejKtNF/lQE/PY/4wnDiL0YxJ0WLoAc1jhXp7sVD+fcFaF3aDHMkOLH'; b += - 'XZiCaiSKA3vj9YmnQJxMcCdNdSKS3cPng6CoJW8zhNZ4m1b9ua3HrLOq4m2F8oq4ns/9f8euG/K'; + 'GFentJMmioxaRmqBgE9fUNYoSMPQR/h1rChbRdLJTt4n4G1/6gXMImdipTLk2HW1sWdrB859Ic/'; b += - '3xsizhaaMOdCNJ1A4sq1L9VSqulL2NZ7I3+Q2Pf3M8htv6KaSylwkWoKtO3dAv3ZADqZrJpVOnY'; + 'B3NlEr4eyFbChFhhI1xqmmdnslErRBTPa4W76GtoliXxtGdZmAe2S2PzxNomgYsvIcN8mWzIuyi'; b += - '5LRrkPFKnqtV7fjVVFFtdKrr+L37Kr0lSva8RKYuJxX1Vdr3WgsAe6ia8oKuPOoBKwkLN19apVN'; + 'D6u3TbGWJkjvVJwZNbVT8QjEdmjfRD8FbFa+BLDLbaJDWrHJZiX7JxRGZmuJNxVfF/UN8ROq9hQ'; b += - 'tbKpr6yyekqmw1WNq5XNlq0snDnfsz2p+uoNAv94vicXuu94mKT7zRVsOEYS2ZqJSL4dyqqOfXp'; + '/2VNyZjENQ+s8Q7ugTL4O8V8iJvdKxXrzOb3efLI2rrCp3nyyiZxKWbM1nlRCqaubVJv5r8GkGq'; b += - 'GBPf0pU137r6uAt/9rGBwEU+ENjI+qTObE3nTGA/b20q+1H+B2nN/W3Kn5buZee7Z0k8b8sVl0a'; + 'OeHL49d9+1Taqf2qn9lDbfT02qj43ar51UPQMa5Bn5htyvq0v4T7T8m1ipXjPXc+vNtX8PvVCzu'; b += - 'vlbvMv7OAZM6fTDmiXje4vVKtmNN56Kz1KaNw3+dvbErixkXlLEd9yT6FXmQsTBzET8YEY+Z3pk'; + 'XbTunuZ67TuXuYaZmzXgsDuVSGwexVz7VXMtZtCYGM3YlSd+Vif7Mf6ZMz1nLx4RfFcE/GeAW39'; b += - 'H0QrSmoAjrhkDJ7839gaQCpzAnckrz3SkMI4HiFXqOtpwj6wIlFB0zJNrhlWBEe+YdnJLpwaGAB'; + 'HPxH88ncyWyJAlGX77GcTkHbOXXB8zSbU68kEalSc+rLnPrJnNK9rwl/3avC36uZU3+KOfUM++7'; b += - 'ETzvqAlyTDrMA9EpIupOZdI+qbQiGtdKAF0ItJ8YzefZXn+HQTtsJ4/2hRp3ljEriVrtpd/heYR'; + 'WnVevdl59M6+K57UYTYOnV1F3lalN9Me+4V86qdRp1fczaShSGjdgOA+pKSferZp417zJ1OcLgr'; b += - 'JqMnjPy+k0m9NFBngImoaFdjuo16g2z9NPgGafoHC2V8qR2elEmgYR3ACcziEe+2vQmFFeyqFnd'; + 'CeTQ+fgfMFRB0zhI2a0cZGWwKgGQKgGQBQ0OiIkTNHjEXlsDWGUUEXDAjtEQOK5kUg0osAoIIEP'; b += - 'WizPV4ikTFk9WiycWghvmFwE3uGZaAG6YMwvBDUfNILiBnK0gxK1QDMajGBJFMdDLgEjl/A14ed'; + 'iSI5QGxGgAFFQCaIQBi8LQnxwHzAgWzQ7fLg9pjKkN3L+j25Dgww+7nmJUZyXHAAoxAx9M2R8+g'; b += - 'Z5FAPK2a5YALUudTwSj2IwimL4oretQuoePC1JXfTqcgZmkwElKySJfoDk5EGYarUwrvug++pKq'; + 'f3M2xeBpfhBorzgIFLBJttddFAS0BffiNHDv1rvteWBOch5oqTwPuCluzK08D+Su7TyQKOmrubA'; b += - 'Ola4WJSMnXs4g8OGlTXBuXGJL8MHqh1fQJU6yeDhKhI62S9ekG+XPjNtBbn6ZpsG5LzmroOqT+J'; + 'petqm6JmKC8vKGQenUvo45kMUn6UTXoXOWEL8zcQa6zmWmWzmc+wlogHtdp6hOS2XCqwJLvk85y'; b += - '3+j3jOTI2r1gc/+9mFY5R2Lycv4DlebUHPuIv7WS2brHc96VO8FELNMXnUJcaJO18YzIOtCtN0f'; + 'VahpaiFgxJd1lDXe/IFbkPFDK8DqHxLeJiWKizt+8OccZUjHNYoTDjKFWojrvKMv8+cg1bJTLHj'; b += - 'ZrEAKxxuegXSYbMv/jEHPo/a8AXpPyQGiNSFmhKfM07ktT4ypVLlX2eJ4AFCn6vM7YjVVhpBCyZ'; + 'CjeVwA8XOiEM6w+psd0sdJYF+nFu0RdXEQXSDYLEj26YdSPIXJuovdykcc8wyOi089a9rXSxmJG'; b += - '9htZL8Pc0uGSp2n4t8nRebW8+VvJ35Md9xRnynlFwGu+w6F0M7dyGn3tOJaAadSvSGbPmorbHfn'; + 'mrUVOWtq5LTo+LM1I42lxjQwYh16HsRgHeJr3aElyqnE6GybIbc49+yL5pUrTm6zG5/cOgFzR3c'; b += - 'UJKqW5qFo38g0lRvxvcy56m4OSOfgDGcbn3AzpB9u18Mg5jmF20nedt1c6ihB7wmGzneSvt7Lbl'; + 'KrnfiLNHZBNdTZzb32s9sLzvOK3zBSzpr2PnrTJ/gOpM57MQcdmIOO/kEN1tOcLNlDmfj9Da72R'; b += - 'f24ECfqc23nWaDvfZhZv57tNaOeDpr+dd2s7n2hLOz/elnY+2F6ynefb0s4H29LOj1lp52NWb8g'; + 'y+pNPbyz6HbmoOGaln/8vM6GzMqJUVzU5mdDZmdDbLzFncSGen1PmJvSXc1EtUHih3i//tNdhfV'; b += - '9WDMAPE11E9r59xe288l48XaeDcCE1VQrAcgPRtjEri9Gr+LcNdNEqnLINSR63OsJ0cEOM90MP9'; + 'BrutEVnHRiT9VhjjDbd1uvpdd6D0HW39bgP4uch3bZSPRI5rIaG6UUbBzTFHxZyt8EKQcNODY7o'; b += - 'tuuMvNPBHBLI9Hv44o55byb791OOq9IIpeTI6ibaS7dltfNyn7DewRu5MCTzbxzOGvvuDVRdaJx'; + 'bca8YTEPb2PttScdX4s7zAWaDRvi/q9X9CdWDfN5KIwa2qJzjpm4Nhg1PEJ/NGIwtun5a/G2nLl'; b += - 'M95l7vc30Qv46C7jRNlV4sey5G346+YLHlmihyVw68cPEMysJ8Mz9vrO6zuMaUdtvBOJPxEvgnK'; + '2K/0dVBLp0U/P1W11XHgRpa+40wT2USawT6337+0cbEEi+kh0QfD1bvGzHEwhR9uMbP9lbZx/U8'; b += - 'nyviyXyrW2Uw7IGa92ogdhBS3QciBwRcauwAniOGAjCF0hd53L70tEEEj8usxx0QCNBXFmlOCw6'; + 'H1kmtV6lqVXKvMtVFY99rqcEns9VucVDZoroQtSL2ziY10a2XcKW3CrkkSdUK8jRUhp+5ORVVKQ'; b += - 'l6j14bFxXf9VUa4MyHOanGvqiqtNCT6txAJU9q2wj4AUtQzBEjdT67/zN/cGCVQPBgjEJFrRDsE'; + 'p44HA3Qhm5zJHSbE40+I7FxnGjoGYnYyVE2xqjCMXG+YyKfaftsh+MkRhMc3xNvYaPruPCW7pS3'; b += - 'CYSsqTPlhwv7pZZoTxoQK2CuI+nxLWkWIKw9ELEcx3d/8x22EgBikS9BlLANjN1J+B+AW0aSxUa'; + 'K8rbOhxpSkzWeMYl/F5b6N3NlliuxGZQSZjRJOAXs2DmG0sevHzlkEbTDtMuBCEruJDRcdZrPlo'; b += - 'WKq0sQ9SXrfThVYqKltpdtq+SYR9Jlh3PINRpCrpjwuEB+ebwaCi860y7d2hCV4iSuu/ZFcUHC4'; + 'VJBYfAmEikAO4+bwEoUoFbVDRqRdOOHGQjTaGESfALv6pYisZJxWpUkUjjUbbZOyDL9hk7KZh8i'; b += - 'pnz0W5Xzum+VvA/EGu3DJx3rJ82GpPOyEiKB77JjqnF+9/7DPugLhR8JbeJFiZ+L+ojw1vv5GKb'; + 'em4eYKsEt0qzha1i7x6JfU378Xg/tHvmo1F+UWw+QrV5GjOmdyVDsS4lrifXUil+GEEiHOPN9m3'; b += - '2ojxC+mueuF4RXOE0FYmVNVtVUaRO1GdKv+860T8pdUrk033U2lg6vz1J8JZqMrtkgOe9/FSTM2'; + 'gaCcHTdInHRJkatCbGb43CNfPdY55TjUg8/jSNK96fRFQF4PXkI3hhspgRThmlu8bc9cFA52iHA'; b += - 'C39GU1BJKuFZ8oiGciSTkEIAbTjd9Jug0YcMS1TczYGyei/z4ihIyH3NB48H2Br7YBU28hXy0g0'; + 'SJWyiCOQTqzt2cTayNuOOBcZiXHhczRYzSEQOFqGiQPCaMMB2xGoEeEISy0cgg7p4vGgvIcXaLm'; b += - 'ZiMNZxleJla0N0U2B3VRpYzSY3eRdrVQ1aGMZnUc+7tJpsVfSzL87d5F5H0dbs54XvQ+sztuNzF'; + 'H8zPmy8xNcbA2+BWWw6xkbAevgLhTeRv4kO9m8Coj0Ua8JIZLYN5Tgo3gKziYKVsf8/MyfGTX2d'; b += - 'kiNViXv+9h67Nt6ZlLOu3uULBEQUlzvdvP8NC0BEbq6aiLvUt+pBu2SrPhVa9dEfrFX3gSv3h9K'; + 'Tz5JCVPIoRzeSrt+F5YV0pYefcWFNYJ5Li3sFRs5j2c8lEUjz78dE4Wzq9b2scp1BJFnqCDSKDi'; b += - 'q+4y26u+yVfcZ36o0hsDJeyKqN6rr8r7W36b7+FzuMVWb7mHJ3aavTfebtfFuO9CmzlxZtE0P0p'; + '2Zotbkpq6366I/cFFCVm/YzKKMrg/amOcG71RyLoY2d0qYOvtuRlwieIHx/5OVvdlinzbv/fTDB'; b += - 'C697n0jS+yA30j+bIUe2L7+sZosKtSTz4SkJl4zJFYBTOjhR2VrToqW/WMS1xv7Y/gclZ60VpHG'; + '5YApHPwAmYeoFYFWEUpFPA0R6/W2mJ4J8hYkRNhehO3dvw9pyhWH0jYUWJavvOMaROkpVsRmKdr'; b += - 'C3VLx73gIrUt+F2acGkm77ATX/LFuEpMlsH/fOHkMl9zM+gk3H7qPU0mqQznrOckiUwqR/Fr3tm'; + 'YLDYuj7JxeWw9vwYvM8j0yUGg4raKz5tZlu+p+tD8Wkei9SEykRbS6CCAGFOsmVLL2clA8CKmGf'; b += - 'c1bUwHia/JaGAP64+0G3+yw23209hU2iKUKe7JnYBDn0r2PuHXy2fVEKISaJQto5Pce8yCF/kXu'; + 'm3O9Yj1Ltboj3Sy7JjAUeOUFHLAxIbrfgZ9jZwi6/KixmtKk76xa/77DOFPQlsfr4yQmr+b1vc1'; b += - 'sMNzg4o01zriQ+h2xgxdN0F/ULosjMI3nfbiuxptwgSSGO7rz+yrjgsTBUWbLt/JJu1grP972rc'; + 'jjiKUfE5VvtRIzMjCxs6hvyrPI5w8urjdqGlQkXaomqabM0ptQKZ2JlQ5MTaUHcCbgZhy6y3LdI'; b += - 'y5emjlo6Zq5SOmr5VnDQKv0spHjNzFrPGtjGn979RbeQ/mzdi811StzERDP1/2rYxD52Pu/Vxbe'; + 'CMY9vphsBma0bAuBhM/1BGU7QSiGfaEbHl0CabDschwhPldqi62qLzgc1ts4OXk6v5Hlj4jBjBs'; b += - 'Z+/yH7T18qHtH53m8GLJpLYFS7LVj5itJX3mUVa2e3ozl+18kFDo9yKq8oOCapbiKIJKe1k9KEp'; + 'V/8ZHVMVDKvSI7Qqikc8QkqyUcOSRErtVGVssI0Q6jb3XRGLchKDdnm7jmN8/lSxVXqP0Fq8tsZ'; b += - 'S1JHwMTMdUsnJB4mP82JGnJYXfPiSMJ88kjiM3/dl1r40VwzhgFW7cY1UGotWZiN2KyTt0X0V/K'; + 'rCkztEk3Tn4j8qauTomgT432GblXtoX5GgRDxswkSqzxuDAA4OfAzsx+/Q6ezUEKKURMeoeOCzd'; b += - '/6Mbg9AOu4agHywSEcjn3LtcdnkQe2tGmxyLHNRTyoYbgZBJBzQxJsp5EfjrD9DoP05UBpTIgB4'; + 'L/9svKVoS0mGP44mBqaUM4E0Ory2fM9cm5nDthHxHvzJN0q8/5fTcDvVgx+bxLw2zd3y9q4mDma'; b += - 'a4hkkC2u06xfS2f9G9fq2i/WomF7U8FXProxi1Erqk4ba1BwR1Axnabd2mOl5vcAaPOncxx44gi'; + '3ziAJJa2ye5rg2Hm4tCW7BNKOMCxzjkjrOtuh5F2cn02uX6DYCv66frcBjcvEVL5emvr2OuNq7C'; b += - 'U5vdeWcztTFS7HzxjbX2MXO68MJrscZwg7ZojsMVTu0qx0a1Q5N3QFjXeUxdr1aPHXA7fiSwGJU'; + 'wwX24IIFkCweJhW53XUeiR59VrFSLnOgwTVR0dEim3BXKVcTyO6vsA+WdGF+Lv6tk8axwxjlSLh'; b += - 'uIIi1Ji7c7vPN+X2oYXbJY5NpjHJgZU8JexQNOFtdgcKV37rgwIFhJ8yEaRKFD71brSpywhVWt7'; + 'X+FG4wBUT/TN/LhKk+o/JMQohCHzeshiNG+Mf4lj9U5V5lLC/EL/yvUy2HuOW/JC30Yep/U+s8t'; b += - 'dZuY7dVZFK5LOq0m3kH8YMzJRTuphRxE9kQPdIUzXSTXZsvCcg9VRLLbVd2ZJ1Ykfu5HXPtFGUF'; + 'mCIX+q3XXmpHte8FJ4buvRO7jW9E0qjnEwVX49F7J6qeNB33Tpfzw/yrvZBkhIawel5FnYjmCPS'; b += - 'o0Xptah4FrsxA7iqkDd7Pp0VR3L91GYePq8ZO1W8DN+ES7J9N+Dr9qvtNut+hGYNojbMI4FqcXp'; + '+pqthLmCUfpCjk48zpnfVAJ7CKEQugqzZ2IBqWiSW0ZSLRe45VDSgrsO010nONJmdJyTN7t4rTj'; b += - '2mnW8+ttdPxsTNsp+Njg+1Eh2CqDkE5yC1VR7HYVr3+gnbafe4ZtpPbsb+dbj13iXa6/dxF22nX'; + 'CaPyGnJbb45DYQuv/7qpI3UhQS+pG3FpSh7YKUgcaKaQOeTNStO65mNY9naJ1E24DWvdcTOuebk'; b += - 'udJOcDUNtNNXdaJzMiHhkVVyA8SAt/cuT2qjSVKN2UQA+MGkoX4bhsHwABvsxo/RFc+BugHagzk'; + 'TrkEa5Dq27bGndXzOtO+Y2oHWXK2ndhw2t+0ia1n20ltZtS2jdZZCWGlr3h24VrcOwUVWH1o0hy'; b += - 'rhzU47P2dlSGEe+tA3agN1A2Z8vm01EIPTvN7dYiWZECcOFlsDMG0iOc+5M/tx+dEOJ2OavWOWK'; + 'tgfujGtG3Mb0roJV2idJAAxxG5MVVC7cWWfZandD9LU7rRKkzvBkQbkTuKZT0XuRlwhdxPuVORO'; b += - 'lRdbGGjs9SXF2xsWB4huPywTe6XvRF5Y4bfaC54ZoS/Ztv2Dl7Bg3rh+kzadijRmtupGFnjW9Yj'; + 'rp+K3PH1CbmbcBuQuwtuU3J3wUZknyvvVE3uJlyz4P/KbUDuzrvxij/tVpC7Mb7lj92EuI1yyz+'; b += - 'HR/X29YHZsbtbFZG9anClcNe/g5Nuw+f24/JGvDHtLq3W2kRtXFGjokS3F1xcaCEXmJhp3jUPyQ'; + 'kWo5xyw/dCnL31+46b8RNv1RC7sxL4blTk7sp3wklmGnJ1zO5O1PxoITcpb5+anJX70EioInJHU'; b += - 'RttmUh81In7mg2LecFVoVk/1hXz+CG62+OLoVDAziL59u2XgRqEz7s9bagXkQH1DVYDA0FOGyBl'; + 'IFsL1XmtyN0xcOBwYVDLmLQbGPrxhzE+I2xC2jqZbd3HLMrSB3I3TXwYDJ3WnXkLvTSUDl+A3xW'; b += - 'c5Z1K5mqh2cpq+MhUxoBS/pFUjLSSmdj7MznsPuMrh21IyHaD5ikjCdnks6p8ujhhvqcRfq1cdE'; + 'iNBitytiUOmGl9Z+sFRlz/At3lFuPg3RkhRfLjpVS/Uveq26mweEsVfsRilImmozWgx16QtgUTA'; b += - 'aynUUF5GmorSTlN36PcCe54N7b3crx93i8U9+227DtSb/tY8F6rMPB4kyAXYKPz9+X+OQ/Z669P'; + 'M0EuwbF+3mcIFb/Af51VkGhT9YuqI2/8S/AECMAldY72ytELRFr6o3U0IXAaiVo3wTlD8q4oTqJ'; b += - 'fam0Gql8mIaUHkZ/V8VfOqSboL8L2KrPHeoIKrgg0Pk6kN0ll2JzBIvxSqAr/1N5XIADTV8EycI'; + 'Djf4TJSz2jvsk/MYgCyA/riTi0iAtgkMnneKnZBpVdJxqkSt3H+R4MO7m4i8SCIz4qMmrfN95xd'; b += - '/Y4k2VMEAqOexrwj5pJTRSKAytw5iNHKNR0y13RI7y4zyv63vkKJrZ8UlNhtHiVGp8remxQjptm'; + '4lv8qJhRmYxHbfUZ7H2OGbkDCSswOnkTwV8vmbnCmnm0rflMOWKv4fyhTOqfyWdHDuKkmZEWf4V'; b += - 'ZT/rs8BuVyQ9QW0mllBTZfyUEDStcBEILfjpFkVsoARIZ6lpkly66r+U2XXSf2G5dbK+xt+tiTj'; + 'jolypP7uiCI8sQZi8/efixB89nY1UjQTFBvEVqcd63QYkWtfMtBVL36o/vi0SKX4n1ARVf+gTAv'; b += - 'kdLo6usf4MY2vcRyiLq9Y4I1cWC36WXLyAXyEXx/lhcvGiNfYeXVzN3oOLl7BD4eI69jFcvGwNQ'; + 'X/w8IjK/oFioS4N7aDALayWqtCOqP+2Wk3xLvMvlV7J8joMz0zb+254JaW3ledWxq3l89Tuzfmk'; b += - 'KVcXO+6cF18qevVdfFK19Hr4svX2Md08Wo31Ojiq9bY47p4zRp7Qhd/aY19ggnhhCkQel7OfB3S'; + '8/dZfj/OnvBthQvnuEnnVZClByOya29B0TXWblPiRX8ureq09GcnvNRHn90KZToOlIBJeZtwVhk'; b += - 'iTVELoBA/emnaGGTo4EUkDurUYsZH7VQGHsszAcADOSv8Uh+z4Zg1UvQtxpJUogkXbiOBhMGVE8'; + 'jSIe1nsgaaZQt7bWHIFvbYwm5b2GULg7ZwRZnCZVu4ZAuTtnDRFi7YwnlbmLCFc7Zw1hbO2MK4L'; b += - 'KJHAP5cbXBE3i3bEEspmDBxyelEjoIigB6+4JNqpypZxSYicDdeivIXZsSO51dUxVDa7JRV1Fi6'; + 'Zy2hTFbOGUKPcQKb63/P8nhxCa/P+DMZcQ0EOjZzOgiES25ASEGrVl5wGNgQGyPDw6YG72t1H4+'; b += - 'bmjfDaeiI9yK8yZuEvMYMIResumSchBJsDCkZP9gyAI+eV5wN498wzzU2g8DIl3Xtbf61rJyHlT'; + 'aZdnP4bWC0nrmGndWhLQhXQv9sCHFQeY0eIDOoMQJhnkTWH6WHwoWlGimyD8R8AGUB4UezwgRAS'; b += - 'TazyfIlvRamq6sk4ePIN+43DCxUbAnlIWH166YQutvSbUx5r5OrXL6H/OSgfxd+R5E9xyGY/RA+'; + 'abVvMzTu3PCHCKtb3bduis6aDNiHbJ0nXVEV3Lu6me2xGZLfIK/MLEjvrRgP8fuaFig/RdPWXzQ'; b += - 'Q3bISDxKdotAJt3s6ae2lslUj0renOyATsRdYgussa4/I7EzmAMa0u1JVCfDg8BaIv4xjnJjy1v'; + 'vRmxmLrOSFvJoXcvmN67+QKxnbpnohepPN8iZYmXg9gsN7+IUQDbVcjErEXa5gWY//eKS3bI0Gd'; b += - 'C8hgp48AYLE/ZGYe2voB+0uf1esql6OIok3hWArJuJaNPOhKL7CYhw7cUFmTJ8b0TOb7pSmqkpy'; + '2zlBAsZ7NacWyawx97AZIz5tq/ad6RFkVTEWkByiFEl64DTQUR7jOkTsNxY5gDPlQlYgHwcXISh'; b += - 'vdLK0vBRejsmSQrrBC9AAUuhz+fnHL9B2xgcpnevVYsnfjevauDouSvRuDMJLZu8mFTMNOkL1LK'; + '3BWJVAUh6GUpwjLukhShMp6UYp7Dt3OxDVjvlK1pwHnHaOgJYx8NO6rQ1N3grEOSjagH0jieu1J'; b += - 'l3N3o2RajkO6BR671gJJsfoPmT2bkkwAuEmPkH3PJJs+wzdOGToti4lf47wWCX04dE19DE/Ox+T'; + 'cuiEuTYtLLVISjNbt0eDggZHsY7qDNuI8IWYh+sTgyPC2x6ASeWZw/AfbqZSPvv2tLz4XUKk1+v'; b += - 'F0XCZwShRuUoRQdG3XSZ8ZSVHFYs4zgidCAgjYhSYsIHbDWGaMRCjlfSxo75LkB4VrJwLUUE3A4'; + '7Il3+MUkv0B9/83ieyVMpFfzbyH76DUjb6u7N/+exHqRREv/rb+ycwzo8+972dD1HBi37/9/7iN'; b += - 'CYM5Bms4krJTzHMauXGv66qwKb3QXVrFkP+XlKDmui+jylWoRGNFfsH4t4vvr3/tyG8/1m1NuIw'; + '9RjWw1Kb7MoPaQYgwhrfKBPAAumBJ+RGzxLdzHoEyT47FegT1CNz34F+gQp9AmAz4HFZx/47Bt8'; b += - 'ceAqEZ0GTaonCJ8uCxFu9bKEvJtTqqI2ckm1ufBo7L1jJnyjFGkMYEQl2H/pgBkQBTp8HRRLWAS'; + '5qX1JgQKmwJ7RpVgj2t4FRGy5nvEoIYltoSRskc7Jhx4Onr/clx6wpEIy6OIzy1DUXbjsW4y9ut'; b += - 'RCazIJabQAEl4c+dFjEyNNXgVTQm/jpNSOGJjyIREUrEzGmS9AF/cFhio/a8mFqilqJZTFkhXsM'; + 'Kxh5SyVhkAawa2xPvMHJEdVhm3EGf0FGmfebvlZVr9jPlm2kCX3eWWVGAsLGWswVHSZxkLAf87y'; b += - 'yCU37n/OyJyyls1Ml0extk/v0eb/rZqC8thwi5GgnfJe3TFSI+IXIJOstEIG89ds0GPDkB0JQUG'; + 'YJ5LBrgk0Xz9CRkU/5NAOlLPIw0MeFEDL3GIVQjwkTYFUQPca33ybI0L4gMFMVnGvpZhwowZFgN'; b += - 'EjMzKxWuXxZ4914fUTHlkVphejYTU3NP90mGG1NCs5SwUp8h3jTR/ntIgHZ2Uj1Nde2nUdC+agH'; + 'zorbWVLVYXYZrTfZUOgg5Smaaux0+GsGuge4+4LSXcu1c0hDGIiC4ww7DgKmKWfEbZmXCXsDPiG'; b += - 'o7NvSM/Xynyfr86QYDMVSi2cB2N5s9ytEXEo4KpLG89eWO+w/L/MXV4yCW576kku7MQ2qdGauqZ'; + '4pMgBoNW5ln8lC/SjpD1OECaUYVzPVhvv/gFT6ZymFNE8mHSExla/j978oAhkYIi/DhH8BWaRN9'; b += - 'wVd3n/bYz2986i6830P+TtvyluV/4770O/QWblittW4yQLXq2jHBa0O1Z0xBKJq0BaO5KvYA8zk'; + 'Oi1HCgHDE37fh5xH8PISfB/HzWvzci5/X4IdPSXdw+jn8rMZPP6cN5JRxnD4OP5r1NvjpFERAQG'; b += - 'G9layMoYIbdFH6A66kNoR4MIbdE2A5Jav8uoD2od1aHWgsWO+uDcUR+cOxqEc0cDcO5W/pvKzjw'; + 'FWlrGS0CS6m2JfDF2avkc1woeWhXDwaO2aSSeqJeTD3Ms0E10TWiLPsc0QPTJhkXewzUQbhcoYR'; b += - 'mUGzje+d8RQ2AfUstNavB+WIFo1WwFtlXBUvbFATWkCByhWNtMxjWRLx6c5FOU8uBeC7Zh7+bpT'; + 'DXNEBMwyZF3t81EX4X+yHfZZvDDTIzkm20z0WihTDIftpmoOJMpmSrbSmReaJZMozSzYMCYo4E4'; b += - 'ibltN5/Nbm6WlgYwXBJVrWKcxNNz261dlpHVPpdceoiyU7Q+3bXAyYbBcDJltUu/9wUN+5GZkEB'; + 'ETDfIbBMZ0llZHnK7hyCLM8IfFPI8ijhyvOCK/sNrgwpwajFSTbSOeJryQl7jB011EH5CaV8s1+'; b += - 'Rs6c7sL6dvqp8A7NJ8ytk24CWTqAlS5jLcI8dGvkpnajwsqG4gNT6R94Zmg1wfXqVXwHH+UlBcG'; + 'JdKnexpUcvGiPpjXPNrdINyG7gSSecHJSKq5zilLqXMcaVg+6fUdLqWed0wN7GxA8VsilKSBH2P'; b += - 'IBKs8q8kkktxuv2QbzZnfRbh0vuBzOJbIqp42v2Q2PuZhDosykV9uWemTpQ2OPG0wZG7Z6CerX5'; + 'GjlWVewERY7hHHJFrHOAYhR55r1FiuDlLHnoqELb65py9U9VN/odzO7Z9XNtHczfTgm4tfgb5wc'; b += - 'YGogC2HfViHgUy2fePDNz3ctH+KTzjzaEbyUKdMRBPTHrejLJ1F1Sv0myfHkOYyvTIqge3NoQ9c'; + 'PrmsIeqPdFgSzn8FM+az9f2RIfy5XBNkvN5OB/2HhkIfSQT7okOUOdaLKwFSdLnAF1r0DgvSfrs'; b += - 'iFN4AjE7AZI9okYquYdrEWL+OQVaNUJmWdXHYMcxgSOXpZAl6hoiqHlgQftQhM5L8qw7meYruco'; + 'HtTzaPxpGr8OXV1UGaPKLagsocopqtyKykKqjFLlNlRCqhynyu2odFPlGFXuQGURVY5S5U5UFlN'; b += - 'jSeh00poaS+/MCWL2Q6fgfyTBmYF7r1crxjJ5LOkN0Wr5/AC3bd5ZhucdYswe2JdW8qsonxN5GH'; + 'lhCrrUdFUOUyVV6Eynx67QPemV908xry1OjhIPVJ5FW389NLzkzzP9L7zTed66dRJnmfq1KbzTu'; b += - 'amZm9pnoxh2uYEwL5n/+RreWydrJ82/cgY3ZTqyeWo5NY1h+usmDxt3yv8coXbdzx44dNKnp7in'; + 'lcnOR5ps7FpvMO6VyU5HmmzkWm83bp7E7yPFNnt+m8TTrDJM8zdYam81bpXJjkeabOhabzFulck'; b += - 'haMw2rhTprKjbgH5tA3ARemLK/W4kzf+0wWlgOilSGyoG5IZhdwcTb8T1f++dOE9z08ru8F3yKQ'; + 'uR5ps4lpnMdOncf1F1xnucu09Oj/YO6lyvDeZrAszSBd1moR+NUizCdKdCfobYN9UB/V33QX6Hx'; b += - 'xPNG5095BA6QeMzK4AO77+Rk9vXgztaL2nep+sHwMXy7Eh++l2QlYe4XQ2cxWU/luyaoqFAK5Im'; + 'r7agv0yV11jQX6LK3Rb0k1TZaEF/kSr3WNBfoMq9FvTnqbLJgn6CKj9lQX+OKvc1BP2GNOij5MM'; b += - 'bbYp/9PkWmTf6Hpe+gyar0fsbQfbS94gQR4aDjCOgXbBrrELqWv8l92awdjYvdl0yy6bFLlYNNc'; + 'dfV8jPPipRniwqREe3NsID+5phAcbG+HB3Y3w4DWN8ODVU+NBtJs289fGkB+k2v1VkN9Fba+rB/'; b += - 'WjtqnmnHSAbCppNNnCOWTTNk5oy5YdcwzE+5ToshMbkK5l96jRHC2eQKy+Cak/MvF75Gnp15P3t'; + 'nX1of8YRr/gIX8Iao8aCF/gCqvt5AfpsobLOT3U+WNFvL7qPKQhfxeqrzJQn6IKg9byO+hypsbQ'; b += - 't6wM/+iZSTlNpFtztTqMNIW20Wu8dbcRNM0O+jVbLTdaOGvFttFruiG0kR50lbcRjRtFGcsTzpY'; + 'v51acjfn4b8mxtB/uFGkH9TI8g/1Ajyb2wE+Tc0gvzrG0H+wUaQf6AB5I/R/D0SQ36Eam+pgvxR'; b += - '24PyaZuvdKaSPu/VNoI9n7fGkj7t3p8bKt/9e0t5fHT4jZC6OjfNKtlM+cDyVedFSPuVXmi9guy'; + 'antrPcg/Uh/y52j8T1vIn6XK2yzkz1Dl7Rby41R5h4X8aar8jIX8GFUetZA/RZWftZAfpcrPWcg'; b += - 'bCssOHHEoeFr43j4HnIYglMlci/wXnQ3Z7PP5uYI5O1bpaxFCzLpsNP9yL6fOgDok+IJgjtLfqQ'; + 'fp8rPN4T8W9OQf0sa8j/fCPI/1wjyP9sI8o82gvzPNIL8OxpB/u2NIP+2RpD/6QaQv0Dz984Y8h'; b += - 'aH7QgOInzI+dX/YSAjTnb4W9JWKa3zJdAwbRxyLNTzvmFx71C3N+4UG/cNQvHPEL6yfl9zJdX6e'; + 'NUe1cV5M9T27vrQf6d9SG/p1AOf8FCfjdV3mMhv4sqv2ghP0iVsoX8FXrGZgv5y1R5r4X8Jaq8z'; b += - '/l8ivsybrdemj2CKNDOhj3K2unC7t1DT9HKY35Sbb060PWZsEhKUABBMisNnI7mE8et9h9nqpTt'; + '0J+kirvt5C/SJVfagj5d6ch/6405H+pEeTf3wjy72sE+fc2gvzmRpAvN4L8LzaC/HsaQf4XGkB+'; b += - 'voiYADBFA53dhVTTZLk3dUmIXiSofBim846DAgZ0DMZMJWT7iJuGT0f8ScJ6FzGxIdCxICgANA8'; + 'HwHgAzHkh6i2pQrye6ltaz3If6A+5I/T+Mcs5I9R5XEL+aNU+aCF/AhVnrCQP0yVD1nIH6LKhy3'; b += - 'sJIzZuFzNNACgzDWzFVOh9HDAcQYGeZj5XtMoF6sMH7hWVo2uIjQJamFb9tIKePyv2fFbaZSKxU'; + 'kD1DlIxbyw1T5qIX8fqp8rCHkt6YhvyUN+Y81gvxHG0H+I40g/+FGkP9QI8g/0QjyH2wE+ccbQf'; b += - 'DcJ+tUay+7+PGEsU/IEEhvezewjVofga69KwkXrsxAdHr25940luPEmX3OGmm3rUR9n/HF45vN5'; + '6xqSCP03hucziXeP65LFN8Gtqfd2uoi1BdjnI0mi2HzyoU6FB+E/2dpL8fV8W3UXE/jVqxxnVKH'; b += - 'U/zI5maV9Qhom9xL7frDbKM0W9tpE0ALEiaEBSwcmxrcxoH8XIwYWkGWqUTRkRgsYeAIFqky+s0'; + 'VS5SO03olKkyj7qeQbxDEvTqHaBulaiMp0qe6mrH5UZVDlPPctQmUmVIeopoTKLKhPU04vKbKrs'; b += - 'Y5/jq8fQmJ19sEdEAuu8VJo+T/IVvphLO0kV8ndmrCyelox1aSkpZdN72TioRhArykrQNAgc+V2'; + 'oZ4FqMyhyjnqmYdKJ1V2U88qVG6gylnq6ULFo8ou6lmyhi0F50KKHS5cw7aNcyE1D/tQyVEF9hI'; b += - 'c2qTy7hM/1ycfJWNV1dLfbgD94Yu8xzbI1d5ie1Ob6ywH+w8F9QZM+chZekjWamePFdvz8L7kAo'; + 'hKi1UuUKVblRaqXKaKotQyVPlMlWWotJGFdgCLEaloD/OH9lOjZeoUaPiU+UUVeajEui5a9xR2M'; b += - 'l9PHIq5eyrDf5jbln7fntTPZ9Ym9btezF911xu/alF0f6NvV1Hd9bK/u2oC/5G7Z8c4mVnHk21F'; + 'R9nCax1xvNQtu4FMUxLvbhHbJWDbkKXxHXSpiHuPYMoHAhrs7VRd0xoKfraQN6pp4xoGfrWQO6U'; b += - 'w1qIX2euPBE9C+a93wmLBkVz9B6wOYZVEvcew+nys6rc6i4LGouc9eqecF16zdyY1r0Mt3SCWt0'; + '88ZoJPhDQM6qzMDukXnBnRetw7ogm4bQGL7ATottg+EGUKYbWGWf3P828K/rfyb5982/i3wbzv/'; b += - 'ykChZ9y6DOklBJB3h/Lh2Y2GOf9S2Lw1sWCzICb1kc3rJY37LYv2Vx7S2Lw1sW+7csWfiWedXMU'; + '+vwb8K+7YeGTG171VOgJ5dipMzZ2VJhZD5uY+doTWrFTZ20XDYL5fxb2+ou5n8jGTp2L+7Pcn0P'; b += - 'Xqew1sW19+yZOm3TLn7/8WYZm32qiA4n75sMCVtahqy+lkafta6ubDTJAFLMG2Vfay6XKhLuqB4'; + '/IurnlblTt8T9Oe5vQX9I/bw4d+rWuL+F+1vRv5D6eX3u1Pm4v5X78+jvon5eojt1W9yf5/429M'; b += - 'mshzTmnHdEaLXLBYQ51xSM42mpxtNDlbp39e7JRMCpqcLZFPTc6OfHL2KT9jlhkbWVunMVsiI+l'; + '+jfl6lO3Uh7m/j/gL6e6mfF+pO3R73F7i/Hf3LqJ/X6k7tx/3t3O+jfyX183LdqYO43+f+AP03U'; b += - 'Np38HkjN5B9pn9gok/hVo/6S+AW+tdDO+r04XbtSfnyrAci8tgcSM03e66Zaf0D73TT7/1vgQNm'; + 'j+v2J3a3UZD0OGiYy5w6rRL61quGkB9zI3vwvVTbvxUro+68Vty/bgbfxXXj7nxLHD9qBvPGtdH'; b += - 'ZEUf7viS5qQY1fKV9W31TOfg9zJ2EC1lhoIsgKTw7s9nLng3cxRPjFcMS3luhrzgipfGRqDvrZm'; + '3HiWuX7YjaHC9UNuDEWuH3BjqHN92I0RZCB0GYNeGg5WYZ8bYx/NET1sboJ9MWIyJeQBB+wARr9'; b += - 'RRG0/QUuy8vqm2M9OszYmAusmm6E/V/gZy+XSAJIhVl7+4QFiC1XqI+2e09UX6/mAlTkH3XvBzk'; + 's7YBDMsDgX652wGEZYBCwpXbAiAwwGNhaO+CoDDAomK8dcEwGGBxsqx1wXAYYJCzUDhiVAQYL22'; b += - 'V/lNZnDTDWGTHdx0fY9W8MVRXN+iCf+JAj9/orTfv21MWleZcY/1VIP0NZGQOAv3CGkSFd2Uf8b'; + 'sHnJIBBg392gFjMsDgYWB61gP95oJgEindhmwa2AYGQCepYQANTP3RcolatqOl3zRMUsMONJRMw'; b += - 'ynUe3xuTpkGRuJA5Z9GrMi3X9BoJHBfXqprcgbFDNlw0Sfy56zEtxHxKuYQaUsc2AMrYZUMY2lb'; + '0VqGMRwvcC0XHCFxOtVpuG8K5RdLzENsPsAQdd9puGcK3Rcd5sGZBZYxBlDTMMZV6i21tKwBpYs'; b += - '42z1TTmnYV7rWEuU0+jJtO10kkZ9ZJPBP39xJ28V4i8b2E/UntJThrpxe1YMZi8BZk3SRQ0sCv+'; + 'TL9ffoSkJy1uiJBC7qbGRyF3U6OjkLupsVHI3dTIKORualx09KBqiIuO3tEQFR29vSEmOnqgISI'; b += - '2WxYzqaASG8QcyztmKnbO8pSYYVReyxXj91EUmma8RF9IYuoC0SYFYHowxYcEVXJunh7AnZxJxZ'; + '6els9PGRqGB32yuHnGIMIqn0A9iFq2WtbetBygFp+xbYsRsswtfw726LRsp9aftW2zEPLPmrZZ1'; b += - 'pZHATtDrBlRbOT4lcth/2SxcsFlj7AR8EoRW4jUngcuOKoIo2DP6xW6yIjV+cZQn/Fnh0/3wQns'; + 's60bKXWj5vW2aiZYhavmBbimjZQy2/Zlva0LKbWvbblhxadlHLF22Lz/g46OH3FUBHetAXVRN83'; b += - 'mmDiQXHFEzD8biwpmKjCuCAmpbbud4fU0/+0Ybz0qzbzt0rsNvCMh/7OEWIH8be5b5QuTfyoto1'; + 'K+aIOSvqSYY+QXVBCU/r5rg5D7VBCl/tRlS/jvVBCt/RTVBy72qCV5+Tk2BmNEIgfjT4NrOUeE5'; b += - 'ZVp6Wvz5puCBK7dK+3WwizJOL4XyCo2VbVTmmFG9ltqSSyV34NmrBBLTboyAaF2aA9G1Rpg15tU'; + 'gTW85yyFotbnTevZuPUMtQ6b1jNx6zi1fsm0jsetp6n1y6b1dNw6Rq1fMa1jcespaj1gWk/FraP'; b += - 'LINareUue1XlNLUNCSjeTFIyEfUVmx9Ja6vJPWVtL7SqK80/Yrmss37udUsSpfzDcu/as5rvVex'; + 'U+lXTetdm03icGr9mGu+wI49R40HTeIttPEqNh0zjamn8tMXp/pcfjx19qBkaH2yGxl9rhsZfbY'; b += - 'Rwd9QA99QhMgWUn2tprkbTXJu+E5z+90HQlhyPTsxZTPa28UGVWlKXf9jtAtEfoLcG+T4F5GCgW'; + 'bGB5qh8VeaofGXm6Hxl5qh8XAzNH6+GRo/p6amr3v8cvh1A+Y9ygJ/N7V+w7Tujlt3Ueuvm9Zdc'; b += - '5Sb+Vz9uidaBQYb5JhSHqlxGdeTDGg8uPXJzpRvhA01eMCLeygC+tZOffDeCrEkCssQdhZOxHin'; + 'SuS9xw2rYNx6xVCnyOm9UqMkwiW9E3TejluvUStv2FaL8Wtk9Q6Ylon49aL1Pot03oxbr1Arb9p'; b += - 'Mo2oe+/aBV8GHZLvcCngmmv/LuG0Va1uM1ffPsMf3N83hbcrSt5mZbzc0OzbOXzfN4+0yahwhyb'; + 'Wi/Erec9nGel9bxtXeNOMC1+9OXHYXrQx5sh8W82Q+JvNUPikWZI/BvNkPibzZD4SDMkPtwMiX+'; b += - 'Z4n2s/ePCfaVfPMt6V5DrafrXl2G2mevabePHswvbnd1JtnN2kqzZk0z4eqIaZ5AWSysh46hOY4'; + '9GRJ/oxkSf31KWjxECPjLoMXHfSOaQDnGxGO+yB5QjBuP+iJcQDFuHPFFeoBi3HjYF/EAinHjIV'; b += - 'KfUTkUFIsN4msbOoJCQlAS/NYhh+tmaRYazOhK2rCXfjB1KBCy0V9U806p/IO94ohhg4/LOkS7q'; + '/EIyjGjQd8EZOgGDcO+yIgQTFu3O+LoATFuHGfLwITFOPGvb7ISlA0jb9svnBI6q8AJe5tgsPLm'; b += - '+pjClfoMXHpMRponlVSSmxrLrAaDwmFzq5hrxBl437+UfZ9ebXBoFD2OTo8fylh4Pz184+tLoov'; + 'qBwfxMMXtkEgW9sgr8rmqDv0ibY29cEeVc1wd1SE9R9ZkrUnciUw08o/TSwd5wOMfMhfDMygG2W'; b += - 'KvvkTcZROD4M1zbvnRL3i0qqoUH/mCttXufmeaho3FGaDwgrHy8Tfe60ziKvgO+JE6qLD5LxfZD'; + 'XtFBbcCW6VS33ZbpCLjDlum8OKhshU6X82yZjqJdtkzn1oW2TIfc0JbpRLzIlun4vNiWcdbGUeo'; b += - 'HCS9f5QtzYUJkiD9v4+pLc569pd214cAU5mlYyAMxNIeCIFkEgo6yNqscZ7L46GNoj0A8BgI9wR'; + 'V4FozTU71uzJNTvW7M01O9XsyTU71Q5kmp/q9mSan+n2ZJqf6/Zkmp/rhTJNT/YFMk1P9oUz9U/'; b += - 'VdoLtBReon74V0u2/v4iW1u4UhldEcz7j2jLFH6iwu4csoVVQDwR1FMakFKJzrzWqD1JAmej84Y'; + '1hyEoRY1AD2+ZXuhPw/wj1nlX6E0DFQULLnapyzFyOeLgavbStfgbDJqgwpIrrcRE6xmnAHpEfX'; b += - 'iXRansTXujX3YPYX/Vh5/2AOwmRHG2GVPI8TZUhFiVXkWNwaRdyL3W5gJS+5beWoZFZDKo18mR8'; + '6HiZ5UVIF+m2i5lJciXApEssAB5kiqfVFaCfDEQGQNLkC9Q5UllRcjnAxE2iAiZKk8pK0M+F4jY'; b += - 'L+R7wq9ZMP8wW4/ZFw6YBJScq5OcluTwSQkpRH5yS7nZldex/20vODQWKOXB8LtvAeU+lCdJRBU'; + 'gWXIZ6myW1kh8pnACCAgRaZlFZR48x8LIDum5RRAbExLKYDEmJZRAGExraAAcmJaPQFExLRyAki'; b += - 'DQZoH8muoJM/peyv08XSdsPEVzVxZCQPBJk5C2imz/OeYZuimmT+xMhn+bXEdFxgzNmKKjnOAAc'; + 'HadUEpQKvmACCYVobAWTCa5BJkMXBB4KSq3ezOPhCBqLcpzBPkxkr2X0S1ctx9ZM82bHcdxequ1'; b += - 'RLymbgKZUjgTc5ExTf6Xc44KgDHHNy4QCTK9iwgEWAjyzzXzUZJCiaDDBVcx6u71HwraC3o6Br8'; + 'NiYLrNBN1mPABMIRLO6CLEv9MGkKkYMuAZA7pVz4QgeNaAbtOzIQ2eM6DbdSekwTeIXPhlFwkPB'; b += - 'G9/cCEO+A9sM3UyFvce12s7rnQt52uYvJa9+lEpig/ONe/rFEcouPBpA95x3gTYfppZB27B/5rI'; + '+nlW0ckfCBIL986MuFDQXr51hEKHw7Sy7eOVHgkSC/fOmLho0F6+daRCx8L0su3jmD4eJBevnUk'; b += - 'AYVBlSmD9Vnc0V5h9N/Lkkz4yXrEFbBXavYQ7OpbQaNyceKM8M6Q0eKf8g8J4VGD5TnPypd3vEd'; + 'w6NBevnWEQ2fCtLLt45seCxIL9+0cPh0IDvDxWyldPhCtlI6fD5bKR2eyFZKh89lK6XDZ7OV0uE'; b += - '9hrV1zt5s4o++30mPkP9uPIjOJY3FvpMWQyuaKe3TcSVb0GiarqOWNWLCNipPrvAtcguYlwMA4I'; + 'z2Urp8Hi2Ujp8OlspHR7LVkqHT2UrpcOj2VdQOkwPa7yPnMo22UfGsk32kdPZJvvIeLbJPnIm22'; b += - 'p1NCupx9yFXjheWTD1VazhVS6/aHqPy85yFVfnaHkpIC0mI7vjgLUbCDX3wWkWntlXk+9soHH9J'; + 'QfOZttso+cyzbZRyayTfaR89km+8iFbP195GKWj437c6K205+1wuB9OSPY3WVb9uaMZNdwMsidx'; b += - '7xoNdelyJdFyJ/NyJX9s7bF3t3qdPJ2WM4TzpqNqY13jEy335SgFi1tF4AufRnHZtnYEOJ0xQI8'; + 'Ho7/Uk7ZE/OyHoH7MEzZ2S9T9ohu3KiuLN8TzSYM9Lfp+yQK1kj/t1hj5lZUdjp3bGoOitauxSX'; b += - 'wqABb2fcjeL9fUviG0oEG/RIBmtZI20TCpJM6Ly8h75LrKa7ZtqkyukKwrSTzIFALKDFLrSSDlt'; + 'NJkVCv7yYyU9aX4TFlo3YaEXN2GhFzVhobubsNBhExZ6YRMWekkTFrqrCQs9rwkLvaA+B71T6SF'; b += - 'G5/j1FyA2wcJOa/Bh+k9OtQSj6AvMNVBDRiPeb6mABBMc5yfVSUFN16yvVcmHnceuOA5C2iLlhv'; + 'FJyJmm0WMYbQTIr0QPYTILEThIJIKUS2IfEKUCCKVEF2HyCJu5LJIIFZyWeQOouwQacMyLouMoT'; b += - 'HpBER/KHuvXsgGRGRliJuBLdUCO/e66/dyGddLpoTheNaYDQkukinoa3MbpiqvW0QVPcrn5QpNj'; + 'clX/jlV0b3MOo3I3d+M3LnNyN3fjNy5zcjd34zcuc3I3d+M3LnNyN3fjNy509B7qDyHwLxEESr5'; b += - 'Lwm1+YZdfuNkv7PQLO/zCjF942ujCKb/wpF846Ree8Asn/MJxvzDvFx7zC8f8wqN+Yc4vPOgXjv'; + 'Inn4x/hHvG/O9mQAkf4yiE7maXmc110PGsMEsATH8sawwewxEezxjoBLPFI1lhBgCM+nDWmCuCI'; b += - 'qFI8ZHomfNEhK3A8pPbySo2XgeewFdaR4LJrSM0YF7oJOQ4kcokQ62JYQbdTyAm8K0L3Dz04774'; + 'D2WNFQQY4gOG6jFDPJw1JhHgh/cb8sf88L6ssY8AO7zXkEHhhvdkhRvenRVueFdWuOHBrHDDVzL'; b += - 'nePuElrEa/EsfmvuheVDKScprhejZgBDNqFwRWuElZLUl0SzIyOQz+zKueSqFdhVycDjyg2u6qc'; + 'CDV/OCDd8KSPc8GRGuOGLGeGGL2SEGx7KCjc8kRFu+HyGuOGF4GJ3MzO8BHMZM79deLm4Ng8fEd'; b += - 'aKvkgmoNk800kxG0lgw2GlK38/D6tyVx7Fna4NZzF2+D+bEl2mDXuWiDo+c6u+bM2uDWc8+gDcR'; + 'cW4GMzFYzwIN1iKPsSGeGXXeLX7Bx7vtk59kKzc+zFZufYyWbn2EvNzrGXm51jrzQ7xw424z92N'; b += - 'IWrwNdp/7A7fBzT4jPxZRHyuuMlsjyAU+5W0ZfUDzcc/PUB6L9axukqOlpaTlN0DA4LrGE0wi2Q'; + 'eM/dk/Bf+zJ0lGTTrCfwblzrmCxnOwGBJXleDcg+CxnPNHAmYPegGC2nPYGBL3lyDcgOC7nPmER'; b += - 'DHE7gQYpmTPRiLJXMUgYKD5KRysyI3Dm5AA1wcHVS+Ek3h38MseLCjcAiuZcx7EgJfAjqMmNl0m'; + 'MnL4GxBslxOgcN0ZOQYKy52Rs59Q/4wcCK8j2/8SyDaXxWSWzV2QYnC7E9Z2XoqpXZSws10pRnZ'; b += - 'iLPPejbAUbvT4x63S+O/tC67h9agLSPqcssFFitZ4yMAbN2MX7sp+Kl+bEPAvdCePo+5v28J/U0'; + 'xwsIuSTGvOmFbF6YY1ipWdegVY1WHmrOqC5uwqroJq7qkCau6uAmr2tWEVV3UhFWd14RV7W7Cqi'; b += - 'IUqRvd8szpH9R/0c2XQz+dnGoozXcwsYrzlBogKzP/D7YLMWTkbvZS90ENRhkMOCuICI8pBBMBV'; + '5owqqG9VnVZUSy9KeFUxWDhucEvmLL8LxUxIxhWCpiwfAlqYjxwpelInYLX5GKmCwckIpYK3xVK'; b += - 'mFvdYV2ooBeNRKtYvDUFx0Fgd/6wf/3J10FCpWMbI2j7MrZExkjaR9ypx/4VuJe9D+idLT5E/fk'; + 'mKo8DWpiI3CQamIecKhGMMGPdHuvgIGXLlmBly5ZgZcuWYGXLlmBly5ZgZcuWYGXLlmBly5ZgZc'; b += - 'zTUTnXGh0kOjbKF8rMx0+l4iiZiYPT6G+NIMc0AJCeCSlx2kdKnGjcC4+5UUGKkx+PY2jWLOIY+'; + 'uWYGXLlmBly5KQy4YPw6kgHPyihXn2clxnQZeC46TfdWjuD9dSjeXw9nUvvroUxqfz2QSe2vw5n'; b += - 'q3zcJ+0yWa8pLLoKQtApJajccIMJGnMm0WzNI7B0XGIznAQhH46lbQzKcy/nkq5FJbjnqHObfrj'; + 'U/ro/vb/uS++ve9P761B6f92T3l93p/fXXen9dfAV21+vKyVeCaUE5PeZamHS2Uy1MOlMpkqYNJ'; b += - 'FOYiGC6vSIQJCnYqhLacFZs76x52nzMm0X8SPhLlo62Fx+rrbiv6uxkrsVRrxJTyzlClG/LkQ/X'; + '6pFiadzlQJk5B3qVKYdCpTJUwazVQLk45nqoRJxzLVwqSjmRph0kjmldqh6UnXhUkvizBpNU7qT'; b += - 'vHBSrElnw37lIDHi2oUTZhuDfB9/Q1SNWCF1JezoKqIy+k48I06urO181OP2VY4jf0pjCjcOJ3c'; + 'PeWgTryCWM1/VtG1HKPwv/nRpO+KGl7qZ1VXVbJZdVbRrFlVVpGmWXVWEaBZVVXRmll1VX/Ooqq'; b += - 'TlarkF31GA+/cl7Cty5PC2a57awa95rPY18yX+rnH2o91Ww8+CACQW8xZhrshuY06NlSRaEIt10'; + 'Q7lYUTWSq1BUHctVKKpGcxWKqrFcxfl8OPcvoKh62ZmPoBnzETRjPoJmzEfQjPkImjEfQTPmI2j'; b += - 'zLbqLo1ZaYWY5mVtwecb1pe1xP3fYN4M7qTmL+SdZvAJDcHMcnNPkxysx+T3Kxhkps1THIzYJKb'; + 'GfATNmI+gGfMRNGM+gimYj4BWz7MwaahZPVg3y/Tq4n8n7MGQZeAwEOQB6w6Vm5gpoUIPS9Lmax'; b += - 'HpOMG7gO1D9X4zlPYFDmiWZ3vjPrZBPWexqKbEfrG6YO0fBS2BpDClkcRrM4jGZxmCqL4znBk5j'; + 'pYvFPPZ58lpZdzjfPQFrdQ6zi32hq00kltpKI2UVGDvZCt0T6SQ4iGm/Wn8IL3EG29OXKL76KGm'; b += - 'FYWpZHKfBGQ0Ckb4PLFMrf7vxXpW3Dzr5x3q+T5JO2RLrlxfSUeb3pkpwrx2vQN6jPuhKWtreMp'; + '7lOr1LA8JuL92KIKn4Mfz6lqDoffz6me+gKDqcQlqJDeCXjb1fqcYfdsM+62pWiA7B0h0vb0ipX'; b += - 'saZpsRI385leeiV44k5YMfd7bKWHnoUGXWzUWS5+Ah+mIcQoZanCqe957Y1lti/3XcEks03bqzl'; + 'O45dsrzC1W45jT8NNyd03USVMVjFo7KCKqdgEY/KjVQZpUo3Kiupchym8aj0U+UYzOJRWUaVo1T'; b += - '0fd+cpu+YQ/bfn0IQLkd3/CXweDj9u3y1lSnL+p0WqFqU6h/Jh87/dbamEHm7fc+Xf3GyHkw5LY'; + 'R7PxHlRHYmrDXH1UOu5wJwAnnIQ+57ku72i1nR7MuuNot1VJR4pI2r8K7bp7pnC+dCyq86xaYTi'; b += - 'Q64BL42aav7a9eWut94bAVYfT2z/74msFvGEuZ4hFjCKmfKb95H3dc+9XpCOZ9Nu9jTpVzvvraV'; + '2dvRXedb2mc7F0LqvwrltmOhdJZ3+Fd12/6eyWzpUV3nUrTWconTdWeNfdaDoXSueKCu+6FaZzi'; b += - 'f7bpX06+qo8uizICOFIt6QpCZRRXhRMZdTHFJ6gLkPi6I/vr7zoHiRQHDvAUv0AL0kianJLbycN'; + 'fGuuyn2rrvJ9JTgbNjHlWGXJvBsGuqMlvMwnasS0J+xoO+rB/qlFaBfSuOvWNADDy5b0AMPLlnQ'; b += - '3zSGWdJior6aHA4oqMR+yAcSpmqKRKpv6YQBURJqo6IkNqW3S/+04brG5gPMzlMtnYMGI85kRG+'; + 'Aw8mLeiBBxct6IEHFyzogQfnLeiBBxMW9MCDcxb0CwB4vSoN+qUJ6Pu0VObhw1eZikpAneDBAtM'; b += - 'b4zCRf4kltNuKkHq5viHLZ124CXsmqPNmLiaUkhgY0rfSrI6Zx9TzxSc/Y9+Yh39iUMpErcVBQX'; + '5PwF1gge9plMnoE7wYJnpXJyAOsGDftO5KAF1ggcrTWd3AuoED240nWEC6gQPVphOgwc3VeDBTa'; b += - 'jAxDEnQOrk5GI9XVGSoSL4utjbwXIA6pMRIxtu0qXzgWPr2G+gHo53SmPdvYttzXaVuS1+It/4S'; + 'bT4sHyGA+Wm54S2/4nkAcJqoY8fAGuBfLwd4ghD1eHGPLwcoghDweHGPLwbYghD7eGGPLwaIghD'; b += - 'W/6KuyHdqq6zWZEQis3XSNtrnAbEmEmgoVQKrDBvrOxJ4qbdfziHG9Se2nLuX/cnckT43ERrjAk'; + '2eGGPLwY7gO+RcP+WMVkB+pA/mj1wj5c2nIn01D/kwa8uNpyJ9OQ34sDflTaciPpiF//DrkXxLk'; b += - '3b5JsMyZ9DR2b5Obg3GZBcQzIHeAoNYUjwTKIJy9kjwa8qrROFxCHjk1hJs3Crin9EIcGpHkk0f'; + 'L1RAfqIO5M9fI+Rhgx9DHqb3MeRhcR9DHob2MeSvpCF/OQ35S2nIT6Yhf/E65F8S5GGhnUAebGQ'; b += - 'qJqNDywIGnneP8oM4B6/V9liHkHvjdGzkUd7/Nmeauae0TB1tTs9LZv7khQGpKyLj+r5KeQnwvk'; + '15GGufS2QP56G/LE05I+mIT+ShjwM0mPIwxA9hjwM0GPIw/A8hjwMzq9D/sVDHnHTeum7SnQiWJ'; b += - 'Z1x+LpKf1fJzifysk5/L5Ect6ZfKz5Xy83L5uVp+XiU/18jPL8mPSpD9ivy8Vn5eJz+vl58t8nO'; + 'Pi7/MImyHAX5vEy6iKk9ZVAfYuvU4iZtwisTJulSgZt0l8jNslMsYdEhPjTomGsV7iYHDEM4UYD'; b += - 'd/FwvPzNGfnfo7079vdm0dlbjrpI5UNLFNYb/UEV+haEohEQ6SWgeD6x25vzmnnyl8nGIn08/mT'; + '3pBGoBdScSzeborHfFMVcBMmc71SXiMBGbzTeedSXiMBGbadN6RhMdIYLbYdN6ehMdIYLbIdN6W'; b += - 'bNkehKYWCfLA2+lkhYFOsMuq7Pn713NgoJzuh1D93rSXSTXnnw8KzYKdyP7lb/1Z24t+rToyBhA'; + 'hMdIYNZtOm9NwmMkMAtN5y1JeIwEZgtNp414tiSG2RLTwzz6Aq4M57WNdRaZSCcCsg31QHZXPZC'; b += - '4i5mmOcJrsuIwoRIg2XqEpMwY/ARwdtlfSXjWgYVbE2UDFRxTbR+0g2noZleKznh4k1NuSI1xIY'; + '9WkD2GgHZ3QKyjQKyewRk9wrINgnIfkpAdl9DkG1IgyxKXjiOVFYffj/VCH6bGsHv3kbwu6cR/D'; b += - 'DJcyTXWoMxBfUGcgLjwDcdHLH/cKpd8fAfHXf9C7/NcfxV1KqKV+m3/zg93mv2iPtssbhHjcTzU'; + 'Y2gt/djeD3mkbwe/WU8LMxyu6vgNjr6kHstfUg9oBA7EGB2OsFYm8QiL1RIPaQQOxNArGHBWJvb'; b += - '1uwQ6D4F0D91ieQRhhj9tBMr9jAypNCyw0x51gAivfjKdv0GkNkQxfF/F9oHZaPQWiw8el4LLNY'; + 'gix16Uhdn8aYm9uBLGHG0HsTY0g9lAjiL2xEcTe0Ahir28EsQcbQeyBKSFmY4u9pQJib60HsUfq'; b += - 'rWRC8Gh75lENdgnhiFC62frNhBdgAKMB69eI2IPF8azVjxva9bE71BiZt4XP61ZAID74RpiRm7i'; + 'QeynBWJvE4i9XSD2DoHYzwjEHhWI/axA7OcEYj/fEGJvTUPsLWmI/XwjiP1cI4j9bCOIPdoIYj/'; b += - '9bhd/SmZ5LaTZ8KN/3l/puej8pHw10ftHrX76rd9UHr79ptrt+1CA/Am6XxJd72UzH6JFzs6Vhu'; + 'TCGLvaASxtzeC2NsaQeynp4SYjQn2rgqIvbsexN5ZD2K/IBB7j0DsFwViZYHYZoHYewVi7xOIvV'; b += - 'G41zKu6/bbkShDj8seWTMe97Mtz3yVju+7Vron+K/X27A/O3Ddz3DGm//tjYhjMQhQYk0fRK8j2'; + '8g9ksNIfbuNMTelYbYLzWC2PsbQex9jSD23kYQ29wIYuVGEPvFRhB7TyOI/cKUELOxvLZUQGxrP'; b += - 'evwXOG+jXFPDDHwjEg9ff0B2+qxtvLobhX++mU0W8GYcWQyyVdSoYbSFdupmaBi9Ag8q/nBeard'; + 'Yh9oB7EHhOIPS4Q+6BA7AmB2IcEYh8WiH1EIPZRgdjHGkJsaxpiW9IQ+1gjiH20EcQ+0ghiH24E'; b += - 'Mk123iA2kqiWS4VHrghgG1G54LJ3Gv+/m/MY2QRFoDQMZ9IEhnqxLQWDSo+J0SuZhWSEgw1E9Jc'; + 'sQ81gtgTjSD2wUYQe7wRxB6bEmLMNYphKPGOy3Rv8WP0u6x4L3Eoy6hcIp7y3us85XWe8jpPeZ2'; b += - 't/AdkAaRexKPKoGOwrCJ96yVfwqVnni/abYbSrzKbdVyPLQSwpF7feHYPym3tpJ65PBQOZsckPv'; + 'nvM5TXucpr/OU13nK6zzldZ6yAU9JPCPxkdclkde5xutc43Wu8TrXeJ1rvM41Xucar3ON17nGJp'; b += - 'sOtgZi2R3yLc0I05XiAZDEPLwT9QPUSVAWMHlArhK4yfhPqvMfomKi6R830jAIAYf7JN9HtYmXi'; + 'LIyCu+C9JHtnCFZFJkkqVYJrlMs7lQoczty/TN9Dc1LlJsGSv1UjQ4XfI73mzTiaHAiYQdpNhLp'; b += - 'LZQhf7uZLVUimmyiHRiFashJf1z7sWJ96xVgv/56+fUmdMcNnkQlL6T8bL6ybB2djP3VxQv9gIj'; + 'UUuKM6B/C0vToYcp0fOL3VM8uNIbdFqa+RuNdkaOQcyt6Ml/0mTws1k9OXky74k2UbWZslZGCKF'; b += - 'pvtBJpzJLJVGHSWZ+xa3wojBA5+vMbEBl395936Nlvd5tFA7OvdCSWTOW2wExychPztO20Vc58x'; + 'faRKJr+2c29BLH0/7ofe3QU3rzlzIHIxIvekWitJ/PBAV3uSCr34P10nz+my/9hHZuniJu0U/yj'; b += - 'Q2PF5b7v+KHx5QgOcF6e8NHJ9r5+6AE+qvqmIlqELas5pHhTOobxufRHGxVXU2//Ef+F5h47VNV'; + 'OE7y0KlO06yivMk90nkbn+bM2sHm8E3WWbakYl3JSyt+m3B3R0HdPcgZsxSVOWRftpRK+0eVS5E'; b += - 'ELR72OgKw9b8A9a3N9Y+C9fa0UQ7ow8YafGjCTyn29DRDWHTHB08PB8HoJMNuJvD+bFq8ts53+B'; + 'hCPddMDrJN/rOrAjMjnGwyOn98lIa1IeMkhgXR4OApvg4ZPZGCVRJgpnJfoj0r91YbFL0P9ekkZ'; b += - 'P/gkqOg31ZGFumAvar7i9y1nqF02YtGhoz3KwhRv9e/UrBpq2QilcXGdDn03+i5wTX9aTJ0mXRN'; + 'TLSTfe6/MauDmwJWXc5abVvclT6myP1OCer5CfeszXMSFZAfg1PZ4wdSY9bRAJolyZE+8Z5wNUu'; b += - 'mU2X68FpP7cu+dIiNsynu4dKVb6mDyJ7xrGCoMpifrBV4LWwBkLSSiMSKUvCZSjc6xtW5enEsSI'; + 'l4qcBZfujJtyqlHz8i7Sm/JtC3J7dCJXdobz3NLojQXk2MtEqozH+ehtozfP0IzSe3ZsKVNBMmZ'; b += - 'ukDXDNdKr3mhdHQ2sgLNcPFSWmkCQkX3NVx9ngLHJTCyuJ6qYniTUW0wxkDueYxHjOelA4E3IQe'; + '7kf8EaiUvb2/Kqfe84hFJq+dGumxyX+usSZ/pIIG8s47zIXOu7cBkjOYk75K3W91dcCwOoqiKD+'; b += - 'A72ZulVOm2aMauqgexH3rzIPb1ei7fQuUF9bUl9bUF/DBzOx/BpOB6EOILYiuy85YCLZOXiM23U'; + 'fzixxGzI8PDg5+GM+hHlkHQKwOQbSwKhnq05IM1UuB+UeByhkw5+jpOc6Zfd5mnE6BKlf8OFqH1'; b += - 'beqB0YsZNgtOJbGeHLy1ea3Jlt/pFBGKQZVNBQOrIGUM/P/a8PsX1PXlX4ZoY50C1rif0OfTj7G'; + 'eYwy0kOkZJTMOOCU+Yc1UhMKoA/hrSvxd9SkgzzmApbfC4dVyVf8CJTHEb2xUxxD00cUB5pYp9A'; b += - '/KsJcT183ZSr4v7cYbgoLPhfH4XexeZPLvwSZjPNdYTyAlOFFtoOVp7kq7GkCTjGrNF428vyMLm'; + 'Hl6e/Y0y3tEZ3YKkjFho48g+StcW/4auXOGMqALm9m+BBpGitSUZpTe4MpnnnHJkTIwIQ+6lFsL'; b += - 'thq9A+qe40Fr6nfEKusF9idwnsq1r6QbAkqV1HDTGJNaT6rKe8n1DTq73ZL+U0COKIB8Cz7Hzkc'; + 'u47jP8eeAyMdQpAEP0YDWtUjiKY9YixwUKJ9G+REujqH4IBVu4ZyR+LziRUXv9RWPE6cqRkjt05'; b += - '8A4T29dKwqpC5iJ4iQWLtTR0oZ8IB/bQhsJMe1KOBRYs2S+8Df+Qoa6eDHJBwcH18tdLQjp8+dd'; + 'u0eXkZwAPpfjQ7TL6A06WMrABJBOkj72TLbU6WPr4lUhs5Ha9vkyF7jCxY9h6WUI7+ZMvRPz03K'; b += - '3GwQTF+mrDoAa81UHrufAkVVqjeNwRnCScJ3C/5WIyVKioSJiEgaIQMQ0IdT91l+f3yWuXzuuwc'; + 'nkto3PPjzrF/aAmTh60ReXjCa54obykZaEnZjHvyGce9LjvkcTavHADzv9pHosJpln9r34kt8Tg'; b += - 'rcIFVouCqkrAIFG/qr0Wo9Dpd+4tFR6tPPd/3/1F0HYBVF+t/2CrwAi6KEJpvISUBKQAREBDZ06'; + '9/IM52Wtc9pUQgp8Im5GiJxjSsxYjdy/kpTTXk/9bcn1WQQqXewwhXOBGZw5OepBithRZa9lnCs'; b += - 'QYU1BNC8oCEkEAS2omAEIqKSD0DoqAiTVBUsKIERMUKCipiQ0XFdkZFRUX5z1dmd98moYne/b3j'; + 'ed0OAmJcLhthOIVcAONOH40wHHP5moZLKLCz+er7V/wRdkHzTOVlf/zwl3k/69fB+xLV4P+RZvB'; b += - 'ZWd3dtrOfPPNV34f4VbaR+4sRnEe41VDzCm+E5D4mfYhvhOkOwc4GUIoMVgSFr99RLBt/BpwcJQ'; + '9TgvdDvsX7MTeN92OuxfvTboL3zwneP33VeD+oDN7/NeP9qFuL92fcGO+RKzXB+w8L3p92Y7wfc'; b += - 'fLJ5GyAAAEF3uYIAu8B4rN3R7kbTD1NH+UqfLIpW8CziqD8IrKlzOfcBmkCXTgZg+koLmPZWiUs'; + 'wXvdylB/G3aPGMtsg0oSZS91t0ti+AyyoNK8mAzStMnNsZ9OJP4ckuaoalxf1TVQf5R9RKQn2e5'; b += - 'ke6kR3PT006I6nhwFW2rgdtghH3+K3oYf8WonsLLpuj5C8OveQwgVqbg817CHbJS6TndWwhxr3U'; + 'BvmH/GrkH1MV2E8YbZ9rsP8Haew/rdLoP+QJ+uMr66O/JDCeCv1H3BT6j7kp9Cf0tMmP66O/6ax'; b += - 'HN6qMkeSlut96GHaLBf4jDfK9Ba6yoZ7hXPEboMHIgrfi8WvkbnUBYyoAXufU+iaFCRrAE/szlK'; + 'C/9PuVaL/pJ9C/+2cCBuzji2CP74jL1lqHWa7UnsE3XKmQS8n6jPY5UQemAEnGjtykiHkoH0xuC'; b += - 'ygF8c5MOhyw5dKSRWk/3DI432EBbqcO47VZJg663cvTmeCXGyMX/koTHoDisyOQYsd3b7RyoUHV'; + '2C3Vq3iNJat4cbfGrQ8iV+8ccEtsW0u4GR4vzduY3+Dt4HHSRQj5xAe8jxLTscoeMLL7yQvZ/fV'; b += - 'mzlO9/TugxvTvMI7xIRlVQsaWwP4tNGL7R89sJwoMvq96+3cES/ta9fXvoAr9G3163SN429eJpH'; + 'EXEShV/6IVOQeWxldEY7PHg47ZvMW8sHB3zeLLFLRR+LnSObKDS4QHM4OtCp4t3yy+q/AJqJTgU'; b += - 'hpgozfQjRBUgdBENQYgqCUogex9MglCicmSeUXJRtyCnTlbdWR69COQEye2Om0KXTU19krRuwq5'; + 'T/k2VTht5pIKeVordmJ3u3Zok/5/2XsTwCiKpXF8jr2yu0kmFwlJILNLgHDfBBGBCXIJCAooKk8'; b += - 'pJQos624TrbhkvvFvJRoRiLoM3eAt4wASxJHAkTdFGc6xmjECQDDnmcl3VEow3S+rmycsrLBh1u'; + 'IyQI5yLE5AEWIQDRRlPsJPEDkEERAFFRUkICo6ENFQUUBQQUFBYmCiArkX1XdvbsJx5P3od/7/r'; b += - 'Xo54Wy0LcuOhRvWIcE+tY3dwxxbUoI6hXX7ZHXvqv9yx17ljgksJsI0siWPiEoOsTMasiSHyjWk'; + '+HZmequ6enuru6ju6eKjeGzsGv/0p19QEM934Xe97F6qdXYEFdV9ZOSIYLqSXaFpNjBFKKTMIcf'; b += - 'd44oFgbq8rlgBkLV4XLEC7IplWQH0qzkj3kAh0cBgWfBQAWJL9rFAojhOavXCnuB1Ym+qSMNDIT'; + '2xuNauPCWjAr3DiMOksOvBumRGHzX2pdIdkJ9ccaRxhwEnQOxwPK7Kl+jtM+I5ABc4/BxUkQdRV'; b += - 'qLIPIY3DN/lSDPLiTzEZl1L2Q9hClxz1wVRJBMcaOltqgCXotyBJkGr6PdGO1nHpYr7pp3q451r'; + 'MSyw3AdUHxPTNGDyFFJUZMjpHUcfspn6wRUkRDZxsHeXzwrqbaiFLpy3KhGvrT0LYo5l2mM8aOo'; b += - 'JFlTkFzkhQV9GSFa9Ac+vBqV42iowje4PpFBeaTUHVxXFb5PXNiizo9w678f+rZp9Az6fuP2jNF'; + 'NoACkRgWJNdKBgcQpUrGWqb1NuhrpyFCOVYGaDcUe5nTLCJC3H/UpC0u2ULJQpMwY2tqMXfKMKv'; b += - 'EP8IGTsyNBwhKBNeGBrTeuDg4Im0H6VA0+XDwSnmm0aVE2UDG4nd2gmziTaZ3wROmA0Q3rYakcg'; + 'QmR30RdN1QCqEH9x2pYHHHJWMNv9X2q47aQIBsBkziM2CPqbtZNzkc8ZejBqIFi3SVTMfVMmOul'; b += - 'CV+4NEQHVhCDyqpJhhQB/pE+2p37xPNsSw2jKRFZCENRvU1ERizo/eASmQyRUDdlKNzB96wFcbQ'; + 'hl7tcx4qWaD9pZvFw1aX7bd16C6NOUN9Qr2TR1sL1MmTcy2QCPEaJWtfQvmRN3L534psezLPIy0'; b += - 'C8NOJBUAHCkgBqbuyVXJNmT+kpOGVIko846sogaa/nLLoxxV5D1xCPAJU9VUHuwwsyjKsUrTbEb'; + 'oBZSrk65hK5bcA1S3XU1Gw0CfHwiabk0i0rdMHN05YGpMH+0SvUKj9v8j8de2jnUNZAVyZgLIyP'; b += - 'VmyqCfCXQ/aag/gowUDq0Q8ih5LJSEI8PhK5C369GhU81sI/SdkIFQn7fghO3cc6BbnjgPa4txx'; + 'ECxVjbDj0FmPKU58F68as3ROKkqAEAZN2j2O+ihNSMiaTjk7x5SU+D4W9JjE6k5BxKWi8xBAThi'; b += - 'kFqcOyukYMC5QwFEd3vuTEXbc/Hr3NmIdzZ67hwg+3TPHQjxpcKvuINos2BE4TGQLN9Ekswj2Tj'; + 'mBBoZxYBoIoMmqj2Myo41NXLQLqqrekLIMlFYXq6qkfLIGesQZclaIIvuUcInNaBNj4Ik+Hhvp4'; b += - 'SYDBQoHNsFQnm0/AtyzB5xEMiW1cbZZk86sc3eVTJ5NHxFWFpk4FiDXJtoBTHxUBgW/vr6bi2D0'; + '7HA2+PhsvsgSu4YuNtBJhizBoincu7K2S2qMWgRagsUEhBYqcQqlVlVq3xVnTlQQa3zPyFf9olp'; b += - 'zltX2ijkp7WLejG+P8HQUTWLejpexby+pojH2rfnz71uN0VPpwuB3dFFdORz9kCeMKjc09eecnF'; + 'V34Cy2N8cLCKz0CHGMk0l401j8F92ePQQ+dlzqpoynKTh4yymGTVxoRTb5R9GF/dDMLcEVNztGm'; b += - 'z8WmYFWKlGlvZ9bejCe45YaEjSDUf8Jq4p83gLoB50YGEn42BrGIdHdsUe/NhZ76/yBcC5ns9Vi'; + 'sQRrUYWQFeZhhrPlumxRgxsQStaMkNoC7w3Quo16GBxxhbCIEUEhtWhS4HKOOvexEIDKPF1IkiX'; b += - 'EOtU2PJTxpAK0V6/QpOQrxF7UbmuarKD81R/B8FJz9dB4Nq4g5viYjoIQ0rb7XE7CAFpdHfM/R1'; + 'QrTnfAfBC52vw5DZ4DvmKmQcSXOyLYvLRlBiAbLbE3Gqvk7MB0xAvVQwm/W2Y3oBPDDfUKGkzY3'; b += - 'Ew0wVI9I4Hfw4TnbQiTjFHZynnkwH3wI9FKF5v06iEfA6iZPuDK8DOWd1504xSyISsxpcRSyIm2'; + 'eyKJZaYHLVEVUphYE0rFdnqN945acokeUjR7B98OYHA8twmELbKJMZ7dRMYnLHU84zlsxUQG2gy'; b += - 'JpPXAuk3El+HkjvofWizW8FEh7JExS8wkDSxMNJygQgNsIQrhQLC4x2AfRpNHfwS4pklHVRKoHa'; + 'qAN+i0shcGdFLRYUJxDNNpBUsaj50GSWdZuPjztcnIHjxeTn40xORHK6U5DunHDZfGgbUbRizKM'; b += - 'b28pQWwNLjIgqZVobemLuG3nmUuToaskmLtRaulWFvGNL0aT7toQskiUJ0YrSSLjr0QujwQG6QK'; + '7jRHXjMPbJNIhiP27FVY3WukKykiFCQSSkeZqMpIzFj+Hwo4Kl4zaSOrFOFklI6FnHO/SS7SIeH'; b += - '9kKSLoEXizqOjE9wi8hCxaxGgcemUEganQTmOvrBkezf8MTq5EVPMbkJt53cz3erPhc3jy8+ExO'; + 'oo0pi2AphICBSIEeOvspGDTBwJmhv+HPHYwdeREdV4LFLQlDFV7o8EpwHFRHFaYhStybRARDSDf'; b += - '/Hz4L39ECXcM2xLPZA3Lo1TgSi9j4HEd7M0J+9dAOZF1NMLXG3ZW97I3yvOwRqM04OYd6ZK7fUN'; + 'b9vBcytJqixUZN86Ws2VE/fHqRok4DvIqNwgXXRSpJc4WjdSFwFh65nq0WqbwVJ9a0gqXgBrVsP'; b += - 'EZsC78nAc/deCnNvzUgp+a8FMDfuLhpzr8nAs/58BPNfg5G37Ogp+q8GPCTxX4qQw/leAnDn4Qk'; + 'T1aTSOV2WwzUwoED2gybsfN7mNxrkf11zeTaRYdM3QI1oRKnItwSYc0PJyFs88G6he50yNGBqxr'; b += - 'Loi/FRArHr4CcFPEH4CCFcNP/hVNPhR8fvkHf8/kLLWHQc7Hgjzv9fyIt/4rDYsdQPJpFMIIM7+'; + 'xmUkSaFhrqYfcwQiYEIikdOtaWh5xhyDgQMBJ6UFrmVUVioATAROla3CL17C1RuWD2yR0pJKiP2'; b += - 'CvwvK8T6X9YqpIMzK3EOQ5YIOVwe+lLM4Ts1F+fIPkYF4NPZ07fD00RE21YJGCpAiOngIKkmqJV'; + 'yc4fcTEDgXCJwPBEomBwBTA4GyQGCaHyhbqWt6mFd3evUgr+7w6lavbvLqiteQeuaj0ZaAP3Xxp'; b += - '4KioOAj95VS5nUa23GQkStz/enl+G02WC6hhBqtL/8jnVsekmAUR8liNrjWc3QkTfSNRZBQTKEg'; + 'w7+xONPHP7E4k9t/InBn2j8qYU/UfgTiT8R+BOOP2H4o+FPKP6E4E8w/jjxx4E/dvwJwh8b/ljx'; b += - 'bpwG0lQC6D4INHFEuXimOxrKZRtDZQKo1DeACMYaBwuHlnWSFgMy0rdOnHZaXTstIxA8WHUlysC'; + 'x4I/ZvwhA1LFHwV/ZPyRvFf/B0LLSCj2gqx2OQIUVt/6Jqn7TmYuW2ndFI0ekytIRRUzCLVXEy0'; b += - '0EKwTGODA1gbXkMLtixlg+ZbOlFUHWkaoW2AYe9PiaYXIQir5g3GY7qjZHXyfHRQgkxEm7zPYN0'; + '6Mi4BxiGzVIQOCxQAI25N4XQCoxwk7qFGJ7+nCxO3TF+OQXoC6jb2IS0eU4iZgO4KAjUGf+K1db'; b += - 'B0pKGK0AYbgAGYOATKBDmiPQp/UEgaoVdvADoBQQSBYbwCgQEL1YqQ8GpeGEAQdXnIcb64xMrAC'; + 'gmaTKOYf4PChNDQIKGZpzjj1BpDX8isXQolC47IUrbiICNGGPeiYDSNqaDQ+kQKL1KlEbaN3RjU'; b += - 'At2RAX4FUaxVIe4h+vl3tYAF8gwoWBu+0BWFHSEkD3KrNOonQCqsCEjcwZrQqwEyyIHhFBbtEfO'; + '2BRJtyxaDAU3emruCU1GleHyrdJRJ/GJMOm9dNtOtg9Opho0DYrX8FEe00P8gGAlFMAupnfmY2u'; b += - '4KqNoRv2fBF7tUXJlZYPREj81FOKngZumcUKwoKw/lPtSmiKg9ANfmzWqtBLy9sQ7ZgpypLjX+3'; + 'WWRVq82kXm65o3Qn8i/seLKehzAeT3adUXm8gstN1fgUjXu2hAzQPgnnIcxYxbecTJNLwKDCKcQ'; b += - '+nSE8BRoJ0oyt/1MRhCURAVvQ8K7CaNSQg5widgqi3dCfYDFNpBk/Xc1Mq6qftv8hwCG55EzQqR'; + 'VJKMEKiEJKO6AL+/+Dto3A+W9XVcbqUn4jJ3V3DWLI2rHOlVgFT4YzW3oEA6jDcFWSJFegDkTH0'; b += - 'vCBAHKK/Kt6SghQ+jsLWRl6JWfl0QEGdMZwR3iomkmhPscNmKpzJLAr2SFxngBXlCOUPApGCPAp'; + 'TGCO/SDoIUjubL1LYaq9XRErOLa6ZrhHgm0jBcs/KRu8vEqRkjZjpBnsMBjxEDBvUgnmwDwAoNP'; b += - 'C71WCyxZ4n+syxLOvhtPWiksC8AnIUtGc/YDiUG4ZmjoJSCvHkEa9hBT9wTZdtJr1C0Z/dGudAJ'; + 'nLkgfKALT45mrBMEL++XMyrXpZZ6o6ZFrDJUNF0mYV2aAQhnwcdVpsuu63BYO06TQ6gSZt2VHWB'; b += - 'A6YqrJABF7YwJEdII4NKu2KRTAfDdakQGjsQ8CRPSlABEDccen0OZugIjWMQEikn0BIuxDolAzI'; + '0sBuYBjYDSig/BYEfJYbl60noIiBJmVmGWPzDTUL1V3d1CdOV/tBdRquQmeKZ8xZutonjlelm7V'; b += - 'kW3yRxDTGGJ6gGM+vAWfzIZMAz9sQLkj2XE+GPBiaHEcJQLXxtZ0gj6gOHxxwI+lPyxjmDITOmP'; + 'KE5bW3gUZr500uWSxwSG2ObRnaFMF6LcfbW1MfZd2CXoE4zQvEQAaqU+YgoG1YE0WtCFhVvSGBL'; b += - 'dcggL533DHKC2GdQPGELyt0nCGcnAomR/lis0ka53OMy5hcz6cxMlOVZxeG/Ii8zYUiWYh8rK4U'; + 'hkoZA3SgDErZAVstPsoDe6UEnBZAsKySyQ2jZU/ExAY/3yg83McpXcMFRapgstxQQgrhITYe60O'; b += - 'lYvHOlSmvUsi3Cj+A5fg+qeYnGkl8Xg5XIpUeMWUGfz4d9TpgSSjjvyThHXN+0HGcCLdCYw0Oxl'; + 'HiLcGJlocWKA6xgG9jNUrbzwi/jsE/Pv0PoInbwUD//E7J4Qma1KUzU0wNIOxI1m8jHqTqMc9Xq'; b += - 'XDBXnCdFUX5AnTFRhIF9MO5NKLjhrfOh1rMNiAbjYI4yfomE5awVaacgpGYWymNFPn9XFK9l5zp'; + '6R2sKl1rIENLEyao0cA9FuB/zI7Fl6Etje+0BGL5mQr6j8W3ZuGgniWFiF7G3kzLek7adQqiaUi'; b += - 'L3XGejKL/oZ6sqsP9eVXcAg/E1o38mov5SB0lQIlIZaacHfrzhajKIeAqAj8HQdWXXKRjG/6PAz'; + '9wzYUgpDfBhEDRvWrEh6iH1RXJ0Lvq8Vj85H4fXiy1ZNLWi8u4xjCNoDhGozbF1oX3HXAdQAzDZ'; b += - 'fVtMVogwptB+KLJGnvIobBGBnQY6UU9RZxbSOmk/G88hbiB7IoQuGYQ3HTK4/jhkMMWBoJG1aaT'; + '8xzphA9BGHhiWu26i944DIgajuwGU/KzI0VCB5eixmQDLVDI/Fwu8pE1OHjZa+lRoy8MiKOyxVT'; b += - 'C8bwnuLtJifoNLNLuvwE4QqlGiW1GJPKMexRid3qLENK7V6IlSxJGQYwMtGXUxGlIfA34IuI0pM'; + '6wVqG6jIgQd94GJq9O00+Sb4xGsKK1aKJnaLBgHUqL4TpQOvITEZahQxrtmBTwNM18WMz/qMi8d'; b += - 'ELuO7jnbWtwtagczg60wFqNPEgSc4t35OLovQzDMvwRCoBLiiEO41AVqrrBy9RYHSefOYxcR59J'; + '5gglYwhtb7jJ8mIpuXo5tCkjajIW4CqM+zC0ZiBaoX6ORvt4dqzamYn3gVnTFEe1Z6lJYXzPD1m'; b += - 'pbd7EBR4fUy28/gG77THPqpOe3XqP2at/0atx+/LLdfc9qveduvedqvedqve9qvedv/tOqG/NPr'; + 'cvDbZrz7yVR9uivwjiO3boaJHmpmusl075JrMDjAeVPqTil8CrKSpVKIYWyfdAmq+USUjXCUL+C'; b += - 'OX6KvInAK13ZsgpZF1RJm78FKdg8evg7Kot5eMOj3ZiNNzzqDQWvpmpSlk7q7alalrkUfTbQQ5p'; + 'LBF33wBdkB813KbCpJkNQ3GKnDgss/ZjQ+NcPsshqH122XXBakX9oo9OXtmEbpbInHwAVuk3ZRR'; b += - 'ALKQbL0V2t2DCc6AM3r0o5IpkXXY7EQuLxaaze902xQHGg11op/cGGFsWx+SQiTUaBorDSKoqhZ'; + 'S1dt6KhSTXF+HgRtLu320r05O1uEpuiwDjROKFb2gmDmU1TQukRLPMlUcKua69gXDx2ERoKGfG6'; b += - 'lW0WxqBszvnXDsYO5B7MtdMLIl23UmwCoAnzy02kEbmiMqCUM0zp6oIBCG7nshQkJZ5CEfcxkxR'; + '7KatMAV1ECtcgHdCv2Kd/eMgK9hCJpAVTQnQVWg5DjhblstKtbqDWKtvgSrA+MlibYGHsXwQJLi'; b += - '/dWm6xN4gk0z0D8QfMnnUDyghRzxCT1FcZkSwiAiRoiqnvRs2RJKIug4sK+4uIodHqYGpUQijgh'; + 'VwAKKr4CNbJNLCqj/qoCpegErcHOXBfeYLZm0w2iaRN2ksg5QsQPstLDgG54gMsOyYBwc3al11C'; b += - 'U6VfuOBego5vrPf4f9IN//nkG864Vsdt+M9/tuHbVUL0inVkNhhH1kLZLQBwJRgSVghiAiYGOyN'; + 'IZspGWe+FzoAMaXfKRPxkJ+S40Xob1QSvKsBTqFi+wXhN2oASUARwl0ZARRu0RHgJGYyn00qN5/'; b += - 'oYogyBMwoCE0wGJEVNO8PJYZwbgQdsYlBYpMwYb7KLUu3l62iLUunLUu3F62iLQvXADwl/xQpzk'; + 'eEZCzzlLMRnsNMxJqKxWGaL5gcC7veKfTmz0SkzxZRMd8D82sJlx3O4ltwS7uJwR86Meyyoo3Sg'; b += - 'UZIHQv7PFj26I6TjeO+RWZTKHXC9FUsHAqNtjYCg2kXEsr0znduuEB4uVLywy/aVW4tGmVeRzTq'; + '2xi4G053Gu3M4Z2TNubMpCu2V3o5rahVhheC6KiUSPFWfZh6gdPTMkywiRMFtAeFktwbaRvld1V'; b += - 'nC5plXJp9T6ktNp/fb/ldYvCJxG6x8I/o+0fq9+Gq3/+a8fe1XSfoaANj/VcUenMKKo9X481kcd'; + 'oP7xVcZkZpU/vOFzcpRmUhN0A3ddeacowNzPMTwQ0rWaTlwY0WWyVm1lL563/Vy0d7Wspa3OSr8'; b += - 'IRi8PuqMxODdpshHfYUqzzEU8Rn8ApYaTtJ0YRTYfl7PAiGXInM4EZOfkWJ3NvElm5iTozx6DOX'; + '2Jvjbr1GbWHCTdOMITsVOTL9vx4l5lWJT9y/4e4sNigA+LXsjw4W3GAWiE9igKmgtLtqP1aeLWJ'; b += - 'RmfKEy6A84bIpT7gcynP0BR/lOfyCh/LA05OgPK+584cN6yg4sIFQyQoF/TSXM7oCO221wLGhkN'; + 'xcFYoKjLcjW/dlaDC6qENf8VnXQZCMrQntCdsRKuFDOlCQ0fKezNWGti8MRUo2XMvZYU9Mz5ICE'; b += - 'wYX5qCcGPcFBywlhxMBb1+W8oQK4zPwJFX0C2+pQzIAqnaLWWcFkhZLWX4FkjVaymjukAqiVLvU'; + 'MN+yPB3S2GKqlgJC8H1Wi+DhxOvDSY/EfauPTUZMe2WnTGUCV2WoGr+8wleFVl+eYbi0rIGLUWG'; b += - 'aqRB0j7gBqL7YQRDY9Q0BsYd7i0p8CIHuVIOLh1QUKw4se0RJXdNFnxrLJZ25SelVR6mQvjJ6r4'; + '6FDvx5g94tRXS5ctw8VeLndyg1Ul2mkNGRTmUn3KxkfC0VeurWSrWI/vfhqvFWvWahzG5vKSq2p'; b += - 'hh5zYwjZMg09d4kR3NDKg9IiD/AcF2zj9m2infS1Dj8nrot3cIhEwYOAb6/9gbi3TdybIXhBxwj'; + 'paMC2kmgwl35CL8ZHASu7h2fGGlm+Yin2Qnm+YiwkBbafCFPmurH8+4uAq1qXGDDCfhaYczLr9s'; b += - '5ARW9eEWbqqAiR0ZiFAMy0tbHiDMOaCfpCep7VCk1AjcNQlJD4F5BMexJmB9RRHobjMVg3zitMJ'; + 'ATdHsuyD5RANle6nSy7JeU6mRDXccWeHuQ7HlIWe/AwuhtmZ4Z4WVzH1ToFAm0dz1uUsIk2ILZ2'; b += - 'yNrhYBYtUCsPzBh4A1IPoY1BrTO8APEWMZU5PGmG2R53mV0Bchh98gHzUTGDpTY4t9YFQDWLNBy'; + 'Sryw5N1Og60MuSOy1rqViZgZI2x+d7DOUiLFkoA7hKdoYsXAHcpTnGJBwa3xFJtYb3CH8RSTWI5'; b += - 'A4PEANpcExjRzbm+AuX/LtYopyxfSXjZIUl6Irjckt36WwrShvFB1gPl1H2+2zR/yrTqtIiNpVl'; + 'wh2NKxFrco+Mpjom4qDBhgltlFxO7mNnFwi5WdrGxC8Yqc9kNq0sGu9uuY1PUlawZih6MPyH4E4'; b += - 'X+YsVfpjOjf+57CzpYxtpxqLJuAESIKhNLyAcUjM+5KDreF6fHqQBTTp36g4zr9e/8ae5MeI/o2'; + 'o/Gv6E4U84/jgmkldKcsKIlfldMrL3+2OJMUQC4rMRRn5Xlgw1v+dKhqPfUWV1ZHFegoIWzNbDe'; b += - 'ax79RZb9HGmwjy17zRDHZCdnrn5DuiwxCsOWJGPfFvhL6wlIjq119IkTTS8b5o/uQ0jUUW7LTSC'; + 'Rnd8YBbWemOZMvjAhPRV3QALUWeMoEKRTFqFeiJLq5eqBazCgXOYmSqF4pmy+qiIWJAqxeKYevs'; b += - 'xSuu+RFynd98iDlO55EouULg5DHxcTNr0bMpxo00MxDaVpVpshEgTx+d0AtRx5lIqxBiE0EEwSw'; + 'onWCDqoXqo06j+RrsiCf6oVi2YI6WsDTLs3H9SRDzgcqBO3VvjJfj8B+itCVlfleWpNHGwCT9Vh'; b += - 'wRADENQmGRzBnIlkHglGrwfkMgLDZoxCFRtyHSQNFWWi4ejYzxbNrwzXDcixdYIKg/QEhxyuhY8'; + 'MiKEEGyXUxoRISrBSQgwmaJRgoYRoTHBSgpkSamECKZW6iRKi8sXSJ1AQJkRigkTzB61lkyH3AM'; b += - 'HvTJIPK4GL7uhkReuvqGyYmhFLBZrzL9hsQwX8HXhJxh+DGsMDl4EdRbcLIVEulJiUHOPOmGxBB'; + '2VtGFdykcNmviEmt9dTE7ahuKTk83QTMdsEyim7GQdPySmJrId3iqpH1ttt7lp89DUgzYudTB4x'; b += - 'nCMID6QaWKChTYMwGkbGdxvQClxFSLF60IqsVmrQapNZjCNUycr+0N1MdC3+xcy1BZz2vzpSs/q'; + 'V456myo8Rk2sfLutqBOjoIPLNvecWR/2/rFuc3GpAIjodilwGMWXHsivRJXnrBjTIGbkya+OYn7'; b += - 'o5Ua9gtMC6kWVVBulN9XgEGkcNEeNQIbB7cpa5WUvhEWMod0IVx7MO6pMSHfs91Xmf/fEMQvp3G'; + 'PWaAtEztI5mOf4EmZGKbDUzKsNUO3cwtM9+is8zUUEUcFqN1Z7babOKHvaBVLqaYMubMukQBuxc'; b += - 'rtb8zZ26Z9uLJtSuI3ddLzGgllGouOSpDrvO40lPucB2VgpjIeCX4BoL2orPVlaMot7ryA9CEuh'; + '4t++Eg5PkXolGgg9Vj/50aAuVM1BQvGjBIGQp9iWEUILTnxBMCeHFhjXfqMQEp2Fy0qFE+dKHDl'; b += - 'RussS3PbjpbIceIF+0Gwt7PIkn3FWnFdskYiXXIA5SRfAGUrNoCyJ+CyN9qyjKe8Q42NJYng5aC'; + 'OBmnUGG3S0MfCJYFGmglWpOFxytW1mJauP7xTBB7K/vbyVKqhoOj+3ww03m4NWmhOBgkhQQMlYt'; b += - 'UBRxchYEiQDUrQXqLQL8aKg3Sq7pqWsy3APIFywDzBfF0FTkQVaQ/NUY0BxmfZs+FN3VzvorIvB'; + 'atTcjCwHd90WST7CAil9VjKbKT6MpHs6uFyUT3JYZWYQdWG1s7xDJ7CSIwdZlDIAmSbpqGZoAxM'; b += - '6dLgQnYxTdRAVwilmnq0RW8KhzXHddAlHvDDlr3ST7VBSIgfQelc66A5GsECFoHROdGha2d3B17'; + 'NtH6FqHQi/YCEW0m31wKMFA0CRU8mIksitYunJkuhVYtL90IdbJtUrIukfr9S3qOr0KV4EnyRIZ'; b += - '2CHvZEQJO6dwrwZwdjTPom2qw+6vBaPM5vgdGYtQgoVQ16KOkeRVekDMBIRvWCH+7AYTCIRialq'; + 'MECBDZruJDr3g3jsXOFpCHFbpmxa05M5ydHbYUWKHHWUf5MRlpcCdS3iCTRp2FAlX3shAxR1uvn'; b += - '71xezEhEuoNEZEgkIpwYOArUcMEEy7qUlBtfUsxtQceMXcIbPBR7WFJZcyvBiN2GeWPulRFxT/V'; + '7AdvmzYOrQmcb+cbjlRuux2M72tIFhQnYh094QrmWwdXdc0IV6rL56cKG3Bz4N1hFt5uCejpUqa'; b += - 'F3CtD1F1mxD3dF3FPd30lvaHwdE8ovPVqLPgAaeJJ1R1GFTep5P839Nz3gQ2JuQxFn9fCz0D46Q'; + 'qSSz2eZ6N8o0WnBlI4SlOj94wxaFbXFuWTWWAvjAbiFYaKVE+IIqz9e/bHUBw086Fw8Q9oL7i3U'; b += - '8/yED0hJ9u8NMJftD6oS38tIafFhhg8QwFiiwfETMvstIlEOjEB4RI/JjrUU136P5tCursxCSEa'; + 'J8azmNcbN8NtulU7o+BSis2Np4AR9k9A31Yutc/C1pppRzfGfy6UlmMNkxc3t5SuKuM1LX37YoL'; b += - 'DJgQYmPxKmwFH/4OCGSKYhmJpXDhLyNUdbBv8z8TgdUMwVRzcTYGBRw+FYjUqoMZG6Z4ZynSlBo'; + '/cMscZ7kLZrCb9snsYl2mv2kSnloBXs1Picpcy7RrdV3QsQ4QdTaGjQ2PXEnIXGxooFpoz4t4EX'; b += - 'yTrbJnH3OHE1sh5UwGIryAJJsTwmCI6gksJxiYKIcCbmWELIVdmEWhGIHVnMe2BuVZJ1Z4FNFYn'; + 'SSC/Q3WqDB/SGqyklcSbdpn+OhECijsXNSjVQtGbscJ5eJLTigRsjPUFiwZCQd/7EwVU5wI+j6l'; b += - '4Wb0sW/QwywhNxoYBsldb8nnkRaeR3FvMyC6JRi1RoUa8PHGFeZUo1o5ivk9RRQlbTaUoy2w5hV'; + 'mRsJmXyE1G+PVlrI9RfcEcmdGX3YOSmO6VMvXp+Mj9GCz9ds7TX2XwwY61t2ZFgvmsOjHSjiW3r'; b += - 'ialEWaXyFcMKGl+eqS1YDhrqxGHhGwzUtdnwFaQLBekYMxr0a1KVIdy5GHxHsAshUM0Ymr32RpC'; + '6ZnaOZXMM1qz59WZsf+hCbQ7TJu/nCXgQ0HYy3xrnWhZA8Gr+0+y0MxRmF5Pm8paC5eJXqE9rdL'; b += - 'imuzPsD6ENhyLWKkG1AgMnoU+MAF4bcrqR3sCO/RwL6sIpxLj224Y5FOVuHA3UsxzAcTF7INry8'; + '2HxiltI1kZXuENjp6hd2i2+IYokQM0Lh4tjSLtzHsxAC0zqydo5Nw0IluMxp8MjueYELzyoTLYq'; b += - 'TMT7sWV4eZkYDprswsvLRHoQtAp/3CX6NAfgHKATJJguOX6FNboMBIQHaHJ6UnqLczTz9CuedHl'; + 'oBLAXnRhISj3ZQJUZrqJioMjHBjo/hkSiZ0W1iJnIU2tB2onTiO7Ldqx3SQWHjxHnn32lBI9dt0'; b += - '6ABYjiHp5slEIwocRguIkhE9cuRA+cRLCh8/XflgxOdr/+X802s+UIc5wxEwyji8bDqI2g/zaDU'; + 'VaaaGXWgu2NQlSANrRaIIpptdRJy+NiR4XOrTnZ/qupOzP5eAZRrr9RklvBRik44pc2Sg5olEJ0'; b += - 'fqAyaCrFSC+PWae2AkJZFGtgFxhMP5XcAjX2chHkm9yGmefcTs3U+j0/zuZySE24Fn8MacrQ6EG'; + 'hM3w5Uj+5ooMB40J3NACOg4WMlaVL+oENZOcIKCVrBBFkei0AT8DjZvC0IWcncmsCYbUE2UU7ST'; b += - '62+O1y/4uNR2gRD7o3J0jtEB69vOoKfDIntVRaFHRQpVQKTM1x+kh1YEZBMuEIMMIdt3qWSMTLH'; + 'bcM0IZ66cYsJpK/Npa/NNW0xxgUR32VMkVyibvuZEycdliH0E7GAp7MyeG9fL3U4QGcCBFBcuWL'; b += - 'fA643DXc1M2dQG+L0ROfAUooqZsL4bRYYhC3BSnRNnMH4DColAfKFkc6cOYPUHlwycbP3AgFHP/'; + 'IiVqRJ7OxEl0pzBYkLT/O5gnE2IF2FsJmBIjKE6MrKmUzg8SaY0lbQxoW0py8BUNorbHVXq49kp'; b += - 'Bs3cHZkHjijtBmEIzh4IDQKcKEkNolIwGzAqdFskMOtgLZaniWWKYjJfB2NdSQLevFZgPiCaHLI'; + '2rRLpUdGWRFUc5a/ePqYNvmDsZi+ShbEBk2t9yMCzJ82A47F28uPiOUaiv9ZrIVYRgkRSb9h5/e'; b += - 'kW7tgx65bCUPxo0PwAmX2Qx3TEfcrQmxbZIoG983GadzDe37wFNWTzxLOTbB7akesWnVxwsMpsH'; + 'NNPkBm6DJTS3HWnd3EiJdIViKTudgEdqDk1mipAJyxGnwdN8CKuM2nQ+v1oSDwduY6O+5tMfWHU'; b += - 'j5l/yGneQtqRFb7TCDQ+DQhEIOKAipOVEdpZGamun5s4CaLil22ZgDffVg+4MCCWwPEu9XZtVM3'; + 'NbkNnrPXq+chtZLYL5ec2VGtbdmKGlfVzG5lzG4lNOB+3IaHEuA2doyXqJK7jG22Z8xUqYOzYXC'; b += - 'P1HJcFdMfTHtxLIhR7qulaTVoiGyoI43znINn1E48/c29HbthA29XSu7oQ95joYO2GqclGlo5ss'; + 'Fp9+HxxEAC5Sf0HVQQKwniR87oDdpaoFCmiHygOlZaZHWSwtVdxX9MKHAQFDzTBYOgyooqOXxng'; b += - '6Q/Wimh5jULVR6ovnEg5CRziIGngJQTgaiTtb7iQ4CB1gIjqhhQ+BQMBV/SzAh9CRXrVEqNakLP'; + 'ZykmrixT878CoqEos3H45tn8d5Ey8XGebjX5uIhlKSOUoKxXWQlZBo7WZYRyb5LkbsHM7yNDVO3'; b += - 'uVOz3hNRpo1TzIHLWz2NNQ59PhWtnkyk54waAn8IPq3ABtwEPAFW2MQ325mzHLOTKzk85G9AgQj'; + 'S0mS1F5ix1GMZwGmE5cIL/MDUsoc0G0rlGQ6zAnSQzf2Yf1WOthpTPuN6teqZKYuJXYPVvGqs30'; b += - '807wToCAtq7BfJT5xUohfJQ0ct0pxwoYQUkd1eGpi5Xlf9pTjpyL9itaJO91l5JGHPPPRDpPAkt'; + 'ACVsFBKxRabfCDj9UMgSrHX7oKPm/jkFOEsRkMy4AKdQDrCnLZTfuZbshsydjWCqeSKEFYFwJxv'; b += - 'qYoR3NPmkLS9SkD21ATtL0VHky9p8iXPGxaarIm3Zlhk9A+X5r4QCzckIosj4mIZ1hog81KgiWp'; + 'O+PdhKZlAwOwZsYkuQMrcTFFyWMOUH07HDSGPGKlw1EcKI4dKdnsSJB7OCcW4qe2T5pWVxfxW4E'; b += - 'q9KrpjR4NvMvBTUFFXOxFFE8TEjUfaNVKGuyraPcs9pb7Q+DCg7dgX8UNF5QAeiWnUICUR9Fngg'; + 'ajBZAkwY4Eai1S1BVtqxhFTxbDQqRUxLLwrFePwr/5+5PtFdADTJ+mURH5y5HQVPGKp3nku3mnI'; b += - 'O2yAcrW0mQgUE9MNWRdSBt0zwx4tFfme1tDGdxq87ZE4Ql5o94BqwNxzZ2AiqRTkBs8e0e8XUpT'; + 'ikzIJMV2PL6Lv1cNfO+vWImZDWFJyXZMc6HeqyBHVrFv4S4YexbP8YgjP9j12Hfd2an0SONR7Dy'; b += - 'GGgAFQGOm7XKG8jky6FpDWOwt0jx6FRPb22Hv6vtPXfPlGKC8pOXkOKuUiXx38dFVpo3Y8KgTZK'; + 'lOi788HWk8Qjr2epHXEh3ZtOGnRXTZToyZESSquY4q8h23K44bCLF18e3mcqAD69Xs1GSy1lwl6'; b += - 'Mr3QiETVSY7FYQspfUnKMh/RKb6o7kCUkJAmnnxVMM8t5NhqPhSUDMgit12Or6HBzi/QqsVOq1i'; + 'Mdkdl5gSCDKxJm0je1QHmJ3/novideoi96bKATMKOOHVuwcN2Q1o0lfsDfxJi3jY2FBU+0or6H3'; b += - 'YZmQ5UaGSKXsjYuiSHBFFCx5qbhUbr1peKZxslcat0rhVfCp5JlbRMcUX5ZrQUL1WexvX+az2pt'; + '2TgIRpk6MiTdCsdamAfVmhHkCdWSiBEgAl8acK1F20K9tF6NdOFSinmggGEZaAy/JKIFvYd7Msl'; b += - '5Pikg6XJmzA4RYcJw33lvnf0M9wRtr/G84mo1H/KdUNPolK1BUWvAZkpyCyM7MTNToIKngeVUvd'; + 'EzsSLpg6Kf5BnHGp2Dot2c9RUUkCVVolukZWj3wcsdSWKXSkx01pGv7EaBVsz3MJbthuB4rUNiN'; b += - 'V69lT6FA1puzgzK+6AkpOCbDoPpOab2TNTdY2pPi2DsSx9TN7g+xf8fziWLVW8oUjsZVY1GWfbk'; + 'VHKav6P5P93u1Psfd94B+v3x/i+H4X+/3NJALzHLEtgl7GfVqNseABfBPQOi81RKFbEvaHnIhUW'; b += - 'HkWJQfbkx31+g9/e3KuCIQ2LUYaGhYOCPswc/YGgA0bFzLTKTLwGaFeqw9V7dnEN+GyV+XnnCfD'; + 'Gj5MvYoTbKY4ZoRQe58ST+rZYwJg1cW8b1U53t7mS6moIdg+dkXEl0ZsbViHieK5HOxLjqk9nma'; b += - 'q92h8X3GzkGMuloVJhOWSu7xIQkb3RZW4e0zEMAKizUvc7Un8j66m2CqSUqWbDN2GIjc6xmmVDN'; + 'kzj4mrCGF0DGgpXQxqMpnTAJKUEpQVYMYOYddoL3oaL2H1p3aArSD3cOlBRvOPHd5rbjKZexRcV'; b += - 'iMbNhbyJIT471DBDcyW1PFPhRBjGkEn4IJShuWxr56tOGpLiYDBEKOSMmjux9tdC07nYBSYUc/6'; + 'klHbWA8X2jIwNFp20c05bhxZDexEpdBlR0WYThHZkcVD397sisBLV1ckXjq5ovDSwRWLl7auOLy'; b += - 'NX1qbyIkH7RuR1UVyTQ7FyJ0cLDKGIikCSEyH78eQmS5H2+6Hn5vOh5CbpU9vtrPO9bbEyItMvx'; + '0dMXjpamrDl6SXHXxkuhKwIvu0vES73LRQLnceIl01aOxc9XCi9MVTaPrioEGNKFvX1S9MX0uo+'; b += - 'G0hZ9cOx79fcNr9Y7BsDRXLzWy/PfOfpJz9ZMKWV3lekH7xpxucL3zs8d1ArvZtI3vTbxm+mL77'; + 'qN6LsYVU9qr0zDa2J7ZSFe67dX5uG1QXtlDl4btldm4DXGmHdoFbrttrSn/ok2ZpYfLLfCtKJO0'; b += - '1M5EEsPxjx/Z8/OuxrW+GWumtRXLdm6C5+nZrDqo9kPSI491MQ1LZZMZuETdNuqeCF4A2OYVxe3'; + 'WsZz5ed/xBmoI11WD1j/85VL8CoBbGORApHY6OEPidT6ZyJmXemXXuFCDLPFYqXQpcDL+NcTrxM'; b += - 'auxgPvg2GM0KfRY8/B10FtJBeBpRKtUnW9IIrhpJmIPgpeRYhE60lybxAYTGv3xk7FJ6pGMZXel'; + 'cAUz9KZx9Mo4elM5etSsYI6+k6Pv4OiHcvRtDOsghqyF4Wilj+noCwk/ChaGgpWhYGMoBLFXTOO'; b += - '66sVvoQukoGrBi5daPqGkCAiiUyDSKIRW6SjtTSpzgEkmRBL/AsD8c99mUQpy8wkmUjQSskGCCw'; + 'vKOOvmMpfQSgEcRRsHAUrR8HCUXAb+6fuf1fNRF0bcXEZPy7b8YE5060xpHTjwG8P/mDJcocx7B'; b += - 'dyHhA1uMqiBnxrga4jV7ChxgugpeT+sOlsJqF0JaFEd41IDqbkh1nLC+pohjb0xT4GD8tzVlvAS'; + 'KMZ7c/vtKc5Q6/HJpX7KkgjqaNo2nlaFr+YE+FMezCGVIhDBftL+2pusax1V9uBWbKe6qO8eBLj'; b += - 'I8wpswOswaXJiAPSbUG9gdaLUhjNAHTCORiXUKqONB9r1SsQMiI+MN+xwguHwlg4QPm4fE8qrd5'; + '82RfT0Vb7z+6FtPKZmip+KMN35/fhX05P9zPRVrnHn117kwC0MZLlHG5IWlv1qzRE9FGp/9NP0p'; b += - '7611Z8q8/bg2wtUBVEIj+dzKlV0lfHw/brskcK6bDwXACHJNBXA69ExhIylwkHAbKBhrPALSHbo'; + 'P01FGNMWzTitXoGmHAxNJ0MzmKEZ8gd6KoSjGczRdHI0HZftqdB/p6di8PM+YDv4HSBwm/ZKITK'; b += - '7G21YhHX/0YRjFDi2HQVJsqSY9j0TQ1FysmBjgTAE1DErEZdkG0YgBmliHiwiNxQgRGomEQ4mri'; + 'Z9koeziyOnoujp3P0Ejh6dTl6dTh68Ry9ONGLvPN4n/GuYnwLT8fV86H5PKE5nPHXdMZfRyN/TV'; b += - 'vMC4cVZYbCFvBSIcZlrPskKOZxhCP5dqT5K2Q0skjiFyoxOGBkQfYg+My0sMUKgvKyBj0Ot8Q6c'; + 'KykdCwJ6bxnijjPTGV98QfGtBQY+uaWftlGsBBxHZ/q3xoskwDOIDY7luvPXRRIlLvS2x31xsvY'; b += - 'bWh6qxgxwYaAHmhN7Xgd3B9/tPJzlBpgMUNx5cG6DHzrM/c1NSC6jCdP+3ibMU8towwa/E201hw'; + 'Niv2n/pgIYz7GozpDSGS9g1DaibDaiLDajOBjSBDWhdjl4djl48Ry+OoxfL0Yvi6EVy9CJEL/LO'; b += - 'klXzGTmFCg+o/jDbDOM8jSUvChgjAkkXudTX4AFBxXkN9V29hIh9l8Kg4K3oWA6YTVyCoIBEs0u'; + '433GuwrRu3QoE9hQ6mwoXWwo3ddhKN3GqX3LTymZYihdxuryj/aYMsVQAr/fs/2o2TeUCcbnM79'; b += - 'cxEZBtRDZqgsxEWq9yO09yStb7mHlpbZnPjy2zukbW+5lJxf7K5C1ig7QBoUrQOQiNGqMpjCmNl'; + '52fp/cCjrsqGsw4Yyng1lHBvKWI5eFEcvkqMXwdEL5ejFcPSiOXq1RC/yzuN9xrvq8kMZx4Yyng'; b += - 'agB7aSDspZHl8ckXa8c2xuFXrNKDnHSmgm0YYF+ijsELbFkGEmYWmsq5YJiR+SfZplZ/X5PeZZw'; + '1lHTaUda/DUNY11h186HWLb1bWMWaf3vS62Tcr441N609XmbLEUMYZr5QsKAX4/9xQxrKhjGJDG'; b += - 'Z1T60hQzcglXDSspP7982d9WytX98rVyBTBfefGjhrgd/fve1Wan9IKLmJrFP7+CACAoF1LB87/'; + 'cmGMoINZShHL4ajF83Rq8XRc3P0XBw9naOXIHqRdx7vM95Vlx/KCDaUkWwoo9hQxl6HoYw1HjtW'; b += - 'arhS4aiHdIpccWU8smfJGj4qHYBBaGqpQuzZO7rMK8lcWWdlvIUQpIoSGJ1Fy1ALBv4pLVr46So'; + 'tVP1DWWU8crBLz9SfEMZaXz41jPtfZMywvj2o+VPyf8HJ2UoG8kYNpLRbCRr/dkC8y8VlaVzD2z'; b += - 'CZZz8jHjjp9p+LY8JoPeXUFcCQxd6qkLGCVwEw1Uion6wRIPFgUaxD7J9uW5DbtkZNu2iOlmoZ7'; + 'x89cYY9P2E5VKpl9Unt///HFTgKicveDwfPN/ReV/oqjc+80zqywBovK1uas2WANE5Ucnz/xozf'; b += - '21y/LuXI6lNQn2hSfUKw36A+wXjSpD4xQX2iofqEwiBDgyKRUiV41Sdz/MvGARWPWcaKf81wBDx'; + 'KLyt+ffvmEJeu/ovI/UFQeWlfynTlAVL644e9bA0XljOMfnlQDROXBA+/vUP8rKv8TReW3z208r'; b += - 'xvwfs6uMSFCLCsGIUXjFKuStGc1eM5l0xt5xEa1r9XY0ZV1prh4JlOD7oY/DAhI6LMcyY4TJjxv'; + 'QSIygOn//HPQFH5+5y3D0lZfllZWbF6yn9l5X+krPz75NnvyQGysmzfwR/lAFm564enXlUCZOWL'; b += - 'GYMaNcZmxs+dW251oDBWecBVzqyos42jdIXAQNxcDu8ey5RhgnNnHauC0ZZNGEsCZ/aOj+Y6u90'; + 'v25fof5XVv4nysoN8ysxhKlPVr6796uzgWblB3NOHwg0K08femWb5b9m5X+irPyh9PXl1ky/rDz'; b += - 'PnUkPHlOXQL+BmVI5IwZOiWMqPZ3OBwp6jgs+tJ3yGLQlRTpBLDfnYpB/SRnknm2+iXFMY4lwZa'; + '11tw3/WpPvHFi+hefWQNk5bnfv55v/a+s/LdlZT02lBFsKCPZUEZdh6GMMh4qmfobaKSc3Ucac5'; b += - 'sbveUFBTI0uRZnaNssynVWwzRkSORqQ44j6ekyCO4NAhLI7QCH1b86gXdRede4ULCU65pMSBn0M'; + '9+/SCoPbUYWhFG+ab5ZaYsd7TYHnn88Vd3gdoTc7l+rMf6MYL1YyTrx6g/MJRRHM1IjmYER7MeR'; b += - 'S1YI6iSR0ukd43hrIGnQqhcQOWmmlIgo7NJZA3ELYs9pkPKgqrCoGWzmLBtugyAGKeb+RqHFIPM'; + 'zO6GgeLDeBgUXpSpitJj9QbZboa6RF640xXY+jAJpmuJjXQm6AnZroSCTW9fqarPuGqN8h0NSDk'; b += - 'FVQMw2lNMhpsro6SlqYcT7HKO/HQ1NTzBSxGdPmQq4NCnAAcsXIoS5DZKTQKFlFFp6IYyZY8bpn'; + '9YaZroY6Ht9TzWwrEo+i6MyZgdmIKUR3mxfVfMNW6MUd2mKCcEe22Otlu5mmTDo+iado8ZRREh4'; b += - 'HkRnkkjf+VitbO0usajMAGu4ZFZqmHRv9ZDtIEyu6Sazg5lk3XFT9aVGLIOlIEMOJf5bSJZdmtx'; + 'UV3DHCk87JjIfTfXJiwZuZ+GJgSZsR7YB25FtyE6Wkns+x/I2Svwk00Tu7c6ZKOlOPL9TR9sLo0'; b += - 'dBalFXBI9o6FjGkUT5ZjaAr2VJATEgHbHC8o88YFYn9sReYoRYvE9aaF0ioSIczDyNuVIctFbk2'; + 'xR3vn3+k6KT28SAIan51/v04f7OxVIRKd4iva0CW4xiLlZFMbQ8xYBoA2qBDx5DJ7ET913KsnqK'; b += - 'Q6d8DjgXkLa7g5m9EUEEzmF2GzywsUuhEZJwnaTO5+UzmXYu8fGb7vXym+r18jihlevmMdkH4Cb'; + 'qzlmJJp2OC6SiH/oMaJo+SCAkqxr+NX0QFw7DzjvC/LJLIsPGvaNyKLfWBfRuenoNoyFao3Fops'; b += - 'bZXGoATr0RYadW+cF0Oa9I7bdR9bmZQpCSGDdTiGRStptpkcpupo+rrpsp+NWuNBDjklBwNDGfk'; + '3BzmZ0QRu00AWXxQBUDi23tC8hhDsg5+r+2ywh8/PhqRKBmTaAvTqkdAz9DHe80kGK589IcQZMi'; b += - 'uWgJxC3hz6jKgp+cSaBTUSXyF0MZsamlGj0jAJFtlWy8NgYZ96hk09wsLQHhNHSE/gQCHTYEeyr'; + 'ZmKRbafOdfCMYCcVQkBUyEopYOcAROxbzgF3AtQidLGAaPNkzWMJDsxFJSjy6xoBrjDuYrpFuG1'; b += - 'ZOKh0l0FtGgj7cBYSgS8RoeeQDRSJ0CBoWBCkRaakC0xWoMM3UkWtqprXovCQZIYN1YqIAQSmdJ'; + '01t5muTreFrjb0pxFBrl7oin40UmT0kDGBfbXAbi++/Ku4nbzz7CIzuy1d//B7ErstW//tfJXd7'; b += - 'WYpvXeHsl2796bWkrqTUj9PS+Mp5GElWxCiIu3NFMXoMlUvnMlMAzh0hK5plDuxVy3nV1THjVjc'; + 'vzt510Ku137/DuHY5hPDBN6w7B6dQsQrVe3efVgdI6BPjHwLKMriPfU7llso9qo67KqeKJnBtvo'; b += - 'QO4PePsUwJXwLCmOrkq8ScHAKdYaYZBk02CJmmxkpfvKgWDAUW6mV0YKtUAgbUy7V11UrZuoIBn'; + 'tEKPGBPyM1nvoe8I7BYLTgK3wtzpTYBJkIneBOkAdCH3DYufX0LXTMSuEdUp2oN4jLwc91OX4JG'; b += - '3mbTnIcgB1cjTDwcNb6TYtxrtPQSpf35f9is9b9bzbr5+M066+aTK+GT2IyrXQn00yfQ6elOpoO'; + 'BcvxW28oOU0+jiQ51ltGNrH2MxSA10xWj0leh6PekJBHPsdEnSy4F7tYnZrqZB+B8PFFszHhqm6'; b += - 'c4SdzLANGnlTx8SncULXqKVC11DcGnx0Q+mAN8CW6HCMVYn3TfZuIRvlPgzufAqQatbTdhhp3hW'; + 'R1howZ9RF9M2XYjMNQzAJoV67k2ZX1/c9BrXjyTQmsdqd0pXrfkQKfPCwK+muuXqDkRM2qT1yx6'; b += - 'UNu8mBYzCfQP3EHNDiKHOSGmhd3UsrJEnJ7i9BxFB3H5Q0FnVfDlE1kGiyV1ZaLARKKSNUkZNRu'; + 'pPk39Ekqj7BHRz4qz4Z8Cg2B6+ikcL5gajAiidjYARKEtkQNJOemCEbajEOKIy5ioeYgzLdijgw'; b += - 'umxgB2vQJ4wNwaIPvLvc3ZcxrN2Uoy/a1aOc3ByNk2UsMyTfN/RQuXsMfapUIbpa543kJCW4Akp'; + 'bMoUdzbfnTPTf5xY3EX67mJ8d/G+O53fWQzscUABX27IxegVEqaljOcsAl8fjFMPnRfQMaoebnM'; b += - 'p64sXdZMcbH0MH0pS3OEAq0AVd1s+jwZmXZR5fFGLbEeQxbqrmIJXgcWxCjtnXkOBT9mEdJ0PRN'; + 'cP/8RTGfzodHEhQOSbSzZViPZyZKd1ZLxBKYPC9YjdKQTadEII9Q6oX5E5OmqbTAUQ4wEV11AMJ'; b += - '5Ns1BU2+bQkNUS0RNEqKPftuMdWOwuraQ7yBeBTxhzN3/Enk6vAbCzqq2JNs01PHbdP6Ff+NNm0'; + '4+jTKs+S78pFwtBovGqkNT4Q4/0AiBrs3OxG+9sEGGpMfgNDbrtRE3c5y7tu7AyQJTQg/Va+OtV'; b += - '5bpsOLz+jbZqlKggb68KygDFcouPjZzgyvbBzFedcmc5VNW+oQL5ydeiWEzy2AhABgrihCOHI6L'; + '48s1uvmo7uDTPQ4akWPGIphLnYrWfl0nqxLJp25dQXTHFwPWAG3cvND3WbfGJl9Y2T2jZHZN0Zm'; b += - '2sRu51xfmlqc9f5MtIV1ZLxaKrei2VenSV1FJJoqtGLZVGDmmaEatzUJiPZ+bdZeohUMY9Didfr'; + '3xiZfWNk9o2R+fJjpFuBdLwwwxLyXWY6MBs4Vn5cUHjBJUzX8KvxHu5w0deaQe4ZwnDATHpAso0'; b += - 'kRGkxIZxYwnyQidL8yzI6XyeeUxRSyjI6AaQY67EJyjkaigFkq3K/aqpNrLpoG3k71lmrSVffdG'; + 'l22okO1mys1py9QFTaMAUYkJAyWGMkGGUocdMKLQ3z5TddPBkE9yQursRbux4sx5uaE1hDdyQfb'; b += - 'cSPZnjPNCzcO6gSCjEVMIwaZZZf5GHtL2DcCEl6DDuKGJd49AJFgMTDB8Vu2oMbptAzQerlliO8'; + 'oKbuh00HK4CcObJXATjjcL4Ya0vnlwY8abOXBDWuEMuLEGuuIBzummL8WjdVs+jl8WCE3mK9+69'; b += - 'rW+Y1tXRbVlTD27J5NahlB+Ij08GizZ6jkkgeeH66KJQXU+XFUYUvjsiLw/KiRF58LS8OyYuDfJ'; + 'gG3jq7bLX4P+S6EzX7n+G6EbX4v9Qn0QRkggCee9Gicx25KmkdJFpbkoqQ5lGRlSTolzaCkcJaU'; b += - 'GkDSnfam2F3/2jGuHlSPW7BP2prCkq4JlQME50yUZLUwJ3J8WQ2DXB2ClCGLJoVuSAsz23jWIUw'; + 'gHWH+53cs7qXUJGwgCJhflf3rMhyKqJhESqg+d3dJ6zUFSyyiopQbi2/v3vK1WuxL9rW+ItE+b3'; b += - 'DJqrJjmcl1hf1fOjOaPZeXynd+YNbIkgoNqvkHgPow75I2MFntGM78IsMes4fXCskQRKyDgEkIN'; + 'esyJRrMh6fxG73/c9K2JnRTb6i8T5PeCzItF6HBbZJIqAfIv1+cGnfPoabzPlE4WcEBRyTFDIEU'; b += - 'qOYXesTBFLLXLEbDrKLFPAtO2JjXT7Yxh8ptzN2exnx5vMbcgP6ornUPxtWuwpEN+VBSJcvmLyR'; + 'EhhwWFHBAUsk9QyF5BIbsFhewSFLJTUMgOQSEVV6QQ03WkkF28TWY/hezkSRY/hezgSVY/hVTwp'; b += - 'mr8MrkqyPDzvSe7+ZUiUlPBPiJRK7CTG/EsTpMSEAgokgW+eAVXKhFSiMFKihKdI8J4wDwBitiJ'; + 'PArU8huXiTsyhSylxfRrkwh+65CISb2ieOBq1CIiX30ePgqFGLS7VjkyFUoxMQo5NiVKMTEKATI'; b += - 'gFkUjB+dgegkKuIQgHrhPYr7gRgxpEaMqgGhW7RjDRAE8bFfGVVRlH1FJHii0pErkdz154bDKxB'; + 'AlS6IM7X8Gtk/DYqEU8DxoAwUQpB6QAGD2wnxDAR24HS2o1X+jW6uOoCp4SypM2UkdIC8gPsqHi'; b += - '6YLXI4dJrcI6JOljabNTO9ViY6OyP6VEbNdI8cfwxWZicHe/ZoY7Evs4tccK34I0LlLpKYjQPUu'; + 'm//AklT4NJkGhEJ+HDid5oYC8oLPohUZnpB5zMSqxKKqA1WWRUmv5X5AJQMWgKONBZ92alU/SwX'; b += - '/BbLdvHjW6V4y+MXivJGhErTHeMcTUJKAJfr3GSTCUSNNiegDik5y5ymye3IyYkYbChA9N5E8DQ'; + 'tV8RDJxEOoHsnEg0Nw9kgmHkKZeAhItrFkW41kJ0t2Vkv+N8RDlBAPtYR40IR4CBPiIVyIh0ghH'; b += - 'dcNaktcR4wkUgOAAKqDklyw4BihcBdBkSjAQu4TyqyzC3KFdMYm9jUGHojImn07wGgIuaZJMXxc'; + 'kKFeHD82+LB/ieIB/ul4sF+qXiw1xQPdt3hm9mOy4sHux7qKxJ6efFg1yP55I+8qngIrzn57cB7'; b += - '0+jFEAKT3LIwrCKUnCH9Ur/FHJbZCEPwpFsJsVcKU+ahlSH5WkPjFR7jQnyh16xZDUhyPWRXLBD'; + 'qouHsJqT3w68p7p40C4VD1oN8VCr5uS3My4TKB6iAie/nbGYGuIhSoiHWkI8aEI8hAnxEC7EQ6Q'; b += - 'EIxP9bQA57B8QLARiCBk56HyDskaU7PkWobeVksjRI1ENVEY8ggnCRIVQvDCT9IRC0jTwpXBV0I'; + 'QD6FCPDj+/yEerkIhQjxchUKEeLgKhey7CoWYGIUcuAqFmBiFHL4KhZgYhRy5CoVwOXTsShTChd'; b += - '1qMxRl9NIPq481cNQVgFQRGCcogx0IIVZJoQBANkFTDKgxRe7t0A3IsH29ggh/OWAmeNYjQw7Nn'; + 'C1iwcyYWeg5Yo3c8TNPHGzUNwsETfLxc0qcbOGbsASFw5ZUZi4gvAUeQOfx0cwi5VJRpVMZ9SDj'; b += - 'csALqai2GjzNdsGOT/bqY8UjUzS0BEm0RnwKUS6c9USoJVDwB1EUyUZf5f16eLjY/7AOeeMizYh'; + 'AS0K8gmBMvbsBTTx5tMkDiMbVI+4EhLHyFovEtimUrc2Xx3Tt+d5ruL9N3F+O7ifXdCYoSgxAjx'; b += - 'yN5fmVGTm9DFIHZle6tDldYTAEHPOWhPQWdo+UDrtoS5APYrfIE1f3OLaOYrM3xWlIIzG9ld4YN'; + 'W3pkQADuYIWibECxKDDAj9NC0ObDL1YtPdw2wdcdzNgLZsZeQLKNJdtqJDtZsrNacgh5JxXCwUT'; b += - 'fRGxCPR2VNZSjrBk/OJsIT3wROFIz11MQE83KyLXMq1sYT2BLUVq7K2Z2Jr49i2x6mNJK2FPnNO'; + 'CgUWNAZERxuXZYW5BS2Qh46IEhwhHKwj0K/ySeMcvo9ClH535R/KwoENAlULOECxncYhWCU1gO1'; b += - 'outx7C5muBFCcXInSL2H4bFVNe8J0IbLmBjskeyG6I7xJiNFCXmTOfaZk7nPHLqMhOSGYxeLcMV'; + 'YfkS756N+djD8L800Nskol408F44++7cUljpA/TcBXGy7kDYFGH5igAWPmQyUU5AwNXyhymB7uY'; b += - 'wji5BFwEAIFbNS9FLORHPuAxTjG7LpXIRm8YwxTRrIiTSr0eezmDiROahop8vqt3FBNsp5tRIgo'; + 'NHlKM3dKg0frkH7k20s2VYj2cmSndWSq4+bhcbNwt2U8nFThFBXkpRp9YFjw7WsPjBsuE6t7yb3'; b += - 'VAVI3uADZEYZiyGPgFsLdxXud7cIN5TmMIXXAUhQOALkqzixxUf9DWYgrDEjwuruwk+wDcAKo/0'; + 'oSX10a1LknI+EZ25JCnnElEZSVLOJKJLmCSlMtFN34qdSEQ3MsDxE930scuRRDd9Pn040W2pyaZ'; b += - 'xHnuqjq5hKDvc89M5pmcQIHKjYS6YBl6e1QTi6hEsWZGGAfKLJFHEM1mi/orve5Z86rnjl/3MWn'; + 'VJsiDkU2jqzLOpi2CTZtrsGlbDTYdXJNNn0jEtqCEVjmXPpZIni8ohTHpI5hiYSmMRx/GFBLi6h'; b += - 'lrX45MJ7Eht7Covvr2rIM/8rDbn9zDZkRllTpOjPThGM8+7MkEUnbsaoWHgCUh6KLfMHHdc3Lns'; + 'VYdCUrEeorcQmHPsNKXJ5Bq1jiXGKggeDnz6pPgp9PDLQP/OxZ9QnwkvqiRHXurPrk91RfierMW'; b += - '6+CVpHsB/9INMBD1wBJWZU8CBVaXBVCQLyU6nyA5QbRP98rKdKKJCgVk82SlkkcTMZD3Q3hDLq2'; + 'fWJ7zJeohpvVn3SexpmEyVs5pSwiVPCRk4J6zklrKnPKGFVfUYJy+szSlhSn1HCwvqMEubVZ5Qw'; b += - 'RAVZZShUlKFcdSKlRz4OlFLG3AYAXffa90bKJfOHbEFY5hzUekcEzWvOdP1iwFYeNiZJXslharT'; + 'pz6jhBn1r0AJputICQtZM2x+SpjHUsx+SpjDUix+SpjBUq5CCUtYiatQwnJW4iqUsKr+FSmBS+o'; b += - 'wKTP8VBapCQRLB7AfKcvgFcEVTiRpKy7DBsuxrFlxOjOx+3yGpA1syvAo4AYHop7CIE0iHtrE7B'; + '19a9ICVxQr78yJXA5vfHKlMDF9KYrUAKX0pvrk48QYM+MVWltdBYYzuFPI9kNhkID+vwxgvHACO'; b += - 'NHTbQvickVAR2qegQbL3IGir+SPRWw1couAxYmeASyxwCgai8ICDEm73dt0xBUBnxwjiWHfMuDz'; + 'bKI4J5q41grjzoorFLJLvEsEs8XJgjGb2OiADjZFFoHO+GyKH4nVeJ4v90z61qH/OgNn4/yjtlv'; b += - 'BlmuamORaB/vArB2smf6wTS+D8GOR2f6wDQWPOdDG3lTIXDToLdvYK2XSPihexh8HUwzLAwlQlg'; + 'yNldCkvtl1oK2YTftmHAbtoj8ZsVKJmIQofAyBUAIcBsAU8uU9m3wFukpPVeVjLPhn3aMzGPFrj'; b += - '3WAiL7aIlWrBXYB5ZtV7Mu1khE5KTEsaWQgkDqkesdtkwiurmgISBpx6Wuy7h7gg1hwCFakzAOc'; + 'tBlzvmXbKWa+eTKPFk9xlddY7styiqxQnrXRl8V2ds7JwKax2nNYvbFDZONelW7z+UBeBVCoD1o'; b += - 'uXrfrlVDCRItVhIEBRknWLdy/+Ldd99Jutu5VBewaPYlmAfXwihbzZeI5avuO1hZZmtmOpa70lJ'; + 'PUIiAEMl9hCTbl7HSvoyDxK4dF+cVPZjEqIP2W1Bs03f9diyMuzRuJ+3LsM0bp9iXwa0Y3MOifZ'; b += - 'sj1XTwyYX+P0C9MsjEMI+Lk6Te8goSMbMLGD4m4PdKI14UXzvQDN4QBNXgNMEYj/mBd0dX2Gp+U'; + 'lgeCyhyOWAhyDN7tuXseK+jLYWrzHuMLpGukPoqrlD6erEfRryKBBEVxO6MreSj6M/Z1/Gwh2V2'; b += - 'zS9n4g5OMiwPms/KXIGHSsl+NscxHAC88yxx6qizL/r1Pyef7nnIt+y0P+fz7GaxIVDUA4EpjWC'; + '7x6qFcP8aLrco3vy4D8dcBfGPRURX36NNOo67LjV3jGjET84NLu35XBvuO7Mg7/rowdd2VAzFr8'; b += - 'rgVeWlMRk4LPHImp2oTUb8ZxWug5MnJYqLmZNozUmQbM0KTk5RJoEyqj9GD4fMhZME1QwLBlJif'; + 'uzIOlg50aue7Mqw22pTBTYMlAEChskTmjGBaIoukiP67p4HqqwFGwfQlYDA6zSkJxw/1lzyyTTL'; b += - '6lSI2/QDAFbQ03KEZBDs7LkJKnN1jMqkm46/ukt2VsTbBQxYjk8SSKGNp7+hOlwOD2IR2/kX/8L'; + 'Wo7e3C1UFhlPrhx95Uk7LTO6YuSwCwTJZOJiGRymlJCDlHD1yTvKnVFJKZUDKMUo5FpBymFIO+1'; b += - '1Rc61efGbMWqd6MgQYYqTmgkbI+jPSiMSEloyK93sBFoUa0prfO9gDQK4NsaAA9iGc5mHCU7Yj4'; + 'KCSZ8LBtT4SoAJd6WeSzRMxUzn0h7BxgDmrlDjguSyG6EuUOaZyxfq3fW0TUSRs8KzM3UtiTzMO'; b += - 'DGydzBjZO+QwMa0fnYHKgidckKCoLW4CH0uVxBJy5FE3OPmC6yQW7dPw3B6hFczUFJKWnNnsfkt'; + 'dABQkgcCA2Q3Lj877aJhX0kNdokgMQgtsSPGwZuZzGICkjGpX1c1Je50ifnkw9ssvryvYiPilY8'; b += - 'fBmWmHP+Deqbfjep+bJW3EFPdcJ/ZKtxs5nt9tCduUHL8BCG/2IkY0BcfvFhb5VEqXSzNLuoDHk'; + '+sbTw0x+FELhVRpMOaknGhssJCqhIQMa4uVBbIPBq/8bb8PuUbVbrvRrdIGeQVfKsivMMNF3wGV'; b += - 'aYMGJmNhlR/5XM4GnXkScFlLQ2UAZfF8FcsZz8e/hWyXpEMlU1rEuFds0RDiC04bSLeuSgFruoR'; + 'IA9Bc0H7tjHpEb0EnL0nkK1ccCTkLkbh6ey1sLPDxGf/G4+iz3LcZpvoU+8tQ5GVTyRqakciuc/'; b += - 'Ne2M6K+d8yTUlGAdUdSM7KUkeBIjS8bhjEZkxw7oJ9exY+pxOlasn6hjB3ToWM4ZXq6iJ6sCaKV'; + 'h1Hr8u5Ncl/LqcX1fx6xq8VtT3ea+YEeHzLIUTRtWDyHt2ddPMkPN9ZGj8KrtstKt5lUEA1ob9E'; b += - 'KaKO+1TrGa7fo+KCHE42RwP6PtAPjEgPd8WwLweX2Boj8GEyyyBecNzXsLAnYA4RfQYJelDI+oU'; + 'wRGh82Y1MPtZI7BbcLgIK04M9DgsAmDQwkwOKhPLbxPa9CFhXcrVY19S6/UkrHmLJeNZKkvmbo9'; b += - 'tt/zifm5i0JkvQQNTaWBkibcySycSMZZWOUdgBJYtRV8tTPUW8uicpOble8QisSF0AMdH4wJVYt'; + 'CBpLspRHFbUyWWplstTKZKmVyVIrk6VWJkutTJZahSxVRTBBM0hPrPIhuxI+ScUTDyVBzF+MgmG'; b += - 'iwCBZdPOv6ttuoLmgF6iRjX2H0vb3ODZsx7ZRtpkKe6SmsInhwgpIYAkeuYuKuCw5WLNACL9DBW'; + 'uwCbQluEGvgMdL2EEWgCZ5x7Jbcbvp4ei1jYEfwbhzwD86Ys/vfDnZvyhqECd8KcD+UoiN0z40x'; b += - 'FKBVGrCLvqb6AvYPCizTAEZWhmUawNDIsEwDGG4VlmkAbSSxBWN4ufDX1fnrzlNzEg36vGJqmK/'; + 'R/6PNr+uqaXGXF+yIYRPqiEzj9X8fTF9hXiNTAiFcxJhXkg0jSKnk8F/TxAABGcEA/vt1FS3A3k'; b += - 'x59XRpb4rS+lI98TQsDxXVUKuNchtC/Bh4QU31nJYbDtl1ijm0xmo0Cpd32igw3As/DlIhVC1OA'; + 'uI1YKNV4UVsCR5u0M0aBttmeiZqrQqIqAfcUagwoTKrgKTy6Zy1eOoqxa36Nc/olbrK4tO5nSzW'; b += - '2JNGN4QLA5DrggtxskyK0TDw29XDBUGi5NMNF21X/QDvG9IlDhKL+6tnwH8iSfA7lF2Wt7jPvwk'; + 'HVN4dyjoNzNJqVCYQrxZYYrzJoUpzhsVpjivV9DjISjSCq57AUsKCmypGgcTAr/Er7USbV+AliM'; b += - '6HuFcjYJt1jBYa7eBYOJ8aT4ADsGOvDiWylQQwsf2AsDWJglb6p+29S8CuK4hgRWwlUBS2rR5sM'; + 'UtRIKIrQEoWihYnLlF3IjKXcNlcXcCL8KC7kRlLvelxvuV18hN5xyN/pyw/zKK+SGUe4mX67m11'; b += - 'qIlVJ2i45cbDQBTpeLqqBlZw1Tj8L3h2mezNyl6PMpDqyESVLHhFF0faxrhEPOBbSo9aYhpHJiF'; + '6jMDoI5m725Yb6NVfIDaXcCl9uiF9rhdwQyt3hyw32a6yQG0y5O3kuCHenT1t1UtYuhQUXdNvIE'; b += - 'OFAbxQ5zI8i3dEv0IkRzIrzSSpBfysZRRm+ExahuNp0r3SKBgyI1EgyH7XK2P/K6C5IpjaUrSJM'; + '68bp/dQcsFAIT/dxL6YrwVyOICqWzVuRd+do8BGrahmFmqTQRS4Ec9G1MispOcqL8kC7m6GOWXG'; b += - 'a9xQ9/NfQTkRJSrEk48xCjVgMIW42V2Bad4UfSFJqnujAOgHai+Q0yNb9BpuY3yNRcg0xpiEPWm'; + '3fc/6QwAukl2g7LLVsishCm2VsEzSMBIqO04A9hiDW+52VC0F2RKLAnC7XDVB4YjGCTAiiQEdQE'; b += - 'ITejJt0bKQYhSO495Eww2Gy9or3WV6ZPsOrcJl2V2TmJTYN3fxMkz2MrKJgYqKhc4oZK7pqGBkl'; + 'e/klCWCOYahInIVjX+85F4H4Bpa5XA8scrgbNMPnDSaiIL1uSo0lrVPxa4XNvC5zFTtNZ5FEycw'; b += - 'Cy8czsjnXaPHOtZschxrdG9G1ll+DD4yVKD7mnz4iXho79uMyrNFm6SynW+slDdGx6gzYGKRtBb'; + 'HH07SezOmRi7zTZbnsqKlluRzcmZJFRNe2YIMTyQOjbFRUVaAXm/0qA99EUPOBHyMYjKBTMtbsg'; b += - 'XBiz6MYl6GyWEegsv+Y/Pslc8Wqw4Qc0QuvJRGTYpxOYsc0idLyhTQBqdjPedlzXizwDbEN03yY'; + 'GFtrbWSHJPNipW5OtQDfRhq7zPXU5PwFAiFylTRVQ+6zTCTq0FyrqE9xnyKAa9DlzFSispjjrAY'; b += - 'i/M5kyIU4lSFWYmaOTNNjtc4wdYMmlqZ65X+SLlFLf8AfJcdUHfFBnS27dDZ0tdREEYJFomBUJX'; + 'Bwo9ZQdJ0pJHSLW5yc2eqbcImGoiQdQyC1mcYe8drDA/1EqKpG0lVz0WoxXLJO/SquGs9vZLXqo'; b += - '4Mu0DIPr+apdKWQOS0/080PdcLwF9VdyRG7aWc1SRFFUTk5NBieDDAytqAaJ8uWTfBZESGVqZNl'; + '4Al8DxjnYRn3iXGDKwEvWplTJU1x2FhfLQv7HIJt5J7FwRNxWfJvbhsjIHBndjsioDhRxfXR7yv'; b += - 'fm54MXDJFoapq0mkrra983n49PTtDsP1im2OqTec9lXGtcXsRmzQn8hAF82GHErUMRYj4Ons3IE'; + 'wN3+zCv9q3ewOhu5nHHV+4HFD9UuwTdSu9doLLzkQjRsrgPhoRQyvDF1QkG+6Y6bb+cS4r6xszO'; b += - 'aXtSAgRhCTBgC4Pb4d9hh3lo83HterPRYUDpFKvqRuSvDdoDj9N6tx9qNq64zhkce62rzZ0tt/i'; + 'kLB82UYlMfnf8rCMMIl+Z6mSbgeQEqDOaAT0cpqjm5OzcabUg/4PSr18MLYmWDqOrQd1BRfNdoS'; b += - 'lUeXdslfecbpW+Mwp8go13FCseUmOv8aYFC7XCmy7yJuCkbM4LS5Six1W6B4rp17BFcHdtQJ5RM'; + '1s8+eCr3pWTSg8jzKTaHDilCbygTyekG87CqNlFjblDBtGSekFTyKWZLUR3JKneRGjhY0y4ZLAc'; b += - 'mOWuBSXemSlJstKydw8BqpVGnY7AVlJQno/jYNHQoqT5FpkRGAFgNsEBgnDaEcq7tlghqA60Y7g'; + 'PGCtc1ALVPW4KAHaqAcA8OQB4RqYYDBiMY1y+71YWt85qt8UUZg7nB4ue7paMs5AQFyZLEpaiwC'; b += - 'TAcOEwkKm59B3kQJ/R6THUFfxVej02YjwvFPIhT/egkEcVEPOWZnl+1Au3hrDhvhWN4mE/Z+IxJ'; + 'zaPY73FEWh2FvC122JzJ3d+iOxxQMn0vJZ+FcdnVMFuDZ1YVAYSiCHduj7Bl3PG1VSptHS+BRof'; b += - 'HJZFwql7ZW3JbsXFQlR2oyrZUZWuusnVslf2pyp4yzoRTZyeqswPV2ZbqbF12nX0FG4DMnGK+Dv'; + 'aURivs49t5xupKJpig6EnOhu+TQO+DHVOYykVdl8hyiGA/K/VmoemMzc+BE1WGAXvThq2W4JPLd'; b += - 'x92FwXAmQ6zdwVFiO1EwNGWBpWqNi7IclB5QSVyAOZYRjfSdDsanQh5hZd4CQVxWAEcvEpR2aha'; + 'dYUXJv8Z7yMvuiWysQYKaOXMEWQ1kLyeoK7mIBdyazB2owKd+3cM3Mw4CipWbnJUTD5o8bwsRVo'; b += - 'vhriC4xdepUlRajx6uXYAvwrS1aJUVyEDQI8TG7wewvfIeBnV/QYYCjsTyoMowLlpXgmNoIfrLA'; + 'x4casyQjFSAbMTZ0RSh6GXQq1k7Aw1Hyw53E+sxxcvlEpwgRMAmwirpWjFz86sKWbewdL5OwSJj'; b += - '4SXJsGbnkmJ2MSheUqxIgZCULjTiw7sKxwKwRTi0kAF57ArwIXE4LDQHsTikjIpiImjFRkMKhob'; + 'iuu0/Id1szycmwjHvOFqxOpbgNEsbFsGABPD+GEWHQiWKhOyjLiMlHT6AUgp7EH+i2xdypmW4v9'; b += - '7lPh/Gt64HCeUtjGopaq50yC5iCZPtyieDTsYKBwzhU6LWcwisYJFnvrIJlolFQ+EoEGcjEMSJw'; + 'DJ3dvgMrbzjgiC+FWcAVQvsmmxFs88t52VKY2vVfAq1Z83kTsoAGReFukAsrVkYvo/3Fw6jmZbb'; b += - 'OZFnHb/EmNMZO2k127ZPvgKrJO0iD2Gm6OhPhhuFWhvp5NnlXS6jyuMXNl71S9tYn75mdqjBW0e'; + 'MfyEbuZtN1M6dkYfqpL27ZCjQavYiQAdLiZiIjbeejML9HVrQOuzqPXmS1pvpm179DyFq8+FXJu'; b += - 'N1T3WGnuqkG+XUoLuiQB3oIlOchVdONQDCEYq9XgFuJM+9FPsd+ClJVZWolpKrL1K0xqZ82eVOf'; + 'GzhBdQC53dVW0nqoln9aZlOd/PKAjAp7B/gKMZPQsiAyZfFDJWQ4X2m8yq4C3WOYtFn5+WYvppd'; b += - 'QcqUqT2QOlumdkCqikhFhnscBBz5A38vXW61pL9TOSYlgiM6JrFiXVNEVoCMQAYjUJBl7nNE3yx'; + 'yzcyani4CSmeTVjOiCv09ydEOHfywsCU4f5KQUbQ0aRmGW8anAh+HlFLKEnChmUUQPxwYM28io2'; b += - '2GID4yuQJD8xr98RALYq2EMRoC5axwQpumJwIYQzAiQBUkSKHaoVX2+q4rMSQYFxpGw15ttEsWr'; + 'k+xciDFqkixqo9iLYSZhWPGXV1dSrEqyoRAilXxDDVUZ/JTrIoFLIJiTf4xM5HPUXqVGZe8OMWC'; b += - 'mljKKSAfmILKPQ3AkAQHWMrEPGUZh2AY3wfzrG4JFWUh7bqQNs8IOHJHAULBWjErD7ASHZjUY5V'; + 'Bf1HKFb9IxRrYxSrEsVCh7AYVH+w45+T0aWWjI5cIY93m3xJt5l4t8nkvMosKnRjpGM2bXDwMRz'; b += - 'ffd2Oi/ccB/Y54RE6ayp1hEYk8hPH0bIrzURC8nVngptg5OtCo70YIbAnyoPiQampKFByO9R62I'; + 'UBCpP+6K3UJxwFIYPTp5qyyaEuI9LEztTIrOHcWah22uFRaPJZE6kq71GEQiTEjVjPyhR4T6d6v'; b += - 'uC6gwqbqZ6awYT4yEi+h6Hyw7CYzYgAo6Nh6g5ITaIoDJag7yh8J5MxUZJQP7ESNMeWs7Ug2BXE'; + 'xxUKNsPnDqdwCG+cDS6VDY7gMrHwcwCkEvC3OETlNZeLcYXFOjSBR4rkebZuLehMkpPMZ2lZMDA'; b += - 'MOZJNYKr3fbmNw5yEgDgSv0DqHF0KOI0s8ghAlziQl5x2bXu/K782rCaJ6j0ztR3+W2tb8/1p1H'; + '8uWLRaxXSkACOZQABAWWDYyk31noWgL0MUhecwUr0SRFvDKxb5XPnItr5xA7zlX/ZXj/K8kEeD4'; b += - 'ZV7NmKt09dbp/xHPVSQhWaHPRSzh2FneJ0uYfK+RBbruKUqzjlqr5yy4yKW6rcUx8dnUZn/Q+nM'; + 'QhYhMQPceouIu4EONSm0SFaIVVZUk9liZU41KT4uukfb8XYFc2MJ9sUuuNfekzFejCiCruT2vVV'; b += - 'c/SvP7bJO0yyGKbXZw1txOGs2hkBBKNO2HY854uRjVKlrxCdNm52pmrYYVTwwpfDcN9x7GNjxLz'; + 'B4goNj428iAUV6BVvc50X45nJxhMIhiBIIeanIehAkBzgPugDyQ3l91hpLQTJy+TnCNLYch/kjp'; b += - 'Ih1yT/pbiFehaPS54CvBa295TOyb1BPH5JU8yl3qHsSQaUDIgxwyDWk+pUFtISh3AP9HodXwXcN'; + 'eDlKSJ6iTmJbQxd00bA4RsxOi0wBdD4s2IMXZ+VcEiruiNKQ9XPxpTKGaj7MsKFs6vMVuxa4yKj'; b += - '5ZDBR9/ekePu20+3JgR3buCd8JXpy4NVtSpkj9t6zp13Pbqee3U49c3ZxPRl+tXzMXI799rrv2+'; + 'Mr8vDVSK2RXLbzOo6DrjdQ8YMVw6eWKpkC4Lg0vm2R0ZdlInSG7YvA6GqOrNVK7ukg3iHHVxst6'; b += - 'vOt9ftI4KEUpgovoJK3uBKro7tDMMUG6fUCyj53/zBPWtxcKyzAAXAwNORToYugBMsOFa2lgF1f'; + '2eXEa5nsisUrfuoFlw6ueLxorjp4WSW76uK1RHYF43WIKwEvLVE8N1JtLh0vS2RXGF7HuVx4GeB'; b += - 'SJYmm9IUScB7lutSXyEQ59z8fo2I0GTbofiNHW14Bdcm3LNY1Nul0yWoc+y2aRPHBR/C0gTEzht'; + 'y4yXJVY9pIlbmZY6CzyHcCDSTJpDWxEhCRbsxklsTHq+0CVo4TbhNE6Y3hneU6q5S3V2q1yvVra'; b += - 'loCrH53LHMtxTVqOn6FR4SAmMaNyhope+fpfVvTGb0sXfZW/6DM0R6Ttl6OjU+xXVIKJCV6q7gZ'; + 'XuRDCGITWmVI8t1eNK9fhSvU6pu36KXF7qDtctpSlNy90N9FpYJqlUV0t1e6keXaprpe4QvS6ma'; b += - 'zy9li3r+islnKfTpqClM49rzpXIXlFf0RjAMKtfZJyT8kFXMpmINs1M9Uj8oaqWup3BVqjHwr2X'; + 'qV6cKmeUApldb3UHUpPWrDqhimTSqfgVzXQj6U6vMFUqjtK9dqlwN8SqZhVr1WaElLuTgI8WLjh'; b += - 'xKc634wh71ouZG04yxy4uLtctboXoOOX+VDAatFMzZmhS7/JNVw1pMX8Sx6snjdYZcmo7XmY14Y'; + 'cL1uaYpS7o7QQ6CEXr/UHQnPpCSXw+vq6GZMCy11R5WmdC6HV0H9pe5ayTCIaLFBu1IalUPloXo'; b += - 'rvOa/pDQh2N4zCg9YyODggcg/CU41hEslEZwUGruFQp/quso4Gzffj1YjDRLdzj+G1J8006wKNn'; + 'Ey6pPmzio89tLUxqWg6EfAXVQVkQyDBiGyNBthGZIqbtuMgwPhrGAd2MSvCgkGQaDfPhHlqZ0KE'; b += - 'DdkDgAqaDRerROyde0goLV+81rUjJxlAMh6w6VyhOecPVfpkwCg4N3ErpP0QNji81MwcEujWg63'; + 'dvwtBvKYlYlRU6ISWu3B3EKtRoq0bSo6AjU0IRjSCwsSgrNBkohxqXUJpiL3fbcXOZZcUmA70QG'; b += - 'TxRJGdFtF1dhDkrvHLjwUEaaoBiospkiFBekHxMpQW3FAaPahxCgtoGM51RoOxZ1yDYPJDHuKWw'; + 'nZ6pw06JxmoA5LsHLOgUrcrWR1HLQwrTQlHLKJgnFIs8G6oUy+FXnE7WH32ZDUPlUro/xRbOe7r'; b += - 'f5iJ0AfZcp+vGwdyNobt5RmnmrZE8PBvOAUUmgrqKdGl66clw1QYvEitkj1/jkOMk08+qxD7IK3'; + 'CyTCktXRqAJiS2qXu4mpsxxbsjqcnjGJ9yUkq0OoLLUNBsAdlKwO0PGjHuj6m7BeK1BBSiTiEgk'; b += - 'asGCtMFxWgSrwKv2Ai5mKQsKbOJyyKhHMxCc3ZAimuu9ZV9QDmDhQ+MVWbi7krKLJQASPGkxiuY'; + 'jmhIPNbLaopPVXlAyWA8vTWlW7naiWGA5jmRSny1AfClquRudpjlZTnyy2oFqD2YkAwSUrLakWg'; b += - '1D8SyJpMRylsESkRWWtpK5HUWBaEJMg3GeSLFx9jRsESJZIYvE/cmWjk2wb9fTAotRh/vsxPSpU'; + 'h7oBx3PQy4K8HbYkpTohCDhnoSe7o2xiDHjo8rTWmCGCWJN9ZBj9jYMlZLg1K3zsLENcLPu6iM3'; b += - '5CLN5o7V59G8KEXEzJlqbq31z4OpUCruGzwVxIX3qNXBoNwhCxw4gReJQk6p9fVZlTVPxjD1RTH'; + 'hDIkO1c0FqABmwgEWZ9fZjxoTDbw2CqR8DEtsFsNsOcDYGpGeRyU1AG47NDwLFAIJ07zN01wuRD'; b += - 'MQNtqEuwADjskAzTIvwJKLEjygjM92Jr4ZSrBZzCP9VzUaReCGpLDa0rjDvnIskGXoXV1TJiXSm'; + 'V66OIOb5eIHqqJKRey9UeGT6eeJmjriZIW6miZsycTNV3JSIm/Myvzknbs6Im0pxc0LcHBM3R8T'; b += - '80BwrJACDcEahMoyXEd68wSUpdaaujtBWJwyD5B1II66isd8x8OYkvBUHlta9KTROyrXxoRVwV1'; + 'NYXFzQNzsEzd7xc1ucbNL3OwUNztkERm0Qr7SSivKGSjqW2l1bJdZ2L0K4XNTK8d11SVsa5b0zR'; b += - 'Is1ShmvwQ0cMBI1CZgJwnNilpiYfHYqWIgkHACtbMWcHbQ4igwhuD6lOTJliGcaSLHxWlorpONW'; + 'NTt0mZPJwF6szszQW4/CNyLLiORokYPdg44k9nSBVg6jF/6k6e6qUPONBrtHFYEhtQYNOD3qX11'; b += - 'AwBpayne79qxY/OPuLwMEgTxtx/5nF9y2d24FgkB+cvPdj+/d+fPOXgiBnPLhb198//Ats59bNQ'; + '80YAY6tf+GC9xJFrIHzJFrF8w/nQ4rjIRrOaaJHysTNVHFTIm7OS2KoxM0ZcVMpbk6Im2Pi5ogk'; b += - 'W+qpby7Yxfv970xJZFkLZE+oF7l+5Z+NyHaxMwIl5KSdGWZz+/9albzkVJTMqn3+385KFlc+f2A'; + 'unj4VXt1tiIr5KVWBLnQHsVencE7GR2isqqMkpLl660FqGYONy5UOQq8bL8OsyaXrF8ygRIYIsa'; b += - 'VZEkVDuhYaDY3QFj3AHitKssfmZoNioWVDt4Dg0tD6m9yK/dHB2bIBzof2YDRhNFI1lwnbR1m1k'; + 'jJbsPTaQEhqLx6vOLFpspgSFvfLp+6W8sgTXLeHPdO5OtlMAabOxZ/8rrLIF1hXFy3/5Z91EC6y'; b += - 'cC2LTC6ryGRPkdrxiwyWLtIqq0jLU6R6/CINt8hBrjUsEVrECTM36wg6f0SlTZVkc7Q7KyCxUzl'; + 'TjiRcXHmZ1sO4zZr8zZRDBrF+NN7Z89pxc4IVhwi/OJugqDRMtTMayRVcWvEQk4U3AMC1Uxd3Di'; b += - 'KMojw+AZiiZnXEfa4GNKeyE/YfWGpgMlBxT4GpJdPycJkAJtor6Ukqoa6Z9lgRrGVcwS71xIUOw'; + 'mOWytz5VvqigXTNEt9oKkYH31eXGNxC7P7T55ZJLBiEjHv/9AKxw69QQOAgAexGl6MBz/WitVYW'; b += - 'LXyFmV75UkvmMP2LDQJ8kyYP6dwNkItRRrZGogNRXZClFxcra9b902APA34/gwRVclzhXpj4Ojx'; + 'JQLDmGAgZoxw/J1C2xnM/b3OAm0kIU9GSxoGhL7dPHaCbeFTFGeZhWT2PxzvElGc+bGB0Tp5szb'; b += - 'UU2IBysF9nNQaQIEw9mP4TpSD9pFlTWBzPcD9a+lzQGcj+Z53up7vfq7SiZzTOhXD45ygJuqE8E'; + 'KTorHyCk8xWY+6XssEk0f2jDhH2eOxmjz8Ngq32PMLTzGafY/5nTJfHeFfxI6mtaZbMZO/hiFR6'; b += - 'ToGyDKI1bzqm3mjK21iJwzB8ZjF5EkOaQhOUzaU6/nFPulxqG6dktiXYwMYquDUKKo/Af35zAJL'; + 'ZjBhKPihzkA6BCuwCwpb2Sacubohg7PrEo5knyROPwmyw0q+oLa8QCH1Gsz0ZoWkFNKvv8NgYtB'; b += - 'C++QQ8T6rE9NndBIu0+aEQMVeDcvzSz9Rql2bMBVVbDBaBqFvblj8cYK0O1auHlwO3HdwcxM8cm'; + 'R6uhXkitiBzt6w0VBbP2eaPyaFinGUNl8gUthqoPaI6WEh20syVST7f9jA+u7ZtQyzCTJIbjRTU'; b += - '1GY/RsHqUnTdg/aU44Y/ATx7hlU3gaVnMIkkVtpyh4OmEc8c67goVbCrcR9PmylYoToZtUxY6Fr'; + 'lbXm3KU9euQ+sh04/FvcOfyaNwCYtmObpJ2XJYdb5kGmNAfu8Mcj7kZ8prbSxJbvZM2J6Z38gYS'; b += - 'up0zGANF5vCqWQ+ZSAoWIwOtBrye2LuvBRAb0tbQ6MG8y7djTTOnyM24AtZvnVgMHD400GM5A9w'; + 'NTpTLgvtpwW6KwInOx8UzLEiECJQbggVawk0oC6F3UBUlWFUHVUPuGSxrGi78YUOfJp/zkSwQke'; b += - '2rjALtnLp41Tbase21bd19YrSDqzUJc0g0KvKa5VCSVRCgO/lCTSUCyTJZgswaQssshbZFFskUW'; + 'ZW4jCWMYvgjAuCiSwUoM6MQFqFPqdws8TN8nnwIooMGszXEUFTNta8it7WNYA6+SMDSEZTzrh4b'; b += - 'xRRbFFlkUW2SRfsqdNmI7bfg63dehFDqxLMiKUmxAZaSF0OQ6ro3HENASHZjRfF6hgxoyBWjLB3'; + 'FdACvuvHrlkZqEhKKyHicUnsLnNPHwZEmOcP3YAe68JcWir82Cz2HTuzp65UDaxE7ls5TNlMvpX'; b += - 'psJdK9FI/kMF1o2ctcplYGlymZLpVM+PpKS7YyzIjZiFgq7wx3GRocw8mrtmN9XX883omsO8gHR'; + 'xnBTk5gZ1ZIH53CIriHssDNVUfxwQHE9IEAJf4DWorUw1ufU3ysxeg57trIk8FX8PfGZvhriWZo'; b += - 'SUFP4Q+xCVHHCJyMRgYKxEOV+ajQVqpeHzvZKmxqcjVCls0ciRUgrVRHVgb1YG1UR1YG9WBtVEd'; + 'KwlprjHaVyqIwqgYLNINdxJDCmOQOIn6icbpDisWIN0TpxjE2MTByzTHKvITuOVWL5V2qw7HIpF'; b += - 'WBvVgbVRCdYm4itakeYBSQqjLoirMNOeJCWOloq4MmlyiKtq0phRcUwcldotNVH0tTwUZMxEuL4'; + 'hwXlWyx02TjDNwZ2bDZfJPLbIXRQgHFvrITTvEJhZBXAmW6Riy9pWYNjDWWm0XiysDYxpgWsKg6'; b += - 'kplB5EMAGyOjgOLtIuEDJ81JjKin2V89uA/5xx7PbpOwgcrmPmBN42qcax8VieCv26UcfIB1NbM'; + 'izgLNwltlc6aLEuFmWJj328i2IdgFEG3BY6gEenxZJxLh6lgpWMZCU1UZJiD2BEx6YsxkmSiMDi'; b += - 'nPSWfLGzyfll3Uu3+uKJZ04Un4Pc3xKO3CHqVOUZqnKO3ERX105oparf+porxj9dGZG/b3TqeoL'; + 'UnkoAqwk3iUFkprNxQPJqKIairkJkymOxXZRqlWEbeVv6WDILozpXIemlHgaDdPdwCHAbI0EsgC'; b += - 'ix/ijWhppgHuNObb7n20zLygSQsaLkIwQ/KaRGO06m2qFvpITcPnM63K6ugD06nIMthYYhZp/Wd'; + 'hRu8rIUKV6UgN/LTN5AFskGfxWDI48XENFGrmEdewSkZ07BEeDIbP9xpJuuLCEKG4UsTRYHRTye'; b += - 'BN73xI10JGgSOFrq5NAGCn/4E0DSBdJ8RQr1WSJFCDFg0wQjq5fZ2qf1M9TtZ0+noC4K98miLQm'; + 'nGSoPLAl5iGpEZrkaihstHjw6OA5PDkg4Sijg5mzpu9QWB5vFeoMMQPxc74c7EgY/kFB7gnvGsx'; b += - 'M6Sdy87mnZJ7juc+CNoUCUoLgULSHoEXFaZsGwygfj0XiDMXgsSgUNDrSA00IAX9m6g4FwM5VUs'; + '1TsAIxhzR3EY5wPYyGLgd6d4nzocia/ZtEVquLXLMdKM6iDStdA1cWgUKtKisyEbgfciUXZa5S8'; b += - 'SqUjMLmCQaoYyK8bUJ/AxVteg44jXL7hb7SZkJJhZRIw6YsEhi/Bs37XEiG+1h/0eQ6AG6v7k5S'; + 'A4Jmsurj3Hh2XSF355Fuk1GxAhrtpAlDC8UsrkKwaA8tu0oYgwfjhjwps+h/EgXGBaMAF1/assU'; b += - 'BJZDJmNAMhWKyD0xJECn0jYGZMdrjQe/lyq1Il09oeJsw+8CYYe9opF28AyrYZEhBTXw0lg+xY2'; + 'X5G67V2wnCmOCDPHBVTcJsNDyurMIynwtFseWRagJc0op23759diu2S98aNxOvJK/bcn/4G08Vg'; b += - 'BG6kyrhuVyhyi9OUGPQf3OI0Z4vTnC1Oc7Y4rZrf1B73oY4KSkt1V24VJuP8GLlVvE9uZXo5+Eg'; + 'cFXTMSeUhgZC/8jqKfs1UhmWIF4IrRYv5Cmb1NZW9T2dtWXeVtGDiZcSTdwvdc6Ngf0KBv9JmiE'; b += - 'nbK8GJ+XTFn55PhdJ4yQQns4GcSZBLxqkf6xN+keyGYgn1FDWhXf3nUaqsWDTiaGx7EsZBeMHGQ'; + 'kNKCWiim98Fo+ct+NFmMY1Ds7llLYh5x0e+jioHxuvoykLudGKRxjowumI6l/apygo6cRevJSvR'; b += - 'UjNgQGYB1ASS3lIZPkzsQ4iYHbGGcXVbIPiUGuJeHCaf2TVKm81w7E2ztr2EU1ynmtNwkMGGHZb'; + 'lCXZ3CrDFo+4mDBOq87eZ+z0vbRrFq29+vCLQQMSJArVSwH2MBSrnchI+0Al3ZMiCGq0n3KYh7g'; b += - '1oP9l8eI/sIswpoKy8dS8wPEAyVDPUv858UzZ8CBCiBRIFmD51zkVLUxAOmPA32UEoZk3lC2YGM'; + 'x5gGFGclsx3w33q/BV6Bod+xSZBMjVL1GhBpjL9vlMvDooTXf1FU7gbGvHMYOno5XYxIgF2yqUT'; b += - '5y4ZaA5gRP+jV3Gf7PMmNqiRtlL/IbjMDqI55ksg2Lo9eFLn6D5lNEQRLXHrftdb3TSRsOfsRGX'; + 'YYmAlLcLE7Y8fCCprCu3iyQneGCHWPC38UCo0JbiSuzRe30ake6I+fttGJHlq4OwzJFEoYsLmGl'; b += - 'Kphe9yhR4emcgYmNjRP2PBWQ8OUrA6otDsYO9czPIKFQUO0yFvRCvDtBVpO2fEPFGLvJyfeTA63'; + 'xDi1ZEEDg11BEP9vji6rEkUhaariOyI8yHMLIlwMsTXGdMAjRz5g0SyiVyvOAKniiNYStl9dMOF'; b += - '4CV1bJ6qIIzpIURmmMw8WdxQcynBDiJ4tPIEnEGxqMj6Yx7VVgbUTa+TYM1V5TLOhORfPOoIOaQ'; + 'ksm/zt+Ju1gpbzx+ZOHmbe+dKpnkUCXZ4Vj5vOJGy6VCcpTa01LzUtMyCsfrucUe78js3LES/tO'; b += - 'YCUm8R98yWtpmjFYodt78InXdfY0j3cCiItT64yYrkqo9BteW6b55QbaQuYIpMozCIFr7hQZxse'; + 'kMPht4S0qKExr0Xpk67S2bTqkp3mS26V3SEtr16Z1WpsRqakd2t7g8aSnp7W8oWWrDi1bp7XIzh'; b += - 'ji+sUmhWErmY/0KPDFjXt6uRS+DDqQ5EnFSnhdmIVSElu/dMLWXGMP/sjZ8+j/WCuX1ojNHBPBq'; + 'jhTfWOb5GanZ2b1qLAm9ai2APXPE/asJHe3DHDMgo93mE5noJCT3pzb4EkxcN77oX33Ah/4dftf'; b += - '01Xyv6gXVhuTbJPZ1sSd0hZepWtsc14GUgnTGASN3sUdNGgN7YpdEtRZLHmDACixIKpFkReKgIZ'; + 'WNysfZpUHdfqLOxQwKuBXUPLvB4C1qMzh2b6k0vTB3TonlaqndUbguvZ1RGQSFUgo9n5KR7xjVP'; b += - 'wWxMcNjhRHv5C4DIkTYg/xGhIAcUetZbY41RcuiSST8aA4w2JEdTUGqxw9EFyscsQoHxljQqugn'; + '86YWegqaZ+Q2az+yVXJ669YjRqS2ateyZauRLYoLCgqaeQuatWneunlLeqTAU0htOcbbciv8Yd8'; b += - 'QN8QD5BzHlum7tgCBxPPlrmPMJvHCbRk/OpnZ2eRFprDJjpMfSHDC0c/bXKFlmwEmcEHRmUctqw'; + 'J+Db4q3Pd3p+eMQq6r1nL5q1aNk+mR9JyvZ5hqXkZLdIKhxWnejNSR2R7EKHRMBlz4b0T4C/xur'; b += - '/h0cqq+wHZeUA83ZTfbUCtlTi0W/ext/RYg/uJudK9v7MWXbKPHkX1eNlghYK8/BrSPOsdJmlPW'; + '1/BHR0VrMRRSNHerwMi7b0IIwEvPQYvDMd3rVIYn0eCNcPgJfXyEdYD4DXwV9QDTg2AG4mS1J0A'; b += - 'jYmDKb4A06HYacPB7TwNeWc/4wK1glCpmi49mH9KyLZAN2yuWaBS+RFzYm2ZJABJR5rwdYFYgpm'; + 'NwO4JgAuAPAdeGa7ckZVTjaR9nXpws82dkZeYUZac3SirzFHuyENs3b0aOjUwtGt6ZUdjsyw5Od'; b += - 'ukRSlCv5YoAYdIc9LeYKWlX1rne2ld6ZcuhoVkeha+6S58hYVGMR8a0pFGvJcpnd3YBUjpVGb7q'; + '3sIzLi81J33YmIJRRCffK5o0BXC7D/564V/rbs3639H99oG97+7e7OaBg5r9u5MACYFRZHZGmqc'; b += - 'pB61tyvR2S7QH0dEg0L2RquBF4V5m8wq0PidnKWeYEVYrX0xW68CXrJKPslEPakiL/kVdSSWag4'; + 'FzjV8oSyxf3hVriMdFIwsym7WunkbMQ0yRuWkFhZ5ifYqVU1Kg3cVwl/odXtnwejU1ozm2lejfO'; b += - 'O268wzGFMcGMlIEJ5q8UTHhfC3lfC3lfC3lfC/leC3tfC3tfC3tfC/teM72vmd7XTO9r5nhJ780'; + 'pWKd2kSalwTYG/CPgb9U1QZum6Ua95T+d06vhz/xWTbg+5bdpo8z+e/WxKQu33Dt8zE3DEuTrdI'; b += - '7QuBLhMCvKOs7EM9ntnuBVd6kZUlhJEDOatI5U1+j0etL+PWP4+j1jXH8+kp4faXqfX2F6rxepE'; + 'klRkjHjEeCG5b1TCws9Y/IK9cJcPT2jOCPdo48Yr9/n8eZepyZ4vOmeYSNSvUg37XjXsbkDZOJJ'; b += - 'YuPtFM3uGfyeLoQOSPoClsuWsIImwHC6iahgQeAuZmXWoBC3SRK2JnwRFHBWTBPYctZOdxkmg1c'; + 'A8aojyzyFo72eOHFUIuekaOLWd2Mk3NGTqFnlMeblptTmJFTlFqYkZujj8gohPT0jLRUrCI1B4D'; b += - 'XgRFah8HNgqC2LaRomjgJIKnh/C4Dz7qji8NVccHaP5fgh9RM0PQuxXYxaGSRJlzjb4YpYRaR67'; + 'i1OyM9Cs93MjMeushPhMF/AifeSmpBRlp/TwFBamjPEbRqDGenEJ60QBvbu7I/iMH5BYUQCYkQN'; b += - '1ZJWeVpIwitrimuIIrfX49eyM1hGLY1jXOJOxETVJzUMC90cxCwx0iAIFlkIKyvS1NED0zpSy1h'; + 'kYiyaZkcvBFXu+pYVJD0xzwp8J/qCTJSv82eAvVb85oyAvO3W8njEmL9vjq1v3eoCAchj+Hq831'; b += - 'HtoIrD9X9zU5mtYoXUpyl2oTf8BolKdI4igdrNbAiB3CNtip/ZJopZNT+KIvxzWlyeG40IvUVdr'; + '6sX5YhuyR5PeAlKtl8XaQEDl5FD03Iz4NwH6jwALwmBa1FOVk7uWN73OYX68OFNdRwVjw5jp+fk'; b += - 'aZqbEyx3wjbB4LkVrH4kgwaqSF9D/GFse49bZRwo5E19I7t1EqSElcEzfMgMcYiZ1G2AwLHUZKv'; + 'igykvBgra28juCIXgqK+wRR5g+CKfQEtS/V6oem5I3U+Im1ap+oFnvwiT06aR3IEtNHJx0bAiFe'; b += - 'F3eHWuHtVP1ZkePj93Y5calNTy426IVMCOGznd2zAsVyquQYaNd+LRgfSPmO0E6x4m8u3VkSlnD'; + '6B0goA0b2PqicUUh6bk7DQh2ezgVqTdVHeXOL8nQP69dqz4fWqE+DP+iBorRCfVDGGE837/i8wm'; b += - '40b3AO/oSoqPLxJDJRgjHCWx/2EoYlhLpao5LFhru0LZ1TT3ykyB7VWYYQ63oiEFg3wSvQIKqhI'; + '4ZedDKQs+4Qn1sBiDXVtSEDbVpUmNeh42PK7ZNvk5zo2hEIdBp6xrzQpK6w3v/Bu/ZqjDa/Ksl6'; b += - 'f8b2iSEfgBkqY1coNFBP0zXgV30qPj5zUqL7ujqq/AweArSlnnBrKtWSDX2aereUxNcqyyZkC+V'; + 'UbbXy9J2wZVl6SBcP0AeHmNfCFJBSwkaSAcGwALSSpgIUkFLCTp/7bobDFuDKmMSXZNehjwuR/+'; b += - 'dEImqKQWMMpnElDYjElTSw93oo3Jq1z6vEWkaakA0JZS9milis2Yc92Yv2xGZP5tIP6JT9gG4vm'; + 'WsOfgOdwDfLPJsaP7NVp8SKo9CRZe6nSby9PHfJz/80nTvWfNj/X/Oaau55PjPkrJN9wR3XJJ/0'; b += - 'u1m3/emk70p2fNw/uIQFx+yN3nyP/7OCYs/7Mm+4iMnezLTHAh8BTGsCWoKbGcfoaQ0j70TzWM1'; + 'B6ZeaDXgVeYqys3M8YwvH53kEQ8O2ODXiFeE15nl4AO+IqAEjr0oDxgpcafjtnoKi7MKOHYtyxn'; b += - 'FKppHdxwVDIEoQbHHKBL5WVIyj5BhoAsIaGcDOIowDnaSThRlE85iKKqvWcteyuhBOg5SFWWqcc'; + 'pT85IaDdeBtwPjG97d6x0O78ku8oDEZfXiX62/gIeUO6uPmz+vR2oGYg0CPy8VpLCeVzQC9Cc9y'; b += - 'hVQk8mRqXzcY6SL4uG7s9SENkxxGHhJx1nOSQZHQCad5JEgh6oRq9AAwSXjPYmFh5JhsMEukR9B'; + 'zNeTy0AfppZANiP9ozTmbAYnINsAYsDx0WOqaenFqZK56B+lEktJTozJPlrxUfTPcSc/VX7s0E1'; b += - 'pfIJ4/ET2exA6ZyPYDGnv8qGTXh1u1CpNCiqJATnUipVW5Qx6XfYIhX6HJHEC1bR3wKUhKNtVwc'; + 'zRg5XvepT5d9MM3Hlf3ZkIWvr4n+5YqyHCCiwOrTcseMyMjx+N/MChR01CuDNeJzAWVTCwr5M3l'; b += - 'NjiHdWZPEkJPrkILc0E6StvNR30rybgFxqVs5YKZ/vWkpO5jKm+0r+SIHPj8tbRDv86Ol7RhTf5'; + 'QpIDLHp00TeIfgg6Qd9TmPKY3V0ECepSJvOZ6P5Dc+giPfkN7HaR8qxtaY2szCguaG4VQht42Np'; b += - 'VhFkrh9jaio+VyvcqpFh8Z6Emvh3Abb2RcnknEfBUggPabaKaPPIY3u3SMYtcHiHWYbDREQuLHO'; + 'cjRBLXCwIyw+tJF3WyrMs2sUCMRR78oTwV8GMcTtULi0DvQBHMRCiknQnRKK8KrqirCPWJIRwg0'; b += - 'HsUPENRx9hD1FzU1iQjdkcQlGlhT8IHu/rVRddSri8oiJ1uBk4ziI3RnnIotPUhzBiauPxKuIY7'; + 'JsCKmmejGKU7aEatbVVKHv2GmXzn03y0oTQ6jSfCgPnJUVrJPVbR30MtLDTTaB9ZI9sDi1NavQX'; b += - 'mwAQEf16eok+Di8kSlFvblUY0qPdCGB72NvaPQHXQJrkjCB6gUTGUgY0V77+yYfEcOPC/zXeD22'; + 'i9br8zovyoi00anwP7yzTfNW9NioIiAn6oeJGrNGUDY2DIBXoPwIgJ+uAa/kcKjml//tasB/lT5'; b += - 'HH18/QVfsStSFKpbMvV0vmWq5HzFDccgVwtJIArh8IRdZEmvtger9oFMX90i32E0APoc9GPf8R0'; + 'wcxiTx0O4PBaw0A8C4foB8FLeZgEvr1Fe6AsCFvpCIBwbAG+ukS/0BwEL/UHAHWrga5ar44NwrQ'; b += - '72AZ3YMYB/VjkUJIFISyw0TF/MUg6iGmX11HFFF27xPc5+V0m2taoXlrkgEM/6OS7K3eCVr0iOZ'; + 'A4COAGAbAD4Ho14PAAOKpGfVG8PiGL+uchwdeURfrwW3NzPFwWXYvYkuIDZCKu6sQH8L6619PSb'; b += - 'tkWqRdgHls2SJRBqLmwIKt8jWy9+rz2dfZMOePEYeL1QnO3988cYGpFkmxVGMx17GKBZqFUbwgG'; + 'cNooAO3U6AoEfOACLaq5Ia/NpIfbsLHMRBGGR7AezMK0ILRwaYFu7FwvJ6XC7bgoN79uvft363P'; b += - '/RYFv2Xs+cK7p5O2jlYbukwHCUKdk+7Mn0uJvpApy/Cs9fxV40w812yM3WECXs4qNyMNPZADPvy'; + 'sJS+A1u1btOh1bAh/Xt07NXn5h7NBvYyWjdr3a79sD9pxaDQmwocv0UhmB7DSJRhAxMjNSkL8B6'; b += - 'brzltisRTfJrHBl7/VmXThN9VZ+iCnnIcGFeCuftUP1dsTp7aKZbqbdN8dmcnq7yZOpxM2EFRYZ'; + 'MOijOLw7fwfUNAd8Ff3EBMOotrVAH6jtw2MDePX3N6dl62JB+N3eEtlBTBg68c/Cw2/sPMwZTkT'; b += - '3DLD3uvJtuKWcio87Mn0+G3lVLjIs0PsczPVEbMrxqTWa2EKzVEJSt4GylW42imDztLkDBE5n5e'; + '9SdED/AcP8MvKynfgHa7p1cN9h15Pj5dIqQnvOJ4h/EI3kRWnSCOT7OB/+otWXI1HXtvpyqSwiB'; b += - '6tKGPM/vHTHmRjvxD5tHlXlzoWRc2yDALVSeXSzQK/YS0EJhuCIYBkEFivqa0n5WoT7L0GeJyyg'; + 'PROTBh5aS4WNE8tGOb1jExqxKST5G/bc9L/2zLt9ujqMk3AQqYJ+OkasJBpX9eqLtMC4b9KpsXE'; b += - 'AieueJrotGI4Y+KWhRYAhi1KpViWy6w3fQPzthG0qMGbzCGb652ViOr2dmrvTPTMiUVMa83OGfl'; + 'VJdpAhYyLRCuHwALmSbg5TXKC5kmYCHTAuHYAHhzjXwh0wQsZJqAO9TAV8i0QLhWACxkmoCFTAu'; b += - '05G36w86J+VTrWeOVk40zcnneY7PVzpn5Gle7jDPx+dqjyz8aB/NpauqnCWby6WrmqlfyZCFitW'; + 'EwwPgqBr1/dkyLaGGTEv4i2VaYmx1mSZgIdMC4f+LMu1cbHWZJmAh0wQsZJqAryjTWv1xmdbqus'; b += - 'Ba+NtNTuDinbG4gcP8MekaE2U9wyZ995TPyscqYdNHD33bz/IhaePfUejyRVsB9DxGqwp35Bh0G'; + 'm0Vv+rMu3m+L9epm2K/zfWVf5NuSbaJ+TaZRZki4rHFqSNBtPx2Toazc01/LqWX9fVYbbrn7bTi'; b += - 'QxduFlOhcJYL3UUloq9iQUpMPp14d5TgPax/vYdzxHgou5Bwm5Bppl+MgCogYEtYIsF0iSlccF4'; + 'dY1dM1eeM9w5NsS45N6AL9w1YBxTrcEAmrbrn1yhxtSR6Sle0ZeH/xGe8bB0LVt3qaa0VtYV5Pu'; b += - 'q6CkUjYMG+6gSvYF1ENT7i6QUs9YG9lgbZLt4Hqtda4OwESlitluCyLsUdxk4Wn+MdlRS0HxcrT'; + 'hnd2kxmdBMLtrufuV6G3YFhedlEB4NCBU+vIPEY3lXUZ3ewDu3tAALwf4H4B8AEO/7k4tSakpiY'; b += - 'mgtVIOfI3d3iRsnMhfg9GAUJnFALRHDHjDHE14CJAxzfKRm6c5j11UlchaVyVp16rcSA6QWY74X'; + 'w+gqRGU4CDqsBh3M4MWDvBmVvg//h3k3DP3HvZpxefe/mWoRfwxqyLhBGPSlg5af6khAQeRMXWy'; b += - 'qUO0S5RG8zjGzhArQgkIGDICD8mqBrNxzCNHAxGyws4j+ib4VtmP5G2rglXRV2BMXXXKr6tO+XX'; + 'fVXWz95xoMiutvpiAjvgbuf/1lCiIAuhn0xVj46wt/9dyadA6u78HfaLdG/dokgK6aoq4Ff83/B'; b += - 'VKb+uOpGq9DVLfUr/IFE6Eu8fb5XsCpAbAd1u2DmPobUdDr9YB/gETmeY71BcefnwiZNvZ43y8u'; + '3TV4k+kq93u6nQlCACXyzvqAZSBbamnUZmO9Rgt9M7tl5rXlyjldr50OZDv8VVP5Qua3YC38tvB'; b += - 'ETJ19RufmKZL4aTCbMREAUVAPSOjmCXZIeXSg2hZkJbPk5CktNFQKHV+yGXWpFzlVc4RZB0IHQU'; + 'hSM7GDnjB+cUFOXl5QLrTx/sa3H33JFsjVmsnaN+wLdpq6W3/itto8vuaqeTcldVj8mKzgqTDQL'; b += - 'Mw2MeY1ELRhpPit6+QsxSnVJrmZvfsLMYcr+xDxapTHOzmvfTZtu1gHvteqK37EWqqrOq9l/31u'; + 'uojCdvU0APbTltsj/hB7a/4n0cDixOj3Y7QMLU9OyOtrh31+9J9mr/l9vr+2sX90+C4TrB8DCPh'; b += - 'GlhKoDkFGUvgUMDtUuuzhnd9kswYahYlmQrxjFMgDrw6ckykksvgzlC5IofAsAVG5GzOlOVpE93'; + 'Pw8hrlhX0mYGGfBcKxAbCwxwQs7DEBC3tsIO5G6GP41gKqtAWpYzyCX6cyLZd2369Pb43y5Hi8G'; b += - 'jGHUqnWOqIbko5t/utUA6gQvbO5vNlnjLnmrhj8glDtSlc7XhxjTQwmx0wnOaK+4wstQAoRdT2F'; + 'WnNqErsrrZ80LgycraBJoF5JQ1VGL38gfmIX3T46LfDdRvX0VnpIxHB1tW0pSUNNWkovONXrt8O'; b += - 'VaY9YkzTlqIJWqgmNckIgHy5F5+GqKQhgsm1ZxFCQ5ULw8YbArO2dlRPGoTDBuMmlKwyINjchTY'; + 'uL2PXpBxHxkEQHdemFOSKINj2ugv0rtbJl273s2LSXTMEJiFNzdvvK+bIX031Hn97IbL2SqsTyu'; b += - '9+Pc2+o0oneGVTvF+V7qvfeOYqHk4ohwU4AK+euU6ZnXVSTggv/PKCbGlq8RyooLEaWV8uC1GTv'; + 'TGH97UmY0fy26SMeAsb9RMrbtqZAcZxwt/yRTdbQnOw/qxS7f3oh1eCRX9FD1Z8y1o45MtG1jdn'; b += - 'PKzsFTtlRbxiqix8SB3MMt8MyCSNx3BvMi42GTZrxD6t4XbDCehYGSif6gCVGiCxkn1AbgI+bVX'; + 'ila2NmaPhYb25aWhHQSbqeXoRMEgg5DfgzbcMBKA2C8g0DNgLR5NTJLMZJQOaENBXKxNUow7cjy'; b += - 'i5DwNNpFYeG64TdYLvB0wRApfL/a/bmk8p+SE8iv7nUEx1wDKOAWSNmxtjKAtUIK31eP5sTjmjr'; + 'dhZ1ZgdqhHCNw8PIOHkh/TggHTfc5B2uDE7dCPyMnLyigoLOurnIV2r8QyinQsdQdIFSCWyCcPn'; b += - 'GNcU7KGmMHxjlrkb5InPMtzXbexHk0hWnvxg27Cq0I2MMx7VnTv6ve1B+qW1BYsFNxHl6L80lWy'; + 'r2boHZr89Qx9U5PqDDoQ1gNgwZAFLBiygAVDFvD1PTQyekxqGmNerQJwn9CUMaYCrrgLGPuv3l/'; b += - 'vTOTnO9/8ZBVdaKMxUKi82w2f/G5/IGz21zlixC5sj1pSe5aZzLE9wSMb3caQNOkzinDXw2iemG'; + 'EqM41vXZGJQ6UsdWWkRkgQTg1sh11riReH/SLMnIKm92XMeq+1FHQiuodCLi+3IwZfa9yZiXgrT'; b += - 'vFHV8wZGCo1URBe6Ajuch0PgatrjXDlPTTk6pPzggROPHgx3lgkLE1zEVA3fqkhUxlLGRCI8L/Q'; + 'ITyAL+lMOdAxTMLsgPAmCD90O3wLlMqhMXwGiMN2dMuH96up5TNGaEx4t78DBHMgoL5kBeZMCza'; b += - 'xzht4hncmIUyQLM9suh9mEydr6h0E60jJizWpD3K+n7kr6JmHIj1fxWQD3claUWYdGAmBREbwV3'; + 'cAdUkGp8+p6aqGel1uQQUxDWg/lcNFse3M2/6/zaVnpcHN2LDTNyg69XPlA6PV98V0tAt9rVBzC'; b += - 'FOVe9rRM823SNGpRqsLffZWt2TeC0sEva7N22HYRHsfkUWzk3J4go2mLt0Kmv2/aKsUGxZs0NuO'; + '46j2K77d0L25RSSEioCYRnk9qdhVhaOBNffp3q2b0WdYDzDKBt9687Bu8DsIRXpOLnBmYVK4rg+'; b += - '/7pXnZzLy/EdhM7qpofqThsZFysurkucC+T3cvW7mV9KobWiDnXU8xcTzEp7u1Fntuj8bZtIQdM'; + 'BZXnS0lKzcIZUYyxSbEt29OB7rtqJQ8iTS9j1EXYtof/g+miJT/TR3YM8PYiXe4Q/X8avQSwfVX'; b += - 'nVn48jZQA8V05i2Vu2/YE8Y4l6q8jIu5HCdZwRWkhhLbz1viRq2qiqJ4yvxY9SQe1zyJLZrb2Od'; + 'y6PsrhR1l2STl/TuVXhV/5a0rs/IY/XyLexwuUCDxsPF20p5Ifb7k1t7C3sEt8NtxAFGjdcnOKo'; b += - '19/oBz/3Fnn7uD0hCPl2NhOmqprw11bk1CmaDat4XoL8rnbdedK72OJmHyou+8tlKZ7soUuXVAi'; + 'WOBVkUqyUQO9ESVMbUw1xv4yEAmLvuljkOjEOQFT7i5KC+bDvT29vEKnsOf9qeL6kB7q15H34wx'; b += - 'e/LS8ayGeznWfXyVsLnVtN5UV3eVFJZrrZKf1X6iOt5xyZ8TL5eJrToG9oKImUfE+3U5CB4Heul'; + 'GYV9wUAcBKQxaLTXUzA6NztdvDHDn8Q4WB2+JB3DOX4YN880LiFq8WOo0a016bdWmnQM/nbD30v'; b += - 'jlv1HBJCLaI/47Ev4JnoL8TYHLLuDe0eu5V6W8RvWpu5fSN/Pd5vn8H/12rRYLwdzAl7wlGAiDF'; + 'wtwL+5sNfOfxNgL+R8DcE/v7M5a0C0K9S2cSVprZm6naGwtoi4EyFaTYCzlLY0qCAs5XruaT8r/'; b += - 'Fb/mXqDQHphe0WoXlhcevf5A0Y4l0x/+uXAKpOb+9O1779z8/I4HpoiicJ3AX5jo8HeTGBUouiQ'; + 'Fs2qY6ngIWeApY4CngvwLPosKMbMRybxu2XWjmGmEg3DZAg8Izaii3hrRlmpUoV4vTTvcACdHjG'; b += - 'eijk094/D+/c/tq8SJO564Y5dP27+cntSRFdU/Bf59me1sRhJwapFNl/QNG9sfkF60/SL01s2S0'; + 'tXhntWW5ozK48AR51n+7FNTP7b9Mw4b/2uqGN6OjfI/uS4h4A0yO2QSCLcJgDfWyEe4bQD8Yo38'; b += - '5Ly0hOS27WPO2S5s1bR9OHtr4oPb3ZJdFWrZo1a5Z2cfNmLZKbZmcOzUvLm9g0LTs7N71pfp54N'; + 'F/lCuIBfqpH/Uo38DN4PgXAgfpk18gUVCzirRr6gagFn18jPrpGvqJJ0Qw24VwCs1shHuGcAbKq'; b += - 'Tc7O5pekJmbk990aEFeNNo0J21c5vC0gmiTvHwxz01lsPg9pipKU0Vx0u01RblS/P1L6s/NgLrT'; + 'Rj3CPANheI99eo35HjXxHjXxnjXwnzx+z8KfTM47Pf6fe0FkP//NkdpPpNwzy/j1yjzms6q4nP/'; b += - '8vOjeXDfGpaWmR3NaGNFM4ZHm4yIZg4fUWBddpmVH80eJpONrWbKVNG2a0Sbpoi2VRB/SxeQmTH'; + 'usl3X67RuNzTk977p92/luLziXvendsqvrDd+0bVKWl/hu/RnRdS9U4cc6QcWK5NzhkM58/+qQt'; b += - 'Bamt1tPvaHbv3HyTzTy83f1kVYus8tSpOvct1KkemexmKcq4nfTOnS9cjxqFJdjQnqQHUkpFfQA'; + 'wfeOa/XsO533p43cMj7Y8ecuGPpE7HWobOPlPz2xr1noyRj3hmYIPvMfybBjmKfukkxHZniO1/s'; b += - 'n53ktBRQmIv+li0KIZ1pA+o+HlNm3G5ozPSxud1GCIJYpKs4b0zs2JDrHGpWWPjcLAiqGmL1hdM'; + 'dHN4gdgp5/A/ZCYuBbxQ5jvvHF5UA15cA36yBrykBvxUDXhpDXhZDXi5zHakroUN9fpTdsOvvoO'; b += - '5WK4u/PGn1Dmf7Fl75cofbLdF9feoD4V9mTvtr3fLDveYbveabveY7veb7v+QTf8xt8z2f6nt/i'; + 'E/3pEt41vm3DozI+mD4Oe/qbY/vFLc/tm9zz6WMWURbOfKft+VLO5tV8s7Tx+weqv3511dPq8sM'; b += - 'ez7P93yx7/lS3/Plvucrfc/X+p4/4Hv+iO/5477nT/ue7/A9f8WX3uNL7/elP/KlD/nS3/rSP/n'; + 'NP9f0sa02vk+fWrlTrThnW6mCje1Mbtxu4IDW67qx7b61om9TT62m3N7x+v78VzRze9mn7uBtZn'; b += - 'Sv/vShhqbruhLV1Fj23+O73ltX/oCX7qBCkE83XQjkY73pLv58vfw5R8g0jU86SEi3cSTHibSyZ'; + '2xXmOIu4DdqwDtqwG/WgN+qAb9dA96pMONAwO8ozHC4dgIvuQgEXmK5lsHr/ZcOHttq69SFWU2y'; b += - '70LN/z20S6uSe9wFf/Ml/9y331rxLpDp70OpGu60mv97Vvs0i39M4Hka7pST/rK+81kU7xpN/xP'; + 'zDiBgBUOd8elE66wDfBmse0ADjPg+poWX3VhloVq+xcWDcpt58ALMx7eMPTnquL5o85Hj9v21I2'; b += - 'f/A9/wjX31f+tLf+PKX+Pr7m698oPGXe9KaoA91POkKvnRTke7iSTfXYvt7qUhX8qQvE+m2nnQH'; + 'Rb8/tH9Xz292n38tcV9n1zH7Xrpz3Txb97lhsjJXD893fOj+evebVxy/EjI9Nc097v771zohhdx'; b += - 'kb7Uk+6sxdbfTYttbx8ttn9XiHQL7/zQYsd3kC99jUh38qSv89G/dF96rEhf4klP8bVvlq/+W3z'; + '2cc1vXAY2GrLmt4i5pbZdp8SGZS20Dznfe7LjmQedjh19OX7znYpWyfMtA876ngmz7bmjT64FFj'; b += - 't+7cWO5+W+MZrhRY7/vdosfNzpS//Gl99z4l0qie9y9e+d33lfyTSjTzpT7m98J8K31/898c1fx'; + 'QauPFmg2ecoS6f/9HPs3zc+3OD3nzeUHG3c+cXZq546vq5T7KL5c+ZltU+LSXt5VO6nmwd0mzXz'; b += - 'zTVj6dGth3d4Xwvksu6nbDnQ1SV3+Tr3K+MP89hb1IZr0imj82u8CfNcca0jkvj7NSOwz+J5qn6'; + 'QbPlbL3FRRXPrHhj+HubF725ZLVl3ENfxUx8/sZRG4zSXS/FxvUsjfop5ORL20+fHF4Q1HhW2C1'; b += - 'J72wb0AX8O/IOylVsHY0dlRK3eYlZ/5r6ilVDDFrqlg/+L4nQhfV8L8nTLzR2enTbQyR4n3RkVz'; + '9ew8/Zy/oe/fC9vcm/DbhrrvT7KuzS7/5dljv4JzjL556bWn9U5VFz+yxHv28ZOLjF6ZIf1uffm'; b += - 'CtJwK86LFozNyxHtFC2K5uXl5lljc6ITRgvOJJqRPfHPszn5BXmZOcNxQx4u2tgD9ssKRE/l2Gb'; + 'jW+Yq1B1Ijm9gbro5Z8v2RGzPXrH2o47Kb3rl1aO/xJ9/ttHzAkOhvf4r7Iu2p7U2uvU/Ipb1j+'; b += - 'miEHIzKChaGM1smT9ltgbxDtV4JuKvxFPXsEoDC8YYSlHfM8re8atyl/Fp3n4xKSKxBcuEv/qiX'; + 'LOrqVdeqaoa+PzFqmfrJp5df3bJRy1HbQ0vPT21z9j0T9f06fbSyrg+C76ZdMN3YXLstb9nSTm8'; b += - '8yDXtg/VObL6Nzsyfm5I7KTMu2MqLDRUVWQW6uNUIwXE1H5I6KNk0fkZcpmpCdX1BALYMXoA3fi'; + 'pzL6WjnRvxJ9p6vQpGi42i61Pd9a2jVwUok9677j03t+mvjqN69P3PN8i2fHbb2x4J3HJ34x5ab'; b += - 'DrPg31ATBzgy2R6uEZtkOlXfc9f4+cnsw7k/Dc98xROg2eJf2djP0enpWcWTLRyx0XzhmXnjgc+'; + 'bun8SlF+Z/9CRd9T3PlrxXkIP97N/mxtXuue5lLwhi//5qvx6yEuPfzRg95ScB35VjYfTBnn0yp'; b += - 'JGJinj//DcZFxV8xJwYPy8sdNTizIJo3OCeaL2YIzqv1op7rFKKpZ53Z+qITCqI5UEvtOFPpL8p'; + 'jbVv+8IGS1p8UbtabWbda3x0Nftdry8syjQzdNuPWnF2fGf9mwXcz5rM9zkpNK61iPvjF4UNTdk'; b += - 'uxetJjkfvsaOGRvOs3LEF+ZkZuBxH52WOilrDMqPZGU2uxLnquWNFae01WSXKAxpdjcuC8TwH2l'; + 't3z4+D5j3Q6/sGsDzd45hk7TncOPblnXcqOWTedbv73Tkvn9P90f4cj7qh3xg1qsHmN6UAVLjBl'; b += - '72p3Z42n3iPdiLpoh/HT3pqZxO6Zk6OLV718Hib7PmF7Vu1rX54IG9OrVJ7WY3bn5xy8GpqVcNG'; + 'l9WRZrR8TMoLfSNpyMnoxFFju0Yf6Ha83ppFrqiIhXFdBg849pL99Rb506wJw1x73s1/sdv2Znn'; b += - 'HxFn8G9B/Qc7Lx7p0L7m0xXVmPTi9XYum5XiR7LdEPm/+G/PyBsBtCwbrry62OFA3/ss+Xrb/vM'; + 'xp4Zv3OXQnujfv6xZYZMOyzq07tx0f9n097s81SX0SNXSWfOeW1ogHX7KfTE/Y/7vuc0K79nQ+Z'; b += - 'WZIbeG79oIfqxZ9onnWKpudNxLWSOiIt79Ro6Lk+mlndM1dhP+2Cpw6xqqz0vKhYv1ZeWk5G7ih'; + 'kFO96c/0XE8J7T8o+6lr7RsPPDZftuv/vIi953szo8YqR2nWyJj5CeO/1STL9pX12c/YTrt9rra'; b += - 'rSF+xkIa0sVpUBvlbud9ALjfl2sq0fs4TFSUcr9yUzHFpeVg4TAxe1G2sOeJ94M+eFH+B1svyWj'; + 'k/q8WNpUhfThqqf2n53oN4gqaLqoyH3fHjmdd2uvx4R9OiW/UM7lJaXrx752dudjozv1LHee2dm'; b += - 'DfcCbGsaZnLGoBj+pJwzfLiIqzmCA1Yu/IsIZOLIjmWxm5OfULrGhOujjoCdI0PC937Gg5X71D0'; + 'f/lE1Np6I/vVPZX80P2Tgz/6odkLYWunPjz/zfuDrH1GOnp1HJKy4q3RRxtUZOSff/rFfbe2OrX'; b += - 'iQ9LW94btO86PBMQdwn4tgMzywYMXZok/TcUY2bRdPTWza/5JKMoZdE01s3v6jp0EwssnGzJhc1'; + '0nm8rldsqZg66Z7zU+IG8+TmHEgcP/7Ru1FSr0fCXvCTXrb1dLZdvaXH0H8/e1PfrOePv/LnB8C'; b += - 'uQhzZ0TF22m4eHOrmMpAWEe8rkSJY9MLLBg0a7wo1GommyDmWxVaM+f51gy/0zF31KjMAsjqezP'; + '2nGh+7uMhUfvuApHEHP/d8Hyt/12rv7JDu/VZ+0mfsDzNKn99qPBL/+X3pZ+pvGFgeGzq05EicK'; b += - 'OpO9KO6bMnTl6hDiNigVOuS+SufOVFiJ/fU9bxg7NzkzvEZ2YGi0o1aYMkTdRIX5Yjq/l2adiVr'; + '7GvNv2+72rvuWFmrbNNBj6+NuSnoJcbtD/z1eyDY7Z8uuupBU17rdhyZkpMWvfWkfsrJv6ya469'; b += - '3YbEfniYHnvfev2JtGpY1uKsrPg5m6Q7RtCMxPPg+I9ZKWlydYADEZef9scQr7U3fuEvIbbfBPv'; + '+ZO97gjp1SxpfaPy9hv/ufVMzIVmXQe+U/lmveP93x+SUdXtvrRDK5rdFHxD09BPf/1y3tBDu59'; b += - 'jVKdEF0ssDKhOxj8VlSMqyFBkp+VRO/6dSqNEb3iL9y3nYU7+WOUvC+XKPni3+p0TFjxRSM9hLP'; + '4wbsiY96+qovH6rd4u2ps+NOrLKG9K8+Mf/BCy5JVc86VaumPPj+o5efhnuAys2fSiq9+lI4M/6'; b += - 'u6WNi/bEdqaKYntmiq/byZ22ds7E3rkFqWNHj84VnzGDW9c/bXhnmG6C58D9WJb9D/GPs3QUhEX'; + 'lwyWtJu11nx4942eZY//G4V7t7vylKj0lY8OodUzfeuOGbs1vLxv3zodBlr5RGffXDxcGnDix82'; b += - 'm4VspubnZzmvKBZ736rvvDSgY1trJlOTJ0wDy5Ao66Ll34RnZh/LSxg8We5H4lv3zMonE5Is1mD'; + 'rxmxaEFB+d/E2TN/3nrnW8cDX5Bi81atzHY/th7GzaMeu2Or/q/sOjWO+/Y+8h448KAYTO7mYrS'; b += - 'MSrtKsbLEQxeYj996Ss0zs80rxt6f4ez+f6wyHh7V3rCpWIvOanmiX6XQ2UfZVzEXJdHU1Np2n0'; + 'Hv3ilz7Tgt5u9NkDE1PXf1NUMDBlb3LOxcW97ov4/Ivn6nw/objL2g9PHfngy9BJI/fddkv85Dp'; b += - 'e4vObk/QyZGp2UCp9g4uUmzlk2SY9uzTNQHUpg05nBPYdaOys0Ymz0238rMFxQNqHOeVTBCrISx'; + 'b+xzqb76/+DHPgMb7vR9vuHPpbzO3PtLz2fTkKZ9kHP8+SGscmWf0aPF6y/2r5f7P/y2/a25p5r'; b += - 'LVu0adPLHljOUGTmFOQKbkNU36eaiVT+LObwTkR5G3k48MaesemE5L9/bm43wdF1EqQoM120pjO'; + 'qY7r+uvzB2yYhXlkR8fiq08Jmnb37zk87T7ui3rXPEozPuf6PLxloz7mr0TkfHwmFha2dnr/bIn'; b += - 'sVTGPO+fkjh0+Ave8/P4jonKzEK2WTKA1LBeaHrXSc6PDhmWmZwKtgnkwVGTLyYhOQEJOSxBW+8'; + '22zrLhxQcN6mdGeOfZ3P5hVVTk4+flbGt04e13egPjPx4R110/0ndWy+8n3f3zw5CdT2tjOn3jy'; b += - 'ei3bBrp2YOz0kTPL6gfFi6eF/QH1yuGbIVGVSCknyOiTNXNEhsBNAiscxjX1cyRJ5a7qooQ9gIR'; + '5qe3l86rbDN2z65BTW5J2dbh4QtPfh594bcNrRuu/H1J+Og+R9v3b1/1VT3zyE7bGoUaleMmh+3'; b += - 'VltSWqYhxt3fpO0/MF50WFJDUjC92fmCWyug9Nz86JiplzcpBnmHyoWzEigeOfQbrKKJTwyvZcp'; + 'q/fXvptYtprsf3jvgti8WTK2/551D26MWftLkmW5H7jc23zyuabzzZuuZqbcp4feb/5m5zjNpSI'; b += - 'tEy/5UsX80r/8+0akSb+L1rWvElzekMwhjSHrz3XVAaJv/O5rvvX4Sx64tix1If+OHb/efV+2vj'; + 'Le9bbWp26O7P15Xvi3c3/9PSWzm3e45fNdL2TFhPafYSuMqjh7Mq3TKxF67cj33A/N/H3jwXc7p'; b += - 'TijeSh289a8YPhT3GZ7y9vkfHR1fX6rH0symXfFlVrXkKc/5/6psMrB77TWR6cxkc75ke893VY8'; + '6T3vaXB7780bFTve8f2mzqeO9vv15Zlp0s+Tdx7ct33r835uFnXXZbpXV64Law4Ye+G2nd28yQ+'; b += - 'f8/+sYLouPHUOZ/jvGsFqN0x7DP8U1Clos2nNRk1aerWD8iDTxX3vlftGmfjAWKnGNMt1bxYinT'; + '0/qVpm+VHWt/Jv3IW3f+8tQzeYce7HvXPY8ta5NhGbkx2Tsp1/nLzuJxhbZOGZUlH/zqKH3Hnbh'; b += - 'nqALz2I84vTUf/BKXanwakd7Z72FZjs22Nw99TB3Xt36d67e/9BeOvKzld07zJocBe7e09M2127'; + 'twCuf5894vN5z98d/MmJzeb0JH3++76usze6nIlc/nDEz+kKtiIXdqr6OW3kov6hjomf+g+/9PK'; b += - 'XjG4/6C+nQf36p7ay+7fsRu92ad77/6De/fpL94e3PWKPgP6+m736T2444ArruzsVNu5d8c+nbr'; + 'LR2V/ejm8/5/SC1W+1PtNw+5cxP2x/re1rrd58tanmtG5dc/87kcXzK2bNfMWbdi71jS7tIs/Pn'; b += - '37oo3Ugd07Ng5NfUUxtXZ0Zt4OGGQ4IEUuJnnXnMSWeXk5ALvmT42Lz9zXFRw1mnpY8ZmCpI+aq'; + 'XZPi94PN862NHk37OGMrfdMj6517PCZyk8PPB0+yjvlq9OT7mgyauWQV+5c3K9OQcEW03fTlfcP'; b += - 'xggOGdWnzyOU2OJb8gg4Q9E/Objk/LH9W0SZOmY3PyJW/WFOsR3+/aWsSRVlfK0zzlWO0us5L/f'; + '7cl22Je12jW7Qcbkp2Puf0BTG++92doyuEvvlBXDBm+fP+5cYS/gzhcfGf7E9EeHV/5tZ+8m5tY'; b += - 'Dty0puOGp2P4qdo2iiYyQdF3SA1vJUlF2Voo6Jia8xokpk/OEeMdZJg6+Q708p9Z3RBnpUgWuzm'; + 'dDkcu//iBuU83SMsb3N3Y/tnax+wdzw5tPCvls4gH6jbI+brNxHaP2e6YOmGp+YPKAa9+W2eLJH'; b += - 'vV1xT8Py3nK+J9Pryy2vIVIXwQOPjYp1IYZwVDRvcFpGRibkEmQmvyCalp3fZHi0IKkBDpVT5o9'; + '2RMK3FwLd3TzE32vroaccvEa9teW7r3At3DrVGD7r36buWJY1xtD+78f0pNwwcM/HXs09++dwvT'; b += - 'MC2TaUqkOmf4Xz32Zvt6Xns3p0m0S84aqcvLO8b27kusSXFM0LyctmySJbQQPIdJiUo/NEV9BEJ'; + 'WoP6D69B1Dvo4uOvPeSo8ttj1S9PcJx14X33/V+3bdPK2nVpjnvtz6VNeym/LlLph4aM9M1b33f'; b += - 'ih2cC+ZETle5tZMwCHBHnvOTV2rJ7n9BknJqLMI3WILvwWIAnrRaBd4fUDEo6LPRw9SPgzMvPTx'; + '979Lf6wsztPJ9ZB6cHNcWCt7qxWTyyM//7nilqeOf1Rv0DsL1/668kjnpLkVOautM+ObKwn3fDA'; b += - 'BcQZ/rM/NycztBJlAjJPK0VkpzLdBuWSsk0aAEu86zPdmWOd1JDwZ9lN2iCa92djmduUcDPYJpj'; + '7uuzk3YcuyAM+W/npeu8KT+2OPac82GzoV1seePif335/fvv68gXF2XteMP++OOdY3N/DX0344t'; b += - 'efm/nGcqV4FWoNw5mdQwRxyTPe3JF18Cloci3x3M7/4V32hZ3dhv1J75NRjDDp796GRERLbnlJ5'; + 'C2RnHfWxPf2/GLd+7h2TMHjC+eMevW9i/e9tzoiT0ySkPb/nzDnFUPLE/vd2Ryyczfzoy/O+ObZ'; b += - 'yRuidQ2eAOUaJRk+L5i2cVxK4PnlvMEs5ZHoIp/uPyMQTSpo1Mid3fI41dOxwOFADt38FHLDzC8'; + 'U0+tg8aFnzr1EaRM9u8kHXbstu67B6ZM7DrHROH3DS57cpnln300G/Jg0/+uPbjkGdmF9yb2Xrh'; b += - 'QmnZaXYXEDmlip4nAwoqBgdH6bpp5Rxf40zk7LGY5XTTPz88dG85tedMlFLVvsFXVmeOr+TSlvv'; + 'wsjYWeGd1r/epEf0LQ3tv/284MDJ79sf2/L44AU91vWP/fHc4vQRBzo18XwpPfjPz2duH7FlREy'; b += - 'RMNlvniVKIrIMXJyRffEgQZl7WzoqNGF0wEbXWCic9l/hYif9JxaFtpCua+e7lT18nREfne1Sqt'; + 'Dpj+Wv7vpHXP/Na88E1prjtz0t/Gj774pPXPRlz3KDt4zMnLr2S7PDQyu89rREeUvvPHl2+HRnR'; b += - '3aFpGVYOS2SHWSJjTk40O9/Kjg4rsGonmigFk+8UqHSmk+kb1BPTeJn3XqZJMr2dNawy/fpJ0FK'; + '9xzNh674s75FmxJ8YeuHimX+x32n5rQr+7Ynf87cPfg2cOvKXNTz3ndlieP6TWvCcNRT/f3So9V'; b += - 'Z981y8zbMzc4Aw4hka9IkJ9G4maeej7nNQD/lvRJf277zpb/n9Kmsm44emtXpvyDZ2H0+STYKz4'; + '2vjz7ufrruo8x2P327pWBzduXjCqdcWR1U+3l2OeO3vCSkXe0z5KPHrhZPvbxYc1eOTDi9mBc3u'; b += - '+VbJzsPDmDpDMXFnmLeiZaibTXaY3LdEudNI0yPcb3fLovXWSQpEimF/rStxpUXmo0JwN3m1NgE'; + 'OLnO3NoNGucu73/bXd9tGDm9RdAvpuRv0n7+7bOf+mZH9PH23rr7gw/uyjD1GNg1p89jhd9N/1h'; b += - 'v/+sYErotl9/0E0ewxr5GR6LO8TMj3N93wmS+pkGjQRDctcG8PHCnLYZOhYQU8y/xUFSkLLJCkj'; + 'putB6fOZd/xgzx9PbYvzw5Wsf/dhq1JK4LstGffXEOeuwEFftoEbR2hMD5j2w7enGDze+Iz281s'; b += - 'mpaRnZnj2aesCy6wEsbnjowOHjt6cNowUB6NTxP8VM7wBrKeejyfZLo30zCnndwOmS5SSRYk04s'; + 'BdPygDfq667+vnrB1Gv3503IyiQat2PbI/qtkrO16JqPPihw+P0eKbHO25qF3298P7pWmPDDsVM'; b += - '5v+K5t9pX5poT9IX244wo/hWcnocNdcpYq5bHN1MZgtVPj4q092X57jpfe55W2SqroABIOaov0r'; + '/GeRWVL8n87WC/i/JsH8jt7M4YGvyzdeeb2H2cWH6k771H776+0G9y/U2Zq2Gf75xaow3I/9wz9'; b += - 'LTx2aDBgN2nrzoqDQ48+aR0DvNysgcJ9geJK3/iublesp6RiUtg0xvVV3ty1+pNe/soUtgMZAv1'; + '+s2+w34a0uCtZRcPDehcbL2j3ooDbTI7X8y6/5dTa0MXmvPOjHnpeJOUUXuW3bVtaWJyY+eH973'; b += - 'on4rlSqKDN/hDj4FIxIK6gv9tZs0DlMtED8DhlqJ5m4ts7c/OcKxRLom0TaQuCNzi2Hp8LNMCOt'; + '+t7B+ZUebe25Je+lM7L5NLzx60WQsvHjH0pXb5YeWFd146tz9P3WxvlNc2P7R8mG3tpiW1bxXos'; b += - 'II22wpgPLt8fxHv0ya5l+V6WQhYOMj2MeVOZfobbJdPrmVcZO3p4XhqOYNpw8e2VaxuQdl3me9n'; + 'UWdvGT1w7vfOTmVsWTtq2/a8vWmx79eIIa9tYPo5Y2n/l2K+nl94bF526t8/yFh179un/wnuVLj'; b += - '33lGWi8r0ET6DynQNnmOa594lvv3ntGQxgiX9C/njfC9/XKMh8bjTyuWXyueP5bv3K65mT5z5G6'; + '78+/fZ1nRasfSbzH9/sev73Oc3SXpvdzXTs7Rd/OHU2563Br3kPlm9PnFdnXu0fP1r+fP6u2kG/'; b += - 'd279q4R+dBXTv3bpxq9+zfmOx+I7uNEwmXRy37/od5Xyx58fxrF8x6+ZvsC2+7pH/ev6vtCVQ9N'; + 'r97WX0t6OuUz+VDvkL3e1mODOmYHnTm1dtj3YZsXVCbdWWZfcaB134KMKO+yhN83WDzf5Y94ecf'; b += - 'mj5O+90C50bl/r7vFmPXPvjsXFLhh+tPmHb3ZdWe2Fxn3O6fr77h1ezHijpcPjdhFdyXvtm7G+R'; + 'j3vfnD145cu/Jl/oOS9/7oPOeI4/eE/LjfKPl+GPPzz2S/nnVkTb/uNi53T/fSkxfnfj74sWewn'; b += - 'u+zx6lljEj+Pe3Ph+ifn/h4/sWZ64pzX/hG66uzBg95f1K9D3wYD1/crHqRsaD+nduWse8J9j7b'; + 'r20W0eq7QU9u2sjGsTvGJP4YlZ6zZOfKLtmidXbzTeeLh4xuJy9Zt7vt8ydOWuz7aqs3/LeqZdo'; b += - 'bEvn9GHzKCuM0JW5HRDn81ZMDX0i9qqjb4M5XXTE6deBr40d9feU9t9cMXbvw4NRfn73up3NOtT'; + '753vHjhq/w2b5wOab7mbO+9Cccntryv3StDt3x8tCQiq/aKaR3H1tt9a7T3qQu7164rXhl67yvZ'; b += - '1tZsf/0DD7imOjtUtbH1x204IBu9cuvzX/7Zsabut07zU/vHRW9dQe/x5X61jb5E7jv/jmjU6VT'; + 'VRNOOJd/7A6uXXqhdNbhhr/cXx7dctXgRQfWzRln3rKvd9G5fTNuSq09NdreG1517/Hzi3d0+Wl'; b += - '7U9ZsVF2j23ff9jzX9vmnXBbz8+MvXThu02L1xz9xcPtK1555JFRSNbpsenPzY89+0tfTsumH9j'; + 'd1ShT3LAOEzIXF29T4yu+C569efyLX5+sd/fbqYO6O+sNXTxZz3lvYOOxdUMfn1x1f3jvlacyw+'; b += - 'IPjT+XeNLV5737NDXt1y53Mr1gUnzPw4fvJDlw5/xJ7xyqM1a3Wdcc73lb95dPsP3wzJr9BwQdX'; + 'zbbm64VYvXBrXK7Gh+7MfXlLMNKhefPrFk4G0H/t57kXR+j23Lx0GK9EqnT509jwxbHPPRvXc+l'; b += - 'Le3YfcqRifs+rl7W8ru6vkwZdnV5xXfaMzz4f3L1Szhebv33qnn98WzJ27Z7Qp/unTp77+3Tlnx'; + 'T1oy8TBcbY68+5+4Ijr3b0v1X/phTt36aVu06tPrT89Sds+pbxg3icPLhq/Y//BiHa9p9zQ/MlW'; b += - 'szPlxwtHjDe2nVLqxYf138iq8OXpq1fsPMNvde9mLva7tP/Oaltiv7Dqz++fe1Pki/e/uFpzz+Y'; + 'Qa6h67c0nbtYnZ3+y9Jnxr46eFS67a1DX5suNC8c90DzKXN/D7n3uV23bv815Fr152stLxkVT4H'; b += - 'mLtFxOrRP2rO5523aPLQz/eMuq+9DqpHwaaPvfiglU9W/S6fMrgF8fPuGPxrDUtZl17RYc/unbc'; + 'i3/KN7kWgdweXf7yitPVA9+nGTSf+o+VIW9mARK1s4rS44KWjZ+z/qn/lkciOpelRXcYcjQSDYS'; b += - 'HDn25DXVbqjR+9el1ii9Xdz5d7WfeXifGiys+MqTLS+YfqAwt2vDlt82/uqLjyovj/YxMla/dPe'; + 'k+l3J7hCpJHY+WKue+CHXa5C1nu369f3HZt7KlVYPbkm9zPHvz29F3zvtEGTXou/HHN+rhYNkvg'; b += - 'b3fq8WfnUOw4m95GMU5Wy/37s6LHTqOtjUdc2rUv1FrVb1P3w8HfG6xVWfTau4puPLu6Z3fXTW4'; + '+dmmDKGnDhfVbVj7/gL93z0w+lldUZV5Ua82WbVpC3OQe+1iWxwV9PRU5sMC+3eq82suVulvx22'; b += - 'un37lw7eyvhjdeXGPzjHYTl6775KUFn95WVLWo6c0p8zu1GrPrt+LN9727+Ytrtl95yXdVvxu0c'; + 'Dh38K1hA3z/8W9X0z49W5Xo+6rin++zC3aFnij2WtG9u+2xPyXHjpthGXwSbLj7Qd2SUbd1qqL7'; b += - 'lr7BW9eV/v+onWhfeo10896Zkazes/eEDeg4J/P5P3x0AdTVwffu6Pguzu2bcu84+DMrs98+/yd'; + 'q524Xqnqe/Knq5dYZi44v7d3xmPW+11pPaXV61YmMijNL6j4WecqiVHVusMFu+n7ez0lDp8ueWp'; b += - '26q8cndcvdxGXzReV1hw+XtrN167f/Yv467o165o1PPN1uysr298YcqgrT9EDjzfdf7qN/ulvxQ'; + '+5K6NNyjdvZ0xJiiho/UluVM+Nj59sNiJhyXbvD40bHz1S9eDU38Pn2Z5M3VS39PvC+qY7ZoWPP'; b += - 'c3qBBtRkVH6vfOqFWk6OjGvU6u1Lr1P75FaNPVcwa1+TF7TfOaJS34O5DW+/pMazmmtG39Nh+b7'; + '750/+NPfRv0zNwjo37Z1P3BG5c2OzRma0irpOS/fVBr25n2I25+PeywrfT72zZNXF04e97w0xcG'; b += - '/sF2ocWvB6veCSt2ZcXPnw6BVZ5rnbVtYIZ7c6r+f4bvU3b9nY4pG42pdcvm5f7z4vLbvmh9wmI'; + 'xTd/q9a3b7WYtHPlxcUJv69LlIc+dPOxtNfPvXD36Yl3j5200Wb/ZdqULU0ijtRuOnbKmoxP5e7'; b += - '/4z7baC3PT7JlSbsLMwrL0w59djz8z7Krvvyp/v/eWZ7yeMeb5b846N+1zZ+YrU7ld3btwpFejg'; + 'Ntxce/+SmVVWPrR/77RuPb172tw+am7a3q9g6wDbpeKMbrNc6EB+t3wcdWv7M6d9eXn7w2543vn'; b += - '7oNAB6v/cAxUaPXXVVRaHG2uvJI6ZWrFkf/64raub9d78rNnJu95qOn9E7Zemv/i3MkfTL+sX+e'; + '/xUINHRg2ouq/2qgWjkvq+MGS37c7X6z4yY2Rik0nyqxWhLyw6B5T1nXu5vUP+odY7c3KefvGmr'; b += - '3KowpGTPz4Iv6q2/c92rdLon3/3NxrRl7HkwZPfCul59Un6n86Nw3+u6ennPDL7o9K71/1CqJ77'; + 'nPicl4tmLNyYKetRW3tTY2MFXtu+rD/gcJ79w8Nv9byQIgrgTB2K9dqun64YOiKvw1p0XnKg9se'; b += - 'fux6WV10WbPntu4XmNe3aZ+XGzpx+b/+m1j0/q/f3m+bU/qn9x/NGR+3NaJc2oE/r02QH9z7laq'; + 'usk1J6V18ohHd96c1CGms1b7QuO1s16pnLCm/63j6+y8d/ID52d97Pg8dNndS1d+cP+EibMab/s'; b += - 'Rj9bsCSm9t+sWvB649Ei+wdP7Sr8s2eB1J2LLjshyb/bnvPoj5vv9v6YOI5L07of8GW9cZ7x0CZ'; + 'i+sCPr9+ate8xW4uVews///+K+w6wppLu71vSCU0FpGmwAlISehGlC0iTKkUhkIBISDBFQEWCYi'; b += - 'nT27jjIv+VZldJVnkwZ+U73e8PEdqr/X8Yvz19+ZcM7Zy2q1H9D30KMVn2k6Zk6o7uCEPS+N2dx'; + '/YsaBiV8Suq2uviBXsfW241hV7o30z995odN19//u8+z4fPOe5+c2dfmfOnCnnzCTe6QuW+88vy'; b += - 'xe+PRtb8dsumViHl7nz6zGxdc2Pre1s3bNXp39m2vtb+7fZWDx+5ZUPTgPfnKgbsT/xiTueS33M'; + 'EpaaX9xUuu+P8b20ftf+88Yes/i5IgPA/p5MjowE+8wVo5ofWt7Tj0mo0Gy7BleSvvg3lBXYxx0'; b += - 'YF1zzSbu3SHc8t+eDsIV3njPk04Z5n67ebNXvfFVcf3Jz30sjWN9tpHaYFa5+tPPjDo/G95nz8x'; + 'wu8Zjx1fru74T/2Diq0GFXsYbRgRHh8f/yhtVfXw7nfa+0/q/Fm63TQ4d3hQ6CRW2eSjVic2Tsf'; b += - '8LbE36t8UCNKV2+m5HU3njk2Pctvnzv/P5K8bE3Bl7z+uFnrIrWM2dXuOXpd69tPeOmm9YNe+eF'; + 'WnXOzPpDcus7A+STn2Igk4J/L2Vy9rKsBwr1VUVRkOc+xeZuF1K/Jn7ng0rsE+tEHvshub8/SR8'; b += - 'tgcntm1z/quHF350+zkbzh/W67xvW828flqlN/7T+OGqGwpnLXnu+gqhHsMi3doMTLnv+RGfXlC'; + 'LCpZ2eeKytrq5+s2VQ/K7ZL9uXB0wf436Du8p118rVATT/wPuzHsQHl17KMp83dFNb7ORFmfQ/e'; b += - 'cOeboqs37ejf79p5rPi/R+hXP73/NRKXhDaOX5HxYb8CQt887pzBk1/95dFJC7+4JySufbvrpHf'; + 'p4cYXGy2nfmw7JR8fFs02Mb/co5dJPr22QldZcniK4nNUz4VLRTmnMRUzspzWaaIn73auAaBVqx'; b += - 'df1vOTRROv+vGCIU9/2/DQH3caN13RN2nC+/ujX9VUv2y2d2Hlzr1Wv9Vj/H/mzXhoq31z7f3/y'; + 'sSPo2l5d+7WvshS2pLxhbTf1OJPofrrzi+kyt96iflO2zk+vG12Bx2zw7L9t6QeaQzw8mDQykIe'; b += - 'jj8j0dSb6pZ5dqpB2sl1Otp3vavL2vsuWT+uT9dmDp3Q+XvKzx2QcvDHy98f9TTb79y99JG3e57'; + 'EBCxG9txOmiYNO/90rKw2ZcPh3Xx82+64Ls0t23yF93fqlLAPluLF8ddB/JNVd9t1pKL2t36nh/'; b += - '+vD0+PTOzau9Wzz551cWVWyyvNuVlbs1TtrY4KaWm17eejj+98YdUl8see78L/q8NjDzWMd/pX9'; + 'vXXHyy7eOnX245nTNT7ug62D7k1/c3n+4RKPfeiy0xPljQcqDsw/UFDxqyvN818ne1xixwb58c1'; b += - '4X+PLKl3SqMrbv3xUdO2Hu29/OO++zKJ9x/449I+mLxwbf9aqNcEq3UsOT7zx9+SpaxYdmWFm3P'; + 'vk+7cmXF93PJG54vmrTsocX9Y9dOSEYSq9j/VP/gGduIb4gY+ds8Ok5h1o9Rk67GJ8X8TKZlzbz'; b += - 'JQ/+T9Z0UrzQ5Ep9z38XfKwSHfF6x4Kml3wk8Thz4Wjmx8c8KTnfM+G5sRX3fpk1cWbrr0kc9+2'; + '87ilVzqbWY5eOWrlxJlzL27ffgwrUbN1/DsWc5UWseALfr62vvpmyMf2eqvgg0skEy8sTh500Qq'; b += - 'jp7wsszq9z7xIxzPv7PHwO+fW/ZqsD6+z5c+v6SzyqExvy49apnP630sFlz5AObKlW89dVHHhn+'; + 'zWpkf8tp21eGcHbphWxLabY6f3Ya5z6wBX5D+ICG+aBgTud1yx91oqhm6gCv1zXyduYFh8Xvp+n'; b += - '1JUf93n4zt5XXbn35on2730Hz+9ojE2/5YOfe8yp8EKDd26YnLbxs7H5qSl7W+X8cVe3f529/4M'; + 'Hh73TR5+Vq/V5BUSapb7MdVxzIX91zZ2/nBx5th2dkv6p903DplMPC5JS5p+ItRNnKVw8Of+gdN'; b += - 'H63w1aVz7Da9/e3DXR1WmDNvX7/La0+ps7fFhn8D1426N9m34bt6bj1x1z6/zt97c9f6MVtPfyv'; + '6vaWjp0jCHi92orXM26mzzyS3t7BqpqHo+EPBtdbuj2NKlbX/OEK6q6DUeW3zdMH+mGtPQbcXqQ'; b += - 'ziqwpmw2qj7S5Nn0l+d53a56F/jumQOyPrgfjOv2z8ffyKoU+sOHv/t1UK1q7q9Nxb7eZc2Wtbu'; + '4U0/n6pa/J/6BxW2HaRThZ3AvFvb27cO2dv6fHD39x2vmRlHrBcy1w4NO742cpXKbt8SwyNWSYp'; b += - '7NvmXf9s+03nTtvUIMX20SWDa66YWH2uqj6zrbgfZcurX9+VvXoooov7VpwrGRAq4cub3DpwgdG'; + 'azofmmgMdbzzUO9EOz+Vty+IjL0SPkU5nGBfWyHYN7bduA7utquOpsikdSzYVNnPuG8aUz+6nt9'; b += - '9629f1TVztbXPRckd/7mte9u/Oat6ReFj369vNOq7TOKSi4av+eV/hdenrKt9azfl++v/vuvjzS'; + 'Sf/nv1cdBSImLr27PDTdorYi176kx6rnhzyIg9KWbEuDc3j9kvO7230sszJPHll1vKg53El013x'; b += - 'vv/q3FWeN6PFpyz4tj318fmBY220NqtglE6ZVfaX7J78ZzZveljhrb99+Hywt/MeeFz/cfs6yty'; + 'MxnMTuO5+yak5ZTW97N5MLZvk8qXtrc3n56c8qqiPPVQ57NfWjxPKt5q363N6zgq4/CNw3/sP3F'; b += - '5c2/Hg9faWThMa1Y7rFDpc2E876/rAy1kPRKcMrGt16Nf8207Vuu8ffdbni3/5LSWrY96Q4P5XH'; + 'mNCW3Cr/wfMuLep5eX5IfcOT9b57K82PTPmt6tGZjh4OW0rKJt9s0jP02jujyNyt+YVd8sTZe+4'; b += - 'h4ZX6XPvHDBOcU/fZPe9omzrRrVXk2cOf+3Te+/1C4lo+flF/z2c/0G538V2X5ZmyM/9folefYP'; + 'gR2be7NP9dflhPasBp1/X9j1yhZY6+tAA224DktIsHpW9NkARv4ad8IP8r3ko6Lq7YDr/dHXviW'; b += - 'U9+ut/ebB756atGbjTu8Eryt/cP9qo6ru/eRGld1jNZb2/yJRs/PPtTycMbB56/6+e61oz+8see'; + 'gqKM9rvm3y+bEb7+x5+7HAqNbr9HrjJVir8pPj8KNSi/z0rN1ubulC8x4bV5vTgVSyG6SzlPVPB'; b += - 'ga26996LM4LBNrfKm5Mb9vHPchIJw28ySqbt+icx4MbHetr5P7B8zb+75D15f+62hW246f9Kb+/'; + '5F/Kv7804L8U2lkcDxot+0f61vbl0993572nrdt0i7m/ImezfOtK3un7u2+L2uI2XafO4MvurSf'; b += - 'd9PHJL4t3V1s3KnF/993PPXtbx2Ce1Vn84ZmybetElN77649AGP/38Qu2Wi35Yuu755ofrb/8o/'; + 'GVTOasAo80Stu1va6SGj13G2BnQ02KrImvXFK3Zt5K3HtH/5OOxfKSvvTCXPBPxOnR8Igxtw8BC'; b += - 'j/bn2rxVLPnnmxkxoW2rr/+xWrjlhQvmP9EXvqRtGfbX1zt6OI51zTtPqthdvDCl6rOytx6zW3V'; + 'oLJ4yshZEHjWFagtDSJWaqNhvjuFDSPMtkTKR2GG4ghcUy8uTiVQSyjIMPNYkyoGHlSVF38432f'; b += - 'zz104HDJ2++tOmt43vSPf5hy5YXDVw984qq7etXJz3/a+PI27bUP92RHKt7b7JWFF2ROWxV//Q2'; + 'EUYjFvmFKZr/BydBTJMmFWHLPFSphXWV53KYhsuMJerLAn47KnQgYIJRJ4Zk2TmF90KHliVeZAh'; b += - 'm3nBvp1BypfbdU+4bPGD7kglHCroJ6vzHzUNuv+2WISX/3Nn9wkDz1geqrXzzhsWrLkgfPaCzvf'; + 'gzOkUhii6SZ1OFijT/SDy9Alpcnk4ZpcgiPXamkwpHAKzznCWOIFWeq5GIvXkJhokyeq+DFRA7Q'; b += - '2dDbdWbPPTtQ0XpLxz9g3nXZDzyUWTL741fGXhpHsCu0r6Pvl5nacV5YO6c5qmvrB7eqDB1lt+i'; + '8gwLkyPNUVJWZDS5SRRnaOcEFCOGyEwC3ORSUFmBngLIbEC/3ycdExjjFxkItRFJi2/wLN13B8I'; b += - 'Px89lNPP7h18e9XXRuq3v+6VYPuTRoVafnTptemX5I6avIvPy3/6MGfL6zRt/NtXcTsveXOg68+'; + '0Hsi4eHkqiTIHGsmBqqwKL15AdDyIUaES8yQ5uWJJUYxSMkAsJXPhxUsETURWoOApihRKcR4vSy'; b += - 'Gmnf7+ZjLwyNDPr9tZfyPunZo5my5vFFrzX/duTgy8YsXlH44aj5CUUbe772Zcats2tF2ybM1N/'; + 'XN/HrOHZQWlJn0GSDLL/KHhnFARsAnJuoCapxmyYV54gJQH5oQYrlcKvMC31VE5JJU+uAJqXOAI'; b += - 'fUqtqs4rN7pt2U7X9PxZffvcXb5zf/8VlG35ZfbBd0uLinHWh+bWbaHWv2bWw+uxvrv7wd7XvO6'; + '8Xk9t7Xz+nFUw6DWqyg7YqVfzrrRqkj9KL2Ap0otSNHSl3RksB+dYcAl3AWUC+hLg3czpenGSDh'; b += - 'vf3ph3X7RGm67Tb2x87cdP3zDr5c+/Orp9401Lx2XveTjw2105h2r9+6wn637w4bYGtb4K1Xt1x'; + 'aaTukhl4/jHUADkIaCkgNaBYQH5lh0HQ17Ru4Pd70FhPAEoHlCmUwnwIMzPFCmhJCp61Eop44bJ'; b += - '895iw8snN934rh5C3q33NzvwRGTu2TOqNLix0sWrblhZUavg9Omzv/18MSrMz+798I3K/YfXKl3'; + 'MoYQXq5TJhdlUQTTnp2VynjALHuQTib9+JoSwYqvZCIv4L448KpQiUkmZyIejBOYDdlBJugESBe'; b += - 'YYNq8y96eGS/e/u13z0sJ7XDlZMHXjatxeq1974x89dWA775bsObldcuzL8uq/myZdVqLjir7cZ'; + 'L9QB36gpuFVI3DakXi5DmkkSXFMJDLXPhLyJPAupbzNNaDb6eTNqP+e30bubAgbaQ4E2SMJSQt+'; b += - 'nLuxS/fL6FX/9cel733zV8tDTcwcs7fJAn5rfHbkrY+h7bS+MfqTc+PL++duHPj00/oJG39300u'; + 'G6mjp/+W/UZ9T+uz/3C7+szSusQFNStzJTIFITetXSkLBfUrBx2AwVo1YCBfc1xhhgWQCSX5eeL'; b += - 'MvBvqsf2JtlXMXqY1+nTji6ssysu78qMvs968ZVm3rT+0fTK1U56lPh9708LMfvXBW9XY3R+Ztv'; + 'RWEKoqdb2yBDMwwIPcysDHgU36/tOGh5m4xf9SdL1MOXfCaRT99y8jn5GPkc/ol4qssc4IY80tA'; b += - 'W7zDnVBza/Hv/fH4V41vzTfDdXtNajmjn++/lul+amXX/R918WtV44ZeG7RcluzjnYOKQ+eu+nH'; + 'hk3iWXasgnuJz5+CTl1aFwQ38JyND3OFz5TyzPPD0fVTJXwmes7oc338VPF16vc/lBiDqe+5Fx/'; b += - '3avOu7PdlXOvCLYZV73duEnfPnXXOSVzO6tnP/Xvuil/dJn+Rr1Plk27vnGlc7q81XrzyAoL20y'; + 'wCkKrrExJdRgYgdZHZeUc2BiA+s9MbB98P8J2+q9Byi1FgdNODq41mAwPnXIlg1L9SB34Iu38Ss'; b += - 'rs7jGBQ1zV/bpN+jLR4bd1rTCz0arz9J//PWd73tmn90jr/vW3bt2Dco0uqR2yOlxa8GXt72pNV'; + '98VuHPpjaKAwmeBszFrO9tpvCBX3Gn3u01xQVhZW+OIG1OCSjt0dXzc+3CQ1bXfv9wTvAt6Nr3K'; b += - 'oW+mL+oDtGLYp2D9r/+eipN75rNnxFrfb3Dv/49iOhwZUTalRoUN28vW/RDdtWNZzV8MqMs85Nf'; + 'M6mfTXCPrazJTTPSgk2k9F279swNrjwV3O3h2rpgfMz1Z0sa2oLHRZyUC/2dBzzkFdV/7jBsgHl'; b += - 'eU/Wt8fj/3rkwdDrUf8X3PfAdZE1rY9LZXQpEmTqKiAlAQCCYgKigougopYEQgkYAQSTKFYg2Av'; + 'OYsAek2UDtq0wtr10/uIAy7DKd5PGMUPWpB57bZPpE/LY1Mz9yxB5iLDq3vHC92tDiuo6f7i6/X'; b += - '2HtB7Ih17Ypd7F3XhmvDtYtddyn5z5mZKMv6vvvm/b79rj9cFzP3mXOeU+fU57nn0JO8Wbp+G85'; + 'ZIeHF9Um2TYeiy1IBXu3ODQ2ud416sYYwJTa3auaN32bZQRd2KKsGjR6HlXqdZY4eahy0WjT2hZ'; b += - 'PvWvns+/EPhvXXVcmZVm5tH/SY3lg5svkXqlWU5Nqmo8dsnxyyYg/7rW2qTtZNaKTWpFgvgcZ8L'; + 'z4o7HDrnZEXhRPC+MXzOw3Yuzesn/SORLLzVdj5U50mT7rfY6Bfi+nwp6bJAzf4RD8QRM8a2DGi'; b += - 'Hvu9k51S0WTePW7guMjw0dLrW+fXe+Bk9S3ZEnPD4ZnfR+YNvK1Q33e3fKYfVvvbYqYHinhoxRX'; + 'Mbmf6PjAxPSlryOKPw/M20OTrrjtGB749mhj49PMcKOtby2HNi4MN6/MX6OyrA+fLcyalCPHI95'; b += - '2o2Wy5jZH/M2v28fZf0a6sHHS11F3vxrow8NNS61+QnvvKeqbs/Ot3au2NaAxG+rKF/6fpj6MTV'; + '/7v8Uj/KIkH8qf3g8QxoxoNlTb1/rygjTUXUXbA5ci1i+0CtYWaMbKVreuLFumn+kz8k7V/c6FE'; b += - 'ug41X0e978w6k6MNmjYlKcZveoZvpDuTbd3wy4EHp6dGCHPGHd02qOJwx2k3RuPWlW/SS31nnxI'; + 'RyPedPz/lSE7ku4M7HUosHkbPnXVatXGUctevX0I7TwsOjDDvpvbi6pTTKeJHhurPmv0SltF9pO'; b += - 'iey4kuagOu26vn7j/caz5tTWlzw8V990SumTzxuFLfzu/vXaeT+qBuV2JZ6d2van5rKyMP6C+N+'; + 'LTyedSiQxMe7A6yii5x7H2rZ0V8dFrzq0FNLVOjzZe6zTX67XB0RiDt02Kj99Gj4+m/oCm2g/Li'; b += - 'WY+yLXRY7vrq7ZPuK8I6e27Gislce6LrfR+1EW19X+uZyQTM7Hms1JL60PLnnrMWAyd22Vf7RGY'; + 'jxneL0wfVGfrkmBaMW/QKNcjG+/uPzVIcmTwGR1jJObka4eDM81dYjw3782Td8uJOZlkw9bPXR5'; b += - 'ade7Vb7M1P+YkTKnhMz1RcXx69Pu/56d3SS7HoBb0j1tCEW7xaHC/KfbZ9fLbtjqA5Y2tAp8Fyl'; + 'jef1X8dOVl2J6RFofWjWNFbtJ+Gbz9M39YrnFiX+Y2Ctio1I3PRnyaV1s5o7rGaoPd2K75J8cwt'; b += - 'u6zMvXbFCrm2NXdYwIy3TG10JywvwHztNe2rOVt2jl0oKl9ZtjP8+KScWSum4L8NeVmRsP787cP'; + '7bIa5nuOeuacMGxDksn7Rys39xXPGxeT03hW6PS333Wdr59u9xihF7pnaZaxH/JHiH8dtbg+JXd'; b += - '43D8yNgZ6RvffVf9oRMDxDxa+5Z+jrrs9HysYGbgvoeLGE71NhuPa6SG5rS/HOKhX1V/evCVnvW'; + 'k6/3RQzMf50l8JLGx/vi+/fsY/oTP7reL3rrj5tZ3smdIgcf9bHNyXhjMHF5b1YsxPa5tUO4Ied'; b += - 'XivkzD6Fe8NTdamTtOqJ8w50G7L6OmOAg2xC+v2jIvj1FxK0r39dasjlLHIgduFIgq8XndihOd3'; + 'SPDx2pO0v/JLQlaPjnver+Anqv8w6aU4LUq892Rpk37rosTp246+t+nXkNg0xFmxM4I2ONcVmWU'; b += - '28xpBPOSZLRw1fkHMVdjrwwn3swf9fj160Hn5L268ZrnbBiPF95Ic4rt4XlzPGGUc2i1tcMt+Ye'; + 'l9Bx8wh95l/OrbPA+G7XHg0urBtu6VNXerLs+2NUvpNCwWS/piLX982epAUmv5Z/W9HQpTNpUPl'; b += - 'jWh32MrFqp9weAhjxrsD2Oe2b1d8eFUS16dqQdRypO4au+IGB0P2hd7k9ahOWtH8auKAVZn9Ksb'; + 'Lf0W9z0lnT6pwDTx4k9a/qdPzFSpPkqDrT9+umRSQ7WfI/hxSMSx7bY4y7udHu5GX2KfSMmy+Sx'; b += - 'GO7NdFw0eU93y7PXdbXbvGHCeP6EVsX/Vtg/jrI4VTtEs+qVgef6Ju/dsAqMKg31XCjktE7ZVeM'; + '7UMDihmdUtZ5e04r3JqQsp0jvevAfbTUyp+Px4bVnkkxYf3y5NU/ENKxPqH3VzK+qTyQ8/Pr3IS'; b += - '9fgc+VfSndmLs/Pl3Grrz/mKj31eaN8S2cX2uRuPV8zLHfLR6sir6dUR75+uvm9XiLwiThPc9Eq'; + 'po655bcvpGR+akpMh2dmd0+nFikGXsw/gwxJjP6NEdHmMiSvcX7IPZ/hQ45vHmJfk1U1RGW2yyN'; b += - 'Vdg3BKpQ4s5iTFHRB491PLA683a9Bqqm50sWsc1db5tqn8wsa8DE3vB8W46ME83n3Jj7QT/uFYf'; + 'RfXlIB+EDRl4Ve+jGMRE9Amm+Q6/eSrePpyuHnu3wa2E1Y8PQksTHxvEhd4duWRDt4DqjY1rK/s'; b += - 'vLzHLhWksSf3dreaPHa6s3npsFl3H8W+rbYNmSCz65z1xBYJ31YPw3Xpa4MjSMiTCdjXXy15bLT'; + 'aicfkhafLnQzqvmj42rfcOr6ZHJjvSXqexc+/eeZz2x+4zQYlXLNPfxSyflrAmJn1b70kONZGTQ'; b += - 'ic9jjuysmP0WZwrZ9xH3MNkWcchiw6Bcsvd+L/Oc7+c2Q8FkNUNORUAx8VWcwnLieXz/k6psPq1'; + 'O+w9krsdiAdq0gqG+n6Jv1Yi6zn5aO9hO+azzhMUaQKC4v7H3Ctmy28mlpuF+BVK+S67Ph4qa5Z'; b += - '3TDSqbkwEbxlXw+l0IsG07yHtYUfsky26RAXPmH0aGPmAlxP8O1osvJ/1hKL7zxKCSXw251m2u9'; + 'OAlpGFU2RJCxASlb9GinOOMy8qi9S7clGWW8prTY9w0Za548c1/vRM+sX/koKKbEK/PIhC25c8v'; b += - 'rLlxxw5M/W3Prev6Z+Hd3Ty/NWcaBgTnWbH3lIGxBs+da039Hj93rDHX7H8eWlUyDPWyAP+hcIP'; + 'zM52ylwQX7lid2ebrPzjh3o3M5cNsPrraGYhqj75VBrgHigp38GM6BRWJEu7tz0pasEXkxnW79/'; b += - 'G14pjnwsaTHDtoaJGTq1/ZlLvFz0ySOhGJXb32711oHAfjulKPSw0fj/orLrsXPma58Ut5Jj6jd'; + 'HAQ1FAecB11abO4k6KuMhL1yPFL06+MygbMF785LPASGy6RywsHJt8sOtLsY9O+aerl7plcc9v/'; b += - 'eXk+qDQVFtc0WsVdK97aY8FLbhug/p1n+89K7M1c95WycX53+ZW+3gg6lPvezDlsIPcRDL9kf/R'; + '+Xs5MSs8tK0xvbhM7I+b9338m7G0SyPpcOfVTR/yJoYSH9UvNcu+3JY9y0z3wmzp1i+SN4+YkH2'; b += - 'iUEnHI+gF7wss+e8eWaecuSv5Q38/Ft9L+aaXfuNPrG1a41W5xRxMmRjxLPfR1x+APYwfnjtvJ5'; + '8x7rXnfRO5vdsYCVeGkyOuzavNN2rOeuw3S9Wt1Pi3OHhQS2ZSzrumJY8pUDzROyrwzbFrZpVPY'; b += - 'n6ZXljR3qba0Tu3sFxxE+3me0z7/JeOGwwztuU+PT7z4Oqhl3yJY4FHDvdmj3vuGcwytSKubrsF'; + 'RTs6WyJqae3t8c5Izrl3r/FiZ89rrnO5dXnXO1cCqYdPi7uVwE+r8N+d0Gl6eO+qSaVnocAUjKY'; b += - 'CnTKxg9/7Flz72mPDhcb7redmt7bMNJxw5J0j+gdAy+zBxxqMXVWmnv7cej+I5Y7ln8FLetFqzV'; + 'T3qGQ4a7W7vUvTjuGcGRM80OdPhoe/WjvxSM+uufwE63cLC2Jz9+U6CUriJ+dWM0pafxt+MNdWJ'; b += - 'cyYj7/qeVynW7OobNc1bu18xbHxd6WCfieocr1l7reCW2Spt4N6GZqf5BQxx/FKwwMVMX+VeWJK'; + 'Bt6Bnub6+qj4zb2WG/JOO7MY0N2DpFcOOmxeO+sOZLaz7W+T11OStz3fJrVHWuVdFcs8Uqwcsp7'; b += - 'wdOtCvU2HB0YkdW87r4i9OmXY6wkPSvJOVY73X5jn73o4uj43Jdz2dOH5M3ZwbZncsVw8uXX9p1'; + 'HuV/auOGrLzfH87ZZxxXmZd/3tt15s4LedyjU49us2JIy+X2zl2qvaWLslvuxoSNkJaUNlc8rlw'; b += - 'Oixc7yO/upQ9e5QTMatGWy/9de1dybxz15xPXhxQdqgUp+rk+oPvB7b3uKf9p+S+MDl1IjPPToF'; + 'jvSv8UmxFuyW1K97/ct4DA9nIylxbL/Mg2bzxjF2sjFEynw49RgQVb5WdNc47t6CyUVaSWqfef8'; b += - 'M5uxBtxjlo6o/+B1QT865XLmihd4AfFZfPl0uX23k+Ev+Jz4Yr2Nqf5BwU4ABXsEvTwiOj4+/kn'; + 'w0v96zuCHeLDo/YHJl4HNeWX5c9TGjXja/5j+d57JEpmjKNwQz557ru49I6OQncJwzeERu0uzWv'; b += - 'S6rLhre8ZOk9q/rtyh2P3jOHdoiaxiyYfa3ly03Rs/YUgj4rB9eutAk5xj48YBPzzuFvKVrhZIb'; + 'b/MHPHw2qjfXJyOjbg9w9T4aNvHEbGvly+Rt9nLL38IWME8lCGf8m7elFPSCvlGwZfno8POyXXS'; b += - 'y7C/PzXef51W53UYbXdGEtuPaxP+PYozBkT4fggifSvOW2zyTrysrK3m/tE79r9hvDyq7TR4tv8'; + 'xihmRGKKcyNTGvgP3BSlcXLagcUSRYPyZLdf7q1Q0GKKNj4cfFUxcW3iAosmHWWnug93Rqj8lJ1'; b += - '1YH7ipd05XoEvFw1qP47gXX0pznJW5uiJu8OJXxus2pES6nysJmPi4aGR/PcTy+KbyYy3C4tV01'; + 'HKePPX1Qply288Kx0wEZlZvtRp23c+8q+hxQld6KMVDpbou9eXhWmys6boyNeq1YdZhVEttXvVL'; b += - '7vT1CbJbgy5P+Jq/U6m4iun9tU4zHZHwt5OOwi2zhZtswKsd4tbJsNpVWjfkPXuHo+TcAPHZ5q+'; + '0+3elBK/5MdbUtfNNYf97I6f2qBneJjRvpGFn38lH2lJH7hKOG3z1yaKRR8fSVfW68HZlc6ThtZ'; b += - 'mq4LayTpN2TY/+fSohXjfjcGdty//TPjGQ/W4nAg+Etl1CbK3atA0Zc+Lz8eqKodsPLJHgG/f06'; + 'L11Qf74Zvs4PK2gl9OByk4Zcwu2jn1xbJFXXUHqsscuvqFtBZ+PGljV/eFUuOdtnI3XhuzCNfzq'; b += - '9Fbd32MOnDnWbjOIcK8DHxt4D8ybr7BjOlzPAh/OzwLuVXn23/8nX3Xf8LTtqf3Qb6RO77dOf5X'; + 'HZPnLi3MHhqW7zrmYiH6IfWsvzmzaJyzsqTjg75Fgqr1juG68iKfujney2etLYoYVcA56XK7KL9'; b += - 'qF2/4O4cfaHcusqij7fWvDoclqHj9WCXfV9F4gNk3s2f0g8++NV63MDNr5cvXnF46uWx2+cFCYy'; + 'malZLleGo6Yn2am928CjZJo/0qdNGjxJLuo9xc982qmSAnTltwqNRQ5M+WgX9bjb6VoWX6/P66N'; b += - 'TrNN9Q/6zKlkDTJ3zgZVzz1cL8mZdjU+q9ebwfykmb+PX36juZPrqNKRpRNnzr26Y8dxbJyeY9b'; + 'EXfaZgv+MTRgfP6DP+buDe0eEezdt0cl+NTmOMWnZ+Qo8xHyZ1DvZflzTmS1x97hTWrDEetsdqN'; b += - 'FZgxP6xIHavD3mxvK7kR+MVxq2f3Q0syJV5YM7nO1JdayNDvyndfqI4qfzXtu7W/wPHF+OyaeWQ'; + '3KOjzn5TrEnQffzmE+vZ2XVRDsWe1eYHc6dk1nM8bHayihYWBw+3Sa1bt754q0fF3m2WuBjK1XI'; b += - '5qkPGof3z+MBZSVXdPbDfVCV3AU4alvkvdyHT5rWDD+OiP5ujLYr1l226xDgkf0v1WVWSvabOzX'; + '5L6N7mPxuUj1wDt5Yx+k+IZFVa8ce1PeYPEw7trYWeW0RnNb3ZK9N8ZJB3n5l9jM6n76Ud3IEmd'; b += - 'cAjScORGelvK99fvnbGd9HgIXPPxLvI0rVvHx353K7frDIPZeJoayRcPx1kJPn+4Jw/DIYUVFdb'; + 'lTd+uo2tKquqeT3h79n7Jv3Skj7zaAgppEgNCdn3OIic3Q7VkzDR4HBke9PtnNqP+TVsA0Giuvc'; b += - 'iES+GFVsHfR8UKtQ5/43dKc3Hl350Do5Jwip6zTibB/rO+EdSypxU/2DApsB4inBTmId6g2GbUP'; + 'CB7+BJ6s1BAZnI+DEJuRgAT+7CY+IaXIuSx8o1+ApKzsE0+AxK6h9rcD11zF2DoX2BnsShy7//g'; b += - '3178c2PqTzU0n+14bpKx1iT1PrItZrfM+sNT6aMtBmkru59ryCpvbjy1OGqBi0PY0AfJK9hSxPc'; + '1K/X+MtIDWD336T74AfUztoIlmLk7PC9n/4h1D3PrPYlANHh6urp//XAf7T+//Pf/+XCd9C2b8/'; b += - 'e8sla1K7HT+o2chhKbM0VTbMZtzqvlPrTuWzy7k8XyLozfyk6AltIr7pIhPdrBsDDOtY3ZpJea9'; + '4Tsu+37Cl6FlHAJ+H9F/aRxC/D80DqHO/944xH/f4ZVyx3x4VlcuhfHfzicnlW10suNoYystzGF'; b += - '4ftOJP6jhj//s5xnxVn9y8LCY4c8OaPu9pDtvLrjj/3nc9m2RRyd81JUlQWt3K4cj702cI3nlU7'; + '8/x5iq58aHyCsDuQo4MKdPC0DahOC9K2l4oI0iVhqoylPO43U/NLEN41GGX0SKnkSaD+alymTqP'; b += - 'zm4ZsrrXxbKhL+Y+dnmZVrvNstV7dvdfnkRvHv55x6vRUXUZJV0Gzru2uM31+ZGXLj/bELZ/mfP'; + 'K+XTjxE+so50aQxlFujSCNo3zvVaqSSL43pvIJ+Pv3rsz5OUcimgeoWJ6c1FmuoHSWNXgJ1QY1e'; b += - 'RKb+WPDlnI/HdOq5o8p0aC+uQ/TPynYNqX3kPnjh77z3k6Mw77Vu/Kz5i0bLH2XeVoUdvEAmjDv'; + 'OUP7zdSRvo0eAvFoKgLFb5aU78sJ8tOmpz+ZmT9hZzUX/3R/DpNQa6AqqQ5X2OxUJD692KpKo8P'; b += - 'fwatVjUJLLk6J3VigS/qAYVsg/3YeCV3cWjMfU3cBnsqkgP+8EXoMvjt10b++HL7l2lSFnN9gvx'; + 'fsP+kCfMR/qC3zhMk1IaDlGQiwOaOMm8IMhgBZkHchAguX0+FSeVDmEIsExBrrQSmsiEVQsEWUi'; b += - 'eq1X/2GH1O6ZCen7QkKSpY6u29a48wAs5I5IJ5ZJg8ipk5/TM2IqbORgfGg3Rq+XKo3rJz6yZD0'; + '5Ubq8SA3A8CKPb/q56en7FeR3Pakg7QNkSWSgPwLfhCU5Xvp1BakdpnlP3UHCg4PUJ+DG1nqXIZ'; b += - 'ib990i7W/InBtfM9lrVL2N/6QNpQpx0d7w28KjKc61PMvozRlmn1e+oMjMhR67nbutpYbdOkzfo'; + 'NJxPAUP7RHoPz+HRiroMIwwleSebADjcUX/Ma0/Gie6XApJf0bTlWSxtE0+F9sW0SzEri5UGZvq'; b += - 'jJG5dzN2nSPiRhaBgCi3/J4pgWoUy3ycDuEozfPx9BbRCMqUPduQnSvFZglKmqEbcC6UUJf56OP'; + 'EEaNGgwZIPKzRdKczKRMUpS/eEFi9SwFFLa0UJehgw0xQKxRl0afj8tg4wyypD5CC03+f+Av/RV'; b += - 'eNVYQf2vE734gxXF9a+caIoWIPvxGGiiYujfARlFJQMOLTtAmg0chjvJ66TqWuevIPXKfpvymek'; + 'kf17HcVPNHgHxW+0sfZ7d4of/EuaFUKF2M0lTZKTPYywmkDdDkEp551VkeO0N2UEUIP7/oB9KKy'; b += - 'XcFtDuH9jeVDj+ZvnKo59DYhbxOo/E0WtlnCh0Op68YfaWj0XPpGzq83hgf7UFvTAebdqdN3XKk'; + 'tkx5IaSNC3a8B1NVLodRuBORz4dRiYCS1YBdNXd0VAw3LQIN8lAFHaLQxkTJ+Bw02JlOCVobWGA'; b += - 'aoUUmrVl97IiFTMok7lvzsjkXpRJl1Keq83P/v6kpBd1UKxTKr5J2Qvc4CpBrtRlnQf38JA+S5q'; + 'XHGWijAn5LqPeeA9feoO4bPDYO+y71jbW/rZyyZQB5gwpuTQOCV7EVAiqiroviUwafnCjDSRqDS'; b += - 'N3AL3OHlYT5l6VQPMbiSTSguCfKTTQB0QUyfBvBhKJh0PqQTAj6HM+qEVI2XghiAi2o2yPgcjMs'; + 'dDokTtlMMaTMrLlqFUfET/UTyRlSFODB1C2P3x8EL8DTUAkiu6H9EP6kzb7vLz7+misq3yVc0gB'; b += - 'AseOg8TKqWpkIjoOTkgTGUyXhqDGWWlpapkkKtEH62SqHU8pO1MZRJvfE5PISHSklQaW8ecOM0e'; + 'xsCwQ8dORsYmnaGOF9IfMTO3sOzSlWfVrXuPnr16W9vY9rGzd3CE5v8Qvzmv4UkOC12OJtFRlKq'; b += - 'paiUmXKoXYCuN/W5Nn/slFUSqZG6J8UIBH6kepTefxUlUotUyih2oZHqsCziYPQ83wMZR79nEEp'; + 'xBo/+AY/5ARdT+B9ItEQFaqRi7YrUdh9NpVX8g/tYQCUIpQf+fzDdox22FDY+Ypma2MVCQorIHY'; b += - 'iRvxiyaYwaTMfI2YSWP4M3W9Z5RhSytt/tP0CdGNFEF6/Z+WOYKE9abNz2nlLyPujVMKqvD3T5/'; + 'QfV45zZI6kbQ6xyBEOpgVyqLOjGJaTR0r5s0A4e0qVyIZg1lAdPFsmJ64YIIYwGXFXFPlTpYTsM'; b += - 'Lm1o/xjTmYlT9mDqQ/YPGSybVe0yTeqd6M0Txj9U/pf+HhPWlaB4G06aeRpxEG2IYcfp/aez1Xy'; + 'U+cJ5MXfRN8eGKpCLpngYyrvhkV+2r0hLgSSi5X5QNH0GVVUJwCQztx44OMJ5FJszXjNYxBKswT'; b += - 'hOCaAhR0AcZVIeBq7h59eBsZjDp4sIA7Mw6DAXt6L5RUw9rjY1E6bORkxthGnf7O7TFJmZ/Nxho'; + 'Q/c8obQICgC5iky5TKGwF4lHQutL0AVyXjnhUQTEfmiBRFwozlQpiYszYBy8DJWiSC5WyFTyTBI'; b += - 'A/mp+jS0uRqxKMfZaXY5n9Bw0uh8oOkKaQ9VO9+FIdJO1rz1ojjUIpv5XuactUK0AE3TtTBfpQG'; + 'QrkRyUMqEiNpKGqGSKYVAOMgE3EwsUojFufAzg2KAX1/jkwJJlVr+VwDplKxGQqUJ7l6BwquUmi'; b += - 'MtSMg7VV3Y+qrLfgGl63sUllzSoDDs8wY2X9nebP32kOmVq4plbeP13ZpitymKrEcWvz/83aYdF'; + 'LAyzq+MwsDb46ARQLVrhSC+KRiJbkRBXM0TCgVSbSzI5HJ8mHx4FVbcMsRVp8EqtjzrMUO2Q48R'; b += - 'WGI+p6TM1XSA/22A8pqbP9HJ7tv3of7Wze3oHDGd6vjb8DMOZ2t6Q8Mk7YTjT6+sZGc70NS/8XL'; + 'VEeUQPQnw2c9NjLpJIinlYMILAmryBrOao8MiLwxYhNK6iZVZQDdze+uhN7Ht/gt+9WIFNJRDzC'; b += - 'WZwPTy3LAbri3R//8W8c/2kAn7p1fxptfQhn1kwjIru7znHm8rzm7YfaXsqNfoUtuf9teywko8b'; + 'xAtluVUogWkWgfoCn0+RIZeBF7z8nHyxplQiWYFUKBLBOzyI5L7uD2occ0DlKsTwVaZMKiXaD/U'; b += - 'UVp/qP71GS0uhoj3z8fufdl4vlX2Y+xztUHzT+F3hpfjC6/H9epoLTgoTx07dm3lfMbes/oe6mN'; + 'DpijMIJqOJjaVFCQHBAEQfpgMtBctrBUIxCtWfoezQBIiUIy8HOIKMZ5ILAUTDqoMMO0sKI0SXS'; b += - 'LmNq/sferyf0rHjzNbO+xNXB9Cb3bD+ZMFOrxtSq/y/eoYNkwkytGlOr3vRO4VkFSNgSO1OrxtS'; + 'cX1DTZL1GKxkEGSlm8K9AaFOGdegOB7ygFvGzj+75cBmiC1mQC3nrGs5ZRRo54Npr+aVFMCjK9i'; b += - 'q/5/MD9PSwNSwCUVFZJIVEktTrUCF6L6NjP7ijAa6/6CR9sEkykj7NE0VF6PSRim7Q+4ZhFS6Nq'; + 'ylDR1R9aoboAq0JxKSf92fwM0cGe296MWlI6BmlEE1trOaDMZ6QjcCkitjynl5M3pq2vJgUZDTh'; b += - 'YFGqXpNBRtnFYWEqIdBpXiQ0JSdWq1XAktshQaPrQWzlZpNAqoVk4aTJD2AJTfdhp+pioVcpRJt'; + 'mnHqphqlCLTfLJk8jxisySwD99PFpKBoTZnF0JRtCnWL27Qf3KdTN6DM/Em+FUXSTEcZkCChVe6'; b += - 'VL+MKmGnyKXK/kyOciHKl8uazp5okIZ582lyRRxCKT8a/2n6VK6XClXwyUrWNqP0Blj40dFhPBT'; + 'xBoRCeAM1KGhjOPjA5sYjzY5o7lWErUYuhla3oGWbPJVSXPjTFORi4h3J20aBeKGl6dmUSQmSbf'; b += - 'FFpNtjRVzpfnDZPqIO0XchnIgYaXRnlWBDUdM2J7gja2oJX+U1RqtSoXBCStaDIUShmlnG+k1IN'; + 'GIuRXZvr/ez0IxXQSpGUsakDkylhSef0yFCAyivzeWNBoV//3OIRDM4F070AwcIZTxhslkoKfLZ'; b += - '7OVlyjUaaLifdjWsKWKY/Ad+xGqheT4UxliWc+w9pRPaRADX+/gPjmBIpRSjyCqXWBsa9I1JJ/r'; + 'Xlwaxm65BJfhtjPY5UYEAPsj2l89Qdv5Sgh62aS5lYMCvth1K0XFPbFSKva2m2wnBpvNO13FlUX'; b += - 'thqQlT/x+YYSeBZpSlUtLFn6RQpqlg7PYpViRdjT1t7No4P0Ob4MQf5CdbqlSkZlCEftkp1HS2O'; + 'BhSeA2juD37gLVfzKTdNO1wAy/mNrQcAsVCWRzUS7T5QQfjTGj+i4MgRpVJGZUUQVf+dlcnQb2O'; b += - '0aRaRhxD4yiaGpcNkm0bGO5JtNkLkY6uRS41mniBxorymk3o9FmmomGa+mN5A2D7f+7UTppStE4'; + 'CHzUmhAOeEieThcu+2h8JpsYD4BoBhoNwOBoEyImrAQOJ4QA8yAEg6OsAAMP4A44fQ7F/+Bu6wZ'; b += - 'v5Cm10hL1NgdGlNkwLIgw0O6lHSVGvJmxYK3Qh2r08am9ZJnqdT58d+IE7up0qKgiYZalw1QuDp'; + 'gh7w/+yioHQdYfRHH+SJkylmL51E5vMJg2JkJGnwz4PDSXLAJloTIWCLi8xkYKZPKxkLVHklwLJ'; b += - 'dB+mfosG73k+lilZ94x3qDlq/UpoFWWF6SZX50QplhqarGrx6ck2EPEeRCi9SGSSB6JYnT9Vpoa'; + 'hBC8PVvSYUDdh0DshoFmPU310ANywWJB0G+HKrw03b7BhIhJ/aHBfUjOUYQwYD9CQYcDfgvlXYg'; b += - 'EHDNNFp8kH2Vfp1KnkPXSDkqHVHLwHDUArz+qjU2ml3fJS5SCzMsiVJJdnQAlxWpUaNPTuuszMA'; + 'YL9+gNPCwBrOC3GoFEjPwDFAw3MDvrJLP5LlUhHEf+OwIYDjasFvIWIgv9WGBLuN/spuAwluC1I'; b += - 'XCRMliuVvVTZIEM6bR0wiLAy03fRimzddo4rTRTHiPX5oKXB0YQCfqjzEZRRatU2X1BUmOVmfnf'; + 'Lhlz223CiUBESS5ZKQnUX7X1pYSZhrpTs3Ij7OAPCQNife7nCsUCoAMK/g6OWqAG3xnMVjt86fz'; b += - 'XSMUalAcKorgBpqLRmnCG7t9BwNUukxZF5jRcOqN7ZYHCkvTRa3KkCt7K7KNcUeocpXhMpkaBs4'; + 'oI70bxFzY5sbOHQ/W3sy9klvKE5HiQATosYDWAB36/Xb4exONB9RnNDWUGFGluKNOl+IsR1fd0q'; b += - 'BfQfMDsRRyniNHDh2VSmVZA3QN+DNCU8hq5sWEP/dYiZSpdE2gt9DgJKVaxvDNNBlynrL1VkK0C'; + 'N9GlBCsR/ntRQnQppRVay6VNw4Vnwn1To+KsxPVL80pNwPK7IkRlYYx5U+Hin/TGAOkEtBUQKMA'; b += - 'mqlBFypYIs0O4qnVLWV56aQ76wqmzYgcGtSo0uFVSdJg00T8j8B/vTb6yboOWqoGUv6GezM6XaN'; + 'DQeUCCgIkAcgW0BGgNiA2kYbIE8BXQZ0AtBuQKsBjQUUDMgekDEgDiAU0MdRBshjQA2AdgPaAKg'; b += - 'JU6C+4Zyq3Ipep/SqgA5cL3+QEI50cbl5B7jiqlLEeq5kMDNzLeb0EQhJ9G0af9p3HQsshOKwKE'; + 'S0GRAakBiQImABgASALIAZAioGYx7LwE9BNRQRC4eaOpSn6IOWmaA2NR7HapedLWeXK1voEeVX1'; b += - '9W9E3PB3nBKT0yhCCVMJIraBcIJG8fx9z5YtVWfI1X7k8KEge9i3QEYAbdDUtqnhMvQOzam1ckS'; + 'PfLCqsDkWa+uVq3TKnR2F9qr40fjV1SKd+m4NvrgPoS6kB8hzQbUCnAf0KaBOg1YDmAZoCqASQH'; b += - 'UbkXGY/TvR8f73QtpQZxO2ll9p0RFZCCcW6Nw3oiR/KBRPFR4hRIEhfKWpVN9ozFMGm04ZcRamp'; + 'NAwQCmAogD1A2QHqAsgFqAWtQHyGtBTQPcAXQF0GtAOQOsALQE0BVApIAWgbECDAQUB8gL0BPB4'; b += - 'Cocb+T1Sj/PzKc/RHlJm8YRbn5lo6PSe/vSSF7VJZUS+5va9WwdfwdD+xfo07LgrZtSAaIozlNO'; + 'e/DsBsgSkAGghVp8dxG0iwEXlLT6y88WP392D3fNBNKQ4awJ5DjCxch6EPIoeYAYruCdA/9xJZT'; b += - '+xC05k3plxVNsoDNBLMpg1Bf0QzL88EkwhoD22MDRLgkJEpdVl+MkV+ErkrT7bB28OocTOabhtG'; + 'Ik/bi55/zkpUHzXtYTCTHzgyMNAL456kP4McSIJT38+Hx/7SqIFXlOYpyitKIJSCirwtBfFbUBJ'; b += - 'HENjlCYHg+PGMxyMLWBwLZmIImFdLBH9gkUI8vATAzm7BLIzk7SbcK50mQXPDxAkzBxH9EVg1PI'; + 'u4sYXCkRTGqL5UB2UMJkgTvPDVxRF1GRhB7QUocvS5DjLPFVTHEdmbid2JMpQ21UxI8cuzf0lD/'; b += - 'Rosixl2bIvEBQnEdV7ye2JvNWUFM+YUh4ls8bMKmffg1MUW1Qt+GHZa8lytcL19/5+Hvn53gsmF'; + 'F7MOIrodES7Dj8k+sND+kfFupvviDMRnRG/WTPBq15ov/kO7EV38VYPI33HRmX3F+/rL7Fu047f'; b += - 'Zvg4/aop3m+3IW38frJXaWftXa1q8+XbrGriJO3Nl24aDjuIB1eFu35zEYEv4V+l7DRUf7Lhoy6'; + '3Hpuv2mJ81q8V9enkRjidx36Xs1BxzgsTJl06aB8+Y3rkxyNOtRG/5abLw2r178+/4p0xPZeW7N'; b += - 'doh9crbtyb52TWr7P1rRray5yXLW/NvKEfsaLstrXKze5Cd6+BrXUIt+hlSj2jizzvU/C5/73Ew'; + 'qN/VwM7JMvuTfVy+uPfOwIv6sSdNn8Rvr/fEfT95W3/5D+u580+20j7F05KfVkyVROonExAIMHI'; b += - '/supKn3Va+XHizVVSV/iGMgPizEtU+svk5NcKHDwyveTge5fpfzhpwZkvllS0Hw78QVIxHCqb9H'; + 'yLHEVgOJPBRZg/V7XIIQ+KVP14fGT1JANiUq+i+sJPPedIVQrCN/LV/8i/8Q8tWEDvGr8Ffxc3y'; b += - 'Rc8ofelYodRrSN/LNf86/8Z+dSXk3+s39d7JBQnxTh8lTM+QySIHiQQX3bGxhZ5ST95/K0ehSPO'; + 'IhD5jAxmGyI0sB0wZoMbgOXkBVA4oDXGGjiKfy/xqNQZVhT2daOSBNP0V/GA6bN5LQbNsMIv8GE'; b += - 'hkNxZklJP/L+VAU2PqHBE0117hA0mW1YioHlH94hrlfSQd3oiP0m3TiH9HqPm4Ef9B991GjNJEB'; + 'hfLA0AGhcbFaZR9FhdfgI1Sb0+DP1MKOBn+heIwGo5SxJQ3moN/Hp/MD5v6AdX/Aej/ggSgpF2q'; b += - 'kYMqegbyzNrgnlNsHkTbNEE/0RTtxuxHP1z/CNQqs/8Vpfon9NbSKcP/u53c+qIX3L67Wjt+QaI'; + 'wGP0+/REoaQz067dEv8/veCp/8O9ukJkPXm/2+5Hms20Qn65dfNKkLX/j7ebLBI66vf9gy7aC9g'; b += - 'z1YuOeXQkL2pqvY6iWOrDh6q255r+FxbRWLeLxnhNbP7H7KuqyZxaN24WZvdLs/wrntF4sIl8UK'; + '/NtwnMvZrr1zQ74aBhSyOB+7aUzNrUtWGGXcsLAo9fHC+wTh10KbjlHYF3nVq7qbxmxFJhSwuBz'; b += - 'PhD7Xutd9JPGuM+s2F5ePWC6tqyPxuWlvWue2WvZiVB1hgDgrLi9sdtT5LQvqeCQecHH30Pxmoe'; + '0x72b2gW+Wz0S20dojzYgt9Z4ee3byghUvgxPO/DCnq0HfctpZOBHZPaI5wm2dw9EyLBYGjFoZ4'; b += - 'O319mSWNy/tlfQPKtj5+pcSBy7KFKierFg1m917iQ+FTK+zbkJ2ptIvTeJPy48vPDCpYklzvUiE'; + 'yJ4tmPV7Sw8Cn/Qa1/PMBOU1pNWOwO8qDlWcq59YZd7qQuBHNbYmCzkuTa6tfQk8c7urbXO2x/b'; b += - 'j8p93JYxBXVBNaHknjmjkCv2nTJjt71ESTu0Lny6v3rp4sy6qNJvP/CNad2EfdOTqjvR+IFZ9oc'; + 'o1kACe/evvXj3cl1Zbms4gfeeu2TWO/DOiQmtcQRecKrnvvPLc+dWtaYSuGxNRnEPSc2tva0iAn'; b += - 'uLgyY25JfQKJi9amjHHPLL+7v15G4s93kswHpm1afaM+k8Rt3x3/de7XRx9q6rUk3qs3lG3YvGs'; + '+4maY7OGvjqiutEgL3en3st7mfHrxtalUSeI+6vXr9pl27OG1jCDwtbIyEnpYxqWdbGYFj+Udc0'; b += - 'Xt2E0iaf1HJ3JSEqZ1KahiMRxgqOiZMPBM50bppM4vu3+2dMnxCwY3DCPxBVjPbPdc3+/r21YRu'; + 'tv3n+rfNp3A8b32zp4+IXJBcts8Ah8Ya5Pfo+DzXWVbJYHL9zzas/zA3bXlbasJPK9YObk+bcOn'; b += - 'LivU/2rqy4v664YQ2J543RTr6UtPHrxoZyEl9auqF4bnbEvhMNO0mcYWd5+Otb9tT7DQdJvFsol'; + 'DW01BK5fsr58bn7gr8fbdhI410j/0KdXrKl32/YT+BeBQBzfc+u5z23HCVxTMrqh9kH/RZ3azxK'; b += - 'Me32Xbh94YTJC4fN+py5aPOi20N50nM7NDe64RVQrWv4TqJr83RKBa7u5dFGapIbHEWKXy/a1J9'; + 'Y4d3H9rhBaqND+2UCX5qjyFnUo0d1aPttAuudRsa/2TWpNbO9kcDPzQzniFiP9o9tf0Hgs5OjZe'; b += - 'qqGaxC+drOfI2E8OjjW8IvH5yb1VnPMHpy82fCSxt9zx0UCHPVd+NtQZkPB1v4LOkhG27KIBdME'; + 'yz+6cvan9HYDux6YPBJrsv7GhvaUf8Ji4CzJLuW3m+HbDgeRCctjNYc/nJE0LXEP5l1Jx4XrgJJ'; b += - '7IbjZ3mrt9WfPyJMv+EspP/kybzNO9u2gtDnzvuYFdy5oQVPf/mzHOjPq4sIjEtJwH4xKCS9GXf'; + '3g7qG32vE+Fnv1Lu1A35u0wYp4afb7isAfRvhEkP/XZ6PNOY8tjiVsBEGSY+unG1R4Xr+QRczAE'; b += - 'QfWxxHjt9gdaB/vmmN5OqNLJL4B0G6tVri0LZd7MrJJGkPWKnVnrguLE19XUoSYCDIhs2np0vkv'; + 'Ceq22KRX76jlk4nFXjBDbz5+WbAy84+VxMIugqzfVDfdQ/zb1gPUadlb4o1mM1knx18n+gsYgS1'; b += - '26rIMcjBLkr3+Q0k32q8Bb5viDIEtcRXX53HXriPbkuBCvMp87rvBW95pijMhK/mJHtJHuD3mmH'; + 'H+H+2HHL8DWEkFkEGPzZfa5cTMUcXFRH42Yx8M9FL9GZvVELgsIKmxYtW5a30R5UEnpBbvHN0If'; b += - 'ZpK4Z27NksWrs0q7oFoST8gYs3NUHud9AjqaxLnN7+Wvqu63MxctIvGxk0uHzJk4ZOIcdDqJOw5'; + 'tNKjqGwAWd7xStaIzbWYCWEfjoiSUpcyamTJyDTiewz5AFdSdiXetq0HlkeasqvqTutJ1/Eq0k8'; b += - 'dcPpkXODpcnQeld+ShX8k7PSafwpdRuLHSSWLK1Z2//UhuobEbaYH3xUdW7q2Di0nccLKRavVSy'; + 'MO0qkUHlgf/dh9dTeCe0z1vuRxdsqYFrSFw6vKFq+SLaz8YYzsJfP7g07jYQ7d3C7D9BH7g1+2N'; b += - 'o/22M7SXzx0PN+cYer9gixgyR+FN7qvcOHusnR2AkSr81LuLb0Iv98Gnae6g3iWo76MNh+UQF2n'; + 'yduWyeHYcQKvKUy9tOQ872wWdpbkBrFWo98mGy8sxS4T2IvfteL2rqoHS7DbBF6w42Fq7IUb63/'; b += - 'cQhAreFVbtKHi3Fqki84OfHCXFXbm/YjVWTODRi/Zrbo5fWXsZeUcTiEWvWR0fnHHiJfSSx07Kw'; + 'BGgncN3Dd6htjljQ3YC8IbBC4el14+Mh9z7F35NnnSt9fmmZunMbAWwhsV5a41qCpawMPpxG2PW'; b += - '3TUzN01j4nUk9i4asM6qxu0yHyeNpBFP4eznT9ZYLe2A80i8nLdsVe1Sq6fxuC31/GOHlNt8j/J'; + '0Es58+Wm2wxBvnEngpt3JF8xKDx/F4J/L9O++MGzzrmnzcgsAT6teNGjowUD0N70Fg+zs1uG+j1'; b += - 's3IXEEy6tH5n4U4R+Gu5OYp975XhYdcvDa3FvEhcbIhL9lqXPPIKLSBy+d/qy5Q4B1+/goSTe6P'; + 'aE1uB2By9sDhzpWZs88jLsQ2G/P9MqlJs6Xb+J9CbzB/OHOObdMl73HAwl8o+DuXumhBc/1aeGo'; b += - 'x455y7jis+4REkvp17f7/y8IKXlkQ0if+zkTddrdDoyNnMkREUCfQYmrbLiDfSI4gRlzXBm5rg8'; + '9krr34+82fIchYqQUnjlBsTWcjElwWvwBmoE0eDqH/DGH3DND3jTD3jzfxgZeX00w3JfnrWA17c'; b += - 'iZ4cxO85W9GRn5747AcyvcQ8kND+UFCz0bhtzaRZ2akyflOGwF5IWRySD5K00IY/VrQpv5G7EB/'; + 'vz01goxV+yw/xwRHpPxl10vjV1WxpUtgYJbdHNNgX/as79azgcAuGZ2J10trmHyzBa+K+jf6Hcm'; b += - 'mMOIuzZ53pN+/te0toTDLxiuSdIhj8bpe4D+Tf4aZcsY5iH65zw9aoLbYVQejdgL+3M6k5vgIwD'; + 'sVVxPmDvp9WX+jsEaChT33CQ7aam8EqZqIIr7++oh6AZBz77+nI6cXe2vCOWNkHWmwG/Z9PUh+w'; b += - '3aIRvAvxTI/yYfv5v2wi9Q1atsSJ3xg7+u5nIEMFQMItKSWgnSIA7SMYwFf8yDFiDaDXf5y+i72'; + 'GcxcktEgx9i5BaRBjdR7/+2jVEndcpmGxDmqPf/nSSTwh8CpLCM1N78VLilrAlz4C/D5AvlSsU3'; b += - 'EO0WEEvr4+8CRboFCmxUhj/mYClCXNA/dGGeNo4nJfkNkTWupQswu549ZLpzV1M4uezRlXFHBGN'; + '+cflW5iDVBi+g4N9H36ONCtSGPkfpKc8YSH4rZVuCXU3h82fCghmCFTBHEBFqOeQK5b+xOpohEp'; b += - 'llrRX8oAjJwqnRauH+ZAhffmhByaxKkBW5cgjRqSUx5BC4I4q6jVqIR4NqMlm1cnYxsgkeRGkpa'; + 'JbnYggRPJ1VSoN6f5vXoOuaKqeZKraHB+ouT17m3HO0u5n5tDbmmv0pqtrCa2jOEtWtQOB3FYQe'; b += - 'MFfUtOzYseNfyyDZg6SS4qvhV7A8k7l8kloKuCd7cylHeB8C45sL4oMUHOV0vId0lObSWR2l/ZT'; + 'FFLOSBrEOFD1AkJXmLGeERuCDIqznkKoXBXNJk9CqtWdkaYgtdCeRQhZWPj8+fqyjdWiLOUvJ4c'; b += - '8b/y81VGaQ1CQMe+2OVS55jXaVRtN9x9jId0f+P2lfYEVm1+KTpEpk6vhRnFEDk3zSK+OjVhAr0'; + 'rgVaZPO4fEgBu7pdhzSEf4mVnCj5pL3QA+j0hk1l9xanziXLEv63/ipmUuWG0akqauGuWS9rtJa'; b += - 'b5o7jeXG8+fxTf15c7xhv8548hAbiM8eB6eHv+ubzG/ahNwzhBu4ZteW8OdQgvp1dcgjyBQCAU+'; + 'LVxL3d24HrZD+DeaY8exAw9eMa/YmmNt99NvBRok+FaG88gVZTE10+IX8vl8Ad+J78x34bvy3fj'; b += - 'AsCBCJBoCBIIBZIBMFCgVAo9BcGCEXCQGGQUCyUCIP9Bf5Cf3//AH+Rf6B/kL/YX+IfHCAIEAb4'; + 'ufA++p4AvEAicBM4CF4GrwE3gLvAQeDrxnQROTk7OTi5Ork5uTu5OHk6eznxngbOTs7Ozi7Ors5'; b += - 'BwQEiAICA4ICxAGSgGCRQCQU+YsCRCJRoChIJBZJRMGBgkBhoH9gQKAoMDAwKFAcKAkMDhIECYP'; + 'uzu7OHs6cL30Xg4uTi7OLi4uri5uLu4uHi6cp3Fbg6uTq7uri6urq5urt6uHq68d0Ebk5uzm4ub'; b += - '8gwKCREGBQUFB4iBJULBYIBaK/cUBYpE4UBwkFosl4mCJQCKU+EsCJCJJoCRIIpZIJMHBIInBIP'; + 'q5ubm7ubh5unu58d4G7k7uzu4u7q7ubu7u7h7unB99D4OHk4ezh4uHq4ebh7uHh4ekJsugJkvcE'; b += - 'pgIDoYBAsGTn8uB6h0UkBThPywPOh3+3QuVR4CJrVDKvgf/ozyvJgU1bRWrZOnSTM1sLyNzyayq'; + 'UXuCYJ7A6ftvuoHiz5Ani+eQZW6gkyux/P/yTxPfaTqpH6SUq8RZQolCrJUWg02mpcG6bHIVxNr'; b += - 'biMeAab2v39Szo1mYpUuV+WPCt1GNzzyc6j2sYQun9Qw50QuK2h1tKvl/FFpJ5AdmpSRCN2+ZI8'; + 'mr07zifMyh5H2XzfPJ9vqbEpnRIM144dcKIW7W0rQ8akmrukM5JssuK9E3H8CnKgbT17NJ9sats'; b += - 'ql3vyKMI4CmfciVNN82vzqM07IzPqfDUMzImDV+qpd5qEIgECJFvRabfKZ/SRKTHIeoQgQ5KitF'; + 'CAsHpJ+oS7gWQMLgvIYxma92R48h2RkgL2TqJngUAEQOKAX1im4QvIFXhqD48MSqUL2IpIJiY3m'; b += - 'lQxfQUSmydFkULbYkn6L8oTZOaX90WkG/JlPJqcMPsg8gjzSgihe5o/cnr5n5FOVdQT5Fl702h3'; + 'Ig+Rqjf5EipZcbvvE5eQK7oLwVPuG0tovjAfzqucG8BuXvgTyf7iDbupoUT6OS2uQa7MsjxXYMz'; b += - 'pfh/j6+g4l1RDpEgI90J96K3gHXvwz+ZTm4XU6L8b3PUWerlBCPVVYRB7wxpOfO0xORQ93bkBYY'; + 'f8AiCqc4ODgMIc7BULUNOMp33Af+Ah1bXEHuGOVXkPWi6c8Z4uwcKdwghtVtDX/Y8AqGicniw1U'; b += - 'iSlFdlsJKVRaT+SKkOjDOMBjhRuXqmpeEE9d+DDLR8NSBj5nRK+B/XNB08yRcb0RAJZcPWnHElp'; + 'bELaqgjyWs7mCPNKzvYL8Hpo4NIpsQsIYPk9zRMubl0PouOVIFXCc51mTeyQ2RI40+WkET7iiyV'; b += - 'ZOaAK7OR7L+2Ga3a2LbXjKTa1yf6AxN/8atTKki6sWy1QkluZNMUzSOpnU8u/ZEKI3aiKTcRFGc'; + 'lIrup1WEgef9HE/dP6pcYs34Vk+2WipHLcn/yqAO+WicSOxF6W5gIL4A+E60mNzRZa2Iw6ooCgO'; b += - 'wmEyMxWSzONZcFzNHnpO5lYW5JWGFN2tmw7FHHYjmqCPuxHJGXTA3ez7eHvcx80UFuBDzR9djG7'; + 'J3OYGBMBovJNuRY6JhyzXQN9Lj6NAO8Q4eObGPUhNYZNcXNmOaoBdbVmIf3we11HFA+LsCc0HXY'; b += - 'EyYhP7D6yWUY814AbO5rz8aTNKBQMGTps+y+WeheVP0bV1vn6dE4YmPSqaMXP2nI3b9x84WXnm7'; + 'BqyatpH1BWumt2JteDt7U2HRtBkr+YmDp02fZXFHT39geHOLg2P/1CFpD8pmzJw9Z8O2vftO1J4'; b += - 'K/VTwwIYd3MUygSh3ToGNVzaNFM8HDn/gOVZy9eqn6CEOYW5NOQDt26R/VMlMmLZi9dfubiJXNr'; + '6/Vvjo3aEZtjBRuDi7uXtExo2pGwmeLlz777a0+frGx8hNF094q2Xd1BwaNhQkbhs9pKlp87X6x'; b += - 'T+AUNWBIQmKSTD5j9kYQ5OSZ+9VP3ppbd4uSyfVFOw4eOnzj5tt3hROmrVl36PDJUxcv3bkbuaj'; + 'raAKfQxJTUoWki8YzZG0CQE6fuNj56pWsYFCoSq8u27z946Mq1V6/HT5i2eu3BQydO1t+8FbLww'; b += - 'iQuXFS1ExsQMGJSZNmVm8ffeew0crT920tncYkvD5S4NBnzXi1/sWbkqVi2vSmLFbto47cNDeoY'; + 'Lna8/WhkVGJSUPTpsws3/bL7kNHak9eMzQ2SUn98LGtXZ034re7el2lMgvLtOKxm7eU7NtvbNKl'; b += - 'Vb9x4xsQMHJySOHbfr5PUbVW/ffVJrirW6BW19/dZv3XP41KWb95eELVwkKHa7ev2iISZ28BAW2'; + 'a/CAyKjByalDx5bsOnH5yu1Xr9/LFeVK1YJeDo7rtuw+dLL+2t3FvhUL+eVdL14+3x4ZlZzCZOk'; b += - '9Kqnd+bGqVK3LFzl26zZsel606fuXzl1u2nDQaEn9Rq/H1ifATbmWBaF5Rb6Dcx3DgFzrgjGyX8'; + 'b9HZ82SSVufv09w+aNTs2W1V3quHC9RuP29oRXlq3cXdp4wJZ5jSGYWmNnnojvSu71Bw3ZaE0R5'; b += - 'CBHBwlEWk2XN7W3ZjBXPwgkXLgdn4ywcw3GcRzBwMyZqYceIYTmzBrAwpr15b6Ir7oOjhDXTkhd'; + 'oLjYmjTAbTkBOt34EZz8RpFhw2zsKZOIbjOJdGx3UYqJ4RPZJpzkxkYgwTbjQtALfHUZohQ5/rR'; b += - 'CuLZJ4mcRw9voTzPGb8OdmOPr8UEse05zji3PljecyWU6MQex2jO6c70JHoHiQjNvwolphuvLwS'; + 'bPsmcbLow3vqa6jj9uKmzHGteJJTGN2Z3YnbifucAaHYcZIYvahB3PsaFwaigt07GhmDB1cXQNe'; b += - 'M/YS9cv4YdilvioSwJuz1jvMG6OdvP2gdvadnSUj+dGL/Q0cxu8jyGH6MDC7NoztEfaqXl6X9x4'; + 'OQoicPVqVl9cH+/L9GD1oY9rN+zMcjS0x630rfTV02njKkx1jCbPozvSvZmYXme2+mA3JVd91Yx'; b += - 'jH0Bob+Pu/9clzMKUiw1e9l688xuM074FymhN2dzWNqzVrgg4lBHH1hcxeuPSea0E9lblrDcyCE'; + 'LV7fT1Xe5b5bi7uzS1E7qPSz1GTqnszfOYXiwgllchlKnC55MS2Krx3e24Bizw2nqqYyNq7kmNM'; b += - 'q4iCO21ZPAZDv86q4BML5XsxwdMZhP4Q7oxbmiNMFAWZwxgsFsZmczAuwwyzIKxQa6wZw8baFrX'; + 'EKWunNXkwuna5ea1D6nonybBng7Qya+iBujuvrIgwUBYXD6EwmxmKxMQ5dB9OjGaCGWAd6R8NOq'; b += - 'DHDBHcxeGK9sdHU5kYFvxg9gl7Ap2nXeD8wt2E7uDPmA8xJ4Sz7A3/LfEVww0VJTXrkOnmNjiFS'; + 'BFmgpnqWtAtWV3RHuhwWi62Bd+G7cfqsQvYZe4V9lXsGnYTvUe/jz2mPcFe8l7RPmFf8GaU29u7'; b += - 'tWjpo2d0Hpjv0TtzNZnKCOnfp/uHyFsG0eJO4/YFzZlq0VgQ+aTZoyc8W3lggbYkysTJ6we4+zC'; + 'X2RU+bJly0dPm7tg5fa9E7cxmGw3n34Jbxsu0Dp1dnNPSCyp3rzlgOu9DpOmzFz2tTHCthgZJRK'; b += - '4vNNbN1CAoO2bDx1m2OeNbsDSxuh05piuI5qqTDb2oGp3ysMyxZ6uvXziN+ecmq1WvWb9i8/+AJ'; + 'n/rLb3ILJ4uh0MnHz9Fq/4foNtvus2euZHO9+WTnlcwxlaYdeNiVnvGtpj41bvMTBsbd1/NKqFa'; b += - 'phnPzjWkc7c+69afv1DCcnRq1aZT56evagwnKwl+6zZtPQIkIZE9o3vHxfeHjS45VZ6WockbM27'; + 'tWr1u/ae/+4wwdrpGlV/+gQWvXnT1XxTQ169azX//HL5raT9TSeN179rJ29vAKCQuPjo1PgG0vP'; b += - 'qmrKt245c3rJVqZqb2GoUAyd88DQc9fPVj3fFhZYuhDunBaM9I4Kw8NKXMd0Jd8KDLTKL6Vog5t'; + 'VOclasoLC6Zurp6y9bDDZu3SGUH5w7tNpqO0+zxLBx1dFCPs8QF+ha0Huwu9D70QJqerbqa0YPW'; b += - 'hz2c07dAvGU9kcgT2jJe7MQMMkxE8MP4LL4rDC+O0IHicID2E4sQgeq3eUOMA8gOXL5ha07Rvjw'; + 'g2bNctGJDCh1ZxtzWJ29gzzxTBabb0y3ws3pqK8HbSDdkcZhspm+vN40LtsN96KbMWlcZnSou7O'; b += - 'fayd2rrYuvAiQERRJg7srjMSHY7js6sc7gXswODy+zDRBlWOEM/LaVFJJurX5fYqpsZl2luE8Lk'; + 'uM9OBxSntFTOwD8vW2KyXRScTdiRIIFDXlMlhhLB6s1U6/v1sGd50DmMQA6Ub4HT1tIwuISyOeu'; b += - 'BnkTDvp9obI4XiSH272bcyQ7zjyqgNWd64r3iBLjFmwuM5jFLQhy1O9BLf3NC5em6cz0J6ZGp5o'; + '3QbkE6HIZuRy8Gx82OZqL+ta8olhvC5gQHmYewYnVDmRz1h2COJT4g1B3XY3EYnkxOqZsp0xu3S'; b += - 'X+RVfGd9j1b7xwSwvIoHZltud68GwGb9tiPwnIphlHQbbwMKv7KJfvDilTwsCfHBrgl0wfQqRwT'; + 'ED1nXTHL8lS6aiPTw3P1C3jGxiXV48bsOLXcZ5MW1oqoxcnmGNN7zhua4p4IM2TaegLm0TFJ1bZ'; b += - 'DHOSyrOck9ONpQ/Weuhp1t112/xJY3gOOon1TQA5/QxdKuqLeb/mF7/Q0f3InACsLcrEMYaNED/'; + 'VVv2yselzvqoJUOPxiqdPoWWS9fF2UyDOekD2Mq+6g8cBSvfKHgU7AqJbFP1pNIB+AR/faOy6K4'; b += - 'RfPaIJLYIXWEdEd9cdCmSgRz3AWYQUW3oSM15+r3yJxNfcmOKDdM/VLCm+BTJvjWt4gFniLLHmE'; + 'MhvpKH3o/KzTfHjejYaW+XQ296Ghpg+2439UfbcJpHBo23jAw3Ed9tC8DpcXTzV2wUj07moibwF'; b += - 'BGTGg90qpqAfzw5n4CyOK27GYHK5TDboVfXn2nCLmP+yw6avSSRXHdlnF+itSLpDuMbxaISNdHd'; + 'Fv9rDUtaOxQY9gqBePv04zxHXxAloaA/QvfS7NAxTOmtUtsjSOawny4sbSA17ZTPWZnpwyxl/yc'; b += - 'G3JemOP7huidFkU5PE5EqPfUBJPghSfTHlLQq6gT/B6s8RbpCCxevIsFfH6rgCS3cb45TZcnhGo'; + 'OqZBg/GADb+412tfwonhhsVJMMftsyA4O12lIySqhr91S2euobnp3OkjJxsUjIF8izwD2WmGpSU'; b += - 'NcjJAfcoE35PkmZIXUqsgjjyQwwDee1xUilPJlIcFHZjOSkaE2JUgzB74bj5/sVuNd0t5LwPdWr'; + '9f8siEtl5OmLn8wciYtjwMzRhf/nl+S5qH48fpy8KFguywuVaqYn38mMcL5O+SCujyP8UB75IG/'; b += - 'XvgjW1I9mlRm+yLNPCDVhiSg+rRh0Eot6XY3fyheJOFNNiv+apggcvDHh9atIx+O/xhbKyqZe/l'; + 'W1FFA+NTgVGp3Cwr342k8ZDY9HRnSsQrpYMLryuWld22yq+pjy+fZydbes8PWp9t3aU53QNp4bs'; b += - 'B1f1Ri5J+8ivrOqD3GnZF3nwME7wUBq/5dGq/pefPezPR5QD3qKGAUg2wkJ8UBTFwB8aaSaws0L'; + 'va091a0ftuKMfKvYfuffeNekJPx84rPPkWwpC3XVaE+7oIo18NXzEoSmYVs3T/ihikXhgrvrAiF'; b += - 'loGPFMJRojbZwHmIWwuGgzQmUA/ohRns8lO3VHOWLQQCCDTpQFhdzRUNgcIINvHAxJxTDgkGHRW'; + 'rlpFYfcux+/+YEw8UWjVVLDkxVJPORl0iu0JBnJR5iIPYqiGPhHQ3T4RgaoGHBrDENp3dEu5ik6'; b += - 'Cgw0ZbYDhqBjEDeEBtMXvQnYXAuIBvFs7FWqAdQFgeCOkBxAOpoPGgBAszI6XCJIFIMYhdsGDse'; + 'Xmw22pmGsgFzo/fB+7JsO6M8dxCAxgJcmcnBLFEvGJzGAl44mBmKYZ6AC9IwMAqgXTAc1YGYDjy'; b += - 'yyuaCRKoEA4ykb7oBiLx05BMY4ZsyfmjMKf2AIFMTLMUHcOmkagTJAozBEjcCvCHNwyUUsUlDvu'; + 'gnTBjwCO9YFrANxPnYF1QbxCWC0Jag+hBrDgdsFAmpkPECrMEEsUgtsA8sW+pWKIhKA0FkaMsdB'; b += - 'irUAf2EYymKjmBkHBcMIqsNaoTk4gXFQJn4XFAJILQtKxNhMLoYK3ISEAGAG6sHhYXyQSRSXoGR'; + 'CKMbmsDBRj6zBDMXNCS8NdDwUp0nXQHmw0i4YyQKYwU4yGG9B0wU8Gqo+CusctsS7g3xdDmSwU0'; b += - 'C8BA2hi3CUXOUBSPEscowBD3eEsFnoMl8hKnAEALl8rHeGAI7dNQRY6ALMadm5mhbtqOZLy5AYZ'; + '2GjYGxCVVg3dCROw9goA78FKgHklgljxFgMDobyuwpofIDpqDWbi/FAIVHcAyUygnuxMGwhjuqi'; b += - 'G1Q7uCkscwHsiXHxoApGIYA+TbC2Ojb2CxoaABW1nBpRr6CJ3PQHCQS8IDJ9C1QD6CLTYTEqPQI'; + 'TJggjtX6IugxKwSfgabzEEYOhtBQDg+LxhA4SqCmGB2twMw66KK9WKY6DjgfhVXWGw0ANY9hXFA'; b += - 'EtPkEsuLgQSWWhH3J2BsjuhPEzEAW84moTDgmSiJSjOtiNLFUXtUQsWzjjOhhlxgCXKhJUEK+Al'; + 'uR9QZxIphdFBuW4yFvoTVhoJGbmAAp3foA3Q+HcFBKWnWOA1dA+JHsGg8WEdAG4266duAcnJwAY'; b += - 'SBcTXJ2xeDZ0GY6SgVE5DiqUgXBQ7BOoD9Aa0FkgNgLlcz2YZC0xMdwXFDbCAoWB9rUHCQFSRjJ'; + 'iTifrgPegoqx/KxVzYgD2gaTisSlAp6FIUZxkRNYuixqgeE6cfY8HCmMBaZcAPBT/Cc5A3BniaY'; b += - 'xKBWUYCSMCgX5AGMpgnYm+sB7X8wBAXkmGGw2xmpBzMMRMeHPRi1QewZqCSRZk1IYoMWiHQmElc'; + '/Es6DIcJYKjYhx8VDrCRrH34JuAFoHOAunRUB7HmkF8KQaGO4AKB4Ig8B1jDLICYhnFwGGsoBZD'; b += - 'VCkvVvkdRMlQZ+QEahzFFlgIl641NjsGr4pjpkpOiEhqjHEDMQ+xOUk61WyXSpYP2KsSGvtU6aL'; + 'YFIoAr6uC50Of6EMfQQM2AjanzYIuCMOmAkC6oBGZ7EwZhfaPBxxpzmxUD3UmI7qg1gNiRjpIrQ'; b += - 'scISIqN4F3BOowHnsOzdrnMJyWfYJCa3m2EvkECX4GPEi7IQRwe3zS/+WBd6e8j8PcRijwZqVBe'; + 'KhPGhgRpg5jGRdPUrxO/eiaOIDooji1B2vlwmUmWK5QqMJQEzGJUwW4zSYlQKJcIFr+CRBbHIPq'; b += - 'f6HIF/jle/yATDszM4f65wMiGS5P1fLBQlOSKhP5pwZIAuViYUpQgDxQJhXLRcH+YCmZmpYWJBU'; + 'OIphciyxNnyMUFvEzojyFwdeA7uNOJc9I9BQ7uAge+vRRO3CVFPOuv56Z5YI7rbM93ted72DAKh'; b += - 'Hy8QpnsxckBedhinwFQb7CnjwyNsnBSwK0uXKZlB/Syzie/iLU8VSkUwQ5Im0stRC1Q1tUpqc/N'; - b += 'aOBm1vmUWpe/ikZ6pSwJru/wGcYyJi'; + 'BLgncF3EHg68LnwJIN9BpD/s8XSDvD6LA83EFDk4eGU6emeYYPY6ZMGJ9KyxMTNcwqsj34eecrF'; + b += 'PlsiywDTwz4seMecvbhQ+f8A9ABijQ=='; var input = pako.inflate(base64ToUint8Array(b)); - - return init(input); + return __wbg_init(input); } diff --git a/packages/constants/src/lib/constants/constants.ts b/packages/constants/src/lib/constants/constants.ts index 7d2e089487..213ba3b5df 100644 --- a/packages/constants/src/lib/constants/constants.ts +++ b/packages/constants/src/lib/constants/constants.ts @@ -601,29 +601,17 @@ export const SYMM_KEY_ALGO_PARAMS = { * */ export const LIT_NETWORKS = { - jalapeno: [ - 'https://node2.litgateway.com:7370', - 'https://node2.litgateway.com:7371', - 'https://node2.litgateway.com:7372', - 'https://node2.litgateway.com:7373', - 'https://node2.litgateway.com:7374', - 'https://node2.litgateway.com:7375', - 'https://node2.litgateway.com:7376', - 'https://node2.litgateway.com:7377', - 'https://node2.litgateway.com:7378', - 'https://node2.litgateway.com:7379', - ], - serrano: [ - 'https://serrano.litgateway.com:7370', - 'https://serrano.litgateway.com:7371', - 'https://serrano.litgateway.com:7372', - 'https://serrano.litgateway.com:7373', - 'https://serrano.litgateway.com:7374', - 'https://serrano.litgateway.com:7375', - 'https://serrano.litgateway.com:7376', - 'https://serrano.litgateway.com:7377', - 'https://serrano.litgateway.com:7378', - 'https://serrano.litgateway.com:7379', + cayenne: [ + 'https://cayenne.litgateway.com:7370', + 'https://cayenne.litgateway.com:7371', + 'https://cayenne.litgateway.com:7372', + 'https://cayenne.litgateway.com:7373', + 'https://cayenne.litgateway.com:7374', + 'https://cayenne.litgateway.com:7375', + 'https://cayenne.litgateway.com:7376', + 'https://cayenne.litgateway.com:7377', + 'https://cayenne.litgateway.com:7378', + 'https://cayenne.litgateway.com:7379', ], localhost: [ 'http://localhost:7470', diff --git a/packages/constants/src/lib/constants/defaultLitNodeClientConfig.ts b/packages/constants/src/lib/constants/defaultLitNodeClientConfig.ts index 1f95c9a547..41c4606a0f 100644 --- a/packages/constants/src/lib/constants/defaultLitNodeClientConfig.ts +++ b/packages/constants/src/lib/constants/defaultLitNodeClientConfig.ts @@ -16,6 +16,6 @@ export const defaultLitnodeClientConfig: LitNodeClientConfig = { 'https://node2.litgateway.com:7378', 'https://node2.litgateway.com:7379', ], - litNetwork: 'jalapeno', + litNetwork: 'cayenne', connectTimeout: 20000, }; diff --git a/packages/constants/src/lib/interfaces/i-errors.ts b/packages/constants/src/lib/interfaces/i-errors.ts index c021b3afae..6a12cf6fc2 100644 --- a/packages/constants/src/lib/interfaces/i-errors.ts +++ b/packages/constants/src/lib/interfaces/i-errors.ts @@ -4,6 +4,7 @@ export interface ILitError { message?: string; name?: string; errorCode?: string; + errorKind?: string; error?: ILitErrorTypeParams; } @@ -15,7 +16,7 @@ export interface ILitErrorTypeParams { /** * A standardized way to return either error or success */ -export interface IEither { +export interface IEither { type: EITHER_TYPE.SUCCESS | EITHER_TYPE.ERROR; - result: any | ILitError; + result: T | ILitError; } diff --git a/packages/constants/src/lib/utils/utils.ts b/packages/constants/src/lib/utils/utils.ts index 965798d240..4fc38c22b5 100644 --- a/packages/constants/src/lib/utils/utils.ts +++ b/packages/constants/src/lib/utils/utils.ts @@ -1,30 +1,30 @@ import { EITHER_TYPE } from '../enums'; -import { IEither } from '../interfaces/i-errors'; +import { IEither, ILitError } from '../interfaces/i-errors'; /** * * This method should be used when there's an expected error * - * @param { any } result + * @param errorMsg is the error message * @returns { IEither } */ -export const ELeft = (result: any): IEither => { +export function ELeft(errorMsg: ILitError): IEither { return { type: EITHER_TYPE.ERROR, - result: result, + result: errorMsg, }; -}; +} /** * * This method should be used when there's an expected success outcome * - * @param result + * @param result is the successful return value * @returns */ -export const ERight = (result: any): IEither => { +export function ERight(result: T): IEither { return { type: EITHER_TYPE.SUCCESS, - result: result, + result, }; -}; +} diff --git a/packages/contracts-sdk/src/abis/AccessControlConditions.data.ts b/packages/contracts-sdk/src/abis/AccessControlConditions.data.ts index cc1979073a..e79b792233 100644 --- a/packages/contracts-sdk/src/abis/AccessControlConditions.data.ts +++ b/packages/contracts-sdk/src/abis/AccessControlConditions.data.ts @@ -1,5 +1,5 @@ export const accessControlConditions = { - "address": "0x8b353Bb9E26F2c2B8155f377982537C39AD01A1B", + "address": "0x4595b678a795244F7D9eFFda31c5CE547A87B5c1", "abi": [ { "inputs": [], diff --git a/packages/contracts-sdk/src/abis/Allowlist.data.ts b/packages/contracts-sdk/src/abis/Allowlist.data.ts index f864571cf0..6831d0ae3f 100644 --- a/packages/contracts-sdk/src/abis/Allowlist.data.ts +++ b/packages/contracts-sdk/src/abis/Allowlist.data.ts @@ -1,5 +1,5 @@ export const allowlist = { - "address": "0x81FB8e997E0908AD5792e6F8737245A1D78706E6", + "address": "0x741EfB8E9ddb8A0653D01CE737eABc148b676036", "abi": [ { "inputs": [], diff --git a/packages/contracts-sdk/src/abis/ContractResolver.data.ts b/packages/contracts-sdk/src/abis/ContractResolver.data.ts index 9f6c8032ef..7f679e59be 100644 --- a/packages/contracts-sdk/src/abis/ContractResolver.data.ts +++ b/packages/contracts-sdk/src/abis/ContractResolver.data.ts @@ -1,5 +1,5 @@ export const contractResolver = { - "address": "0xFCB3d8a54680e9337e3c8E60adC02F2aE8455A71", + "address": "0x1B3674612dD473Fa03598bC9F9497F4670F70e4F", "abi": [ { "inputs": [ diff --git a/packages/contracts-sdk/src/abis/Multisender.data.ts b/packages/contracts-sdk/src/abis/Multisender.data.ts index 68f66bbd8c..b6bc6a79f2 100644 --- a/packages/contracts-sdk/src/abis/Multisender.data.ts +++ b/packages/contracts-sdk/src/abis/Multisender.data.ts @@ -1,5 +1,5 @@ export const multisender = { - "address": "0x0EdD020f421adbB57D3efa5d2045a75E40385464", + "address": "0xB8575C724a18138E8c14470dfdf350B69b4d5921", "abi": [ { "anonymous": false, diff --git a/packages/contracts-sdk/src/abis/PKPHelper.data.ts b/packages/contracts-sdk/src/abis/PKPHelper.data.ts index dcd7384b80..0988455ece 100644 --- a/packages/contracts-sdk/src/abis/PKPHelper.data.ts +++ b/packages/contracts-sdk/src/abis/PKPHelper.data.ts @@ -1,5 +1,5 @@ export const pkpHelper = { - "address": "0x8bB62077437D918891F12c7F35d9e1B78468bF11", + "address": "0x85E8860FB3Ad3517151C8da5E5F4Bcd626CCbfD6", "abi": [ { "inputs": [ diff --git a/packages/contracts-sdk/src/abis/PKPNFT.data.ts b/packages/contracts-sdk/src/abis/PKPNFT.data.ts index fa1748fe48..418b7f6ead 100644 --- a/packages/contracts-sdk/src/abis/PKPNFT.data.ts +++ b/packages/contracts-sdk/src/abis/PKPNFT.data.ts @@ -1,5 +1,5 @@ export const pkpNft = { - "address": "0x8F75a53F65e31DD0D2e40d0827becAaE2299D111", + "address": "0xa4bbAAf3aD9Db1B3f1f6fe38af60AE228f6DF153", "abi": [ { "inputs": [], diff --git a/packages/contracts-sdk/src/abis/PKPNFTMetadata.data.ts b/packages/contracts-sdk/src/abis/PKPNFTMetadata.data.ts index 47855155c6..89b5d339a2 100644 --- a/packages/contracts-sdk/src/abis/PKPNFTMetadata.data.ts +++ b/packages/contracts-sdk/src/abis/PKPNFTMetadata.data.ts @@ -1,5 +1,5 @@ export const pkpNftMetadata = { - "address": "0x4f7dBAfD2D9fF2bD4b2B00D470eCbe673e49c4D3", + "address": "0x3D7eA77F138329A446db9AD8f17cf7a3B9CA58FF", "abi": [ { "inputs": [], diff --git a/packages/contracts-sdk/src/abis/PKPPermissions.data.ts b/packages/contracts-sdk/src/abis/PKPPermissions.data.ts index 144ef8a5f1..69922a9c54 100644 --- a/packages/contracts-sdk/src/abis/PKPPermissions.data.ts +++ b/packages/contracts-sdk/src/abis/PKPPermissions.data.ts @@ -1,5 +1,5 @@ export const pkpPermissions = { - "address": "0x4Aed2F242E806c58758677059340e29E6B5b7619", + "address": "0x35daf1e7FDf12417aFa8d8deC1fAA874ef4492d9", "abi": [ { "inputs": [ diff --git a/packages/contracts-sdk/src/abis/PubkeyRouter.data.ts b/packages/contracts-sdk/src/abis/PubkeyRouter.data.ts index 974d0b1796..be8031c504 100644 --- a/packages/contracts-sdk/src/abis/PubkeyRouter.data.ts +++ b/packages/contracts-sdk/src/abis/PubkeyRouter.data.ts @@ -1,5 +1,5 @@ export const pubkeyRouter = { - "address": "0xB35cC6CaB1501d5F3b6b8fcF3215898C9d03E981", + "address": "0x1c5B708A171602A11895D727a64aeE2457E3Ef60", "abi": [ { "inputs": [ diff --git a/packages/contracts-sdk/src/abis/RateLimitNFT.data.ts b/packages/contracts-sdk/src/abis/RateLimitNFT.data.ts index a6b57f0701..65a4cbd512 100644 --- a/packages/contracts-sdk/src/abis/RateLimitNFT.data.ts +++ b/packages/contracts-sdk/src/abis/RateLimitNFT.data.ts @@ -1,5 +1,5 @@ export const rateLimitNft = { - "address": "0x2D0f767eff47b44626832EcD2fda705eB9797c38", + "address": "0xC498AeE83EF44bBD9E3C27b95482E3261Ec611D5", "abi": [ { "inputs": [], diff --git a/packages/contracts-sdk/src/abis/Staking.data.ts b/packages/contracts-sdk/src/abis/Staking.data.ts index 1c2b333960..2b1df502cb 100644 --- a/packages/contracts-sdk/src/abis/Staking.data.ts +++ b/packages/contracts-sdk/src/abis/Staking.data.ts @@ -1,5 +1,5 @@ export const staking = { - "address": "0x433357a14c35815E6A32758fe95c93380D194aaf", + "address": "0x4809A30149958a95b925bb5315cb0F550E166272", "abi": [ { "inputs": [ diff --git a/packages/core/src/lib/lit-core.ts b/packages/core/src/lib/lit-core.ts index 41b6e1a44b..1ba6db1061 100644 --- a/packages/core/src/lib/lit-core.ts +++ b/packages/core/src/lib/lit-core.ts @@ -8,54 +8,41 @@ import { hashSolRpcConditions, hashUnifiedAccessControlConditions, } from '@lit-protocol/access-control-conditions'; -import { wasmBlsSdkHelpers } from '@lit-protocol/bls-sdk'; import { - defaultLitnodeClientConfig, LIT_ERROR, + LIT_ERROR_CODE, LIT_NETWORKS, + defaultLitnodeClientConfig, version, - LIT_ERROR_CODE, } from '@lit-protocol/constants'; import { + isBrowser, + log, + mostCommonString, + throwError, +} from '@lit-protocol/misc'; +import { + AuthSig, CustomNetwork, FormattedMultipleAccs, HandshakeWithSgx, - AuthSig, - JsonEncryptionRetrieveRequest, JsonHandshakeResponse, - JsonSaveEncryptionKeyRequest, - JsonSigningStoreRequest, - JsonStoreSigningRequest, KV, LitNodeClientConfig, - NodeCommandResponse, + MultipleAccessControlConditions, + NodeClientErrorV0, + NodeClientErrorV1, NodeCommandServerKeysResponse, NodePromiseResponse, - NodeShare, RejectedNodePromises, SendNodeCommand, + SessionSig, + SessionSigsMap, SuccessNodePromises, SupportedJsonRequests, - NodeClientErrorV0, - NodeClientErrorV1, - SessionSigsMap, - SessionSig, } from '@lit-protocol/types'; -import { combineBlsDecryptionShares } from '@lit-protocol/crypto'; -import { - isBrowser, - log, - mostCommonString, - throwError, - is, - checkIfAuthSigRequiresChainParam, -} from '@lit-protocol/misc'; -import { - uint8arrayFromString, - uint8arrayToString, -} from '@lit-protocol/uint8arrays'; export class LitCore { config: LitNodeClientConfig; @@ -308,248 +295,6 @@ export class LitCore { }); }; - /** - * - * Securely save the association between access control conditions and something that you wish to decrypt - * - * @param { JsonSaveEncryptionKeyRequest } params - * - * @returns { Promise } - * - */ - saveEncryptionKey = async ( - params: JsonSaveEncryptionKeyRequest - ): Promise => { - // ========= Prepare Params ========== - const { encryptedSymmetricKey, symmetricKey, authSig, chain, permanent } = - params; - - // ========== Validate Params ========== - // -- validate if it's ready - if (!this.ready) { - const message = - '6 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; - throwError({ - message, - errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, - errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, - }); - } - - // -- validate if this.subnetPubKey is null - if (!this.subnetPubKey) { - const message = 'subnetPubKey cannot be null'; - return throwError({ - message, - errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, - errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, - }); - } - - const paramsIsSafe = saveEncryptionKeyParamsIsSafe(params); - - if (!paramsIsSafe) { - return throwError({ - message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - } - - // ========== Encryption ========== - // -- encrypt with network pubkey - let encryptedKey; - - if (encryptedSymmetricKey) { - encryptedKey = encryptedSymmetricKey; - } else { - encryptedKey = wasmBlsSdkHelpers.encrypt( - uint8arrayFromString(this.subnetPubKey, 'base16'), - symmetricKey - ); - log( - 'symmetric key encrypted with LIT network key: ', - uint8arrayToString(encryptedKey, 'base16') - ); - } - - // ========== Hashing ========== - // -- hash the encrypted pubkey - const hashOfKey = await crypto.subtle.digest('SHA-256', encryptedKey); - const hashOfKeyStr = uint8arrayToString( - new Uint8Array(hashOfKey), - 'base16' - ); - - // hash the access control conditions - let hashOfConditions: ArrayBuffer | undefined = - await this.getHashedAccessControlConditions(params); - - if (!hashOfConditions) { - return throwError({ - message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - } - - const hashOfConditionsStr = uint8arrayToString( - new Uint8Array(hashOfConditions), - 'base16' - ); - - // ========== Node Promises ========== - const requestId = this.getRequestId(); - const nodePromises = this.getNodePromises((url: string) => { - // -- choose the right signature - let sigToPassToNode = this.getAuthSigOrSessionAuthSig({ - authSig: params.authSig, - sessionSigs: params.sessionSigs, - url, - }); - - return this.storeEncryptionConditionWithNode( - url, - { - key: hashOfKeyStr, - val: hashOfConditionsStr, - authSig: sigToPassToNode, - chain, - permanent: permanent ? 1 : 0, - }, - requestId - ); - }); - - // -- resolve promises - const res = await this.handleNodePromises(nodePromises); - - // -- case: promises rejected - if (res.success === false) { - this._throwNodeError(res as RejectedNodePromises); - } - - return encryptedKey; - }; - - /** - * - * Retrieve the symmetric encryption key from the LIT nodes. Note that this will only work if the current user meets the access control conditions specified when the data was encrypted. That access control condition is typically that the user is a holder of the NFT that corresponds to this encrypted data. This NFT token address and ID was specified when this LIT was created. - * - */ - getEncryptionKey = async ( - params: JsonEncryptionRetrieveRequest - ): Promise => { - // -- validate if it's ready - if (!this.ready) { - const message = - '5 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; - throwError({ - message, - errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, - errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, - }); - } - - // -- validate if this.networkPubKeySet is null - if (!this.networkPubKeySet) { - const message = 'networkPubKeySet cannot be null'; - throwError({ - message, - errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, - errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, - }); - } - - // ========== Prepare Params ========== - const { chain, authSig, resourceId, toDecrypt } = params; - - // ========== Validate Params ========== - - const paramsIsSafe = getEncryptionKeyParamsIsSafe(params); - - if (!paramsIsSafe) { - throwError({ - message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - } - - // ========== Formatting Access Control Conditions ========= - const { - error, - formattedAccessControlConditions, - formattedEVMContractConditions, - formattedSolRpcConditions, - formattedUnifiedAccessControlConditions, - }: FormattedMultipleAccs = this.getFormattedAccessControlConditions(params); - - if (error) { - throwError({ - message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - } - - // ========== Node Promises ========== - const requestId = this.getRequestId(); - const nodePromises = this.getNodePromises((url: string) => { - // -- choose the right signature - let sigToPassToNode = this.getAuthSigOrSessionAuthSig({ - authSig: params.authSig, - sessionSigs: params.sessionSigs, - url, - }); - - return this.getDecryptionShare( - url, - { - accessControlConditions: formattedAccessControlConditions, - evmContractConditions: formattedEVMContractConditions, - solRpcConditions: formattedSolRpcConditions, - unifiedAccessControlConditions: - formattedUnifiedAccessControlConditions, - toDecrypt, - authSig: sigToPassToNode, - chain, - }, - requestId - ); - }); - - // -- resolve promises - const res = await this.handleNodePromises(nodePromises); - - // -- case: promises rejected - if (res.success === false) { - this._throwNodeError(res as RejectedNodePromises); - } - - const decryptionShares: Array = (res as SuccessNodePromises) - .values; - - log('decryptionShares', decryptionShares); - - if (!this.networkPubKeySet) { - return throwError({ - message: 'networkPubKeySet cannot be null', - errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, - errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, - }); - } - - // ========== Combine Shares ========== - const decrypted = combineBlsDecryptionShares( - decryptionShares, - this.networkPubKeySet, - toDecrypt - ); - - return decrypted; - }; - /** * * Get and gather node promises @@ -614,13 +359,13 @@ export class LitCore { * * Get hash of access control conditions * - * @param { JsonStoreSigningRequest } params + * @param { MultipleAccessControlConditions } params * * @returns { Promise } * */ getHashedAccessControlConditions = async ( - params: JsonStoreSigningRequest + params: MultipleAccessControlConditions ): Promise => { let hashOfConditions: ArrayBuffer; @@ -653,46 +398,18 @@ export class LitCore { return hashOfConditions; }; - /** - * - * Store encryption conditions to nodes - * - * @param { string } urk - * @param { JsonEncryptionStoreRequest } params - * - * @returns { Promise } - * - */ - storeEncryptionConditionWithNode = async ( - url: string, - params: JsonSigningStoreRequest, - requestId: string - ): Promise => { - log('storeEncryptionConditionWithNode'); - const urlWithPath = `${url}/web/encryption/store`; - const data = { - key: params.key, - val: params.val, - authSig: params.authSig, - chain: params.chain, - permanant: params.permanent, - }; - - return await this.sendCommandToNode({ url: urlWithPath, data, requestId }); - }; - /** * Handle node promises * * @param { Array> } nodePromises * - * @returns { Promise } + * @returns { Promise | RejectedNodePromises> } * */ - handleNodePromises = async ( - nodePromises: Array>, + handleNodePromises = async ( + nodePromises: Array>, minNodeCount?: number - ): Promise => { + ): Promise | RejectedNodePromises> => { // -- prepare const responses = await Promise.allSettled(nodePromises); const minNodes = minNodeCount ?? this.config.minNodeCount; @@ -704,7 +421,7 @@ export class LitCore { // -- case: success (when success responses are more than minNodeCount) if (successes.length >= minNodes) { - const successPromises: SuccessNodePromises = { + const successPromises: SuccessNodePromises = { success: true, values: successes.map((r: any) => r.value), }; @@ -841,256 +558,4 @@ export class LitCore { formattedUnifiedAccessControlConditions, }; }; - - /** - * - * Ger Decryption Shares from Nodes - * - * @param { string } url - * @param { JsonEncryptionRetrieveRequest } params - * - * @returns { Promise } - * - */ - getDecryptionShare = async ( - url: string, - params: JsonEncryptionRetrieveRequest, - requestId: string - ): Promise => { - log('getDecryptionShare'); - const urlWithPath = `${url}/web/encryption/retrieve`; - - return await this.sendCommandToNode({ - url: urlWithPath, - data: params, - requestId, - }); - }; -} - -function saveEncryptionKeyParamsIsSafe(params: JsonSaveEncryptionKeyRequest) { - // -- prepare params - const { - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - authSig, - chain, - symmetricKey, - encryptedSymmetricKey, - permanant, - permanent, - sessionSigs, - } = params; - - if ( - accessControlConditions && - !is( - accessControlConditions, - 'Array', - 'accessControlConditions', - 'saveEncryptionKey' - ) - ) - return false; - if ( - evmContractConditions && - !is( - evmContractConditions, - 'Array', - 'evmContractConditions', - 'saveEncryptionKey' - ) - ) - return false; - if ( - solRpcConditions && - !is(solRpcConditions, 'Array', 'solRpcConditions', 'saveEncryptionKey') - ) - return false; - if ( - unifiedAccessControlConditions && - !is( - unifiedAccessControlConditions, - 'Array', - 'unifiedAccessControlConditions', - 'saveEncryptionKey' - ) - ) - return false; - - // log('authSig:', authSig); - if (authSig && !is(authSig, 'Object', 'authSig', 'saveEncryptionKey')) - return false; - if ( - authSig && - !checkIfAuthSigRequiresChainParam(authSig, chain, 'saveEncryptionKey') - ) - return false; - - if ( - sessionSigs && - !is(sessionSigs, 'Object', 'sessionSigs', 'saveEncryptionKey') - ) - return false; - - if (!sessionSigs && !authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - return false; - } - - if ( - symmetricKey && - !is(symmetricKey, 'Uint8Array', 'symmetricKey', 'saveEncryptionKey') - ) - return false; - if ( - encryptedSymmetricKey && - !is( - encryptedSymmetricKey, - 'Uint8Array', - 'encryptedSymmetricKey', - 'saveEncryptionKey' - ) - ) - return false; - - // to fix spelling mistake - if (typeof params.permanant !== 'undefined') { - params.permanent = params.permanant; - } - - if ( - (!symmetricKey || symmetricKey == '') && - (!encryptedSymmetricKey || encryptedSymmetricKey == '') - ) { - throw new Error( - 'symmetricKey and encryptedSymmetricKey are blank. You must pass one or the other' - ); - } - - if ( - !accessControlConditions && - !evmContractConditions && - !solRpcConditions && - !unifiedAccessControlConditions - ) { - throw new Error( - 'accessControlConditions and evmContractConditions and solRpcConditions and unifiedAccessControlConditions are blank' - ); - } - - // -- validate: if sessionSig and authSig exists - if (sessionSigs && authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - return false; - } - - // -- case: success - return true; -} - -function getEncryptionKeyParamsIsSafe(params: JsonEncryptionRetrieveRequest) { - const { - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - toDecrypt, - authSig, - chain, - sessionSigs, - } = params; - - // -- validate - if ( - accessControlConditions && - !is( - accessControlConditions, - 'Array', - 'accessControlConditions', - 'getEncryptionKey' - ) - ) - return false; - - if ( - evmContractConditions && - !is( - evmContractConditions, - 'Array', - 'evmContractConditions', - 'getEncryptionKey' - ) - ) - return false; - - if ( - solRpcConditions && - !is(solRpcConditions, 'Array', 'solRpcConditions', 'getEncryptionKey') - ) - return false; - - if ( - unifiedAccessControlConditions && - !is( - unifiedAccessControlConditions, - 'Array', - 'unifiedAccessControlConditions', - 'getEncryptionKey' - ) - ) - return false; - - log('TYPEOF toDecrypt in getEncryptionKey():', typeof toDecrypt); - if (!is(toDecrypt, 'String', 'toDecrypt', 'getEncryptionKey')) return false; - if (authSig && !is(authSig, 'Object', 'authSig', 'getEncryptionKey')) - return false; - if ( - sessionSigs && - !is(sessionSigs, 'Object', 'sessionSigs', 'getEncryptionKey') - ) - return false; - - // -- validate: if sessionSig or authSig exists - if (!sessionSigs && !authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - return false; - } - - // -- validate: if sessionSig and authSig exists - if (sessionSigs && authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - return false; - } - - // -- validate if 'chain' is null - if (!chain) { - return false; - } - - if ( - authSig && - !checkIfAuthSigRequiresChainParam(authSig, chain, 'getEncryptionKey') - ) - return false; - - return true; } diff --git a/packages/crypto/src/lib/crypto.spec.ts b/packages/crypto/src/lib/crypto.spec.ts index 42623f460a..286511eca0 100644 --- a/packages/crypto/src/lib/crypto.spec.ts +++ b/packages/crypto/src/lib/crypto.spec.ts @@ -1,80 +1,157 @@ import { - generateSymmetricKey, - encryptWithSymmetricKey, - decryptWithSymmetricKey, - importSymmetricKey, + decryptWithSignatureShares, + encrypt, + verifyAndDecryptWithSignatureShares, + combineSignatureShares, + verifySignature, } from './crypto'; +// @ts-nocheck +import { TextEncoder, TextDecoder } from 'util'; +global.TextEncoder = TextEncoder; +// @ts-ignore +global.TextDecoder = TextDecoder; + +import * as blsSdk from '@lit-protocol/bls-sdk'; + +const publicKey = + '8e29447d7b0666fe41c357dbbdbdac0ac8ac973f88439a07f85fa31fa6fa3cea87c2eaa8b367e1c97764800fb5636892'; +const secretMessage = new Uint8Array([ + 240, 23, 185, 6, 87, 33, 173, 216, 53, 84, 80, 135, 190, 16, 58, 85, 97, 75, + 3, 192, 215, 82, 217, 5, 40, 65, 2, 214, 40, 177, 53, 150, +]); +const identityParam = new Uint8Array([ + 101, 110, 99, 114, 121, 112, 116, 95, 100, 101, 99, 114, 121, 112, 116, 95, + 119, 111, 114, 107, 115, +]); + describe('crypto', () => { - it('should generateSymmetricKey', async () => { - const symmetricKey = await generateSymmetricKey(); - - expect(symmetricKey).toBeDefined(); - expect(symmetricKey.algorithm.name).toBe('AES-CBC'); - expect(symmetricKey.type).toBe('secret'); - expect(symmetricKey.extractable).toBe(true); - expect(symmetricKey.usages).toEqual(['encrypt', 'decrypt']); + beforeAll(async () => { + await blsSdk.initWasmBlsSdk(); }); - it('should import a valid symmetric key from raw bytes', async () => { - const symmetricKey = await generateSymmetricKey(); - const exportedKey = await crypto.subtle.exportKey('raw', symmetricKey); - const importedKey = await importSymmetricKey(exportedKey as ArrayBuffer); + it('should encrypt', async () => { + // execute + const ciphertext = encrypt(publicKey, secretMessage, identityParam); - expect(importedKey).toBeDefined(); - expect(importedKey.algorithm.name).toBe('AES-CBC'); - expect(importedKey.type).toBe('secret'); - expect(importedKey.extractable).toBe(true); - expect(importedKey.usages).toEqual(['encrypt', 'decrypt']); + // assert + expect(ciphertext.length).toBeGreaterThan(0); }); - it('should import the same symmetric key if given the same raw bytes', async () => { - const symmetricKey = await generateSymmetricKey(); - const exportedKey = await crypto.subtle.exportKey('raw', symmetricKey); - const importedKey1 = await importSymmetricKey(exportedKey as ArrayBuffer); - const importedKey2 = await importSymmetricKey(exportedKey as ArrayBuffer); + it('should decrypt', async () => { + // prepare + const ciphertext = + 'l9a/01WDJB/euKxtbWcuQ8ez/c9eZ+jQryTHZVLN0kfd7XHoLs6FeWUVmk89ovQGkQJnnFDKjq6kgJxvIIrxXd9DaGuRBozLdA1G9Nk413YhTEqsENuHU0nSa4i6F912KltE15sbWKpDfPnZF6CA2UKBAw=='; + const signatureShares = [ + '01b2b44a0bf7184f19efacad98e213818edd3f8909dd798129ef169b877d68d77ba630005609f48b80203717d82092a45b06a9de0e61a97b2672b38b31f9ae43e64383d0375a51c75db8972613cc6b099b95c189fd8549ed973ee94b08749f4cac', + '02a8343d5602f523286c4c59356fdcfc51953290495d98cb91a56b59bd1a837ea969cc521382164e85787128ce7f944de303d8e0b5fc4becede0c894bec1adc490fdc133939cca70fb3f504b9bf7b156527b681d9f0619828cd8050c819e46fdb1', + '03b1594ab0cb56f47437b3720dc181661481ca0e36078b79c9a4acc50042f076bf66b68fbd12a1d55021a668555f0eed0a08dfe74455f557b30f1a9c32435a81479ca8843f5b74b176a8d10c5845a84213441eaaaf2ba57e32581584393541c5aa', + ]; - const exportedKey1 = await crypto.subtle.exportKey('raw', importedKey1); - const exportedKey2 = await crypto.subtle.exportKey('raw', importedKey2); + // execute + const plaintext = decryptWithSignatureShares( + ciphertext, + signatureShares.map((s) => ({ + ProofOfPossession: s, + })) + ); - expect(exportedKey1).toEqual(exportedKey2); + // assert + expect(plaintext).toEqual(secretMessage); }); -}); -describe('encryptWithSymmetricKey', () => { - // Helper function to generate random data - const generateRandomData = (length: number): Uint8Array => { - return crypto.getRandomValues(new Uint8Array(length)); - }; - - // Generate test data of various sizes - const testData = [ - generateRandomData(16), - generateRandomData(32), - generateRandomData(64), - generateRandomData(128), - generateRandomData(256), - generateRandomData(512), - generateRandomData(1024), - generateRandomData(2048), - generateRandomData(4096), - generateRandomData(8192), - ]; - - let symmetricKey: CryptoKey; + it('should verify + decrypt', async () => { + const ciphertext = + 'l9a/01WDJB/euKxtbWcuQ8ez/c9eZ+jQryTHZVLN0kfd7XHoLs6FeWUVmk89ovQGkQJnnFDKjq6kgJxvIIrxXd9DaGuRBozLdA1G9Nk413YhTEqsENuHU0nSa4i6F912KltE15sbWKpDfPnZF6CA2UKBAw=='; + const signatureShares = [ + '01b2b44a0bf7184f19efacad98e213818edd3f8909dd798129ef169b877d68d77ba630005609f48b80203717d82092a45b06a9de0e61a97b2672b38b31f9ae43e64383d0375a51c75db8972613cc6b099b95c189fd8549ed973ee94b08749f4cac', + '02a8343d5602f523286c4c59356fdcfc51953290495d98cb91a56b59bd1a837ea969cc521382164e85787128ce7f944de303d8e0b5fc4becede0c894bec1adc490fdc133939cca70fb3f504b9bf7b156527b681d9f0619828cd8050c819e46fdb1', + '03b1594ab0cb56f47437b3720dc181661481ca0e36078b79c9a4acc50042f076bf66b68fbd12a1d55021a668555f0eed0a08dfe74455f557b30f1a9c32435a81479ca8843f5b74b176a8d10c5845a84213441eaaaf2ba57e32581584393541c5aa', + ]; - beforeAll(async () => { - symmetricKey = await generateSymmetricKey(); + // execute + const plaintext = verifyAndDecryptWithSignatureShares( + publicKey, + identityParam, + ciphertext, + signatureShares.map((s) => ({ + ProofOfPossession: s, + })) + ); + + // assert + expect(plaintext).toEqual(secretMessage); + }); + + it('should combine signature shares', async () => { + const signatureShares = [ + '01b2b44a0bf7184f19efacad98e213818edd3f8909dd798129ef169b877d68d77ba630005609f48b80203717d82092a45b06a9de0e61a97b2672b38b31f9ae43e64383d0375a51c75db8972613cc6b099b95c189fd8549ed973ee94b08749f4cac', + '02a8343d5602f523286c4c59356fdcfc51953290495d98cb91a56b59bd1a837ea969cc521382164e85787128ce7f944de303d8e0b5fc4becede0c894bec1adc490fdc133939cca70fb3f504b9bf7b156527b681d9f0619828cd8050c819e46fdb1', + '03b1594ab0cb56f47437b3720dc181661481ca0e36078b79c9a4acc50042f076bf66b68fbd12a1d55021a668555f0eed0a08dfe74455f557b30f1a9c32435a81479ca8843f5b74b176a8d10c5845a84213441eaaaf2ba57e32581584393541c5aa', + ].map((s) => ({ + ProofOfPossession: s, + })); + + // execute + const combinedSignature = combineSignatureShares(signatureShares); + + // assert + expect(combinedSignature.length).toEqual(192); }); - testData.forEach((data, index) => { - it(`should encrypt data (test case ${index + 1})`, async () => { - const encryptedBlob = await encryptWithSymmetricKey(symmetricKey, data); + it('should verify signature', async () => { + const publicKey = + 'ad1bd6c66f849ccbcc20fa08c26108f3df7db0068df032cc184779cc967159da4dd5669de563af7252b540f0759aee5a'; + const message = new Uint8Array([ + 101, 121, 74, 104, 98, 71, 99, 105, 79, 105, 74, 67, 84, 70, 77, 120, 77, + 105, 48, 122, 79, 68, 69, 105, 76, 67, 74, 48, 101, 88, 65, 105, 79, 105, + 74, 75, 86, 49, 81, 105, 102, 81, 46, 101, 121, 74, 112, 99, 51, 77, 105, + 79, 105, 74, 77, 83, 86, 81, 105, 76, 67, 74, 122, 100, 87, 73, 105, 79, + 105, 73, 119, 101, 68, 81, 121, 78, 84, 108, 108, 78, 68, 81, 50, 78, 122, + 65, 119, 78, 84, 77, 48, 79, 84, 70, 108, 78, 50, 73, 48, 90, 109, 85, 48, + 89, 84, 69, 121, 77, 71, 77, 51, 77, 71, 74, 108, 77, 87, 86, 104, 90, 68, + 89, 48, 78, 109, 73, 105, 76, 67, 74, 106, 97, 71, 70, 112, 98, 105, 73, + 54, 73, 109, 86, 48, 97, 71, 86, 121, 90, 88, 86, 116, 73, 105, 119, 105, + 97, 87, 70, 48, 73, 106, 111, 120, 78, 106, 103, 51, 78, 84, 89, 121, 77, + 106, 99, 49, 76, 67, 74, 108, 101, 72, 65, 105, 79, 106, 69, 50, 79, 68, + 99, 50, 77, 68, 85, 48, 78, 122, 85, 115, 73, 109, 70, 106, 89, 50, 86, + 122, 99, 48, 78, 118, 98, 110, 82, 121, 98, 50, 120, 68, 98, 50, 53, 107, + 97, 88, 82, 112, 98, 50, 53, 122, 73, 106, 112, 98, 101, 121, 74, 106, 98, + 50, 53, 48, 99, 109, 70, 106, 100, 69, 70, 107, 90, 72, 74, 108, 99, 51, + 77, 105, 79, 105, 73, 105, 76, 67, 74, 106, 97, 71, 70, 112, 98, 105, 73, + 54, 73, 109, 86, 48, 97, 71, 86, 121, 90, 88, 86, 116, 73, 105, 119, 105, + 99, 51, 82, 104, 98, 109, 82, 104, 99, 109, 82, 68, 98, 50, 53, 48, 99, + 109, 70, 106, 100, 70, 82, 53, 99, 71, 85, 105, 79, 105, 73, 105, 76, 67, + 74, 116, 90, 88, 82, 111, 98, 50, 81, 105, 79, 105, 73, 105, 76, 67, 74, + 119, 89, 88, 74, 104, 98, 87, 86, 48, 90, 88, 74, 122, 73, 106, 112, 98, + 73, 106, 112, 49, 99, 50, 86, 121, 81, 87, 82, 107, 99, 109, 86, 122, 99, + 121, 74, 100, 76, 67, 74, 121, 90, 88, 82, 49, 99, 109, 53, 87, 89, 87, + 120, 49, 90, 86, 82, 108, 99, 51, 81, 105, 79, 110, 115, 105, 89, 50, 57, + 116, 99, 71, 70, 121, 89, 88, 82, 118, 99, 105, 73, 54, 73, 106, 48, 105, + 76, 67, 74, 50, 89, 87, 120, 49, 90, 83, 73, 54, 73, 106, 66, 52, 78, 68, + 73, 49, 79, 85, 85, 48, 78, 68, 89, 51, 77, 68, 65, 49, 77, 122, 81, 53, + 77, 85, 85, 51, 89, 106, 82, 71, 82, 84, 82, 66, 77, 84, 73, 119, 81, 122, + 99, 119, 89, 109, 85, 120, 90, 85, 70, 69, 78, 106, 81, 50, 89, 105, 74, + 57, 102, 86, 48, 115, 73, 109, 86, 50, 98, 85, 78, 118, 98, 110, 82, 121, + 89, 87, 78, 48, 81, 50, 57, 117, 90, 71, 108, 48, 97, 87, 57, 117, 99, + 121, 73, 54, 98, 110, 86, 115, 98, 67, 119, 105, 99, 50, 57, 115, 85, 110, + 66, 106, 81, 50, 57, 117, 90, 71, 108, 48, 97, 87, 57, 117, 99, 121, 73, + 54, 98, 110, 86, 115, 98, 67, 119, 105, 100, 87, 53, 112, 90, 109, 108, + 108, 90, 69, 70, 106, 89, 50, 86, 122, 99, 48, 78, 118, 98, 110, 82, 121, + 98, 50, 120, 68, 98, 50, 53, 107, 97, 88, 82, 112, 98, 50, 53, 122, 73, + 106, 112, 117, 100, 87, 120, 115, 102, 81, + ]); + const signature = new Uint8Array([ + 182, 185, 8, 21, 143, 23, 47, 21, 128, 30, 241, 43, 141, 206, 108, 16, + 199, 242, 16, 200, 195, 85, 109, 38, 227, 52, 132, 136, 239, 11, 105, 214, + 254, 23, 107, 236, 105, 73, 129, 48, 242, 17, 225, 172, 114, 29, 214, 178, + 12, 158, 255, 169, 220, 84, 179, 19, 53, 94, 223, 192, 80, 199, 24, 68, + 37, 91, 82, 163, 89, 102, 105, 0, 26, 211, 133, 24, 224, 192, 142, 39, + 134, 118, 255, 80, 221, 163, 231, 178, 180, 23, 144, 60, 214, 208, 132, + 207, + ]); - expect(encryptedBlob).toBeDefined(); - expect(encryptedBlob instanceof Blob).toBe(true); - expect(encryptedBlob.type).toBe('application/octet-stream'); - expect(encryptedBlob.size).toBeGreaterThan(data.length); - }); + // execute + verifySignature(publicKey, message, signature); }); }); diff --git a/packages/crypto/src/lib/crypto.ts b/packages/crypto/src/lib/crypto.ts index 245c8691c1..1828b60166 100644 --- a/packages/crypto/src/lib/crypto.ts +++ b/packages/crypto/src/lib/crypto.ts @@ -1,13 +1,8 @@ // @ts-nocheck -import { wasmBlsSdkHelpers, initWasmBlsSdk } from '@lit-protocol/bls-sdk'; +import * as blsSdk from '@lit-protocol/bls-sdk'; -import { - LIT_ERROR, - SessionKeyPair, - SigShare, - SYMM_KEY_ALGO_PARAMS, -} from '@lit-protocol/constants'; +import { LIT_ERROR, SessionKeyPair, SigShare } from '@lit-protocol/constants'; import * as wasmECDSA from '@lit-protocol/ecdsa-sdk'; @@ -15,15 +10,15 @@ import { isBrowser, log, throwError } from '@lit-protocol/misc'; import { uint8arrayFromString, + uint8ArrayToBase64, uint8arrayToString, } from '@lit-protocol/uint8arrays'; -// import nacl from 'tweetnacl'; import { nacl } from '@lit-protocol/nacl'; // if 'wasmExports' is not available, we need to initialize the BLS SDK if (!globalThis.wasmExports) { - initWasmBlsSdk().then((exports) => { + blsSdk.initWasmBlsSdk().then((exports) => { globalThis.wasmExports = exports; if (!globalThis.jestTesting) { @@ -62,135 +57,114 @@ if (!globalThis.wasmECDSA) { } /** ---------- Exports ---------- */ +export interface BlsSignatureShare { + ProofOfPossession: string; +} + /** + * Encrypt data with a BLS public key. * - * Generate a new random symmetric key using WebCrypto subtle API. You should only use this if you're handling your own key generation and management with Lit. Typically, Lit handles this internally for you. - * - * @returns { Promise } A promise that resolves to the generated key + * @param publicKey hex-encoded string of the BLS public key to encrypt with + * @param data Uint8Array of the data to encrypt + * @param identity Uint8Array of the identity parameter used during encryption + * @returns base64 encoded string of the ciphertext */ -export const generateSymmetricKey = async (): Promise => { - const symmKey = await crypto.subtle.generateKey(SYMM_KEY_ALGO_PARAMS, true, [ - 'encrypt', - 'decrypt', - ]); - - return symmKey; +export const encrypt = ( + publicKey: string, + data: Uint8Array, + identity: Uint8Array +): string => { + return blsSdk.encrypt( + publicKey, + uint8arrayToString(data, 'base64'), + uint8arrayToString(identity, 'base64') + ); }; /** + * Decrypt ciphertext using BLS signature shares. * - * Encrypt a blob with a symmetric key - * - * @param { CryptoKey } symmKey The symmetric key - * @param { BufferSource | Uint8Array } data The blob to encrypt - * - * @returns { Promise } The encrypted blob + * @param ciphertext base64-encoded string of the ciphertext to decrypt + * @param shares hex-encoded array of the BLS signature shares + * @returns Uint8Array of the decrypted data */ -export const encryptWithSymmetricKey = async ( - symmKey: CryptoKey, - data: BufferSource | Uint8Array -): Promise => { - // encrypt the zip with symmetric key - const iv = crypto.getRandomValues(new Uint8Array(16)); - - const encryptedZipData = await crypto.subtle.encrypt( - { - name: 'AES-CBC', - iv, - }, - symmKey, - data +export const decryptWithSignatureShares = ( + ciphertext: string, + shares: BlsSignatureShare[] +): Uint8Array => { + // Format the signature shares + const sigShares = shares.map((s) => JSON.stringify(s)); + + // Decrypt + const privateData = blsSdk.decrypt_with_signature_shares( + ciphertext, + sigShares ); - const encryptedZipBlob = new Blob([iv, new Uint8Array(encryptedZipData)], { - type: 'application/octet-stream', - }); - - return encryptedZipBlob; + // Format + return uint8arrayFromString(privateData, 'base64'); }; /** + * Verify and decrypt ciphertext using BLS signature shares. * - * Import a symmetric key from a Uint8Array to a webcrypto key. You should only use this if you're handling your own key generation and management with Lit. Typically, Lit handles this internally for you. - * - * @param { Uint8Array } symmKey The symmetric key to import - * - * @returns { Promise } A promise that resolves to the imported key + * @param publicKey hex-encoded string of the BLS public key to verify with + * @param identity Uint8Array of the identity parameter used during encryption + * @param ciphertext base64-encoded string of the ciphertext to decrypt + * @param shares hex-encoded array of the BLS signature shares + * @returns base64-encoded string of the decrypted data */ -export const importSymmetricKey = async ( - symmKey: SymmetricKey -): Promise => { - const importedSymmKey = await crypto.subtle.importKey( - 'raw', - symmKey, - SYMM_KEY_ALGO_PARAMS, - true, - ['encrypt', 'decrypt'] +export const verifyAndDecryptWithSignatureShares = ( + publicKey: string, + identity: Uint8Array, + ciphertext: string, + shares: BlsSignatureShare[] +): Uint8Array => { + // Format the signature shares + const sigShares = shares.map((s) => JSON.stringify(s)); + + // Decrypt + const privateData = blsSdk.verify_and_decrypt_with_signature_shares( + publicKey, + uint8ArrayToBase64(identity), + ciphertext, + sigShares ); - return importedSymmKey; + // Format + return uint8arrayFromString(privateData, 'base64'); }; /** + * Combine BLS signature shares. * - * Decrypt an encrypted blob with a symmetric key. Uses AES-CBC via SubtleCrypto - * - * @param { Blob } encryptedBlob The encrypted blob that should be decrypted - * @param { CryptoKey } symmKey The symmetric key - * - * @returns { Uint8Array } The decrypted blob + * @param shares hex-encoded array of the BLS signature shares + * @returns hex-encoded string of the combined signature */ -export const decryptWithSymmetricKey = async ( - encryptedBlob: Blob, - symmKey: CryptoKey -): Promise => { - const recoveredIv = await encryptedBlob.slice(0, 16).arrayBuffer(); - const encryptedZipArrayBuffer = await encryptedBlob.slice(16).arrayBuffer(); - const decryptedZip = await crypto.subtle.decrypt( - { - name: 'AES-CBC', - iv: recoveredIv, - }, - symmKey, - encryptedZipArrayBuffer - ); +export const combineSignatureShares = (shares: BlsSignatureShare[]): string => { + // Format the signature shares + const sigShares = shares.map((s) => JSON.stringify(s)); - return decryptedZip as Uint8Array; + return blsSdk.combine_signature_shares(sigShares); }; /** + * Verify the BLS network signature. * - * Combine BLS Shares - * - * @param { Array } sigSharesWithEverything - * @param { string } networkPubKeySet - * - * @returns { any } - * + * @param publicKey hex-encoded string of the BLS public key to verify with. + * @param message Uint8Array of the message to verify. + * @param signature Uint8Array of the signature to verify. */ -export const combineBlsShares = ( - sigSharesWithEverything: Array, - networkPubKeySet: string -): any => { - const pkSetAsBytes = uint8arrayFromString(networkPubKeySet, 'base16'); - - log('pkSetAsBytes', pkSetAsBytes); - - const sigShares = sigSharesWithEverything.map((s: any) => ({ - shareHex: s.shareHex, - shareIndex: s.shareIndex, - })); - - const combinedSignatures = wasmBlsSdkHelpers.combine_signatures( - pkSetAsBytes, - sigShares +export const verifySignature = ( + publicKey: string, + message: Uint8Array, + signature: Uint8Array +): void => { + blsSdk.verify_signature( + publicKey, + uint8arrayToString(message, 'base64'), + uint8arrayToString(signature, 'base64') ); - - const signature = uint8arrayToString(combinedSignatures, 'base16'); - - log('signature is ', signature); - - return { signature }; }; /** @@ -253,55 +227,6 @@ export const combineEcdsaShares = (sigShares: Array): any => { return sig; }; -/** - * //TODO: Fix 'any' types - * Combine BLS Decryption Shares - * - * @param { Array } decryptionShares - * @param { string } networkPubKeySet - * @param { string } toDecrypt - * @param { any } provider - * - * @returns { any } - * - */ -export const combineBlsDecryptionShares = ( - decryptionShares: Array, - networkPubKeySet: string, - toDecrypt: string -): any => { - // -- sort the decryption shares by share index. this is important when combining the shares. - decryptionShares.sort((a: any, b: any) => a.shareIndex - b.shareIndex); - - // set decryption shares bytes in wasm - decryptionShares.forEach((s: any, idx: any) => { - wasmExports.set_share_indexes(idx, s.shareIndex); - const shareAsBytes = uint8arrayFromString(s.decryptionShare, 'base16'); - for (let i = 0; i < shareAsBytes.length; i++) { - wasmExports.set_decryption_shares_byte(i, idx, shareAsBytes[i]); - } - }); - - // -- set the public key set bytes in wasm - const pkSetAsBytes = uint8arrayFromString(networkPubKeySet, 'base16'); - wasmBlsSdkHelpers.set_mc_bytes(pkSetAsBytes); - - // -- set the ciphertext bytes - const ciphertextAsBytes = uint8arrayFromString(toDecrypt, 'base16'); - for (let i = 0; i < ciphertextAsBytes.length; i++) { - wasmExports.set_ct_byte(i, ciphertextAsBytes[i]); - } - - // ========== Result ========== - const decrypted = wasmBlsSdkHelpers.combine_decryption_shares( - decryptionShares.length, - pkSetAsBytes.length, - ciphertextAsBytes.length - ); - - return decrypted; -}; - /** * * Generate a session key pair diff --git a/packages/encryption/project.json b/packages/encryption/project.json index 7b63718dbd..f55ea1990f 100644 --- a/packages/encryption/project.json +++ b/packages/encryption/project.json @@ -7,7 +7,13 @@ "build": { "executor": "nx:run-commands", "options": { - "command": "yarn build:target encryption" + "commands": [ + "yarn build:target constants --skip", + "yarn build:target misc --skip", + "yarn build:target uint8arrays --skip", + "yarn build:target encryption" + ], + "parallel": false } }, "_buildTsc": { diff --git a/packages/encryption/src/lib/encryption.ts b/packages/encryption/src/lib/encryption.ts index e927b50e57..49c5e6fec9 100644 --- a/packages/encryption/src/lib/encryption.ts +++ b/packages/encryption/src/lib/encryption.ts @@ -1,24 +1,32 @@ -import { LIT_ERROR, NETWORK_PUB_KEY } from '@lit-protocol/constants'; +import { + EITHER_TYPE, + ILitError, + LIT_ERROR, + NETWORK_PUB_KEY, +} from '@lit-protocol/constants'; +import { verifySignature } from '@lit-protocol/crypto'; import { - AcceptedFileType, - DecryptFileProps, + DecryptFromIpfsProps, + DecryptRequest, DecryptZipFileWithMetadata, DecryptZipFileWithMetadataProps, - EncryptedFile, - EncryptedString, - EncryptedZip, EncryptFileAndZipWithMetadataProps, + EncryptFileRequest, + EncryptRequestBase, + EncryptResponse, + EncryptStringRequest, + EncryptToIpfsDataType, + EncryptToIpfsPayload, EncryptToIpfsProps, - DecryptFromIpfsProps, + EncryptZipRequest, IJWT, - SymmetricKey, - ThreeKeys, + ILitNodeClient, + MetadataForFile, + SigningAccessControlConditionJWTPayload, VerifyJWTProps, } from '@lit-protocol/types'; -import { wasmBlsSdkHelpers } from '@lit-protocol/bls-sdk'; - // @ts-ignore import * as JSZip from 'jszip/dist/jszip.js'; @@ -27,91 +35,39 @@ import { uint8arrayToString, } from '@lit-protocol/uint8arrays'; -import { - decryptWithSymmetricKey, - encryptWithSymmetricKey, - generateSymmetricKey, - importSymmetricKey, -} from '@lit-protocol/crypto'; - import { checkType, isBrowser, log, throwError } from '@lit-protocol/misc'; import { safeParams } from './params-validators'; import * as ipfsClient from 'ipfs-http-client'; -// ---------- Local Interfaces ---------- - -interface MetadataForFile { - name: string | any; - type: string | any; - size: string | number | any; - accessControlConditions: any[] | any; - evmContractConditions: any[] | any; - solRpcConditions: any[] | any; - unifiedAccessControlConditions: any[] | any; - chain: string; - encryptedSymmetricKey: Uint8Array | any; -} - -// ---------- Local Helpers ---------- - /** * - * Get all the metadata needed to decrypt something in the future. If you're encrypting files with Lit and storing them in IPFS or Arweave, then this function will provide you with a properly formatted metadata object that you should save alongside the files. + * Encrypt a string or file using the LIT network public key and upload all the metadata required to decrypt i.e. accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions & chain to IPFS using the ipfs-client-http SDK & returns the IPFS CID. * - * @param { MetadataForFile } + * @param { EncryptToIpfsProps } - The params required to encrypt & upload to IPFS * - * @return { MetadataForFile } + * @returns { Promise } - IPFS CID * */ -const metadataForFile = ({ - name, - type, - size, - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - chain, - encryptedSymmetricKey, -}: MetadataForFile): MetadataForFile => { - return { - name, - type, - size, +export const encryptToIpfs = async ( + params: EncryptToIpfsProps +): Promise => { + const { + authSig, + sessionSigs, accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions, chain, - encryptedSymmetricKey: uint8arrayToString(encryptedSymmetricKey, 'base16'), - }; -}; + string, + file, + litNodeClient, + infuraId, + infuraSecretKey, + } = params; -/** - * - * Encrypt a string or file, save the key to the Lit network, and upload all the metadata required to decrypt i.e. accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions & chain to IPFS using the ipfs-client-http SDK & returns the IPFS CID. - * - * @param { EncryptToIpfsProps } - * - * @returns { Promise } - * - */ -export const encryptToIpfs = async ({ - authSig, - sessionSigs, - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - chain, - string, - file, - litNodeClient, - infuraId, - infuraSecretKey, -}: EncryptToIpfsProps): Promise => { // -- validate const paramsIsSafe = safeParams({ functionName: 'encryptToIpfs', @@ -129,65 +85,38 @@ export const encryptToIpfs = async ({ }, }); - if (!paramsIsSafe) + if (paramsIsSafe.type === EITHER_TYPE.ERROR) return throwError({ - message: `authSig, sessionSigs, accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions, chain, litNodeClient, string or file must be provided`, + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - if (string === undefined && file === undefined) - return throwError({ - message: `Either string or file must be provided`, - errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, - errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, - }); - - if (!infuraId || !infuraSecretKey) { - return throwError({ - message: - 'Please provide your Infura Project Id and Infura API Key Secret to add the encrypted metadata on IPFS', - errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, - errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, - }); - } - - let encryptedData; - let symmetricKey; - if (string !== undefined && file !== undefined) { - return throwError({ - message: 'Provide only either a string or file to encrypt', - errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, - errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, - }); - } else if (string !== undefined) { - const encryptedString = await encryptString(string); - encryptedData = encryptedString.encryptedString; - symmetricKey = encryptedString.symmetricKey; + let ciphertext: string; + let dataToEncryptHash: string; + let dataType: EncryptToIpfsDataType; + + if (string !== undefined) { + const encryptResponse = await encryptString( + { + ...params, + dataToEncrypt: string, + }, + litNodeClient + ); + ciphertext = encryptResponse.ciphertext; + dataToEncryptHash = encryptResponse.dataToEncryptHash; + dataType = 'string'; } else { - const encryptedFile = await encryptFile({ file: file! }); - encryptedData = encryptedFile.encryptedFile; - symmetricKey = encryptedFile.symmetricKey; + const encryptResponse = await encryptFile( + { ...params, file: file! }, + litNodeClient + ); + ciphertext = encryptResponse.ciphertext; + dataToEncryptHash = encryptResponse.dataToEncryptHash; + dataType = 'file'; } - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - symmetricKey, - authSig, - sessionSigs, - chain, - }); - - log('encrypted key saved to Lit', encryptedSymmetricKey); - - const encryptedSymmetricKeyString = uint8arrayToString( - encryptedSymmetricKey, - 'base16' - ); - const authorization = 'Basic ' + Buffer.from(`${infuraId}:${infuraSecretKey}`).toString('base64'); const ipfs = ipfsClient.create({ @@ -197,28 +126,24 @@ export const encryptToIpfs = async ({ }, }); - const encryptedDataJson = Buffer.from( - await encryptedData.arrayBuffer() - ).toJSON(); try { const res = await ipfs.add( JSON.stringify({ - [string !== undefined ? 'encryptedString' : 'encryptedFile']: - encryptedDataJson, - encryptedSymmetricKeyString, + ciphertext, + dataToEncryptHash, accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions, chain, - }) + dataType, + } as EncryptToIpfsPayload) ); return res.path; } catch (e) { return throwError({ - message: - "Provided INFURA_ID or INFURA_SECRET_KEY in invalid hence can't upload to IPFS", + message: 'Unable to upload to IPFS', errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); @@ -229,17 +154,16 @@ export const encryptToIpfs = async ({ * * Decrypt & return the string or file (in Uint8Array format) using its metadata stored on IPFS with the given ipfsCid. * - * @param { DecryptFromIpfsProps } + * @param { DecryptFromIpfsProps } - The params required to decrypt from IPFS * - * @returns { Promise } + * @returns { Promise } - The decrypted string or file (in Uint8Array format) * */ -export const decryptFromIpfs = async ({ - authSig, - sessionSigs, - ipfsCid, - litNodeClient, -}: DecryptFromIpfsProps): Promise => { +export const decryptFromIpfs = async ( + params: DecryptFromIpfsProps +): Promise => { + const { authSig, sessionSigs, ipfsCid, litNodeClient } = params; + // -- validate const paramsIsSafe = safeParams({ functionName: 'decryptFromIpfs', @@ -251,43 +175,53 @@ export const decryptFromIpfs = async ({ }, }); - if (!paramsIsSafe) + if (paramsIsSafe.type === EITHER_TYPE.ERROR) return throwError({ - message: `authSig, sessionSigs, ipfsCid, litNodeClient must be provided`, + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); try { - const metadata = await ( + const metadata: EncryptToIpfsPayload = await ( await fetch(`https://gateway.pinata.cloud/ipfs/${ipfsCid}`) ).json(); - const symmetricKey = await litNodeClient.getEncryptionKey({ - accessControlConditions: metadata.accessControlConditions, - evmContractConditions: metadata.evmContractConditions, - solRpcConditions: metadata.solRpcConditions, - unifiedAccessControlConditions: metadata.unifiedAccessControlConditions, - toDecrypt: metadata.encryptedSymmetricKeyString, - chain: metadata.chain, - authSig, - sessionSigs, - }); - - if (metadata.encryptedString !== undefined) { - const encryptedStringBlob = new Blob( - [Buffer.from(metadata.encryptedString)], - { type: 'application/octet-stream' } + if (metadata.dataType === 'string') { + return decryptToString( + { + accessControlConditions: metadata.accessControlConditions, + evmContractConditions: metadata.evmContractConditions, + solRpcConditions: metadata.solRpcConditions, + unifiedAccessControlConditions: + metadata.unifiedAccessControlConditions, + ciphertext: metadata.ciphertext, + dataToEncryptHash: metadata.dataToEncryptHash, + chain: metadata.chain, + authSig, + sessionSigs, + }, + litNodeClient + ); + } else { + return decryptToFile( + { + accessControlConditions: metadata.accessControlConditions, + evmContractConditions: metadata.evmContractConditions, + solRpcConditions: metadata.solRpcConditions, + unifiedAccessControlConditions: + metadata.unifiedAccessControlConditions, + ciphertext: metadata.ciphertext, + dataToEncryptHash: metadata.dataToEncryptHash, + chain: metadata.chain, + authSig, + sessionSigs, + }, + litNodeClient ); - return await decryptString(encryptedStringBlob, symmetricKey); } - - const encryptedFileBlob = new Blob([Buffer.from(metadata.encryptedFile)], { - type: 'application/octet-stream', - }); - return await decryptFile({ file: encryptedFileBlob, symmetricKey }); } catch (e) { return throwError({ - message: 'Invalid ipfsCid', + message: 'Unable to fetch or decrypt from IPFS', errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); @@ -300,107 +234,87 @@ export const decryptFromIpfs = async ({ * * Encrypt a string. This is used to encrypt any string that is to be locked via the Lit Protocol. * - * @param { string } str The string to encrypt - * @returns { Promise } A promise containing the encryptedString as a Blob and the symmetricKey used to encrypt it, as a Uint8Array. + * @param { EncryptStringRequest } params - The params required to encrypt a string + * @param { ILitNodeClient } litNodeClient - The Lit Node Client + * + * @returns { Promise } - The encrypted string and the hash of the string */ -export const encryptString = async (str: string): Promise => { +export const encryptString = async ( + params: EncryptStringRequest, + litNodeClient: ILitNodeClient +): Promise => { // -- validate - if ( - !checkType({ - value: str, - allowedTypes: ['String'], - paramName: 'str', - functionName: 'encryptString', - }) - ) { + const paramsIsSafe = safeParams({ + functionName: 'encryptString', + params, + }); + + if (paramsIsSafe.type === EITHER_TYPE.ERROR) return throwError({ - message: `{${str}} must be a string`, + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - } - - // -- prepare - const encodedString: Uint8Array = uint8arrayFromString(str, 'utf8'); - - const symmKey: CryptoKey = await generateSymmetricKey(); - - const encryptedString: Blob = await encryptWithSymmetricKey( - symmKey, - encodedString.buffer - ); - - const exportedSymmKey: Uint8Array = new Uint8Array( - await crypto.subtle.exportKey('raw', symmKey) - ); - return { - symmetricKey: exportedSymmKey, - encryptedString, - encryptedData: encryptedString, - }; + return litNodeClient.encrypt({ + ...params, + dataToEncrypt: uint8arrayFromString(params.dataToEncrypt, 'utf8'), + }); }; /** * - * Decrypt a string that was encrypted with the encryptString function. + * Decrypt ciphertext into a string that was encrypted with the encryptString function. * - * @param { AcceptedFileType } encryptedStringBlob The encrypted string as a Blob - * @param { Uint8Array } symmKey The symmetric key used that will be used to decrypt this. - * - * @returns { Promise } A promise containing the decrypted string + * @param { DecryptRequest } params - The params required to decrypt a string + * @param { ILitNodeClient } litNodeClient - The Lit Node Client + + * @returns { Promise } - The decrypted string */ -export const decryptString = async ( - encryptedStringBlob: Blob, - symmKey: Uint8Array +export const decryptToString = async ( + params: DecryptRequest, + litNodeClient: ILitNodeClient ): Promise => { // -- validate const paramsIsSafe = safeParams({ - functionName: 'decryptString', - params: [encryptedStringBlob, symmKey], + functionName: 'decrypt', + params, }); - if (!paramsIsSafe) { - throwError({ - message: 'Invalid params', + if (paramsIsSafe.type === EITHER_TYPE.ERROR) + return throwError({ + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - } - - // -- import the decrypted symm key - const importedSymmKey: CryptoKey = await importSymmetricKey(symmKey); - const decryptedStringArrayBuffer: Uint8Array = await decryptWithSymmetricKey( - encryptedStringBlob, - importedSymmKey - ); + const { decryptedData } = await litNodeClient.decrypt(params); - return uint8arrayToString(new Uint8Array(decryptedStringArrayBuffer), 'utf8'); + return uint8arrayToString(decryptedData, 'utf8'); }; /** * * Zip and encrypt a string. This is used to encrypt any string that is to be locked via the Lit Protocol. * - * @param { string } string The string to zip and encrypt + * @param { EncryptStringRequest } params - The params required to encrypt a string + * @param { ILitNodeClient } litNodeClient - The Lit Node Client * - * @returns { Promise } A promise containing the encryptedZip as a Blob and the symmetricKey used to encrypt it, as a Uint8Array. The encrypted zip will contain a single file called "string.txt" + * @returns { Promise } - The encrypted string and the hash of the string */ export const zipAndEncryptString = async ( - string: string -): Promise => { + params: EncryptStringRequest, + litNodeClient: ILitNodeClient +): Promise => { // -- validate - if ( - !checkType({ - value: string, - allowedTypes: ['String'], - paramName: 'string', - functionName: 'zipAndEncryptString', - }) - ) - throwError({ - message: 'Invalid string', + const paramsIsSafe = safeParams({ + functionName: 'zipAndEncryptString', + params, + }); + + if (paramsIsSafe.type === EITHER_TYPE.ERROR) + return throwError({ + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); @@ -413,23 +327,27 @@ export const zipAndEncryptString = async ( zip = new JSZip(); } - zip.file('string.txt', string); + zip.file('string.txt', params.dataToEncrypt); - return encryptZip(zip); + return encryptZip({ ...params, zip }, litNodeClient); }; /** * * Zip and encrypt multiple files. * - * @param { Array } files An array of the files you wish to zip and encrypt + * @param { Array } files - The files to encrypt + * @param { EncryptRequestBase } paramsBase - The params required to encrypt a file + * @param { ILitNodeClient } litNodeClient - The Lit Node Client * - * @returns {Promise} A promise containing the encryptedZip as a Blob and the symmetricKey used to encrypt it, as a Uint8Array. The encrypted zip will contain a folder "encryptedAssets" and all of the files will be inside it. + * @returns { Promise } - The encrypted file and the hash of the file */ export const zipAndEncryptFiles = async ( - files: Array -): Promise => { + files: Array, + paramsBase: EncryptRequestBase, + litNodeClient: ILitNodeClient +): Promise => { // let's zip em let zip; @@ -470,46 +388,36 @@ export const zipAndEncryptFiles = async ( folder.file(files[i].name, files[i]); } - return encryptZip(zip); + return encryptZip({ ...paramsBase, zip }, litNodeClient); }; /** * * Decrypt and unzip a zip that was created using encryptZip, zipAndEncryptString, or zipAndEncryptFiles. * - * @param { AcceptedFileType } encryptedZipBlob The encrypted zip as a Blob - * @param { SymmetricKey } symmKey The symmetric key used that will be used to decrypt this zip. + * @param { DecryptRequest } params - The params required to decrypt a string + * @param { ILitNodeClient } litNodeClient - The Lit Node Client * - * @returns { Promise } A promise containing a JSZip object indexed by the filenames of the zipped files. For example, if you have a file called "meow.jpg" in the root of your zip, you could get it from the JSZip object by doing this: const imageBlob = await decryptedZip['meow.jpg'].async('blob') + * @returns { Promise<{ [key: string]: JSZip.JSZipObject }>} - The decrypted zip file */ -export const decryptZip = async ( - encryptedZipBlob: AcceptedFileType, - symmKey: SymmetricKey +export const decryptToZip = async ( + params: DecryptRequest, + litNodeClient: ILitNodeClient ): Promise<{ [key: string]: JSZip.JSZipObject }> => { // -- validate const paramsIsSafe = safeParams({ - functionName: 'decryptZip', - params: { - encryptedZipBlob, - symmKey, - }, + functionName: 'decrypt', + params, }); - if (!paramsIsSafe) { - throwError({ - message: `encryptedZipBlob must be a Blob or File. symmKey must be a Uint8Array`, + if (paramsIsSafe.type === EITHER_TYPE.ERROR) + return throwError({ + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - } - // import the decrypted symm key - const importedSymmKey = await importSymmetricKey(symmKey); - - const decryptedZipArrayBuffer = await decryptWithSymmetricKey( - encryptedZipBlob, - importedSymmKey - ); + const { decryptedData } = await litNodeClient.decrypt(params); // unpack the zip let zip; @@ -519,20 +427,38 @@ export const decryptZip = async ( } catch (e) { zip = new JSZip(); } - const unzipped = await zip.loadAsync(decryptedZipArrayBuffer); + const unzipped = await zip.loadAsync(decryptedData); return unzipped.files; }; /** * - * Encrypt a zip file created with JSZip using a new random symmetric key via WebCrypto. + * Encrypt a zip file created with JSZip. * - * @param { JSZip } zip The JSZip instance to encrypt + * @param { EncryptZipRequest } params - The params required to encrypt a zip + * @param { ILitNodeClient } litNodeClient - The Lit Node Client * - * @returns { Promise } A promise containing the encryptedZip as a Blob and the symmetricKey used to encrypt it, as a Uint8Array string. + * @returns { Promise } - The encrypted zip file and the hash of the zip file */ -export const encryptZip = async (zip: JSZip): Promise => { +export const encryptZip = async ( + params: EncryptZipRequest, + litNodeClient: ILitNodeClient +): Promise => { + // -- validate + const paramsIsSafe = safeParams({ + functionName: 'encryptZip', + params, + }); + + if (paramsIsSafe.type === EITHER_TYPE.ERROR) + return throwError({ + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); + + const { zip } = params; let zipBlob; let zipBlobArrayBuffer: ArrayBuffer; @@ -543,49 +469,40 @@ export const encryptZip = async (zip: JSZip): Promise => { zipBlobArrayBuffer = await zip.generateAsync({ type: 'nodebuffer' }); } - const symmKey: CryptoKey = await generateSymmetricKey(); - - const encryptedZipBlob: Blob = await encryptWithSymmetricKey( - symmKey, - zipBlobArrayBuffer - ); - // to download the encrypted zip file for testing, uncomment this // saveAs(encryptedZipBlob, 'encrypted.bin') - const exportedSymmKey: Uint8Array = new Uint8Array( - await crypto.subtle.exportKey('raw', symmKey) - ); - - const encryptedZip: EncryptedZip = { - symmetricKey: exportedSymmKey, - encryptedZip: encryptedZipBlob, - }; - - return encryptedZip; + return litNodeClient.encrypt({ + ...params, + dataToEncrypt: new Uint8Array(zipBlobArrayBuffer), + }); }; /** * - * Encrypt a single file, save the key to the Lit network, and then zip it up with the metadata. + * Encrypt a single file and then zip it up with the metadata. * - * @param { EncryptFileAndZipWithMetadataProps } + * @param { EncryptFileAndZipWithMetadataProps } params - The params required to encrypt a file and zip it up with the metadata * - * @returns { Promise } + * @returns { Promise } - The encrypted zip file and the hash of the zip file * */ -export const encryptFileAndZipWithMetadata = async ({ - authSig, - sessionSigs, - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - chain, - file, - litNodeClient, - readme, -}: EncryptFileAndZipWithMetadataProps): Promise => { +export const encryptFileAndZipWithMetadata = async ( + params: EncryptFileAndZipWithMetadataProps +): Promise => { + const { + authSig, + sessionSigs, + accessControlConditions, + evmContractConditions, + solRpcConditions, + unifiedAccessControlConditions, + chain, + file, + litNodeClient, + readme, + } = params; + // -- validate const paramsIsSafe = safeParams({ functionName: 'encryptFileAndZipWithMetadata', @@ -603,40 +520,20 @@ export const encryptFileAndZipWithMetadata = async ({ }, }); - if (!paramsIsSafe) + if (paramsIsSafe.type === EITHER_TYPE.ERROR) return throwError({ - message: `authSig, sessionSigs, accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions, chain, file, litNodeClient, and readme must be provided`, + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - // -- validate - const symmetricKey = await generateSymmetricKey(); - const exportedSymmKey = new Uint8Array( - await crypto.subtle.exportKey('raw', symmetricKey) - ); - // log('exportedSymmKey in hex', uint8arrayToString(exportedSymmKey, 'base16')) - - const encryptedSymmetricKey = await litNodeClient.saveEncryptionKey({ - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - symmetricKey: exportedSymmKey, - authSig, - sessionSigs, - chain, - }); - - log('encrypted key saved to Lit', encryptedSymmetricKey); - // encrypt the file - var fileAsArrayBuffer = await file.arrayBuffer(); - const encryptedZipBlob = await encryptWithSymmetricKey( - symmetricKey, - fileAsArrayBuffer + const { ciphertext, dataToEncryptHash } = await encryptFile( + { ...params }, + litNodeClient ); + // Zip up with metadata let zip; try { @@ -644,17 +541,17 @@ export const encryptFileAndZipWithMetadata = async ({ } catch (e) { zip = new JSZip(); } - const metadata = metadataForFile({ + const metadata: MetadataForFile = { name: file.name, type: file.type, size: file.size, - encryptedSymmetricKey, accessControlConditions, evmContractConditions, solRpcConditions, unifiedAccessControlConditions, chain, - }); + dataToEncryptHash, + }; zip.file('lit_protocol_metadata.json', JSON.stringify(metadata)); if (readme) { @@ -672,36 +569,26 @@ export const encryptFileAndZipWithMetadata = async ({ }); } - folder.file(file.name, encryptedZipBlob); + folder.file(file.name, uint8arrayFromString(ciphertext, 'base64')); const zipBlob = await zip.generateAsync({ type: 'blob' }); - const threeKeys: ThreeKeys = { - zipBlob, - encryptedSymmetricKey, - symmetricKey: exportedSymmKey, - }; - - return threeKeys; + return zipBlob; }; /** * * Given a zip file with metadata inside it, unzip, load the metadata, and return the decrypted file and the metadata. This zip file would have been created with the encryptFileAndZipWithMetadata function. * - * @param { DecryptZipFileWithMetadataProps } + * @param { DecryptZipFileWithMetadataProps } params - The params required to decrypt a zip file with metadata * * @returns { Promise } A promise containing an object that contains decryptedFile and metadata properties. The decryptedFile is an ArrayBuffer that is ready to use, and metadata is an object that contains all the properties of the file like it's name and size and type. */ -export const decryptZipFileWithMetadata = async ({ - authSig, - sessionSigs, - file, - litNodeClient, - additionalAccessControlConditions, -}: DecryptZipFileWithMetadataProps): Promise< - DecryptZipFileWithMetadata | undefined -> => { +export const decryptZipFileWithMetadata = async ( + params: DecryptZipFileWithMetadataProps +): Promise => { + const { authSig, sessionSigs, file, litNodeClient } = params; + // -- validate const paramsIsSafe = safeParams({ functionName: 'decryptZipFileWithMetadata', @@ -710,11 +597,15 @@ export const decryptZipFileWithMetadata = async ({ sessionSigs, file, litNodeClient, - additionalAccessControlConditions, }, }); - if (!paramsIsSafe) return; + if (paramsIsSafe.type === EITHER_TYPE.ERROR) + return throwError({ + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); // -- execute const zip = await JSZip.loadAsync(file); @@ -728,83 +619,10 @@ export const decryptZipFileWithMetadata = async ({ return; } - const metadata = JSON.parse(await jsonFile.async('string')); + const metadata: MetadataForFile = JSON.parse(await jsonFile.async('string')); log('zip metadata', metadata); - let symmKey; - - try { - symmKey = await litNodeClient.getEncryptionKey({ - accessControlConditions: metadata.accessControlConditions, - evmContractConditions: metadata.evmContractConditions, - solRpcConditions: metadata.solRpcConditions, - unifiedAccessControlConditions: metadata.unifiedAccessControlConditions, - toDecrypt: metadata.encryptedSymmetricKey, - chain: metadata.chain, // -- validate - authSig, - sessionSigs, - }); - } catch (e: any) { - if ( - e.errorCode === 'NodeNotAuthorized' || - e.errorCode === 'not_authorized' - ) { - // try more additionalAccessControlConditions - if (!additionalAccessControlConditions) { - throw e; - } - log('trying additionalAccessControlConditions'); - - // -- loop start - for (let i = 0; i < additionalAccessControlConditions.length; i++) { - const accessControlConditions = - additionalAccessControlConditions[i].accessControlConditions; - - log('trying additional condition', accessControlConditions); - - try { - symmKey = await litNodeClient.getEncryptionKey({ - accessControlConditions: accessControlConditions, - toDecrypt: - additionalAccessControlConditions[i].encryptedSymmetricKey, - chain: metadata.chain, - authSig, - sessionSigs, - }); - - // okay we got the additional symmkey, now we need to decrypt the symmkey and then use it to decrypt the original symmkey - // const importedAdditionalSymmKey = await importSymmetricKey(symmKey) - // symmKey = await decryptWithSymmetricKey(additionalAccessControlConditions[i].encryptedSymmetricKey, importedAdditionalSymmKey) - - break; // it worked, we can leave the loop and stop checking additional access control conditions - } catch (e: any) { - // swallow not_authorized because we are gonna try some more accessControlConditions - if ( - e.errorCode === 'NodeNotAuthorized' || - e.errorCode === 'not_authorized' - ) { - throw e; - } - } - } - // -- loop ends - - if (!symmKey) { - // we tried all the access control conditions and none worked - throw e; - } - } else { - throw e; - } - } - - if (!symmKey) { - return; - } - - const importedSymmKey = await importSymmetricKey(symmKey); - const folder: JSZip | null = zip.folder('encryptedAssets'); if (!folder) { @@ -821,9 +639,21 @@ export const decryptZipFileWithMetadata = async ({ const encryptedFile = await _file.async('blob'); - const decryptedFile = await decryptWithSymmetricKey( - encryptedFile, - importedSymmKey + const decryptedFile = await decryptToFile( + { + ...params, + accessControlConditions: metadata.accessControlConditions, + evmContractConditions: metadata.evmContractConditions, + solRpcConditions: metadata.solRpcConditions, + unifiedAccessControlConditions: metadata.unifiedAccessControlConditions, + chain: metadata.chain, + ciphertext: uint8arrayToString( + new Uint8Array(await encryptedFile.arrayBuffer()), + 'base64' + ), + dataToEncryptHash: metadata.dataToEncryptHash, + }, + litNodeClient ); const data: DecryptZipFileWithMetadata = { decryptedFile, metadata }; @@ -833,93 +663,68 @@ export const decryptZipFileWithMetadata = async ({ /** * - * Encrypt a file without doing any zipping or packing. This is useful for large files. A 1gb file can be encrypted in only 2 seconds, for example. A new random symmetric key will be created and returned along with the encrypted file. + * Encrypt a file without doing any zipping or packing. This is useful for large files. A 1gb file can be encrypted in only 2 seconds, for example. * - * @param { Object } params - * @param { AcceptedFileType } params.file The file you wish to encrypt + * @param { EncryptFileRequest } params - The params required to encrypt a file + * @param { ILitNodeClient } litNodeClient - The lit node client to use to encrypt the file * - * @returns { Promise } A promise containing an object with keys encryptedFile and symmetricKey. encryptedFile is a Blob, and symmetricKey is a Uint8Array that can be used to decrypt the file. + * @returns { Promise } - The encrypted file and the hash of the file */ -export const encryptFile = async ({ - file, -}: { - file: AcceptedFileType; -}): Promise => { +export const encryptFile = async ( + params: EncryptFileRequest, + litNodeClient: ILitNodeClient +): Promise => { // -- validate - if ( - !checkType({ - value: file, - allowedTypes: ['Blob', 'File'], - paramName: 'file', - functionName: 'encryptFile', - }) - ) { + const paramsIsSafe = safeParams({ + functionName: 'encryptFile', + params, + }); + + if (paramsIsSafe.type === EITHER_TYPE.ERROR) return throwError({ - message: 'file must be a Blob or File', + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - } - - // generate a random symmetric key - const symmetricKey = await generateSymmetricKey(); - const exportedSymmKey = new Uint8Array( - await crypto.subtle.exportKey('raw', symmetricKey) - ); // encrypt the file - var fileAsArrayBuffer = await file.arrayBuffer(); - const encryptedFile = await encryptWithSymmetricKey( - symmetricKey, - fileAsArrayBuffer - ); - - const _encryptedFile: EncryptedFile = { - encryptedFile, - symmetricKey: exportedSymmKey, - }; + var fileAsArrayBuffer = await params.file.arrayBuffer(); - return _encryptedFile; + return litNodeClient.encrypt({ + ...params, + dataToEncrypt: new Uint8Array(fileAsArrayBuffer), + }); }; /** * * Decrypt a file that was encrypted with the encryptFile function, without doing any unzipping or unpacking. This is useful for large files. A 1gb file can be decrypted in only 1 second, for example. * - * @property { Object } params - * @property { AcceptedFileType } params.file The file you wish to decrypt - * @property { Uint8Array } params.symmetricKey The symmetric key used that will be used to decrypt this. + * @param { DecryptRequest } params - The params required to decrypt a file + * @param { ILitNodeClient } litNodeClient - The lit node client to use to decrypt the file * - * @returns { Promise } A promise containing the decrypted file. The file is an ArrayBuffer. + * @returns { Promise } - The decrypted file */ -export const decryptFile = async ({ - file, - symmetricKey, -}: DecryptFileProps): Promise => { +export const decryptToFile = async ( + params: DecryptRequest, + litNodeClient: ILitNodeClient +): Promise => { // -- validate const paramsIsSafe = safeParams({ - functionName: 'decryptFile', - params: { - file, - symmetricKey, - }, + functionName: 'decrypt', + params, }); - if (!paramsIsSafe) { + if (paramsIsSafe.type === EITHER_TYPE.ERROR) return throwError({ - message: `file type must be Blob or File, and symmetricKey type must be Uint8Array | string | CryptoKey | BufferSource`, + message: `Invalid params: ${(paramsIsSafe.result as ILitError).message}`, errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - } - // -- execute - const importedSymmKey = await importSymmetricKey(symmetricKey); - - // decrypt the file - const decryptedFile = await decryptWithSymmetricKey(file, importedSymmKey); + const { decryptedData } = await litNodeClient.decrypt(params); - return decryptedFile; + return decryptedData; }; declare global { @@ -932,13 +737,16 @@ declare global { /** * // TODO check for expiration * - * Verify a JWT from the LIT network. Use this for auth on your server. For some background, users can define resources (URLs) for authorization via on-chain conditions using the saveSigningCondition function. Other users can then request a signed JWT proving that their ETH account meets those on-chain conditions using the getSignedToken function. Then, servers can verify that JWT using this function. A successful verification proves that the user meets the on-chain conditions defined in the saveSigningCondition step. For example, the on-chain condition could be posession of a specific NFT. + * Verify a JWT from the LIT network. Use this for auth on your server. For some background, users can specify access control condiitons for various URLs, and then other users can then request a signed JWT proving that their ETH account meets those on-chain conditions using the getSignedToken function. Then, servers can verify that JWT using this function. A successful verification proves that the user meets the access control conditions defined earlier. For example, the on-chain condition could be posession of a specific NFT. * * @param { VerifyJWTProps } jwt * - * @returns { IJWT } An object with 4 keys: "verified": A boolean that represents whether or not the token verifies successfully. A true result indicates that the token was successfully verified. "header": the JWT header. "payload": the JWT payload which includes the resource being authorized, etc. "signature": A uint8array that represents the raw signature of the JWT. + * @returns { IJWT } An object with 4 keys: "verified": A boolean that represents whether or not the token verifies successfully. A true result indicates that the token was successfully verified. "header": the JWT header. "payload": the JWT payload which includes the resource being authorized, etc. "signature": A uint8array that represents the raw signature of the JWT. */ -export const verifyJwt = ({ jwt }: VerifyJWTProps): IJWT => { +export const verifyJwt = ({ + publicKey, + jwt, +}: VerifyJWTProps): IJWT => { // -- validate if ( !checkType({ @@ -961,34 +769,24 @@ export const verifyJwt = ({ jwt }: VerifyJWTProps): IJWT => { log('wasmExports is not loaded.'); } - const pubKey = uint8arrayFromString(NETWORK_PUB_KEY, 'base16'); - // log("pubkey is ", pubKey); - const jwtParts = jwt.split('.'); - const sig = uint8arrayFromString(jwtParts[2], 'base64url'); - // log("sig is ", uint8arrayToString(sig, "base16")); + const signature = uint8arrayFromString(jwtParts[2], 'base64url'); const unsignedJwt = `${jwtParts[0]}.${jwtParts[1]}`; - // log("unsignedJwt is ", unsignedJwt); const message = uint8arrayFromString(unsignedJwt); - // log("message is ", message); - // p is public key uint8array - // s is signature uint8array - // m is message uint8array - // function is: function (p, s, m) - const verified = Boolean(wasmBlsSdkHelpers.verify(pubKey, sig, message)); + verifySignature(publicKey, message, signature); - const _jwt: IJWT = { - verified, + const _jwt: IJWT = { + verified: true, header: JSON.parse( uint8arrayToString(uint8arrayFromString(jwtParts[0], 'base64url')) ), payload: JSON.parse( uint8arrayToString(uint8arrayFromString(jwtParts[1], 'base64url')) ), - signature: sig, + signature, }; return _jwt; diff --git a/packages/encryption/src/lib/params-validators.ts b/packages/encryption/src/lib/params-validators.ts index 8a5d75354f..991e1e7f12 100644 --- a/packages/encryption/src/lib/params-validators.ts +++ b/packages/encryption/src/lib/params-validators.ts @@ -3,18 +3,34 @@ * returns a boolean value indicating whether the validation is passed or not. */ -import { LIT_ERROR } from '@lit-protocol/constants'; +import { + EITHER_TYPE, + ELeft, + ERight, + IEither, + LIT_ERROR, +} from '@lit-protocol/constants'; import { + AcceptedFileType, + AccessControlConditions, + AuthSig, DecryptFileProps, - JsonEncryptionRetrieveRequest, - JsonSaveEncryptionKeyRequest, + DecryptFromIpfsProps, + DecryptRequest, DecryptZipFileWithMetadataProps, EncryptFileAndZipWithMetadataProps, + EncryptFileRequest, + EncryptRequest, + EncryptStringRequest, EncryptToIpfsProps, - DecryptFromIpfsProps, - KV, + EncryptZipRequest, + EvmContractConditions, ExecuteJsProps, + GetSignedTokenRequest, + SessionSigs, + SolRpcConditions, + UnifiedAccessControlConditions, } from '@lit-protocol/types'; import { @@ -22,8 +38,8 @@ import { checkType, is, log, - throwError, } from '@lit-protocol/misc'; +import { isHexString } from 'ethers/lib/utils'; export const safeParams = ({ functionName, @@ -31,791 +47,490 @@ export const safeParams = ({ }: { functionName: string; params: any[] | any; -}) => { - const validators = paramsValidators as KV; - - const validator = validators[functionName](params); - - if (!validator) { +}): IEither => { + if (!paramsValidators[functionName]) { log(`This function ${functionName} is skipping params safe guarding.`); - return true; + return ERight(undefined); } - return validator; -}; - -export const paramsValidators = { - executeJs: (params: ExecuteJsProps) => { - // -- prepare params - const { - code, - ipfsId, - authSig, - jsParams, - debug, - sessionSigs, - authMethods = [], - } = params; - - // -- validate: either 'code' or 'ipfsId' must exists - if (!code && !ipfsId) { - const message = 'You must pass either code or ipfsId'; - throwError({ - message, - errorKind: LIT_ERROR.PARAMS_MISSING_ERROR.kind, - errorCode: LIT_ERROR.PARAMS_MISSING_ERROR.name, - }); - return false; - } - - // -- validate: 'code' and 'ipfsId' can't exists at the same time - if (code && ipfsId) { - const message = "You cannot have both 'code' and 'ipfs' at the same time"; + const paramValidators = paramsValidators[functionName](params); - throwError({ - message, - errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, - errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, - }); - return false; + for (const validator of paramValidators) { + const validationResponse = validator.validate(); + if (validationResponse.type === EITHER_TYPE.ERROR) { + return validationResponse; } + } - // -- validate: authSig and its type is correct - if ( - authSig && - !checkType({ - value: authSig, - allowedTypes: ['Object'], - paramName: 'authSig', - functionName: 'executeJs', - }) - ) - return false; + return ERight(undefined); +}; - // -- validate: sessionSigs and its type is correct - if (sessionSigs && !is(sessionSigs, 'Object', 'sessionSigs', 'executeJs')) - return false; +export const paramsValidators: { + [key: string]: (params: any) => ParamsValidator[]; +} = { + executeJs: (params: ExecuteJsProps) => [ + new AuthMaterialValidator('executeJs', params), + new ExecuteJsValidator('executeJs', params), + new AuthMethodValidator('executeJs', params.authMethods), + ], + + encrypt: (params: EncryptRequest) => [ + new AccessControlConditionsValidator('encrypt', params), + new AuthMaterialValidator('encrypt', params, true), + ], + + encryptFile: (params: EncryptFileRequest) => [ + new AccessControlConditionsValidator('encryptFile', params), + new AuthMaterialValidator('encryptFile', params), + new FileValidator('encryptFile', params.file), + ], + + encryptString: (params: EncryptStringRequest) => [ + new AccessControlConditionsValidator('encryptString', params), + new AuthMaterialValidator('encryptString', params, true), + new StringValidator('encryptString', params.dataToEncrypt, 'dataToEncrypt'), + ], + + encryptZip: (params: EncryptZipRequest) => [ + new AccessControlConditionsValidator('encryptZip', params), + new AuthMaterialValidator('encryptZip', params), + ], + + zipAndEncryptString: (params: EncryptStringRequest) => [ + new StringValidator('zipAndEncryptString', params.dataToEncrypt), + ], + + decrypt: (params: DecryptRequest) => [ + new AccessControlConditionsValidator('decrypt', params), + new AuthMaterialValidator('decrypt', params, true), + new StringValidator('decrypt', params.ciphertext, 'ciphertext'), + ], + + decryptZipFileWithMetadata: (params: DecryptZipFileWithMetadataProps) => [ + new AuthMaterialValidator('decryptZipFileWithMetadata', params), + new FileValidator('decryptZipFileWithMetadata', params.file), + ], + + decryptToZip: (params: any) => [ + new FileValidator('decryptToZip', params.encryptedZipBlob), + ], + + encryptToIpfs: (params: EncryptToIpfsProps) => [ + new AccessControlConditionsValidator('encryptToIpfs', params), + new AuthMaterialValidator('encryptToIpfs', params, true), + new IpfsValidator('encryptToIpfs', params), + ], + + decryptFromIpfs: (params: DecryptFromIpfsProps) => [ + new AuthMaterialValidator('decryptFromIpfs', params), + ], - // -- validate: authMethods and its type is correct - if ( - authMethods && - authMethods.length > 0 && - !checkType({ - value: authMethods, - allowedTypes: ['Array'], - paramName: 'authMethods', - functionName: 'executeJs', - }) - ) - return false; + encryptFileAndZipWithMetadata: ( + params: EncryptFileAndZipWithMetadataProps + ) => [ + new AuthMaterialValidator('encryptFileAndZipWithMetadata', params, true), + new AccessControlConditionsValidator( + 'encryptFileAndZipWithMetadata', + params + ), + new FileValidator('encryptFileAndZipWithMetadata', params.file), + new StringValidator( + 'encryptFileAndZipWithMetadata', + params.readme, + 'readme' + ), + ], + + getSignedToken: (params: GetSignedTokenRequest) => [ + new AccessControlConditionsValidator('decrypt', params), + new AuthMaterialValidator('decrypt', params, true), + ], +}; - // -- validate: if sessionSig or authSig exists - if (!sessionSigs && !authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - return false; - } +export type ParamsValidatorsType = typeof paramsValidators; - // -- validate: if sessionSig and authSig exists - if (sessionSigs && authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - return false; - } +//////////////////////// VALIDATORS //////////////////////// - return true; - }, +interface ParamsValidator { + validate: () => IEither; +} - saveEncryptionKey: (params: JsonSaveEncryptionKeyRequest) => { - // -- prepare params - const { - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - authSig, - chain, - symmetricKey, - encryptedSymmetricKey, - permanant, - permanent, - sessionSigs, - } = params; +class IpfsValidator implements ParamsValidator { + private fnName: string; + private params: EncryptToIpfsProps; - if ( - accessControlConditions && - !is( - accessControlConditions, - 'Array', - 'accessControlConditions', - 'saveEncryptionKey' - ) - ) - return false; - if ( - evmContractConditions && - !is( - evmContractConditions, - 'Array', - 'evmContractConditions', - 'saveEncryptionKey' - ) - ) - return false; - if ( - solRpcConditions && - !is(solRpcConditions, 'Array', 'solRpcConditions', 'saveEncryptionKey') - ) - return false; - if ( - unifiedAccessControlConditions && - !is( - unifiedAccessControlConditions, - 'Array', - 'unifiedAccessControlConditions', - 'saveEncryptionKey' - ) - ) - return false; + constructor(fnName: string, params: EncryptToIpfsProps) { + this.fnName = fnName; + this.params = params; + } - // log('authSig:', authSig); - if (authSig && !is(authSig, 'Object', 'authSig', 'saveEncryptionKey')) - return false; - if ( - authSig && - !checkIfAuthSigRequiresChainParam(authSig, chain, 'saveEncryptionKey') - ) - return false; + validate(): IEither { + const validators = [ + new FileValidator(this.fnName, this.params.file), + new StringValidator(this.fnName, this.params.string), + ]; + + for (const validator of validators) { + const validationResponse = validator.validate(); + if (validationResponse.type === EITHER_TYPE.ERROR) { + return validationResponse; + } + } - if ( - sessionSigs && - !is(sessionSigs, 'Object', 'sessionSigs', 'saveEncryptionKey') - ) - return false; + const { file, string, infuraId, infuraSecretKey } = this.params; - if (!sessionSigs && !authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + if (string === undefined && file === undefined) + return ELeft({ + message: `Either string or file must be provided`, + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - return false; - } - - if ( - symmetricKey && - !is(symmetricKey, 'Uint8Array', 'symmetricKey', 'saveEncryptionKey') - ) - return false; - if ( - encryptedSymmetricKey && - !is( - encryptedSymmetricKey, - 'Uint8Array', - 'encryptedSymmetricKey', - 'saveEncryptionKey' - ) - ) - return false; - // to fix spelling mistake - if (typeof params.permanant !== 'undefined') { - params.permanent = params.permanant; - } + if (!infuraId || !infuraSecretKey) + return ELeft({ + message: + 'Please provide your Infura Project Id and Infura API Key Secret to add the encrypted metadata on IPFS', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); - if ( - (!symmetricKey || symmetricKey == '') && - (!encryptedSymmetricKey || encryptedSymmetricKey == '') - ) { - throw new Error( - 'symmetricKey and encryptedSymmetricKey are blank. You must pass one or the other' - ); - } + if (string !== undefined && file !== undefined) + return ELeft({ + message: 'Provide only either a string or file to encrypt', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); - if ( - !accessControlConditions && - !evmContractConditions && - !solRpcConditions && - !unifiedAccessControlConditions - ) { - throw new Error( - 'accessControlConditions and evmContractConditions and solRpcConditions and unifiedAccessControlConditions are blank' - ); - } + return ERight(undefined); + } +} + +class StringValidator implements ParamsValidator { + private fnName: string; + private paramName: string; + private checkIsHex: boolean; + private str?: string; + + constructor( + fnName: string, + str?: string, + paramName: string = 'string', + checkIsHex: boolean = false + ) { + this.fnName = fnName; + this.paramName = paramName; + this.checkIsHex = checkIsHex; + this.str = str; + } - // -- validate: if sessionSig and authSig exists - if (sessionSigs && authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + validate(): IEither { + if (!this.str) { + return ELeft({ + message: 'string is undefined', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - return false; } - // -- case: success - return true; - }, - - getEncryptionKey: (params: JsonEncryptionRetrieveRequest) => { - const { - accessControlConditions, - evmContractConditions, - solRpcConditions, - unifiedAccessControlConditions, - toDecrypt, - authSig, - chain, - sessionSigs, - } = params; - - // -- validate if ( - accessControlConditions && - !is( - accessControlConditions, - 'Array', - 'accessControlConditions', - 'getEncryptionKey' - ) - ) - return false; - - if ( - evmContractConditions && - !is( - evmContractConditions, - 'Array', - 'evmContractConditions', - 'getEncryptionKey' - ) - ) - return false; - - if ( - solRpcConditions && - !is(solRpcConditions, 'Array', 'solRpcConditions', 'getEncryptionKey') - ) - return false; - - if ( - unifiedAccessControlConditions && - !is( - unifiedAccessControlConditions, - 'Array', - 'unifiedAccessControlConditions', - 'getEncryptionKey' - ) - ) - return false; - - log('TYPEOF toDecrypt in getEncryptionKey():', typeof toDecrypt); - if (!is(toDecrypt, 'String', 'toDecrypt', 'getEncryptionKey')) return false; - if (authSig && !is(authSig, 'Object', 'authSig', 'getEncryptionKey')) - return false; - if ( - sessionSigs && - !is(sessionSigs, 'Object', 'sessionSigs', 'getEncryptionKey') + !checkType({ + value: this.str, + allowedTypes: ['String'], + paramName: this.paramName, + functionName: this.fnName, + }) ) - return false; - - // -- validate: if sessionSig or authSig exists - if (!sessionSigs && !authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + return ELeft({ + message: `${this.paramName} is not a string`, + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - return false; - } - // -- validate: if sessionSig and authSig exists - if (sessionSigs && authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + if (this.checkIsHex && !isHexString(this.str)) { + return ELeft({ + message: `${this.paramName} is not a valid hex string`, + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - return false; } - // -- validate if 'chain' is null - if (!chain) { - return false; - } - - if ( - authSig && - !checkIfAuthSigRequiresChainParam(authSig, chain, 'getEncryptionKey') - ) - return false; + return ERight(undefined); + } +} - return true; - }, +class AuthMethodValidator implements ParamsValidator { + private fnName: string; + private authMethods?: Object[]; - decryptString: (params: any) => { - const encryptedStringBlob: Blob = params[0]; - const symmKey: Uint8Array = params[1]; + constructor(fnName: string, authMethods?: Object[]) { + this.fnName = fnName; + this.authMethods = authMethods; + } - // -- validate - if ( - !checkType({ - value: encryptedStringBlob, - allowedTypes: ['Blob', 'File'], - paramName: 'encryptedStringBlob', - functionName: 'decryptString', - }) - ) - return false; + validate(): IEither { + const { fnName, authMethods } = this; if ( + authMethods && + authMethods.length > 0 && !checkType({ - value: symmKey, - allowedTypes: ['Uint8Array'], - paramName: 'symmKey', - functionName: 'decryptString', + value: authMethods, + allowedTypes: ['Array'], + paramName: 'authMethods', + functionName: this.fnName, }) ) - return false; - - // -- success - return true; - }, + return ELeft({ + message: `authMethods is not an array`, + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); - decryptFile: (params: DecryptFileProps) => { - // -- validate - if ( - !checkType({ - value: params.file, - allowedTypes: ['Blob', 'File'], - paramName: 'file', - functionName: 'decryptFile', - }) - ) - return false; + return ERight(undefined); + } +} - // -- validate - if ( - !checkType({ - value: params.symmetricKey, - allowedTypes: ['Uint8Array'], - paramName: 'symmetricKey', - functionName: 'decryptFile', - }) - ) - return false; +interface ExecuteJsValidatorProps { + code?: string; + ipfsId?: string; +} - return true; - }, +class ExecuteJsValidator implements ParamsValidator { + private fnName: string; + private params: ExecuteJsValidatorProps; - decryptZipFileWithMetadata: (params: DecryptZipFileWithMetadataProps) => { - // -- validate - if ( - params.authSig && - !checkType({ - value: params.authSig, - allowedTypes: ['Object'], - paramName: 'authSig', - functionName: 'decryptZipFileWithMetadata', - }) - ) - return false; + constructor(fnName: string, params: ExecuteJsValidatorProps) { + this.fnName = fnName; + this.params = params; + } - // -- validate: sessionSigs and its type is correct - if ( - params.sessionSigs && - !is( - params.sessionSigs, - 'Object', - 'sessionSigs', - 'decryptZipFileWithMetadata' - ) - ) - return false; + validate(): IEither { + const { code, ipfsId } = this.params; - // -- validate: if sessionSig or authSig exists - if (!params.sessionSigs && !params.authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + // -- validate: either 'code' or 'ipfsId' must exists + if (!code && !ipfsId) { + return ELeft({ + message: 'You must pass either code or ipfsId', + errorKind: LIT_ERROR.PARAMS_MISSING_ERROR.kind, + errorCode: LIT_ERROR.PARAMS_MISSING_ERROR.name, }); - return false; } - // -- validate: if sessionSig and authSig exists - if (params.sessionSigs && params.authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + // -- validate: 'code' and 'ipfsId' can't exists at the same time + if (code && ipfsId) { + return ELeft({ + message: "You cannot have both 'code' and 'ipfs' at the same time", + errorKind: LIT_ERROR.PARAMS_MISSING_ERROR.kind, + errorCode: LIT_ERROR.PARAMS_MISSING_ERROR.name, }); - return false; } - // -- validate - if ( - !checkType({ - value: params.file, - allowedTypes: ['Blob', 'File'], - paramName: 'file', - functionName: 'decryptZipFileWithMetadata', - }) - ) - return false; - - // -- success case - return true; - }, - - decryptZip: (params: any) => { - const { encryptedZipBlob, symmKey } = params; - - log('encryptedZipBlob:', encryptedZipBlob); - - // -- validate - if ( - !checkType({ - value: encryptedZipBlob, - allowedTypes: ['Blob', 'File'], - paramName: 'encryptedZipBlob', - functionName: 'decryptZip', - }) - ) - return false; - - // -- validate - if ( - !checkType({ - value: symmKey, - allowedTypes: ['Uint8Array'], - paramName: 'symmKey', - functionName: 'decryptZip', - }) - ) - return false; - - return true; - }, - - encryptToIpfs: (params: EncryptToIpfsProps) => { - // -- validate - - log('params:', params); - - if ( - params.authSig && - !checkType({ - value: params.authSig, - allowedTypes: ['Object'], - paramName: 'authSig', - functionName: 'encryptToIpfs', - }) - ) - return false; - - // -- validate - if ( - params.accessControlConditions && - !checkType({ - value: params.accessControlConditions, - allowedTypes: ['Array'], - paramName: 'accessControlConditions', - functionName: 'encryptToIpfs', - }) - ) - return false; - - // -- validate - if ( - params.evmContractConditions && - !checkType({ - value: params.evmContractConditions, - allowedTypes: ['Array'], - paramName: 'evmContractConditions', - functionName: 'encryptToIpfs', - }) - ) - return false; - - // -- validate - if ( - params.solRpcConditions && - !checkType({ - value: params.solRpcConditions, - allowedTypes: ['Array'], - paramName: 'solRpcConditions', - functionName: 'encryptToIpfs', - }) - ) - return false; - - // -- validate - if ( - params.unifiedAccessControlConditions && - !checkType({ - value: params.unifiedAccessControlConditions, - allowedTypes: ['Array'], - paramName: 'unifiedAccessControlConditions', - functionName: 'encryptToIpfs', - }) - ) - return false; - - // -- validate - if ( - params.authSig && - !checkIfAuthSigRequiresChainParam( - params.authSig, - params.chain, - 'encryptToIpfs' - ) - ) - return false; + return ERight(undefined); + } +} - // -- validate: sessionSigs and its type is correct - if ( - params.sessionSigs && - !is(params.sessionSigs, 'Object', 'sessionSigs', 'encryptToIpfs') - ) - return false; +class FileValidator implements ParamsValidator { + private fnName: string; + private file?: AcceptedFileType; - // -- validate: if sessionSig or authSig exists - if (!params.sessionSigs && !params.authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - return false; - } + constructor(fnName: string, file?: AcceptedFileType) { + this.fnName = fnName; + this.file = file; + } - // -- validate: if sessionSig and authSig exists - if (params.sessionSigs && params.authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', + validate(): IEither { + if (!this.file) { + return ELeft({ + message: 'You must pass file param', errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); - return false; } - // -- validate if ( - params.string !== undefined && !checkType({ - value: params.string, - allowedTypes: ['String'], - paramName: 'string', - functionName: 'encryptToIpfs', - }) - ) - return false; - - // -- validate - if ( - params.file !== undefined && - !checkType({ - value: params.file, + value: this.file, allowedTypes: ['Blob', 'File'], paramName: 'file', - functionName: 'encryptToIpfs', + functionName: this.fnName, }) ) - return false; + return ELeft({ + message: 'File param is not a valid Blob or File object', + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + }); - // -- success case - return true; - }, + return ERight(undefined); + } +} + +export interface AuthMaterialValidatorProps { + authSig?: AuthSig; + sessionSigs?: SessionSigs; + chain?: string; +} + +class AuthMaterialValidator implements ParamsValidator { + private fnName: string; + private authMaterial: AuthMaterialValidatorProps; + private checkIfAuthSigRequiresChainParam: boolean; + + constructor( + fnName: string, + params: AuthMaterialValidatorProps, + checkIfAuthSigRequiresChainParam: boolean = false + ) { + this.fnName = fnName; + this.authMaterial = params; + this.checkIfAuthSigRequiresChainParam = checkIfAuthSigRequiresChainParam; + } - decryptFromIpfs: (params: DecryptFromIpfsProps) => { - // -- validate + validate(): IEither { + const { authSig, sessionSigs } = this.authMaterial; - log('params:', params); + if (authSig && !is(authSig, 'Object', 'authSig', this.fnName)) + return ELeft({ + message: 'authSig is not an object', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); - if ( - params.authSig && - !checkType({ - value: params.authSig, - allowedTypes: ['Object'], - paramName: 'authSig', - functionName: 'decryptFromIpfs', - }) - ) - return false; + if (this.checkIfAuthSigRequiresChainParam) { + if (!this.authMaterial.chain) + return ELeft({ + message: 'You must pass chain param', + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + }); + + if ( + authSig && + !checkIfAuthSigRequiresChainParam( + authSig, + this.authMaterial.chain, + this.fnName + ) + ) + return ELeft({ + message: 'authSig is not valid', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); + } - // -- validate: sessionSigs and its type is correct - if ( - params.sessionSigs && - !is(params.sessionSigs, 'Object', 'sessionSigs', 'decryptFromIpfs') - ) - return false; + if (sessionSigs && !is(sessionSigs, 'Object', 'sessionSigs', this.fnName)) + return ELeft({ + message: 'sessionSigs is not an object', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); - // -- validate: if sessionSig or authSig exists - if (!params.sessionSigs && !params.authSig) { - throwError({ + if (!sessionSigs && !authSig) + return ELeft({ message: 'You must pass either authSig or sessionSigs', errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); - return false; - } // -- validate: if sessionSig and authSig exists - if (params.sessionSigs && params.authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', + if (sessionSigs && authSig) + return ELeft({ + message: 'You cannot have both authSig and sessionSigs', errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); - return false; - } - - // -- success case - return true; - }, - encryptFileAndZipWithMetadata: ( - params: EncryptFileAndZipWithMetadataProps - ) => { - // -- validate - - log('params:', params); - - if ( - params.authSig && - !checkType({ - value: params.authSig, - allowedTypes: ['Object'], - paramName: 'authSig', - functionName: 'encryptFileAndZipWithMetadata', - }) - ) - return false; - - // -- validate - if ( - params.accessControlConditions && - !checkType({ - value: params.accessControlConditions, - allowedTypes: ['Array'], - paramName: 'accessControlConditions', - functionName: 'encryptFileAndZipWithMetadata', - }) - ) - return false; + return ERight(undefined); + } +} + +export interface AccessControlConditionsValidatorProps { + accessControlConditions?: AccessControlConditions; + evmContractConditions?: EvmContractConditions; + solRpcConditions?: SolRpcConditions; + unifiedAccessControlConditions?: UnifiedAccessControlConditions; +} + +class AccessControlConditionsValidator implements ParamsValidator { + private fnName: string; + private conditions: AccessControlConditionsValidatorProps; + + constructor(fnName: string, params: AccessControlConditionsValidatorProps) { + this.fnName = fnName; + this.conditions = params; + } - // -- validate - if ( - params.evmContractConditions && - !checkType({ - value: params.evmContractConditions, - allowedTypes: ['Array'], - paramName: 'evmContractConditions', - functionName: 'encryptFileAndZipWithMetadata', - }) - ) - return false; + validate(): IEither { + const { + accessControlConditions, + evmContractConditions, + solRpcConditions, + unifiedAccessControlConditions, + } = this.conditions; - // -- validate if ( - params.solRpcConditions && - !checkType({ - value: params.solRpcConditions, - allowedTypes: ['Array'], - paramName: 'solRpcConditions', - functionName: 'encryptFileAndZipWithMetadata', - }) + accessControlConditions && + !is( + accessControlConditions, + 'Array', + 'accessControlConditions', + this.fnName + ) ) - return false; - - // -- validate + return ELeft({ + message: 'accessControlConditions is not an array', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); if ( - params.unifiedAccessControlConditions && - !checkType({ - value: params.unifiedAccessControlConditions, - allowedTypes: ['Array'], - paramName: 'unifiedAccessControlConditions', - functionName: 'encryptFileAndZipWithMetadata', - }) + evmContractConditions && + !is(evmContractConditions, 'Array', 'evmContractConditions', this.fnName) ) - return false; + return ELeft({ + message: 'evmContractConditions is not an array', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); - // -- validate if ( - params.authSig && - !checkIfAuthSigRequiresChainParam( - params.authSig, - params.chain, - 'encryptFileAndZipWithMetadata' - ) + solRpcConditions && + !is(solRpcConditions, 'Array', 'solRpcConditions', this.fnName) ) - return false; + return ELeft({ + message: 'solRpcConditions is not an array', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, + }); - // -- validate: sessionSigs and its type is correct if ( - params.sessionSigs && + unifiedAccessControlConditions && !is( - params.sessionSigs, - 'Object', - 'sessionSigs', - 'encryptFileAndZipWithMetadata' + unifiedAccessControlConditions, + 'Array', + 'unifiedAccessControlConditions', + this.fnName ) ) - return false; - - // -- validate: if sessionSig or authSig exists - if (!params.sessionSigs && !params.authSig) { - throwError({ - message: 'You must pass either authSig or sessionSigs', - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + return ELeft({ + message: 'unifiedAccessControlConditions is not an array', + errorKind: LIT_ERROR.INVALID_PARAM_TYPE.kind, + errorCode: LIT_ERROR.INVALID_PARAM_TYPE.name, }); - return false; - } - // -- validate: if sessionSig and authSig exists - if (params.sessionSigs && params.authSig) { - throwError({ - message: 'You must pass only one authSig or sessionSigs', + if ( + !accessControlConditions && + !evmContractConditions && + !solRpcConditions && + !unifiedAccessControlConditions + ) + return ELeft({ + message: + 'You must pass either accessControlConditions, evmContractConditions, solRpcConditions or unifiedAccessControlConditions', errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); - return false; - } - // -- validate - if ( - !checkType({ - value: params.file, - allowedTypes: ['File'], - paramName: 'file', - functionName: 'encryptFileAndZipWithMetadata', - }) - ) - return false; - - // -- validate - if ( - params.readme && - !checkType({ - value: params.readme, - allowedTypes: ['String'], - paramName: 'readme', - functionName: 'encryptFileAndZipWithMetadata', - }) - ) - return false; - - // -- success case - return true; - }, -}; - -export type ParamsValidatorsType = typeof paramsValidators; + return ERight(undefined); + } +} diff --git a/packages/lit-auth-client/src/lib/lit-auth-client.ts b/packages/lit-auth-client/src/lib/lit-auth-client.ts index 0d3052b1f9..3ee667e6be 100644 --- a/packages/lit-auth-client/src/lib/lit-auth-client.ts +++ b/packages/lit-auth-client/src/lib/lit-auth-client.ts @@ -41,7 +41,6 @@ export class LitAuthClient { private litOtpOptions: OtpProviderOptions | undefined; - /** * Create a LitAuthClient instance * @@ -80,7 +79,7 @@ export class LitAuthClient { this.litNodeClient = options?.litNodeClient; } else { this.litNodeClient = new LitNodeClient({ - litNetwork: 'serrano', + litNetwork: 'cayenne', debug: false, }); } diff --git a/packages/lit-node-client-nodejs/src/index.ts b/packages/lit-node-client-nodejs/src/index.ts index a655455586..4ff0f311db 100644 --- a/packages/lit-node-client-nodejs/src/index.ts +++ b/packages/lit-node-client-nodejs/src/index.ts @@ -21,9 +21,9 @@ if (!globalThis.LitNodeClientNodeJs) { export * from './lib/lit-node-client-nodejs'; export { - decryptFile, - decryptString, - decryptZip, + decryptToFile, + decryptToString, + decryptToZip, decryptZipFileWithMetadata, decryptFromIpfs, encryptFile, diff --git a/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.spec.ts b/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.spec.ts index 2944ca9f0d..c5b9612377 100644 --- a/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.spec.ts +++ b/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.spec.ts @@ -84,9 +84,9 @@ describe('LitNodeClientNodeJs', () => { // --global let litNodeClient: LitNodeClientNodeJs; - it('should connect to serrano network and return true after connected', async () => { + it('should connect to cayenne network and return true after connected', async () => { litNodeClient = new LitNodeClientNodeJs({ - litNetwork: 'serrano', + litNetwork: 'cayenne', debug: false, }); @@ -132,20 +132,20 @@ describe('LitNodeClientNodeJs', () => { expect(litNodeClient).toBeDefined(); }); - it('should be able to instantiate a new LitNodeClientNodeJs to serrano', async () => { + it('should be able to instantiate a new LitNodeClientNodeJs to cayenne', async () => { const litNodeClient = new LitNodeClientNodeJs({ - litNetwork: 'serrano', + litNetwork: 'cayenne', }); await litNodeClient.connect(); - expect(litNodeClient.config.litNetwork).toBe('serrano'); + expect(litNodeClient.config.litNetwork).toBe('cayenne'); }); - it('should be able to instantiate a new LitNodeClientNodeJs to jalapeno', async () => { + it('should be able to instantiate a new LitNodeClientNodeJs to cayenne', async () => { const litNodeClient = new LitNodeClientNodeJs({ - litNetwork: 'jalapeno', + litNetwork: 'cayenne', }); await litNodeClient.connect(); - expect(litNodeClient.config.litNetwork).toBe('jalapeno'); + expect(litNodeClient.config.litNetwork).toBe('cayenne'); }); it('should be able to instantiate a new LitNodeClientNodeJs to localhost', async () => { @@ -157,7 +157,7 @@ describe('LitNodeClientNodeJs', () => { it('should connect to lit nodes', async () => { litNodeClient = new LitNodeClientNodeJs({ - litNetwork: 'serrano', + litNetwork: 'cayenne', }); await litNodeClient.connect(); diff --git a/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts b/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts index 5d2aff9852..0d22c0876f 100644 --- a/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts +++ b/packages/lit-node-client-nodejs/src/lib/lit-node-client-nodejs.ts @@ -1,96 +1,96 @@ -import { - canonicalAccessControlConditionFormatter, - canonicalResourceIdFormatter, - hashResourceId, -} from '@lit-protocol/access-control-conditions'; -import { wasmBlsSdkHelpers } from '@lit-protocol/bls-sdk'; +import { canonicalAccessControlConditionFormatter } from '@lit-protocol/access-control-conditions'; import { - LIT_ERROR, - LOCAL_STORAGE_KEYS, - SIGTYPE, - LIT_SESSION_KEY_URI, AUTH_METHOD_TYPE_IDS, EITHER_TYPE, + LIT_ERROR, + LIT_SESSION_KEY_URI, + LOCAL_STORAGE_KEYS, } from '@lit-protocol/constants'; import { + combineEcdsaShares, + combineSignatureShares, + encrypt, + generateSessionKeyPair, + verifyAndDecryptWithSignatureShares, +} from '@lit-protocol/crypto'; +import { safeParams } from '@lit-protocol/encryption'; +import { + convertLitActionsParams, + log, + mostCommonString, + throwError, +} from '@lit-protocol/misc'; +import { + AuthCallback, + AuthCallbackParams, + AuthMethod, + AuthSig, CustomNetwork, - DecryptedData, + DecryptRequest, + DecryptResponse, + EncryptRequest, + EncryptResponse, ExecuteJsProps, ExecuteJsResponse, FormattedMultipleAccs, GetSessionSigsProps, GetSignSessionKeySharesProp, - AuthSig, + GetSignedTokenRequest, + GetSigningShareForDecryptionRequest, + GetWalletSigProps, JsonExecutionRequest, + JsonPkpSignRequest, JsonSignChainDataRequest, - JsonSigningRetrieveRequest, - JsonSigningStoreRequest, - JsonStoreSigningRequest, LitNodeClientConfig, + NodeBlsSigningShare, NodeCommandResponse, NodeLog, NodeResponse, NodeShare, + PKPSignShare, RejectedNodePromises, SessionKeyPair, SessionSigningTemplate, - SignedChainDataToken, - SignedData, - SignSessionKeyProp, + SessionSigsMap, SigShare, SignConditionECDSA, + SignSessionKeyProp, + SignSessionKeyResponse, + SignedData, + SigningAccessControlConditionRequest, SuccessNodePromises, ValidateAndSignECDSA, - AuthCallbackParams, WebAuthnAuthenticationVerificationParams, - AuthMethod, - SignSessionKeyResponse, - GetWalletSigProps, - SessionSigsMap, - AuthCallback, - JsonPkpSignRequest, } from '@lit-protocol/types'; -import { - combineBlsDecryptionShares, - combineBlsShares, - combineEcdsaShares, - generateSessionKeyPair, -} from '@lit-protocol/crypto'; -import { safeParams } from '@lit-protocol/encryption'; -import { - convertLitActionsParams, - log, - mostCommonString, - throwError, -} from '@lit-protocol/misc'; import { uint8arrayFromString, uint8arrayToString, } from '@lit-protocol/uint8arrays'; import { computeAddress } from '@ethersproject/transactions'; -import { SiweMessage } from 'lit-siwe'; import { joinSignature, sha256 } from 'ethers/lib/utils'; +import { SiweMessage } from 'lit-siwe'; +import { LitCore } from '@lit-protocol/core'; import { IPFSBundledSDK } from '@lit-protocol/lit-third-party-libs'; -import { nacl } from '@lit-protocol/nacl'; -import { - getStorageItem, - removeStorageItem, - setStorageItem, -} from '@lit-protocol/misc-browser'; -import { BigNumber } from 'ethers'; import { ILitResource, ISessionCapabilityObject, + LitAccessControlConditionResource, LitResourceAbilityRequest, decode, newSessionCapabilityObject, } from '@lit-protocol/auth-helpers'; -import { LitCore } from '@lit-protocol/core'; +import { + getStorageItem, + removeStorageItem, + setStorageItem, +} from '@lit-protocol/misc-browser'; +import { nacl } from '@lit-protocol/nacl'; +import { BigNumber } from 'ethers'; /** ---------- Main Export Class ---------- */ @@ -211,7 +211,7 @@ export class LitNodeClientNodeJs extends LitCore { return newSessionKey; } else { - return JSON.parse(storedSessionKeyOrError.result); + return JSON.parse(storedSessionKeyOrError.result as string); } }; @@ -326,7 +326,7 @@ export class LitNodeClientNodeJs extends LitCore { } } else { try { - walletSig = JSON.parse(storedWalletSigOrError.result); + walletSig = JSON.parse(storedWalletSigOrError.result as string); } catch (e) { console.warn('Error parsing walletSig', e); } @@ -505,55 +505,23 @@ export class LitNodeClientNodeJs extends LitCore { }; /** - * - * Get Chain Data Signing Shares + * Get Signing Shares for Token containing Access Control Condition * * @param { string } url - * @param { JsonSignChainDataRequest } params + * @param { SigningAccessControlConditionRequest } params * - * @returns { Promise } - * - */ - getChainDataSigningShare = async ( - url: string, - params: JsonSignChainDataRequest, - requestId: string - ): Promise => { - const { callRequests, chain, iat, exp } = params; - - log('getChainDataSigningShare'); - - const urlWithPath = `${url}/web/signing/sign_chain_data`; - - const data: JsonSignChainDataRequest = { - callRequests, - chain, - iat, - exp, - }; - - return await this.sendCommandToNode({ url: urlWithPath, data, requestId }); - }; - - /** - * - * Get Signing Shares from Nodes - * - * @param { string } url - * @param { JsonSigningRetrieveRequest } params - * - * @returns { Promise} + * @returns { Promise } * */ - getSigningShare = async ( + getSigningShareForToken = async ( url: string, - params: JsonSigningRetrieveRequest, + params: SigningAccessControlConditionRequest, requestId: string ): Promise => { - log('getSigningShare'); - const urlWithPath = `${url}/web/signing/retrieve`; + log('getSigningShareForToken'); + const urlWithPath = `${url}/web/signing/access_control_condition`; - return await this.sendCommandToNode({ + return this.sendCommandToNode({ url: urlWithPath, data: params, requestId, @@ -562,32 +530,24 @@ export class LitNodeClientNodeJs extends LitCore { /** * - * Store signing conditions to nodes - * - * @param { string } url - * @param { JsonSigningStoreRequest } params - * - * @returns { Promise } + * Get signature shares for decryption. * + * @param url + * @param params + * @param requestId + * @returns */ - storeSigningConditionWithNode = async ( + getSigningShareForDecryption = async ( url: string, - params: JsonSigningStoreRequest, + params: GetSigningShareForDecryptionRequest, requestId: string ): Promise => { - log('storeSigningConditionWithNode'); - - const urlWithPath = `${url}/web/signing/store`; + log('getSigningShareForDecryption'); + const urlWithPath = `${url}/web/encryption/sign`; return await this.sendCommandToNode({ url: urlWithPath, - data: { - key: params.key, - val: params.val, - authSig: params.authSig, - chain: params.chain, - permanant: params.permanent, - }, + data: params, requestId, }); }; @@ -631,15 +591,13 @@ export class LitNodeClientNodeJs extends LitCore { * * Combine Shares from network public key set and signature shares * - * @param { string } networkPubKeySet - * @param { any } signatureShares + * @param { NodeBlsSigningShare } signatureShares * * @returns { string } final JWT (convert the sig to base64 and append to the jwt) * */ combineSharesAndGetJWT = ( - networkPubKeySet: string, - signatureShares: Array + signatureShares: Array ): string => { // ========== Shares Validations ========== // -- sanity check @@ -658,24 +616,11 @@ export class LitNodeClientNodeJs extends LitCore { signatureShares.sort((a: any, b: any) => a.shareIndex - b.shareIndex); // ========== Combine Shares ========== - const pkSetAsBytes: Uint8Array = uint8arrayFromString( - networkPubKeySet, - 'base16' - ); - log('pkSetAsBytes', pkSetAsBytes); - - const sigShares = signatureShares.map((s: any) => ({ - shareHex: s.signatureShare, - shareIndex: s.shareIndex, - })); - - const signature = wasmBlsSdkHelpers.combine_signatures( - pkSetAsBytes, - sigShares + const signature = combineSignatureShares( + signatureShares.map((s) => s.signatureShare) ); - log('raw sig', signature); - log('signature is ', uint8arrayToString(signature, 'base16')); + log('signature is', signature); const unsignedJwt = mostCommonString( signatureShares.map((s: any) => s.unsignedJwt) @@ -684,13 +629,29 @@ export class LitNodeClientNodeJs extends LitCore { // ========== Result ========== // convert the sig to base64 and append to the jwt const finalJwt: string = `${unsignedJwt}.${uint8arrayToString( - signature, - 'base64url' + uint8arrayFromString(signature, 'base16'), + 'base64urlpad' )}`; return finalJwt; }; + #decryptWithSignatureShares = ( + networkPubKey: string, + identityParam: Uint8Array, + ciphertext: string, + signatureShares: Array + ): Uint8Array => { + const sigShares = signatureShares.map((s: any) => s.signatureShare); + + return verifyAndDecryptWithSignatureShares( + networkPubKey, + identityParam, + ciphertext, + sigShares + ); + }; + // ========== Promise Handlers ========== /** @@ -698,12 +659,14 @@ export class LitNodeClientNodeJs extends LitCore { * * @param { ExecuteJsProps } params * - * @returns { Promise } + * @returns { Promise | RejectedNodePromises> } * */ runOnTargetedNodes = async ( params: ExecuteJsProps - ): Promise => { + ): Promise< + SuccessNodePromises | RejectedNodePromises + > => { const { code, authSig, jsParams, debug, sessionSigs, targetNodeRange } = params; @@ -886,23 +849,17 @@ export class LitNodeClientNodeJs extends LitCore { return; } - // -- validate if signature type is BLS or ECDSA - if (sigType !== 'BLS' && sigType !== 'ECDSA') { + // -- validate if signature type is ECDSA + if (sigType !== 'ECDSA') { throwError({ - message: 'signature type is not BLS or ECDSA', + message: 'signature type is not ECDSA', errorKind: LIT_ERROR.UNKNOWN_SIGNATURE_TYPE.kind, errorCode: LIT_ERROR.UNKNOWN_SIGNATURE_TYPE.name, }); return; } - let signature: any; - - if (sigType === SIGTYPE.BLS) { - signature = combineBlsShares(sigShares, this.networkPubKeySet); - } else if (sigType === SIGTYPE.ECDSA) { - signature = combineEcdsaShares(sigShares); - } + const signature = combineEcdsaShares(sigShares); const encodedSig = joinSignature({ r: '0x' + signature.r, @@ -967,23 +924,17 @@ export class LitNodeClientNodeJs extends LitCore { return; } - // -- validate if signature type is BLS or ECDSA - if (sigType !== 'BLS' && sigType !== 'ECDSA') { + // -- validate if signature type is ECDSA + if (sigType !== 'ECDSA') { throwError({ - message: 'signature type is not BLS or ECDSA', + message: 'signature type is not ECDSA', errorKind: LIT_ERROR.UNKNOWN_SIGNATURE_TYPE.kind, errorCode: LIT_ERROR.UNKNOWN_SIGNATURE_TYPE.name, }); return; } - let signature: any; - - if (sigType === SIGTYPE.BLS) { - signature = combineBlsShares(sigShares, this.networkPubKeySet); - } else if (sigType === SIGTYPE.ECDSA) { - signature = combineEcdsaShares(sigShares); - } + const signature = combineEcdsaShares(sigShares); const encodedSig = joinSignature({ r: '0x' + signature.r, @@ -1002,73 +953,6 @@ export class LitNodeClientNodeJs extends LitCore { return signatures; }; - /** - * - * Get the decryptions from the decrypted data list - * - * @param { Array } decryptedData - * - * @returns { Promise> } - * - */ - getDecryptions = async (decryptedData: Array): Promise> => { - // -- prepare params - let decryptions: any; - - Object.keys(decryptedData[0]).forEach(async (key: any) => { - // -- prepare - const shares = decryptedData.map((r: any) => r[key]); - - const decShares = shares.map((s: any) => ({ - algorithmType: s.algorithmType, - decryptionShare: s.decryptionShare, - shareIndex: s.shareIndex, - publicKey: s.publicKey, - ciphertext: s.ciphertext, - })); - - const algorithmType = mostCommonString( - decShares.map((s: any) => s.algorithmType) - ); - const ciphertext = mostCommonString( - decShares.map((s: any) => s.ciphertext) - ); - - // -- validate if this.networkPubKeySet is null - if (this.networkPubKeySet === null) { - throwError({ - message: 'networkPubKeySet cannot be null', - errorKind: LIT_ERROR.PARAM_NULL_ERROR.kind, - errorCode: LIT_ERROR.PARAM_NULL_ERROR.name, - }); - return; - } - - let decrypted; - if (algorithmType === 'BLS') { - decrypted = await combineBlsDecryptionShares( - decShares, - this.networkPubKeySet, - ciphertext - ); - } else { - throwError({ - message: 'Unknown decryption algorithm type', - errorKind: LIT_ERROR.UNKNOWN_DECRYPTION_ALGORITHM_TYPE_ERROR.kind, - errorCode: LIT_ERROR.UNKNOWN_DECRYPTION_ALGORITHM_TYPE_ERROR.name, - }); - } - - decryptions[key] = { - decrypted: uint8arrayToString(decrypted, 'base16'), - publicKey: mostCommonString(decShares.map((s: any) => s.publicKey)), - ciphertext: mostCommonString(decShares.map((s: any) => s.ciphertext)), - }; - }); - - return decryptions; - }; - /** * * Get a single signature @@ -1179,7 +1063,7 @@ export class LitNodeClientNodeJs extends LitCore { } // -- case: promises success (TODO: check the keys of "values") - const responseData = (res as SuccessNodePromises).values; + const responseData = (res as SuccessNodePromises).values; log('responseData', JSON.stringify(responseData, null, 2)); // ========== Extract shares from response data ========== @@ -1189,20 +1073,14 @@ export class LitNodeClientNodeJs extends LitCore { ); const signatures = this.getSignatures(signedDataList); - // -- 2. combine decrypted data a list, and get the decryptions from it - const decryptedDataList: any[] = responseData.map( - (r: DecryptedData) => r.decryptedData - ); - const decryptions = await this.getDecryptions(decryptedDataList); - - // -- 3. combine responses as a string, and get parse it as JSON + // -- 2. combine responses as a string, and get parse it as JSON let response: string = mostCommonString( responseData.map((r: NodeResponse) => r.response) ); response = this.parseResponses(response); - // -- 4. combine logs + // -- 3. combine logs const mostCommonLogs: string = mostCommonString( responseData.map((r: NodeLog) => r.logs) ); @@ -1210,7 +1088,7 @@ export class LitNodeClientNodeJs extends LitCore { // ========== Result ========== let returnVal: ExecuteJsResponse = { signatures, - decryptions, + decryptions: [], // FIXME: Fix if and when we enable decryptions from within a Lit Action. response, logs: mostCommonLogs, }; @@ -1270,12 +1148,12 @@ export class LitNodeClientNodeJs extends LitCore { } // -- case: promises success (TODO: check the keys of "values") - const responseData = (res as SuccessNodePromises).values; + const responseData = (res as SuccessNodePromises).values; log('responseData', JSON.stringify(responseData, null, 2)); // ========== Extract shares from response data ========== // -- 1. combine signed data as a list, and get the signatures from it - const signedDataList = responseData.map((r: any) => { + const signedDataList = responseData.map((r) => { // add the signed data to the signature share delete r.signatureShare.result; @@ -1312,24 +1190,23 @@ export class LitNodeClientNodeJs extends LitCore { /** * - * Request a signed JWT of any solidity function call from the LIT network. There are no prerequisites for this function. You should use this function if you need to transmit information across chains, or from a blockchain to a centralized DB or server. The signature of the returned JWT verifies that the response is genuine. + * Request a signed JWT from the LIT network. Before calling this function, you must know the access control conditions for the item you wish to gain authorization for. * - * @param { SignedChainDataToken } params + * @param { GetSignedTokenRequest } params + * + * @returns { Promise } final JWT * - * @returns { Promise} */ - getSignedChainDataToken = async ( - params: SignedChainDataToken - ): Promise => { + getSignedToken = async (params: GetSignedTokenRequest): Promise => { // ========== Prepare Params ========== - const { callRequests, chain } = params; + const { chain, authSig, sessionSigs } = params; - // ========== Pre-Validations ========== + // ========== Validation ========== // -- validate if it's ready if (!this.ready) { const message = - '2 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; - return throwError({ + '3 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; + throwError({ message, errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, @@ -1345,110 +1222,16 @@ export class LitNodeClientNodeJs extends LitCore { }); } - // ========== Prepare ========== - // we need to send jwt params iat (issued at) and exp (expiration) - // because the nodes may have different wall clock times - // the nodes will verify that these params are withing a grace period - const { iat, exp } = this.getJWTParams(); - - // ========== Get Node Promises ========== - // -- fetch shares from nodes - const requestId = this.getRequestId(); - const nodePromises = this.getNodePromises((url: string) => { - return this.getChainDataSigningShare( - url, - { - callRequests, - chain, - iat, - exp, - }, - requestId - ); + const paramsIsSafe = safeParams({ + functionName: 'getSignedToken', + params, }); - // -- resolve promises - const signatureShares = await Promise.all(nodePromises); - log('signatureShares', signatureShares); - - // -- total of good shares - const goodShares = signatureShares.filter( - (d: any) => d.signatureShare !== '' - ); - - // ========== Shares Validations ========== - // -- validate if we have enough good shares - if (goodShares.length < this.config.minNodeCount) { - log( - `majority of shares are bad. goodShares is ${JSON.stringify( - goodShares - )}` - ); - - if (this.config.alertWhenUnauthorized) { - alert( - 'You are not authorized to receive a signature to grant access to this content' - ); - } - - throwError({ - message: `You are not authorized to recieve a signature on this item`, - errorKind: LIT_ERROR.UNAUTHROZIED_EXCEPTION.kind, - errorCode: LIT_ERROR.UNAUTHROZIED_EXCEPTION.name, - }); - } - - // ========== Result ========== - const finalJwt: string = this.combineSharesAndGetJWT( - this.networkPubKeySet, - signatureShares - ); - - return finalJwt; - }; - - /** - * - * Request a signed JWT from the LIT network. Before calling this function, you must either create or know of a resource id and access control conditions for the item you wish to gain authorization for. You can create an access control condition using the saveSigningCondition function. - * - * @param { JsonSigningRetrieveRequest } params - * - * @returns { Promise } final JWT - * - */ - getSignedToken = async ( - params: JsonSigningRetrieveRequest - ): Promise => { - // ========== Prepare Params ========== - const { - // accessControlConditions, - // evmContractConditions, - // solRpcConditions, - // unifiedAccessControlConditions, - chain, - authSig, - resourceId, - sessionSigs, - } = params; - - // ========== Pre-Validations ========== - // -- validate if it's ready - if (!this.ready) { - const message = - '3 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; - throwError({ - message, - errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, - errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, - }); - } - - // -- validate if this.networkPubKeySet is null - if (this.networkPubKeySet === null) { + if (!paramsIsSafe) { return throwError({ - message: 'networkPubKeySet cannot be null', - errorKind: LIT_ERROR.PARAM_NULL_ERROR.kind, - errorCode: LIT_ERROR.PARAM_NULL_ERROR.name, + message: `Parameter validation failed.`, + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); } @@ -1475,23 +1258,13 @@ export class LitNodeClientNodeJs extends LitCore { }); } - if (!resourceId) { - return throwError({ - message: `You must provide a resourceId`, - errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, - errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, - }); - } - - const formattedResourceId = canonicalResourceIdFormatter(resourceId); - // ========== Get Node Promises ========== const requestId = this.getRequestId(); const nodePromises = this.getNodePromises((url: string) => { // -- if session key is available, use it let authSigToSend = sessionSigs ? sessionSigs[url] : authSig; - return this.getSigningShare( + return this.getSigningShareForToken( url, { accessControlConditions: formattedAccessControlConditions, @@ -1501,7 +1274,6 @@ export class LitNodeClientNodeJs extends LitCore { formattedUnifiedAccessControlConditions, chain, authSig: authSigToSend, - resourceId: formattedResourceId, iat, exp, }, @@ -1517,36 +1289,29 @@ export class LitNodeClientNodeJs extends LitCore { this._throwNodeError(res as RejectedNodePromises); } - const signatureShares: Array = (res as SuccessNodePromises) - .values; + const signatureShares: Array = ( + res as SuccessNodePromises + ).values; log('signatureShares', signatureShares); // ========== Result ========== - const finalJwt: string = this.combineSharesAndGetJWT( - this.networkPubKeySet, - signatureShares - ); + const finalJwt: string = this.combineSharesAndGetJWT(signatureShares); return finalJwt; }; /** * - * Associated access control conditions with a resource on the web. After calling this function, users may use the getSignedToken function to request a signed JWT from the LIT network. This JWT proves that the user meets the access control conditions, and is authorized to access the resource you specified in the resourceId parameter of the saveSigningCondition function. - * - * @param { JsonStoreSigningRequest } params - * - * @returns { Promise } + * Encrypt data using the LIT network public key. * */ - saveSigningCondition = async ( - params: JsonStoreSigningRequest - ): Promise => { + encrypt = async (params: EncryptRequest): Promise => { + // ========== Validate Params ========== // -- validate if it's ready if (!this.ready) { const message = - '4 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; + '6 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; throwError({ message, errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, @@ -1554,44 +1319,120 @@ export class LitNodeClientNodeJs extends LitCore { }); } - // this is to fix my spelling mistake that we must now maintain forever lol - if (typeof params.permanant !== 'undefined') { - params.permanent = params.permanant; + // -- validate if this.subnetPubKey is null + if (!this.subnetPubKey) { + const message = 'subnetPubKey cannot be null'; + return throwError({ + message, + errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, + errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, + }); } - // ========== Prepare Params ========== - const { - // accessControlConditions, - // evmContractConditions, - // solRpcConditions, - // unifiedAccessControlConditions, - chain, - authSig, - resourceId, - // permanant, - permanent, - sessionSigs, - } = params; + const paramsIsSafe = safeParams({ + functionName: 'encrypt', + params, + }); - // ----- validate params ----- - // validate if resourceId is null - if (!resourceId) { + if (!paramsIsSafe) { return throwError({ - message: 'resourceId cannot be null', - errorKind: LIT_ERROR.PARAM_NULL_ERROR.kind, - errorCode: LIT_ERROR.PARAM_NULL_ERROR.name, + message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, }); } - // ========== Hashing Resource ID & Conditions ========== - // hash the resource id - const hashOfResourceId = await hashResourceId(resourceId); + // ========== Hashing Access Control Conditions ========= + // hash the access control conditions + let hashOfConditions: ArrayBuffer | undefined = + await this.getHashedAccessControlConditions(params); + + if (!hashOfConditions) { + return throwError({ + message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + }); + } - const hashOfResourceIdStr = uint8arrayToString( - new Uint8Array(hashOfResourceId), + const hashOfConditionsStr = uint8arrayToString( + new Uint8Array(hashOfConditions), 'base16' ); + // ========== Hashing Private Data ========== + // hash the private data + const hashOfPrivateData = await crypto.subtle.digest( + 'SHA-256', + params.dataToEncrypt + ); + const hashOfPrivateDataStr = uint8arrayToString( + new Uint8Array(hashOfPrivateData), + 'base16' + ); + + // ========== Assemble identity parameter ========== + const identityParam = this.#getIdentityParamForEncryption( + hashOfConditionsStr, + hashOfPrivateDataStr + ); + + // ========== Encrypt ========== + const ciphertext = encrypt( + this.subnetPubKey, + params.dataToEncrypt, + uint8arrayFromString(identityParam, 'utf8') + ); + + return { ciphertext, dataToEncryptHash: hashOfPrivateDataStr }; + }; + + /** + * + * Decrypt ciphertext with the LIT network. + * + */ + decrypt = async (params: DecryptRequest): Promise => { + const { authSig, sessionSigs, chain, ciphertext, dataToEncryptHash } = + params; + + // ========== Validate Params ========== + // -- validate if it's ready + if (!this.ready) { + const message = + '6 LitNodeClient is not ready. Please call await litNodeClient.connect() first.'; + throwError({ + message, + errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, + errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, + }); + } + + // -- validate if this.subnetPubKey is null + if (!this.subnetPubKey) { + const message = 'subnetPubKey cannot be null'; + return throwError({ + message, + errorKind: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.kind, + errorCode: LIT_ERROR.LIT_NODE_CLIENT_NOT_READY_ERROR.name, + }); + } + + const paramsIsSafe = safeParams({ + functionName: 'decrypt', + params, + }); + + if (!paramsIsSafe) { + return throwError({ + message: `Parameter validation failed.`, + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + }); + } + + // ========== Hashing Access Control Conditions ========= + // hash the access control conditions let hashOfConditions: ArrayBuffer | undefined = await this.getHashedAccessControlConditions(params); @@ -1608,20 +1449,47 @@ export class LitNodeClientNodeJs extends LitCore { 'base16' ); - // ========== Get Node Promises ========== + // ========== Formatting Access Control Conditions ========= + const { + error, + formattedAccessControlConditions, + formattedEVMContractConditions, + formattedSolRpcConditions, + formattedUnifiedAccessControlConditions, + }: FormattedMultipleAccs = this.getFormattedAccessControlConditions(params); + + if (error) { + throwError({ + message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + }); + } + + // ========== Assemble identity parameter ========== + const identityParam = this.#getIdentityParamForEncryption( + hashOfConditionsStr, + dataToEncryptHash + ); + log('identityParam', identityParam); + + // ========== Get Network Signature ========== const requestId = this.getRequestId(); const nodePromises = this.getNodePromises((url: string) => { // -- if session key is available, use it let authSigToSend = sessionSigs ? sessionSigs[url] : authSig; - return this.storeSigningConditionWithNode( + return this.getSigningShareForDecryption( url, { - key: hashOfResourceIdStr, - val: hashOfConditionsStr, - authSig: authSigToSend, + accessControlConditions: formattedAccessControlConditions, + evmContractConditions: formattedEVMContractConditions, + solRpcConditions: formattedSolRpcConditions, + unifiedAccessControlConditions: + formattedUnifiedAccessControlConditions, + dataToEncryptHash, chain, - permanent: permanent ? 1 : 0, + authSig: authSigToSend, }, requestId ); @@ -1635,7 +1503,67 @@ export class LitNodeClientNodeJs extends LitCore { this._throwNodeError(res as RejectedNodePromises); } - return true; + const signatureShares: Array = ( + res as SuccessNodePromises + ).values; + + log('signatureShares', signatureShares); + + // ========== Result ========== + const decryptedData = this.#decryptWithSignatureShares( + this.subnetPubKey, + uint8arrayFromString(identityParam, 'utf8'), + ciphertext, + signatureShares + ); + + return { decryptedData }; + }; + + getLitResourceForEncryption = async ( + params: EncryptRequest + ): Promise => { + // ========== Hashing Access Control Conditions ========= + // hash the access control conditions + let hashOfConditions: ArrayBuffer | undefined = + await this.getHashedAccessControlConditions(params); + + if (!hashOfConditions) { + return throwError({ + message: `You must provide either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions`, + errorKind: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.kind, + errorCode: LIT_ERROR.INVALID_ARGUMENT_EXCEPTION.name, + }); + } + + const hashOfConditionsStr = uint8arrayToString( + new Uint8Array(hashOfConditions), + 'base16' + ); + + // ========== Hashing Private Data ========== + // hash the private data + const hashOfPrivateData = await crypto.subtle.digest( + 'SHA-256', + params.dataToEncrypt + ); + const hashOfPrivateDataStr = uint8arrayToString( + new Uint8Array(hashOfPrivateData), + 'base16' + ); + + return new LitAccessControlConditionResource( + `${hashOfConditionsStr}/${hashOfPrivateDataStr}` + ); + }; + + #getIdentityParamForEncryption = ( + hashOfConditionsStr: string, + hashOfPrivateDataStr: string + ): string => { + return new LitAccessControlConditionResource( + `${hashOfConditionsStr}/${hashOfPrivateDataStr}` + ).getResourceKey(); }; /** @@ -1808,7 +1736,7 @@ export class LitNodeClientNodeJs extends LitCore { // -- case: promises rejected if (!this.#isSuccessNodePromises(res)) { - this._throwNodeError(res); + this._throwNodeError(res as RejectedNodePromises); return {} as SignSessionKeyResponse; } @@ -1836,7 +1764,7 @@ export class LitNodeClientNodeJs extends LitCore { }; }; - #isSuccessNodePromises = (res: any): res is SuccessNodePromises => { + #isSuccessNodePromises = (res: any): res is SuccessNodePromises => { return res.success === true; }; diff --git a/packages/lit-node-client/src/lib/lit-node-client.spec.ts b/packages/lit-node-client/src/lib/lit-node-client.spec.ts index f4bae6c92c..c5355462d9 100644 --- a/packages/lit-node-client/src/lib/lit-node-client.spec.ts +++ b/packages/lit-node-client/src/lib/lit-node-client.spec.ts @@ -9,7 +9,7 @@ jest.setTimeout(60000); describe('Lit Actions', () => { client = new LitNodeClient({ - litNetwork: 'serrano', + litNetwork: 'cayenne', debug: false, }); @@ -100,7 +100,8 @@ describe('Lit Actions', () => { }); // add padding - sig.publicKey = sig.publicKey.length % 2 == 0 ? sig.publicKey : '0' + sig.publicKey; + sig.publicKey = + sig.publicKey.length % 2 == 0 ? sig.publicKey : '0' + sig.publicKey; expect(LITCONFIG.PKP_PUBKEY).toEqual(sig.publicKey); }); }); diff --git a/packages/lit-node-client/src/lib/lit-node-client.ts b/packages/lit-node-client/src/lib/lit-node-client.ts index d327230743..603a451e1a 100644 --- a/packages/lit-node-client/src/lib/lit-node-client.ts +++ b/packages/lit-node-client/src/lib/lit-node-client.ts @@ -3,6 +3,7 @@ import { checkAndSignAuthMessage } from '@lit-protocol/auth-browser'; import { CustomNetwork, LitNodeClientConfig } from '@lit-protocol/types'; import { isNode, log } from '@lit-protocol/misc'; import { getStorageItem } from '@lit-protocol/misc-browser'; +import { EITHER_TYPE } from '@lit-protocol/constants'; export class LitNodeClient extends LitNodeClientNodeJs { constructor(args: any[LitNodeClientConfig | CustomNetwork | any]) { @@ -29,13 +30,13 @@ export class LitNodeClient extends LitNodeClientNodeJs { const storageConfigOrError = getStorageItem(storageKey); // -- validate - if (storageConfigOrError.type === 'ERROR') { + if (storageConfigOrError.type === EITHER_TYPE.ERROR) { log(`Storage key "${storageKey}" is missing. `); return; } // -- execute - const storageConfig = JSON.parse(storageConfigOrError.result); + const storageConfig = JSON.parse(storageConfigOrError.result as string); // this.config = override(this.config, storageConfig); this.config = { ...this.config, ...storageConfig }; }; diff --git a/packages/misc-browser/src/lib/misc-browser.ts b/packages/misc-browser/src/lib/misc-browser.ts index bfd3295757..ffdab198ca 100644 --- a/packages/misc-browser/src/lib/misc-browser.ts +++ b/packages/misc-browser/src/lib/misc-browser.ts @@ -3,7 +3,6 @@ import { uint8arrayFromString, uint8arrayToString, } from '@lit-protocol/uint8arrays'; -// import { log } from '@lit-protocol/misc'; /** * @@ -11,7 +10,7 @@ import { * * @param { string } key */ -export const getStorageItem = (key: string): IEither => { +export const getStorageItem = (key: string): IEither => { let item; try { item = localStorage.getItem(key); @@ -19,19 +18,15 @@ export const getStorageItem = (key: string): IEither => { // swallowing } - let keyOrError: IEither; - if (!item) { - keyOrError = ELeft({ + return ELeft({ message: `Failed to get ${key} from local storage`, errorKind: LIT_ERROR.LOCAL_STORAGE_ITEM_NOT_FOUND_EXCEPTION.kind, errorCode: LIT_ERROR.LOCAL_STORAGE_ITEM_NOT_FOUND_EXCEPTION.name, }); - } else { - keyOrError = ERight(item); } - return keyOrError; + return ERight(item); }; /** @@ -41,7 +36,7 @@ export const getStorageItem = (key: string): IEither => { * @param { string } key is the key to set * @param { string } value is the value to set */ -export const setStorageItem = (key: string, value: string): IEither => { +export const setStorageItem = (key: string, value: string): IEither => { try { localStorage.setItem(key, value); return ERight(value); @@ -60,7 +55,7 @@ export const setStorageItem = (key: string, value: string): IEither => { * @param { string } key is the key to remove * @returns { IEither } Either the key or an error */ -export const removeStorageItem = (key: string): IEither => { +export const removeStorageItem = (key: string): IEither => { try { localStorage.removeItem(key); return ERight(key); diff --git a/packages/pkp-base/src/lib/pkp-base.ts b/packages/pkp-base/src/lib/pkp-base.ts index 1cec60f710..52c6febecf 100644 --- a/packages/pkp-base/src/lib/pkp-base.ts +++ b/packages/pkp-base/src/lib/pkp-base.ts @@ -94,7 +94,7 @@ export class PKPBase { this.setLitAction(prop); this.setLitActionJsParams(prop.litActionJsParams || {}); this.litNodeClient = new LitNodeClient({ - litNetwork: prop.litNetwork ?? 'serrano', + litNetwork: prop.litNetwork ?? 'cayenne', ...(prop.bootstrapUrls && prop.litNetwork === 'custom' && { bootstrapUrls: prop.bootstrapUrls }), ...(prop.bootstrapUrls && diff --git a/packages/types/src/lib/ILitNodeClient.ts b/packages/types/src/lib/ILitNodeClient.ts index 55b73596b5..baf0b6335f 100644 --- a/packages/types/src/lib/ILitNodeClient.ts +++ b/packages/types/src/lib/ILitNodeClient.ts @@ -1,29 +1,29 @@ -import { SupportedJsonRequests } from './types'; import { + DecryptRequest, + DecryptResponse, + EncryptRequest, + EncryptResponse, ExecuteJsProps, ExecuteJsResponse, FormattedMultipleAccs, + GetSignedTokenRequest, HandshakeWithSgx, - JsonEncryptionRetrieveRequest, JsonExecutionRequest, - JsonSaveEncryptionKeyRequest, - JsonSignChainDataRequest, - JsonSigningRetrieveRequest, - JsonSigningStoreRequest, - JsonStoreSigningRequest, KV, LitNodeClientConfig, + MultipleAccessControlConditions, + NodeBlsSigningShare, NodeCommandResponse, NodeCommandServerKeysResponse, NodeShare, RejectedNodePromises, SendNodeCommand, - SignedChainDataToken, - // SignWithECDSA, SignConditionECDSA, + SigningAccessControlConditionRequest, SuccessNodePromises, ValidateAndSignECDSA, } from './interfaces'; +import { SupportedJsonRequests } from './types'; export interface ILitNodeClient { config: LitNodeClientConfig; @@ -78,18 +78,14 @@ export interface ILitNodeClient { /** * - * Combine Shares from network public key set and signature shares + * Combine Shares from signature shares * - * @param { string } networkPubKeySet - * @param { any } signatureShares + * @param { NodeBlsSigningShare } signatureShares * * @returns { string } final JWT (convert the sig to base64 and append to the jwt) * */ - combineSharesAndGetJWT( - networkPubKeySet: string, - signatureShares: Array - ): string; + combineSharesAndGetJWT(signatureShares: Array): string; /** * @@ -108,13 +104,13 @@ export interface ILitNodeClient { * * Get hash of access control conditions * - * @param { JsonStoreSigningRequest } params + * @param { MultipleAccessControlConditions } params * * @returns { Promise } * */ getHashedAccessControlConditions( - params: JsonStoreSigningRequest + params: MultipleAccessControlConditions ): Promise; // ========== Promise Handlers ========== @@ -133,14 +129,14 @@ export interface ILitNodeClient { /** * Handle node promises * - * @param { Array> } nodePromises + * @param { Array> } nodePromises * - * @returns { Promise } + * @returns { Promise | RejectedNodePromises> } * */ - handleNodePromises( - nodePromises: Array> - ): Promise; + handleNodePromises( + nodePromises: Array> + ): Promise | RejectedNodePromises>; /** * @@ -151,7 +147,7 @@ export interface ILitNodeClient { * @returns { void } * */ - throwNodeError(res: RejectedNodePromises): void; + _throwNodeError(res: RejectedNodePromises): void; // ========== Shares Resolvers ========== /** @@ -165,17 +161,6 @@ export interface ILitNodeClient { */ getSignatures(signedData: Array): any; - /** - * - * Get the decryptions from the decrypted data list - * - * @param { Array } decryptedData - * - * @returns { Promise } - * - */ - getDecryptions(decryptedData: Array): Promise>; - /** * * Parse the response string to JSON @@ -216,82 +201,17 @@ export interface ILitNodeClient { ): Promise; /** - * - * Get Chain Data Signing Shares - * - * @param { string } url - * @param { JsonSignChainDataRequest } params - * - * @returns { Promise } - * - */ - getChainDataSigningShare( - url: string, - params: JsonSignChainDataRequest, - requestId: string - ): Promise; - - /** - * - * Get Signing Shares from Nodes + * Get Signing Shares for Token containing Access Control Condition * * @param { string } url - * @param { JsonSigningRetrieveRequest } params - * - * @returns { Promise} - * - */ - getSigningShare( - url: string, - params: JsonSigningRetrieveRequest, - requestId: string - ): Promise; - - /** - * - * Ger Decryption Shares from Nodes - * - * @param { string } url - * @param { JsonEncryptionRetrieveRequest } params - * - * @returns { Promise } - * - */ - getDecryptionShare( - url: string, - params: JsonEncryptionRetrieveRequest, - requestId: string - ): Promise; - - /** - * - * Store signing conditions to nodes - * - * @param { string } url - * @param { JsonSigningStoreRequest } params + * @param { SigningAccessControlConditionRequest } params * * @returns { Promise } * */ - storeSigningConditionWithNode( + getSigningShareForToken( url: string, - params: JsonSigningStoreRequest, - requestId: string - ): Promise; - - /** - * - * Store encryption conditions to nodes - * - * @param { string } urk - * @param { JsonEncryptionStoreRequest } params - * - * @returns { Promise } - * - */ - storeEncryptionConditionWithNode( - url: string, - params: JsonSigningStoreRequest, + params: SigningAccessControlConditionRequest, requestId: string ): Promise; @@ -339,59 +259,28 @@ export interface ILitNodeClient { /** * - * Request a signed JWT of any solidity function call from the LIT network. There are no prerequisites for this function. You should use this function if you need to transmit information across chains, or from a blockchain to a centralized DB or server. The signature of the returned JWT verifies that the response is genuine. + * Request a signed JWT from the LIT network. Before calling this function, you must know the access control conditions for the item you wish to gain authorization for. * - * @param { SignedChainDataToken } params - * - * @returns { Promise} - */ - getSignedChainDataToken( - params: SignedChainDataToken - ): Promise; - - /** - * - * Request a signed JWT from the LIT network. Before calling this function, you must either create or know of a resource id and access control conditions for the item you wish to gain authorization for. You can create an access control condition using the saveSigningCondition function. - * - * @param { JsonSigningRetrieveRequest } params + * @param { GetSignedTokenRequest } params * * @returns { Promise } final JWT * */ - getSignedToken( - params: JsonSigningRetrieveRequest - ): Promise; - - /** - * - * Associated access control conditions with a resource on the web. After calling this function, users may use the getSignedToken function to request a signed JWT from the LIT network. This JWT proves that the user meets the access control conditions, and is authorized to access the resource you specified in the resourceId parameter of the saveSigningCondition function. - * - * @param { JsonStoreSigningRequest } params - * - * @returns { Promise; + getSignedToken(params: GetSignedTokenRequest): Promise; /** + * Encrypt data with Lit identity-based Timelock Encryption. * - * Retrieve the symmetric encryption key from the LIT nodes. Note that this will only work if the current user meets the access control conditions specified when the data was encrypted. That access control condition is typically that the user is a holder of the NFT that corresponds to this encrypted data. This NFT token address and ID was specified when this LIT was created. - * + * @param params */ - getEncryptionKey(params: JsonEncryptionRetrieveRequest): Promise; + encrypt(params: EncryptRequest): Promise; /** + * Decrypt data with Lit identity-based Timelock Encryption. * - * Securely save the association between access control conditions and something that you wish to decrypt - * - * @param { JsonSaveEncryptionKeyRequest } params - * - * @returns { Promise; + decrypt(params: DecryptRequest): Promise; /** * diff --git a/packages/types/src/lib/interfaces.ts b/packages/types/src/lib/interfaces.ts index 6b363935ad..dd1164956c 100644 --- a/packages/types/src/lib/interfaces.ts +++ b/packages/types/src/lib/interfaces.ts @@ -21,6 +21,9 @@ import { } from '@lit-protocol/auth-helpers'; import { BytesLike } from 'ethers'; +// @ts-ignore +import * as JSZip from 'jszip/dist/jszip.js'; + export interface AccsOperatorParams { operator: string; } @@ -124,31 +127,26 @@ export interface IProvider { } /** ---------- Crypto ---------- */ -export interface EncryptedString { - symmetricKey: SymmetricKey; - encryptedString: Blob; - encryptedData?: Blob; -} - export interface EncryptedZip { symmetricKey: SymmetricKey; encryptedZip: Blob; } -export interface ThreeKeys { - // zipBlob is a zip file that contains an encrypted file and the metadata needed to decrypt it via the Lit network. - zipBlob: any; - - // encryptedSymmetricKey is the symmetric key needed to decrypt the content, encrypted with the Lit network public key. You may wish to store encryptedSymmetricKey in your own database to support quicker re-encryption operations when adding additional access control conditions in the future, but this is entirely optional, and this key is already stored inside the zipBlob. - encryptedSymmetricKey: EncryptedSymmetricKey; - - // symmetricKey is the raw symmetric key used to encrypt the files. DO NOT STORE IT. It is provided in case you wish to create additional "OR" access control conditions for the same file. - symmetricKey: SymmetricKey; -} - export interface DecryptZipFileWithMetadata { decryptedFile: Uint8Array; - metadata: string; + metadata: MetadataForFile; +} + +export interface MetadataForFile { + name: string | any; + type: string | any; + size: string | number | any; + accessControlConditions: any[] | any; + evmContractConditions: any[] | any; + solRpcConditions: any[] | any; + unifiedAccessControlConditions: any[] | any; + chain: string; + dataToEncryptHash: string; } export interface EncryptedFile { @@ -162,17 +160,32 @@ export interface DecryptFileProps { } export interface VerifyJWTProps { + publicKey: string; // A JWT signed by the LIT network using the BLS12-381 algorithm jwt: string; } -export interface IJWT { +export interface IJWT { verified: boolean; - header: object; - payload: object; + header: JWTHeader; + payload: T; signature: Uint8Array; } +export interface JWTHeader { + alg: string; + typ: string; +} + +export interface SigningAccessControlConditionJWTPayload + extends MultipleAccessControlConditions { + iss: string; + sub: string; + chain?: string; + iat: number; + exp: number; +} + export interface HumanizedAccsProps { // The array of access control conditions that you want to humanize accessControlConditions?: AccessControlConditions; @@ -309,6 +322,20 @@ export interface JsonSigningResourceId { extraData: string; } +export interface MultipleAccessControlConditions { + // The access control conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + accessControlConditions?: AccessControlConditions; + + // EVM Smart Contract access control conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. This is different than accessControlConditions because accessControlConditions only supports a limited number of contract calls. evmContractConditions supports any contract call. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + evmContractConditions?: EvmContractConditions; + + // Solana RPC call conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. + solRpcConditions?: SolRpcConditions; + + // An array of unified access control conditions. You may use AccessControlCondition, EVMContractCondition, or SolRpcCondition objects in this array, but make sure you add a conditionType for each one. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + unifiedAccessControlConditions?: UnifiedAccessControlConditions; +} + export interface JsonAccsRequest { // The access control conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. accessControlConditions?: AccessControlConditions; @@ -331,7 +358,7 @@ export interface JsonAccsRequest { // The authentication signature that proves that the user owns the crypto wallet address that meets the access control conditions authSig?: AuthSig; - sessionSigs?: SessionSigsMap; + sessionSigs?: SessionSig; } /** @@ -355,11 +382,32 @@ export interface JsonSigningRetrieveRequest extends JsonAccsRequest { sessionSigs?: any; } -export interface JsonStoreSigningRequest extends JsonAccsRequest { - // Whether or not the access control condition should be saved permanently. If false, the access control conditions will be updateable by the creator. If you don't pass this param, it's set to true by default. - permanant?: boolean | 0 | 1; - permanent?: boolean | 0 | 1; - sessionSigs?: any; +export interface GetSignedTokenRequest + extends SigningAccessControlConditionRequest { + sessionSigs?: SessionSigsMap; +} + +export interface SigningAccessControlConditionRequest { + // The access control conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + accessControlConditions?: AccessControlConditions; + + // EVM Smart Contract access control conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. This is different than accessControlConditions because accessControlConditions only supports a limited number of contract calls. evmContractConditions supports any contract call. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + evmContractConditions?: EvmContractConditions; + + // Solana RPC call conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. + solRpcConditions?: SolRpcConditions; + + // An array of unified access control conditions. You may use AccessControlCondition, EVMContractCondition, or SolRpcCondition objects in this array, but make sure you add a conditionType for each one. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + unifiedAccessControlConditions?: UnifiedAccessControlConditions; + + // The chain name of the chain that you are querying. See ALL_LIT_CHAINS for currently supported chains. + chain?: string; + + // The authentication signature that proves that the user owns the crypto wallet address that meets the access control conditions + authSig?: SessionSig; + + iat?: number; + exp?: number; } /** @@ -406,24 +454,57 @@ export type ExecuteJsProps = JsonExecutionRequest & { debug?: boolean; }; -export interface JsonSaveEncryptionKeyRequest { +export interface EncryptRequestBase { accessControlConditions?: AccessControlConditions; evmContractConditions?: EvmContractConditions; solRpcConditions?: SolRpcConditions; unifiedAccessControlConditions?: UnifiedAccessControlConditions; - authSig?: AuthSig; + chain: Chain; - // The symmetric encryption key that was used to encrypt the locked content inside the LIT as a Uint8Array. You should use zipAndEncryptString or zipAndEncryptFiles to get this encryption key. This key will be hashed and the hash will be sent to the LIT nodes. You must pass either symmetricKey or encryptedSymmetricKey. - symmetricKey: SymmetricKey; + authSig?: AuthSig; + sessionSigs?: SessionSigsMap; +} - // The encrypted symmetric key of the item you with to update. You must pass either symmetricKey or encryptedSymmetricKey. - encryptedSymmetricKey?: EncryptedSymmetricKey; +export interface EncryptRequest extends EncryptRequestBase { + // The data that you wish to encrypt as a Uint8Array + dataToEncrypt: Uint8Array; +} - permanant?: boolean | 0 | 1; - permanent?: boolean | 0 | 1; +export interface EncryptResponse { + // The base64-encoded ciphertext + ciphertext: string; + // The hash of the data that was encrypted + dataToEncryptHash: string; +} - sessionSigs?: SessionSigsMap; +export interface EncryptStringRequest extends EncryptRequestBase { + // String that you wish to encrypt + dataToEncrypt: string; +} + +export interface EncryptZipRequest extends EncryptRequestBase { + zip: JSZip; +} + +export interface EncryptFileRequest extends EncryptRequestBase { + file: AcceptedFileType; +} + +export interface DecryptRequest extends EncryptRequestBase { + // The base64-encoded ciphertext + ciphertext: string; + // The hash of the data that was encrypted + dataToEncryptHash: string; +} + +export interface DecryptResponse { + // The decrypted data as a Uint8Array + decryptedData: Uint8Array; +} + +export interface GetSigningShareForDecryptionRequest extends JsonAccsRequest { + dataToEncryptHash: string; } export interface SignConditionECDSA { @@ -470,9 +551,27 @@ export interface NodeShare { logs: any; } -export interface SuccessNodePromises { +export interface PKPSignShare { + success: boolean; + signedData: any; + signatureShare: any; +} + +export interface NodeBlsSigningShare { + shareIndex: any; + unsignedJwt?: any; + signatureShare: BlsSignatureShare; + response?: any; + logs?: any; +} + +export interface BlsSignatureShare { + ProofOfPossession: string; +} + +export interface SuccessNodePromises { success: boolean; - values: Array; + values: Array; } export interface RejectedNodePromises { @@ -656,6 +755,29 @@ export interface EncryptToIpfsProps { infuraSecretKey: string; } +export type EncryptToIpfsDataType = 'string' | 'file'; + +export interface EncryptToIpfsPayload { + // The access control conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + accessControlConditions?: AccessControlConditions; + + // EVM Smart Contract access control conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. This is different than accessControlConditions because accessControlConditions only supports a limited number of contract calls. evmContractConditions supports any contract call. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + evmContractConditions?: EvmContractConditions; + + // Solana RPC call conditions that the user must meet to obtain this signed token. This could be posession of an NFT, for example. + solRpcConditions?: SolRpcConditions; + + // An array of unified access control conditions. You may use AccessControlCondition, EVMContractCondition, or SolRpcCondition objects in this array, but make sure you add a conditionType for each one. You must pass either accessControlConditions or evmContractConditions or solRpcConditions or unifiedAccessControlConditions. + unifiedAccessControlConditions?: UnifiedAccessControlConditions; + + // The chain name of the chain that this contract is deployed on. See LIT_CHAINS for currently supported chains. + chain: Chain; + + ciphertext: string; + dataToEncryptHash: string; + dataType: EncryptToIpfsDataType; +} + export interface DecryptFromIpfsProps { // The authSig of the user. Returned via the checkAndSignAuthMessage function authSig?: AuthSig; @@ -714,9 +836,6 @@ export interface DecryptZipFileWithMetadataProps { // An instance of LitNodeClient that is already connected litNodeClient: ILitNodeClient; - - // Addtional access control conditions - additionalAccessControlConditions?: any[]; } /** diff --git a/packages/types/src/lib/types.ts b/packages/types/src/lib/types.ts index 99b5d27e0a..b795f1bc6a 100644 --- a/packages/types/src/lib/types.ts +++ b/packages/types/src/lib/types.ts @@ -86,7 +86,7 @@ export type LITChain = { [chainName: string]: T; }; -export type LIT_NETWORKS_KEYS = 'jalapeno' | 'serrano' | 'localhost' | 'custom'; +export type LIT_NETWORKS_KEYS = 'cayenne' | 'localhost' | 'custom'; export type ConditionType = 'solRpc' | 'evmBasic' | 'evmContract' | 'cosmos'; @@ -106,6 +106,9 @@ export type AcceptedFileType = File | Blob; */ export type IRelayAuthStatus = 'InProgress' | 'Succeeded' | 'Failed'; -export type ProviderOptions = OAuthProviderOptions | EthWalletProviderOptions | SignInWithOTPParams; +export type ProviderOptions = + | OAuthProviderOptions + | EthWalletProviderOptions + | SignInWithOTPParams; export type AuthenticateOptions = BaseAuthenticateOptions; diff --git a/packages/uint8arrays/src/index.ts b/packages/uint8arrays/src/index.ts index baca8d4fad..1434ee0943 100644 --- a/packages/uint8arrays/src/index.ts +++ b/packages/uint8arrays/src/index.ts @@ -2,6 +2,10 @@ // // ----- autogen:polyfills:end ----- -import { uint8arrayFromString, uint8arrayToString } from './lib/uint8arrays'; +import { + uint8arrayFromString, + uint8arrayToString, + uint8ArrayToBase64, +} from './lib/uint8arrays'; -export { uint8arrayFromString, uint8arrayToString }; +export { uint8arrayFromString, uint8arrayToString, uint8ArrayToBase64 }; diff --git a/packages/uint8arrays/src/lib/uint8arrays.ts b/packages/uint8arrays/src/lib/uint8arrays.ts index b72a077745..6572637c77 100644 --- a/packages/uint8arrays/src/lib/uint8arrays.ts +++ b/packages/uint8arrays/src/lib/uint8arrays.ts @@ -128,7 +128,10 @@ function base64ToBase64UrlPad(base64Str: string): string { return base64Str.replace('+', '-').replace('/', '_').replace(/=+$/, ''); } -export function uint8arrayFromString(str: string, encoding = 'utf8') { +export function uint8arrayFromString( + str: string, + encoding = 'utf8' +): Uint8Array { switch (encoding) { case 'utf8': return utf8Encode(str); @@ -140,15 +143,18 @@ export function uint8arrayFromString(str: string, encoding = 'utf8') { return new Uint8Array(arr); case 'base64': return base64ToUint8Array(str); - case 'base64urlpad': case 'base64url': + case 'base64urlpad': return base64ToUint8Array(base64UrlPadToBase64(str)); default: throw new Error(`Unsupported encoding "${encoding}"`); } } -export function uint8arrayToString(uint8array: Uint8Array, encoding = 'utf8') { +export function uint8arrayToString( + uint8array: Uint8Array, + encoding = 'utf8' +): string { let _uint8array = new Uint8Array(uint8array); switch (encoding) { @@ -156,12 +162,12 @@ export function uint8arrayToString(uint8array: Uint8Array, encoding = 'utf8') { return utf8Decode(_uint8array); case 'base16': return Array.from(_uint8array) - .map((byte) => byte.toString(16).padStart(2, '0')) + .map((byte: number) => byte.toString(16).padStart(2, '0')) .join(''); case 'base64': return uint8ArrayToBase64(_uint8array); - case 'base64urlpad': case 'base64url': + case 'base64urlpad': return base64ToBase64UrlPad(uint8ArrayToBase64(_uint8array)); default: throw new Error(`Unsupported encoding "${encoding}"`);