diff --git a/anchor_count.txt b/anchor_count.txt
index 6f0528c..70d1b6e 100644
--- a/anchor_count.txt
+++ b/anchor_count.txt
@@ -1 +1 @@
-2026-01-25T16:42:13.664Z;8755;0000000cd5db32bf476ead70527dff6cc88eb11330b01b87477a02fa6db5640d;15502
\ No newline at end of file
+2026-01-25T23:26:21.483Z;9194;0000000be8aaf7d13939384ab7a3eb86856c68f01e7e309bc8c3e91e0a327dde;17100
\ No newline at end of file
diff --git a/api-relay/.gitignore b/api-relay/.gitignore
new file mode 100644
index 0000000..84671e8
--- /dev/null
+++ b/api-relay/.gitignore
@@ -0,0 +1,6 @@
+node_modules
+dist
+data
+*.log
+.env
+.env.local
diff --git a/api-relay/README.md b/api-relay/README.md
new file mode 100644
index 0000000..5f6e1ef
--- /dev/null
+++ b/api-relay/README.md
@@ -0,0 +1,76 @@
+# UserWallet API Relay
+
+Serveur de relais pour le système de login décentralisé UserWallet.
+
+## Fonctionnalités
+
+- Stockage des messages chiffrés (sans signatures ni clés)
+- Stockage séparé des signatures
+- Stockage séparé des clés de déchiffrement
+- Relais entre pairs (inter-relay)
+- Déduplication par hash
+- Endpoints REST pour GET/POST
+
+## Installation
+
+```bash
+npm install
+```
+
+## Configuration
+
+Variables d'environnement :
+
+- `PORT` : Port d'écoute (défaut: 3019)
+- `HOST` : Adresse d'écoute (défaut: 0.0.0.0)
+- `STORAGE_PATH` : Chemin de stockage (défaut: ./data)
+- `PEER_RELAYS` : Liste de relais pairs séparés par virgule (ex: http://relay1:3019,http://relay2:3019)
+
+## Développement
+
+```bash
+npm run dev
+```
+
+## Build
+
+```bash
+npm run build
+npm start
+```
+
+## Endpoints
+
+### Health
+
+- `GET /health` - Vérification de santé
+
+### Messages
+
+- `GET /messages?start=&end=&service=` - Récupérer les messages dans une fenêtre temporelle
+- `POST /messages` - Publier un message chiffré
+- `GET /messages/:hash` - Récupérer un message par hash
+
+### Signatures
+
+- `GET /signatures/:hash` - Récupérer les signatures pour un message
+- `POST /signatures` - Publier une signature
+
+### Clés
+
+- `GET /keys/:hash` - Récupérer les clés de déchiffrement pour un message
+- `POST /keys` - Publier une clé de déchiffrement
+
+## Architecture
+
+Le relais respecte la séparation stricte :
+1. Messages publiés sans signatures ni clés
+2. Signatures publiées séparément
+3. Clés publiées séparément
+
+La déduplication par hash évite de relayer deux fois le même message.
+
+## Stockage
+
+Par défaut, le stockage est en mémoire avec sauvegarde optionnelle sur disque.
+En production, utiliser une base de données (SQLite, PostgreSQL, etc.).
diff --git a/api-relay/eslint.config.mjs b/api-relay/eslint.config.mjs
new file mode 100644
index 0000000..a327b27
--- /dev/null
+++ b/api-relay/eslint.config.mjs
@@ -0,0 +1,48 @@
+import js from '@eslint/js';
+import tseslint from 'typescript-eslint';
+import unusedImports from 'eslint-plugin-unused-imports';
+
+export default tseslint.config(
+ {
+ ignores: ['dist', 'node_modules'],
+ },
+ js.configs.recommended,
+ ...tseslint.configs.recommended,
+ {
+ files: ['**/*.ts'],
+ plugins: {
+ 'unused-imports': unusedImports,
+ },
+ rules: {
+ '@typescript-eslint/explicit-function-return-type': 'error',
+ '@typescript-eslint/no-explicit-any': 'error',
+ '@typescript-eslint/no-unused-vars': 'off',
+ 'unused-imports/no-unused-imports': 'error',
+ 'unused-imports/no-unused-vars': [
+ 'error',
+ {
+ vars: 'all',
+ varsIgnorePattern: '^_',
+ args: 'after-used',
+ argsIgnorePattern: '^_',
+ },
+ ],
+ 'max-lines': ['error', { max: 250, skipBlankLines: true, skipComments: true }],
+ 'max-lines-per-function': ['error', { max: 40, skipBlankLines: true, skipComments: true }],
+ 'max-params': ['error', 4],
+ 'max-depth': ['error', 4],
+ complexity: ['error', 10],
+ '@typescript-eslint/no-non-null-assertion': 'error',
+ '@typescript-eslint/prefer-nullish-coalescing': 'error',
+ '@typescript-eslint/prefer-optional-chain': 'error',
+ '@typescript-eslint/no-floating-promises': 'error',
+ '@typescript-eslint/no-misused-promises': 'error',
+ 'prefer-const': 'error',
+ 'no-var': 'error',
+ 'eqeqeq': ['error', 'always'],
+ 'curly': ['error', 'all'],
+ 'no-else-return': 'error',
+ 'no-console': ['warn', { allow: ['warn', 'error'] }],
+ },
+ },
+);
diff --git a/api-relay/package-lock.json b/api-relay/package-lock.json
new file mode 100644
index 0000000..24d227a
--- /dev/null
+++ b/api-relay/package-lock.json
@@ -0,0 +1,3376 @@
+{
+ "name": "userwallet-api-relay",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "userwallet-api-relay",
+ "version": "1.0.0",
+ "dependencies": {
+ "cors": "^2.8.5",
+ "express": "^4.18.2"
+ },
+ "devDependencies": {
+ "@eslint/js": "^9.0.0",
+ "@types/cors": "^2.8.17",
+ "@types/express": "^4.17.21",
+ "@types/node": "^20.10.5",
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
+ "@typescript-eslint/parser": "^6.14.0",
+ "eslint": "^8.55.0",
+ "eslint-plugin-unused-imports": "^3.0.0",
+ "tsx": "^4.7.0",
+ "typescript": "^5.2.2"
+ }
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz",
+ "integrity": "sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.2.tgz",
+ "integrity": "sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.2.tgz",
+ "integrity": "sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.2.tgz",
+ "integrity": "sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.2.tgz",
+ "integrity": "sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.2.tgz",
+ "integrity": "sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.2.tgz",
+ "integrity": "sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.2.tgz",
+ "integrity": "sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.2.tgz",
+ "integrity": "sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.2.tgz",
+ "integrity": "sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.2.tgz",
+ "integrity": "sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.2.tgz",
+ "integrity": "sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.2.tgz",
+ "integrity": "sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.2.tgz",
+ "integrity": "sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.2.tgz",
+ "integrity": "sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.2.tgz",
+ "integrity": "sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.2.tgz",
+ "integrity": "sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.2.tgz",
+ "integrity": "sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.2.tgz",
+ "integrity": "sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.2.tgz",
+ "integrity": "sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.2.tgz",
+ "integrity": "sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.2.tgz",
+ "integrity": "sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.2.tgz",
+ "integrity": "sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.2.tgz",
+ "integrity": "sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+ }
+ },
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
+ },
+ "node_modules/@eslint/eslintrc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.4",
+ "debug": "^4.3.2",
+ "espree": "^9.6.0",
+ "globals": "^13.19.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.0",
+ "minimatch": "^3.1.2",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@eslint/js": {
+ "version": "9.39.2",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
+ "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array": {
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
+ "minimatch": "^3.0.5"
+ },
+ "engines": {
+ "node": ">=10.10.0"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
+ },
+ "node_modules/@humanwhocodes/object-schema": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@types/body-parser": {
+ "version": "1.19.6",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz",
+ "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/connect": {
+ "version": "3.4.38",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz",
+ "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.19",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz",
+ "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/express": {
+ "version": "4.17.25",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.25.tgz",
+ "integrity": "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "^1"
+ }
+ },
+ "node_modules/@types/express-serve-static-core": {
+ "version": "4.19.8",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz",
+ "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "node_modules/@types/http-errors": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
+ "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/mime": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
+ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "20.19.30",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.30.tgz",
+ "integrity": "sha512-WJtwWJu7UdlvzEAUm484QNg5eAoq5QR08KDNx7g45Usrs2NtOPiX8ugDqmKdXkyL03rBqU5dYNYVQetEpBHq2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.21.0"
+ }
+ },
+ "node_modules/@types/qs": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
+ "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/range-parser": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
+ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/semver": {
+ "version": "7.7.1",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz",
+ "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/send": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz",
+ "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/serve-static": {
+ "version": "1.15.10",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.10.tgz",
+ "integrity": "sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/http-errors": "*",
+ "@types/node": "*",
+ "@types/send": "<1"
+ }
+ },
+ "node_modules/@types/serve-static/node_modules/@types/send": {
+ "version": "0.17.6",
+ "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
+ "integrity": "sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz",
+ "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/regexpp": "^4.5.1",
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/type-utils": "6.21.0",
+ "@typescript-eslint/utils": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
+ "debug": "^4.3.4",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.4",
+ "natural-compare": "^1.4.0",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha",
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/parser": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz",
+ "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/typescript-estree": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/scope-manager": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz",
+ "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/type-utils": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz",
+ "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/typescript-estree": "6.21.0",
+ "@typescript-eslint/utils": "6.21.0",
+ "debug": "^4.3.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz",
+ "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz",
+ "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/visitor-keys": "6.21.0",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "minimatch": "9.0.3",
+ "semver": "^7.5.4",
+ "ts-api-utils": "^1.0.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependenciesMeta": {
+ "typescript": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@typescript-eslint/utils": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz",
+ "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.4.0",
+ "@types/json-schema": "^7.0.12",
+ "@types/semver": "^7.5.0",
+ "@typescript-eslint/scope-manager": "6.21.0",
+ "@typescript-eslint/types": "6.21.0",
+ "@typescript-eslint/typescript-estree": "6.21.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/visitor-keys": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz",
+ "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/types": "6.21.0",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^16.0.0 || >=18.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/accepts": {
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
+ },
+ "node_modules/array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz",
+ "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "~1.2.0",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "on-finished": "~2.4.1",
+ "qs": "~6.14.0",
+ "raw-body": "~2.5.3",
+ "type-is": "~1.6.18",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/body-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/body-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz",
+ "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
+ "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
+ "license": "MIT"
+ },
+ "node_modules/cors": {
+ "version": "2.8.6",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
+ "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-type": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "esutils": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+ "license": "MIT"
+ },
+ "node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.27.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.2.tgz",
+ "integrity": "sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.2",
+ "@esbuild/android-arm": "0.27.2",
+ "@esbuild/android-arm64": "0.27.2",
+ "@esbuild/android-x64": "0.27.2",
+ "@esbuild/darwin-arm64": "0.27.2",
+ "@esbuild/darwin-x64": "0.27.2",
+ "@esbuild/freebsd-arm64": "0.27.2",
+ "@esbuild/freebsd-x64": "0.27.2",
+ "@esbuild/linux-arm": "0.27.2",
+ "@esbuild/linux-arm64": "0.27.2",
+ "@esbuild/linux-ia32": "0.27.2",
+ "@esbuild/linux-loong64": "0.27.2",
+ "@esbuild/linux-mips64el": "0.27.2",
+ "@esbuild/linux-ppc64": "0.27.2",
+ "@esbuild/linux-riscv64": "0.27.2",
+ "@esbuild/linux-s390x": "0.27.2",
+ "@esbuild/linux-x64": "0.27.2",
+ "@esbuild/netbsd-arm64": "0.27.2",
+ "@esbuild/netbsd-x64": "0.27.2",
+ "@esbuild/openbsd-arm64": "0.27.2",
+ "@esbuild/openbsd-x64": "0.27.2",
+ "@esbuild/openharmony-arm64": "0.27.2",
+ "@esbuild/sunos-x64": "0.27.2",
+ "@esbuild/win32-arm64": "0.27.2",
+ "@esbuild/win32-ia32": "0.27.2",
+ "@esbuild/win32-x64": "0.27.2"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+ "license": "MIT"
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.2.0",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@nodelib/fs.walk": "^1.2.8",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
+ "chalk": "^4.0.0",
+ "cross-spawn": "^7.0.2",
+ "debug": "^4.3.2",
+ "doctrine": "^3.0.0",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
+ "esquery": "^1.4.2",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^6.0.1",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "globals": "^13.19.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "is-path-inside": "^3.0.3",
+ "js-yaml": "^4.1.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.4.1",
+ "lodash.merge": "^4.6.2",
+ "minimatch": "^3.1.2",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3",
+ "strip-ansi": "^6.0.1",
+ "text-table": "^0.2.0"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-plugin-unused-imports": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz",
+ "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-rule-composer": "^0.3.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "peerDependencies": {
+ "@typescript-eslint/eslint-plugin": "6 - 7",
+ "eslint": "8"
+ },
+ "peerDependenciesMeta": {
+ "@typescript-eslint/eslint-plugin": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-rule-composer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz",
+ "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "7.2.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+ "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/@eslint/js": {
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ }
+ },
+ "node_modules/eslint/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/eslint/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/espree": {
+ "version": "9.6.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+ "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.9.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^3.4.1"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.22.1",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz",
+ "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==",
+ "license": "MIT",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "~1.20.3",
+ "content-disposition": "~0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "~0.7.1",
+ "cookie-signature": "~1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "~1.3.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.0",
+ "merge-descriptors": "1.0.3",
+ "methods": "~1.1.2",
+ "on-finished": "~2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "~0.1.12",
+ "proxy-addr": "~2.0.7",
+ "qs": "~6.14.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "~0.19.0",
+ "serve-static": "~1.16.2",
+ "setprototypeof": "1.2.0",
+ "statuses": "~2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/express/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/express/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/fast-glob/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fastq": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+ "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^3.0.4"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz",
+ "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "~2.0.2",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/finalhandler/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/finalhandler/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+ "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.3",
+ "rimraf": "^3.0.2"
+ },
+ "engines": {
+ "node": "^10.12.0 || >=12.0.0"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+ "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-tsconfig": {
+ "version": "4.13.0",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz",
+ "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "resolve-pkg-maps": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+ }
+ },
+ "node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Glob versions prior to v9 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "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"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/globals": {
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.20.2"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "~2.0.0",
+ "inherits": "~2.0.4",
+ "setprototypeof": "~1.2.0",
+ "statuses": "~2.0.2",
+ "toidentifier": "~1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/import-fresh": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+ "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "license": "ISC"
+ },
+ "node_modules/ipaddr.js": {
+ "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==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-path-inside": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "callsites": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
+ "license": "MIT"
+ },
+ "node_modules/path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/proxy-addr": {
+ "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==",
+ "license": "MIT",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.14.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz",
+ "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.3",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz",
+ "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==",
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "~3.1.2",
+ "http-errors": "~2.0.1",
+ "iconv-lite": "~0.4.24",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/resolve-pkg-maps": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+ }
+ },
+ "node_modules/reusify": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+ "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">=1.0.0",
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "deprecated": "Rimraf versions prior to v4 are no longer supported",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "glob": "^7.1.3"
+ },
+ "bin": {
+ "rimraf": "bin.js"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
+ },
+ "node_modules/semver": {
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/send": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz",
+ "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "~0.5.2",
+ "http-errors": "~2.0.1",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "~2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "~2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/send/node_modules/debug/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/serve-static": {
+ "version": "1.16.3",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz",
+ "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==",
+ "license": "MIT",
+ "dependencies": {
+ "encodeurl": "~2.0.0",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "~0.19.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
+ "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/to-regex-range": {
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/ts-api-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
+ "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.2.0"
+ }
+ },
+ "node_modules/tsx": {
+ "version": "4.21.0",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz",
+ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.27.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.20.2",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/undici-types": {
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ }
+ }
+}
diff --git a/api-relay/package.json b/api-relay/package.json
new file mode 100644
index 0000000..9d2a84c
--- /dev/null
+++ b/api-relay/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "userwallet-api-relay",
+ "version": "1.0.0",
+ "description": "Relay server for UserWallet decentralized login system",
+ "type": "module",
+ "main": "dist/index.js",
+ "scripts": {
+ "dev": "tsx watch src/index.ts",
+ "build": "tsc",
+ "start": "node dist/index.js",
+ "lint": "eslint . --ext ts --report-unused-disable-directives --max-warnings 0",
+ "type-check": "tsc --noEmit"
+ },
+ "dependencies": {
+ "express": "^4.18.2",
+ "cors": "^2.8.5"
+ },
+ "devDependencies": {
+ "@types/express": "^4.17.21",
+ "@types/cors": "^2.8.17",
+ "@types/node": "^20.10.5",
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
+ "@typescript-eslint/parser": "^6.14.0",
+ "@eslint/js": "^9.0.0",
+ "eslint": "^8.55.0",
+ "eslint-plugin-unused-imports": "^3.0.0",
+ "typescript": "^5.2.2",
+ "tsx": "^4.7.0"
+ }
+}
diff --git a/api-relay/src/index.ts b/api-relay/src/index.ts
new file mode 100644
index 0000000..2f64465
--- /dev/null
+++ b/api-relay/src/index.ts
@@ -0,0 +1,81 @@
+import express from 'express';
+import cors from 'cors';
+import { StorageService } from './services/storage';
+import { RelayService } from './services/relay';
+import { createMessagesRouter } from './routes/messages';
+import { createSignaturesRouter } from './routes/signatures';
+import { createKeysRouter } from './routes/keys';
+import { createHealthRouter } from './routes/health';
+
+const PORT = process.env.PORT ? parseInt(process.env.PORT, 10) : 3019;
+const HOST = process.env.HOST ?? '0.0.0.0';
+const STORAGE_PATH = process.env.STORAGE_PATH ?? './data';
+const PEER_RELAYS = process.env.PEER_RELAYS
+ ? process.env.PEER_RELAYS.split(',').map((p) => p.trim())
+ : [];
+const SAVE_INTERVAL_SECONDS = process.env.SAVE_INTERVAL_SECONDS
+ ? parseInt(process.env.SAVE_INTERVAL_SECONDS, 10)
+ : 300;
+
+async function main(): Promise {
+ const app = express();
+
+ app.use(cors());
+ app.use(express.json());
+
+ const storage = new StorageService(STORAGE_PATH);
+ await storage.initialize();
+
+ const relay = new RelayService(storage, PEER_RELAYS);
+
+ app.use('/health', createHealthRouter());
+ app.use('/messages', createMessagesRouter(storage, relay));
+ app.use('/signatures', createSignaturesRouter(storage, relay));
+ app.use('/keys', createKeysRouter(storage, relay));
+
+ let saveIntervalId: ReturnType | null = null;
+ if (SAVE_INTERVAL_SECONDS > 0) {
+ saveIntervalId = setInterval(() => {
+ storage.saveToDisk().catch((err) => {
+ console.error('Periodic save failed:', err);
+ });
+ }, SAVE_INTERVAL_SECONDS * 1000);
+ }
+
+ app.listen(PORT, HOST, () => {
+ console.log(`Relay server listening on ${HOST}:${PORT}`);
+ console.log(`Storage path: ${STORAGE_PATH}`);
+ console.log(`Peer relays: ${PEER_RELAYS.length > 0 ? PEER_RELAYS.join(', ') : 'none'}`);
+ if (SAVE_INTERVAL_SECONDS > 0) {
+ console.log(`Periodic save: every ${SAVE_INTERVAL_SECONDS}s`);
+ }
+ });
+
+ const shutdown = async (): Promise => {
+ console.log('Shutting down...');
+ if (saveIntervalId !== null) {
+ clearInterval(saveIntervalId);
+ saveIntervalId = null;
+ }
+ try {
+ await storage.saveToDisk();
+ process.exit(0);
+ } catch (err) {
+ console.error('Error saving storage on shutdown:', err);
+ process.exit(1);
+ }
+ };
+
+ process.on('SIGINT', () => {
+ void shutdown();
+ });
+
+ process.on('SIGTERM', () => {
+ void shutdown();
+ });
+}
+
+main().catch((error) => {
+ console.error('Fatal error:', error);
+ process.exit(1);
+});
diff --git a/api-relay/src/routes/health.ts b/api-relay/src/routes/health.ts
new file mode 100644
index 0000000..f6d2648
--- /dev/null
+++ b/api-relay/src/routes/health.ts
@@ -0,0 +1,14 @@
+import { Router, type Request, type Response } from 'express';
+
+export function createHealthRouter(): Router {
+ const router = Router();
+
+ /**
+ * GET /health - Health check endpoint.
+ */
+ router.get('/', (_req: Request, res: Response): void => {
+ res.json({ status: 'ok', timestamp: Date.now() });
+ });
+
+ return router;
+}
diff --git a/api-relay/src/routes/keys.ts b/api-relay/src/routes/keys.ts
new file mode 100644
index 0000000..97c4000
--- /dev/null
+++ b/api-relay/src/routes/keys.ts
@@ -0,0 +1,57 @@
+import { Router, type Request, type Response } from 'express';
+import type { StorageService } from '../services/storage';
+import type { RelayService } from '../services/relay';
+import type { MsgCle, StoredKey } from '../types/message';
+
+export function createKeysRouter(
+ storage: StorageService,
+ relay: RelayService,
+): Router {
+ const router = Router();
+
+ /**
+ * GET /keys/:hash - Get decryption keys for a message hash.
+ */
+ router.get('/:hash', (req: Request, res: Response): void => {
+ try {
+ const hash = req.params.hash as string;
+ const stored = storage.getKeys(hash);
+ const keys: MsgCle[] = stored.map((k) => k.msg);
+ res.json(keys);
+ } catch (error) {
+ console.error('Error getting keys:', error);
+ res.status(500).json({ error: 'Internal server error' });
+ }
+ });
+
+ /**
+ * POST /keys - Store and relay a decryption key.
+ */
+ router.post('/', async (req: Request, res: Response): Promise => {
+ try {
+ const key = req.body as MsgCle;
+
+ if (!key.hash_message || !key.cle_de_chiffrement_message) {
+ res.status(400).json({ error: 'Invalid key format' });
+ return;
+ }
+
+ const stored: StoredKey = {
+ msg: key,
+ received_at: Date.now(),
+ relayed: false,
+ };
+
+ storage.storeKey(stored);
+ await relay.relayKey(key);
+ stored.relayed = true;
+
+ res.status(201).json({ stored: true });
+ } catch (error) {
+ console.error('Error storing key:', error);
+ res.status(500).json({ error: 'Internal server error' });
+ }
+ });
+
+ return router;
+}
diff --git a/api-relay/src/routes/messages.ts b/api-relay/src/routes/messages.ts
new file mode 100644
index 0000000..ff4b3d7
--- /dev/null
+++ b/api-relay/src/routes/messages.ts
@@ -0,0 +1,88 @@
+import { Router, type Request, type Response } from 'express';
+import type { StorageService } from '../services/storage';
+import type { RelayService } from '../services/relay';
+import type { MsgChiffre, StoredMessage } from '../types/message';
+
+export function createMessagesRouter(
+ storage: StorageService,
+ relay: RelayService,
+): Router {
+ const router = Router();
+
+ /**
+ * GET /messages - Retrieve encrypted messages in a time window.
+ * Query params: start (timestamp), end (timestamp), service (optional service UUID)
+ */
+ router.get('/', (req: Request, res: Response): void => {
+ try {
+ const start = parseInt(req.query.start as string, 10);
+ const end = parseInt(req.query.end as string, 10);
+ const service = req.query.service as string | undefined;
+
+ if (isNaN(start) || isNaN(end)) {
+ res.status(400).json({ error: 'start and end timestamps required' });
+ return;
+ }
+
+ const messages = storage.getMessages(start, end, service);
+ const msgChiffres: MsgChiffre[] = messages.map((m) => m.msg);
+ res.json(msgChiffres);
+ } catch (error) {
+ console.error('Error getting messages:', error);
+ res.status(500).json({ error: 'Internal server error' });
+ }
+ });
+
+ /**
+ * POST /messages - Store and relay an encrypted message.
+ */
+ router.post('/', async (req: Request, res: Response): Promise => {
+ try {
+ const msg = req.body as MsgChiffre;
+
+ if (!msg.hash || !msg.message_chiffre || !msg.datajson_public) {
+ res.status(400).json({ error: 'Invalid message format' });
+ return;
+ }
+
+ const alreadySeen = storage.hasSeenHash(msg.hash);
+ const stored: StoredMessage = {
+ msg,
+ received_at: Date.now(),
+ relayed: false,
+ };
+
+ storage.storeMessage(stored);
+
+ if (!alreadySeen) {
+ await relay.relayMessage(msg);
+ stored.relayed = true;
+ }
+
+ res.status(201).json({ hash: msg.hash, stored: true });
+ } catch (error) {
+ console.error('Error storing message:', error);
+ res.status(500).json({ error: 'Internal server error' });
+ }
+ });
+
+ /**
+ * GET /messages/:hash - Get a specific message by hash.
+ */
+ router.get('/:hash', (req: Request, res: Response): void => {
+ try {
+ const hash = req.params.hash as string;
+ const stored = storage.getMessage(hash);
+ if (stored === undefined) {
+ res.status(404).json({ error: 'Message not found' });
+ return;
+ }
+ res.json(stored.msg);
+ } catch (error) {
+ console.error('Error getting message:', error);
+ res.status(500).json({ error: 'Internal server error' });
+ }
+ });
+
+ return router;
+}
diff --git a/api-relay/src/routes/signatures.ts b/api-relay/src/routes/signatures.ts
new file mode 100644
index 0000000..f2a78ba
--- /dev/null
+++ b/api-relay/src/routes/signatures.ts
@@ -0,0 +1,57 @@
+import { Router, type Request, type Response } from 'express';
+import type { StorageService } from '../services/storage';
+import type { RelayService } from '../services/relay';
+import type { MsgSignature, StoredSignature } from '../types/message';
+
+export function createSignaturesRouter(
+ storage: StorageService,
+ relay: RelayService,
+): Router {
+ const router = Router();
+
+ /**
+ * GET /signatures/:hash - Get signatures for a message hash.
+ */
+ router.get('/:hash', (req: Request, res: Response): void => {
+ try {
+ const hash = req.params.hash as string;
+ const stored = storage.getSignatures(hash);
+ const signatures: MsgSignature[] = stored.map((s) => s.msg);
+ res.json(signatures);
+ } catch (error) {
+ console.error('Error getting signatures:', error);
+ res.status(500).json({ error: 'Internal server error' });
+ }
+ });
+
+ /**
+ * POST /signatures - Store and relay a signature.
+ */
+ router.post('/', async (req: Request, res: Response): Promise => {
+ try {
+ const sig = req.body as MsgSignature;
+
+ if (!sig.signature || !sig.signature.hash) {
+ res.status(400).json({ error: 'Invalid signature format' });
+ return;
+ }
+
+ const stored: StoredSignature = {
+ msg: sig,
+ received_at: Date.now(),
+ relayed: false,
+ };
+
+ storage.storeSignature(stored);
+ await relay.relaySignature(sig);
+ stored.relayed = true;
+
+ res.status(201).json({ stored: true });
+ } catch (error) {
+ console.error('Error storing signature:', error);
+ res.status(500).json({ error: 'Internal server error' });
+ }
+ });
+
+ return router;
+}
diff --git a/api-relay/src/services/relay.ts b/api-relay/src/services/relay.ts
new file mode 100644
index 0000000..070f395
--- /dev/null
+++ b/api-relay/src/services/relay.ts
@@ -0,0 +1,78 @@
+import type { StorageService } from './storage';
+import type { MsgChiffre, MsgSignature, MsgCle } from '../types/message';
+
+/**
+ * Service for relaying messages between peers.
+ */
+export class RelayService {
+ private storage: StorageService;
+ private peerRelays: string[];
+
+ constructor(storage: StorageService, peerRelays: string[]) {
+ this.storage = storage;
+ this.peerRelays = peerRelays;
+ }
+
+ /**
+ * Relay a message to peer relays if not already seen.
+ */
+ async relayMessage(msg: MsgChiffre): Promise {
+ if (this.storage.hasSeenHash(msg.hash)) {
+ return;
+ }
+
+ this.storage.markHashSeen(msg.hash);
+
+ for (const peer of this.peerRelays) {
+ try {
+ await this.postToPeer(peer, '/messages', msg);
+ } catch (error) {
+ console.error(`Error relaying to ${peer}:`, error);
+ }
+ }
+ }
+
+ /**
+ * Relay a signature to peer relays.
+ */
+ async relaySignature(sig: MsgSignature): Promise {
+ for (const peer of this.peerRelays) {
+ try {
+ await this.postToPeer(peer, '/signatures', sig);
+ } catch (error) {
+ console.error(`Error relaying signature to ${peer}:`, error);
+ }
+ }
+ }
+
+ /**
+ * Relay a key to peer relays.
+ */
+ async relayKey(key: MsgCle): Promise {
+ for (const peer of this.peerRelays) {
+ try {
+ await this.postToPeer(peer, '/keys', key);
+ } catch (error) {
+ console.error(`Error relaying key to ${peer}:`, error);
+ }
+ }
+ }
+
+ /**
+ * POST data to a peer relay.
+ */
+ private async postToPeer(
+ peerUrl: string,
+ endpoint: string,
+ data: unknown,
+ ): Promise {
+ const response = await fetch(`${peerUrl}${endpoint}`, {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify(data),
+ });
+ if (!response.ok) {
+ throw new Error(`Peer relay returned ${response.status}`);
+ }
+ }
+}
diff --git a/api-relay/src/services/storage.ts b/api-relay/src/services/storage.ts
new file mode 100644
index 0000000..c97680a
--- /dev/null
+++ b/api-relay/src/services/storage.ts
@@ -0,0 +1,191 @@
+import { promises as fs } from 'fs';
+import { join } from 'path';
+import type { StoredMessage, StoredSignature, StoredKey } from '../types/message';
+
+/**
+ * In-memory storage with optional persistence.
+ * In production, use a proper database (SQLite, PostgreSQL, etc.).
+ */
+export class StorageService {
+ private messages: Map = new Map();
+ private signatures: Map = new Map();
+ private keys: Map = new Map();
+ private seenHashes: Set = new Set();
+ private storagePath: string;
+
+ constructor(storagePath: string) {
+ this.storagePath = storagePath;
+ }
+
+ /**
+ * Initialize storage (load from disk if exists).
+ */
+ async initialize(): Promise {
+ await fs.mkdir(this.storagePath, { recursive: true });
+ await this.loadFromDisk();
+ }
+
+ /**
+ * Check if a hash has been seen before (deduplication).
+ */
+ hasSeenHash(hash: string): boolean {
+ return this.seenHashes.has(hash);
+ }
+
+ /**
+ * Mark a hash as seen.
+ */
+ markHashSeen(hash: string): void {
+ this.seenHashes.add(hash);
+ }
+
+ /**
+ * Store an encrypted message.
+ */
+ storeMessage(msg: StoredMessage): void {
+ this.messages.set(msg.msg.hash, msg);
+ this.markHashSeen(msg.msg.hash);
+ }
+
+ /**
+ * Get an encrypted message by hash.
+ */
+ getMessage(hash: string): StoredMessage | undefined {
+ return this.messages.get(hash);
+ }
+
+ /**
+ * Get messages in a time window, optionally filtered by service.
+ */
+ getMessages(
+ start: number,
+ end: number,
+ serviceUuid?: string,
+ ): StoredMessage[] {
+ const results: StoredMessage[] = [];
+ for (const msg of this.messages.values()) {
+ const timestamp = msg.msg.datajson_public.timestamp;
+ if (timestamp === undefined) {
+ continue;
+ }
+ if (timestamp < start || timestamp > end) {
+ continue;
+ }
+ if (
+ serviceUuid !== undefined &&
+ !msg.msg.datajson_public.services_uuid.includes(serviceUuid)
+ ) {
+ continue;
+ }
+ results.push(msg);
+ }
+ return results.sort((a, b) => {
+ const tsA = a.msg.datajson_public.timestamp ?? 0;
+ const tsB = b.msg.datajson_public.timestamp ?? 0;
+ return tsA - tsB;
+ });
+ }
+
+ /**
+ * Store a signature.
+ */
+ storeSignature(sig: StoredSignature): void {
+ const hash = sig.msg.hash_cible ?? sig.msg.signature.hash;
+ const existing = this.signatures.get(hash) ?? [];
+ existing.push(sig);
+ this.signatures.set(hash, existing);
+ }
+
+ /**
+ * Get signatures for a message hash.
+ */
+ getSignatures(hash: string): StoredSignature[] {
+ return this.signatures.get(hash) ?? [];
+ }
+
+ /**
+ * Store a decryption key.
+ */
+ storeKey(key: StoredKey): void {
+ const hash = key.msg.hash_message;
+ const existing = this.keys.get(hash) ?? [];
+ existing.push(key);
+ this.keys.set(hash, existing);
+ }
+
+ /**
+ * Get decryption keys for a message hash.
+ */
+ getKeys(hash: string): StoredKey[] {
+ return this.keys.get(hash) ?? [];
+ }
+
+ /**
+ * Load data from disk (if persistence is enabled).
+ * ENOENT: no file yet (first run), start fresh. Other errors are logged and rethrown.
+ */
+ private async loadFromDisk(): Promise {
+ const dataPath = join(this.storagePath, 'messages.json');
+ let raw: string;
+ try {
+ raw = await fs.readFile(dataPath, 'utf-8');
+ } catch (err) {
+ const code =
+ err instanceof Error && 'code' in err
+ ? (err as NodeJS.ErrnoException).code
+ : undefined;
+ if (code === 'ENOENT') {
+ return;
+ }
+ console.error('Error loading storage from disk:', err);
+ throw err;
+ }
+ type StorageSchema = {
+ messages?: Array<[string, StoredMessage]>;
+ seenHashes?: string[];
+ signatures?: Array<[string, StoredSignature[]]>;
+ keys?: Array<[string, StoredKey[]]>;
+ };
+ let parsed: StorageSchema;
+ try {
+ parsed = JSON.parse(raw) as StorageSchema;
+ } catch (err) {
+ console.error('Error parsing storage file:', err);
+ throw err;
+ }
+ if (parsed.messages) {
+ for (const [hash, msg] of parsed.messages) {
+ this.messages.set(hash, msg);
+ }
+ }
+ if (parsed.seenHashes) {
+ for (const hash of parsed.seenHashes) {
+ this.seenHashes.add(hash);
+ }
+ }
+ if (parsed.signatures) {
+ for (const [hash, items] of parsed.signatures) {
+ this.signatures.set(hash, items);
+ }
+ }
+ if (parsed.keys) {
+ for (const [hash, items] of parsed.keys) {
+ this.keys.set(hash, items);
+ }
+ }
+ }
+
+ /**
+ * Save data to disk (messages, seenHashes, signatures, keys).
+ */
+ async saveToDisk(): Promise {
+ const dataPath = join(this.storagePath, 'messages.json');
+ const data = {
+ messages: Array.from(this.messages.entries()),
+ seenHashes: Array.from(this.seenHashes),
+ signatures: Array.from(this.signatures.entries()),
+ keys: Array.from(this.keys.entries()),
+ };
+ await fs.writeFile(dataPath, JSON.stringify(data, null, 2));
+ }
+}
diff --git a/api-relay/src/types/message.ts b/api-relay/src/types/message.ts
new file mode 100644
index 0000000..200cd46
--- /dev/null
+++ b/api-relay/src/types/message.ts
@@ -0,0 +1,68 @@
+/**
+ * Published encrypted message (without signatures and keys).
+ */
+export interface MsgChiffre {
+ hash: string;
+ message_chiffre: string;
+ datajson_public: {
+ services_uuid: string[];
+ types_uuid: string[];
+ timestamp?: number;
+ version?: string;
+ [key: string]: unknown;
+ };
+}
+
+/**
+ * Separate signature message.
+ */
+export interface MsgSignature {
+ signature: {
+ hash: string;
+ cle_publique: string;
+ signature: string;
+ nonce: string;
+ materiel?: Record;
+ };
+ hash_cible?: string;
+}
+
+/**
+ * Individual decryption message with ECDH material.
+ */
+export interface MsgCle {
+ hash_message: string;
+ cle_de_chiffrement_message: {
+ algo: string;
+ params: Record;
+ cle_chiffree?: string;
+ };
+ df_ecdh_scannable: string;
+}
+
+/**
+ * Stored message with metadata.
+ */
+export interface StoredMessage {
+ msg: MsgChiffre;
+ received_at: number;
+ relayed: boolean;
+}
+
+/**
+ * Stored signature with metadata.
+ */
+export interface StoredSignature {
+ msg: MsgSignature;
+ received_at: number;
+ relayed: boolean;
+}
+
+/**
+ * Stored key with metadata.
+ */
+export interface StoredKey {
+ msg: MsgCle;
+ received_at: number;
+ relayed: boolean;
+}
diff --git a/api-relay/tsconfig.json b/api-relay/tsconfig.json
new file mode 100644
index 0000000..7050bf9
--- /dev/null
+++ b/api-relay/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "module": "ESNext",
+ "lib": ["ES2022"],
+ "moduleResolution": "bundler",
+ "rootDir": "./src",
+ "outDir": "./dist",
+ "strict": true,
+ "esModuleInterop": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+ "exactOptionalPropertyTypes": true
+ },
+ "include": ["src/**/*"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/configure-nginx-proxy.sh b/configure-nginx-proxy.sh
index d8d1478..8b4fc02 100755
--- a/configure-nginx-proxy.sh
+++ b/configure-nginx-proxy.sh
@@ -194,6 +194,35 @@ server {
}
EOF
+# 5. UserWallet (port 3018)
+echo "📝 Configuration de userwallet.certificator.4nkweb.com..."
+${SUDO_CMD} tee "${NGINX_SITES_AVAILABLE}/userwallet.certificator.4nkweb.com" > /dev/null << 'EOF'
+# UserWallet frontend (Vite)
+server {
+ listen 80;
+ server_name userwallet.certificator.4nkweb.com;
+
+ # Logs
+ access_log /var/log/nginx/userwallet.certificator.4nkweb.com.access.log;
+ error_log /var/log/nginx/userwallet.certificator.4nkweb.com.error.log;
+
+ # Proxy vers le frontend UserWallet (port 3018) sur 192.168.1.105
+ location / {
+ proxy_pass http://192.168.1.105:3018;
+ proxy_http_version 1.1;
+ proxy_set_header Upgrade $http_upgrade;
+ proxy_set_header Connection 'upgrade';
+ proxy_set_header Host $host;
+ proxy_set_header X-Real-IP $remote_addr;
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+ proxy_set_header X-Forwarded-Proto $scheme;
+ proxy_cache_bypass $http_upgrade;
+ proxy_read_timeout 300s;
+ proxy_connect_timeout 75s;
+ }
+}
+EOF
+
# Activer les sites
echo ""
echo "🔗 Activation des sites..."
@@ -201,6 +230,7 @@ ${SUDO_CMD} ln -sf "${NGINX_SITES_AVAILABLE}/dashboard.certificator.4nkweb.com"
${SUDO_CMD} ln -sf "${NGINX_SITES_AVAILABLE}/faucet.certificator.4nkweb.com" "${NGINX_SITES_ENABLED}/faucet.certificator.4nkweb.com"
${SUDO_CMD} ln -sf "${NGINX_SITES_AVAILABLE}/anchorage.certificator.4nkweb.com" "${NGINX_SITES_ENABLED}/anchorage.certificator.4nkweb.com"
${SUDO_CMD} ln -sf "${NGINX_SITES_AVAILABLE}/watermark.certificator.4nkweb.com" "${NGINX_SITES_ENABLED}/watermark.certificator.4nkweb.com"
+${SUDO_CMD} ln -sf "${NGINX_SITES_AVAILABLE}/userwallet.certificator.4nkweb.com" "${NGINX_SITES_ENABLED}/userwallet.certificator.4nkweb.com"
# Tester la configuration Nginx
echo ""
@@ -229,6 +259,7 @@ DOMAINS=(
"faucet.certificator.4nkweb.com"
"anchorage.certificator.4nkweb.com"
"watermark.certificator.4nkweb.com"
+ "userwallet.certificator.4nkweb.com"
)
for domain in "${DOMAINS[@]}"; do
@@ -256,6 +287,7 @@ echo " - dashboard.certificator.4nkweb.com -> http://192.168.1.105:3020"
echo " - faucet.certificator.4nkweb.com -> http://192.168.1.105:3021"
echo " - anchorage.certificator.4nkweb.com -> http://192.168.1.105:3010"
echo " - watermark.certificator.4nkweb.com -> http://192.168.1.105:3022"
+echo " - userwallet.certificator.4nkweb.com -> http://192.168.1.105:3018"
echo ""
echo "⚠️ Note: Si les services tournent sur une autre machine,"
echo " modifiez les IP dans les fichiers de configuration Nginx"
diff --git a/features/utxo-list-fees-update-and-historical-completion.md b/features/utxo-list-fees-update-and-historical-completion.md
new file mode 100644
index 0000000..23f2605
--- /dev/null
+++ b/features/utxo-list-fees-update-and-historical-completion.md
@@ -0,0 +1,120 @@
+# UTXO-list : récupération frais et complétion historique (dates, blockTime)
+
+**Auteur** : Équipe 4NK
+**Date** : 2026-01-26
+**Version** : 1.0
+
+## Objectif
+
+- Ajouter les dates manquantes dans `hash_list.txt` et compléter l'historique
+- Compléter les `blockTime` manquants dans `utxo_list.txt` et compléter l'historique
+- Récupérer les frais depuis les transactions d'ancrage (OP_RETURN) et les stocker
+- Ajouter un bouton dans l'UI pour déclencher la récupération des frais
+
+## Problème initial
+
+- **hash_list.txt** : format sans date (`hash;txid;blockHeight;confirmations`)
+- **utxo_list.txt** : `blockTime` souvent vide (dernier champ)
+- **Frais** : absents du fichier (métadonnées OP_RETURN, non stockées)
+- Pas de moyen de récupérer/compléter les frais depuis l'UI
+
+## Impacts
+
+- **hash_list.txt** : format étendu avec date (`hash;txid;blockHeight;confirmations;date`)
+- **utxo_list.txt** : `blockTime` complété automatiquement lors des écritures futures
+- **fees_list.txt** : nouveau fichier pour stocker les frais (`txid;fee;fee_sats;blockHeight;blockTime;confirmations;changeAddress;changeAmount`)
+- **UI** : bouton "Récupérer les frais depuis les ancrages" dans section Frais
+- **API** : endpoint `/api/utxo/fees/update` pour déclencher la récupération
+
+## Modifications
+
+### Serveur (`signet-dashboard/src/bitcoin-rpc.js`)
+
+- **getHashList()** :
+ - Format fichier : ajout colonne `date` (ISO 8601)
+ - Lecture : rétrocompatible (gère format avec/sans date)
+ - Écriture : ajoute date si manquante (date actuelle)
+
+- **getUtxoList()** :
+ - Lecture `fees_list.txt` : charge les frais depuis le fichier si disponible
+ - Complète `blockTime` via RPC pour UTXOs confirmés sans `blockTime`
+
+- **updateFeesFromAnchors()** (nouveau) :
+ - Lit les ancrages depuis `utxo_list.txt`
+ - Pour chaque transaction d'ancrage unique, récupère `getrawtransaction`
+ - Extrait les frais depuis OP_RETURN (métadonnées `FEE:`)
+ - Stocke dans `fees_list.txt` (format ci-dessus)
+ - Ignore les frais déjà présents (évite doublons)
+
+### Serveur (`signet-dashboard/src/server.js`)
+
+- **Route `/api/utxo/fees/update`** (POST) :
+ - Appelle `bitcoinRPC.updateFeesFromAnchors()`
+ - Retourne `{success, newFees, totalFees, processed}`
+
+### Page UTXO-list (`signet-dashboard/public/utxo-list.html`)
+
+- **Bouton "Récupérer les frais depuis les ancrages"** :
+ - Dans header section Frais
+ - Spinner pendant traitement
+ - Appelle `/api/utxo/fees/update`
+ - Recharge la liste après succès
+
+- **Fonction `updateFeesFromAnchors()`** :
+ - Gère le spinner et les états du bouton
+ - Affiche alert avec résultats
+
+### Scripts batch (`scripts/`)
+
+- **complete-hash-list-dates.js** :
+ - Complète les dates manquantes dans `hash_list.txt`
+ - Ajoute date actuelle si colonne absente ou vide
+
+- **complete-utxo-list-blocktime.js** :
+ - Complète les `blockTime` manquants dans `utxo_list.txt`
+ - Récupère `blockTime` via RPC pour UTXOs confirmés sans `blockTime`
+
+- **diagnose-bloc-rewards.js** :
+ - Diagnostic Bloc Rewards (pourquoi ~4700 BTC au lieu de 50 BTC)
+ - Compare `listunspent`, `getrawtransaction`, `blockheight`
+ - Calcule subsidy attendu et frais
+
+## Réponse : Frais dans les autres tableaux ?
+
+**Non, les frais ne sont PAS des UTXOs.** Ce sont des **métadonnées** extraites de l'OP_RETURN des transactions d'ancrage. Ils sont :
+- **Absents** de `utxo_list.txt` (ce ne sont pas des UTXOs)
+- **Présents** dans le tableau `fees` retourné par `/api/utxo/list` (via RPC / OP_RETURN)
+- **Stockés** dans `fees_list.txt` après utilisation du bouton de récupération
+
+Les frais ne sont **pas comptés** dans les autres tableaux (Bloc Rewards, Ancrages, Changes). Ils sont dans un tableau séparé.
+
+## Modalités de déploiement
+
+1. **Redémarrer le dashboard** : `sudo systemctl restart signet-dashboard.service`
+2. **Compléter l'historique** (optionnel) :
+ ```bash
+ node scripts/complete-hash-list-dates.js
+ node scripts/complete-utxo-list-blocktime.js
+ ```
+3. **Récupérer les frais** : utiliser le bouton dans l'UI ou appeler `/api/utxo/fees/update`
+4. **Diagnostic Bloc Rewards** (optionnel) :
+ ```bash
+ node scripts/diagnose-bloc-rewards.js
+ ```
+
+## Modalités d'analyse
+
+- **Dates hash_list.txt** : vérifier que colonne date est présente
+- **blockTime utxo_list.txt** : vérifier que dernier champ n'est plus vide pour UTXOs confirmés
+- **Frais** : vérifier que `fees_list.txt` est créé et contient des frais après utilisation du bouton
+- **UI** : vérifier que le bouton fonctionne et affiche le spinner
+
+## Pages affectées
+
+- `signet-dashboard/src/bitcoin-rpc.js` : `getHashList`, `getUtxoList`, `updateFeesFromAnchors`
+- `signet-dashboard/src/server.js` : route `/api/utxo/fees/update`
+- `signet-dashboard/public/utxo-list.html` : bouton et fonction `updateFeesFromAnchors`
+- `scripts/complete-hash-list-dates.js` : nouveau
+- `scripts/complete-utxo-list-blocktime.js` : nouveau
+- `scripts/diagnose-bloc-rewards.js` : nouveau
+- `features/utxo-list-fees-update-and-historical-completion.md` : cette doc
diff --git a/fixKnowledge/api-relay-doc-config-cleanup.md b/fixKnowledge/api-relay-doc-config-cleanup.md
new file mode 100644
index 0000000..2564985
--- /dev/null
+++ b/fixKnowledge/api-relay-doc-config-cleanup.md
@@ -0,0 +1,52 @@
+# API Relay – Correction doc port 8080→3019 et nettoyage config
+
+**Auteur:** Équipe 4NK
+**Date:** 2026-01-26
+
+## Motivations
+
+- Aligner la documentation api-relay sur le port réel (3019) ; les exemples et défauts indiquaient 8080.
+- Supprimer le code mort : `api-relay/src/types/config.ts` (interface `RelayConfig`) n’était pas utilisé ; la config réelle passe par les variables d’environnement dans `index.ts`.
+- Harmoniser le placeholder du champ « relais » dans UserWallet (3019).
+
+## Root causes
+
+- **Doc** : `features/api-relay.md` et ancien README indiquaient le port 8080 ; le code utilise 3019 par défaut.
+- **config.ts** : Fichier créé pour une config structurée jamais branchée ; `index.ts` lit PORT, HOST, STORAGE_PATH, PEER_RELAYS depuis l’env.
+
+## Correctifs
+
+### 1. features/api-relay.md
+
+- Variables d’environnement : défaut `PORT` 8080 → 3019.
+- Exemples (PORT, PEER_RELAYS, curl) : 8080 → 3019.
+- Structure du projet : suppression de `config.ts` dans l’arbre ; mention « config via env » pour `index.ts`.
+
+### 2. api-relay – suppression config.ts
+
+- **Fichier supprimé** : `api-relay/src/types/config.ts`.
+- Aucun import ailleurs ; le build reste vert.
+
+### 3. userwallet – RelaySettingsScreen
+
+- Placeholder du champ « Ajouter un relais » : `http://relay.example.com:8080` → `http://relay.example.com:3019`.
+
+## Évolutions
+
+- Aucune.
+
+## Pages affectées
+
+- `userwallet/features/api-relay.md`
+- `api-relay/src/types/config.ts` (supprimé)
+- `userwallet/src/components/RelaySettingsScreen.tsx`
+
+## Modalités de déploiement
+
+- Aucun redéploiement serveur requis. Rebuild userwallet si déploiement front ; api-relay inchangé côté runtime.
+
+## Modalités d’analyse
+
+- Vérifier que les exemples curl dans `api-relay.md` ciblent bien un relais sur 3019.
+- `npm run build` dans api-relay doit passer.
+- `npm run build` dans userwallet doit passer.
diff --git a/fixKnowledge/dashboard-hash-generation-error.md b/fixKnowledge/dashboard-hash-generation-error.md
new file mode 100644
index 0000000..4537a30
--- /dev/null
+++ b/fixKnowledge/dashboard-hash-generation-error.md
@@ -0,0 +1,351 @@
+# Correction : Erreur lors de la génération du hash pour un document
+
+**Auteur** : Équipe 4NK
+**Date** : 2026-01-24
+**Version** : 1.0
+
+## Problème Identifié
+
+Erreur lors de la génération d'un hash pour un document dans le dashboard signet.
+
+### Symptômes
+
+- Erreur lors de la génération du hash pour les fichiers binaires (PDF, images, etc.)
+- Le hash généré était incorrect pour les fichiers binaires
+- Pas de message d'erreur clair lorsque la lecture du fichier échouait
+- Les fichiers texte fonctionnaient correctement
+
+## Cause Racine
+
+**Root cause** : La fonction `generateHashFromFile()` utilisait `FileReader.readAsText()` qui convertit le fichier en texte UTF-8. Cette méthode échoue pour les fichiers binaires car :
+
+1. **Fichiers binaires non valides en UTF-8** : Les fichiers binaires (PDF, images, etc.) contiennent des bytes qui ne sont pas valides en UTF-8, ce qui cause des erreurs lors de la conversion
+2. **Hash incorrect** : Même si la conversion réussissait partiellement, le hash calculé était basé sur la représentation texte corrompue du fichier, pas sur les bytes bruts, ce qui produisait un hash incorrect
+3. **Backend traite comme UTF-8** : Le backend utilisait `crypto.createHash('sha256').update(content, 'utf8')` qui suppose que le contenu est en UTF-8, ce qui est incorrect pour les fichiers binaires
+4. **Pas de gestion d'erreur** : Il n'y avait pas de gestion d'erreur pour `reader.onerror`, donc les erreurs de lecture n'étaient pas capturées et affichées à l'utilisateur
+
+**Problème technique** : Le code ne distinguait pas les fichiers texte des fichiers binaires et utilisait une méthode de lecture inadaptée pour les fichiers binaires.
+
+## Correctifs Appliqués
+
+### 1. Modification de `generateHashFromFile()` pour utiliser `readAsArrayBuffer()`
+
+**Fichier** : `signet-dashboard/public/app.js`
+
+**Avant** :
+```javascript
+const reader = new FileReader();
+reader.onload = async (e) => {
+ const fileContent = e.target.result;
+ // ...
+ body: JSON.stringify({ fileContent }),
+};
+reader.readAsText(selectedFile);
+```
+
+**Après** :
+```javascript
+const reader = new FileReader();
+
+await new Promise((resolve, reject) => {
+ reader.onload = async (e) => {
+ try {
+ const arrayBuffer = e.target.result;
+ // Convertir l'ArrayBuffer en base64 pour l'envoi au backend
+ // Utiliser une boucle pour éviter les limites de taille des arguments de fonction
+ const uint8Array = new Uint8Array(arrayBuffer);
+ let binaryString = '';
+ for (let i = 0; i < uint8Array.length; i++) {
+ binaryString += String.fromCharCode(uint8Array[i]);
+ }
+ const base64 = btoa(binaryString);
+ // ...
+ body: JSON.stringify({ fileContent: base64, isBase64: true }),
+ } catch (error) {
+ showResult('anchor-result', 'error', `Erreur : ${error.message}`);
+ reject(error);
+ }
+ };
+
+ reader.onerror = (error) => {
+ showResult('anchor-result', 'error', `Erreur lors de la lecture du fichier : ${error.message || 'Erreur inconnue'}`);
+ reject(error);
+ };
+
+ reader.readAsArrayBuffer(selectedFile);
+});
+```
+
+**Impact** :
+- Les fichiers binaires sont maintenant lus correctement comme ArrayBuffer
+- Le contenu est converti en base64 pour l'envoi au backend
+- Gestion d'erreur complète avec `reader.onerror`
+- Utilisation d'une boucle pour la conversion base64 pour éviter les limites de taille des arguments de fonction pour les gros fichiers
+- Meilleure gestion des erreurs HTTP avec affichage des messages d'erreur du backend
+
+### 2. Modification du backend pour accepter les fichiers binaires en base64
+
+**Fichier** : `signet-dashboard/src/server.js`
+
+**Avant** :
+```javascript
+app.post('/api/hash/generate', (req, res) => {
+ try {
+ const { text, fileContent } = req.body;
+ if (!text && !fileContent) {
+ return res.status(400).json({ error: 'text or fileContent is required' });
+ }
+ const content = text || fileContent;
+ const hash = crypto.createHash('sha256').update(content, 'utf8').digest('hex');
+ res.json({ hash });
+ } catch (error) {
+ logger.error('Error generating hash', { error: error.message });
+ res.status(500).json({ error: error.message });
+ }
+});
+```
+
+**Après** :
+```javascript
+app.post('/api/hash/generate', (req, res) => {
+ try {
+ const { text, fileContent, isBase64 } = req.body;
+
+ if (!text && !fileContent) {
+ return res.status(400).json({ error: 'text or fileContent is required' });
+ }
+
+ let hash;
+
+ if (text) {
+ // Pour le texte, utiliser UTF-8
+ hash = crypto.createHash('sha256').update(text, 'utf8').digest('hex');
+ } else if (fileContent) {
+ if (isBase64) {
+ // Pour les fichiers binaires, décoder le base64 et calculer le hash sur les bytes bruts
+ const buffer = Buffer.from(fileContent, 'base64');
+ hash = crypto.createHash('sha256').update(buffer).digest('hex');
+ } else {
+ // Fallback pour compatibilité : traiter comme UTF-8 (pour fichiers texte)
+ hash = crypto.createHash('sha256').update(fileContent, 'utf8').digest('hex');
+ }
+ } else {
+ return res.status(400).json({ error: 'text or fileContent is required' });
+ }
+
+ res.json({ hash });
+ } catch (error) {
+ logger.error('Error generating hash', { error: error.message, stack: error.stack });
+ res.status(500).json({ error: error.message });
+ }
+});
+```
+
+**Impact** :
+- Le backend distingue maintenant les fichiers texte (UTF-8) des fichiers binaires (base64)
+- Le hash est calculé sur les bytes bruts pour les fichiers binaires, garantissant un hash correct
+- Compatibilité maintenue avec l'ancien format (fichiers texte sans `isBase64`)
+- Meilleure journalisation des erreurs avec la stack trace
+- Gestion d'erreur robuste pour le décodage base64 avec messages d'erreur clairs
+- Validation des paramètres pour éviter les erreurs silencieuses
+
+### 3. Augmentation de la limite de taille du body JSON
+
+**Fichier** : `signet-dashboard/src/server.js`
+
+**Avant** :
+```javascript
+app.use(express.json());
+app.use(express.urlencoded({ extended: true }));
+```
+
+**Après** :
+```javascript
+// Augmenter la limite de taille pour le body JSON (100MB) pour supporter les gros fichiers en base64
+app.use(express.json({ limit: '100mb' }));
+app.use(express.urlencoded({ extended: true, limit: '100mb' }));
+```
+
+**Impact** :
+- Support des gros fichiers (jusqu'à ~75MB en binaire, ~100MB en base64)
+- Évite les erreurs "payload too large" pour les fichiers volumineux
+
+### 4. Ajout d'un middleware pour gérer les erreurs de parsing JSON
+
+**Fichier** : `signet-dashboard/src/server.js`
+
+**Ajout** :
+```javascript
+// Middleware pour gérer les erreurs de parsing JSON
+app.use((err, req, res, next) => {
+ if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
+ logger.error('JSON parsing error', {
+ error: err.message,
+ path: req.path,
+ method: req.method
+ });
+ return res.status(400).json({
+ error: 'Invalid JSON',
+ message: err.message
+ });
+ }
+ next(err);
+});
+```
+
+**Impact** :
+- Capture les erreurs de parsing JSON avant qu'elles n'atteignent les routes
+- Retourne des messages d'erreur clairs pour les requêtes JSON mal formées
+- Améliore la journalisation des erreurs de parsing
+
+## Modifications
+
+### Fichiers Modifiés
+
+- `signet-dashboard/public/app.js` :
+ - Modification de `generateHashFromFile()` pour utiliser `readAsArrayBuffer()` au lieu de `readAsText()`
+ - Ajout de la gestion d'erreur `reader.onerror`
+ - Conversion en base64 avec une boucle pour supporter les gros fichiers
+ - Amélioration de la gestion des erreurs HTTP avec affichage des messages d'erreur du backend
+
+- `signet-dashboard/src/server.js` :
+ - Modification de la route `/api/hash/generate` pour accepter `isBase64` (lignes 472-530)
+ - Calcul du hash sur les bytes bruts pour les fichiers binaires
+ - Distinction entre fichiers texte (UTF-8) et fichiers binaires (base64)
+ - Amélioration de la journalisation des erreurs
+ - Gestion d'erreur robuste pour le décodage base64
+ - Validation des paramètres d'entrée
+ - Augmentation de la limite de taille du body JSON à 100MB (lignes 132-134)
+ - Ajout d'un middleware pour gérer les erreurs de parsing JSON (lignes 144-156)
+
+### Fichiers Créés
+
+- `fixKnowledge/dashboard-hash-generation-error.md` : Cette documentation
+
+## Modalités de Déploiement
+
+### Déploiement des Modifications
+
+1. **Vérifier que le dashboard est en cours d'exécution** :
+ ```bash
+ curl http://localhost:3020/api/blockchain/info
+ ```
+
+2. **Redémarrer le dashboard** :
+ ```bash
+ # Si démarré avec npm start
+ # Arrêter avec Ctrl+C puis redémarrer
+ cd /home/ncantu/Bureau/code/bitcoin/signet-dashboard
+ npm start
+
+ # Si démarré avec systemd
+ sudo systemctl restart signet-dashboard
+ ```
+
+3. **Vérifier que le dashboard fonctionne** :
+ ```bash
+ curl http://localhost:3020/
+ ```
+
+### Tests de Validation
+
+1. **Test avec un fichier texte** :
+ - Créer un fichier texte simple
+ - Générer le hash via l'interface
+ - Vérifier que le hash est généré correctement
+
+2. **Test avec un fichier binaire (PDF)** :
+ - Sélectionner un fichier PDF
+ - Générer le hash via l'interface
+ - Vérifier que le hash est généré correctement (pas d'erreur)
+
+3. **Test avec un fichier binaire (image)** :
+ - Sélectionner une image (PNG, JPG, etc.)
+ - Générer le hash via l'interface
+ - Vérifier que le hash est généré correctement
+
+4. **Test avec un gros fichier** :
+ - Sélectionner un fichier de plusieurs Mo
+ - Générer le hash via l'interface
+ - Vérifier que le hash est généré correctement (pas d'erreur de mémoire)
+
+## Modalités d'Analyse
+
+### Vérification que la génération de hash fonctionne
+
+1. **Test de l'API directement** :
+ ```bash
+ # Test avec du texte
+ curl -X POST http://localhost:3020/api/hash/generate \
+ -H "Content-Type: application/json" \
+ -d '{"text": "Hello World"}'
+
+ # Test avec un fichier binaire (base64)
+ # Générer le base64 d'un fichier
+ base64 -i test.pdf > test.pdf.base64
+ # Envoyer au backend
+ curl -X POST http://localhost:3020/api/hash/generate \
+ -H "Content-Type: application/json" \
+ -d "{\"fileContent\": \"$(cat test.pdf.base64)\", \"isBase64\": true}"
+ ```
+
+2. **Vérifier les logs** :
+ ```bash
+ # Si démarré avec npm start
+ tail -f /tmp/dashboard.log
+
+ # Si démarré avec systemd
+ sudo journalctl -u signet-dashboard -f
+ ```
+
+3. **Test dans le navigateur** :
+ - Ouvrir `https://dashboard.certificator.4nkweb.com/`
+ - Aller dans l'onglet "Ancrage"
+ - Sélectionner un fichier PDF
+ - Cliquer sur "Générer le Hash"
+ - Vérifier que le hash est généré sans erreur
+
+### Diagnostic des Erreurs
+
+1. **Erreur "Erreur lors de la lecture du fichier"** :
+ - Vérifier que le fichier est valide
+ - Vérifier les logs du navigateur (Console JavaScript)
+ - Vérifier les logs du backend
+
+2. **Erreur "Erreur lors de la génération du hash"** :
+ - Vérifier les logs du backend pour voir l'erreur exacte
+ - Vérifier que le backend reçoit bien `isBase64: true` pour les fichiers binaires
+ - Vérifier que le base64 est valide
+
+3. **Hash incorrect** :
+ - Vérifier que le hash est calculé sur les bytes bruts (pas sur UTF-8)
+ - Comparer avec un hash calculé localement : `sha256sum fichier.pdf`
+
+## Résultat
+
+✅ **Problème résolu**
+
+- Les fichiers binaires (PDF, images, etc.) peuvent maintenant être hashés correctement
+- Le hash est calculé sur les bytes bruts, garantissant un hash correct et reproductible
+- Les erreurs sont maintenant capturées et affichées clairement à l'utilisateur
+- Les gros fichiers sont supportés grâce à la conversion base64 par boucle et l'augmentation de la limite de taille du body
+- Compatibilité maintenue avec les fichiers texte
+- L'erreur 500 (Internal Server Error) est maintenant corrigée avec une gestion d'erreur robuste
+- Les erreurs de parsing JSON sont maintenant gérées correctement avec des messages d'erreur clairs
+- Validation des paramètres pour éviter les erreurs silencieuses
+
+## Prévention
+
+Pour éviter ce problème à l'avenir :
+
+1. **Toujours utiliser `readAsArrayBuffer()` pour les fichiers binaires** : Ne jamais utiliser `readAsText()` pour les fichiers binaires
+2. **Distinguer les fichiers texte des fichiers binaires** : Utiliser un flag (`isBase64`) pour indiquer le type de contenu
+3. **Calculer le hash sur les bytes bruts** : Ne jamais calculer le hash sur une représentation texte d'un fichier binaire
+4. **Gérer les erreurs de FileReader** : Toujours implémenter `reader.onerror` pour capturer les erreurs de lecture
+5. **Utiliser des boucles pour les conversions base64** : Éviter `String.fromCharCode(...array)` qui peut échouer pour les gros fichiers
+
+## Pages Affectées
+
+- `signet-dashboard/public/app.js` : Modification de `generateHashFromFile()` (lignes 534-590)
+- `signet-dashboard/src/server.js` : Modification de la route `/api/hash/generate` (lignes 472-502)
+- `fixKnowledge/dashboard-hash-generation-error.md` : Documentation (nouveau)
diff --git a/fixKnowledge/userwallet-api-relay-fixes.md b/fixKnowledge/userwallet-api-relay-fixes.md
new file mode 100644
index 0000000..3418f5a
--- /dev/null
+++ b/fixKnowledge/userwallet-api-relay-fixes.md
@@ -0,0 +1,83 @@
+# Correctifs UserWallet et API Relay
+
+**Auteur:** Équipe 4NK
+**Date:** 2026-01-26
+
+## Motivations
+
+- Corriger la condition de relais dans POST /messages (api-relay) : les messages n’étaient jamais relayés.
+- Supprimer la duplication du type `MessageBase` dans SyncService et utiliser les types partagés.
+- Supprimer les fallbacks (retour de `[]` ou `false` en erreur) dans relay.ts et remonter les erreurs.
+- Implémenter une vraie dérivation clé publique depuis la clé privée à l’import d’identité, et documenter la limite (pas de mnemonic/seed).
+
+## Root causes
+
+- **Relais** : On appelait `storage.storeMessage()` puis `if (!storage.hasSeenHash())` pour relayer. Or `storeMessage` marque le hash comme vu, donc la condition était toujours fausse et le relais jamais exécuté.
+- **MessageBase** : SyncService définissait une interface locale `MessageBase` avec `hash?: string`, alors que le code utilisait `msg.hash.hash_value` (type `Hash`). Incohérence de typage et duplication.
+- **relay.ts** : Les GET renvoyaient `[]` et les POST `false` en cas d’erreur, ce qui masquait les échecs (fallback interdit).
+- **importIdentity** : On générait une nouvelle paire, puis on écrasait `privateKey` par la seed fournie tout en gardant la `publicKey` de la paire générée. Aucune dérivation depuis la clé importée.
+
+## Correctifs
+
+### 1. api-relay – POST /messages (relay condition)
+
+**Fichier:** `api-relay/src/routes/messages.ts`
+
+- Calculer `alreadySeen = storage.hasSeenHash(msg.hash)` **avant** `storage.storeMessage(stored)`.
+- Appeler `storage.storeMessage(stored)`.
+- Relayer seulement si `!alreadySeen` : `await relay.relayMessage(msg)` et `stored.relayed = true`.
+
+### 2. userwallet – SyncService MessageBase
+
+**Fichier:** `userwallet/src/services/syncService.ts`
+
+- Importer `MessageBase` depuis `../types/message`.
+- Supprimer l’interface locale `MessageBase` en fin de fichier.
+- Utiliser le type partagé pour `validateMessage` et `updateGraph`.
+
+### 3. userwallet – relay.ts (remonter les erreurs)
+
+**Fichier:** `userwallet/src/utils/relay.ts`
+
+- **GET** (`getMessagesChiffres`, `getSignatures`, `getKeys`) : ne plus retourner `[]` en erreur ; `throw new Error(...)` en cas de `!response.ok` ou d’échec fetch, avec message incluant statut et URL du relais.
+- **POST** (`postMessageChiffre`, `postSignature`, `postKey`) : ne plus retourner `false` ; `throw new Error(...)` en cas d’échec. Types de retour passés à `Promise`.
+
+**Fichier:** `userwallet/src/components/LoginScreen.tsx`
+
+- Adapter la boucle de publication : `await postMessageChiffre` / `await postSignature` sans vérifier de booléen ; en cas de throw, le `catch` existant pousse `{ relay, success: false }` et on continue.
+
+### 4. userwallet – importIdentity (dérivation + limite)
+
+**Fichiers:** `userwallet/src/utils/crypto.ts`, `userwallet/src/utils/identity.ts`
+
+- **crypto.ts** : Ajouter `publicKeyFromPrivateKey(privateKeyHex: string): string` qui dérive la clé publique secp256k1 (compressée, hex) depuis la clé privée hex.
+- **identity.ts** :
+ - Valider que l’entrée est 64 caractères hexadécimaux (32 octets), après trim et suppression d’un préfixe `0x` éventuel.
+ - Utiliser `publicKeyFromPrivateKey(raw)` pour la clé publique.
+ - Stocker `raw` comme `privateKey` et la clé dérivée comme `publicKey`.
+ - Documenter en JSDoc : seul l’import d’une clé privée hex brute est supporté ; mnemonic (BIP39) et dérivation depuis seed ne sont pas implémentés.
+
+## Évolutions
+
+- Aucune évolution fonctionnelle au-delà des correctifs ci‑dessus.
+
+## Pages affectées
+
+- `api-relay/src/routes/messages.ts`
+- `userwallet/src/services/syncService.ts`
+- `userwallet/src/utils/relay.ts`
+- `userwallet/src/utils/crypto.ts`
+- `userwallet/src/utils/identity.ts`
+- `userwallet/src/components/LoginScreen.tsx`
+
+## Modalités de déploiement
+
+- **api-relay** : Redémarrer le serveur après déploiement.
+- **userwallet** : Rebuild du frontend et déploiement des assets. Les appelants de `relay.ts` (SyncService, LoginScreen) gèrent déjà les erreurs (try/catch) ; les throws sont remontés jusqu’à eux.
+
+## Modalités d’analyse
+
+- **Relais** : Poster un message sur un relais avec pairs configurés ; vérifier qu’il est bien relayé vers les pairs (logs, GET sur un pair).
+- **SyncService** : Vérifier que le type-check et le lint passent ; lancer une sync et s’assurer qu’aucune régression sur la résolution du graphe.
+- **relay.ts** : En cas de relais injoignable ou réponse non ok, vérifier que l’erreur est bien levée (et non masquée par `[]` / `false`).
+- **importIdentity** : Importer une clé privée hex valide (64 caractères), vérifier que la clé publique stockée correspond à la dérivation secp256k1. Tester un format invalide (ex. mnemonic) et vérifier le retour `null` et le message en console.
diff --git a/hash_list.txt b/hash_list.txt
index 77aadf1..2cb9f38 100644
--- a/hash_list.txt
+++ b/hash_list.txt
@@ -15227,4 +15227,1967 @@ b439b2c7a773a4b66f98aa0d03cc81b974c480cbab7de559061d52e02711a882;7b1b3eb5e1f9f3c
4087d616decb1d5aeac824d5e64fcd063113bfb9d3143aa8439de4f136f299c5;6e917a716a3372e1e8cee8f2ed30e54757bec49b0e81fd66af623d69572f3071;8701;1
5b4a9dd820fb2eee41b98b46a3b0df985b24ef4b0f4796ac3ce15ea4a48db68d;5d54de21abcad2aea3145c8de1347e8ee9a473ae750d62f786252c01846c0b17;8701;1
907cdd594c40a701fc574630d8209470bd73823083aa88660a4401da9f106602;62898f1edab13eef6d2e22ff2b273b20d889394b43397fe3c667a4d32407aadb;8701;1
-3ee53506328e42c0cbff954ed880ea533e5e13233f9a989befc43c5876bfd04d;edfde533abb80afd58e4d320b7caef96dcfee0c6a70aa60260f80e0222083e03;8701;1
\ No newline at end of file
+3ee53506328e42c0cbff954ed880ea533e5e13233f9a989befc43c5876bfd04d;edfde533abb80afd58e4d320b7caef96dcfee0c6a70aa60260f80e0222083e03;8701;1
+6bac6ec1f206d3149fff5d091189497048800af2ff52cdac1ff477967ad4c9ae;308aa07702dbe4befe615bbb0c018d177c0a01b2798b868a01e49675ab3c9b18;8702;84
+09c0048ee21de57e80756e757aec5c672c217d1d18a36022627ed96981f15da9;033092626b835ad0310d9e234158b22cc331071ce5b85d3351beda25b7e20373;8702;84
+f8c0808d816ba2b8a8ed413271b4b1fe31a6a22351a5e0ee0c9c76295c025267;5512cbe7688a4fc75fced875f9ff3d3fd7f7cd2ed48bac5a38e3023e298f1bea;8703;83
+96933f3b10ed3f639af4a2142f560fe3f2b418e9b4c7bf4435ec14bc36d0ef0a;b1ee7d2e7eb7c3bebff488f1bca97892cbd7cb259060015cbe204a2409405f28;8703;83
+821dbc830e773c7b48a6cc1b0c7f1e840e59dc35a99cefd48b5532fbb6039aa9;478e49c07d963fb736567cf0f6df3153d971c6e3c4639a8b75965847e5159b5f;8703;83
+2ec4e50fb3598ad09e2c9f65d5e04313ba2c3ae56629d9fe75fab38625fe0cf4;dcfa2e16bbe6c4f5fd6bbe4ad4af3f0f0046120b34a8cf3a988343c2766d9c5a;8703;83
+d38a886be65b2f4c41a1bdfa529895cadb41ca856c3ec21103fc9519203a4ae6;1ac7f1c9077ee30128591690c971eac4e9e03d78154a2ad86a1427d14e2de689;8703;83
+20adf3484eec60e9c732846a8db2cd4ed10cb6bdecd4a232c6aedec01fcc5b93;d3105c5e53b351a9f2f3b1451c8f5e44c1b37364c9c7275260efa859aefac5be;8703;83
+354512f852270775339c95b3569ffbcde3de0c69eb962d53795966374eaac4bf;aa4c692cd69b6272300ecf7ae98e6fe50056e1a01200a92ded664711934364ba;8703;83
+6f1620e3fba4b51d96469b947faec4f943283e172b7e1bae977e80501a473e82;e6d742ecd581f884d69287c9cf73f5360d7cdfa3082a9b403483ccce7957a8ab;8703;83
+98c95f7eb7eac56c659ceee2e56eb3bfcb6e22dc9ecf8d3bf1bc9dcf618efc00;995056f01438c40cd2c6b0257a68fec3e52e44699c10aa2f3387670a7f3f6c0f;8703;83
+fb86ce3bbad1d15b9a440b0c74afcebb9851b6c3f7c336ebaf0c35c86c934e3f;dc5eff1a3680325f640b23abd6fc04fc3a099bc0459dad20697e8e18853d4dce;8703;83
+52fe838c1d0e845995e8d61e862622bf5d60058f916b8a60c2219855fd6e2a55;a6d4562898c5b28154e58af5d74da2032deb1bd73f9bc5084bbe0f59439492b5;8703;83
+44ed747527e1d05b42fc2dba0827b7f3127a8d61675400ca0fc5a6be81666efc;8e70b8086334d1703ea6393abbaf7d223707b6ae4c9751a926ccba265f642fcd;8703;83
+7e511627c8493aaa22b34c2d186ea7bda9e8648c44f63b15b0c9386df3ae6f08;3a9f3e8d6c08ead2de49d006dfe395e7344538fd7edfaa3d2f1579cda7c7cb92;8703;83
+fd8904c65c5833ef8c9c99748f0728da53d69cbe40d509179188b45a8da8f608;c09fa50e932909f82be24e2d4fa6f1e05bc29fbd7b4ac61df50823994408a5b8;8704;82
+78bfea67db6dc384e0447d48a77063a06828e2745cfb95635943e41d174c5715;09351db01b56fac186b3c96ea9a4b951250f674247d01c5d3ec5bb6f8d432090;8704;82
+bd6dbd7604b78146ff44d74d9ee61ec29ddc2daac258dde0cb69582499f6255b;5cc70b46c2c9a4d5f75fbcdc5d5b02905052113b38cacd5733911eb3f05e559d;8704;82
+4f7828ecd648e4630f2c5d4ec8931abf5179ee164bb714cdf77653ae1c75d7a8;54da5afa5954362e68300a08214f25d9182d1998fa97ebd855fd306ef3a1fb49;8704;82
+18136233c325496450d0c89275218385724f74a173e58f0f075ffaa47bf9b5a6;75e722fb1f3d539d7b1640e8eb8252cacc54922fd0ab40c9b8b3a8036ea257fa;8704;82
+9d2e4392dd5f82e6cc0b3d7cd28ae8493471d4d0b6d2c30712188f1515d5211b;13f7fa7df56cb86870fe0e2467e133487eb3a6c8794d29515326091f348f5a0e;8705;81
+98f083e08a010e64ac122812e42226ae64312a17ae9ad165f8df46bfe2a639e3;a6a63359ed85bff27dfef6e50694411908547340ad81f1753a9b900184e9f11e;8705;81
+239f07caae07526f7ac7e5c22760ad1e668617ef844a6efb55a794d03e51f2c0;3903684f327383610a3a0680a8213d01e9cbe7d309e2b2f2fe79340cab20731b;8705;81
+46774ea506251cc35d8eb808fa01d855c6b94b0c59b32555afcf604e39e4cb12;54fe225e2b6e693380574e14d51643479893be2dd522f0c22ac42bd88408a1c3;8705;81
+c1cd3fdeba4147f66a0ed8b54bea33280874cc144bc90d36e9b843820e3a8d6d;93d28f3ec762980ace1da433246e083223baf753e564e356a417a69e07eda369;8705;81
+f65ed3a0f0da6a994dd22d4436a027c0d033704e1f2d3ae8d23bcda132ae0d05;647a24bbfb6193d298045e5519b559c3e13d581f01c86950e9bde4b27f8e93e4;8705;81
+e1899a2192a2bd44725f3ccaa2216b8e85f2b310c9f50fd736c6937fdb499ea0;0691209f62f96a4692f16ce86bc553179ff55b95509b4f829619548b41aec371;8705;81
+a22d5ae278a43394736a4c19d01995df0e8ca32b8fc07baab6aa8c9beb62ee65;80f0e2df24104b5d7c79813af17acd2eeb9e8ea328b0ae2a21f0e4d7c5a9cc2c;8705;81
+9952e498a3738c3d93c1c17765894e6d36c46d7b8584ad21172d0891dff6c2b4;afdb3176dc090296a591f7f7ba7555165cedac652fdb2586f4548a00cd9cbf43;8705;81
+ba00f634bee1a2609c199838eab224427cc9d8bd6fba8187f0e76874ac295874;1eaecb623dda6a30f792392699979517b2bed2ae4795a8940da4f2b1d6ec7e41;8705;81
+d6213d9a73dd4014811e05054468dcfb61b2063903da02c4befbf28e51f654a4;cf2f8263b6cfb48f0b7354cb025ef36544c653f09f343ebdda7fae00cd2618bb;8705;81
+90335ed45cdb367541908396c0b8b8915520050abfa758dc0e6f501836701773;a9a4a1f2b8b3ca8257b3af4707957f53e2893ba8357a858b12f18b44fd12cddd;8705;81
+d4d75a4f89a49af8b455bf5a0e55db0aa9abc6b1d46a93505b9b92a420a93fbc;180b2ceefa5710139b700f84ca4c9a2cd1b4363dc835cf10ba90c822ad97ab8f;8706;80
+402d80e0fa65ea7b4c7333d8326ea6833fe97cc94c127449014a1733f852568c;ce4e45195cbb4cbb63fefe4076d0efd527bc28521bb711f2a44c47b444335c66;8706;80
+f7506b148b6677c1feffb9a04905d886bd6f89aa6f1ebc8605ecb0358899305c;bcde2d21d01cb39b265ceda478856a6707a7fc1fbdbbdf7db00d02895d49516a;8706;80
+ea24d6be6ce31929d8ba777f339f13c72d57b5decfa4349049b345a7325f6499;b2b86f0614880b285b43779409130ae2c37a5ad053bf8ee2fd931516b616892b;8706;80
+0605a2b4cd0a85c63a7d21c8931f2adc3ebb21634b29b1e1d460f222348a413b;82f7475e43cc3f9d678880b3579e61f56591803997226caeae34d96d51fd6664;8706;80
+eee3ad9797cb1d3e2da0a1a23b2c9168d324cac8bae9204d912760f5cc4e20c5;fb220878783b021e65d39e28ef38832599983c6e04a25e48db848948ca3763a3;8707;79
+a79638691f0172e093e9baa6074c94c1156c7571a0a0747c06ce5c1cd0b86425;b1ce9d817506172ae55e52a9aa3b6da38027beb01ac3e9af7063d378b4f5a3dd;8707;79
+8f1c23fcf35d6f24e1f32cb29b9086070fbde93c43d6c51f56495678d3703ab8;0c4ed6ae796b253fe1165184df28195a2f459187e2e294e041d9b57361f25314;8707;79
+705209e164dc77586d3fa585d73911d6f61264a6ae66da6af4baf200412f307b;d0742aa48a73419dd546f3436f9d4afe8f160f8d13d059620e9b7e42841cc9ed;8707;79
+62da54411451961ffe3f9175fc877427f2a186cfe9f570892a85ad13fa703e81;873a9add5926489fc7f40d130494408b3bb2731231aee504bf8b160fa7a2f5de;8708;78
+f1894d72a169c1c56790e7610e0c406f19c0f43f8133fa475d46227c663b1f30;702c85881865516071f742086deb19b7e6cf6165b94a00cb6167033aa75b7d73;8708;78
+d209b3da206bc774d9665ba8ac6c1d914bc91c19153e6fd2ba4f3e20f44c553b;77ce4cc39149fa1f50c68b7596eea8c0360525f8c655c767fa050f6f73ab38c6;8708;78
+3b652d584b76d26871679b2abf0e7722ac34f3d29523257b6787a40c64a42e3c;b183f4a4d331bb6cc9bddda5054808f3d68312df72db04f2c34ae8bfa7bf3b95;8708;78
+72fbc5d4c8d66f2c2ae10a532e54455874203afa3063075e42fb3e850561015c;d6390c486d3fe875efd7704ddb99ed7c2f1a345e4f99fd43db0f21d80963ee9c;8708;78
+bf294c5dc3732fbad2afcb64d085af066dbf7bbebac8103adcfbbaf9b959be32;c53cba56d779bbe5b00e8b58b5c4951275e2e5a32cd6356e0b3c087e167a7e02;8709;77
+8fdcf392cdc9da202a5cbc9b529e474c40b5a3e83932d88219bd4feb240cbf3f;0cda674c54edbb69240d8b176fb1ca28fb1dee2428879b1c76e2b38fa23922d5;8709;77
+0dd9877eacee97a38d0b2097bb2d29d96c55d50c7f02196922bbfc7614cdd54a;5e21c00f37d31972d0e5923fd8a3b1a342076cd3c9ba93536376193cf8b217a7;8709;77
+3ccdcd1d3040a407b497974e68abc761f74bd2d780b899827bc8b1cd39cf82c8;f0332dff50c613f6052a0798b2ba3a674a7ba34355840e12392e03b3f9db151a;8709;77
+0a884fffe6ed2431be76678efa78c3a80a3de3794418a2bc1b9ecbc133ba2e67;6076d0c095c68b12bca369bfc5bd61bc2e782597e06d609b5cde0491f4a9b3c4;8709;77
+d26756ab90423df4eda04ce30069b8f05516ef1349157b7f215aaadee78091d1;e1083bd99629d0bfcbb8b369e82308670d00d6ef1d59e16e2cc7194b61d655ad;8709;77
+1bc839facf11e94dcf95fd9976bfcc38f7e7179ab20ab154118ee936360eb581;02c123a75b7527ce101825de80307b1d4057702e73d513118e3519d0d01f3d26;8709;77
+c391f6cc08beee103d4fdcd9a771554b73368039a1566f186350c8e31d4a7965;916ffdb60386cfcab9bd28b475ebf47dcba7099eb4bc18d4649d235e983cee80;8709;77
+8d4e0382a882b1f4238bb637895708df9476764987acfa86ef32aa51036db7ba;994158fd16cb77de68bc870abf51fe72e395e929b9d98b9f155e864814b9e450;8709;77
+8e3e013c5cf38586d9e49e4a38d55f51c8494899588bfc4d6a1c46cb219607f8;c56e91003995cf18dd0aab9a44e8e0674935dc2f48348883a0208ee120de66e4;8709;77
+ea142cdc8a5cdaa53565fb7ea5375a71afcef5fc02a1e587b7ccdc3afbb289ad;bbf5a8f074b2e703531de3d17536fc9ad3265597c9682565aaf9df18f2d92a93;8710;76
+f9b58b4bd043765f38872e4b5eef4a3f84ba662554e5f8bdeb2953efd15d0f44;fc8757de9e98f2e78e95d2d8212cf2cafb7e13ba92f7bc91d0e986573941cd96;8710;76
+af339cb27b60877df7e465ed40dd6a40ee7b2e6ac14e0805f3ae9b9a8c55fd77;1b7fcb6d1a37b56116dc394fb7fa4568e4955232a959ff5258658a58b91edb87;8711;75
+7044e8afec7d36681655da64fde95b3a513d0dae24e3087c971c6c76c7c0431d;93a3db026e4ef8cde5b3e20225ada0fc361da9c8c166ee543e8990a63b2a67a8;8711;75
+455f5ef083749e2a10a3ea5364d0171193b70c6513371b6649485d244fca3570;e668699062b0ddf174e29142b578d670afe20c9dea94ad289c49c48da069961e;8711;75
+9eb85cdaa8b0ffe0e5157583125b6ceadf20fd0be7d5ebc4836b9d8f32fdac20;ca1435d0f3fc7c5e0dda204c12eba185c907343b0f3fc476d22acb331406862f;8711;75
+d5c3f5e355cdbdbb4be37a55b3dcc861f86350de8175cddfdd310ffc551fc07e;3e532935d194cd42fbb761fa81eb1156a9500537518fb6ca08c18f151746e4a2;8711;75
+5e7e20df2236db86d8aa3ae472a4d4aa843ca8ac3cd2c26bfea1fbc618135da5;ade315a5434952854767c89b201ca8ce0b526fbb03cbb248b4a9756ca5391cca;8711;75
+dbfee3c0b8a3532ce0ceac9b500340c126e2f9cb41157c064b83f4338a372c7d;9d2b6a6092116ed0b9e054cbda654165f25c3fce101fc2c16fd4bc772acaeae1;8711;75
+fbf3fa315c01955b438f584571966c3ee22d49774f088959a5e01a3a87f8b359;0b479d9533d5d0d334439c3aa9cbd2dc7696f51a8b4985ff08874c3020c4791a;8711;75
+9f4d09fbaf5121ebfdf3c52d04d5e1ef39e54f91e3e187286d23580babaa33d5;1a2d18b8c6e016721f02544f7142eb0c32e3480dbd7d69e9dc4c4d67ff45bb69;8712;74
+e5b093de3e2047448cda642dbc1302ca68e7bddf0bb9e37128475e08876f19a9;70219edef5608c4636a499c86586309113487dcaed94f3daaea6d159b2e8b1d5;8712;74
+e8292963b53b9c20ae980c9477c83c40ac45ec974e33da3e2a40457138ec2b9e;1e53c7d412136838915e368279350896682c9ba8959f8f95a00e4c5c90878249;8713;73
+240023da1b2f6718be80cc1d85958d93cbaa1a0c07a6741cd77e8589c94eb2a1;e9558c2f8d1bab5ab4f4f2de8ffc7b904776d26e92b55a834d5a3feaee596348;8713;73
+16ac71c6af2cb52265bc8d5bdc6c61fac9f9bc17ff3349efe6b046e2a977956a;14dcccad48d31ade4dd59883a184b31ca7b27de12b4bcda5a7314cbc34242f31;8713;73
+8ffa845adcdd61cdd153c341df10884e89aa874340508090d85d99c18ea7182e;8f096acf601b50dafcb9680fae8f9d86ae97c063ec5bb11b2fc55abc80ee7fbc;8713;73
+788478a1de91ae39f3a6de866ffdfdcc361855c77eb9bc216df0dcf0fe28b6e1;a17c2b4af74e01b0826d63770cc5edfb1f071d7cb01752b2c59fd3f4de4526c8;8713;73
+77430de886acfd3ef0d5c29ceef47dbab27ff56d0007b4d57ee4b4e4f39619bc;34b10c898211e8dc6871682992f8a1ad4a0ca1ae3af51b2e7d5b5fe368097ee6;8713;73
+44dfeee221f8ac277f8b40a363f8a6bc4167d8f4b33a52fa7159f45945c1d057;f81eafd23e232e0d3c70d95b36bec5e2daab66843979d4ad10cf813afaf38406;8713;73
+f24b4537732320e253d32fe1836fee41f273f81540716609e57280d4e30f4095;91b93d98539e0c995d1e1f4901dba1ea871165a7d946a5b671fd838351b227f0;8713;73
+23e82059cd816f90dc7ec1dbbb9f084f5a8e22f1174b200ec7719f1a3056681f;0e70d7bf9985c599545effaa1475e34d2075a19b32d37e68ef6422c1944e01d5;8713;73
+748a190cb53248d54945b49d48bd7feccb5761266a1851c71ebc9b6e82b59ace;1823385c421c9b133839f008e5f2599749c626691225d1e976c5f13368574867;8713;73
+78475d3f412ee6d28222ed0efa09c034b970d1e453aa528be725924579c1db47;21412019bd77349ea9b90b9ee9595adbc262ad063f68b507b7028f1e8cc521fc;8714;72
+c706dc3e13bb2b20fedbe7b99234a337790cf4924020d35b5960887ec69b13cd;f3535662b6e6c6ad93b6bd0fd73ee6ae5e82b27213aa3187fa0590e4b55dceda;8714;72
+2f93c0d96fe152641adcd26a720315cf8a067e4542fd8c44ecbf5219a6709987;8e3fdd0f4fff5dd8f1b97a6baa0ef7c84f0ea16db8d2add149dcc6d448e367eb;8714;72
+53275bc30bce3e74aa00037b2f2e67d5fba2f7bb745f190654e2ba368e08cf1b;fea58ff1ce870db04c8753108718ad77ca030219bacf9fa3631d64818ab99093;8714;72
+df31f61cd2896855438fdf2d10e89a1bcd6d49414af913846c7e951ea74b679f;187660ebeab9d403ea498e53e5c37911387a65b7765f7a531ef74d3bff9b5b80;8715;71
+f326f6d89205feb490b8251e112295714e14ffba31c2e72a9503bf18585aa01a;7a7b9fd39bc1911e220cd23f15d5115336b69b8ae6c8c8816ea1c52eb5e62e42;8715;71
+b33a764a35e50629100ec6140241f129256cd63ed17a03d909b1728eb16c83f1;23dd65127680329d083e80d3c255a163bd6eaf83b57d7348b26efd12667a28d0;8715;71
+98ed88f6daa14950d440268b56eb220225e2f4c62d5126a3a5ef85b2e4da13bc;f812167e539c08975be7c401e38c3041579e55b30641e44793603c0c0b566fe7;8715;71
+dc23071f9b3275d07982b7e6f92a68df04bd038afd04f854b6234840df9ff4d1;531f71b775094fd4041503dbc1d2ee340bcf6a92d91c9674ef68188ce68dbd4e;8715;71
+63e8ebd8a357ef14bb7b207b7dc00ff8ea3834563ccc122f32e188d263b45a6c;a52dc3050c0dadd8baa09c4a6c07bf8a5c02bd558441de206674313d0b754de0;8715;71
+b117a19c023a7ceba796be651a0e86a04a96a0139c2e226d1a1e141089363cbe;1090594264a2be3a3d081cf1e7acc3f17dd585a7afb6b0b35a49cd2119b06295;8716;70
+3fd18b601fca45189a1399550b0620a5d9a995406dc956053edaa979eab2febc;0b940d17e19d87d907b23f08428a73e1f1c38d4dc52e280a304dd3387325c4d5;8716;70
+fc5030439b216cdef468e0ff93561390adb76353b1d81b0d112e96e500ed9430;61a7ac78b261da269687f985a5f62b3447c4919245ae7da08c6793395ca3158e;8716;70
+561609c18c58b84c61ac667a52c335cea84cd08056df56ab7b0f09ae8ca79915;03d31dc07671369622be69c2c7010c19c33213d3870872b9a2abc2f72010852d;8716;70
+b6544d2157d4587a81bf53e40349baa443d105f183c713cc12150a8539f49530;f81a32093378911b12659a73bab97dfc2f17f68e6d29faf7480c3d5e3a6d1435;8716;70
+7c42f20f12bc21af78a6adbc17392fceb291a5ea8f519a9fa2faec35c53cdd78;cb979e0995b2065e9c6062c10d5c43b6ec4ca4f27a73b3fbb3f15b0375063b33;8717;69
+946673190afaf0f5d477522986f6a22eb54ff44778b98a9bba177ffdb2973300;e036ce56dcdf5d4ceb19454bf6e3f30c648c4d549b5a77c4a74f7dfbc042dbb8;8717;69
+4b7ef9aa08d31217fba7d9fe71280809e0230030747c72b1df9625aa715c2e25;bba0bdc95cf034ffa600aa81fd09816413814dbc572dcbdce79922a411a1c170;8717;69
+709885bbf3ba34c5d2ccae878bd14969ae1288d53c01d9d867a4b3b24e0c79db;4d6cc7ca796fbbabe3de1b4735513d55b6991f54b4d32a4b0146188aa8460ebd;8717;69
+8fa7dc8c8899f476e2fd2fc08912595e2f56f2c4c44f8fb0fc736bcf234e7362;2ffd144c6267d03879343832b7439d2a3646e64085662a99e37922363736ca41;8717;69
+4f69d96b6ced1f3406540973bb936a09cb2659da533cbda9fe1cd4e92f68331e;0ddd1b568da3d30079aff355141899a71bf3a0eca7d8c154f27327589f33149d;8717;69
+c172ed9b68eedc5254aa320f45613f301c3627a28a6d06db982cb80254d042c1;92084617a83f68050cf0e3def853a5ee3e3613ff8014f26ed68f20c55a95bb83;8718;68
+4c8277545317041652ea9f9e931b19bed5cc7807d5ca2387e2813c0d785544b5;a49dc3619fbb5cb369d40a8545a491c16292cb60fe23ce3824aae3085d84f32a;8718;68
+7b371a23efcc26a0f8a46013be38eb5cacb5cc5cacd89c899ac087c8cd5b5e90;ea111c9b6e696a1d2619dfd4f0476acddce4eadb7f46ce7b70a681304d9f39db;8718;68
+8cda5018847f9ab1c25c6bee6b060e03585650787d025b7b14a58e5ebdb4c4ae;5716b6d8d615e47f65dddc5e22e0ee72906ae7e8807873418722029794176e60;8718;68
+a50d4a3e31b044e595aaa3aa5bc0e7f23f988ca28b10afb030fc5aa722a72fe2;cc1b4a2574fb2a50d356610310b4b3532f91842d3517f54854247ef34efff528;8718;68
+c39ee754b80ca80922f10e9a2a949f669abc32e62596e3edbb21f44f512931a3;61883dcd422a717987eddf26c9f2d72724aac5fa848b89a56b6192aead8fa2f7;8718;68
+b6b5bf088da9a97e4fe3de01e0be9303651b406011b719319aa877fbc19d3d91;f1b83da5631c41499f023874a258fecb0fe4e6d1873a64a3caf0b187f26fa120;8719;67
+ca9bfaeed1dad920c94e00a4a3d22a701c101e1eb3c1e7a421b9e4825d5920ed;9f1f1b946427e82cc0a7538907c2497ed870af06035c75af4e18e8422c29f5f9;8719;67
+cdc260fb0a8186bddacafa53df45e2165a04921e68e29834794049fc0ec1a1f7;0bd75cafa31aa2e079863f36f6b0c93cb4c474c51212bd4698acc535ce2d0870;8719;67
+88e804d9df9863678fda423b868c89c780b6e1f08ecbfaa803027cef4eeff80c;2d4bdd2e0a19440c5c2415dcc758e0640787098acc9fd14df5411301997b47dc;8719;67
+4d1e18645d623945ad71ee3c6359b2975ec50db0ed218fb12d5d93886c24ac9c;d7fcaca3f983e4dc591d51515aa77ee85460c67991c6274dc00b6aeddd891f85;8719;67
+ac266b4fb610c88d7b9c38f6afc32f306c0fff22fce3d076ee12f19be6060a3f;fcb6a6cef0129220d6c27a327511bd0c31e834b14e01c39652013e0871ed4200;8719;67
+08dbe95bfc59582a64442ebaa8760f41b6968990225129f6c3278285e8300178;703013d06ba11c18f33b6ecec36bc4921b200c5ebaad6ac0f175b34f3691bf5d;8719;67
+f103f75e2224ba89be02445fea9363a34e732b8fe23c8f821a08282a99860040;db40ac1e6c3c60c30220fb58e63d940e81dd56b8deb399d5fd6df84ff6c0d390;8720;66
+e7d8d88fc16f97d7a7a5f8c220ccac43052eeabadb4ab9f0e501dc0e81457131;23296b768fc541ad81b17ec5fb1d35176eff17a44b191392dd2e950d4f97029d;8720;66
+219778a61c2d07048d5b1b07c70e34c7c50e86e865e2ae67d9bf44601f1ec62c;52e3184e7953a6f29d1ca637de156b6a39e7c75df09311951e2c76c01a9e2d10;8720;66
+a3d7eafd953d115d8523c6d9566ee6be04d9233903c51c168f45d687de295e0d;cede5c68bcc770d95e4ef003642e4e0cc8ea61d1902cb0a41da579f5119f92ef;8721;65
+6425cc04c99f1e27fcb46501d9bd8a12311f2a45865da794bd9e64e67db5a979;4e0a17bb89484cb3696562a0a1f729fcf796ba14323f5d58c4fde4da595e5e6a;8721;65
+619f3e17ae7bafdcee5d8d3419bc036f92d50a1000c66ccbe1d3d50c796f02ab;8d25724abd924318ba46c64f78fcd2393140f99b03d01e48ffdf7b2879d6dfa1;8721;65
+46327fbc0696a7c25318ce2f8dbd4d9ad93ae69f0e9c5e813c55a3f75e2de47b;dd4a4d2157915b9f446ee8f10df9d51c7d1c1f97b47875335d2c9af04feca5a2;8721;65
+b535b1bd29e6238b1ed412a5d511f2c7c27a0f504361d37ea92c3b3e02e7b6f9;df5902778f2125764e43b7b0e557fca6e12fa1cce8a770408f4ae6ca0621178b;8721;65
+152d6a7538cc5e458dbf85315ec45c38aa7155b09dc1dae7c94caafbefdc0a93;642ce0256b3dae2fc727fb34d83a3122fd1be62049ce269e68d60ee161ed628b;8722;64
+fd1e1dc683bfce5e6cd7ad87887dae304ebd5a3fba018d20d43177ca5db5d9ea;abaec2d4692754c62fcd5b413042fd7311b7b04e91c7a178c2ec8978181d6b06;8722;64
+73b08de6ca9b5e66f38eff01e0602c17b09fd70ff371fe5e682bf82cc9445cd5;3fe3c1b7046c544b4537d7d81b079f01f99cf95b7d103421e6b244e3c03c87e0;8722;64
+e8946d4b9a401a1821aea732173e2a890d5ae18fcfb0c35796768ba14d2d7dc8;ddf74620819a33ea0dea10769742ff93ce7e0ad738d1aa1ff6fa7555213b684f;8722;64
+dec51692700a7a51c4fa15cdc9d2977dfb924358c0ae34039f35e85eeb7c93df;84654c9d402e3a5e06586d9ec2e105eca5162de21e9cdabbd13125c3e9ae5257;8722;64
+9f51ce10197f4cc8ae9efa326271c92b6b1120e9c416ca0a4a24f5a4ce4598bf;d34a8f1d99d1b789e9ab0428be817a02c1c6e083fb3f0997fc570168f9c4129c;8722;64
+fd02784e1ef839da21281070bc6c98abc45561d0f127f1f8dd9caba9e8c72775;176a4555958d5d732156655eac1c81560b32c1af30a7d50f77c234d5fa514c11;8722;64
+d9079ef63cf429bc16a35868d1bb02d96446edee5da6618c0d14df22657d8f13;93036b9bb65d7b49aa971db86853059e86258ffb2a6b33b915a543eccea24a1d;8722;64
+a28375f67eaf5d4840e051b197cda9072e9a0a0948725a49716717a1a18499f6;58724fd3325f1e424faebc68b399ea37fb05c0d07831defaee02796affaab26b;8722;64
+5680bf1587e42a5d65284c9b7ef8e32a4fdba0f3149a33662bd916a5049c0213;0aa96caebd246dd6e953083b5b3a5162d33a9b4161261392669bc4dba38638be;8722;64
+368e8ffb1afcf6e325ce683ea21b221407de911c9a90e66c115ddd3a1b27936c;91e69402722fe91df1b5ba776f27a8479ae358036873d5afde10e11b3be9f84d;8722;64
+00ebef1e78b4625e519f3a5e3e56c2df2de0731839fe300b4a8c2bb05b59ce17;0acf5dfba79e4374b12c720738cb7f67d4cbccd34ddea8efa04ffe81f6bd3c66;8722;64
+94636529654d8c4dfe95928d58359a231da5bf9d81e4e1b84160229094142402;5830798c5d5f1ef377bc6d5d7986a875b7b6a8e73df8def7c06a457bae83158d;8722;64
+46ff299c4466d0653844033b65732b3c1c9f1905a171c66ec8b3d4115761840f;d6ec2aca61e29b65a89fe47f1c5c5c9cd4443132b5b5260936a1283ae1516ea8;8722;64
+9cc510536c48d0b35181d11ebd9017166b6ccd4e9c9ced84bbe35e5e3de6d626;13577e895d5273a2e27e7dfe712109c97623d9a1da77d7f95c15ad4e6cc7e708;8722;64
+f6f1f916af4829bc69caf5f31be8bda49b16a87a11a7fecc642884a1ac61170f;3f1f7ffae3b18c032e2605aae2742fefca20eb69e2e06757dbccd9a3890ddd35;8722;64
+b1ce57b4f5bf82c5de329d65a6f557233ffff16b927d2993097f18b32326c5fc;efc0c38b9f70705b5fe3fdcca079f772fe254c746e8f0a7767f88e4f903877cf;8722;64
+4361a117931db22fabf395309ccbf18b1c93c88e7a74702ce1832ec8db0cac18;23a375f547d79af77a2fd3ee00fe2dbffc051b73fa00836b1c31c1ee0d79aec2;8722;64
+20f7a53e18a651d6cedbcc04f9870c28efee10e464cb07d85e1a8087502da17b;87bae40652453dad677c0d7428775e462a6202c47c2db0115d96db61a0d99ff2;8722;64
+2bd026b994b66f05218e353b01ebc6dee5df9457976637106e80480231189927;bfdf4cdaf38ec722176ea2d821837cddc28d2a2536def9cbd118b0e9f60038d3;8722;64
+3d515d72102c953c518b04b2e0a5ee299994d6082288daa29825954188fc51f3;e7556ad89bad88cdfb53690fb8f5550031da9853d531708d548994fce8b6f516;8722;64
+a0e197f1dbbb9a569f918ca38b3fa11c1d4148104ab2445dda5a2283dc6b8d36;19443019e9b76a41b709ea5a62821135bbd84e7d2c8984f755a1e47102e9b827;8722;64
+14d10b63737513b56c79243e84294e1c3a249d93c304c85d7db8f2876a820af2;5c845115656261d16df4eda1ebcc828266aa35f341cc3a06c7f99710eeeea3f1;8723;63
+ba9234dd69aadd5285101b477936f20fb9f08642f856ce5fe5ce7d6201000420;1e5c904d3d418e144f5550b8bcc3842b89bdf23ff6d64a80a75f48f50d633a2d;8723;63
+a2a30d582950fb6bfb8b221872cae794f52f27b3127deb742d5b3a8c8eb4d489;643b7168842cc80b3daed1138338db44a6bf5d97af057dec8eac0dce606fd2ef;8723;63
+df1c49d8d0a7bf91e6480ecb37c0738ad69f377546e891fe635533131eaa1958;c9128a4d2333bad4b131c2350fd6cad2bff894cbd6c728792dfcbe6f5f1f2a1c;8723;63
+745e172755be5b6f9d5289b38b71d25b555d77eeae4278c03f5005a8a39e9be4;43b20ad66f213097d6350024eebb9bb5eea3c65d4b5d960554a54ae91c533815;8723;63
+9b295088cbe639132a3707f53e13d124dc930c5f925d8f5d99866595fd40aa69;09f7bad88444e388ab5b74d3e97333c867cc1f5c6bff105482ffe9396bfe9c16;8724;62
+b3570cf8af9d3221fa00481eab8f0453362a2a1412f13a5ffd7f675c9729195f;0674efa9ccb03095b64cd208bef8c347aad0acb4127293f0bdf074e9c0af8449;8724;62
+2f392e70b330a9d00386808e8dd4722586bae8c47368a9a81f56fe0fd361838c;0d0fcc4ab5880a9f97a18878d4be365c8645468a6dcfb3e41296b286b566c009;8724;62
+4262d9fb392207979dfcfb46e15649dde1a6acc54c6a73a3e75a8ead4382351f;25d05521fe322957ef8d4c461b6c6ed318f943ddac2a5301ef22908869094f4c;8724;62
+d4e950ca3745505a4ecc9c69c958bf690b78c91b4c2010b952581733cfbed15e;d3b5ecec49cb55e639a41694ee7bc60996d5e218d78c346ebc3b5ea10ba14c4c;8724;62
+5e47701468ada0ded7c5f33152e2717d358cdef19a7f56e46e736690cd247940;16143c241ad5e8e947eb9f8f370ae5332448f8253d7054809197104cd2774185;8724;62
+5a672392f628ecb04efb5e7da347945711d5a6f611909c590fd952f36c997088;62a29ffaddbbbb132e035f5a004f49afff1139f28f6ab2475eded5e75bde3179;8725;61
+ce6139dd1190897345150bd6e6366a0da2313684447b5f4ead851ed5877f0e0d;36aef0016c7b98c3c6f99336c43b8ff77e290dd08918ff441e8f84424a12bbfe;8726;60
+316b73ee962ba21985bec8488d5d9ae05127d64ddc67cc9c1538412dd4092cdd;fabf60617b9cbb603ccfccd7e0b1bbe735e7446a3533c6b8c5d8c2e3937d609c;8726;60
+3ee811224e178741116d969724008a59e412b5c0c9b4dd9d6ddff86307b431d8;a0bc397564505b979dff65fc10672611bf210da77d8f79d70757e5e4bcafab6a;8726;60
+3a521dc0608ece02fc9dbd902007e8d9984b3c050127b7506fc48620a1f5b6d8;bd0b8fd63dcefaff573015d5a4c697da99bd23231d13cde2f0e03fbcf1439f0e;8726;60
+d5cb6113d0bc63cc290e9964b90898042607a1ca93889e9eafdcd38f4188315e;92e8264598b887b6b61af54f790b12e8629d5069fcb5c4d160629384ca313569;8726;60
+a554bb9a85c35d4d1b075071b7e606623f68ea226dce39b8d0a9e1a5288478f9;39c2216fd7001c6a16797e0603416c91c95deef159dea5ef20189ae7c9a3d23a;8726;60
+3c56e0675b1ae998d38e81054f8eb45535f55fbdd01184047e9624986e69fac2;147d680808f894d107bad5d5ffd905a09abe7c2f1b181fc98e5be9061f48110a;8726;60
+9628a0229281bf7446021d8f168321aa1f14007fde26f65a47ca3ae4dc2006f0;517b8a54c6632f3e9bf27477c5dea77e92ada0e67078fadd19a72459a28d5c3d;8727;59
+0fbee6a38a3dc47f2d338d91ec0a9a789ff389c556371882e3d39f567adc1444;4218bf88461e1100db54983c8ad2231a4049e3f65cff76667e3b4a777ba416bc;8727;59
+40cf862b90e0a728356a855628a823d7bc0c7c81c1dc984422a6cda46d89936a;15d12684aad439d6f6943c3acf5c1c87da7667dc903d3b9d949b1accc8fca285;8727;59
+9c4ac5d245feb92fae72f31dd20a81c4c2e97e730ea0a6967c59eee7bad3c12e;7267f575b1a4403208ae411095ae3bef739655db51c2b6b5f431c7bb2ef49eee;8728;58
+67968560a78d145c265825f8499cdc2f37aa6549db1825f0c6e7f836ae54c524;f209eb1476ebee8520c0394836014c3468b311061a7a93c0cc0f3bc252c23067;8729;57
+91f57f4e97022f94399b9efd0c50b49845f36eb2116fb1039d05566d32362943;cdb8bb6ad5f3ed3d7e7f212b1acacf7cca1c7f1c13eaeda90f01286746a8046e;8729;57
+8ea288ace5d38531df5f948d2851afb99ae057121a9fc28958a66477b6a817e4;1cc24d5c39cc237eb91657078c84bac5eb9738421edf3c0709ae0e4f220a2542;8729;57
+e3c651e75a915c665f827d2f44446a668a0b9b9563c1cf498f424f9ba8012ef4;d7a3d6f230b1525a1496511a4dc94e4b89cfe7f5d6059980979f50f1228b55b7;8729;57
+17358aaa9fb7870640a937036f01d0e0b9bdda3ecd99d3af61f5ec0458ebfbb9;4a00d82aade9dd20ac04aee8225e961e7099458eee329d440da2060118442ae3;8729;57
+32207bfb3bf034a5df39ec6aa73b88b0b53c531c4824f77ec090d6ab05ef6d04;7e81c5d9eed5ff069ed4ee72019c1e2bb63b50f752744ecda8c8989f4e04bb33;8729;57
+a96e892598c29723e33825834525e614e6a75aecb7872b493cc6609530b1f3e5;702c14b8793c17795a81e6c9517c55cf158ca2a5f428b1efa39d632d02bd9818;8729;57
+8ead94955680e3a354eeeb9f3db3dc982da3fcd3b5c0dc611bd63e336c3e5392;104900895686e249d88a798f395112520a2c770872c12561bdf5b6d1d9a2a115;8729;57
+be7d89c15459a813ee49bb7924ba0f9fe74722b4040b5de3473c4fd3da571ef4;e6544c3d15bccf75bd427d3df16e4d647305b05032e983d83c419bdf02507ccc;8729;57
+6b9e941270315de9372d870a4e05e2d9513c9f42fd3e1336fa7c8848e14e4492;605874932b99e756e23722910168864835c4b2277d5145734765d7c513c7fdd7;8729;57
+61baad77c609ba861bdd3f5f1f00f015cd98cfc093fc0563af6a1795521a1999;7fa41ce2d237ff5f856ac8904a5f306565a2bb50843b0b9e3c690a79f9dbdc7f;8729;57
+9d1918c238964970cc3e2b8dc3f062492e01bceb8294f853be477b357860f249;538fa2552d9f3a01ce8bf70699ec7e4f614a1fec4e3e1803b011c540f813f31e;8729;57
+3722df1869c0498bb14d5a52173d12c8dad6c70e995896f7d505e2127c302abc;a54abcceba40b91231f9833b8d56c241d68c3675c93f51f1677f8c60dd1c5161;8729;57
+6a44444f64fece97c41fd005ede47bf3a898115c1ac4f3213baeae46f2cf7c83;de38b73bc22e5e863d8576ee453d40af2bfcdc8457f5f125c173f52848beb971;8729;57
+bb306f22c02f91c1a90a8b5e2070540a4bc00cbd1f1a02421db9ef00e88abffe;e332b3c5d3a915fde9a264aaf7d20e854380bc59e173bd11c79a798e933ffb29;8730;56
+e0d747f7002f9e7c5aeb8b3b5aabd89bc4bef2f061f9941fda1f76464a0d5bf9;c7cef11fe06968a2acfa394d1c8d026105bae8146556709e01cf60414f1503e0;8730;56
+f6f7a8d7b1c8b82f6fa1b089b683f1c912603911303b17a618d36b23fa9ce488;561e8d200417f21bd4cbe3bde70f6f3d3bdef48e935a05f2b0c934ec1997ad3d;8731;55
+a422d799d20d66b0b0f44b5b7b5464b0d197de21a3b2c090c30bff3c9983fcf5;f62af2adadff724268727c0d551ceb07478787953c037d586d473fd85e0f0219;8731;55
+5bcbd6b6b737444554264fe4d93f5dc7957663bd9d4e00104263ecb3ddfaad89;71e4b6a57be7ab4c4e865655117dda5a65249a2d4e5ee3cc083c516b11a6e2e0;8732;54
+7ea1c47e03bef3fe9cee0067744f86e94dd5562ab34ffedf25d4f06aa188df54;6d7c9ba085ce07ea5e00a62f4cda06a93c98feaaa57ec61f4be05b1aa941d7a4;8732;54
+9763acaa8ce9ca24a044a840ae62493d9e0e115f8eba412679db46897ae8a3b7;cd173e74d1333d85d70ad4a85180ea6b98d00b19946d23f556d4dfb7abb26471;8733;53
+e62878705e26e4e9a87e0b5cb15484085e4844f54b9ca7af4b8da5feb999718a;68b22d7a9dd5ccde0483ecb29f77e5c82936fe28f303390aae6d7e1b62d66cb7;8734;52
+a86c65b442e3e97e5ccae1c64760a4e842d28686e67d60bec8113554abea8b35;7753a78f418bf0a83282ac1658959dbfb9d72b93f2786a1ddcb4c194d0ee5e9e;8735;51
+24957a7e711cdf8e11d84fbc07d236af09af5af0eaae7ce06386b0e73add4974;f518d72cdb8ba1ebdd925124cccac4ff7302006132f42ba4ecf5d56498bf80ff;8735;51
+305e0bb859fb8aef10d9ab53907f3445d8669a81b84d7cefbe886f273aa35d38;30a090c62de1c1f26c52820246c5fa81c1f17ecf59c74ba102e2674fdbcc742e;8736;50
+244eac4a9b68d1dc03eccc0a57f0235f0229a9b24e2939b42803c465156b362f;bff9248f00bfdaecd6efb7cadcbd008a42946da80337b8344bb91830db5f8034;8736;50
+fa71722741f5e1d72e713d3a02b184abf18c1acb8d652eea85e7ecadf7b447fc;30c6dd20253ad131f058f8733683cbc088761e90cee61e829ea96a9d16758983;8736;50
+1f37b3d7ce5c43c12473b88e0b794d45f2d2da53d8f5bcd345987b5a6de048c2;d67f0914db178378d78f839eae368ce2ee1822ad5841a5a256ac88f0bda53e70;8736;50
+fc6989ef101331ed9a266966c8a2b10b8f83662df03203ed1d36593a8a563ef4;bdbb54d9b21e9bc227a6deb6daf8c9d864a9d0885dd627cd17b9d57f2a7a3e26;8736;50
+a113ec55f81329a4ad522ab69a565e3e5ca582d5889614582edea06596d276e2;18ea5eb3844fcb0c54cad357f48136f674e381e3dce42a8590535e8c428e4ff1;8736;50
+ca8c216616a6ee1981b178f868b56e6f2269b5ac13b8edea235c39d474922433;31ad37f1ea061b480e9961f2d1dd6180cf253c27cccdbc5ae252939b9064af96;8736;50
+9f1c688f23c82fc02cc6d7cff2ff92a6c2f28eef6d6560422018b43ab12c2972;a72da339e3a68a5aea3e65d8397a9948d92d1482e01058bd64823e8cddf250f5;8736;50
+7fae2264af4abf0f1b0122d133b0bb1aa37cf5ff99e13f8990360ef155746571;835ae280728fdb150ba178fbff37f593184720c1d1a05d3802bfe406452abd79;8737;49
+371f376483d4d564240c55391697ed8aeec9134c25c937f57d1cbf232e0e3fec;c46fb14c85124b4cbe75ab3742caa1459488c0ff38f5ce49f7b9140beb6213c0;8737;49
+0f0323dab39b3df7f8ba2fb79aa20cea515650af18e36afe9009568cdacf325d;2383b85c0700ca8193f812dbb0fcfcb24c587971c2eed48a025e0bdde1c100ae;8738;48
+0677c34b41eef6ec11d35bed51fcb39d5763c1f0b9f5959cc2dbe776f4498972;94b10941368fee439a4f7bc5675880b80dd35d450b8468eb3a64baef80c4aac4;8738;48
+80182f65f723f509e82df89735e56832fa9ce5fda9285bc6e6c66da6c08f5a22;68097920671f1fafb6dccc68ce7f256a17b9eb22fc775b404caa443793d11e69;8738;48
+4579e3b40a29fe349505562fd6592fead624308193cba5a739095b38c6a106ae;b444c412a7516487246ed9f7e4411758f3a239bc17f5636943c236954d48e37b;8738;48
+0b9c0da79be39fad6720944b0069c7f8e655c09db525a63ea9a5261e4ff9d992;1969849ba79aee6c692ce28627146222ca20011f7239b71d2fda610994e02fc1;8739;47
+992cc0d0cc60622d5a2f8ceef815684e14312ee3f27123c3a5317256dddad16b;62b70b922af69fcaf097fa816d8bbf2a044fc0c8e20311ef591d3b17e9f3847d;8739;47
+fbd228a1241ee25a38826ae7ba7640842b5de4a4a11fe5df7af6a3e31919ffef;05d29fbdfc243790f43d30a851f37a44adbab4a1b4ac639d781af62f21fc0e5c;8739;47
+c4dc793080819a7aa5fdfad8bc0df67f4cb873a516881d260eeff2e9bae3b69b;1be7efd6c6b11293202883602f20ca48b2d5afe78e75971e6eefb7e13b0b2387;8740;46
+6581895993a7f1f26747bf82a2e74fc2fb1dedd43ef1d9793ecbcf425a891d0d;faaf9f739c9a17fe6df3773f3e2271ac1b4a14a218969d3425e8649e5ed5a3a8;8740;46
+71fc256c12d505c4a058b31583d1b2b3a42c07ce91b4e83551aeca546c7a5aab;bddc66eabbd0ca18ee3a3f0f1a258299a04d8c83f6ac6406eb30662c38888d60;8740;46
+769519a61e6acc743349153950f4c6002d7318421015090818e158f95b4c2822;e41368d6c0d94439843c1010ca926d060d3c008505b65777e9e9114e211c1645;8740;46
+2ecdbaa0cb73bc28adb65a3c936c19a78b62a2c1a4e2ec880c5028365d768f88;7e2f27b19c843fa185a178818fdd861a5728044be5ea588df11c29e3a5c621d3;8740;46
+1cc51b1837a1b0082519ec7378d7da6c831632a560e9a864885e0bbd2e107c3a;b3568f782951d666e80b4651c24ac78bed3ed3beb58d611b71207b8c9a0ca477;8741;45
+2b056118d4792920755be06a4b1fc4e8819b689f851061f5a748c0a948221101;94062d8931ba9d454a6b1dc9e68ea1046f5d2b946d9779d11dc7f7338c997db5;8741;45
+254232f6dfccdf0e845b6aee95aa92d7bb409e2428824c671d5f50f04103c7bb;4dd42fb7298133868f38006ac86871946c16206ff2022dd5f89a412f51a90609;8741;45
+d6c95ee303aadd326458d3fbf7ed4a6462c464462cf026ca84e2213ed357469f;f6c56e25f74d3f25ac5c4342c88a6ab94a3b407192d40bfdcf0e0cbc1b668e8d;8741;45
+75cd8f791e7a5b9d0c621ad8e5542bb2192befca45bc18012b45685025487898;2be5ccbebdab4f51748b2f2251b7c0019c770ba49447c584933d08945cfb0aeb;8741;45
+16c7899f3edad55696f8393d0bbf562a7ac44a98606b9df7d5f65421e204c7d5;cee900384c56e684b5938f2e98ac096ae81df9a9873e5207a0cbefeb33a7ffb9;8742;44
+34d238cc68a5a0f1e6fdbd3561b733ef0494a208ff8c782c02d778e97382b7c7;82e53bd47b5cd0e0bdde240e3ba228193de415ae52f8fb0eb27fe11a3ee4d77b;8742;44
+93c65e1b4ef16cd82b694844a669e2701db4ab64996358062ceedfeb58930131;4ee5c42f04e5e12caf6dc3c601d2114994ca7d1f2d0eb0d948d4b8f5e3a91bb5;8742;44
+6d81bd8d244eda4680d3ee2233c4ff3d1ac73884647daaeb8f62feea1b4fd11a;f8125cbd8801ccd39a697a324131e2e825c331961aaad5b0269a447bd6ee58ac;8742;44
+86bf2f524a1ee73daedad3c3869748c858f85721b358309faff8b95f61b1cc41;ee09215187188c3386b81f9d9d566badccb883315c8bd7073afdaa0d29650933;8742;44
+50e83207bb9b07e849446088ad772e0e81fcbb74615a5c3061d7920362fbdb46;8149fbd9ca3ef647dbd642d6b6310a03ebdecafb67b07b5631496c1ed49ca048;8742;44
+c96eef3f9fbd42264bd85cb0c121e5e75b60ea25532d81e5d4e5a7213296cadf;c656f9263377fcf5b68f7def20aa8328cc087f4e46b39cff3e7a296caf52cf6b;8742;44
+a339e75ac70221d182179822abe24ae4278e356910dda1cb37a975d8584c292d;8785ce0a55ff2a4f1c31170f24085b5263c0b46f18970f5d1891572db154c764;8743;43
+2773c87102c6accf724a2ee5cc8dd58a9cdf26b6996a35f4117d4e26774eaa34;64fa4da272edb4531369fd8a6995b8209f593fe5687b4d7b82e4faf7c097035b;8743;43
+e8a2e7e155cbb96921575a89d929090fdf8ae72d79528ea9a8d9acb1fda93bc8;67d62763906bba4a559ca0e8e339f1280164384f11a370afcc76960edac6ed5f;8743;43
+b75b7abc37a678cb14c0b9115eb69fca9c8fb109a272673d180dfbbbb95fccf0;2d82171fb58c6fbf1a933c901af86a3a18650fd27bbe589813b0ca3fe9da71f4;8743;43
+d28c402cf82ce7e32ee3a6c1af982172decb7909eeef38eea04e8168e426f8e8;880a679f6f7aebca8ad85c20494559941e402c11b4f7e4451ba1b79ac8370d3b;8744;42
+52ed98ef0158553fc745ed7255b52f39a2d211a3233aeec22a9f6a1b29a7f514;7e04fec0244b0456c4c93ed8fb55f43ff5a001e0e81b84d6eac622c3e7f6f045;8744;42
+c4dee7d4c61a5404e470119df92c12c291fd689814ec5b072a0277e62200bc07;a3ec42255792fb7012c5dfa3347ba31b5a2e55799d9e9da7a5bce5c26628dfac;8744;42
+2458903f0f4827518d0d7339620d9295a3e8ce19b423f1aa716e5be407f0aad9;8b6b2e27c0391ce0eb9df85b51834150a835eae9571970c7f6dabbc0c1e883cb;8744;42
+d1a5c46de03805454dd528a03de1417f9c169e7bb0b34f916eedfce28deb4604;78fe509920d6a0fba048ad811225d5a9e7b0480ffeda582f57f2e94a8b19ca64;8744;42
+fb3c68fa491f4d9cd3d7dab95b53250bb8c22dc12732336f156dee06ee48f819;fca368b4c01205116d580b832cdd8016b9546b67fe29fd132ecc9516bb685a85;8744;42
+a4cadadd9ae5fab15e79387338e1770886b811d3910e99ec0d6adb809e802226;f88f47eb9eec4a1f6324b4082e6f9992ed5911ce738b4258c8dd3f6ada2bba5e;8745;41
+a764558e09b5fa9727e8f6be1f70bbededaad83a1ee4818251a0dacc71ee92ec;1a5a0453dfd03a96414722ca474fa8dce2e21763e7e86aa11a0ce9109349c573;8745;41
+3049aa7f844097d48a318f6300f41125c1dbace3787185a4336663dd4c1aa4d0;6ac215a44052db499e2c874f1cc3372e52929b8707d4336068576ab1e642b6ad;8745;41
+cab6416cb1705b7ea8de17b940af72651ea322ef1647f5691f026312bb52dce2;4364248d96ce7a6e3660ef7f7e8cb7fc6e44d144fc1ff5bb34fc08d937aceae3;8745;41
+547f4923d7cb7315c82ae628fd50da8adcaa849acffb9ec5bc078e09fd42585d;28e46adb460468242ccdad71c3270935e587f38dbcdbdc28a93e6a67e58a069f;8745;41
+b9c66b511d730da72f46c09f5232c8047194e5283078f495b9ec0abb517cb148;ecfed3b2fe443fc374d940e123303489e3567638f38a56bc37ab56592d9bda5d;8745;41
+a465818b97480137d48975c56dc0bc3192dddb6c23a7d8b57af5167ec8df2403;5c9de9544970e384d59d8b608949ba20d8bc419311e61ebf3d1ca20265cb4bdd;8745;41
+f7599f1ddd8c3d5bb82866e65c2bb6a4a7c2eaeb4389d1def7941ea175275477;f892d7e47dab9417fee40d20174e6e3a764aa0afa53e4a165d23f380318520ae;8745;41
+2680035a38e420570121568dd743e0bbcc057194833e6cabd6ec54f0e29744a0;6040f52fa852b8458534d4e4f59e7bea91bdaca8a55b76bb4f768f4e97ff0b16;8745;41
+4e4d83ec821f3fece0e6adfd46e3ee4eb4402a85acc2e9b29197395c1e98178c;fda3feeadbfa347781aaf87090e3021740762dfb6f7d2202d1073acc91dee222;8745;41
+4ef2c7086b035fb832fc9d443f9df7a48cd5c66be522be15c7e6e2a596272b3b;d90276ff11a7e5ceff8e5b59c5c4cfead240a1b6e5d3d185b4048f35c6bd0a28;8745;41
+a7de65389ab60638bb6ea223ca4da3fa4080869e516348369b7011b81763b8d6;35ba9f61da9f60f9563b5e5f0400bbe3c66f273b7d784423ff0d890e54b14228;8745;41
+f27b285687abdf9407564a3d5d84cd2161a1951f907291ef9a0eb0c141f16f86;9a5fe9cbae31fecd0cb23b9ed338d2564535bbd8672ba93080465a38901b79da;8747;39
+6510aa5e4a26c30afba0522526ca4d1ece0811dc5655b409a84c8d30eb4bcefd;9c9fcec2d7822273a06e2e23946e69199ad3b78469543e987fc33bbc6cddfcfb;8748;38
+0b41652f06a98739d936647cd7611fd4112908bad49608af0f5eadb20a6fafdd;83776e44591167809af3fb8715b9283debfa642ecbf03e3875f60b1ad1e3b21c;8750;36
+2a9234b6df6cf1c164373cfa9e77f4e06d4aadc01b02bc02c61213a17acaafa6;a1b59a821570dca72384ec856bbdc5fbcf16286296788087edb0cb9520080cce;8750;36
+f94168efd41c93556ba06420218b635ced756bdfe3496b1d7d1007f073682cc8;2f9f91ce84d23267d4c17d477f63c9fac31dc5f4458ba2e74ba1d6aa730650a4;8750;36
+624dfc01ad00edf1af355c55e1e58e1dbe54e62e7037c04ec704ddf02766a8ab;5f07c0b3fba7e72df38864fbec7e6ce7b9e0252a2b228c812229f4666efe2e8e;8750;36
+10c874c579bb4586b00bbf56f3bd5ac28ecf8faec659bf3103157db26fc370ac;204b8717f2e536bd5d72e7e455519439462bd08843f2e18d63e69d143cda7cc3;8751;35
+b871a2dced5af8f204f478cc56af2be89b7f753181d519be6b2d6997608a5c7c;d4ba3ec4f5b76ce106e98de6d642fba46f2aff6752aee12fe1e59f0187d74146;8751;35
+87c526c87dcb33f41fd0fa45bd12a64bc43606d7ba1614b92456439f25afd48a;fc3a20f6dfe34b66967b92912698e4e3e5f5a41a6a0141df35faa13401341162;8751;35
+6ddc0df295264f8f20122b65bbb18130487bf13882543d6722cf9996190ff151;c5f293587b40aa33f3fdb8e587e35a3e0321ff5103f51dc7a32463364124758c;8751;35
+ac8ec704f6717a68e65c967e7b8f36bc5ef2092f6e40606dd3ad50fd711b29ff;c031ca2e62b42a4641db4ab546e077f789ecf154af8e432e4ead33dd4c1060af;8751;35
+ca991152b1969a48584cf7021da61665e5719196aba38f48d09b0b996b0e130f;7957e287c7b955ae19c1913e4d818358e17ef22356bee53832bc429e9f106106;8751;35
+f2f697e0173f1fcc39dd2475c80630661f7323f97f0500db4e86fef0c3b23b02;4e97ac2e351e5c774eb8813057df85904d9906a5e302d6e55bb7210aca2f7e9f;8751;35
+955267a9a98b04e20966e3e5598d86e0e9c20146514dd8ea62d4fdafbe0ea9ce;5ccc313ccc6735f91af41b3c0b6d24aa3072917830127c3b33872f322a4eee8b;8751;35
+d62cf714841b19e8029769bf7768e1dbae5bfd9b2a7b96bb05b324a24fa6ea6a;79511cd08febf37d497947c83a34e9e8cd97e333fa9044ee281b2aeaebaa3cc6;8751;35
+95d268a426eb38981888d063252bf79ffe9909d2451f71604589d21b29e21a59;e00645fe0f9d3d62cf98bcaf21e1a04c9c88d042ee3a74011dfb895e8ebe7f22;8751;35
+3bc428bfab5f4a212261fd873f37efbafb7dea9bcbb4896bd473231a0dff8e14;e9791e8964175844349351c0014bed9d578711511021ec7915b04a53496d2878;8751;35
+7f41a986e9d1ef0ace483241b14e69a6e6fbfe22aa33f4e28b69871794242169;d7aea6ca749b6a6d2988a90f8d2f570d7ca5c16113f85c9e739654b14e07824a;8752;34
+d4d2e1712240c6467dfe62d29c14e5e5ada4fcfcc2c9a71e967dc3a4fb8788d4;547583bf25b17be44b2414f5a717e8d74234d1e3ffa40bdfd3c08fdb91b733a5;8752;34
+1bd1a8058bb6cd4ed3e8cf199b8bb14cecaf80a61ed24a774ea85d7c9e190370;300684e3148d88bab0182ba4fd22f957be0614aef81b9c463369e8f2a6a4b8d4;8752;34
+712ba92c072e48959cd9dd2629136f7f36234e2e4b8595c0426d97da99d4858b;10f881c413be066a5b3a6c0ecd9daeb9a8f8baa4cfb54d6991243424cb2687f8;8752;34
+69032a3fbf70dd6682b575f92f3a9e2876ad20f4914fc27322570c4ff27f9ae3;760186d77cb3c8277006e540d78c52fd1d70baa746679c651bcfc756fe73a5a3;8753;33
+83d7c60c9252e8b251465e3e40b12845c2f98583d61d691e8eda9c3a9f676293;16b6001f5addd09b0d50c4d24f30656e82bff3b40231b6f2449ce6b41e70dd7e;8753;33
+fedd34077315c1d1d0209d60c95f0097cc2691f9e1938248bffb4c2c13bab3ec;2a027609a2721637f65ad303e5c25b3e533d18b1cca1622e5473f57f62cf40df;8754;32
+caca44a8df43449a267b6f160ab3d712325e9effd82acbe7bf5eb4f5adbfcbd2;e8bbb567e103b74f1c29760fc2867f5403e6997262605e9bec578ca9f99406b5;8754;32
+ca49f9f09a33de87d2bea57a025036aae6dcf5a2340ecace86c5c2ed5958b21b;ec5608b8650f27399d842ea823adfcc61826d9927a088fc2875b7d780b4a17d6;8754;32
+84e198a0b4d749cff8812a18ab087b102f14fb58384da07e885c0cc2b923abf4;552e82bafbd049f1bb2c36368009936200185a449e627994001563683e7ac5ec;8755;31
+ef3d42fbe8e9bd97101b5bf9afbe17219c6e7707465ce2ed39b788bd8b86fa37;03a6bc4923e81183812a9b563d51ec5c94a2e1c00517937df43b68bcff9f1a1d;8756;30
+598f1f5ac8df8435dcf20f911e2fcd71c74ab553dd4fb8ee1626fbf9e6908f93;84e2b081bbd6230f9def559fadbf9f8ac2f3d340db6b911b837f2c66265c4b1f;8756;30
+234e5aa198a9d70164edafc0baefbcf94c5658ae8f3d8a355e22df1369299388;a429566f3158bf1bac3a9c5b2f601c1dbfb75da4baec0efcb152d052b3113d00;8756;30
+12615157532492a3db70349f27ace9c5d25e24a6727abdaf0f4a09a2756e7803;b50955a3642478d155e9d420a6f7800aba7765509759282d9fe97045dbfd40d1;8757;29
+bef12617b87ed1a9924cf276bbebcfb79c512fd444011b02822202a1aef91864;7d04b078dff39aa559f8e06b46e384552ddaba9949ca8c7591ba22ce3523551c;8757;29
+fca21d5264f8a5e4208e75717d2f9ba40d076acbb851ebd2786cb7bd1ce72915;6644882b0a15fab9d46436e9db4228388b6a1557af57c4cb6dbf6f5b1c31242b;8757;29
+677db6004ce1bec7b99a3c815aabca78488e68ed61fb892bff14cc9f0dd6f076;3e581f8e8a2eabe96f350b9f5f036644de85e0af82f337ee8cd053a137f1dc70;8757;29
+a9eb6a1c266841114d2d459f3fba5c03b1ddd958a93d2f5b8dbf1cf2e1e5bd96;9663d7f7f262d58fd70ee661067702fca46914b7a6ffac46e112c22693204a49;8757;29
+275e6f9a115202fd35514de514d12b9d4d06b6b1a593400c05411e438aa9195a;2ce234427403e527c00eee29b9b6409e0cbcd4b68a8b69d124ef8035f4ad10ee;8757;29
+d3cdea4140d4eb0e318fd1d23f60d4d246c3a39305ee2aa22bc635bd7c56570c;d99b594f64df3977eca907cac1b6a2e2032217d3496be820abd8971422bb43bc;8757;29
+d2212f25b68cb53476626c6096596c2ea869ddc37db60c8432a1e83cb0325121;d64afaf44344d8cee8a4b02ed72a1b0522458589baa2a6fa6715b27a809a20e5;8758;28
+d9ef66cc42ae16e34b6db7e09835ca1f751760143790e6cbb4ff8c2f1179704b;0ffb5705cd3d4f05f2c5c820a7068178102e48087f67b3cf2af8315b65912368;8758;28
+fa0f8b2caabf37f40e8fe1a3c92a5cfbd14029a07fe4233eb2e642ca16774b7e;f1940e453267106688c2cc696955ddde41c33e761b064fdae137fbce08088004;8758;28
+e0b514606b3861cb63f64cc1d6d10f29d72c4d9160a54957b497bb5eba23284b;d488323597419626fa84cb93f22152064bd1ad3dd5b55f24aeca72d0119efbf7;8758;28
+99169676e03eb2dff3db230288dc85f39d0c95707bcf0be3c3d96a9793e625b1;d286acff298aecba9c92a5980ab173e24d190a2039929545fb3d798e57457f80;8759;27
+ed5db4a58bdfe2023725bf0c91ccd2f0dcc2e659b805b71ccb17e198c15868f2;f0a9433af259371bc19d85750dec0876dc80bce35bb34f3c60cdacdb528dad41;8759;27
+9db0e6ff029224aff667964f63ef5853f0873e6c3c38d248a87ab5cece10ce93;7109d4c514d1d20e2dac46ea2700cbf95d379a4db3ac78ffabba6c2d2c83690d;8759;27
+348eba514184c365e4b1c364b73b89a7ccc1a3422fa5609134238afccf196890;15df8105c7b3fbfbb3c90361bd784ec3c46595a6a84583c065e019c92f6a144a;8759;27
+b0ba2b8c6634e9867d88e69da198aac724e4f942108e42efae5b08ee97f7fb4a;12d30791c12c37cd214c3204ca35e1279c41e5ac44529f15ededac3b60ded61c;8759;27
+046ab3a67ed486a6640f335dcc6eed7334986c62478add1211b170c87910fdb2;a8099cf977ab27e0b11b4b428cd7bfc50209084fbf9a43e5abac142a811a9c4f;8760;26
+1962b21cb9bb7f3758bc4c5936ef29f5aa9b591b64d391199ca0ed1d84b5c9ad;1fc5504a7f9ecb340646ec0a83b1c5c37e4918a7ef1e066384337258c94165ce;8760;26
+3b382856c7e0ba84d1ee08c3e5af32367bebe06961241044e3a94c89335eb00b;523e29fe4dc3fbd6a5cd62e4ac58d36753efcadf563b5af4a415b9eeeb87ae19;8760;26
+cf4ed073e9b5192fa6d982f4ae0d0a3a2eb6609530e10b5b92d6e05b5309428d;158f83f2ae8c61efb5afb501bb2ce758f1557b6f04a1b56b439e0e787f706fba;8760;26
+55136b6d7017d0bcad06a2a41c3f438acd5b36ce741f62f912013393b7eb6af8;27e62ea477e20f2fa6c5b58c5cf734550784841d088f052e5060541d60535a3f;8761;25
+8d333874117bd74d9aef35f0356987106f26dc85ac8087049193670bbdcd17af;c94ab1245e3271aa6a0c193cb73c753d16ae371f3b13046aa7f30fde26886038;8761;25
+3f3fc48ef61aecb4b6c72eac1c7b3693a39678da94ce83a3341243d5fdbc58d7;2c46d91f12cf36589f4ee318e6cd6da8921c6dfc121f35dd84ea599668453f4e;8761;25
+99d6b6737515507b53cd5b6fdf37c4201cccc9f6263277dfbba7f4d46c12387e;09b8c7685e4db0895f586c9f45838d6f409a037a4b2f89e64358c9e503623603;8761;25
+30f9a2f7dec12d7f09f483e3731b12cfa4c6abdb539055c77c4d12c2d9b3dadf;d7d59a5434dd17699872c7a7078d26c3862cad8d88542f5ced6c6b598944d57b;8762;24
+cd2befbd3a00b934bfc4e82cf47239d18c190f6cd1e011e8c88ceed9711f622c;18776e182ebe3043b04371c02b4464d6a72fbb3e991757d747fc5cb99aeae1f2;8762;24
+d3e875fcbf34c65f9d4852305f2b72de047c0b3a81f4cd417be8177a436071e4;64328d459a60b2eb64e3bc9f906cff7ea8949282d8ab9431968b27f26d0f0d4b;8762;24
+313c3b2159ebb23fbd0e78cc67b8f9d650552484f5890caf308099b882103067;66f6e98963b1fcbba40512c34af5e9d8c7cd43d5fb935132c7c855c9be114cf0;8763;23
+2d08e3e32961d2f4325d408bd3b9806bd6237c3bb2a77eef469e62ecda18515b;571b63df15661c17255ca82e6c37b167720da026ece004bcda0acf9c0bcba5af;8763;23
+461a03c257eb6cb9b2b0f71b8d5d9133350769c31e0c79534779a0505684c0b0;37943bc2935e227d6aa25e4f747577cdfc32f56ddd33c38ed9e8eb26db772549;8763;23
+4633ffa7c088327ede6ff210f6ca0a9a8bee9be027de4e3983822991619df86c;23ddd5fc5a1319cb1aa9a5265ed76d84b9d3feee8616c944fdf4906e8be6391f;8763;23
+3e5641f05fa4fecee023db32a47d70969c286879e9eb1e5dfee7e0b6b835db35;1491e16f284bb528d72242b6cd9b6fb58eff8e19def3980e0ed29786a0eed8a1;8763;23
+053944b8a7eb4b7a49b22316fdf83a5812834c4b902738c820204b13fae12897;5e509390b246876611cdc09467c6937c9fcdd7519e6ff33f1d81587675d3b0c0;8764;22
+01b3c41bf4a9997ec1b5491d002475292da38c082b026c0701ee0e5e668f4324;c4585257b02a9479a2827f54e033791cfc919dbc6e8fbd82f2ec48f1e60b9a0d;8764;22
+f9bbe8d392a68c22f3cb53fb837bb7c2bc5b9b426b516b9527b45af95f97fc8f;3a0666187cf43322d20ad62d4d7a6c2b25e7a52477981016a60fddaf42fb4a79;8764;22
+18deeb809d7424b5dfcf6dd0598079b396b1a57bfae5559a117bae4986a1091b;ca45b198ba7876432cf7c3e2241b40a7ba4815ca0170262a24e389e1211e43e1;8764;22
+656d3048a0093bea3afe85a28d4fbd68b65bbb493b1fd1808ec9d681b0b308a8;3f4e3189fc38319eb43ada734a027e672f97e5be3f6c43137f46bce6e4dfb332;8764;22
+a1b9254d75f9d5f68fb278172ed8a0969089dcfeef784bc6cbecf27310bb2e17;358e8a053fd377dedcd4bdfbc07ef26e75351312afcc7cfa19b98680df49954b;8764;22
+e986c86be4147b169ec99548649782b3530d590c5fd0255b8088ff68a8fbe415;ceaf6eb6bef656f04d772815618f7ec79116c2d7d89e3b9c954118e6b1e767b0;8765;21
+9f1e19f4cbad58479a875d306b8d416774c97f5035f6aa63556a9aaf5dbe2304;b4e9ae556aaa35447d158d5afe7e4ae48a33f1a0842d0172df57ca32062fd8f2;8766;20
+ec65754db6b76b585ce49d83f8543cabb178a6c45d01e39bcd5d24e8394dc9e5;2e1a1dfd6948494bcba50f2fb2329fa81844d11969cde725ee871adc71994f6b;8767;19
+2daf6cd8c06d974321fdbb8ceb3c3bb05a7ed994022f5e7be869d53cc7065a4c;23855e133378ce3b1d2656dac5f253c12659d165eb8f9a0a80b3c0066cbc4186;8767;19
+a8551a09f92a4e498cf5136cfb29ffd5b0493a261e8ee259ecfae1501022207c;374d45f0824cc3d5bbcd691a8ac07ae14d52e97bdacbf2874b3f3aacc765a358;8767;19
+0017c8f65bc01c6b6cbe6d5a6b920cf9c5a92fae70db6bd0f074d723934b5665;144ba36dac2d69276cc4ff865c0d73c5826f30529a57b4c53c92ea7110e4ecd6;8767;19
+478f4bc1c376c221a0155a5b5a0f88c3ebbe6a4788f3065c67a2b345b2ef2f82;ef138fac8b4852e47e4411a73b62166b1e604e9ec64995bce4e80ea1397a2be5;8767;19
+6c532a6473d930c90a69183d2fd03eafa4ad86bd5495166024577cdcd466d57c;950d121c318dbf2bbe2513ba3d028519a5a780c148418089d69bc745d6bcc6f3;8767;19
+997681e121e66b98e66ce9a2225419e34f17535b783967a40882443fdb16f6b8;e6ca725028a145698eeb814e06c6dc4389aee08b6b8733f63cfc484694da3846;8767;19
+fb03ea1d15c0e59290fb50f63252c06ead65326d03ab24e24cfaa4790a47e982;6790af090a6d4a2b130190d4b00e666e23025c92551dae91c03a53ba41b58667;8767;19
+718b7c0158fa176c8625f0faa447e96c498c45091388d3e827bdc2deda95f0bc;98f892c80e75a7452e1132d769ce03891f1458bb071a1302e3ce971431f39298;8768;18
+06b0eeea057b19142d2974fd5c28b656cf0c7639298486a9179be1383d48209b;b75c9d4b3f4f343bb76e60651c63dcfef24a0f7155fe40ecf7bed7e6f1635995;8768;18
+5305bde92dc841c1f20b0fef3fb80bd8b2ca83907f5efce4f9b7135dcf545229;8900a9f1072c1ee1c6a20fa3a219aa10b01eea6489c0062b6916b529c330c9ab;8768;18
+cb5c3fb9ac772bd1e9a3d8807331d9ec6483bc0d8cf3eaf897c8bd4b25bf719d;99a5ca4ea9996860814280c4e2d8444a8eee9f85640c526b96f54d55ecc6b691;8768;18
+fb1ea28c7093f5238c5ed6b11dc35db135028627e5deef27200df4078bf8e92d;65208d3c6ebc91b6b7e489b1baab3bf83f173fdae9770c7a2a4b19285b818044;8769;17
+b2e023990785abe0d7424ad2c99ae5b16d407c1b3b4951e113cce8fde469e05f;61595485140249bc62dd35ed1eebe1f92c5c01523fe936c27718e24a47266553;8769;17
+84086b78c5bb9ae6b3a9a7cfcee458d37d35d1cb9da8a28334ef4ccda5425cc7;3637c198d9059a51b3ef483f1418dbb18775d0822c7ab461bfc028044a451c98;8769;17
+7cc2ebbfa5dedcce742a0bc5411ae602bcf3012a76ae2ceae7dc5844333636f4;80077886a0ab2337df0c7a8e3a3f63e7c12a685f77ab55378884f09374061cd1;8770;16
+3622d394928c6cb92537b1f75f5f7a1182e26462528f241df060a54be64fabaf;40185352e15ea88b1e8ef02e54eb7c8b31ba74a12fa34bc621a2ebd6ebb45e34;8770;16
+bc58dc7c142ff2382f43569fa6f278d9599bac117189dee6d522ccf5b08de283;53e055a6bdaab8b276eca4101686eee422a7fc7b10f7aaea501f244f2f6be650;8770;16
+c321deaf934671f68ca1c10a0e76c9bf180b05636d1f567a8e053b60a09bc1cb;b7a381c744bc0c03565284cb21819ca9ac8254d0f6adbe4480bbdec83c17866c;8771;15
+a1e497a06ec2b52e34a620fe8daf6874cd5f236a08098470af8d635c3585bfbc;cbcac27f717e3549e2c46e07273740ecbd3bf06350341fdb6a540c19733d4cc2;8771;15
+b01df0aed888746a4ae2e3b7319ffd8a2f174653d50a7086dafc68ec5f6343cc;7aa23cf3711119d7c3e379fa125228f8a47661a6d3ed781713a1c0072476f6eb;8771;15
+a49888efea4f67213819db2d04db3aaa6a48d98823344c92d2c9fc456db8e8d8;35adce687ffe0c9f1d91429f1128f3f61ad5453db7e6e2f9a6611ab3aaa0034a;8771;15
+01e65a93ce535bd2c970b3e029f4aebd82ce46e856ba096ebdf2d0d55e6df9bc;6f43263bc1f4125130304281f881f28551439ca65274fb1a8f67608dae303cbe;8771;15
+97f2c82419ecb72496dcb140b90f3c99bf8beb9708ed8113b2d899604fd93426;09383280f92dc14ac9a957417bb5f9fdbc34573d95bf84551f721f3f3e03bad0;8771;15
+f9331caf89bd51416ed4d595928a2c48e44729ae44388c10a0c076c1e21c2cde;e52ef56830ee6601c074064759f54fb03be48343527c8cde36a406b34dd593ab;8771;15
+e019576d977749612ba228e8cf1e82f85abaae7b99f7700917b4437c26c2c5e5;bccde6bf6990ef26f1125ee084775694c0ac3e6c7cb5c3043a3a314ce360b4e8;8771;15
+cf29c10cad1b250b2b50dd3c9a69aa46f6b6d85a45f61cb38bcd3a9620464c86;cb6282c3d4ac002ef7cb054f8f657c096bf37e353a218b1919f38ca47122bf59;8772;14
+620610119848f92666906425bebb2e9325897e5c42ed2d43b901d7a42e231ab0;4f1c16f1a7b405073933055a2f88e9ce511d7fca963ff2d7daf6ed1b33b67c39;8772;14
+d59594122ecc51ff0adee87a88d085e920b319864fb43df7581dd226c1d733a4;ac6422a88cdbd6e9b3c8d07be08f0a655fc461dc2563efea6daa0f82a960d1af;8772;14
+93a2914c9d049409f84df94a4c36a5bd3e9bd9b9252b5871678f5f8e6e8a803c;1d5791deedc31ae8dda3c9fc010419ed603c7b40d00510baa5d6059a0c32d09e;8772;14
+2807cf004e90f8fa83141533a3a4a91ef2eade0ae0146f1f6c7531e496a6a933;12f70391d9f6b4617f049eceb28f1ffb4f87a361a7b5795011e684bcfc6eb538;8772;14
+c35aced348a4eeb79a6a1a4d5b684cd1d90d99faa90ee13edefd5d1bb3ec6a60;cf8f2acea3288ea04dc53bc1fcd65bb1f6887630cde34e3dc90312d61d84dc6d;8772;14
+3282e0ffc7a479941433c07cbc3cb2533100ae3505cd2297f87a673d8b51e561;dff1bf45cd935fbf879c5513685ceaf7d9eab180f4809d86883d1f55f5f795fa;8772;14
+5200bf34e033e769e307d6325c2df8efb1d583eace4d3ef3b05b66cfd7e890a8;1729574efbb41da1c67c55afcc9bf738c9c34bbe9cedbb00ec6ed3f130c2d8bb;8772;14
+327eefcc894a73254dfcc9e9aa00074dc98438542a4d772ae1f8eef1eedccb1f;62ee8699ca977a968cf1176f7780d527e6836ecc77c1ad21ce4e5d81deca8e00;8772;14
+3fb78a9f447f6d78aa97c18d516bf384cc96e2d8cd4ba35d4b809d6ac943d720;d2aa6a14c24261ef152c8ef25fc5176f4201dc03639805250725aae14f0c3a68;8772;14
+8ba5d73f3d25fc7572178268ae84554a9a3c79433a46fe170b25f98213f707c2;97e0cfb0c96c15c08c13530f01767616f9421d4c1ce19c7d8948c0a264251654;8772;14
+16a84ef1b80ca04120292dd9e26f59b429eb176ec89891aa723d83ea729a4088;91f1d813a9e0f2e8d9cbf62fd14ed87a92feecca334b64713901a19bd0515b6e;8772;14
+5a16d73f017dcfe0a2b4280cb420334dfd5f765460d83077f8488a9aeb03819d;b0658ef140e92f94475b561e42f3d1ba6002d4a5d636fa64bb57cf0c25d7671e;8772;14
+c09e6caa6959bc02a8b4e946576e26089cc9d7801762b3b6eeb1b6c255d733a0;438d882212106c9be745584a2406efafeb48d3fa1a6db9974199eaeb15ea2d3c;8772;14
+2b881122337cf8629b33644d14a32dc5d2d33551e8abe36ca93e0b62ce2a9666;69d891f10c6830f4601dc76bc56a40ade005a4d947de72e2b08becc884d4e521;8772;14
+b5229a5b37ab7816aa43ee6887fc8792b66e62b54020ef1550e9e6d73ab93977;9afbfc5cb9c3a3201969142dd0c7be672b2f3a1a668ea150be8b9a33fe4339dd;8772;14
+9e849edcc1f7d5307f162e04404ab361212cbcf154149e1e8e424e87b107aa22;4770de32203d04e9ede10a18a339588d9666537f917d0558164e796e843690b4;8772;14
+01b0a1261569ae498eb011377c1ddee2fc7b2a056a43c2fbb08187adfa76435c;8c26897343d6a3984e63d2c44fe7de5964646f959fe8d3b2713c408712c4402a;8772;14
+bcf05858c1f5603bc0544c9615dfea4fab3497e0dd804064b8cbe6899fa4bec3;2b17f6c176dfd5d5c789095691f264b1e74bb69fc169b1ebfa6af96f31818e67;8772;14
+107c18eca69e5fef125d8fd8f672a46e36d04cb544321554fa028e3f3f318fb3;0d46c6124a84a76ee2224e61add36c417029213fa5963d343f9cb0eae37c834e;8773;13
+9d3f9b61135b81643845f013b91fa77fbcd03ccf6e1d8f5d492a82b3a95fb867;c3bcf59a5edf08ef5d6b49bb0ab7b477e79ecae60021536759241d42f6367b1e;8773;13
+0b81edef04657e6d64579002ae2988c4289c5f60ac2dff7c197043adc9a91475;03868b7b8cecec2f2f739a27b2fd6928eec33aacf951c524ac22f231a7592eae;8773;13
+17fb1bd91b7e5cac886fca511c54595aeb513e62a22d781fcd90278cbc1e2a8d;c1f32f27203bfc9abe77eb1fc5db0e4a884561152f1d3a4354faae890f25f81b;8773;13
+ad8133567d747e42ed72f3186163406c2b3322e7b5ccd6eb4ea93d367eeb7504;12a59ed1fdfc50d1ea0ba99297f61a5534aec5584054b763b94e4fca1b8afac7;8773;13
+875590f74699ecce6f55481e0cdc2dd836742ff791b5843642eb258e074a234b;b41d37f1c0c84d961dd8548cf85218618b6184c26c02596011050ac572b6ed04;8773;13
+1647cc066ad2d1937380541f0b1b8c72a9d2c508382b026b453438aeb64bc959;2182559aa09a344f716ee50309062e00ecc65bdbcca53ab24b7a6c06a5ba3df7;8774;12
+da361eed6973adfdab82f6ca1be7c6f218adb63067e734e5f523c5634a2012c9;76d9219640830ea49c2937092b396dee3999404d103618b7a8c575bc3cf21c2d;8774;12
+cda9beb4cdedf0d8babe67236765a302968929abbee1f34299a8b331ed4b2157;25b001ec94155a1dbb07c0d4507134a10e49d0b0353e26474ece03782daa5afe;8774;12
+9c7b93fa8ca8c77adebd2f72691379255c4e53174d4968460861e8bc01857037;16752f5ef297b434abe701bdd7e6751d587e365078a47195318d0a3dea9f35cf;8774;12
+b8727d88863ff1cd324da8b50c59d7311f5ab7bddab27bf5308e29b9af734c7e;56c1dd9d6252043399cc59dcb144a208191b3873a762848d0a4e2fc84cf1f6b7;8774;12
+954dc43e411cba38f100480b415234666d96a4ebe4e9832fafeee73c1e85babc;056f8417b1bf9fa37c95c3226001ff9ac6e94ea20fd2e2e51c98f37934e71827;8774;12
+3f2ace22e79319638ec67e22a3fe580ab2895c12c7b1d554174a7a64b507fe56;0115304c0063900b5741c65dc92407ba65f9807469be4d83044990a12ac33997;8774;12
+8657df6a4af428ede9f0c140106d3818272c314d17aa7ff98ddbc4c4f207f980;3efdd4186a86ede70bee9e03326f4a7a9fc3657d4a75d3021d778393f66c2433;8774;12
+0145d6c31a9abde548b172088c9e7d9841b191123dd058c230fb444667449cd2;6999aa9741df124b1d477495187c34dbfe8b570a9ccec2717f5fa2341bb0c3d0;8775;11
+2b248add166c4c02af2b110670fbd48d49640479c0563bb2b76a55b060b84360;5615ba4b543005fb36046348445344c85610377c6d6958dc10993156293c459c;8775;11
+37830ae17ce07219628bdf1ec2abba99bccd61b9b96dfb2e413a21268c31f8e9;0a3d615a3408176b714daa71e605d5270dcf37c9cddc1eb186b580bef5e4fc75;8775;11
+f69cb8a7bb9f73f3814d4a51e98e772561520919bb810aa3f6fbfe4c455fbc4f;91a9ebaedd38c47124ff7f47ea369a667aa8317f9dbf957f5fbc5518ef99d9c7;8776;10
+bbdcf7729b5be0609a3be8a626b274ce59f4fe3db9495a311aa8bcd23ed8368c;e800452669b4e9b2f2b1ad0e8fcc40b02f9f8266355d46c7539bbfaaa5d4ea1a;8776;10
+64eb50212493a254fb21569cf45f70d38492ebcf959c3bf37deb5078c6ce87fe;c1304c1475ef5d3d467493e887185aeecadc8c4110afd41296c09766ef2c2354;8776;10
+c2f68a74c039f492489433cb43f8e2f6da34981a8ea642b83789d8cb7ec46766;eb9d4c6ffba8997bede6282d70ea2197bd1a4c2e772c5e40d265c11898d52df6;8776;10
+2cd5a963eb5c1d86782cb02e32652c592cc97db034bf8057dbe9dc3b96087378;ea43d7f018277fd9a0ceaa3fb32565fcc2236c22eb94972dd4305ae870fd3c1d;8776;10
+1bccfbdcec3b68681ea74dd2094adf5c28a60d253ec575ef220673262cbabfdc;48f20cdafa2a9cdb209beeb07d509a5774700bb34daa3ff14144ea04523e49c4;8776;10
+c037a2ccf3190ef95a45f7f03bf751a7da5b8eb09f96f8dd3b098d5f2bd5fd3b;e2891bb70f1e8a054305477d3808c1e7cea773cc0717e1080c37ce998244c1b9;8776;10
+8857d436d2b67302b6e0bff6559c9d99f0e114369c4561585e27c3aaf54a301a;260d54812921fc31e2ce63f03eb188dd590706eb01d3a773084216eda61ef090;8776;10
+bc10f604b152b006bf2ca11c39026074eff57c72c7c17023971c5e3f928b500c;7471f141747ce86a666f10b2986f5422e645c3ee437f9ebeec9d104c431c09a7;8776;10
+3ab92360b4921a4262316947c2a2e13145ffc65dbb379f06a3144955f02baaee;19a0575f01c183e0eba247d716af136201a870cd36fa562eb9d95ddaacbf5f1c;8776;10
+d201da204dfbb473357b52308af35f78389aa78f3e342e54fc884de6d89793cc;cbba20ff1e8db5ed5a27471859eaec62121ccad4037caab74157b0648063c586;8777;9
+13a256c748eda8d68375c0cc9f30b90d00c8607ea1ca9b0ee6a5a1187b19de3a;4c8e6507405256efcc28a81da0d20088f5e6ba1f542f5f938a3bc7f35d8b0c17;8777;9
+8fe0abd251b9df6f89d2b845b13d8185e15e03e953da6146e0064679dc84a3a4;1082c14d36eb44533693485476fe990804ee899d96cecaa202cede6ec07120b3;8777;9
+7289ee62fe823f46c052c262accdb950780b11a933d5c00fc793452edadcfdf7;681dc4dc1fcefc53a51b78cca993a88d1ee57c6679b4df523cfcd72ae61447da;8777;9
+2f18dcaa5e698b54c54d48a0d71b2c139ab7419df228b9bceca310027df1c4ee;1d410326ee16bff80ccebc917179ac76c0210897948774ca7cb1a763b4dea9bc;8777;9
+117c9a00fc65ddf35b070c300e00a5cbe92aebf2aa64307d556eb034df8e84cd;544bc2794e69a7fb819278807efbf7849896bd0ea0835e78048d942bce88bddd;8777;9
+a76869858beb826ada365c94387f74e7e80f7fcc1d9c558e8b05664823210deb;ebdd517e21571be7266445b08ddc668dfc1068c0194edbf073c765e9d67b74fe;8777;9
+a198fd59788041da9c9f25347b6a76d6312083f6e7a14d67f379911111780b9c;fccc0bd486390497f64ea5e9ed028366f1c7ecd978d8bfbadfec0b93890c2680;8777;9
+efd7b662e9c629157ca6512c55a5e1bb9f91c08de5f25bf0b04e3d4db362e90c;5679cc71ad9ede04138e2dd73c98ebc0e1055e3cbbf706a0fe5e2c957898d6dc;8778;8
+13bae2761c05a78c39af839ac17de23beb8b9d9d2e335b384de4bedaad7c55c3;6b5eb182436e1642bad82a1d7b890329ebd156ba86e2b96c71c270914eb67df7;8778;8
+da445b13b6df1ac7ed27ec4f7253b0619b21de4d03f9d5c981213469b0b37828;5d66b6a03a77dd53a018c46e33bc89ca7fc7fc3f1b8d7034724bb8e4e65c4e82;8778;8
+a11f11120e78b778987ecb760d1fb96474738464f8b9f86c57ee882c7964b89c;033e73ca8c0c814432d5b2bc3c651df59a9d0209e11fc94ebf5c220f4bc01d9d;8779;7
+d19d347bd3fe486d6f492446ddb43a133bca2ffc82f271263224c9d8d32950b4;364e3dce982af7146a966a510d4e28ab46584f96d78789f03e1428e1e0cc83bf;8779;7
+bba35f29b1c40dc26d4794b87fd425be7603e89d7eab7ce1e4a1ffc83a2c521a;69e522abc11f6d6409bf4d34ef7034ac713263e312fada11e0debc1bfbe56d6b;8779;7
+9e9311923d980a27dd198e68ad005ef310088e3da5b8aa8a776713909c41e23f;03185b3cf6bf67d7d994512feb4f6173098c0915d9867386fee172394271f21f;8780;6
+7316093bab3193d2a111be2fb374d703e11187d619e6f354fb2183425216814c;f74dc54265fa88368147e18696979e4d4eec6b20eb3e41ea1eef28ade57213ea;8780;6
+02ff629ed102de107448e5a16e4c26bd4ebd226b2b132ce11af82835cbcb7f97;78786d60f241c2ae8b4ecc723e24a1c00c040558c84266c643b94c46da85b177;8780;6
+df90d49538b40f6001b997e2d684dc4076f8262ebdd9e83cb9f4c99e75637e52;4afa295e62a84b084430d8945266a063fdcd6c21af261978f1cbcb4a0c31a6c2;8780;6
+817b77cdeba19ef0bc37fa9b5bff8cc46bef389459749cc63c3029e5d43ad3d0;2a72aa4b01be51cbb1353fcfbe21d1f5bc168a7ca9c7301575d28fb1945adc65;8780;6
+2ae6a56094400fc2d3b0dd2f8d53f0e4cce8d2a60366d9d169e32855ff3a4c38;5822823fc686fc3ebbeba992d1075e8f26ba795483dc6ed5110b6219309158ec;8780;6
+ef8a6faef30619419de9d145fd93710b43b1550da79706785b2bded74838ad0c;88f2ece4fd23848da537c35fb8858eb73daef58bc2ec26ff8d30144e9f5b157d;8780;6
+119d00841f49cc07c731bf8b4a3cbde502e03b9bfd9752009ca61774c85a7a78;60c1fb46e170e175ecdacf739e50beee909b371b01d3ab1e2f32bb3f0d3a6abf;8780;6
+2cd8db34522f5d5f5ceba176c1f5bcbf0f26ccf992b52fa657b1cbbad234a77b;4272b98601618f57683a6d4b323fe95b271607c183a99054e59538d6b452340a;8781;5
+d6c8de930c7112d7b7ecf83afb36d54bee27d884b72cf0147d4623833edeba2f;b03c0b937874ca0a5ca2892a0d273d7713066350a0bb0ff18cede5237c6c9b98;8781;5
+6b103b05cc8bcf88a5752d35113e51209c597bb63d6ece69e4ae521ff3d4a60e;98e351399ae21020abcfafe0a6e8d50d0022043a722dfda16c734229a18031e2;8782;4
+3250b65b77102cc58ba7234c8ecdea5daaca22a063a3b98a8887bfe7af5008e9;e17e487975592c088173f4121491ed86ba0b9d8fc6432483ee1c0e9cac6ac00c;8782;4
+a64df335da59122b3d9bab2cc6b39e4e85fe5501f4a58bb78ae4dff8b6ccbfeb;5cee936556f8ad50b07f86c8499049ea1e5a4b62402fd2065ff9c829306f8843;8782;4
+c5d670b8ff2c923c9cb9762c3227ef060a13e659bb5acd20ed08d6f5ba1d88cc;87fcd2c96406cb4eb0441564f009b3252252dd1ecb35d320a5220cf14a15d054;8782;4
+15b0fae52075eff3f150a66554e500829285782dbf4a1a5c1124ae297a91d714;500d34d3c2bead84ca20ffd8328d5274ab44c7801a6e48d7d45b68a1eab6f2de;8782;4
+d0d016ad06fc49d912b66616bef14a8e29fea282b7ccf5f267fdc1f0ad4d60d1;fc26de6f58d929d2e1339b9f2ffb84bcf641bada292fa03f60cad78b67e7c02d;8782;4
+b107a9bf0b2fb543780a1168315a1ae265536018e90e9f0be2a330ea90a16ac5;34c07de708cb5178bc05dd616828fa0634f3c99d0e52a939f1b2a513c514b907;8782;4
+374adc86e853070bb882b86dd2c1d75fd5aaff2c17c3006fc37cded28481eeee;47eb8b23a9cab201c62e34432bf9a8d91bf4955105ad6d417eef59e3420ea7fb;8782;4
+5d3aee93a092d70c48104912c97c2b21da07d2ed0d6fb513e967950d3dff02ae;f607687e59006aaa3f52346800286b43338a9b2437ec848fcea8731cb7852712;8782;4
+47a885a9dca18e0fc9456a50af2a13d353f4f31c0fcba38b3f5b92580513389d;e46565b1f4b62fa7d41247ddfd1992cbfd449ea4633a89c8f36edae27243863e;8782;4
+151e2058c8fd88b480a3162b62e5b195e31df17b67ebf9de8a09fdae1f3aaf88;c397e0266aba526ea3923de711c92899472672cd706d5d1c6eae67fe9871c589;8782;4
+cb684fbe88ef11b2f42a0a3cc9c36f674daddb6ac9b11a8eea5c0085d4026ad5;978d6b7941cbce7403e3a3a0f1cf5f02879b4bfbdf6de4fc06fb94276701d308;8782;4
+c513f97929d5b3fc6c6c0aeaa7fb08856377b1ab7c3fe0bafa97762f9f31c936;97f1c673a0d2104be3cbd21f24eacff9514547cb2434560a71961235bde030f9;8782;4
+d140dbe6f0e0ceb2516d86e8cfa29cf9c6e00aa50f54e121ecef03115bfbd124;9c6d0dcd3071e205d23264d39f81aac46fa7af70d1ade733b99e684a9fa5af6b;8783;3
+821a07747d933a8d476d26945f6c78849893af9f73ee4991ff87094c6176a5af;786b93082b96095e5675622d0a16459aa41474da85733a8548a67c2c58430214;8783;3
+d848bdf4d72b7dc9c2fc350cbd3db03605e32cef279d52792b8e10a4d19f95e8;368497acb9896bfcd67b8c31c7c6eda8854cce752433f974d917f676b24c8e70;8784;2
+bb955c575998ee72ba7a8d84d03afea3f653c80d9bec6badc39f7b9ce8e51571;4fb8f3bc475256ac9db5de0559d243eaa860ca69f993975c204fb198ac17e996;8784;2
+25850a82a1b5ba60b798e9d6fc388a24a7edf70dbc475f698e5da8fbf33178f4;ce6dc250305a9d3cb1cfaed2200c239868ffe4780573b42ec1170a22f7e3d8b0;8784;2
+70902e0ac7032c197912a1895ec72971e7d1be4d323d549b97d854e6c6117b50;8872f110a4aa109b13c02836a6db7a7165fa871773a6f80c4c04ddf77b485540;8784;2
+fea665a77971ecf4b941f3e8516c84d1becbd8fd942fa045cd65a2fc2ba247c6;f952e63009e644295df43c62564298c25e36625e5dc3d2135ee411fb8b66184f;8784;2
+d06ee8e571779e7d4615d3c93b314307b6d5998c77c5f87de0737ce877a6b52a;4d00d5a0df19f97c7f2fcb9048a38813b48a6035d0aa42eb7557865b43b4711f;8784;2
+9615bb02f923724294416d8c7f2a4acfe867e4cee5b01883009f6dad1f7d2288;5d1dd27c53aaa328e1d1d1108bb019cd72fed12886c562e84bceadfdaecddd73;8784;2
+b33c3446e7cafdde8d462c5f832372633dccb64800ff52d2573f68e924b49a38;55a739bd38f0d0ea3a6db296bbdba62dfedf6ffb5ce19d39f4fa455cda3b302f;8784;2
+c4403f878e43328edeb2edcdad1e839ee4260cf8aecd3c12885ef92efcc9c325;1a520b122da99fb0ec895197b0ec03d49aff411ea1348860c9c91d67bd76d4a7;8784;2
+d2ab8bf0f200f13cb42eb9d680e61b3556a0343ab79852c86f017d03109f1963;257ed081d219b859c60794800b45a4dede2b99d53486cce94a457b4103ca6d62;8784;2
+2743245b5fa54c64b03d7beff06d58555fb5a07cad92f21ce5909fe7d5a5446e;df3703dae2db77adb3f65ffd3750fb0266bfdec104dc51309b45f05f9750a7fe;8785;1
+3c1438e2d693678774610397643596b28f94da5f4233e82c90c35d83d5841af6;28ebadfd2a445501ef44f962f47379c3e93ccb933cb313b33e9b9df96d2ffd33;8785;1
+457d7b833a654b4dc1e4079abf484f3d75874ce82b01a6e83e18385e0b70bfd6;0fb059718e5282b8985037fdf4afc50a52edab030ca1fb1a689c6c2d34f743e0;8785;1
+54e1959cffff564f825700da4cffecd6e2d0457b815d10c971b97d535ba461d8;978d30b7416dd92d670e77cf059a9735a3ce92eda000298f5a81ec71113901c9;8785;1
+3ae43a73fce8a6c7a90b5cb7629a358a057c2d92b004b240d7b64f686a7b5044;b96b0deb9fde58c5c506048f9e119de9870208371caf99a713b2322bd79d3115;8786;170
+aa9444ee9c610470566b5fcf948a427752d116650ec3e1391d71f6ef0d535317;d4b8ee163811292888382e2a1af02cb7bd21c99f69e85289935283d60b177588;8786;170
+c562ea5a7b199d654889bac3c384bdffa306951a50afbf9f9b15dd6e38094b49;ec6c3de4673b92c5429800f26a58c793b2ba319af88f3da25398faf1da6fbc98;8786;170
+bc6f10e08ad269e2fffcb643962fe8893fe9e02000042100060204025ae204b9;25a4c807181b4b6624822fd59921465a3b85f11b3176469af1abf2471a2d9942;8786;170
+9322ee9c4d3061e99aa3d0bec6eafeb9c6af8808fb87661533dfb1ebb9cdfb72;4ca19fe8cc16d374f0c45b84ba0ee8e3f8c6ac9a633383a38ef6347af74e990b;8786;170
+8d61fb7063a98dfd9121adff50752f7d1af55e31eb5048605a2ae3ad82096a27;b77e4f5e9ffe5d115de618f6f016e48865e78f705d538e5bec8b51ec8e33bb2d;8786;170
+5c5a1022eba2373810557492e09e891025383b6888fe77d813f94fb2ac960d03;e4377e7306a966571a222bbb31a1c59b20ed008d68ebccb5f7e3523b2fcd2cd5;8786;170
+f0bc944d312f959fbd477be88d945a986ad618c2010322f48cce57686fc9c241;8eb9242de3318f77c7e6930f42d64cc9ec8acabd53eb06cf5a37f19255338973;8786;170
+64c23c25f1769f5d512824aa24cbb280affa0559656adcdf47f2b49962d21597;7cb1963bbe2eab2b25f7b1ca2cee45ec15fbbe84467f5be2bae74cd1b60d1557;8786;170
+5fc818100dfcac4ffb549361b63d7cc5e38c340bb37e73fb93023e8b11559081;1bbb01d19ebcc0fd1e7cdf36621e0d53c73393f965bbf8495e955ce195188ba8;8787;169
+e1e451b3f1a1026ab3e76d4702c675402c2887eeb2173d725bfda9024c5349a9;dd4e862b28ae07399b8515cfbcef4c254154ca246daa484e1166704d7b962772;8787;169
+dafe41818a52b8faa8d85714bc18fc3c8691f35bcb286ac18520c2a285abf315;61f7e910122276fa5b00ce8382c4b0016f3dbc879a7b000b1c091f2f5ac7a074;8787;169
+29b77bb5b5e42959c6fab01ecac65f182deaab048aa4a4818488d1609efc416d;ed79816a6d62c2afd4ef39249b5de8e20032cb953b78749b32935a8d0508c63d;8787;169
+a34a6f24f267093919690a102a866d16886083a7bb1539ae4ef63b8ea897c54e;e85d23f3c730bb7064dec603945278514d12dad107dcb32b91cb3f726dd0cd6d;8787;169
+b66bd5bf86f8bd5960d73d4834e9a2c12f1f4305fcc0fb6088783bce7ee0f747;2fb99ab273b5a226bf6e5f6f40f5eb49928d4b3839bf96e271f2341b7b9e45ae;8787;169
+471a9ba9a00ca7307693e4469db8930b5a6d744ffc4c35dac0dcf78ea1f7c372;236d63b8f66945059e3fd168669c25722453350afb92796dc92811a46c3877cb;8787;169
+3fa093c8f51dcb789e31268eb01d06817ebaef2c00ae93e778f4977dcc6da2d1;8275f3f71572ac8726603c08982e89c1a9a20926a1aa34fe60b06937731528a1;8787;169
+877477d7eb45e2e489c512c5de662a94290c4c0149bd0482c6c80c9348fe479e;6cec45319c92b7b49dde746055ca994f87283e799d65e02bc79abe0965e9cb45;8787;169
+01bbff0ae29439b0d242b1883b1936d09bb21039ad2cca05a49b5a8c91fea5e1;db2e60db8612511da87264094316e101a299389dc2115db2430c7ac28fb37cd9;8787;169
+974c047ff9f339aa322e73769b27acff9a43e1ece0152059133ba42c66c2eca1;1fecd8185e53f83e7040baab8beb9da4ed2786e74b19a5e8082c066c3bacbe11;8787;169
+321ff31244c75b39ee7a5f12fdcea98c7fa4a945c584193788f9b390d2d5db5b;29242922ce8955356ae1e1f98128b977889c8d30ef3d421d578b42be2f5d17f9;8787;169
+1504fcdc9f830d6abb9905dd840e4cde10ef73ee9679362489bb76ba57103b0f;e360784a00dc0ce2019bfb4bd72b64a84dcaf26af6d6c94fb43b0e8cf04d972e;8787;169
+8825b00e5c8eb588067a7c40221bc3e78140e7f6b4c2a64e29b5c9b1501aa922;702dd2d30031380f1ab3e487492a36cbcce38015edf46b76008c98c6d3b9f5c1;8787;169
+82d4a3a4537acba26c43102eb33f65ecb30ec329340e48acf4efb15b0b4c1eda;045a7ce5271f61c83879c49fe7a777f2420dce62df9bdfbfaa3212e70291ab4b;8787;169
+7f00d8c9c6ee111d89fe255f56feaad22b4f4ef8a18270f014e97755824efa41;cd3ed0b640ae590cc485f4cbb168365fc0811d038cf9d561d0b6767489fbce98;8787;169
+db71b0da7fe561631febfb9cde02df12a7d5bc57cb71de4ac735a98a42c72b11;badcece6129724798a9f61b0f6704cc030a95a1cb2129d805eb69f7f858bde8a;8787;169
+ced9681b243fdef0a9fab67871a2c9775cdd645eaa8094cd22da19639df4fd3c;36fb26b55a5939c8a555c8e145fb6725826796ac143b508838e221294542fae3;8787;169
+84934caa3eea4ae601a460abcf22522672bf567f0917ff5b8eeeb000c502f534;25446357fa9ead4bf2c2fad2cead269cab69344facf1a9627c3a5f6070b4e2cb;8788;168
+6b079caa839862fb4144657d590118ca5d719a183b396310cf90cf425a5ebf4c;cd08631ac89ac41cd201e31138479915843691235eb292eb64f37fb4dd100bbc;8788;168
+7fd8c544429e095652e7cad6bc1444db5ce85c4dce3839feeaa52d29e1683467;c90169cb57dc186354f1b26c846538a3b91c32f19d15c7a34e33b387f3f59aba;8788;168
+144738cf1b276b4c49c08cf10cc3ad06f1cb3c0a83e6d72219383aab01b98be1;23b45b15aa87ceb0ee7076658a16009679a5f08dd25d93006fd845486c6a217e;8788;168
+e2318e51545d7f875afab86e0db25d3c11444d176a721093d15846b673f56a6e;20266b4831e77a74546550fd5376aebf904a05beced498d2df968efdb1c4e68c;8788;168
+d7a6a896b7e1d118f51638730f51b7f691123d1995cf9fc8cea90f9d699aee55;2b907fbe25cec41d191c037872803071a43c190c98bec8616d11d1919d1acfa4;8788;168
+f976d81f3ed48e91639b392a5fabae5881075064f503b50d8aaa560dafc49c77;ed0581ac8f9203d6e6d2bc19bc5d30670bd4bfaf002f3143d243fdab870cfb05;8788;168
+6c9cdd523cc199ccb746d29aaf25e2794471fe8f57765918d058a97c1e2064c8;80b3439143bd5663cdbdc1f1267d96b8beb4489aa4f3ae91c468119d3b13b28f;8788;168
+6ba848f4bf971deea16ba3ddb06b2b11d54bfb099ba94ba54be0fe5dfa24707a;523a56537c4abae79e6829f4251d9886dad96f19f4b025e187f63c5953e3fbf7;8789;167
+099f6842d632e31696440ec78684fa49644d2664953ebb34c8194035a13072df;e0e67bc6b8b576eba3e4d6422fb6da5a679dbe6f50c760eb52188ea44b84dc82;8789;167
+aefc8b3db8ee6fc0b55232e2811139091b4de841bf5b05567757693eada82304;16ec15736dea1e971cce7d634ebb57ec095f030c2970580727235456003d951d;8789;167
+169a49bd7be4dbce643b5322b64295223e5988f64196588312f260c19a5073ab;71bbdbc8167920fed9f9d59fd750eecfc68d1e1a65155bac471dd811e41221fa;8790;166
+9f6f0cff16db71536e6ae8b5d7805a62450eb6b2569b78091e560f1788282dfe;998a25297663dd4c1f45185e1251c7b44c9d917ec2c24d8d0879c69c8dfc7772;8790;166
+188debb06b75bf1ba1d5b2e858115555ff75a26e1a91ffe2266e28cba8c19731;b59adef6f238454c410da3bc0e5443ce95af98ef75c80de224759a155786c5df;8790;166
+96bef23ee63acfe19975d2e90d09a36f9da71e2e72b6ff53339899f3541a4088;abf52903de9737d90ac86dadbdb2300879eb342bf612fddc6b4307e7ea02169f;8790;166
+114de74e03ed2282692371cd6a2e0a5d1e877cd922b256004610bf85696e3684;308e7e894cf57d36feead436ec582a97e593f23ea300af990c2dae8c1d64cd87;8790;166
+44d6cd2704dcdc53c0d48ba1768a9a3d8a3edc6dace597bdc46aad6f3f2b3463;e3b8028706439d82014897f84ee23b33e43d7b86d8610210a355a3e27759d49c;8790;166
+373b02566d15b42a660ff98cfe7f83e089a5654de98d8f97df7782f5debabccb;88bc05210076faa2afb6eda819ae53163799cafda70988003c0b45b2f75e8967;8790;166
+f00ba6ea8639bda799c0635afd154b00eee598f5c6a5530596434ac0d6888150;0b76200f9093892e367fc1b093dafd6855c33de2104feccf2a39012bf806ea79;8790;166
+908c2f50b056b678e7d81fb3b6e4e5e79fed0c0311eca5949b2bee5b503da65f;ac4accb11bfd99821c576dd8cdb17c0b5e78f254fd95b4887e30faccd2825c9a;8790;166
+e31341dda25f26f493b7726092be7e30e9acbf5a9a7272355b2d7684b0286890;02c6bc2f660706d6fa1e014df7ffa64377f30d3a1f276ee6e7058291b736c1c2;8791;165
+ee29d95d4da16ad7107018f9fa6e9cb600d7e5dd4005612fa7ca8c8a4e2a4798;4d99904a7d17fd9336c39c12014d028eda2aa3b42056005d5ab7e75fc5874844;8791;165
+e9229d301543f7e4838cff3c3f20b4233cb4fa5a23b671ff2d0d039ca73b375d;e37a86a7e5251a7933603974dcfc05a20ef3088503dada869517cd85ddb07bd0;8791;165
+bd0ba39a37a31b8603ba0cb3bbf44723fc96941dd238e04c4b886cfb426aa7da;24fe2d3d167d5055434bf108679717b3de6b308487f08f7ec41ebbe65040bcf3;8791;165
+ac58d5bdad256aa66bc9d5b6443a5b3536fd9753589b30a3fe229b8c17e1a6c3;0afe614cce06f4cfc726d76b1d075904404fe9ff5872c7d3f475320b233c3fb8;8791;165
+f0f3733d76a13c3c2995293143d934cb349295fdbe39fa0125244733fedb94d5;5424bbfbac97bd56137c99f4d5803e347977eb85b5a457fe1f991b144dc3329f;8791;165
+79362dea955374fbf7528462d5ec40d2f98c2c4067fea1a4b78bccba7e2d0a07;7e0eb3ab6e731c966f123debb7d8793ee5f54fa0bab9c35b3a0682f50168e521;8791;165
+40dfec307acdfaf90019c6bb06cd46a593681b851ccfb8cf73e8f491621c6959;ab48ae3509c0e273606c100c3a9e2d129c3fca334db7f70c44572f3036e1028b;8791;165
+6b64f7a09119c463bce5a0adbb447eb6a46503f97e732202b57dfa08b6afb850;0c3e1fc9228ac5670be1d64d97fc4f10ae1dfc10c039663f2e4cdc18f2d8e128;8792;164
+a7bf939d18f3661e2efb39daaca037d7b4e592b97659221f9b0e66cd409dd20a;d91bd0b7beca4f66f35f72e8d63a5b9cab1696f4975ff32c17bf61d16752fd79;8792;164
+f3b2be3f17696ab9ca609f943475c498ec723951b8cfc67b1c313ed1962793c9;a8c48850f606f97462aeb1dbbc823447f03bff0cfe3332729261d5c05178ff0d;8793;163
+2f7207317f80d98157530139e454f4be28b91042ee422d7de52731349f4b981a;5eb15ef7eeeb13396a7c9823ff5bdc6f71c51a4b19682bfc5bc51e642fb88f70;8793;163
+e2a1c510d8103b4dfc9fb075e13cd1d8e3486f77e210eeea4731ac92939960f9;df0ed4bcbc364bd1d42ceb07f1eea903ec778480cd7bd48fbcee04d5a127a80a;8793;163
+5cc613d4d030d69744d72134fb4b6eb88fcc560cd9a47a545bf3d90a6f52db35;8cb9af785a9c8ff12583aed88135d810fd7a50520274f67484304da80f9a258d;8793;163
+801b68e8c9afed12e74f28e974db4d0298ca41e0237a2e487d0680085a34c412;13ff45ac20c5b64d43fa723bfe76edf687f244a418b329c695b6aae86d02e404;8793;163
+4179452f4fc87d25d128a601a08473674e0baa9843b89a28675aa0dba62edb76;5626c450377a3e8a2a038e296ac872591820f5cd737d7a7f52a05b2ad1086f15;8793;163
+9b0e1fd7ec6fdd026a70cd522210811f5ab11b6a6e3e2708837558542ad9003f;46a9b770a2d652cceaad4020e6a272d386bce6bc40abb9b56ed78a3708961787;8793;163
+78837f96582f98e452a6b8a43e6f94780de918cd1b1f7250fc101f471e7cf1d3;1b3a03f4a6db31a09da864d9cfdaaa8fe148b39def7d4735287aceb5e56f78c6;8793;163
+67f70ff29cc5f82a9e235c620f044479bd141f7e304f41fea16e948ee2c7d807;73ea2cb363408e7ec675b13acf05af968ed99024fe1ccb5e30128a12c57bd578;8793;163
+c5559d83ca8ff3419a3c1eff83d5f06743949109b897abe7f57c7629c66a84c3;6d2bb73be01a56e3fdb9a5145ff85db3401f51f2a641000a205c6b1945e42a97;8793;163
+9f71995eb5dbfe69019ce2336c332c1d7fdaf4a3f015acca7581730b7d24c020;05095c5606d6de07571b3d7365251870e061febe429d821061191fbc15fbee7e;8793;163
+d73104fa34efe6f64b5cef1a5220d9f4186d2a32b22dd666d06bae9a715a2773;886a90720c8da148fa9f36981cea8aa73b48ff01dc2fe59deed288ded43e5899;8793;163
+b4343d06b6bde15b5a1f23531979ab67c5a1f7edd8acdc891f89896991a665d6;fdd3da9f697645613b325d14d750512de97bb1f4eabc1a27c563ba78dbfc210a;8793;163
+f697f41d705ac02b0d81e883f4faaa4a4fff84da78585c6dda7849f29a22b829;33503f80ad20747d3b0dadcb780cda7bb21d8aa9e4c81968e914c313acace724;8794;162
+e91490dec81a31b9627f031b2321451b8fca92135e10fbf4d1d5cb36d3735443;7002c7411123db69574bd21630d24b0eb890aa526a77b197bc2e851d6252bec8;8795;161
+8e573e95e6b915df55677163ea4414331d2e323264e984daeeec4ec61c8ab6e3;35f0d7ea8ff33e5229741066b65545d2d3d6cfb9a8b6754ba7f67bb1af2529c0;8795;161
+a9dd317057a533a974b426692864e23af4ade5542eaccff1f8227e0a33264831;702da76ff6c0daec23ccb086caeda6a6877d9076d688f4a7e0b492ede9820865;8796;160
+6518e112ec4cb331d3e187902a9356078db97658417d18ea05a43b22ff4e44f0;606ab5b1bc0b073742ff5311832234bf857915a3bd9fe3b37801693961c64889;8796;160
+df2becf7b867867a8dbb32262641cae8baea6934d8f54b58c2ab447c1f4e45d9;1a5f526f9c85eecd052db5780d23410c2c6414961c9f2d39e590660a93fb36c0;8796;160
+4b911556d3679ea76bd1e9a804c69885242e1cbabbd8528f00257ac99562153c;3fb9338959e5d4a044e13758e3eadaabee62e6d7e7faa6435b01ec93d990d17b;8796;160
+22dcb7f915a4efa16164189f7037acfce1619dde9d3c6c1fb05e2a5c43093ae4;607208e2b3202479c361242dd6db016a9f97e995b31fcec37bd3fa03019a962f;8796;160
+11ee2840e2c0d2aaf2221fd780f702e4b93acd4bc3d7c8ef1d7b71290150d52b;85b6199176851983f27ac1f430524fe60ef144485c1a43b26c2d88fe38dd0b20;8796;160
+270cd56242ba789b53e19871fe6807a48646d565b64ec840797e8cd98b356315;b664a46654e15430fb568c57f2528b5c6d0cbdce27e9630adfb47cfcdaec4d18;8796;160
+700265a21178db3fc5fe19be622b4b531297a4a64ee6ee76193f1b14093ac8ae;49440d3bf5f61e2750c75398886a8a36c5d961cf8df79adf5d9ea53349e12704;8796;160
+faa125030c6ac0119f9369bb742098c204ec4d60139e8442510eebe7b5875106;0548e5b831e0479624f3f4040f075b1eb3913652c593933f28df7978b7044df9;8796;160
+a56aa2ff0d173f2f1e38abe84298b90c760cb19ef5eef07559ace2472214ee9e;d4b446ee21accc4a60906a922da9684d219dc8b0fb8aca2574aa82fb848f5066;8796;160
+d91446c282a6c2e4452beac2a7e5c720ec3c72de7113536f17e8588cca06b3d1;33d99ed0475bef535f646c06d50be702ac05e9d7cda19ba4af57a1cba20a6fb0;8796;160
+ee8d28bfe97c819704e9a474a3838d0e95257d7a9a92f588b9eb0baf386cab5c;69a39e04c808f65bbcecaff5ec2a99636009e464d329cefffe0ebc53a0798a54;8796;160
+4df3db1bc4db17e591de89a1c12b9a7643366881410bbeed087bea5578589732;1c7ba852e031d381378a75671c2d3d4ba29e1e1543cd931debd6590c6dab29d4;8797;159
+af34c2787407456b5aa620c611ff7f82c3eef43d0d72634e24c9ab9f7e3b3538;f2ee1c585df9832fc9ae28ef2f7eedf0697b11b8c789eedf6f8a8b298e7df4e2;8797;159
+7a1f8470b0ec5e84852fe4cd9b825fa20fad98492e88f6bd467d463bb7b37d29;c8d990bb76bfdb0228e94e313a3a3ad74bc537b6d571a21966cb04a635703f53;8798;158
+7628f64f7494f65cb145eb398db597c500c4b9837b1feab583b3a4d2c91ba059;1e0b559e64e3296934d98b11e4723ffd3302089d6606241d6d8906db1129d9f6;8798;158
+deb5db4c31af46e320e609f66518f62998e65b5cf5d443faa752bc90452f8504;17c35a03b1c0fd2d39cd378f4a2e6e6f74d54775feaacaed18d69b8c36d1fe77;8798;158
+6dab666eb0572514ad127a94e2dd5524b3c1000f99dc02719ba13b0d22c85c70;6ab18d1bef182301ab2f1daf419f95797a9efad4d977d1a88b5c10e6baa29d36;8799;157
+5a06c1800502fb512baba07039d8849a63454cb068bbe72246db974a4438f410;0093ba4af7df18f3002911575c525ee9e2ae3136e13e5b21e27de6c3ef85965c;8799;157
+2936ae7093be23edac2a7ecf9c5a12e9f276b58678ff40dae13a8aaf7b22d259;2e1f98d97c0b19a347baef644d74468fa44f8af185b0c3ed476129c62224ccff;8799;157
+d94094b1eca810a0d378996675d10029c0511c28aa35b8e67dee1922cb337298;3aaf8e81fa763019826d6f93fbeea007ed1d44b69b825dc140f5244ef251bc79;8799;157
+7100695f1b3aadb780e49f3d8281d495d7e5f9956dae3c4261f901e12d592d4f;3734dffd9763d5c182a0942d57001e5892d746726c9a88580ef0dc23ca2aab3f;8799;157
+7809f67ba64108f555b5e40f49f1db6862dbabc1263ce9f51340251ab1949fb4;d188fa6f8ac3ce62227a8ccfb30e79ddbdbba512132a12cef57b5ad263aa8dcd;8799;157
+a8fa2ac1993aa9245d0be9f8b602e8cd944f1beb459f704c20897339b67ee412;62e207a1749d92bf4b1c1add6e4756c122bc1fbed2d21ab9c070bdfbb95ec133;8800;156
+1b17013f026d232e8d57426b8fdfd82699a230c1fa12980c7163d70d45115878;967ada3df775470ea9b964838550946d22599f3ce16f05e5332528ebe00f5d5e;8800;156
+32213652248bf9ab8f736593e9d69ab9162ff9d0ec4a96a2a888479591a2514d;dc919ab6f05718e22a7314f81f9fc04137ed457e0142870dda6bfb386e6aee84;8800;156
+98d1a4478570c99d503409a81f2fa42df225d83ac1ded5050a303a757145ace2;21364fe96219e2d8adf0ce1278eb89ca4ea2344d8834c0ffffdde21a35171d68;8800;156
+1d9b07e15b8d640a1808796cb878dfa69ea70da7975b76b810428a2bcb3d707d;69e04f86d091df37ffd4be1a99a154778df58b9fe1dcabbb9fcbf6b24f1a0b52;8800;156
+c259822f266932fcda459e14fbc6359aa55cb8f9126760e7f9b1571d98cdc135;a40a0dd8b32241220d05988cc5a59d24d4f4577daded1e59207ba039ee64c31b;8800;156
+6222855c5a0e180cc475fbf11a94e7288023e23d2517484e91e1095f1e0d7d20;181ade386f0b2a88176657dcd68f56eb1625f7f831b7b5e5a0647f73748f29f8;8800;156
+b1f3f12a7f0114431b3141459edc6abdcf4cd8ca2166dbb4940c93a24ddb2d6b;cf95f7179a1e60cd11ab4f87ee7ae00d089a1bbb72cc4e09da18d80cec89382a;8800;156
+73fd2c753b0a199dc517926f95b3f1d5f382ab0de1c0ff58eb6f06eaa2f2bfd8;bc41fbaefcfa7caaaf3f303b58f783aa8f2198c7b2fcec89627178e5a8619373;8800;156
+e8176438548119136bc0171361a069f4ea874ed4aa7c4a7d720d7caeaba6d93a;1ebcc92ac2ec1d1dbf260903a790dfb99430373a04ec13b10e83602c5812ce6a;8800;156
+248a08b3754d40b97f8957d76cf2e0faa4bea86035f1c3f8f74f09465d8cb8f5;2c180f052aeccb7d2bed16d109ca7d4ab14c265c2b7d9936cecf4b43f54dee96;8800;156
+a857d983933ed8179286a1ef9e7d4b38ceb5b7afe23310b234570ffe0342416d;7144ae8ac19d931c6d9d6286a2d2159f66f12031fffd0fb0ce2a613a799a831f;8800;156
+86a5caf77f0984fdcc0a39ced5857a1ac0d9dbc99802e249f3b5569c796440bc;c5f8c21b922728a91dd27570a81ca3b6b6bc6734b6391deb1ffe6f681014d121;8800;156
+621febc8d7d9a8d81afe10ca744749bf103c954359d5e2a429344628c5994226;80b25839294c50952ecdec50256fc572305b351a3f209e2e711b82f168c3682a;8801;155
+89efc4c6fe6a2d6bb7dbc30d724af6475dce985c3adeabc4f903676801eec810;7587e3504bc277a3c57893de61012169a3848fade55b413cad4ba6d9dd631f3e;8801;155
+892c5e55f32b8940788a3e3f187e6d8a629be313fb3d5d4c7d29edc487aa21dc;94eca12e7bbd31778c2d4a162d06b02a441db1c0c077a15a7c4a26393835549c;8801;155
+783f8bb02dc633181e2f0c1be19598d979527c49eda3a9797156b9cf542a4ef0;2d24837f8c31d8b954cfb8675a4ee012c6450a7ab3e5f2f401c5be9d71ed106d;8801;155
+7ba583bba90fcaff303cf631f664b055cba7477c88b271706bbd7856488978a9;773ac8e305102bc138d9da3112fe617829d5d13a98fa4d9c5db3b0c278d1094f;8801;155
+e8710b3b617e19dc84d0bde710a251dab4fc354cfd409921ac28853bbae1f00a;24bd78d77af911a5a02e2b6ad1083a97f11fd56e3731cb96c2e53f13c3cd0678;8801;155
+de6e834e543fdb46a7b5c4da60a8ac6aa58c7efa4ae178511d512df5301660b0;2a71723810d41f59d6e8bb792c3c0fa77a1b972d46f302752f9cf215a0de7a51;8801;155
+f3c135aeab4409536c80e202d7fea6698b9c1a1a690744ab16861ece47ff4507;db53a9ded46202dcadd4f580279304ebf8c9cec6ec0fc4aadc0d780e00f126dc;8801;155
+e12f4ec642e269f7d8d9e87fb3e4ee0cbf570bd4f121ae7d546551ba1cd5f257;3b2a8bbbbd490fd88f1836c214418394c05d37129d28b24487dd2e863e0974ca;8801;155
+8955817868a01f713498d17dd75034b50c5f974c7172624a7a739ffbadd567ca;924872086ae51a38fa913d9afb79acdd82e50b97e8d23042c13839a1d98bd8d2;8802;154
+b22642fa5ac5ffa6f32ec6bcc70a481b94d975e1a7144390e5dc81aeb3e04207;054ef1356d3c264fca51e5b47f358831c35cda7511c04bca4ab014f7d8525990;8802;154
+90ce4c3c50e1a42017003d7d1e9d11d2c7756d12039f2576c406e878d37c4a18;21fbf4d3f4a8ffb07b85000b40198cd053bc637df32c8c41ddb1542ee6dfd199;8802;154
+d9ac835a297a0046b17c482efd0f8aa319071b9d56897b6ea38a60ac8197d1ab;ec0297f549e6bd37d12f9a2f72a0a33695f0abc5cd6b8d73d1bb16810a4cd9fd;8802;154
+c492976e83bb594dfacf835cba47b7dbc1e63aa6cf561833eb664efe3af0626c;e44c8a4cea2c5949bf6e4c12756f055d5c886e1260fc7c009df00044c25970f9;8802;154
+2ea24f2db03b9200d49becc6e1abe951c7a6048ad6b22f97a7c8a09470fbfd2e;49c745efb17e046d4bec47c03803b5ea64e6492ef125653596e196b5402e29cb;8802;154
+4a5fa17f5d3fb8a0e0f4cbe46c1e02065e9a150976951fa6f3ffb7d8baa0b178;801138ea1bbd8dcb6916b1dd6fd7cba7bde48d29ff02b06c30270ef90697b065;8802;154
+a57ec89b5c24931b99a31cba3a064b2041ef21b225a3f06d242b1ea5b451c62c;5421b69d59d37a1881d8d7ba6b8375246c78bd7a0366d5d2f60667a48d1ead9f;8803;153
+a493b423affaf9bf076d0c1c67422a673d0b93019dd246883e2373ccbf9ee761;a9c5dbdfbb60593da815c824d543514630f8561dfea30869f01de106ed477632;8803;153
+14d1558e04417a5ba72b7967d83010e249f0c620fc71948e91e818bb08ebab73;e3749ea3b8a8fd4a23bbfffbdb72c43f8ee91809f1ca2bfbbde56916f831c4a9;8804;152
+afd88e0ca4814bcc90a847e98aea28ca639a07eb648b30504323dd44ab9fea34;9874cf1ff41307e132b560db5928e97e08e016a49ac544d9eae3f9772b88ab8a;8804;152
+01359d9cbcf926ef9e510ce1b605dcfaa263f8889e15fb97e72d10597eec0729;bd2438161dca094184d4b2e05cc180f57e6cb8edb398bf8b0312e61d99ed8e3c;8804;152
+ed89a7e3c4f52aa37a24503db5ce82047561a6cee3dd50de5879434f008699e7;fc885957771fc6ed75a7e9a0c4c9aaea93d2f16aeb0520a46d7ee1e4ce6132ec;8805;151
+b4fea6d18895d87b5c7b52b7c33a9cea48219a7fe6aba02c1a194fe69e699474;c6b9b25090a29179c0dc7bd07aae875db3fca35a0a68a878b5e1313346e2ec25;8805;151
+c5578cc211f08d7d24cd7c2b6ce0e83da41bd4850c824757c366c026eafe158a;085882187904b4cd4ff6f22bdbf00ab4656cbdc81cd7560e0b342afbf8d94451;8805;151
+13a2f1e29c6029c02805e9fc68f2267827764b201932fbaa4f87ee400b651248;bc092358fd6372dc36c7d41b2489d75c0e3339b5b7341446bea57a06fe24193d;8805;151
+7c8fbacc44d7af94ee47c8f6f4205726fb795488b8efc5476d30104a44d8477a;67e78d798a1ddca9c5b9838a5daa099fcba2f9148cd07a2d6b6f71ec2d490309;8806;150
+b0357b692e75fab8e2651bdf2edf4f7d2d187c98ca668076304f25626cdba161;6435adf0d50e9b41ca76a7f73650b99ebd6dab717d916a7c8ac2ebaeb4e36f3b;8806;150
+1aeef8b0fc91f3346cb2da296532aef6e90870532d62bc770c60e91a939a13cc;fbd73955a67424e6266d7ac2b624f864a6491017a1d7fee24585dfa49dfe57ad;8806;150
+1d32cc9646407008ba7a0e54dea37e98c3d37989679940c1ed35e76c65e5dbb4;20b3800315855a26bbd7bc2dcc7987b38ff2000e3d6b5e23310890c2065453f1;8806;150
+1a328eb378edc526f44f7d18f0ddb0a6be6687307a11637b1e6a99b7b902b92c;6b3ca847040d407985573a8711e1f098b211903ae7cb0813db8a16296f8688f2;8806;150
+7839e473929ae08a71dd9ad36102e3447f2e55cefb653f129c0c14989859ef49;6b5bb26f6db94a31e80045312519e87d4d09c2ac25755f9d4f1f6be72c748371;8806;150
+c6747423a51347045b39232027870134a13edc494dba945637acad4aa2150066;31f0e075dad300c50210a0bcd915d7b895bb397bf0f54481cd2fbeb843740072;8806;150
+d9516c729057e5bbca9a7bfed83527918408b694c962aae473adea240175d0eb;a2eec57a27188394b177abc7f954b1fcfe6ba64268e71e5685125a56512d477b;8806;150
+c68baa478723f91dddd329619041f94a1da13e93759368b034fa4c51d6402077;ba93dda9bc78bb3f3e740319941ec543bfaf3f4b231c68c24fde36c513091a1c;8806;150
+b5f5f9d90adc7161991d0051861839adf838f7c531ba26656d0597cb055faab7;7f5937bc50bd5b1697eefbfd253d673ab344fb0c951987ff52f322ad553bdf23;8806;150
+a5b7575a7b2ec3982f57fcce39d3b93c32224813f5b6c3388b895d10054b7fb8;ade81a525199aca3c658bb6a0de87fcdd0eaca47de8a6928813c406324b96308;8806;150
+0894c2ab8e3d900940df45cc076b54c693888ea9708205c753f8556de0704a49;5ecfbf3d960432b9b25870ce7d8540658acbbbde6262b21ff0538d1bf76a4469;8806;150
+224a87b774aa6640d08893bca770ff0fca31fc255f2f05b9590b4a21c79d3513;4bf34a369701a8eedebb0ed2aaae0679dc99c741ff52d2153a3773de1bbfbd82;8807;149
+a8d4965b8864733c5df4f652ca328d21445730f7e825cfc95e9b8dc5f910fbc4;558a496001019f28345f1cf7bc746e3d8deb3d22a20b02ce0b28488156d2da94;8807;149
+3246dd8a59eaa9bda04837f5b8408b196b173bf0aa8bf24d1b1c82bf5a9f9f72;6b01db032906b0a04f046a57bf09ef5856a2f99d662b1139773cc22b4a85a51d;8807;149
+b157a0c503c284bddc16a44904b8ca8cb8485bca6ed116eb2ad34f1e0ac899ec;18c229eec27e5612305f28a720971f83176fa5b216f90b9ad23483768cdf5713;8807;149
+cb042b1683c61c89ffd6d93112a2d2a416e47b6889df8f444b9c17cfe3818258;6564bb9479b14c241865b68e28e3491988534bf6e5bc047e825d0f00f6b0b2a8;8807;149
+afb3695fb6a61a5172b5a2a76d12412022b00c9e91093f66a2f5afd351e6fbf3;49532b0b4f8eefa5b1ed4f0d952b391d16f04e99644769a154641ad156adbf8f;8807;149
+da61536fe37095a6a9e7bbad17daae7621ba78b35ad9a1d4a34dca145cdf7294;59d434dd62c4e766c1c02045076b4ef42b06f5d9b29eaab8c812ea6783432da5;8807;149
+6c47447bd0aba87fbf2502f13b65a0d19e9d02eaffeddbb57fa5b8a02790e932;6f152c724bdf334e136ba5fcd181ae0b4aabba14bb0ba0a4ea787fb4951db322;8807;149
+e4f4f9f45b3cfc9c3748a53a02c00f714bf1eee852ef5bbcb5a012e322094636;98ceae8337c176892c73912f5cae6be943177e19f16eaa7ec04d14c8e457b118;8807;149
+1799db3c716254acf3ce7c2aeef833d076f87956d2074eceaea13ba9bdf37325;f1b0dbdebfa1a271efc70f26f1e45bdc943ee4874674d89718f70a112242a9c9;8807;149
+b11e6139895355a11acb27f767794219a021cb9f513711cfa5454c6a296b3aff;e0a42b068ddbd6085697e45cd469c309302b86472967f08a50b1e66918159981;8807;149
+cf0adbbdd1d0a4ba7741e19a796e59456ca01daeb7fb318cf66853417e338041;0b2dfc736e4c4ccaa848ee41688ae3a905713041daab2e2b299d2232058d6992;8807;149
+054ef6c89489275f760b8c971fbd99655102d5464816bcc582fe1f17a89e8372;c3c475c980d9b4586a7097f184b68923d4e12743be21941664e98b08a0cfea38;8807;149
+572d2de3cfd2ca4588cfc1067e54bc556541787d864ac122078003db297343ce;7e54ff332d294d4b2e47ca52d1a8f550c5b51801c94b63ec3ceaeeeb3a7c9afb;8807;149
+87cc62809271e1fec4a6c327b39e1937fd6e474e0b72db49dd2f8544f3be0504;937a93ae90e0513513aed73253f2e298adedbf48174e767da5346cbf6cb3c56e;8808;148
+2a2309ae321d35a47bb9876ffbf82322333d55e37d057e73527a260f5cc32926;1afe59b70bbb2cdd09c3e8de26f878614de07fcb7aa7f76fe2cc93b763f344a1;8808;148
+9c6420315dbaf13e53cfd19de2098891d552cb438a5b737ced6b5aa481380242;fb192bc4d78888adf968c25fa06a4a0dd6860505f385d1586582a942de8230e4;8808;148
+f48ee3b08fbd80781cae3ab76de956db60c1ca69c3c5cb61c8977ffdab378629;28926578e4590dadb2593b5a4a123bf936b2b15704aa0c91b597dd2c1eb671d9;8808;148
+c2bddc70b67cbd338770a4f375892fa2ebf2f72fb4c4b502df882169b6b40953;647626eae1383a22afa1fc79210be4a2e4ecee4e80c81fd932e3fa9421810bd1;8809;147
+fe00d404da9a1850da05960e6268fc3d2b3e507d858fc35f9db15ca9701c5cbf;ed935a5a6689929e0d437d327131252392147c274cfd2bcc7991767a9a51d2ca;8809;147
+6799e59fc1dbbcf350cf31168c6eb9678f1c53cad49b195f382dc16afd89e9b8;edbcf3d44a5b76ed9866cd687384ffda84ab27107ce40cf256535421c1b0489e;8809;147
+3d2382549009ab3f39a6371e50c25878ccbd7743102219bf31c171adf3e08917;cb6969eba7b438de892b76fb9f33ed1cfc6482af43cbef6c56caaeefb52d72f6;8809;147
+9f3b4b7bb7bd40c5e66d7234d95426518e11eac39da507410bdb9974ae9f7ae6;6a62293c39444106bdf9d3d4ebedcd98f038dc9fdbb399c628a1879f73da7ce8;8810;146
+5890d064b8915d10d9a8d03bbff7a2ed3fec57dd7df8f7fbffbf1115ece1d452;13b2a62f75b2f2d55ad3b1004989c55bbff1f77ed63fc4808270c265b5ef3ec7;8810;146
+c7932639ebf9b2d3fa157fb8a84600c5ac239b057091faf6d37f9f2449a27b25;86480062f4a24a52ea5aec0e058012e1f9f40b5bcd446ef24c14a4de8854094c;8810;146
+20a7db7640b086126b0bc8d47d2509fb3bf9770e5b4d1067a64b1e6a732c9748;91fb1678538ee5ebd65e36c8827baa590b60b4c85f3232ecdae87b4147bf8efb;8810;146
+b484122ed5b113b0c83298953af76cc23fb9e5b0d0a5c2c093e81f9bc0cf7a4f;92785555e73a3ca468006195f9085be7a1b36755854a59c581b0a7febacd8ad3;8810;146
+3a4a4783c6b8458022dc3443a82a750b33ca7b76b8b4974d3dd5c72716892441;ad42f4111a3b22149564ae7a2ba3255c600414b8103752f66a2118900ad4c6b0;8810;146
+88b731c4e3be59a7d62747c15634d94adcfe6876cedc35858b7d44d9b6f9e69c;aaca14f83f5dfc464ed012bf02cf40af62cff494785c90e6ee890782d7d6d162;8810;146
+a244218e7f29a7fb7d084bf742695115719ecb5f8f55d22750c9007336beecf5;63863242e75af9a915e5fd4ae98f8445a7765511a1cc763cbbec9612ce776a4d;8810;146
+a31e8efc6814092eceee031a4f4a1f09e25081300da25ec468621abd66510f6c;223bd6a10597173349dab5ba01e7283b4b476f6b93654723ad520669ca7167d7;8810;146
+21e84211d15f109e9e2e2e57723eb29c84f79ef5d3cc3feab275f0039be68490;51bdc84c0c83da588ef2dbbac27e170aacfe4155605916a6e6e549066aa75c1a;8810;146
+7b13b30240400ba4625916841e507e3bfb1a47d33e043c15960df2bbcf8f94f5;9d3ba2a42c636a98d621bffcc53c87e84a3e3d17bff7b6e13a7148bd45a84dea;8810;146
+9bb99c8ff9eef96312cc49096c8c749f6bb0fc47444bf996136939f5de654386;b23d15cd82eff0990d4571f92a5bc93e917396cba024274e2ae2e26b08daae84;8810;146
+47beb21c07c7f78444c59f9322ac318d16324cb302ae16787ae4ca8c16cf93fa;57ba0e62ddc77bcca6f31df929fcc7988a2c5f1ed4938c8f9234bf235dc29717;8810;146
+16b520e030e250bf381f383966cf31ba08b532a8aa33c7d8fdb66eada0fe0466;b298e608542aaaed7b6a1536be6711a32891f81371e89274039f9bd4d046b132;8810;146
+186c6eb61c3e0d276ccd8b56ec2fa4175aabe557ecc2fe3873c4b5b71ad02764;8c236af215ce9dbafdf4b222149e7eaf7dedde6b73ac49377b28155a6a4b3f7f;8810;146
+f9babd41a4abcf63154929b958623bc52da5b4d377f2725badd0c820e848be94;a874a6c34b744baf7cef16138c4a5cb9dbfd947646565700de62f5a26e8a59b8;8810;146
+7ca709081ef9ea0de9498c08f315d5ad005507bbce4b6807ae0f3e2ddaecd87a;b839fa1b0b82393af70b1f108e4e4cc3c9e5dd2256422d059d713f8836730f03;8811;145
+619d7874a4212e68c50d3b61d1a1fe82cb4771c025aebf15d62ae9f44f05b17c;124958de1b26d07d66bd9ccec760bef8952b0e6dee0f3ff262cf248a5a2a7ad0;8811;145
+fa17f58cf251ea81567466f937c788371ebd1cebcf2cd539685dafbe89a4b4f1;fb4f2aae77e1ab172fff9a6c9cfee0d1dfd669d0f04df21853f84800e616a58d;8811;145
+d050a9488ccacbd97618c658bf17f2cf9d2ef2a7131e382f42398f34dc2110da;24d6cd2bf8ff339233ba225cbcfa004e5bfd1c9f07a4d3a5d10c814b72e347b4;8811;145
+77321fab210573c3df2e9fba1a53c55e37e830075073f35ab240cbae48b867f8;afbcc7aeaee18e07bab5502bc81d80a88c19fd0499c2a4d1db0369b125ac959c;8811;145
+61ee04726eead0bb218954ae93c25cceabcc1887f18778e2a74864c8c25495b9;770e6e611e4ed2f32730c61ff23659ad5cef7b193279efbc0abda48f911b03a3;8811;145
+14dac0b7eb99cac19935440972e9571c176fb55d4c68810094c3e1b34e2a024f;ac64cb44922299d2d2c22ed0ff739d5e343de8268fa1455fffe2fd1ec036ae28;8811;145
+f7360cdf7bdcd621395a605e5c5a0b79be103f1339c5f3d34cac7630ab92456b;6c03bc0b6fada1decddd1d58de93550fec93daf2af53d6398a083c4497fa7850;8811;145
+50ef36f9e5ee6282dba139410d9bdd36170abde853c6083c6bec3a93b6c7355e;f91e89af76653bddf564c4e961ebac912d05dafff63e15931f1033c3d4a504db;8811;145
+42c45bc9e57b1bf210f359a4e8d791e082d9e25584b7a59631898aaee2751643;c94e9e0a811b7b6ea4868ad44f854d9d022ea7462638e274df3b56abdb7c5b6d;8811;145
+9ece54f89783ac13a427aa092adb819004358e9f16220ae165ea6fb6c12b1992;607998851457fd743aca9d94d73342032e372d6d91b954992b49034fb173f6f7;8812;144
+97ebf720f6f646476380391b46f8931b07a169de1976323898cbf4e2614123d3;6c6327404b7e046559567d439d21a2a133c559c93652b877d5f58527cc59c88e;8812;144
+1614299dc8c10c7ae9a4a522fffa51e1b1158f064d7b0f6bfbd53f78458df29e;cef1eb905b6db4740a74136d9d9735950dc6497c71695573cb1867d87bfc9619;8812;144
+3e1a30a939d47b6e804c98aaea3abf32e4aee5016f181bad44d310e87768a555;dbe11474e6debad1f867a523ac4c3785daf4fd9639efba3e2678b99cbef68217;8812;144
+6964467176be20b98fa12c0aa7f4b5cf742ecbf6bd5732dab3ce161d8a4d416e;338d23ba9c54c79dc22d5a487e6846d4ff94c9df9b0d22de59e64648ba4195a3;8812;144
+ec7e4157373c73cb1074ea7a3ac8bebf0690bb8e4e506a32bd3121bc33db331d;75c1ed135d7ad4aede218f035ea3ed5fe775c1f2d9e528dda4944ebb8c845d0c;8813;143
+d860772575124c7dbf0a89ec7353c77c3a9e9605d5efde5b929aea22efbc90b9;35d3837407d77b77d3de08f71fbf3e59cfeb0e3fc0ebf0a7f0009dcb41d6fe36;8813;143
+a608f0b72ef84d3bab29753ef7fa6d09dd9f5bb3f3821c47c5f91d7c2ad99cdf;1593b1fca8191d7b1e05e410537ee678465461968a2bcf72bbd4252fa98cd30b;8813;143
+1bc26c3f9a0058d88b4c6ebb0cb80bf506507f81215b49961ddce0f44ffbc792;02ace5302c1447083d09a01b04a08e115cb0394997076afad8ac6a3f8c256a88;8813;143
+e529476d42015bc0bc6ce9caeb9405897e27aa2d9fdc70019d8fe0e80d9d14c9;32beefe9f23e4b375ff533eefc077d37ecd2c6bab2d3548ee4bc20b253c8ca42;8814;142
+9c77dad2f007e450713c7ba068d5e33af6bafbdc28f6fdc71481452d174a17b5;b884f7672318bb1448a108ea0225b0b3df0f2a5a8ad5e8a58307bfe699a803eb;8814;142
+70e8ada84a06c7016e7039ce816d43bd44e49b07ca0929bd55cd1610b501cde7;4fdfc4bf22f1b3a4ec21c4bc8a521210531a816d1c1153c8fc8618dfda31b2de;8814;142
+af827b9365c7415e51673db96cffec344e93006c8023750a8108d02c3b6ee51c;0cdeae0ff391b8f89f140bbc9e448ee04c6310040b6535a252040bd4abf7144c;8814;142
+e66c049f9a7be59c9c610cbc27f93998a64c0a28fe82b9741b173f9d1a07540d;6eab08e3d5f23018e778084e6a215730042a627ac148d8c1fa140b5739f8a791;8814;142
+ceef3384998e71d3547cf4c139c26a3b0e2a77fd91bbf3a88ce705871d5b29e5;02232a937969cde3a52dd605a184f6217bdb513db741fb841f6524e1569e65b4;8814;142
+a5714f29f3cd34036822c0ec71f3ba4e2f6e7ccea058d6215f2b7c05db239f67;0bf1b953c64c29cbf647267004d8867a0159d8d147a39e0c009e0c95abe0aacb;8814;142
+b292b6908a0626fe7bdb142f74c35d6d9184797a46310fe8dd5b108a8555e822;bff560822b48dc0779b74d8939ad7ba7a142a1487ec803da55f89a0482dd6ebe;8814;142
+9c81188c03b6ea3f904f35a0a92749a6ad006517455197709e179ef061032fd6;71c2580f1748397e3cd7b8d71d6ccbcb0238dbcd21156b6227af9604c2edbf36;8814;142
+8f490b2d7dc23c5c0f2d57d51d327c957c0c11880037baef33bcbeb9e50a2e25;5e8f459f83f0fef0aa0418fcb3a8a147f9918b740c4ffc5a8845d64a2b6d9a89;8814;142
+fe953dc164421805cae0abbe8a19b0902b0ab6926c23729cd0b21024256cbdae;8c509476730d51862d591fa5f9c44e2c3b62580ce52e56098df2e280a6b9056e;8814;142
+9ab917f64009c0b775be62c7fd790b76df6be1753f86501be020fe7be87fba4f;8fbf755fbcac582cefe2c85e07c1f2689f1171a6820ce43799e933d427f37278;8814;142
+e2468b45c8800edb06603531cc28ab8c29df27cc48ec80beb0b6711825ddeb13;b9dd89d748bb64e73da488aec691dc4970ffd12e8fdbea0afc027b2774a853c1;8814;142
+ae427a5cfe516c3ef41f38bc9ac3d6120c17c686d9e0f92970e0614f40cbd4a5;acb9f4ac57ddd3400d5483ebede12d8cb37677f533358b131c583c123b71967b;8814;142
+60b4e1b73004f837c685f94404c97d4a150c0638931e79da27b59b2ca2c6ba08;6754c276dd95c490a3562e32279f42a545646ca2c76d1f1c99893c6286908a03;8814;142
+4138ca6521261574e722491f8f534fc1584eab7a1173fd17c1ae8343b0594734;54d1d0220c56a0d1ef47b61f70fa2368369a79965cb7089d4f905a300b7e5994;8815;141
+797d8b793685d2ffe1df90aac3aac258abf3b53ce4ece38c7299c0c112909c7e;e03d7402a456118d1d823f0d36a1288a0ce3fd666f296663a14d644812e26fbe;8816;140
+73024d9cd36d9b849d7aa3d059e46d6d2f8d56c7d19b39ce66880b49acd236fb;0055e64ffafb4ae248137cf4277af8a897969194c5aa233cc26fa62e357820c0;8816;140
+b1dde43775d7a56faf140cfb9e1c6a011b08aa1833a58650f615147569f10902;6ed01f032d8da62ec6ec95586576f09a2b38893ea7a0ba46802585a2eb325929;8816;140
+523f264445a03afc600b55525a61d9a252b2b718393b6e940adaddd565d6908e;34acd140c57e9757dea6fcca396637d6c4f3451a1ecdb8d219c223a50cc7235f;8816;140
+17f1bc06482d5f7c85351070dba89a1b8dd46416a606f04aa8953020e41a2a5d;bcaf0544caa96abe205e1b98d660f5f53a7f09d596ca8508a5ecc9917ee2b93d;8817;139
+c34ba34f211a982576881512998bf9b447f606c59eda8adf701551ebb827e801;aca02306a205cc13003ca12647ba631d8c9574da324f361e2cc5591906f18c5c;8817;139
+ccda321623962002012c88fefe42897e07b1f9e5beb7936d80bd7d6240d244aa;22dd5209bd34b0fbca20553bdfff2205a41ee3a9a18db5fe50cfdf8ae4b96583;8817;139
+75988205565e0cde38b700c7e56bdfce0eaf0d56e45209c6a6fd9776291e45e0;20e7ce5210a1b313f1b8fba1bf37c71ae5742ca400ec4ffa8841548b5e5a230c;8817;139
+039e6811477d689b02da19c56572fd68a61277bcfc59d249f30c316ea3140a91;59e648b7cd3c8537f8d7cb1022bac31c06c579b95433e870e580ac0b58635a6e;8817;139
+ab1056220f069480cdfcb88e982e075bd796bc5d338b9e9ddec2e6501f81cef0;c122ce20dfdd6ba9c1e9643faf33c88754ac09f012be5b91b63f29ba6828ada3;8817;139
+86f9763ce817993b9ebfac52d1e622df8924ed6878c56047dcb0b553472d3d19;5dde2a2a890df9c14b1ba142d175ca69e911c8db5bbbb976bba0c12c6e838387;8817;139
+8932322676f6673c2f682d8233f2945d0705b74ad539f1a6f4a8d9250f439ae4;7b075dd62cc1680463d5c62d27b791b0c212ed8811ad8e44cfbfbadc7fe6815b;8817;139
+7a5eca7402cadfc7921f82650e4b20c7dc98df46751326787b203519f011d5a5;345ab53ccd81c6015fa82e1b2082405c786c2e0dbe30be8485b9ed11e5896484;8817;139
+eecdc0c6d142c8459eb4448e40b725b7ab087d76092e6db455c260ce757259e8;55f150b7f8f26b82337f560a609f6b1135186e0d273792d913b630b32f77a8bd;8817;139
+b572ca8dcbf33d06f4f44b3689936c60473de14b4497ea89dc6f96c547f11b81;314020b88cbedc8df61fc304887caa6b1f416c05006f90fdec3f6262b8a44532;8817;139
+bcd56e863980c889666028fb137f6141bd81b3f25834c768f98f7b1ac9da3445;72e65ccf4bbc944042c6d11fbd7fdf310cb13d05a03e90f815e8f6a781b285d2;8817;139
+1d7366c325145959a4a36d3286bb9f655555bf1c5e4a99cc6dc74ef80566c94e;88ab9fcad78a5377effccdf54ef63f350d3e1ba7988893c005580a4527d69e80;8817;139
+f08b4c7a15e39403d90395891d37014d9b2816ab7d5511b8972449a5c84ac502;fb6bb5354572fa614495593e578af68c1c262419d90ad9374526af825915d394;8817;139
+96faa7ca5a32db815700c855cb3e544e435718c647ecfa123be72d9f709766d4;6d25bb6afb4442c5bb07d3e88dd67bbb23e55d987c2b7d024fc9d2d2ad79da1e;8817;139
+f7b7a406c50a6d75cab9e5786a0005a08b48de49eed2fee8b03815d96b1af7bd;2d85e2786d33f480bf8c07d0500153b9f25f612df1b668f3fa9f0a2ffa42db07;8817;139
+15a6b4815cc6576f5050e94a49342ead6bb5d3579388ef2ac583b2370c76527b;bd74d22e64cd2ad2e5acc4b2462e720d518acdc04d20fbe018e97cd9d3d2da60;8818;138
+138df9dc01527a6f610db50cc9fde74bf008171df80d6a1d0bcd17a9ac69cdfe;cb71f6f82ca4b5ef39e99b24b5c8af53836e6991d060600a505526d097f009a7;8818;138
+9e82340f6f5b8f036b78332c087f61218b686a4478129df0fda141e54fa0e367;ce0322f535de6c8a00d90c40ba6c0914e77b3552e3fb416a62d62158cfc17cfc;8818;138
+48dda161e159d56f1a9cde4f063df1194ea8d9125d640329afcdc5648c53d438;9370ce79887aadf65bfd9eab91728ade8fe539a7b28b50e3a72c531706783ccd;8818;138
+5ff8ecf63168487dffb7e1923782ee7e4bb9d5e86641958b208cdaaaae9d191f;da6dc22205c53a9d6154d6f9066d0adbf652300f4f10f2850af8b0f44692d4a5;8818;138
+d05960f02b3121fa14c94afe1abcb04693bf859906b39b9fb6ce3dc9a75a6396;452ea7a9ee36b9dbe22cb9d8907aa6f14a1e07ed35c8d81083402a0816afeb24;8818;138
+b9d8fce7e06f40c53acac07951f89ab32fc209d1e7bedaecd49ffb236d1d00dc;c232ae166ff784a4742c3ecaf5662cde3cf3de1041c2b0d1adc6bcc5dd384940;8818;138
+f3a37a7975d273ea39a8d0a741cbac5937ed2214b0d43400d701644e569a1aa2;1508a3459f55af8ea8579b780b178e8aeb8b047e5dc9dd72495a7ec83035d394;8818;138
+ceb618ab64184ea900562611e86d2399aaabf5865fc617a044559afa44a377d4;5940d1e511dcc7bf0717b623a2f10ba247255237c089e07e95f919a573f82909;8818;138
+6c17c199c48d33304d2aa8e508958229a80a9def0f81da16c3b71ea16e6cd501;b8422ad891c9a81b0e1967987a4de53dc8f1e9da75aded2f7cd31e89947b3ee6;8819;137
+cebfe223273afe8f5807c3154016fd9d8ba031c7d12dfbdf6df5771d99189964;b7549132283b330260d64e1a744054baa4f65759da1dd099737a3e8769c4b26e;8819;137
+e6a924856310f769e5fffe99f1a1ebf63e5b48e0b6c7f1860f5e5e67d3704363;955c16640c506fa391bd0fba92559124f5774c52d55c88d93f26aa0703459ea3;8820;136
+0d56684c9597bbe4c2df7dc7ea6853f0e534544e2c9c002d114e6e542ae10359;82852dec5343a4046af96d7663a669d0d5aa8e2daf4a768b33a870e2f2ffa863;8820;136
+9e47155e67128aa0a3c35f19d22d7a94fbf024083ece5c2dcae8f4d7872672cc;c6f1d9acd7fd553687ce3d539f8b79174ccafbadaab1a5afb88de987e10171cb;8821;135
+ab27f8618cd8d35f4a7556a511de02631f1f446af84b35e3b69f45fc2bedaa9e;979346b95f3ade2380e8ed5e991f8e5cae372c0f6c0c5876b6388decb0a2b5e6;8821;135
+6b2e9d76383aa8f9dd95bcf63b9d5165e7ef165ba2ec0cd704a6b675d72a940b;85824016380374055866b4d8eb76a0cb857bcfe3d4e8f0841941e2feeb1aace5;8821;135
+ec97d3c700906d0b9123b85658390032b1ca9b12308d0992a3b406db5e77058b;fac12f68fed12a6a58b0c7a338d0615cfd9c1995e7a58957a6a9a706db469270;8821;135
+aad8863dcec4a20f2de4554c4f168f54d13b4fdf7e62555f16486d95d9175409;647c9cc373e56f72a1a46a335e5c881e58b653fd6d7c147bcfe226fbb55a1e91;8821;135
+ee58cf6ede603ad2e3606a107d6d55d2428e8e81282ba5919a746965d271934a;ccfb449e4ca356d994804b9f69985405b73b98af1c93834a46556d30f9bd1ed1;8821;135
+a731edbea33fe167a4db475792d5d4d8b29d27d234d38d9ac45373922f2ce91f;a285bceca2948be9449e586f6cc8e5581f2a08f7ad27f63b94a7667098d73619;8822;134
+c587011885a590a52a9c2e42122ab2e07815bccbefc4bcca22b56a1f16ca00e2;52758c8e0131b60b29b074291e933ed3828c4e5a8570863f8ccadc247d924183;8822;134
+94313605cd4efd1797193eb9621c1efcbce748c7ab8c32876656e5515562e807;f68b949f16df5938280a91884132678f4dc5230ee855832e18e66a95461fc946;8822;134
+be557d2b61956d0a1801a66219b37188c0014da9a7011947a1a29c3649511f12;9e11be63d06437300eef556b84f0ec973e60eb0c2114b36363d7db0ff49dee3e;8822;134
+85fcb4377419f15e70b743679dcb0c3fac7897eecf4177e02bfc163a4b40c2aa;57132f18210ce4933261244f7d7cb49be96039f74137180944c2a525e8a4a63a;8822;134
+1eb382e4d1e089a8f2b8667e508423f31faea7f5b36706c8d0bb2d6599a0a1fa;bd0b06195f9951a6d4bc64e494325c3b66509da5d8ad158a6f3f30cbbce3ca8e;8822;134
+97a3399ca6e140de1cf14c9eba66f56ac116d5f04436c94dea7d14948abc6f57;25282b12d970b4439eddd0ceb8dcb98dc22fd1390e3c777ca3b15b458ec65004;8822;134
+702133b3e86070620efa109e265aae020289930cf8686cd9bc22f52737e32963;77c7cabb81c5507a8532f7095b248f4ca1c8a77a61302cd4e09d3b6bb9ceb8f2;8822;134
+f7da1daa5f42b33bce1c35996f9f312c90e95b9d5a8fabdb2901dfacc1f5d0d2;ea687b60db6a18e1b5c33cfe3386ce53be39dca596b330359fdad3973b725e0d;8822;134
+9764f15680beb4c1d18c05f7eb5b45214b7ab7b9d246bfd385aa0ac62be0e10a;81d706def1ebb737fb0881742feaa2372a1e8bdfbd35abf3a3feca7acec41451;8822;134
+33ed8c91a123d161b68705337fcb5c6e8c8b1d3091162d6b095d0b1c63ffd8c9;18a33ca86a597bdb2e839ba02c6196ec6d43934369339617b618d3134a28c6c3;8822;134
+b19c93de965f57c9b875cc588464f6837586c34c629714ea0e55b5c0cba5ec99;9c5a0e00565079f54e4ff496a7cd88dbee247dfc6946da9a38fa87d998d8d5f0;8822;134
+cf68c2c66b87630761beb0f74aae91ec00f05b37ca6adbd72e1e686c68100164;88c1dfe8ccb3f01a207d98e2ac8a5f2d2f8c5b068dded4c98076cfab4301987b;8823;133
+b9e9fc02f3c720cd500bd69e973ae7ede80002b35db7f48713f71bf41befdedd;3d2107c12076e10f86713630a3997d136d247f1820079c18951833bab2901497;8823;133
+e764a2a86206871a7e30954f66dce47506e0b08398a844252e0753536f0c4bc3;9a681f708c919fa773de2a130cc2c5a0905797ed30608dceb3e1a6e43c3613b4;8823;133
+1e126d5f3b436fea0c2c079fc371547a594a4afab8fad2b57bce999a05de67cc;ceb14bcbf0dbd43ceb76dfe38c8b62ac8db329c3ca497dc9bf5d1fe97377b958;8823;133
+27920c30df9b2237bb0723d6a31aa057a208d43b6b79159cc5c074251a051a58;8b51aa53b911f71b618cda98ce99744bed9e4fe97deb9f142278c059988ce8de;8823;133
+b7951cc123b0d35276baa2585fa57c0c44c23605b7c70ddd43f22194c1c846a1;9ad19279ad3276c4b396a82d6c4f19ae8f937c87a979c0a930b199411a7be0a2;8823;133
+005b37ff862f0ff0abc7ea8dad1ff5e6b3d73152f9319e09bd2b5d70b9c40e1c;4e5bb840add749a54b468851a6200fe036cf73d33de242e75cd9949892ae0632;8823;133
+d3c41a80e4088c6639b4e96eda5b0012e4cd5d8ceef950cc82b1934f07820230;b8628683f26bb8ac61f297df946837524ea42c1e49d87edd107a242dcec5cdf5;8823;133
+271d85d78429f68902d289ceb9559f226c1f70f035bf6e60eeff555b7705e6e2;15a22d98643b0dcdb64e7eab14cfa2d8555cd8924cdafa7089873e428c2369d2;8823;133
+45509caaa4ed18fca53c6edfa88d0cc578393aa1a4fb32b3825beff7d71b237d;f55f3fa0246555cb14006604345f2ca451bbb55884acf8de7f7caca43142dc36;8823;133
+cad9126b67cccb2786f11c79e16adac687956103b824d95c6450e5f9f34c608c;b261b58aa910a14f7b72589da76b4d7fac1d61a1317e37c55499802d0a365fe0;8823;133
+a473a82194b7994ccb699627961afe46af65269516dd9c166ebb967a7610f25e;00726c27f222093ffde75faa0f7c70e778fa53b51d238691c26305466005bf23;8823;133
+13fedf0103cce3884181f9b512b18f95a3107c89e3813748d12dc1c8d336232c;146425c4d922ea5a1e2566809fd8bc87d2a2179fee66a972217fdac124d9d7ef;8823;133
+0e885915e2837d78ead74b17cfbd745c27c39d32da06b35fd3f9505c993631d3;5684b20e36a4389491a0f181251eede3f06825ec47f0daea01661b57fdc2a792;8823;133
+ca22a7d4998ed42ffece4b65d4d7d6e81eccc6cdaf11cea4f0422b46d68cfd2d;f8c84f127f552bc078a3b524ec7adc772436b7e0b5edbcab3907aeb5d9a3ddb5;8823;133
+1e25f2911aaca2f5654631d507ea235615c092e91b12d613dacbd1360be02475;38c295f0d8006930d329c53db739e6eafa6e92c2ae376acc2b04ef2f3b06f656;8824;132
+288af3a519ec45c264684da04861e4ba16f58c074a1920265c352f40e3332c36;a015a4643cc6d4f323643a3f99e7a27f87edce2617bb2075aa8d9069d973da03;8824;132
+65d0f7d3b3c7eac016597c1bdab4609ab9226865f8043576f23bbf140f664334;5b82b2aab3b0c4f062e3caacce574ea6c31cf12c4d2b984c709e8147655fd7dc;8824;132
+f1b4e5d92ed5fff6dfb5ded49c11c9c998acc5ae97df404398eb013d52a9246a;7e0df9a6126dc91d372452d42c43d09ecb5157a577f3c4085008636f393c651c;8824;132
+a62beceeddf1c4c1d0da78181fb6b3896676849da8e9d7460012e4e48c69134e;5266a29a949718c3ecafcdd7280c094d775b2d59ae31c2ed2846dedcfd0edaa4;8824;132
+4f023a33b9c1280b7f4681c796f78c2f3d46e0ecce9b6e84f49ffc8e0db89588;131d8f3bbaa19403b2765cdb3da9d5227450e4c5fe5e5b9d176918f141478b71;8824;132
+e1c9b2f737b7f942f41fc90f1ae29b503bf788c6f7c3655756a35dff268f93e6;03affafb0d0084a341354f3e3a2270b126255b78eca47d7bb1948b4f8447e7a1;8824;132
+864e759b5c1c57a6b29524f8f22c894c0ddb665c5ca60b5459e3f2c9fd590787;9b6bdc12650ec602f100c8fe499d0322947ea0764324162e9a24bcd5ae5bdacc;8824;132
+dbaabaf4ce9b9f59af2dbc1be6b0ac3ae22663b0c1f8cde226e77663a9a9b245;b770a60876068db6aab219e37123b5745354a391b5be033a5edd37d04ada7c99;8824;132
+1d10aea8d02b61b6908840ab14ee91386e9fbb2632224e433e015c97a00ffbca;066cc7c09a39a4e765170ee6a521008be6c01dcf3461e81f20495380f7092718;8824;132
+b0c677c024608059687c7121ba8901e89252e0ea6bdd11651772900bd12187a0;380de85053b02ea5d03ddb2537831b1ac3225be37e63205d046baa8ec112ef5b;8825;131
+dd22aaa0c94012afdd74acff97269666a28146a1caf8f88599bf47493bda476f;909bffd373b739e3f67a66d5a74ff3925665675e4745cfac3d43188b3fbbe77f;8825;131
+ac053ac63498bd65675e05c33a2df2a638e46da3ad1d7c1e935df9707268b0cc;7374f61504e1554adae501465a3e5333a3dcadb60f82ac132dbbba7991b2365d;8825;131
+bed4137fa32aa4e22902936a167135a07f0d31711f4d0bafea338c408a963463;584a7d5a06b7e257c2864fb627d8c43a733c1f49f8a31b5e0ed18995ea1b1980;8825;131
+45c70e757462a93937724ce7afecc7bfda2c8377adacbafeb881bbd4ea47a2f6;c37c9809e64e58458bbe5cf49d22b0979cbba4b48f74c81e2731c99e87a9f3ad;8825;131
+a84921705de11e7bd3b84a9773c0378467d31b9e44499850966c7002f384d750;5e9f6395d5dc5b2d6f1b4e1ea397387f3fa9aebba3b1418ce947d8567676aa40;8825;131
+1bafc1a569a81779e32447fcd52de12a171f30950bf47ce67cfdd06fa281cc89;13586ffbc5ab41dc4226222a9af3c413bdbf13c540c55429ffdc536a6ca731fb;8825;131
+4d238fba03328c02e51ce4e29d627f0cec2d1f45b5670e2c549753ca12472d16;a4456808bacbf2e0047fb7f3f16d23e039ee28f3738ec9e7424e716399acc661;8825;131
+cdf116ed915715a0863d560c9c7ef85256186c726ab487195df72c669523ce13;fe3bea890db3648db836b0eb4a9787b4dfda95ca212a4a2f3e9f65f2e4e5e4da;8825;131
+e8e22435177ee80fb4ff3151bb6e651196803e1d0866340d26e22a5602e7e724;ded976500e748a3b1a14e015d3c5b0aa018ae534dbb016b5911214c5a31a700c;8826;130
+f570a8d51ee159940e66603d4dfafd341e794eb3328a32922a4129947c5af4ae;539afd51034fec679babd57a7dfb99379d27a964111a36ffd827e62c2093ec63;8826;130
+dc07a5feffd85d2b121157372df26f571e952b6bcde9aad9c8119563d7da69a4;d33def9385b984aba180a1003b74bffc06d2f6581bc93bb02db01d71be9e5727;8826;130
+76c2305b42fec6bd2494144589d3b39dc1229798873f583fbe5b38fadbc83bf0;e7e37e387e1af6b14ee07ba3e444c3b25b131c922925860f297bf6229e263408;8827;129
+06ac205c629aafa07f69f9e3cf4e7c9d9cfaac5b5429edc20db3e87c2b36fe9f;d554faaa407cd6afbbeae1e98024359cf319158a391e92e9f5db5b1dbeb1fbc3;8827;129
+b2bee000545d0e1fac16448314d248a12285998274faf2c1cb3dfe6fd349ebcd;ee85421b9b6dc2de87ea098f4c25fdf3361430e1ee34c097ea4cdca1e36fe433;8827;129
+c1882657b3e1832296385805aa917b6bb820fcca4d4b8838b4ce5082523e66c7;f404977083bbfd2eca9d878aeb6656b33bfea55995614500c3e577bedbf259be;8828;128
+04f54403ef00703d1280a09000bf6635e68923a4ba66bef711d7b01d5295f015;82bca25a95dcbc421c4e0031651bf04354656ef1c12b5f71fd21182a1650c87f;8828;128
+8530941a811b3d097fc9bfa99209c382ae0eb3703146af6ef9ae3ded1c4bb7d7;821aa9a834862459c7949b5a29983b898af2770706e939f35193a0d49dcc4ed0;8828;128
+d5da2a57ec7e2500eb4adf89e3e4b2a58e4b3d140c7aec1fcd9adc6f9cd08c42;f728f7d667a7887c6f33aa2b6fabfb86e545781b69b766b8df00722fcc2ae0a0;8828;128
+26635735816c143d75c40ec7b69fd5f73432cc1c3ff8b9c0b990e0582077b87c;d997f8b07b29f4f9a214f349d1beac68783b90941d34e1335a7d75e4ecee8baf;8829;127
+04acacd5d760267a02be3c3e6cc636d952738c803d00cbe16e556307cc2cc842;21363166b400993ba17f682673595c1aa9d47ac193fc3c5fb26181f00d6167df;8829;127
+e73261b64943360fc2e1ad66d629546abe24bf740f66714fabb6bec825052024;52dc75749ec5d9eb052693133f10998eca0578675f24e244b48c854b03ffda1f;8830;126
+338c22a5d6d9a93450f3e825287892dbabe4f69d2071ab24db85c245a3507ab7;6c61ef74ccff070387fe605d04bf34541a875f1eb89da5c3bcd5bed37fc824c3;8830;126
+c3cf58cfda93adb06b23686dfe0a75520612ef78a2f55d1dabac315c77b6cba1;b062325e25034e0ee45452e122ce114c7c23558268beb5d5d12ddc7d4d81bd4b;8830;126
+b60476a8bce68ee56cd5b040a5937f8cbd4f8a810860b6b33b7dc0d101db9b3d;42e2788f25669e9997c687f283c3197aea262d39f3250e71934cb524d7a2471e;8830;126
+7d8cfae8b1f5e54a84cdb176ed8fc36c8885ea693b6f9a072a307516f0dcf2fd;0c75309f1801a36be33119aec7470b5be2b94b0bba1f0b0e98f76795bf76be28;8830;126
+dd1f78ec7a838603f4058a250bfe2b1c4b5761b9e6f14236006f6c6bdf329780;e463f5eb44c6f852bcb2484d69cd587a6438d631d4e8f36a6eabf44e061ab828;8830;126
+62751e2a04dc048c635ab6c20be5a2042ef16e5cde4d2e933f5e070ea14a598b;6d6617ee2523f92bf93ac173bbf6881dfdf8ca1ffeca28005c059be953a5cfa3;8830;126
+34b9a921e9b3030500be367eaa4e2d5de53b464b966ad115a23dd3f11bb6b4b0;29128b9b730558a9411d339758d09b305aac6e524bc31c74efae94ad25e63e48;8830;126
+12723af836284a63914551c1999411744e1f5de4e1ae2d87da9bf9f9ad60ff89;16f462ef0f84e1d5fdcf45a6232a8ebb00d41fa9ea5faf9e89a64c49163d4a11;8831;125
+a1443eb3683f3da171304db706904dbebb34b955559d7f47cec0965033391e36;0901c733803f61ed4b90a2792d18a2bccfcdb5aea5c4d5bc18f1cbaceffe6c9d;8831;125
+a02c209103607c3928d3ac0d5f1fb0f743cc1913405276c07c2f3061cad7bbdb;e7969a7ee396e55745bbf0376435cc35598607b4295742d011ec3e538c2381a1;8831;125
+db0e19a68d9339a58cb208f931b2d63aabd618cf663d18e42d0ea9dd127f50f9;3b8231919a13e3cc5e1f307e8ac3900f2b1029a1936294e73e19b545ca5d0626;8831;125
+a8004452e18a90eb4fcf3144774a64e549159d89d620d0b3586aba679d41e847;b269d289c8a2d5032f0de48f34d20f32db7e93305e38349effc0ba089eb5e3ae;8831;125
+4a798759bb484f026061f2313810bb1767e3d99156bad1b81a065afc3761f951;e0e70e753480b762e8c4cff21c0ddb7bad7903d7fa50f89b7935f3d392bc631e;8831;125
+7ef5635c5560143e31f9b3e32f64e6346bdac68a4e264d7a28b24072bffbcb7e;0bc5e6d3f680706aa6d1ff9671da3270c81090b0773321bce03060a86d297fac;8831;125
+c0f65d631b602c1bc04b35990e5ab370ea9a9368597025102f31eedca8fb4074;929bfdfec8bb5d5c193f026f7ff2124b83f070e1c3c3a7b8fb4701bb195c1b4a;8831;125
+3ad60b65cbed1bdb4b7a8b5fba92e5f72f6bd7a95e5b6fb73c1c46e1872f0568;1e686532256883b6165f9e338908a6b7fc3192b6a51324513144fa74ce0fdc2c;8832;124
+fd1ce21aa8a9fe3d9af8725a4edf848b47a382ca45685f973aaf71a4b9961d65;e9725b908fef9985e87c3630229ff0bfbe98396082456b05a99395753223b9b0;8832;124
+ebdbd2b95c6a12b4f3f47b35484f8487954659fe6b6ca9e5804984f76ae11657;ae82c6546a2bfc1967987237dd1e3ce248a9ec630c5d86414b5ca3a8e66c5f02;8832;124
+f41c142cc50c7eac6ab4b9e1efe3968b6e85e25b886ec2cffb0d2f234648146d;ff06dbf9cc50fb382e567b1be099da9876a6198730c5e39d08cc5dd62e34aa26;8832;124
+ae856d1af941f83c57538ff31e67b2a6c4af56c7f8bb6a1aa8ab837cbbcfedca;24d79cb2960ec1e8bdad383a6b2d9efa45b8c9081a0d0d26fa5bebbea007fbec;8832;124
+d30eb7be43fbfd0447db515daad00bad10719b35ac36f3430846cbb3fb6d9e5b;b5a2f4ffaf989908447097c89ee11206a0d34918675d706188098f72a9611a5e;8832;124
+9b245188bf832368b57ef59f89120c6d1acec600d32ed6a0ced1579288236e87;80abe4e82d9ce0159f5fda942e7cca976f1747770bba9520fcdcdb134a076a04;8832;124
+e1dc1b4bd76ce7adf0850dc40266fd9fe5874dafb06f6d1db39bf18dca081f25;630239f2610b4153ddbf7289c0f0dbc208c704944ffc28548629527f65a07088;8832;124
+12720239b81908cb391e36182f5b42b6e9acf5077c75d43634669329b789f3c0;8eda1970d6d046f6c58e29ce99340264bcb7a7bbee7d2c71c54660939f85e23f;8833;123
+c526ab9407bfe2232c749196225118537d446a253cfd07cedce5a5ddc89efc04;a3677a7b3c82c478447cde75956c741031a290ece972fb73f7cf023df0f39e48;8833;123
+8e68502d3533162b0e8c930ca97b18f58913a7b03fb64bdb9609004b32295d10;b287b147ad7569933ec61e50fff5747fa3977c4c206538fd2c6ba8ce8cbc2e26;8833;123
+23e895e4149de2aaf172c01b914ced494ab99bd32d3829d34ead41c9fe6f67b1;9411a0b95cb7c53f1a224c647a99b49e0bd705a1854d4553b7633a3895cafd14;8833;123
+b2493d42c7b509e5bbaf99fae6f14862b0b7054fb96cc93ac87b9bb4d8677e00;aa548294c2940429f5faa29221be33ef6f26b29b73e754bbb448b6acdab424e3;8834;122
+03534bdf4512c677cb37f8ebf5712e467bec9c9c4e50b002a1065f3bb4a86952;ee83a4cb06579fa03efd895ace5735069499531bd6f0ac258be0fe36fc4fd69c;8834;122
+a202e35ef42d8f58f93e61f27d0ad777a004b389e9b5094884ad2f16af2c780f;b24a732462fe32347328c171da27ca1ec8085787e6cb21b324cd14caeb036603;8834;122
+d70e2cf76cbb85dcd0340bc1a036dae8593abc8d6ad06104cd41ecea89c6f9df;7b567566b1d7a194f80186b0aa7610417779d5900c3ecdf7cf6f888813276eb4;8834;122
+ccbd73b9edddbcdb5fd80067b14e0bd7d099130cd7f24726a219ecd27f2b24c3;a7514142c316897bcfe101555a80feec55adc47c34fdd54bc358ceb9f0ac5f21;8834;122
+cb46dcdbb04ead76192b8c61e966c3beb86f9fdd3b761a37e66fcf88fdfec031;d0706536ca5356a71bcf1d28ca853574a798f464ffb0e386d92b8696ec538d62;8834;122
+f1efe7edf816a2a251a5548331881d7656ca8c05222ab3f422afafbaf8b3c303;b68af256d948dac8f37858683044ce1b3c5c7e5ade39f432b6fb4ad9006c1da6;8834;122
+429f496e497a5f167b2473d461d2eb046f5c260befc71a0e7ad3a1e8b5076c53;98d7bcfd99db7086ec28bc34aa049cb796c3baf72956891391b81cff4e6827a0;8834;122
+fb939edcf45ad23e358ebc7be1a1d49a262880b77c049f9f3e1941ab0ab2b466;09d9fcb639bcd8e13809426114ab41a8ad22922b23e32d77068c5d1402e39933;8834;122
+27be833db7d8a033edd770b3d44f4bd7b755bd50308265c96e0ad62a081c9b6f;d8244ed21951267084a61aee448ce897f84f9ffbfbff37a35018a21836833c00;8834;122
+481f9cf3e7fd2ec9f943e176f4321fae369a195fa58caf9a0b752996e0745137;539e6390c51f7f77c13992ab0a431df873ea961e0e852eb35e917cebe41f852c;8834;122
+20ea6434773b4cf6fb0daf07d8bfb997479d83e3e1ad32f57175cf2e97da55cb;3c53e3e2a375a74dfb73a1aba81eefa56eda325b08cf399d86cd3fd725fbebd6;8834;122
+78188e62ad29c1c8ef0b96f531b29eb535c27b50d7a18cb709f7b3fcb79a2ed6;1c6e2c23aa53c5482bbd6e1e91c10061483421fddc65a339038786667b0cb726;8834;122
+a3836a81d113929075b4569d56680aa580c037afc4d3b60acaf8af28e4b427a9;250abc3f2a76aafeae29ae8f243bdbd0829d1be8048666300164f2eb89f3a68b;8834;122
+2c94ac27e5417549887dd86033eb44ba459625d318ed8d821907596228526dbb;7b54b4afb904d455cb4e745bc1bc9e3f1c8a879202b9739119af9221ab1e7a01;8835;121
+e959e0e69bd7e8ecdae3fd0cb2c7af42ff537bb58d012206cc94e282a3b56372;01cb4d8bb00101a968e469c935e3fc42c1b12c4dcb57853c1e7022408754596e;8835;121
+1888b38273563a812eed8d0c32dba172e28b08086bc30ce87515400c3c9b6f79;05f74fb3384dba5e95f705b2cfff2ce706d7bd0ddd9f82f73b53e8454429a405;8835;121
+ee3f63eaee13a788429cac1c2b9013a07809a7cafa490f0787123d84d0fe2ad2;f78e51ff3d019ddef47c94b2b6a13952dd1fd2eda01a12f550290e1fe5275f8e;8835;121
+e3f0fef1bb2c443a3c3579f636c7740ba4ff60682d64835c7ac688e60f642e0b;482e7bea9f42539442618fdb2a37040e7ad3c1b67fe48c3496d4b3119977da57;8836;120
+2d95d6f0c409d82273abb7ca5d73945fce9a52666ecdb19d634e639c7713297c;f207b2b85c99c293ce3664c207fe54a3fe45658c2a9b205ed277445ac0b38b90;8836;120
+7b178c92b3c30eaedebba98a077142349a1254c9d8d297d0ce45128275131af7;1c1799d89ca5243a0852c4156e06cf03dbb75cc7b0c47d676e126e27bdd66fe5;8836;120
+29ca5b736ebc0893583864f20d90bfbb40af06edbfdbd3d98ab22efeb59cf5f7;71400bd1c67efd7d9e7e2308ef2fd094c156698d0011f028ecf82cf18735a616;8836;120
+a3117fdddd2c4343c9502a5851f452bdfc056c1bc85a090b34e0785ef3de94e8;4549fbc5c096f29b24b6af9003c267cd02d418d7d4c1c20fae45af12f74ca6a5;8836;120
+a0c1e31468bcb55b1b3daf0da25107778a6bf601e12115193dce0d832a84a074;c7b7fed3d7a7b2dc852201c7c001cb1bb66009403cbd323c139ca773ae97232e;8836;120
+780a8c31fa5ed50360a51eb9e538ab76df3d5d1fd2101da2826e448bfa7581c7;72703b38d1672f752d27aeafca69587a686886621891f48e0fdbffe5c98ee54e;8836;120
+9484f9a0a3a7a3ede1fcb7fea48cb73f33f9aeb42850036c71df96df6ed5582d;3ff6935bba9b409f6b337746536b91323f35081e44f8f93701264979ca448a33;8836;120
+1cf18c11feaaed7b33e2bad5b1e7704b6658e55c827bb759fd01f1a01f7c437d;df6d1c01dd0ab03233e2d88229185cb375bc32b5e06cdd16e944ff8b8b59c60c;8836;120
+b1501b3e6015ff2f8d40c1060702e2dcb6ffbe40128de791d2fd2a550fe56ac4;a3b04e98f91962f33e2195ddb296d5dd9f6e5a2e8f8e8a3ff5b491c60b45021c;8836;120
+03265dd92bba612c3e51228cb436d43123cf639854ae6727b5d0035fc99973d6;de84330da0ada69d19c5dd1151b654e0df24e4b78dbdfc8d0af162dad7cf380e;8836;120
+67e0d808497440f56d98ef99af3a2efd5f31662d8cae6785ee95ff2c7cca9f0b;1d461a4d112533e8f110b69a562d74f15d2dbcc76c18c0486bfa19a22ef5538d;8836;120
+dd3cc79cb8edb4cff17bfcb53e3f003e45fc3388bb90a3afdbe8bef73b83a42b;00e9c416568836296cf4b76267b6897b14b1ebbae3fa25dd6370a09f0fffbc60;8836;120
+a923dd70c094be81124d17a1430742e95d27d3aa957c851bca6d920f1578aaca;3a01410250ff1c6517fb68ba6adfeab328284e04b227c9fa8e140ad6908a0135;8837;119
+0f53788ef7dae53651703cf478cb9863aad5ae86d5519c0c1d7237b966932853;25a487133af1364dbe700dedb36a42cad018ed98b84adafbccfb42802b9659f6;8837;119
+a0b08eb68ccedbb1f5958c9b4d7bd982c5e66c00a5f56f0ca7f57217e1a1c715;51e0df4184ddf98db0321378fb564b78d58b7cf5bfb5ad31f17022fe14b47050;8837;119
+5ff342996c522a3f91f7e6048475a84bd390fb8132bb4049a0f46693b57a2ac5;47db733d982df19fc19e6176f3b67c340ef0b477f3dc3ed50142a3026267f0b3;8837;119
+b82e047b0e91fca856b51d7a78ef7d31ac28d1e2b852b3c726c107f0a6765409;b83fd5eaf0acacd8fe46fb5c3013337594b52691408a4f3d6bc9574959a7cdbc;8837;119
+14f625cf287c4d7fadba8b3a24c5605bb08a1d87a3aecfcede5c37d3203c9fd2;b66911f547d48c9fdb8ac725e6759240d792cd0eec8efe7417356603dc5ddd9d;8838;118
+ac500b6e9738e98a1e55f3ebd50ce4d1028bc3793cdcce0c8f0eafb4798a1d86;882f556051d7fa8e4854c6ec85a08b7f5c1190e009f1450f0a133c3d7e64ec9a;8838;118
+320ea4836a2d1441dc3469d282d2d91e6b7637c305357a6f298455ef19afc48c;a23c88cf02cd974ed8bd4188c7c6cd14a912fed12556fb272221309c0410f458;8838;118
+5696e70e2fa2890d9eaf6540e8d727b570182637258ad3e4bbe4ff9ce12d9a53;e602e469455fd3183211abfa5a06bafb1ec6dec00054b0cd76e7b744adcab3f9;8838;118
+0afbccf083245c337ca356c6fb62ccbc0b0431bb46f6d74f4d2693376783319f;14be0fe62bcc8df3406318a6156d990447558bc4306e1d5db7e9324711dbc67f;8838;118
+cc08df06ac8e3abf3006704862017264f123ce2df650e29ee6561727d29b19ec;e5d05536664c946614b57a7303c4166767410bef7afaf8a8ebb9dbe671d1eb21;8838;118
+f874b1a9e0197e7850ff991c1fa74d6ff6a190d6d66c2262c66eaff013cd86fd;cbf6afd2cc544d4dd4439986bed603ce2d67c7102ae3da2e1e816f543affb7a6;8838;118
+7b27a05dcdbae2d0bb7d6e896faba9bf5a4ffc74d1e678f5fbb90191ea7560ef;d2ba69dcab510ecf927abcb466ad51e023a34e5a8a9008939643e7c0c2980a6d;8838;118
+867df3007cd270c5b050fbd8a48ed7689dcb0a4912183674d014813c9cae6ce4;30a00f5a771efd2b7babda9bf9fbc81a9640978c905d1823b2e05b7ab382a9b3;8838;118
+5bed6d441dcd2c61cea102b49458e0a5e0fa5958fab22e8d0e1c3177ea32b464;32025fa2cc3306817eb550abb089b5d66fcfebdea572dee53f57e4f2a73acfdf;8838;118
+136aeb5fbfee8ac25d5b4d9a61de80c8ed5f284b6755c39ee6d3a477e485b235;f5ad81d703c68c5a1adbe37c02c3ea71a29820b272fe012d371d5c8625eb44ac;8838;118
+2ad5968b7e1df9f4816cb57d8487bb5a640018215b892844d1130df0bf5ad03d;9176ab8c282001fb758688b339124f57d47c7dc9c3968c4b3d42a48cf48a1509;8838;118
+f2290a8aac3b980a4dff7fed919f6edc033232d048365074cf2f2210bc5030d9;27ad0ad406cfa95d01e83d5029c36c73da68a16224bebc2c623a0bf3044b6ba1;8839;117
+b3414198ef4e6f858eece76b27929d478aa52a402390491118deef47511e6c23;31c76cd72a9ddb37129b167a685b4c34a3e67491b88bac3d45e392dbb2776660;8839;117
+524eed1d331d2f19a92a134adf1ab83164aefccfa9ac48671cfc6eaadef959f2;94e26d3366d8d8ca5c530e6cd4c1ee85e1639d01cfc1d42c1277fea8f8276460;8839;117
+1e2809c0721b0677741108120c2605268390e9454d34b831f8abace131a3e1cc;c14aa40685e0ed7ba00a8511aa2117741a72552c0d6bffd102f213c82627fd6b;8839;117
+fcfd324fd88f250b73e0484078d1a6a6910beca83344071a004232f1a0562a13;aa7eee848a8b3069772e5dcc6426f7f8f715febc106560dd28ed42b3cdd75286;8839;117
+22bbc60ee6725b16351861b9e82e338e83c8e8440942aa71cc2a405bea997ad1;5a2894099c68040394936a43e2fe374b162560af7cbb8d6da278e88565eba5ea;8839;117
+90e2535ab56d9791668f61ad03f08871a74f9721018e8c0b2b56b9d5fc31cd95;dbb7955e5b785e17880d46659066eccdd99e1b57185f93594a44d1f9819ac9bb;8839;117
+b8e8dcb5f9b1ae004f37c87857c8f00fbe09228af33ae5642f877e0dbf11591e;6c5e5af1157ce6dabe7fdb516671e6c5e34b2b14097b4e6f178ed486acdc8946;8839;117
+2ca39f72b713f27dc77f23af2939f94ca27958706dae08bf0c65027d4c448029;b600024c6c4e3dad1d631eb5fa18028cd42dbf0d508d7ed6988a39e8da58b051;8839;117
+112f4444500858cfdb1ce745253cbf9ecc5a799aae1a45207dbbefe76c31be0d;a386bba67f1d968a9a219712eb4aa6e279820e0c405a07c3cf278d3f70cc98db;8839;117
+05b0371c8425edd493196e38f05f4f0f4b49f97ed6d2f9234f97491a6f5d755c;2787bbeb807b5d7fe2f5974bb2d9539329f3b1729ee4dfd4599979d1b7f90974;8839;117
+0a8e3ebb45193f4caaa0e326c0dd9958788f8f0f0e20ade0cbb2d4dbea55a2ae;062ee20c6c74521115aff5627fcd728d9edca40b78afe5a9a186604368e532f6;8839;117
+b17f3e6f95487bc9c87cd2ba3b1adf954dd2bab2dd9483d5b819f93c9ab305b6;9157bef7c4e6d134f083f2087b60ed79d739ea9f1086af728674e53412e5b368;8840;116
+971802b1f4f3b48232e1349c683c73cf455555e46adca248d05b0c5608e0cd55;c36a50b40bd0dcb278ad6275fdc5cd80f2d8d6069418d87bab449c7a7c2f9b9f;8840;116
+c75d38eb3fbdc473e6d728a28a98c5538fbe52e542166c1da106bfe16cc5e3a3;01caed2e5d4a298594524c08da704d603d2602e6d8cb2c8ad99b9bcdd7151870;8840;116
+952fb92496fa8ae4356c78308a8078fce8bdb9778bf17ce68298dd4db62d5987;745303701a8235b0f2e52d7a3f530508d0410b928e31f5d93b50d011fc538098;8840;116
+2fb8e9ed76661bfa0b05fe17efa8c2add62c53e7ae68bcf8a802c2e1801672d5;c7b44154e4958638a8536978d6c264be6efff4f57f73becb8419e19ad125c17c;8840;116
+61dee95e17fd3cd29ff6b5f55c90154125640d8af657a3f70bb3d9261f657ac5;ae30788a11453968b0d919e7a1c486eed0a5fe1da482f32d8b00a47355ffa138;8840;116
+74140a52034cd8ac85225140c10babc169f101f90e8eb1333a33f7342937f049;570b34d9832bdaf849054f69e5528f35053fa3b5b351099a624b8fb0fb246de6;8840;116
+4826c8db452fb1429d0860e34268bf5de66f814ea8f697b2c501bc1ca72152cb;2a1f088bfd3417e5f2cc076c4dbb2331096911dc9550a143211c512b49d76496;8840;116
+000024639dd59ff683c9aca3ab56755d01e465dce74001e9acc6bd1c3c0aeb30;2fca3bc709652cfefe45039467d4ce08e830bb7fc0661350be99bee5338a31c0;8840;116
+684a473a1a04f4300752ddfcc95107a208107584ca06a4702b4fffb4b8b29e51;a84561ce2ef391bbb31a1c38b59fad9397ab7b008a1db7ffb55450ef4ccb1722;8841;115
+03a040e2fe3e654c52a4e8e4d3aa19afbc26bef36779b62a674faf927993893e;3ae13b2600c3e7ad7e591f6e1d4504a0e0a802c637e55ce529f29c9786a17de4;8841;115
+fca66864c48f72a0ccfedff6cefa3552b502f4b44d902e20de26dcf330104d0b;ff972e02a2d6c5233eaf2a8cc7f3fd4c9de3b99692998f35bd1014c8d4b5fcfb;8841;115
+ff5156bbaaae235bcac4a7ed90c6597420c7f9bf2327f9e2454b1a00f355bffa;496a6b5598f7454fd459d39db619aeee69a13b2df3cf76de81da33e44323fa65;8841;115
+051962d9433f9100d97b1f3546a1a909217e25f65de1d55115a6167660a485de;be9b82ce57deab010582456824a82c98e995744553f53c3af2864da209838215;8841;115
+34de394973e6458ffbfec7c7b329e2d402085fc6f1073963549ab390dd43c400;bf5e10192ea696be477cfa73b17f943758e77f80c39375317f2894f859becd16;8841;115
+1a277d6a256372c2fbc007b598495cdf0de53934ff33429650e9f5edeae561f6;92fabc45033801a79ab464cf1546d1a91548ca01771536859fa33c65778159f0;8841;115
+5820feec192e520eb89fde88f665768d74e4247c1d48bde172d785b66c5623a0;4e091677807c42f71139ee2fcf305b739f0e88231f4c9c069e8353024f35a4cd;8841;115
+07edb37657d356750464232a0fbd22fc11ace4b34054f194830539dfa4e90ce9;79a4812f62800a77b53c5467e6897ded263e7acf0080d3d95efa098bdc11bf9f;8841;115
+f0eebca0f1e1fb19e782513707a0365e2e859efe242c4953c490ea63237ffb41;3bd2c71ac28108c83507af1311658e01ddc8ff78a8c60691a06840d45ea8c2b1;8842;114
+ebd3700d55332c05bf2edceb24e0d365c196d0336aa284eea97388a710add144;d80cd412df671281cdb4c88dfc7237803f154f04116fc7d9f2f93681a70308bd;8842;114
+62c64595cedac5e3b88531570077585157060c2141b532634e4763f88345bdbb;6b4044fec709a1ce04e42595a6cd441e8f719906e28c18c3c1e37869757b4c31;8842;114
+389c16acfe7fb8478c739828ec47928f4acf279930e93595b4e9cc883b7260ce;ec8a1f70bcb5941caa46228892ada7a629a1e92166240500c77d2fe228048cc8;8843;113
+d6bb7c65f8061fae900ff4e5031eea2e6bff40b05b96a0b9a94bc285033738ba;c412267bdd1e64f9f572684ddefceb153f11e952c63f5c655fb7ab8c8df061d9;8843;113
+73ae5d31dda72ebdebf3083f1b4fe4217569adbe53d1589e5b2b47b8052aa614;e20769ba0d6834760950fbdaec069ab4ed303d3a25db95bc1ddfa0c432c06967;8843;113
+97698cd631ecdb201a1111b6c367b0e03e4ffb4c546008b4f533efdd57691c7b;42325dabb8d4e20b59176753f19dee4cd3f8d302178b5e6a30fce197732fcca7;8843;113
+385e71436676434cd60ef1f8c88f512021c368da9b2e9743800a4e35cb503cc6;7c774039842431dfd621b3395556b725e719e2408d6854db534c018e9e661f8a;8843;113
+05c77ebe2a610c4d04c1ce9750c7ded52cfd308530b85d37a8be3fdb61c6f110;05d57740bba0f54ed78759d3c793cf2b910780a4005692cccded9ec2c413eb64;8843;113
+24ba1dc77208170ae5fc34be98725909b315cea20918309839199bb168707546;d94334214fa33517957eaabd422d54d4a4a8a88e547c4039f53961c1b0b892f3;8843;113
+927ad70c41ef1384ae26ddf98cbe4f73527c596cfbe01b1be4d4019cc60f60da;22c2484036f7b4eed8889f7a31d774ae39657d6b4fecda3a7e634e5916e06c3d;8843;113
+49f1727415bbd0dd539f6902a796bf4592db5e5c5b5c784b6b3b0046dfd6b3f8;2d08a641beeec0042196ba52c8e77c98ed0edcc8b256dd93790f90fbfa70671e;8844;112
+2cde3cd9f3856c42ab470220b2c971d6681ed90798efe6556b277eff33f0d434;b40c2a1c443855f59eb3bccb691b1abe124b03eaeece836b218dcd96d9322945;8844;112
+4ccb411b20160714886a532c3036e19d50fd77dc5772e1b7bfb0aeaa11ac14eb;48cf91266fa7687c9a27b6d3ec2d7675205ca5dd73c002d87731feac5ca6d985;8844;112
+7ab583ce61c4d4466e5d78f143ad0a479cd044b6831b917a80af60c850990154;8093cb12ce37e13118a4746422f9d752c209816c345c53beaec6e6cd5c2301c4;8844;112
+8e16e7d56274bec7e45be1aaa21fec44a33b91ef82922ecceaa908f908a8a635;bdeaea76b20ab97203d55cb34556081771b9586e94eb394a921fe30f842400c1;8845;111
+fe31bff748318685c92f041e984c1ee24cc134bd23ee99e2dc00d3f2aaa42f38;28f580ee37cd9ecc2754c81f6719b218e242fc5e6535602ecfb4cd2bc9eac6a8;8845;111
+8d4201f803b921fa9fa0163eb9246ca6426b4b464f116baf35cf2a7b1f8627aa;3cc7ef890b74fe5fdd88874cfb076b4ba2d005e89a094349483f0a2670c876d4;8846;110
+a546bdba75a71a717fb46eac6e4e25aaaa0339a0903b83c16cb6364c86557bb0;a49769b047158dbd63f8d6b8d2e4d74d6cd27da6314f037ea27ef5e2a64f3564;8846;110
+02a951681a9850ec9bd654b624f906eb729ce824cec21a0cf4821aeaede4c1b6;1f063567dad243b03a9cf0812339cd778bd9c7789a6a4a2b551d2820f7ce0749;8846;110
+9261252e21c2ed99015bdfe9bbd529e92b62719e72b6f383a7c70a7fe0c49ada;4403046655e6af64e35f3e1b6d1c55ac754d17f5c49d9eebff8defc404db391b;8846;110
+dfd89e6bc0b3f7c05035e6c933d8100e3052d35cf9b44b1a374d74e26f93d0d9;d7e80c83d0dbdee3ec71394ec8c28fb4f979db47d8cf00aae9e272caf0d7f324;8847;109
+924611ccb3f39c38f2f555840815861f6c622433c2d279cff5eabcd204bbc786;cd30acbaa8ac57b942c42d87027f65ba711b975310259e33e662ddfb2f1e0ab0;8847;109
+226b8afe647170ffcd547cb3018b2ac401f53c02254f79ae2c27ec616b47c96f;c6e5c091bac05ac64347e7ab3a1b819f4037e2dbee92e2ad667668770d4bc097;8847;109
+3103c2d0a1e267c8780b25b186d387ccf0504e547e1fe1958eebde4262a4d2f8;561c2e7e83808928c3a3f78192bf2d6bec33718e5945e1d10cdaa61c644dd65e;8847;109
+bc91e819b9ed2f6b51a0b68ae349aa74b32e7ce181dc3fc83ff1fd6314f4a6ad;4edc59c735d37d62f008b2f1c0ece38d4eb061d0fd2ecacd39b88fe55e74cf23;8847;109
+4f1c0753b5f262af466736a355cc5df72a4fb2295b8e03640f2341fcf2d13ec8;b338d917a902ab893d93d4d6bbb9f483a078b9dc5fc9d6030b77088190bd8433;8847;109
+0a38f2adb6737ec5461598b7d5301711b3a8e10898ab338d29da0057b7b69695;3d7aa1c7bd0efbb0269a4c45567e2fb1ad7467a4052a337b9f3e0ec169a51329;8848;108
+27f8045922605edc6c720192de582edb478aee0c350e733935f93c4750c45dd5;5979678c72562fb0390edae1cbf9f9e89f5068be211242e9c61990c1f2e31209;8848;108
+62c0dc6dc6aee6d2c8bffb42451093818ebf096ebd81dced1d7a6cae2ddefff9;cc40c2a2f56d49c94771c2e2dff0cebbaba961937fc4b369aa45d26921ee064a;8848;108
+67c2848cf02cb56b67f30fb423767f12da0d8b4845e0c06ed5804efdfc695747;a97aa695b925ffb8a10e0a71219675660c51d7279ed3eebb921be62fd5e6ac8b;8849;107
+106f66eab8ed68823a312f29e7e207cad1a45e523f789746f09ec8ec6bdb9e48;a84622e42072d4fef305283425c26e528bb4f1324e0229a1323963ef44411fb4;8849;107
+cff1c2343de6a84b58b60f14b0474cd2b960decde9a3c5e5c4f0deed7f3d2bea;66bae09e0ed360a6c4d3c79bc81b1f9627af806af9780bd47365ded07990a9f6;8849;107
+958ec8af4e12a56f99f78920f7451d0f767359a420466103475716da096b4c62;9f7d4a3da03c741a3cde057999889fa94f8dee449a7d1147bafcb955dff68d53;8849;107
+0cf04dc4cfae09712ea5baf50b1a673a4fc02a1cb2bfe416cb133eb721e82277;699a022adfccbd4a223bb5550d890ac7bccb68e9848faa3141d3edc8dfd023d1;8849;107
+e2fabee7a192f18f1800fa16db14e7bc41b1b7e5f988a33cf5f824f1a9ffb18d;a7bdc1f0376066a0324809d0004d1ed87bf2f065f364293fdd6329f7851eb6a3;8849;107
+caeca71cca3caffef9c1821766dd268fdf077536fdf21a14de22f9269de00e5b;2d2c46def93e1e99d458a99cbf78ce58a2f62e800bb110b658b85f1ca86d88aa;8850;106
+e436ebba72c7626bf81aec32bf4cec7fa80b9625d2751867291b73e8188898ea;f780e2cea6174c8ad1b2d1d2950ab869f4a5d44394ea517eb552d36b7d4579ec;8850;106
+c94ef68dbb140c87b02c26bf1f08a1a8dea0892dc544692ed41b284d100aa6ca;c0d61d2b00a2f4a45d88404961308d5cc65be19221724300e681771fc4efc57b;8850;106
+e3f8e49b1f62fb192d04f76f748e883e0dcd191cb6ecc220215a15c147e658a6;5ae3b6ef0f7f49734bcad4e81ff674db6e62cf48751c3b69676aec146ca9de17;8850;106
+71a26db7e50694c0788a0534463eca40ad4ff88ed89edbca5cae4e72fa89e0e9;6abc4825ebb3d2ab83d9b5a5fc1f2c09e57fbee2417fa7b2e160aed74184c939;8850;106
+5e236c59ec886b116d450e42912f4158c05dcb2338753c3e1266656371481bfe;ecd886ebcc2437a3319a312fc353dce1791f9371a336edaea93b87c3b05abf69;8850;106
+295a2f9e9f21a45b541355ec8df37bad3e2143b4abe328afe51dc65fe8befdfe;210abb8f2485f9979a218eb043df9c94a20d8a2e5e2677d1ff51e9969ea04cf9;8850;106
+acece7d4d77ddc30ff06cc3e60e78e056987c887eed100944836f7a9c2a0412b;3e57652e512f6c4334c643dec819f71a90992d48300a382390af30dedd923b2a;8850;106
+eeb19f329885d4d3139e364be4f2d7bee1901b70bae5e2be6c4fa748e680fb13;e536b5b78ee51458841ccd304112090da75c557abe53ad0ad9f63971aecc3425;8850;106
+2c03d39639160ae2888cc9ab758239b1213f1430caef896064ed94db922ae829;2509855f20f006b769560884582673d947e008d5fff051fdb184ad1ee3cbc951;8850;106
+c3b24009f0dcf2a508c35c254c5606f39fb9b5e791d743b56775fb78ee8d2e23;e28a8bd0ced6ed22c11cfb0cc2615beddd2bade25b687de517606b647edfad41;8851;105
+7bad3bcafbd3cdc60394a28d16473a98f4db4f3fcc937ad2448eb3f2439b18e2;1e896daaa2d96f097d314b0ec2315d48177537b35f95ec0cd637246fa37a98e0;8851;105
+87e48909bebbe38b91876823ab56cbfe58bec65204cdc69ad3f381b0dfd6b663;8b945558b349690b2b4ed0316cea65adedde7ed9d02c8de602cb2263b41f448a;8852;104
+595df5a73e6169d6e4996bbfa42086679f5f6de39261eb7c12b5471413efb722;b9e837a869b5d76cbe72e8bb4a68e33ab5c7ea1125cc272eb4c458cc4a550c22;8852;104
+3b1354a5c30047066fb9d5efcd974c6328eb474f77f2d9806a6d7d8c903de558;e035b7f8c85ba4246904513a664904cbca69aeb0a93e456513a8e89d7d5a9cad;8852;104
+a17f5b3157292d5ade86b51878e21dfbf86a55bf6d546a8381e51623a3303cfd;b8893eddb38bb407dd900812057f08226c23cec1fcadb0535ac79d2f4c8038f9;8852;104
+20d373a73c0eafa769a67e97599a300e0cb565393f6df175bc30940a1166daf5;7b0927b90486725d4d3e244210e1dee52828336722f4bdccc6f8809ecae50c63;8852;104
+1118d5963bfd88af6316853975eed471792fa009f40d5cbfde69b3802e463d3e;3648f0d76002cefd0666fa054582a6733d617251c586c276875ec72a4cc04ee6;8852;104
+f1c033a13233fcc5268e41dd651a832ac1a55193d116fdfb79a40a9c178605f1;fef9399d68c5d5ce6d85800e8caf94ba5dc8bc93b4c1f2d096cea2c728a91f49;8852;104
+f58fdb0a287548b76daded19126e89c6d0825b7db7ce7db64c68b7f21cc2a7d1;c92286de399b755582cf2756f25cce06a2de8f17b3963190605252456874ba56;8852;104
+6acecee5621a3b4694a25ad768f0e410c4bf61bc4afbbf0b14054d101edfb162;fc77ae3fa9b53065dc3cb6ebf639564f393c489b2bcaf74037f91f33c6f24456;8853;103
+9fcda568eb083a207c4412132e6579ff0b061ab9f26f3176e00e907923e21065;ad8f57edf99ccbba6863ef990e3404225fae546a5bbd3c614f21dc07983044cc;8853;103
+6936077aa012c9b77d1a524e3e8c2563be02c2db2e9306f370f2eb1c3646038a;3b9dbc23ac4082150089084a4daca50b3cdef9b996749888f4ea24492021591e;8853;103
+1c910a32f673bbd3d20fa48b604f85bbae801eeb7625c0febc044e3aefd8eb6e;8d75a71aef7a32192e138e24e8adede96cc1c419f4e97106965b04dd9d0cd0d5;8853;103
+968af5f48ecc070b22287303c26230abf24e41104c9ebbf280d65a3e83636917;2f3ae1d1bf10ce6119550f2c448196062615a161d60e7c5f197e5606b5a18fcd;8853;103
+5fb11bd35590f6c9c1617ccd4ec309d98be94ce15546f094dd7208b255979b2e;4488da1e2b8d0aa2003aaeb934f702c7d13954ecf5014cc6580366282e77a0ce;8854;102
+f632a87bc938cb134cd0adbedc6a61647a2a045bc076a69c197f0ce8c3833df3;c5f721d4edf398858547a4346367ea780d83596f2109bc4354cdb7edbbd6505f;8854;102
+3cb2f0e49cab290020369b43ad3b1c41ef77113c4c6c525af895a86741f721a0;ffea3da3d201c195ef4dc266723c9801c81999dd167a0d4f5f354b3cd073f5cd;8854;102
+82b0810f2988d912711f0955d22c234b0c443aec7dfb0b803751edb78e24f584;19a65a2a0e0bad7202bdeaae7f777dfce4d8bb7a31c52e8af31805565f502ec0;8855;101
+04bae75ae9c00f7a637b6b5381f54b7217358ea36a23229f6cf117681cf42114;96f0a5d5d82ff3705b57400ec86bfe7cbc4b41d4094f27fdca1b57d052e4bf06;8855;101
+42b145267a3981c4500aee04f48a940935619b370c2a95aa0cbf08dad237085e;d280923bfc9523c262fbb52c915c0473081829018e712012a775784b8cf5ed24;8855;101
+27a455686d30dc284bcbed180c2fbc3437ec761aef0c4560d2fa4a864b8e1421;379b8fe8f044e762fcf5449e84bd90046eb4c9d2e1c4330067e4fde53b2344f6;8856;100
+1af9925a353bddf3bd81f9d1034a67eb67ac309ef7faf67ddc03ea8da2f404ab;04289448c66f99f792d586497b49463f4bafacc51f25f95dcf1ec77591332d2e;8856;100
+3e37305616b1432766f0d4751f84fd1007a1a2661653f940d21d995c09acd97e;82a9195c9e84cc9492f494226893e3a2db4c966980119f670ed9b4f60ea2f6e4;8856;100
+dcad9816a982d129aac8704dd099552d4987454638b0e7e336a96f7c65a67b37;90dc55ec380e849f4af447cfcc785c74d78b72931d90a227d342c6f8f74b9b8f;8857;99
+96280ce7807764ffb39cd052e01024833bcbdd8b5ee10cab237223b08c973d3b;28e527c57dfde601ffaf2664809f40da44ad8915032193c3beac53c2fb2918f1;8857;99
+4253dd59bb556168d22005243b69c3e6eac2e57788efaaa7fedfe81bd6151bd8;f5ecc17f1b15147651d4e70e08c038d6eab74cef7fc5cccabfaed0756433db24;8857;99
+29b58171b98121bd4cd4b170ee52bf0dba1725aa5e0a02f29b9bf1489f390905;1d8d7a86e05242fa15ac55b9fd30ca54ecdb15f88e6ca26af0afc714f1c53b45;8858;98
+f3f4d0ec0ffbc77e8c193983c6ef07637076524255e16f500c3761a3b3257854;eff3e5d0c4ed22f672fee79fb2ff331f96ac7cf953b56db7dcf23f846d8289fe;8858;98
+f508d5c40e3504cc4005fe5780aad7ed46daf70879f298b4c4839b1b451b9375;2492627c000b051881fe9d859b3bff0c92eb69477465a29689e0660d2b740b08;8858;98
+9ec135402d466959ecb64d2724cd5e1d109704267416f48dbedcb5c5374fb1fc;41553f14fc9a511a53a9aec119c75afc58c67284be3ff70d251c39a3b0feb982;8858;98
+95729f7bada78c9688810b88bfb42676af4a8705074ad50b83adc8297c495561;40bcea9bfdb8641a3e2e7237c86726638a366f22c3cf0e1d2c8b897191591964;8858;98
+eb6371803fd8f15d8797eec8aa6182724a9a9e23b49f8991da8c2f877c3083e6;c85752857062e2a867c6fb85eb38c0065c2da92aaabe97c6106bd3bb3f38850f;8858;98
+5a6fef5c6ce2c2e3a75968d32bd68f51d0106ceef06bd5af7fc1b28458e8bb40;0b24a8f14ecad1dec2cc4061d882132b1d8abee49ea9b67d75f3324d7c1f7ea4;8858;98
+dfbfeb61411a4184787e3391dbdbc1c8f9b5179ae8d3ebf581e4256e93364206;dca133cc758074e7609e4baa21ac2440a7f5aa1d457569c97538e1aeaa177610;8858;98
+3638e2c807b3397d3e861c5933082fd59ef7e1aa59eda01d191e3de3688f2669;4f57e0eef5a4a81d6792bd94704f4cab145450254fdb59356870440c8eae05ef;8859;97
+19a60f23d53afb337d5f728a5594705992e273a28a4eec6ab6a783226cae6509;90ff2984ee7cda6f735de912f5fe0877e716d0ab1887b21e07182f0f3d99455a;8859;97
+3a6883099079351398f3976aa93ccd6c831a87d8fa301c002f46a17b23b4c1b9;1011e4ffc37e94b1406378465ced6f2d61b883011b5f58abd278a20f26eba400;8859;97
+e4b0c555b7e9b16c1a5922d930bebc4712f5b6eaec517cf3addc2968e88e0cad;23092fc5b4c2158ee15522ed2d83b457e55025d90805cc9775080db4f509568d;8859;97
+07d2ce7a9b2e9dbd913397191b4a20360152c9ce6434718a304df496dae45c33;cc9744e7677ca0cad0d331b9a02c8307b60d98802414f689bcb59c54a72c9e00;8859;97
+22a586e898ad45a3fbdeb275b0778a9b2fbc9b4dac143328a152552daccd9020;7ced123c5036de5722d6737ea6c341ba50fe7dbeb0c687205313b65aa4f1dd8f;8860;96
+93ed8a11bd350f5fb1b4606a53ad5bc5d841e884284e411fc3f1d0da3fb63e1c;8b13f14459a40eb03d063a2f79986186fc7735292ebe43dde68d38a979bc313d;8860;96
+f98783f2d87fed32307b2138f68c57453b3de3053a9c724bc4ead40b1d2f685c;0be3c725daebf8842b3a317401c3847f225a760a544f683d3330374f1b239872;8860;96
+a1cc5a3f19bc46fb7237f5108c89c128a3607cac52087fe0ec68b550d0af4ec5;1852014dab1f91825752aacb18f7e90e8056af0260eb6aeb2373ed2b4694d539;8860;96
+98b469df3a7c5fda5cea01be251d4a0cf3ba99e50c38e7a84d05e2e6eae7d0c2;f7192d4540783fddae7d2bc54905fe8c0b05a68dcba6c7556019c00803f8bdb2;8860;96
+049f95b2c6f3fa9daf1e84c1cfb84415c8fb4c1c4c9eaf5b427730de816ea040;7d0c62e250025cf9efb68b59acc9d1f05464c9fec217a5ecc0792d3c25d64057;8861;95
+7edefac9ff61f759ed7411068f31fa2c446c761b17175354a9e568c95843a925;411dc97c6dd27e82b025da3c5e570a58bf6eb6ed967bda8ed7f2d822047721b3;8861;95
+1ec7457d84a20d4364ae9e6bd86cef3a3d4629eec0f51e28f002d89d5566bd40;00f7fc8f1ba97cc3f21cdb6481ede1c255401c22c942d95ad21f5bc4bbaaf363;8862;94
+091f3fe3f8eccf493813ac8b8cbc5d76980b03e5053895f42266ba8ef9a40f73;d712f80b6a9ee43adae82225e193cad46b7e256b4e027ca831dd2b1c20e1833f;8862;94
+1ce77913681dac14f1d9cac764d3b21cee3efc45bd234a3dda069b1f8688b1b5;8343488331fc0c135f7f56f12b6c062bb44c8ef5a64ca8c484e57c1753e21c53;8862;94
+2abf80a7660f3607ad855d9d5aa2e6276ab77fbefab48f87927b66f1b7aec671;2d2166dc433e6cfc4c1f69dc0ba118328d1b15883c2180b2a516329c7c53c969;8862;94
+6215d96355210ce81a2b2502e5a7487493708301f48e79b4d2ce5f915cc163e7;c21fde99aebf355699c3345a4c374cdeed2b382c19bd967430ad44c5015538ab;8862;94
+04da901a32fcab7a2a6324d62ea2af0d7ebe10e52e58125e63cd2c4fd9b6eaba;00990ccccb9a4dd266c2f768931d50ea230f9335fa0237af25d18a58f386aba4;8862;94
+7363a3a1a88fca706bb35584261c0f445fa9b341a8d9c3c4fc807dc5723cc2a0;6a54925403ee4033d00c26a297f532bfc7fe8127345b9d213240f32203ce5bf1;8862;94
+e4935900298d7384aa4e98bb36c8e36a8c809fc81dec1715283fc8692c60ac41;be63a7fe8977df37fddc55c1dfd921426c33676a90732d9558275ad2a95acba9;8862;94
+2618ba0c18ef894e95cfefc66efda3dfd0c96db27d0adbc6b2be9d1b9e39e93b;fe7656c35881339c8a9e20c075adc98a9b0c334c7b25e2e3eebebd910033db3a;8862;94
+639f6ea129f47049a16fc0826da73dfeeb28df4db72203318f87abd44e566503;76106428e28dea15c815e71f0328b5c1d6bf490c7b14aefbeabe3e0d3a73ce47;8862;94
+34bc06549a44d8d58aabda01b34d6bb567d3e88b42600a74b876249ae5611eb2;2d7e69046ed2807c6a1f33241cd0fed068727371105e809779ca97656e0c7323;8862;94
+32b8863d591d8aa3064075e951202716a8d16fdf1042931bc36e758190316fba;2d1fe811af6f681144a9cd0a3218ed67c40d92b326e7183e1dbcc0fa9f49c5d3;8864;92
+0c9117018e961a92eba4cf0989001d62a1fa8a320350b299ac4b08e6ed9cf03f;44f97c82c7fea7bd473137a50daaa20c3dc141ef43252d647d65ff0af8ab0c82;8864;92
+b2a18dfc85dd9f08ec2ea356f6c1a8177141f055e3b2d7957bd4021415cc8453;49973e57034f06105cd59e49a27d538a9d329ab1c43496eed98afed398063357;8864;92
+ee9bf98e9f416e04bf81f8cfc038e57a8e0c0725de8fa38c1b220ea52955a6e4;7da602e09e7df462f6774a63ebe97423dd487c609aa1fc4a5871ec069ebcf829;8864;92
+8aee1a86274560ef8911ae1acbf4d1ef7d7db446ee44cf8016c02858bc01ce33;baa5b39ad5aa5804c9dc4490cab7fa1435e52c64355c468be3fd425164a0fc9b;8864;92
+adacdd5a1a069e4f9a8c3fa2ff59c11a7105a9344d181e06d3e9bbf39b9ac992;c3438cb9d47726ebbde81a190618ed9a425b21c38f04341233557e4c13c4b562;8864;92
+63d3d6f290c5d2809a38cba55169fc6fed1cc2102c4b4736d345b4a36b7ef1d6;fd454a25b0bf42cdf4bdbfdc4c57c5a06120762ca36f5a9dd08c08b362893685;8864;92
+86a14a78b0500e6b37b36b8a93dca108229ed81d269ac75254329974a98823e9;52a7a7ee2d6143db7246a1a041de7d41926dfbb7262fa3751b0b0cd1e4f00e2f;8864;92
+244066dcc63da71e3cc4da3eecedde8297cf9188850f8e813dc35af046675960;84ef3eeef296318e94883804cda3fd0c3be27fa9598f371d02edd234b5a2d397;8864;92
+1b9f662e37b9d075c81cb5cf48512b5af26317b2171588f3597ecd503a9e66a5;2d6c65703123220509e8ec7ac1fc4521e24bd2a496059035a62ff0f73513f58d;8864;92
+5ee2f72425c9778ccc0b8ac599e5ee45f03b6ff74d23e98427aee7b32f621308;4a089468ef4cf1e5955b153394065177c8fbf4acd24f9df3671b41d72d27c7c9;8865;91
+438d94bd4989fbb83d87309d278aca5dba440b3250a1d8fb1c45e1965c7ec128;109b38892f6e56aa1af32fe840fb9ff7328f7d5906168539f4d82cf1dc77ddb3;8865;91
+88aeac1bed3d2b433e5b4ed056299eddf2ea1fa26c5df86a20327d687ec34e87;cf4ebbea580f239b7be2f08af23c4d71855f4cdb08a037fb953a2ea0dcb842cc;8865;91
+f395d0e291b39b9c9fa84ff0b1e36027cd5c5c994578ebfa03b58de7e80416b0;04b3b2dfaf3ba98f211ac1b02f6407e592210ebe2d2bb6f43a3010f503428384;8865;91
+749129f6073f62c07d24e114ef21e6e16ac22d146f902d0124f18e4909de585b;648f7ce6e56d0c84b9e1fb24bd931594c6dfec9174e1a9885c0a98ea03df3200;8865;91
+038f254106036aac4b814f746fb4f70761ce040fd02d1e95d940790d2600b3cc;7a1b9282714d871081a9f69c2ee2cd184ae671e5d53bfed6ce28b4e47924cc40;8866;90
+ae6b7f100ac7aead57de03e6e2b6361d99aad7d7b1a30bae783991314f70b784;9eb0363b733467fc0a9f721722ddc775fb0735a5cce8bfa40e6df1e19a54fc54;8866;90
+088b63c2f189f70847f793ba22bee16bf44a0a03d2e7ced2f49008e4ec2215e4;2be4848f52d9ccf19cacd8a1f4d73dc5ef387fd580e2a83adb5d93c246a6477a;8866;90
+fe392fee3a28e950f6de31a66cf63409cee366b7289b85d4a82e036d38aa835a;0b64766393f7e198ade2525f389de31b2cfbb5ff5dd31b31b84eaa74513116a2;8866;90
+2620ae43d92193c67b32245665608b8bb274d791feb22947105365ed6ea985f0;fafd42d1008c80d6256012b7c6bf771587bfcdf693f8fafb2fe242c5e747b24b;8866;90
+6017c1578c9399f8c2f7660d09cd32748b0b993425c6517fc641c44fbb22c03e;051d474ce41748d15dfed5c72412f5a1cab0b593db2e3ebcaf0427c2fdabf7c8;8866;90
+4a56dc2f3662ec19e4b232cb6d6aeff5beb872d2c5fbea599fe71dc37e1f1ffe;65fd29468ff0935e56c688c51282ed339d572d83139da23c09a55dacc9caf2be;8866;90
+af00305732611d360c51b810ab79f30e8d4861c7a84d3258958f1b1e80b91598;926ba5307d8e9b649bbf95f8215137c5c43f6f20716237ace35a7c5e68efc408;8867;89
+355cc922846fc770318e0d2a3db4677c6bfe5d4158b5d4b6126005cf5d7ea3bd;3700d9119f810b37c21bd097f2a86491b624883639d09b77ac0bdca1e2fe71ca;8867;89
+f976e870ad6765e8018787258c1cc6260805cd670e243c2d1bccb5653f53359b;75915d065008a7275578778ff85a2f7ffd91b778dfa2f57f7b9791f6eee71b6f;8867;89
+72cba5a7d81ff6ab348cdf57e9cbc7264f03fdfc3704b7115dbc6d9b853b48bb;ab1996a7461feca5a6353ba59171b71751c33a2eeb53ed8ba185b2f6b279758e;8867;89
+bdbe719e76860ed0d4309c5c226f313049da4b97d93266732bb026000830c6f5;8b5d5085abb674d121ea3a8a4c454546d6918d1dcc3510d166558cdfb730f9e4;8867;89
+f59e5245523afb175f18d276476b41840c5464f380826b44af69541a14575aa7;7ae421f9ef154c2562c8211bf28f1408f41f5fb8efb215405c707243be95bd6e;8868;88
+f0395a168dd9499c154609e7e7005169264108237221c5653372270a9a4a298e;a55474b973c39e44320f402cf5d34efed9d23d209cc49d91244a2ff5536b1384;8868;88
+661e3e67ddd5d7fe94a99355e7e31484f36292cf014465846408751d86247364;51f57da7c65012dfbb5014e43a20055c9de5ab5e7c3bd9843791e6e129a2bd76;8868;88
+37cfef8e6a17cf9289eda982feaefaa1864781b1860e2a035f5094959c6f0aa7;d524f5ec6a8f33d184648e3fff56366deb5d489c86794c96ff26361abb20a7ff;8868;88
+fe05f474e592d664f61fb53bf61efeeb588e25a78a4e9bf6016ff34cd54eae1b;78491cc4661320729ea16de02db8b97fb3662bc5095752a8751329b5731db426;8868;88
+9c5a0325acf67e60310f64412193f49d9c812ad90cb63fe1294b10f6a2f9270c;01306fc155248a33c6d05aa6124ed9ef6ddf18765a476549fbf8f8f085f301fe;8868;88
+bcc86ee2179f050b911c850517baf57393d3285d1f5be07df28f43d1c23fb047;7c135ab2c4a57fd4e7dfe3a76809f1fbc242a34560ddf7ee2545cf4942db3759;8868;88
+80bb2a22ae4d687e3a54de2d1bca31f950f54485151cb682f32669abebd50aef;04c5b8c3590b18f75054ca6fc44b7240c9c8ba56dd3e9f1f9d9bb3df174a3d16;8868;88
+72047c33977288a80ee537e8dc947f58b113dff104e7624b75359130c2941b11;fd27c0c7546bdc7476c2c403cdd280b2f5d2b89ec4bb51ee2bfadbfe2b40182b;8868;88
+ed4b1f56a3db4ab8b1fec5a2626345bd3560b465acf1ddf64650b480a21e2fa8;5bb3d1c77708bbb57abf9d5171cf36b6e6170d26f95de0624c5887feade41870;8869;87
+e532ffb5e50bae4b25dd1a87460bf93e6ef4746fb8088670a9b90c5d30a77bed;ec3ea425728d5c16a308cbc69687e9c0b432bdd503dd3216b166fc0fe2a136cb;8869;87
+71051e1b31580bb5d5019938f38e549f76b5f037b2b81a8dd455bf336f6d58a6;3a927c329acf3d2a4d7a4c71d1a544be97a0dd7de3fc9b2bf08e5effdcfd64c9;8869;87
+cde4a1a2095a452b2faa4b5a148e3895c7aa5fe01c37632cde60f495d855056a;4e016e4b8f89c9386e7995c1323f6f489a045bb7109a64e03a46fbde16b8a383;8869;87
+4ff841fdc21e131a1340dd9c72767950b36adde5c55de600abdcf61aa14c0a15;ee0c1d4ce368a15030034922f790b020b8258440f5b4eb5535990396560dfbe3;8869;87
+1d8c46d6eef23e5c0300382119f17da5e8d9698876a228b9b2b3efc054528fa4;97764d73c26a34bb5ab90a628208381ff8822f7934d7e6551792de50720fafcd;8869;87
+45c9fd6542b9723363f7d49e2b453c1d4f58aeed62189e14be5bbc11eb0d72a5;c327314f9124e6aa30fcbd3faad1fa4c8f46c0951c698b3db6514c161a97e2a6;8869;87
+ed09edb0961a90e51b48c2c0c1dcb592fdfb8b76f7fe1c718306d44647557ff2;86f0622a81f4a237f83e4a7c4ca3985f3752386d5dac0b8c544ca80c3923bfaa;8870;86
+858a1ef3b05e5234ad5f3ab9b9e8d7360c733802ecad8fae0fce5f1ca524a668;5d5e4a46a3ab597e84f34e2059993084cd54b5a6d1c9a0ae0eba90b581057277;8870;86
+e39aaca2d744aaacb718d7e5465134d2a49f6bc7c8cc37c4e54344f8effdde18;d87a8dbe9a8be1a99ee3d4c8649ed3a6d769574ab5e6b60f16d7b41931b7fc30;8870;86
+dbbbdfb71274248e1cf44c7c100af774a36ee17bc8b679ea7c639bb7b7616c34;3e56e7b9e2593da1aa8b60cb17f4e24701621a40fe92cc324269d0f157dd0a8d;8870;86
+b780188b8039bb0b36767dcf26fe3d1f81f34f24bc686702e76a86f1d99c5183;400e31f3f6ef85abc35c37004e3fb09c70c783cc5c59e172d9e4bba29c2c39d3;8870;86
+7133c80e547fc24a1d8c339dade2be80c761daf96ba1767d73c350f5ced76518;6d5e282079badd4de6e0cf5417eb93db6a1d6360091f478947f09a33d4b1545b;8870;86
+470cd1e480513b3c2b7707b5a7fb3a4d57421fd2d1bd4ed4c85777c37e2511b4;bcb3f3d0b5c8a4fae72523f833d832219beab71fe1c078fb7627c4b81a7d3df8;8870;86
+020e23df8f04c0b059f8ee7289ab4de450b0880582a6d1e99790fa109bc0810f;0f63a62f117563c102f6ecaf8a0d7acf2bb31a179119016f63bc3b5d084dafe4;8870;86
+41507e5162f28706c0f55145427523a37eb6db3d3d16ccd97fd9bb034558dc4c;2526ff0f0b276f49e57f3880ab9b3fe80941b8d3edde0a06cbbe01edf6a72bfc;8870;86
+88b94d925ec1df08207f2bc40740eb02726b4e7ea2b3b6c788d1ea8d2cd0f8fa;ff83efcf5a8f649302c6b80b6eab43a8a60d1f57e2806210a8d2adfdca81740c;8870;86
+4248bc9546f331759324506aacad14b5eeb3fb85dbddd6ae44370e20507e6e71;5e8d57cd9101011f542dc2a3c2e69c5098e10771b435e1acd147588ff16710e9;8870;86
+95e52f20c4568ec220bfea2fed9e895cb2797137a35075efec27aa30501af0fd;e7d9f08aa02308b84743f5d20b03e06c37840821475194a418d1d251c20bb1f5;8870;86
+086d162d91b3b8f4a417f469607af3e7091bed5ecc90770c46adc3795cbe3213;a90e0d487400eee0875900c9020f7e4236bfdee4de4e5601217877378c9bec16;8870;86
+9406105551000bdc03aaac5df123f515ce4b370a0ac69676ff0a81ed41534873;b0b571b2400bf0acff19b345b4274d58d3c250ae6aefb755d7f29fd495a06928;8870;86
+8d4ed4ca82d2f3acaccdc3c0c4d9bed0cc8e6a1355ab6d83e0e3e8ca1dd17704;b8808b08c5bf0026b0c29cc13818d14424e636aab1c75dfd976e332b6f4257e7;8871;85
+0cfdbdd80fc4984fac80693c50cdafc4180b631be87b42ee66095f64395ce73c;5d9f12f7787b5be3a6bf947ef81cc9fd33a22ad191961af957656d8b490ef975;8871;85
+56d0327fce51a93a0d7a2670e9e6d49d05cc337e17e81f7ea736ddfc1161b5c8;bb1f733b7acc25059c58fdfea89b8ededffb9e681ce1aeafdf05dd27092a72ab;8871;85
+00e5969e3299807cbab3da43f09807e859030cf63146d3530e277ce46e88bde4;569ca55014587c44e149a9ca337ddfaeab6c89538f1d1d518195f4e73132d2aa;8871;85
+c4d119b8e0f2703739f1d8004f2aa6b61a44fbc42f87dc43bd71b8d257d915d8;1c8668ab6888568e5e429c6ccfd312207fe1345abbcb30b6aa4db4b0da33b733;8871;85
+8391d2a611ec7013dc9eea52d5243600a911047fdb2f58571b942ff9ac4b4c01;5ca1c2617f3d7705e7f82129353db0a161c9f6a88a3970881ecaae8f3b4a83ae;8871;85
+232ce423f72ef997059cc402c98c6e113a9aa2a0a7fd6137d2e49f93944271fc;cd6fb34d169d135e76da7093e7c9699d1a38199f5bfa54f096aaed437c35e072;8871;85
+18c359ebe6e49a381b2b25a38f9b85c21ee32b99f9b3f5c2b321f21881d21a1d;7889dbc91eeb4564627755ad6f5b101c68ca3d89a5db703fe0992984ce67eeee;8871;85
+b045db1237cd8f61fad406bce7c1eadd4ed214227045286540d99390a653cd76;9949a41abaf8586a934dc6bbfadf58350d03160fd531191de12591b1f010b522;8871;85
+2f0b48e7d6cd993f6a9407e1e7927bba585dd93a6751f143a0790bd6a8d44a12;69657cd231a536db37ca3109452ce069a785251b00bbfed69c9abdfa5be45095;8871;85
+5a2358cc4616d7703bb55035079401659598f0763ec0873e10386718340ac58b;fc63c217b814f98fbd8467b41f526d99cd3d7b6052df98b0367b1ed36da81520;8871;85
+a567d65fc3bfa666182cccefc606bf6670b64cbf844806f4440b0ac06199d025;1b1018148101bf746c34be8851141c437dbd124d0d3bc408e613e84ddbc14624;8871;85
+5e7e2d947aef0ded7120cbd994f7e3d8762a7c7e06987d53e5d5be9b89ff94a3;fececa1ed0fbc6a5b47bd31655d9078fcba5e47c41d0b74fbd6c045f58df5eac;8871;85
+953e392c92451a0b5c0dab332e612273080097e0884e998caac46688a873ea4f;aafc4b4f896b2f61d3676762309094f6634d677a8d37fa36bed325e47f63a14b;8872;84
+d6a86a550de2bb33375c4a995e6e174f34b804cb7135aa5153853aaa4f7c557d;08dedd3d7ee1f3f221580ff5c31fad237fdf48c15b8240e49aadcd0079345eb2;8872;84
+9e5a5699852e35ac4159c51b860c82186faefbaecdd16a12eef2091b050bc7ea;50546b4156781178551967a06eff9061bf00d505915fe3cf598145f353f970b5;8872;84
+67af0756c3c092e5d5b7beba01234d09a41fc3e3c32b006073f57a3894a17d92;5fc306812a1a958883800aa27d32d87a7f26f608e3472c53cb6cd181819def9d;8872;84
+845f9e241867911afdbd8d5923ae88e9dd9442563286d5a4c6ff265b7805cc3b;3add34b1f5a18dcfb05b1f56ee00c5e39c8b8af09b564328023132db4c22213a;8872;84
+facfc19687f5622c1debb93caec53574e6fbba038f24b11760c2c67dcf7e2ad0;283c8f2ad11908a3b05d47cb6e03618d3fff583390eeaf5ec9c2ccd85a7a3bab;8872;84
+3827cb6288e7cc535849285fd313a1ecdebae610032179a72098586a5845791f;684e9d800c91ee299ff4a2806f00d1bb524a15246e26638e6019ed4f2e0f4bd8;8873;83
+78ef13e78661bf71e3dd5ca2bd123102e1501f11f174bf109b3d0f7f016bccb8;65d1f3b43b6379dae539b962bb525c9f9986390005b68601cb9d1b5c535b9141;8873;83
+c60853fd0a0446dbb2a73927a87b461315c45ffa1c3b9e4453b1205c41f2a29c;2fa647081bc07064c626355d885602fe7c757cea716b25369b5574ef89ba46ab;8873;83
+6144f41621e7c5487f5747d426d7528728e2f55b28fe6b68d9652e3ede442ce4;2600a719fe3325742e90caab04ff961df7df9314a2c37dde338bbbe73c4e23a5;8873;83
+52615e1d14756be365dd7ddfcfd9aabc3d28614ef17f0267f5256f591b0e95f3;217ade0d7be1ce687aa0a7e208bc350a8d3c81d18d60fbea034ee5c482901ae0;8873;83
+630722cb0c1ef1e5af3df819be1a519efc5923156dc9c576e1a00c6e1cf93d49;9d90cb2ddfa9b480e0e14c09fb4fe62184d9f056e334591993d6e54a38709023;8873;83
+b5b1a7f67892a970c08e2277969c7da5f140898eeecaaa573853ef2abfbbd8be;08ef99b4dd2ab80ef1db173f88319ed764891ef8e84d59883216a5d1279515b6;8873;83
+9d210bf5a375044c4341a9c988ab88496d460811fc18d422f52239c652c9652c;5d72ac09966386e489d63a2d605d138224f6a269fb9bcacd3abfcc97bd00ecfd;8873;83
+064601207fbca2364f160d82b46d6f422a6894c509c5dd5387267ed9a74ca0ba;e4f67da0b3e3442d925a9d75ce217a55481bddcfd3a69b85365887e7232bdeca;8873;83
+52b9a2f531f2c8820e5cf27795fac0b1a69885579b4ad6a99680bc28cecd3413;dfb2433426bb054c2044ebcbf862c8bb0a08f359d9aac9b07f672331b7d65ccd;8873;83
+3369bcc4ff2d0a10b8ccf079961a1dffd379aeb79025511089cc0ad026325733;f90312baa95346d0330e768001ee5b3022d8848839e2a5158e544a8759524e4d;8874;82
+b4b1f98d7057e8742bbd78b35d0c10bda79b7d6e52314d36e95ff7ff6b99dac6;1fce9e8fc376a49372d078a921eaf9bcd35c688da64f92eec41354d28867a496;8874;82
+cce0dce9e6dabcd24668cdcafe3df254a12eda9a438beece4e6979a39541d9a6;2ccfa79a7f3f99ce5389369461691b8d0f601ce99426b6027a7eb54170ecb289;8874;82
+de8d342d3c3e42e769b5566c63335b09053d557e9ad6365bb2e5de8cff986cc5;74d7f206b1ed909798d62fee777aa7e6a43fac1c6125c833aea576b35815b9bc;8874;82
+9c5cb88973ce3459bd55448973342a4991e2c4ec878830c153fb5f8d0d9052ea;512056dd0f1fc1358fbdd966c72797b304f59803c430b5ece16e97b5d305d00e;8874;82
+ccc1f4f4f9f6da95849e5f50cdb3a8b9b54947e91a8f131c58a03bc8d4ab0adc;bf8f924fadd869346df75187b9506bf6b1ea3b0b6ad53e48d7aee51eeb01771d;8875;81
+7ef97d009074c492ed11dd219b74533eb4b67395155db0ccb257906a0bb68e49;683361d529a826e0288791026b5b0cf347f79724c89a11c2482d0b104973b00c;8875;81
+a07f8e6d4b491d35de55a0e0c58ce6313b592430d069e094200b0798b2685749;88ee87f356cd19ea5457c88a689a6262907bfd442676ba7fc9c017af70eee0f5;8875;81
+133d9a6713889a10eeddfb4a281cea87949cd233816a52e3db5d0f5ff04c610d;ac72be769d0d4e5d5a87523cd7ce30c3083449f8a812943b0fcc174a3d64fb98;8875;81
+9533b18d1ed167bce9511490479372356230b08c9dbc8f9c72c29c15fff72757;439bbb7cee5ee0df57a4164ed435b38447e09689cfec068e139c98be46043eb3;8875;81
+a655824131ae6c671cf4bd435c096c0d9334c2b9837789e2dbafdcf151ab4dcd;14abea5c1fa54a974d586c5200bab96b7a44711d25ff7e96ae2a665df7d36544;8875;81
+9ddfccd4601b30e8a0962d7ba472973bacd6f66fefb5368dfb68e94f0551ca96;768993e472c3663425eab6a02fbb96c90d4c329f8b538906311a494ab4f317a2;8875;81
+4dbef0d8d7943fdf1a8c1a466a53653d2c6afbffe3136165f94f54693d2e8492;e4bd0e38600a719863c7b142d649b14358cfb91a0351d23caae51cb437478332;8875;81
+ccf3178691791aa0438f0d7aa4cca1bc4b3cdaf0c34505ce4505b85a74694636;47638a6744709ca182ce767ef275ed381937eeb5ec7efc10699639d157fe8b6c;8875;81
+fe35b47bb00d8e0ba0fa0fc114e40bd2cd33f34534d105ee1c3cbb9e3509eb09;28ee738e2d30b8f79b8435bc1fc736dab21ea1c6c73b74621a32264cfade34bc;8875;81
+43ba7c0310961f19024d08c630ddac0ebe7f727060d1b8af4e5e96161da3e2d3;7a516ba6ff4dda7667c39d5050685419db1c0d842bd079ce678f1806479a7a8c;8875;81
+f6ec4db933255b4660b5d0b77140a2c1d8b7886ba0e37658339fabfbf3b96715;629e0503d8491cffe11ac5e36d6fbca35eff9c6dfc8b2f1f624b76e733f7fd6e;8875;81
+2ba1d7dc19f3a7c06515edefc642e1df52e0071e51f96b64bc13c6179a4a4b80;cce4bb6df2dbcbb8511afd4914b11b55d42e1b90050f202743b0e38e561c2483;8875;81
+01b29965430bcfee883d87ec3acbd8c2162d2deac0cdc51d3770028d0c4f3898;8e32d63d1c429d57ed14bb9a00fff79a2b771fca3b92b63bdccb101885a4dc8a;8876;80
+00879d580e5542109aff63653e4a67d5164c71ae72305043221d6c5d9b4016b3;e32ae97115bf1e54c5c4bf4fc19228b557a1a65d351b45e178d0526b51d97306;8876;80
+5cbdf83bb68214defe4a597c3d7a3fb50df69684e2952cf81cd5e9c80abced27;1c3288f8743ccd8358f03e65028e7b6a9bfff70d98524f4913db66eb54e64504;8877;79
+129367076a07c2688f950c52d9a72e93aa6b34e3abc9a5e6880c852df63c1441;65ad0256a9c1b9f64ab145a02b79ab3a94dafab176ee9e74d6e2f852badccdd9;8877;79
+42be6a57336e180cde9ae566df690ebd7adf776cf0c7da3c9995e778be1e1d27;1b94536d4e1e55117dce16929fe3b75d174e717446affa996624553fd6c489a3;8877;79
+4758894851bd14a47154c359f68f5789a4c5ad300b76e6e0d18b1d0142d99607;04c97c2a71efb12855c8fa91418f9de64e4b7aa33641738f6f104a005a50ffeb;8878;78
+3a8fbd5f622dfff45733512e53e3ff423c681374ebc28bd297e926824fd65b4a;178c51cb08198a9c17c5c75f520454e46ea28615ac214ad273e0ac47a81e654f;8878;78
+adf33ff0d811edb2cd950f7e9bdc2f8f436415ec84e694bb50a04fb7aff0c9a1;6f7331e0a4405df6e49d7a218fb8eda52b2084c7f6b6df841b544caf152b2329;8878;78
+b557874c6674cdd2274874ac55e47ee56a97ba382c0e43e62092732f3d58de40;594b185cc2e890709ba16f8df0ac7cd833a9d8b3e2a490500a398cd8997ac62b;8878;78
+0e12e91345aed86a5df696d395fac92688605b230256614db4adf3aa6eb7bd3d;8c1e6a8c1e20332c741acc6196d42bbcc622c157ce230328d64329446a976167;8878;78
+fe6e70baf03752e88775cb68e398a8bf0cd431debf587c8fddc238d2382695d7;2ca602fd81f6ad0c224f44a8d7ba3794bed9b6180c1f72c1b24cae688e8367c7;8878;78
+3424e0f1529204d20e1434fea21364aace57902b2f4105767022e467a3cc4cee;50299af8b68abada1b27b22331d07e73817b48278d72d77f7c443c8da2b1cd2b;8878;78
+a675b0eaf40e07ee33c2a2f2e9e60192945c356c00ca1800faa6f173762ebe36;4f78b0d0e415e0c4489fa86eb1d8e85fc4f26237d350fc25913e0a3413c68e5a;8878;78
+2de71a23821af18193ac6d22a182b19c321f0aeb33391e7f3f2ed0977d69696b;49767855653cc320b5cd2c7d020d17cae2fcc426bb02777137d59de232121fcc;8878;78
+de29e00879317c199264148221e88f82f0e88020ecfd3ab60caa8314edd5d6e9;670e388868b4609ed4476be106d4b4f70966bfb9970e20438015326657526aa4;8878;78
+97e599dec57714667a7e13987b23d8d975b72046f0bed084dcbd438f0cb8030b;d3a36925148c2e123f4265946652c7cffc1c854fb63d6943fc1ba402a3389d6f;8878;78
+3e23fc3dd451ae0f3430a395c891f827db9304cf455f84ba1213130489a35733;2672dea14995a88e6e9350dca62d2a45d16795af7785ebafdb62d51bf6d4757b;8878;78
+53e904dc04d812ee8e0da8129f2039552bdce7037fab721d83253807d8872e9a;388906762a37d270700f0f899a7b81db3caeef34e9cc9285291ec6b21be9f3ec;8878;78
+9c392e9549b7e128fa061b91f6eaffc7ae7c052d0333d14085a8f5b4274a3c4f;53593744d6cdd2776296e63677b9e34e57ff5818ffd9329bf4bbca8702ef407a;8878;78
+cd051ed6549b30bfecfb164d53a0db3ed7e3ab053b1d357a6a6e5e3a0859c897;635ac4b8e86c32f575d3abf92e4434fba8df0b8c353ed3a2a58baec5323d1487;8878;78
+8616ca4e203dab68dd4bef7fe893e0dbddd4a2b98a4577df90ed5fba816e6e04;a175c3f8eb0fb0fc7e7591ce8ef6dd665601f564a668f4d6319a503a5f6d4def;8879;77
+4be5d83200c798d13d9309891c426167e2aa56fa2e5e94f42b77574d1ef9738b;11746b074d614f9ed746e4f1740cd61cb397c47f647d8628185c2883be6f2382;8879;77
+88cdf886df0fdc09ba1009717877d6dc7ae8729175178b0e621981750f390347;dd18d24e53858f8a700f58c962ff6238b6d9f220a0bd9d4036df6cf91900bcd5;8880;76
+4e018e6ea4541020192905fe15263b90326cdec1612748ad529156d79d37f62d;3f662d625e424932da0fcaddc6e2ce1685fe42604dc0506f411360a4cf8db9f1;8880;76
+dff09d0a659f0e599e7a88227de7b3a07ec408d06cd5b457a6a6c80e766947b6;163c6c27a135c7a63929e3e1de8a3ccbc40da0c39dc81e7dfcbb0a08fe2b7cc4;8880;76
+7cd9595ee9c4583dba7369f01ef0f54f782bcff799fb97cbdbca9734bf5070d3;9c2a5faa2c93a7290873f85aa96539360c4c2bc03e212331e5eed5af1a3fd4c3;8880;76
+698a8f62d09b5b7bff3f7d249cd4d09e424e04ac88d798f5c1d2c38c87a0fc81;6f6b6efadf355dde6ef50442820d0b13cafbd53e6a5272ed961834ab1aec425e;8880;76
+771f405496b9f5eacfd515ddcd4dd06cd35f37ae33a528a58087c6eee616997d;ec7029e24b7b62816b447c36244ccf6faaf92eac1535f394d15b6fffb9ce27f2;8880;76
+449d683dd84e87e93181f1d196a767585f0e07f0309e7ea9d1da6657f4afe1b5;6c94485d92422f1f97ccafc02172c151cebcb814c9c972876003cdf17fab8e41;8881;75
+14250f61a300b0fd90d0903d35c13e0ae2021cdd8e5186c5fef704d027462277;62229b5d2968c1916834494135ce8ddfd9999ac33b73d9cff157c22b57b2e897;8881;75
+1aa0d86cc938c11ca043ad720793855f946c6b88ff35289f4ed22cb6728de12e;f3496ef6f7da78af46f66b21a50b2332a1ef8551ef380260b1fbf3d11c8ddd60;8881;75
+3be1f43f58086ada338c62afc6e39f8dc03f6d13b088fe55109df228eba492bf;15dfc541d5594b6dd832c6885f7c201f99a39264d04c8917b16e16f19a541229;8881;75
+956cf8cc0d84ee9fdc0fbf299bf598cdd9fb72ff0a2ad6900499cdbdbffd5c79;3dda95af883dfd45dcdf7bc605f78d845b6115d90649e5263ce085d2d3d51b27;8882;74
+ba48d2448023d3b04f23ebcaff8d89de0925dbf649b5cbec6b058ea0c381380f;4b0c6952e79208a3a4e77828f29048c7b13015863fa8d79ef70202cc499c52f6;8882;74
+dcda1208dae846a9cea196ef7399bfd1fd835c694545a5d7a4f68dfed6895ad2;893bac47c45f77afc51e5494d4681c5041970da207ae782ddc8535b150d423ab;8882;74
+f91c4b711aa452ff0beee8b80ca18e04a89470121b8765cf3851962d2deb69a9;90c9d37d9c2399ac99f16c7aee85ef9b0a1135205091f5915568e191c21d06cc;8882;74
+19082fd709193dba6224e11ee4e40b4e8bce9d3e21c7d3c020599f10ab6b8030;b801a400b34e6284d953f58bf89351d794232a2afb080b4d6b43ef46f2fb4717;8882;74
+d159282e95bcd825be93cddc21be18d2cc5ee83deb994c1644d2f76d20a283c5;defaa5f06b36e351c4983dd9cfc5ecc07a40261be913b66aad58fc13d3fc53f4;8882;74
+a684621f611e5c6b11a6ff8905879c38722b77f725813655dc2bb886b734bbeb;a74258db73ae2c8e87fa41288db6d0c6c0797edda620d8ebfe305634e2930df2;8882;74
+414b1cebfa75811b00b4d24c7525b69ece6922e56bcdb7ccb87a89febcc83d53;5a203d67e182467bb7a2769e3ccb553b42675ebd733bf7ae290e00183897519d;8882;74
+49f7b904553cdd02b246d288aec1c0186b6ce6ada0985d3ea4beb004e6f5c7b1;cb6a62c0ab9297f957a49dd5b3ac3a13dc8b1d309c747c20f95c1305797a18b1;8882;74
+48dd5bb5b0542c23043821d5a7b2068d458053b3e2766bcbbaacc37cfabec808;730eb71386b235f82405dcd8cf813a0e722e1929b69da225e69c0c5a6940a4c0;8882;74
+03f57a255102c8447fe09f1f2b6f307ead84f886cdb93c77cd691b4f6295d5d8;32b1a0edd41c6e8f5a02f9fefac33b686c288a103350448aac3cafcafbd9bf7f;8882;74
+beef62c67b79b4b9f23c8c008dee250e531b65d58cdea39613d5de2fa6d2cd8b;5453e4e3667c58814adfaafa74deda9fe9a12ea5e11e406b9b8fb96ca6a19331;8882;74
+58252566b5b4757e501f66a6f626c38963e347a14956f07f96fb9baa5cb06c56;ee1772f0a16574404fa8628a89abb51fb4c45c4b360ec4bd90028a5b218ceb62;8883;73
+0368ed1eda0cb797232d1329d0d13dd28783d33bb2f0834a19fd7dbbbda815a2;d051a5ee763701105f556f9ccdf41c586bc69fcd61ed2c40fd1dda75e89614c7;8884;72
+8348fd77633d7d07d23c736fe018c6323dbefe95c4e5bfa85d6951b4d1616c19;6138214ecde7c1cc0241100a261ab8b7008de0b7ed2bcf5331120dbe0119f95b;8884;72
+dda407964c4732ea6c6982f564acf30c3ed6048efe6b1ac32369797d74a65dfd;ccb524dd6f1f6aa2287e1aabf3ea527f3456953f0fdca2242a8553155fd8e696;8884;72
+695a14a95df25f04fcbc03781385fa5d8e8500693bfe005d92ef9672ef36e0f6;d2c18961607370f2b908e3f6f747a1116267c52432251a81af137f2a384375a0;8884;72
+ab8fa13d294b6a40e04928e12dde4c5649642fe72e9be3d8e08f4bf14f878943;f28e69898533868348bd01eb3074a40e5684ffd1235f988fa2fae0852b804d5c;8886;70
+9e9904076a28405dd8510a993f6a803aedd1744dfbd8a1dc1b4e2952f4b72107;607ff6afd88032ee8211c39c1516f3b3843bd738e72c01bd49c5fabd0dd9c6d1;8886;70
+40b8bb69e50063694c403031c7cc493f340475c2edcf19b2ddc459941d54e4c9;fcda086e582345e4533bda153468f227ffcdb0b9442ec5053d236856986ee070;8886;70
+7cc2af6d4637f922678f26fb9b6cab81ac1313a3f3abd018de1503ef2d534453;b18705130f765cca4a1cd6eba7cd23dd07f7b3772aa3130fbd3fb663eb83ff94;8886;70
+86d0bfcee1ac54f8635115bc2c14af855235b0bfe2a5bfe52434c0cb409c9754;7974c358e5b27d55b65d18b82fd3af6d5e62cd64234fca46380a8d29a79e0059;8886;70
+1f45d10ad480c9cc58ce756ee83b59e6bb43c4b31a69ade61d2b67412c4171ed;542594530bbc21072df91d28592fb6b0f7fba88f55bdb0c94f869ad8ed062918;8886;70
+e5d8e3693649f9217c21a0e618d3bded9d21857a85f01387725d7f6d35d213cb;1cf0a6c2a3113540f7226a2f18169d21b17625d7bbb2bf80f0e4876f91afd038;8886;70
+a311d6c926b86748582f5b9d21e4fab575a8451cee3ce87210ef466b8d99bbe2;924febf8031097014874550114807092898c42de386cb36b9625e700d5f1b067;8886;70
+bf3d78f213724ee14ecde85f5a3be364a7e72fe2100841cf1c642f289890153f;824d9b1fb63ad3324aa42362cdec819e1c0b3cfbd3d39c3b54a8ec348733551f;8887;69
+976249f11ec521871b01db9c6402e63459d98e0394fcc718ae650d631e7233b0;9fa8015b6cb5c4f09e13466e994d0ce2214d105540d37840e73c8b1e1cee548f;8887;69
+51913d90efb41b97afcd95a235654462e7900caef5a693fe02cbfc4a8bba1adc;41395e816a0d0490bc1d9533197e56b26648016cb759ad62e7eee169e6d25670;8887;69
+4990e02749703527e906196aa274c1816042179f7ff32294ab747083d00272fb;680ad595610ee33ff46c8d29f67816b40e5f4e22d0a92f1a6febfae86e7ca768;8887;69
+1e456c81d81676faca897b22cd82975eec5dd9f889e1e0329e6d301e6d16af56;e491809ffc558d8c41c79aad7ca1fc90913fe3b81d3c51084e278e330896ed78;8887;69
+ee92a3a14ee63a0c02a5e039130f7a3c0ee4919618fcbdc3b2143e00cf9e0839;672dfbec1206824710c5d5b2b470b31546c835a7dcd2544603d5b94a635c08c1;8887;69
+b26db1a18a47c4aed750d68abcfc221c48f45f64aa42f095829bacd9e28d4ab4;d10a549ffae4b5f75eca8f133803d6f177cf10b5d4a090e43f71740016b53b20;8888;68
+5007ec2e6bbc5bbfe75730cab6bfeb414fd1657ef26b76f64080c91093cbb8c9;8d1db32f5050e6eff86c8e0d9ddcd08c16bb18f8e7005b01cd67e4a57ef290c5;8888;68
+5c95b97b4d17f1ad13fc0bc88bced63be8fd5fa2f192edc8f97a252552da6b1e;a42e34ae082a8ad318410fbc2a26c8ca393594d4be7152d34522b85663bf6e04;8888;68
+4968b3f7dcad8028376bf6b2d1fe7663bb1f422bff48972cffa1beb07727eee0;4ffe940d148269dd3e49237a7f6c5958a0e1763227c5fd6518b701b5fec357da;8888;68
+9041739a21f87c8520c4a31aa20e6953cd4f7c29a78cecc0f8b754669ae2876f;cebb30fff9f5344c8279fac9dde47c0b9414c880238cd247fc3b1fae022b227c;8888;68
+db3719816da1e8520d963671aab8b392eeed8cb6b113d7a6f11d1526c189b590;88b767829b97a7273997f7c818235e400a3e704b5b7f4e7a0bdda891e64b7e5a;8888;68
+61078ad748310124f365d2568e363e75a8309fc118fcbebd49698d075294311b;4ce2eccf4e44a0039e2182360ceb13db4d281f2b8fe95073d94d3b1bef79c7ae;8888;68
+760eff27880a1369de62cfdc3bf1e705f80d5d69ba191956cb9058490c358b87;c66b06f0942d78289d6093bf7b8c5576f4e5550a2181bafaf073a852bd06287b;8889;67
+49af6d435774ea2184390da5fa2d3e3192cee41256bce43411139db3c048d66b;9da1a0d885578a4eae3af6d931e69c0c96e28a0a72c665289247fdf67223403f;8889;67
+50a17ae42fbb80ce18f3d32daa8bf8ae4ad23423c7677933c655ee7a10831121;3b7d6b4ac45dda64be190b2b65dc9cfdd121970173950f9a2d135f144a31928f;8889;67
+ac624a1bb4c53970a7efdfea2d56d2f2a567e4c8d8ecf18efabf2b129cdc545f;e934a28b9a569fd164f4469cb4a80129759764b5935143b9402e3bbf49bff262;8889;67
+c759e410d22e202178b256062d225e016cf1c573b19b6fa3c8baae91854874c4;1b2dd18c986312cfb0fbdff6a4f9a49edb58e8b2d0eabac8a618171a0fa96e32;8889;67
+b60ca65b65ddfa2bafaab11763370214db2fb047a3892dc12c38793e5cd12357;41ed2ca24a1d38c7f69e55a011423ea97e9d16841fc434a4f57d317753af75d3;8889;67
+a4c371929a51d66bbdc34aadb53f46cdbef21c4636e7840dec2b1c5ce8a2d1da;59a691f009a9a8c0e3732b21ea904c7e7a4b7f921ee58a560e7f4d38a955e17d;8890;66
+71e081ab59a432b1eb81d3896c35c107164de5b26de18541c300ae21e080b855;b66c1d3662756eb004667955c1e6826249a48b947323ecb49f1a6b2c29781653;8890;66
+7d2bb49903508223f7290cf7bae98821673077a73b860d73390efd1ddfee0eec;f7b9861383fda245c8725c47be2be2c9e64a6ee0d21ddfa56157d9fae32418bb;8890;66
+96a2a73341fcfca43e5f8eee6f0cb1a4bb6a77bf25a190777789e6820dcc5362;883ea2aa49bc4e1c611805a798fb299c0919014218d87feb5365c19288498229;8890;66
+3451fa4ede562bc3acb93ce2ce69d1bce71da58948b5a0318847701632166b9d;3875f84a288860e7bffe313cc51cd111e04e47baaf32d660628caf00aab3bb35;8890;66
+29daeb662461353b3918d3d5963a58cb23af9fa2d9bb14d44ff593d91efddbd3;9747a823ec47d94b112e17ac7b2f6f211bdaefa0c5a6131799542bcfff180b02;8890;66
+173e4d106e24a33af53fef326767e753a024431946645e452ea70f43f1f3b2f9;996c95a1a928fb565d74f94abd418a3340764ff9b8ae1ee95e15ddd2e1147cac;8890;66
+a6e9380e88f66d8702fb25f9a587763bf1bcada8a1ef1f375b9873424d5f5721;74b990fba641ac2ac4b8d9d38f9315a93e8d47a4f6b631875919c1ec5e03aee0;8890;66
+800afa37b37c1d486be3effb6d86c76fc9917a67fefa4057cb6a1008ea339d56;c6fa53b72fe8baba2a2b02b800bdc303dfb3c229276cfd9cf2645edc5b6372e3;8890;66
+47e7015bcd42e87f6e1c94661141f1d93695676a050a4f8127631a1232bd024e;289c6eaea4eddf05113d5f20f53b437f59d9ddcfdd8a21afad0612477176239a;8890;66
+72c8bb8dc4198075531cb957adf3f14507efc8355097359246479df830e645da;b29772ca584240484c987e6ccc8f6785d8a13f6a68d69bf98de35b6c444d75f7;8890;66
+3e97b2235f34efe98e847cfb12694e8ddee2199ee37b7da2aeb13cf0ffc9809c;b9a78f7d5ec0d6fcd3cb353fd6fdb5790c3a937024629d02c20e9192b6cf3849;8891;65
+84a8f29f67a269bd964e8320d3c33946048543900a0d70168a8d119b470afa33;072137fe1d8b1d29b02e27266436793ce14a6a4407c5dd6cee7c54aa995f392b;8891;65
+76e71f8faefb216e0f9f2415fccc7b86bd9843fd3403108978a86ea27b562852;08ba2b209ef76afa87a5ffebdb6d8a4cb3a4d0b749094dfed323c89a81014fef;8891;65
+bcc650fe6adaa92852ccb0c53f1700f1cb21d89c7e1ccfc881b1ebea06219b91;b8e78a157802d0cb47e64ea7db4cf5be77147ae1f831922a53f3cd6df913ce91;8891;65
+6b54c6495259461abec2add42e0daefcd65082b643178e37b8c8cd81c0a4e4c9;1ac51176813064ef9811ca1bacc0b5bfba8a5ea7dfae767bebfb282039482c9d;8892;64
+358b44fe1c6d2ca19463457bc0344526c20327c7bcd88a45e5c0238cb9735260;3274cc17858ceae54c43b98b4ad07a05374cc8e80032bde8a992302b0eced8ad;8892;64
+b7210a32421ef8b0a7ef97bd3c9f5d3bf98b75b38d92e16186f457bf3c92f759;662152a183fad83b6163d22433864e49a06c5937d1acbb5aee53006a7e133175;8893;63
+4364b39691169c0a36b8e1e2f9b6c4888af146c4828be8d5d2e3f2e3b45bcf93;0e400b6b1ad7de58d5954cceab58146718afb85d7f91dd24724f1463378b7a4a;8893;63
+557521542876ac9eed6f5927902922e0e584e26010129ba31c48b1266f218fdc;02cad7af6356edb8cc46916013db15608b140112708f18c88799e34e84383a5f;8894;62
+a691175ca38a479286a063bab6f22a009e951d6d03ddba26875fe45665be993c;b684c374fc114985f4041d5ae27af4262fcd044f1c49013177f9da0d78cd726e;8894;62
+7c3de90c155bec5ca27018dfe92d5553b88eda6999a152997256927fe0198c6b;4e914fa5b4f600047018be0ac2cbdd3c7a0268dcfafb0460b8ee50f2f861933b;8895;61
+157a6865cca660466f06b7bde4daba55eb6f917a40824beb5bad41f09ba44ab6;8f76cce887476c2a2c3fa17088a88b427faa749def21a65d4a17966aaa4e0874;8895;61
+708bc507d549529dfc5c597f75f53b019ec71849934958769984750ec4e0fc03;5e19bb0e0292185e2eaa729333d001ecab529e87a56474b8d19a53d4d3e96b57;8896;60
+c65fb851df64e9041240a7c39bfce7fe615ca124a1cde44739b30ae5ddbdb6bd;adee234c9234894f6efbf1ab6768f4a723ac28b11293896344f3258a9468b233;8896;60
+4911e85e5f7e74ef729e107a27d91e72442b99fe2adcd87fa9e615ec97ad694d;68f66dcdec9b12eac99e75d8da5eed8d942ebe49979700218b0605e19c03dad2;8897;59
+90806d8bb2530c6570312feb5aa06a286c8ce64ec0672cd34f95373e9cbd81ca;34bfa8f13591df10964401145f5d5423505e3945a01e5b7a50ef462037e2793c;8897;59
+e09847c77bc9b109e35c6bb9ace37a5f05bbb1a8b3023dd5e729e621ef6a462a;eb144ff67d860e34015b45c618a6ed019f20d14a42357644d73bc197f7dedfd9;8897;59
+b7a34ab47d64e848950b22e3d5bf278480049c8305b646c2810dbcdd21e1b46a;883abd7c2d2270c23f4d2961715a6c7d01e1aa88fb6024f76626720b14d47e70;8897;59
+1400664fdc9507cb21d021c6596e3d7533bd3c26ddb490634219c7bb5683107f;874cdee0f74f77b46c8d89e89035758aa71dfc716a5ed06e730f511b9b81cb72;8897;59
+3979ae03713b96a7d8c46b9da94f55fb3a9c773b8e1110edc2875eae30e7ddb5;eab7f43a941ee68597ed71e547146238a567296e141d579e6824667faf4d409f;8897;59
+96afbb98ed3ed12cad53ae78774fcf2970452c8403f903cb5d71d859a7f22cc9;1993f672d192ef4dee97521765f87cb5f6d4c3f7127ceef24481f53135ac43cb;8898;58
+9ccfa6ed61d4e4ea96202c11063d15304c1ec78a5eed689b78ebbf2f79e333e5;7d7e445f2fccc82c94cc026a87ca5daf7666616a759dadac4b3fd91095f4b371;8898;58
+8c1902e04effe1b4b0ef5198fd220036b1ddd2a973f1fd8693bc47f5172bd30a;d734770185f4de1a0c1c5e9ecfc5eff1ee145a2d7631f333ea0665a4ba4e76c4;8898;58
+d77417a39de5dea9588cf93cbda24919bd1bbfa5b0b8bea2fb2fe86d30510b99;8659ed05fa10abcb8847eb646be9081496cd53975e90e45c0e7d3a16728767ef;8898;58
+092ee5adeebe0a6fcba316fca28b5ddf4d8b54b465e07e7e93ec04081233438f;8c8cc6a627c0319656115dd18e3793272c40e9ccc4b17e052233f24660569821;8898;58
+3613751ecc49270a0a697242666065c1dee920f1b6f5b2d0d8790b7ac861ab00;bc5c10bdf80c16f95d1a4bcb12dd604421ca6083ef77baff773d287ed3bfe060;8898;58
+4b42481fd3bcecf80d3475ee5577d5b82fa5c75b3a3cffdbe91df80b48314115;9d96c25626c08b73f8c93845c381d08fb675f124e62be809caf68d8e539dfe63;8899;57
+96202ab26e908525ca03af1173e8c7bce00b89902e21e574dc6c41b546294ed3;a34d180f3cb5e2ddbf90d58f812877c79780ed9c9e20654e869fb16a91e2cd00;8899;57
+83be317226fd4c404e25b36dd7af0929a5924f2437414d3fd631b7811cf16cee;49ba734760f21177a0e0794c356d3e2a51477d75604ec81c79166f868be35b10;8899;57
+6d471f469826cf903d88c86a28c7db764ab2916ff81d5cc1e0b46ed36c6841f5;615d2f1520f85f047d8f04d68208419a4a470717e19ffca9b25614dd5db856ff;8899;57
+624258f5f19ebe62f994b9d79acb6b3fe13bb6f00b1cd2eb676d6965f23932f4;04719a0e88505b6d3b39742e413e8f69d605670d0f3fe08ff33ebfa245b4ca6a;8899;57
+89fcaf3944ab38b497ed4d718eb0224f8747bc0819ce3916489bd7bfdb35077a;f995076b7c096ea9e063b3041622174700885f732a7d23cecc275533601bed07;8899;57
+c0e4196a66e8ed67edce74f389fab66eb8ed95185df8c0136d00f95661572682;e16f0566a638ef6a227b6b915eea4b9a8091ba8bfa4b6791f3228cefc4365f02;8899;57
+407479b5558c5c98adc1bc4310a834bee4ecb8e2983ddea286cdba26a5d02861;cdeb6afeaa0774a44d0451aeac84c3abf5cba0be3f3e7e1bc5142372d092c0be;8899;57
+92c9fd6002fbd6a2f7aa7b66cdce52f4eddbf02f8aad21055fae00facfae89f3;af8bf041878a9d8298d2de2bd9bc8b775ea864ed64eabe36542091723726a4ad;8899;57
+1996244a81fcb38b770cb8bd495971a7636e78c9988296ab753fa3c9a4e0365a;333fd226f0e7ec3b5bea6768b1648865f502858d3a139648dc8a13bbd3cea0a1;8899;57
+bcbf18a6464894fa8e72e72e57c4a4189924105262c19337ef71138bcb3fe7ad;130f6c74b75d9e7d38f3ce55fd569ed2f110deb96fc5d75b655961dee793bc84;8899;57
+bc8e0ff42675c4ae1dd79d258df879fbb93cd775a8a3ba67a808fd9678c2053d;3e078cd8f6b00d23543656872e6b6676029311ca1c08d38e9fb8514e2f6806b6;8899;57
+bae123a6b44d43c48b72305066511533e093c51197d28075310dab3973e08549;080c59011595b9df84ab200ec76e071f6374a242452a5715eb67f3e90961b9ad;8899;57
+a1949744f4dcd17479d88d26a32c4d455ed4cf8e969bae02c89e204a532215c7;bae75b12f81c5dbc122e17bfe0ac3093ec931a87dc314134b90a4ddde26b82be;8899;57
+f216dcd6a7c5b54b6f929405358b7396906b98a9b64bff968a6d53e0ec9fa404;9590b92de37df8b5b48c400d11cd50443d6b80c9ddb35456d74213de28929c8a;8899;57
+af39021ff72f2af92024a9ed7a2b17a52a45e1dd8af02617a7675404db8658c1;27e301b40be3e74c802f8eb3916de98312bb3ec7c0bba939753577ac811afea7;8900;56
+8503200c72313344e76f529f3c02eee45cb9ac8547591e33b78d1c70e24f6c7c;e9a85ca82043de0d4e7ecd5a03ae4c800a1a30351edc5e557ef99ab2830925be;8900;56
+4436cfd91650c51dba99bc3bb5f295bc5aa7699b3756c7063d264198d4e6f624;39e361318ec5d856956ae59b1afd13cb9df5f0c52a886193fe9fb89acf228642;8901;55
+53850bfd8a70a326ac4983b5f431de1795e68a73fd37d1f1b641b76e05570259;fb9f678f05e03a04d68544be4108fc398feacb636c01beff836012a70fa04315;8901;55
+66367e9f44ae5cf2ba6e5fc166aee06753fed64fc0c7703acb4e9093c9f106a3;3fcbc00a508f8ce477db4cc110f90f4617fcbaffefdb900d640c49feabae07ab;8901;55
+836317de236461a5a9d153ac68ff73cf451ec2313a7d882d3e702d66ae3b474b;82784ac47bdef4fe8c8a1d835b0225bfd2c66a4ffc221049a6a77234e02d5556;8901;55
+38d1b49f56032dd468bcf98260e706d2f537f91713373d89cad3357f7fee91c9;177e165321f56665eefdf63406d9db683dea953763f6c7ace9b69ddc5700f61c;8901;55
+92fda0e3c940c0ba0a756ebbbb0c740857e608e284c8efd9b1f009e1c40096d9;59b4765e7814eccf93be2cd282a5a4e075b9565e28cbc94a6effbcd124c27466;8901;55
+603f99fedb7a06447d685f5908787d2758c46c9b2cead1b9dbeae3f3432fa248;51797020aad2ca3b99c517b3a1bc4122643bffde184d0ab0f05742a2cc73a7f5;8901;55
+fb31b6bb8d5253e6597bcd4719789252c625853a48b8ac33e1e791d9c52de7af;807fe2de6777ec78f6bc9821bf9b9224b4f209467bfefac7000d288c8c4bc9f9;8902;54
+162961f2a6bd8c3b4e359d0dd92eea2f83f2dee9a3be324f5b055358d62fe92b;4a4ceb156c78a59e574844f5153fdee43ca4fd0e819446b63d352a0a0bfaf108;8902;54
+5d5419cba8c0be7a2b0435d9d10b23465b244288be5f2efd20572b7ef616f808;3914374bc89aa926e15283f58604cdd9b4519fc08fc27f23347e98dc73569425;8902;54
+f7c203b9d2f655bf33c6c4b397c686c5b840664eed73e7fa1183883668d16c2b;bcccb558ef3b530aad1d1b650aa41e0fc0d387224b8a33453b20d1c4746f3d30;8902;54
+295f32129bd3e6e88019f7d91c260462f5f1fd926dbf73fab0cc5511d28c7f0c;a6397a104489c74562611e31c30d008b9a86736444f0180889ee79ee8838e858;8902;54
+51b731a715a61bc8d41969f62fefc7f4b8e4ad26e93ccb0c943bf6562b98f9a8;5b536c34b44c6dbe249553217b8ec4473ff5928f14a28fd0d30b466ad6bc6cbf;8902;54
+d2503eed91ced1dc9552bfa5674a368c235af45d59410d72b9afef6df904fb64;dc5783bef1cf02abf7c3f72d1c0874b8709dfaae47cdf377a777b66e9888f99d;8903;53
+dbcbc2faa76fdb32ee313d58c7fcd9a4c96fac1fb26e241233f2d8398902bc51;65b90fcc45d953a553ed361ee2d87883cdd1534ba64be53f86d447d710ec39a6;8903;53
+8df314f6f1778975e9cc5ca2d49bf7e3c387583c5d093aac15c085332548b3ea;186f2a7798c56867e515353244a5c950f558e1a91b954ca05113931638e52a0a;8903;53
+57ef6169b755e8c1bf1e4919ba7c4310a4c307fbf767ff66444ba9025250cf3b;5ce734c0ac78b0ecbb530d4a95351ab060ce52c2c75c06f64ba8b6545f9a035b;8903;53
+6974fcd42450101f48bde6d19572492bc42a01f1ed13d4b2048e51d884605b03;1bc8ecb6a0213b5ebf3249c5ba405ae4df0209b0205c172e7119eb90f360818b;8903;53
+791d6d6ad06c76503510141dd5bb3634e20054af90d29b4fc8d1b05b3623c6b0;447e2ce49157ade98ba986d11af6df8a3f802a832f60a675881c593a78512cb1;8903;53
+832833357ba29971cef378470eb8c4db97fde85e5a33397efeae8401e421c092;155c5bae163865f956e85e0177f58274f5147ab2833a534bd9980212eaa0c7c8;8903;53
+d4c631dfa6632db1af8dcc0aa38bbbe4c749dfd2518af8b9adc8f3668b05db90;e583fc12bf8730ddc76520acf09cfa7901c8dcb9d94c80231556ee8aeaf868a0;8903;53
+90f62de39b4ac3f76b3bb6d9c97eb513a5016a77b0ddcb17e7dee8ae34b41086;293b7c77d7ad36aff8786e4e190cce0ef3801140ca7a1c70ff2c0e5861810e83;8903;53
+f36c9f6ae8180c39cd741440b3b3f8775c8815fcc25eaf57037c0ce953393b02;d0a975931ccf3a7077a8356f1c8262ac8a6408572ede5dbac01e79d646a21e53;8903;53
+8a5a5201e4f5955043f447f0e6441aa670f28623b154c2af0ee2adfef79e8ff4;7a3090433f5147cf7ef851e57f172515821ce805748975bdcd328957364b575a;8903;53
+1053ee35ff3865b4ca6ed360f3f1cddfae78878d0fae65ced645bd2d2d723c60;9568452a69df02b3f6f0bb4f4c7fa697db116acfbc84090c75a80979dc116e9f;8903;53
+06b93becbf227e98e534f808a4777c4b50bd6e04384059f3a9426f51485b6f83;6953493aa135deb7f1e8269b3c035f2700db6058be0efa3d4f99a90281749537;8903;53
+c20adddba12fce04ead8fcb1d6a6b77e2b26fa76837a9e015df5ec5b90c0d0f6;4f071e222fc09c3b2de9f812f67974460adfc1169902673362bf701cbcc99e82;8903;53
+7501d5ad964aec97b2f847f09a0cd9ac53e54ede23d9c268e9f10924cc7de733;bd51af259d03214265d5ecadfcfcd307b92986c091d80f21618bb428bf99c7ca;8903;53
+57a9235cfc4bde2b8d0b458e0ddeefa3c4848df8739343ef9c626ae79340ae35;d2835a7c21a779a39a84e3e7a6a289d0350f7dc4364f6e04443e8f4b5bcb6d17;8903;53
+29b8de194fab7afdd2c44b9489d7845e5f321b5852560ea8996252a8e888398c;51b1a3797fd4b5632ff292afe4772d2ceee211727c8467eec1c64e10d40707f9;8903;53
+8787d2932d523ec560698172db0a86c1416969f544ee1cab0bdaedb3f0102466;4dba9f3a1036925e86ad69b692f384bc7d74e855b1415a6b801e4f9eb54ecc54;8903;53
+94d21c32d0fe6eef8880a5510bee3aa854c8002c61fd06272e116dd8332c007c;071956c833fdf8c246c24c9d484b44f4149365542857118d4a673a5ed5ee79f9;8903;53
+41179674696ba7ed92c369b902419150926e95011fee8d7578ddcbb76301a377;d3b166a05a9f5ad917d12189545377eb8ca2f1c029bf6f8e41eb6877f7ab5caf;8904;52
+2307f1a890198160637c3ab2f24c4ac546c7abc6c745823fffacaa823e43e21b;46057e7c0dc6b2d36b631925c21204ecd69f13a390a3d725a3f8e2ef24c0b67b;8904;52
+122c6381ec9cd7e8c522f5ceb1d44906796434a760f738d4e40a8670e173fd01;e7f10b1825a3b28f79de9ed9f24cf74e17020096270cb182c98659314f1f48c5;8904;52
+d6aad5a71b93dd712b7a6b49281a9eb8c3c0a08cdbe0fa919684948944f0c38b;ea52f2fe46aa3d01508585dffc9a757f148982cb3dc7e194df357b41d9cadd07;8904;52
+b7a201bf6bcd4a0f41f122fc73808ef864d0b5e04b273ae381764b9e7ecbb3d0;dde2ed5e5f968cecd5cbf8b90e9d44575388bd1f17e27eea7d416baa862ff146;8905;51
+00a4a02dd969b16776e731749a9719ee5e7e261b610e08961e65f91b625d73cd;0f7caa7453504a12bb3e59fd980c79178cb27ae9ca868a937055f9db5a90271e;8905;51
+3ccbe773aeee77e0886211b9863a751556c7db6e258cb9e9a90ec160715ead10;1e4a6a1bcb88e4f98958a5863c9ed583c96c08be3dcffb24c07c4423a03eb372;8905;51
+94d8aaedb003a3cbf3883a3aee4d41830fa97d7f4fb3747c8affb30f97ca85be;6d617347944243cb0d93a05f45cbc2ec6edc72b6cf007d1ca3b3994b07319668;8905;51
+713e99d257d8000c2e24599c5d391bc02a3cc87c378b065c130d8ab70d1dfe59;91a1371985b2956ee2e6dc339f6b2b8025f22eac9e995df849af65bd3df6bf73;8905;51
+c5950eff4a41b1301b385a3de155b55e2f4c700f78b9925625b97c32cdc5d602;1d65c3c480fa2980e6cafe4f1a9d95c7bbbeea84eab3cd45e32853161073b8c1;8905;51
+8f29b00fb9ebba1f1b700300cdb6c11b5e64c714f493983b323ae398138338a3;d374db2ff9fddcebaf8b9a3a534a7f2b8022b301a1971090723ccf02de87dff2;8905;51
+4e54ab0f6bfe3ad1750d8e79239867048331000a9f66ad97f317a7f42b7a3ec0;612556949278ec1ad5bfaee11eeae2c81adca62ce902fd5757121447238b3f0e;8905;51
+fecc6daf6b11d709ef41e6f7a82bf8524f548dd7a543b09edc4bba8c65dce7a7;101b1cb146781e46d75d1479f751e246ed8f804acac3cca8fa29db5bf17d9d63;8905;51
+c9c8a9cfe39284f8dba1d7d5bba59eeb6a14405e22abc3db2c807e19092db47b;86dec17ba2a7b11a19debae8c7d9205a158d1085f4c4c98f2569073cd3bc1fd5;8905;51
+b8a85b6c646b3ef1dd7e1bd6790843b4cf35345f2c83d8a9b77d3e79a960453c;88e8909dfc12d559398defd31fb00a76c3ad4fdbd0e51add5b6b14e14827ed8d;8905;51
+f52b94bcb74e554a0e7104a1768f8acfbd93ab48104582512dc018c7b5f3f59b;38ef5c5500b11d98001c60564c84bd58716b2e7ed1bf8fe18e6f3d78f5ca3cd0;8905;51
+ad6c566541a6ce29fa7da05ca7e8a2b637f2848b283c4b71ca19dfd410cdaf48;2eb78a257fe3c38bb039991192ade46eb826c4096b9822377bf42c7a8c81674f;8905;51
+ec0b4a23bc26f25670e7f6c11e8298dd89630f5312a4b14198c3e4ff5b9c076a;878d3db9f71c8e4269d79810c3d13d3943ebd081b7200aef624f59467727a6fe;8905;51
+b8ee836b191110774c2fdd0eaa581563661f29b84e0b152dc03f219804d99f35;b29f69a053d472dd2f5f92ba4e2573ea609ea826a00611ac6f1733b04065e533;8905;51
+319b574fd84e241f82773569144e87d7ab1f1d0c454e75dbacb464e28acb36cc;9070ad7737eaa21712f063406da63c947cad2fafb1175504d3f2013d06b3d92c;8905;51
+5176d1f1f3c3a62adb9f8a230b1b7688cac9eda7e579cc077050dc163003eb85;50d8662f39c31ec13e3df8a5ab115bf587a2cf899cd8e2ab58e060032b8db3fe;8906;50
+2edc3f09a975eaf5aa6e9837eebc041e454385ce9db374da4ffcaed93589e3c1;233f93f6d69f849af25b397bea4bf03c93b3dc11bbcafab463450b730ff1d249;8906;50
+72097160e151fdb346d0207b217451414d1350cc242bc260c83aa68ede8695cf;f92079267bff9c9a64c9555d362a785c9e2aa09b3a590d5eca151d5a016751ab;8906;50
+7b4259d2c549b327b0e852cb32e375202d93d9bc6ee33df67f139e6c3c6fb58e;047de3a83fdf3e470c5b31dc22a5efcea32c14adbbf2d25cb5c8b97ecd8412c6;8906;50
+767e31f81e71b7e0255976dafe32d311638fd84e4ff92520f7b044a08d2a7585;a5504fb1883985dca8ac39c9dc3641a26097d95dcabecdcf64a27771cdace035;8906;50
+b3e2f43c90f7b6b1762033e52afdf412e5d092fb755716ab2a33d6425d945927;0dbae23a1911248c2ac98113660b73ecb54d13c6cf91d5b40f75370310fc8836;8906;50
+2a4cbae1c0abd4bf986327293b629d26948d19c4e2eca06cfda82197bd8c1687;71e65b1a024f494deb6e0c26a93f39e14bc6e47429ca0fee07c277fcb534964b;8907;49
+022e30fed764d9ab4177560897e641ed467ca7e6b0777cdf72c3a2e00c4f46ca;307ebad02fd2fff310b031d659adc3605817eaa1e30235ab0285bd8f896ce05f;8907;49
+e36cb85f20184f3b42c4acdf1e62a0a78071499ec1853d3128ce1fce8a13eb4a;225e990a3b04944e0b8a505552437cdcaa11e9479d78840b5b6982bb182a5628;8907;49
+1c8f45185dd42a41cfae30404ac6c263de9bac122d53f3bc8f9bda9664cb49c8;2337f1d1ca02435963b995ee053caac3d9948edc9c193c6f8ef0734425e2073a;8907;49
+57b3cf7f8e462c6beb9616ec6675c44cfa50fd512be1fea37c891675ad5d6d1f;b15a631cccc3af363040518550c5caf3098e998706dd7bf2f885c0b0ca2a0529;8908;48
+cf1b518fe248e587b8394f5e037bea9c821d20ade76cb03bc28f44e86f061f8f;ce55a9c5bf4f5d58af5d38cf54876eb17980a13f5994563375402f141c59dbbe;8908;48
+5e8df835736b846c8df94d9b2173295cc4fa177f151b1ed49f0cfab238c04215;f0e33fb002a563e07cce5cfed8b20af1ecf103a4df8c78cf0b293c932d0424b8;8909;47
+362790a58368d2de9838b70bade1476fffd91a763fc78fdd60941022a4c80ff8;bfe4f428920327a1e60a36634108eeba9641425a7fbb189a2364d2c69621a148;8909;47
+23154cd8f8603d4f93da7e59a0e0ad08a0764ff9d12a85209db57e88cd547005;7c7c84dfafc8ec7a2b2216593ba19371b30430cef4354d5c6c4996c169fadaf8;8909;47
+6af250e0f5ae869669eef4cbf058ef88219dfc650235bfed50c116da2ab5c7ee;369bbfb2fc3a7727fceb632386281f9cffad492d6ad114b7f21cd8bba606c6e9;8909;47
+05ec746ae08020af120ff8bae1ed54b2f30ed705fa660c9ed74b3215fd2f4a66;2505efe27b8a5a139a2f977bc9f42edee9c2154795da195238277071c4b080d0;8909;47
+ffd6dd0e4130e2ad977567eab6aa2f4c6695df68a6bc70b6c0e1739808d347f0;2364bd737850ee391727d8ed7d1eba0d4440e113281c577e3eca358a7076856d;8909;47
+b9b88b0fb8dcc23b99ec0f6bb6eeeba41e05dd263e892f3bb56d4173c43bd215;84dafb068ee88bb4a4e36839013468680428b435d5cf80b42adec605790074da;8909;47
+9a8df0f3221314884d695987254f31d7b66c4d021cbc48bf5521a43bd5416257;5084eeeb38e2bade5044de7a6cc3bc8a6a0b57e1ca3a81a68ba93e4ab33e47a2;8909;47
+ba29eb2c4fecea46e0794b4b75288e5799211009416fc24cc4d8c0dc4956c6bf;ad5240da4df092c5313c2216f47be28a281006ada10270d77c0d796095e65c6d;8909;47
+f5c0598931da17337431a245b9bf103dd4ae15630665f2bdd4f1af584652a3e8;2e447ad7fb04283a5a6d86649f96fe91a9ac6470d686292339325c34cd2a22df;8909;47
+9c60e5413dd6555bc73a8e481746eb2b3b73e5c1ba6d06e8ae3571c0db062b3f;a2f895dfc8c12b8d563ebfdf49303e94a00cd185c1b326527fb0384b26e0b4a8;8909;47
+308a0a7dc504c0d52a69a55a35aa6b5560e741daa4680266908770d10f9d94f6;9176506a6649efd0f30dbd354203796c21c65cf8e2354326aa1f5df12c90ccea;8909;47
+a8a2ebc473f9d13baacf2769e2dc615f2df3c9f442f0f4794cda6d848b9e0f2c;2360569940fe3f56f19334100e6e522fd9808f850f5cec79ea3c2ed968364e61;8909;47
+c1c919ce049c5ca7abcc0de11204da7b5d3e50cf1b5fd0d5336414391d3ecd18;eef0ef4c5da4fa91e5c531a7e4c2101b3042160ad011115a89c07aeab7d8b3a2;8909;47
+c0b2a17495299251043bc1b3bb54f1457c4abe8fe3dd8d7778b72e43285ab377;5bb1412e78bf9ab28180eb939282a895cd3e880a305d2b81dcc69b787ac27e8b;8909;47
+1772de65b604facb6d33a2b95b69475ad170a841fd076145ac56fa8ee2b98c2b;8d77e6d9c6bde741fd99901c12b142afdb3b7812317812d098111d3396e40fa6;8910;46
+61b58fda6647185c7a29728a3e8fb8dbdc67c0045f9ea6e351cf7edb32f6c0ea;b29619b2f41fa69ff2abfa17f0da71a2c3f9e9900e8f014805fa8173206394a0;8911;45
+ea213443b5f34a8fb517867f5913fbd8620f46f16ed7cc712c55cab51cabdc9e;48679fe951d3ef4661fe5a3a0f8e84c16de51b28ff3716d6fcdef3486137f29e;8911;45
+29054d4c7b6ad4ef946aed903d429b9e73abd34afaff08daa965b2f260038272;1370a0a2d7a0741f1ccf5f612297157cc16b3bc6d9e018871a8bcb608295f867;8911;45
+d419f8e0f2faeef54dc6d8d623a129a819fa49e0dff9c8cb59c5038eafcb3750;269e057f27651255b18f4680336baf65b18126ca9473efb6319852ddb6d27eff;8911;45
+a1f971f071fc4fcb5adcd27ecb0c265e969e13068789c317a1dd52995386ceb1;197f50edbe305654b5bfc5fb9510ad9e8ba5eecf8f14665e216804ad9b10afbb;8911;45
+84cbc86de2ee9dbbe902a03bcd7395437105c70c2127c27d3a00ae4ea3a8ae38;308d2d5a0dd29e73b129957f644e6b6f3109b5e4f6d416f9910b35c2153e1519;8911;45
+c434851bfaa49d0d87a2711f9e35414dfd39f2429edf7c601eca93501cd102e8;9478e556e13d3860c19845ea6377836495702fa411bcef14622c9d551f80db51;8911;45
+552ef89492e3f6ef87150ec86e2b5b8c10d1f163a936a7c33043165174ff7539;7ece03ef4d4a77288092ac21806e49723b8519674bae3ae468a3996d8cd3cd94;8911;45
+acbb4709bbbdd6802f0a6c80c004f85919108e50ce016267d8237ef634d8fe4d;512a3ae41f0b7e719262f2b85ff26eb3a835a56cc077325237c235bbcf01e98d;8911;45
+c0e40e4106f56e1a6ce163aea0528d4aa7fcbe6249744791b38901e695b7f03d;9677edf57f25e442854b2ec4580bf989556f50a51f7b26cd509fbb571b3ecc29;8912;44
+a348a5238ce8668a2d4bd5e2bd2af6852fe14aa448872e4867ec8aaa4ec20ccc;92cc918ca0ea66c5627a1688e5ed5ca11db14ce0472352e893aa1a900f4e5ea5;8912;44
+cf170fe590f48dbff18bab2dc041a726401e4d3a0e9cb4222bcdc2a70d70dfc0;1a5a4b7b3608b44183292ca1cc850bd02c101e20a8a97cc2ed1662ae7e3d2f79;8913;43
+a0540c3bb579b18ada7cbb23796bc9f2b46eb51003c2176d3c7564108e05b989;fdbb1258cf3bdf09c4640144518b045b65611142721daa5e57b9c09634d352e6;8913;43
+5d75d7cea1b63dc354a36423a22bca2db9d74aedd466274e3060b3c86c93fdbb;a04ff0211c3b791e2bdeb3ff1a13075be99f105c0744c26a59079b5a77838440;8914;42
+2b3033a918c94121dcfe64b5663340526eb469acc7ae061dde0c0643ca279e96;8e46251be8a17539d28795392852e0f6fa29a04c56e42379142cb0923c8e0938;8914;42
+b5d1c8dcfc821345ca53eb2adc1642bc9f945581cbbb4aac90dd70ed68154ab7;c70b78b6b780b1c03b34a8fd6453985e93df66b871f468440238a89aa1ddf9d5;8914;42
+edeed113326830112afc3b238a67e0e12eba87e9531eaa738a1176075e82275a;fb3e52838c8ca4e5a1bc2da5b19ae9fe5e0df937d2d103f63e7bf26787b85582;8914;42
+d693bbd551522f2bed845bc8160e7ed94a0b6626abe2f877fff14a5be0036f67;adaa6674302f1f404e30c8303a9e8030a3f850ee52a65d1e63c2b3b82029484a;8914;42
+66892bc127e2cdae338d099e97ee4e7db4c679429763b4c571d608b107ae7cb5;ce5add1a2163bd95486e130cb057d207dfce89cde432b4beb8c07b3c14eb1fa9;8914;42
+61ae7ff3f0f9e7cc083e8ac4cd7d2742f670d5f0f82d5a94948d44b09f800860;608bc562cca9d4cff170630ebf287b9cad2a680db93379e4d36709bc01910fc8;8914;42
+4e47fed8ae0684355be58b760f7594e98712c8033cc8046f81d2e148fd63ef5f;0fed0de1510da4c0f4f27cba8f489cbe6ec50ef264611d8e28b2668d8c691b0d;8914;42
+03bf4e865747e5f42c77410cd0e5dd52e26788613c162c0d9d6862052eed4c25;16207af29662bf99b95e24aa445beab653110298e59df2523decf5fae51f0adb;8914;42
+3d9cb21167570b3a6ffd770963a74d1a3baf42554da4b89a7def3613ed4b0bcb;ac3d32906c24990355809ae69b298a95061f26a3a8f350af6b9e87d931b4fea1;8915;41
+78a9efdfe8b9e707676e2e0a78757985a8754e22b119ce3bcccdfc111fd4855b;4cd528442a4e519d69de91d1658600f00116813eec94aa8cf4900da06d60ae56;8915;41
+9a23903fe4fea04a24da3a555700fe069d90406fa20c1b0b201a2f51bba0c5e7;042ce8b5f24f0a31194cd16a20530571ff82483a470cd5b886737c3f7bb4d7f4;8915;41
+42c7378446f9d1ab39340f7d878bc87c5e83b05579375f84082e84e1ff640d8d;ada07edfcf113827d1029fe77d736427b240a6b457141a12f308ad5c8f846ed1;8915;41
+aeb94da090c7346c127947bff89eb2d65501285b144b4fc0d64ac82e428290dd;a468ecdfface3978060914332521fc4f7329d17eaba6f7b9ef75cc59a884e9ea;8915;41
+f0ce852049318a4dbd333219c170b2f7c7cade505bcafe1df0b5ac2f6c56bb23;def374d164868004a5c171662f9821bf4dcf2a62eb88622eeb9133810cea9f75;8915;41
+72d1a553493485a443295bda66766a902f57e0838429081f6680e8c4b9bc7d44;da2d89326dee3cf0c24b43761e3898c164b4dd9d908f43ca4c7cb4696ec99c7e;8915;41
+417416490d64ae456eaa7f3a4dcfe8c881c36ee3679506c1ee33782e0213b978;87fd0ed5b0e260ec1ebd80145ca13d8f116dbc00683b85373f77671298ba2d70;8915;41
+e8db362f5053b9b617184645de8bc8955c63ae5c7cc4bc1266acba2619b2a684;cef5dae9c0e90acbba45e1bb07a443c4ea04f5d9815e1816e1d61ff2d38ea2ed;8915;41
+14bfd2fe1db33b2ef80a6c7b450f8fa20805cf5d1f4437e73d3450b779cfa817;4541c74b99a7bc030fd93a46dc75bc63154181ef10da746d9137738887920078;8916;40
+6bbbd2329003c80fc0f12b6d3036801b341553a73df98a45fa4d79408854f7f7;742e71a4fcad8a5ee05a347e5e5c9c51cefb0cbf78feb77e91308ed8578481c9;8916;40
+6f0edc58f2c5b153e5f9299ae7c9745bde14674da7a3059645bb71958ac2a05e;7200b203111c0b98e02a1322b6873253ef7d68e00bba5e698745f00586825863;8917;39
+3d00cf496f25fc2de8dd0737899f2b452ceaf1ac6bd4e26007182a90d5ee8d99;b311edcb49bf6a686fd37397b9fff3493d8eae1936361ad45cbe4ce5471ee9c4;8917;39
+3a2ba367155de3656847cdd529f27a9224bdef9774ca76e40b673a94ac22739d;9cf448e049e6c3ef932a19531452e0f74206eaeab920f299a8aa76292ea5d229;8917;39
+56aebaf3f4397b8974e590a0b4cd4a8d7d434a94dce19a2350cb6b6d89990f73;8a220c81e7567d7dfeb2b2cf7ddf2f71a16e71abb51243a52e50e5cb05e20acc;8917;39
+3189c697ae4292b7914b791c826f0b867e842322e4a76a464e58683593775d54;0d4a631bb372b0e532673e7b14ed2a0970e123a915947a369739908a5e3dc967;8917;39
+c6a719c3466374df7950884c3bb66f90347ae100c01a87bad1cc9bfdd5abcf64;1aaf80de93c2353d54ab961bbcb7b26d70240d41ec5e8a00b5dcd8e4d556a06c;8917;39
+f19b56c8e609eb23663ece9963aec7d49b75d153a43087db1efe2a6793a5f159;cb3f281261465f6ecf60175eed28bd96c44cd6f38bc0a190341c9647749e2097;8917;39
+38f9dc2a4be312cc465b42a7e43b8eb10e2e741af57d960697c7800287e9ccdb;03033b43f046eee04a260b8aadb05388aa7821d6b869b9dbaffcb159e0cf1162;8918;38
+b2768e51221c0e8f907c6f78cabc4ccbb22aaa16f919b63d79a26f5c1832d317;92aa5de3994da53e53fd1eae61a74f03e2e45e071ff1184846fd253a16c98666;8918;38
+af691ffb532e792bf1eecc1bcc58aaf7089f0ac131239448e7f1f8982e10200b;9c38be18da47c00db3b7e163d89018a3f92204a4e5ce15d6e20bcf073dc88977;8919;37
+ff130a992abf5cb4065670bf3491f3e33229e86e3a289dc36462f9869ecfdc47;cf2f2f360ec78ced242a5b2303614099f3f370e4c169b130eb16ab784de53781;8919;37
+c5c5bac307f16243e2dab53f60f4795d45eb4965b66450522523b9e29ce574a2;9fb639467d5555395b0e03dea301ccd8287ebeae7e0417a7f67c20536c53605a;8919;37
+bc5217f77895dbcdd4d4886a4c1bd814de2788f87451b1b1af2d39f60f81a6e0;76ec854f3f8b5827fd1fd24fe4036691e93ccd010e4456ed94068a3dee23aabd;8919;37
+0540185202866b3f17d962e6f4e82185049d11090f3241dfa89b4ab86cec6fd2;ed025a7bd1e8652bba2ffcb2d617e34972185e65a05cb2a562aae2e18ddcb5e9;8919;37
+ab14be4d1de219c7c46f7fcafe84df3923d0c6e6ec3507a3a2230139975f685d;5bd48966eaf3c16db4b9e3996127ec653a8bd22ef96fc37c03fa39ceeb961391;8919;37
+72ee8084027378a424f08d3cf84e4f019ba7c7a97915fd0cfad9d5f1d28f05d2;962a5f8c3cc274f0033e7239c463b990db4710d0eb216982a7c30b31f8bb14ea;8919;37
+137d4544f593b10c257cdb625fc7e98635ac3ad92393bd8d79ea50ba62dc5fdc;9e42c18166974257f2dec7e5018bce2434426602f9b93af5717551c27ee93138;8920;36
+8ddf5ef9eb77e4441879906e45c595cb7234bf1462d344b0c1276cd68750b86c;ed760b3db973c3e6afd932c07a52ae3f3fb7f9d2d7091ef3bca830f3bab3e1a5;8920;36
+203955e2b0af366b2d1ab377105c14f5781ba8c3070ccc6ff7b0b09f79716784;f0b49602b6ade401fa8b0e50d8f1e67ead93eee59c7c3cb03a535cabd407347f;8920;36
+780dca9760e610c47d723f779052b9c52a6b91288d127a45b9745f6bb77a8078;60b675eb37cfd299c6d5f9a6297521c76830c1d1799b59fe3e3b515e804abdd8;8921;35
+18f096c04f2d31e7a15bda5bbe4fec5d2f7a5da2f598528593866319ae6b3be8;a167c4c6c02f2b99dead1531fd6a6bb9a848ec76f1b2bff482728d44bf950f37;8921;35
+380cefd75a7a75d3f7b98c0d03cf3eb46a41085d391b60a174860205ddf18773;e838cdc949ef89d4e68428c0afbd9a92d9bc9999aec907a1e31498baab95c522;8922;34
+09ed7ab7f11bddd153d1601bfba0a3c30911e08db02331efe2ca7ea77c3e0dd8;4ad332210d2b6abd538b44bf2d5e9bd791f34ece502de7f9ad84322d789354af;8922;34
+bc3bc4ccc8307c1b8fd62e0312772ad4977200f4278ace271403dc840713c746;1c8f4f023ddb50779459ba436bdd5ccdc5fe7ab5fa84505beb0ec4ef79048710;8922;34
+b096e61b5dc63bfbd859125e0e23c0c977dbc91955856929abe63ca47d51d67e;5f73fbc45923d0709d630ae8573209fd06ec8ae1336f5c219e0da08830dc921b;8923;33
+b93788e77dc7e4cdca77f7d1eb75d4cd023ea7ad7ef5aea1265d45ffdf8181fb;f7614255da55d37fc2495a249b8b03e348ff0650a963b3d7a8db5d350181489c;8923;33
+7557539ed98195c9bc063e76309d9b1d4d00bb6a6b408c39043f6d2935f7a658;5db41fbe149c06f082df47aa12eeb0e8c36e9ac0b54d11c59fc1aea048c5721f;8923;33
+2f3a25454c1abfde4c42cc019525dd7b662d9ed0911b095e9d4815dbf027c869;4b9abe0e8299ec5360b2d6012559b8636bd75db42f00051539e48a79cad0b1f1;8923;33
+83e8cccfd77ecc56a316497b3ab58e0465eacff2771f397756dc676a44955ee9;040a00660b80f7e740d2cddafb59ee8f0df6dd90b888e3ff0ea45bc75dab86d3;8923;33
+2b2850dc242b25914ad95f906cbf469df2949996a3287415b6c447e9ffa8385e;ebeaf7f866c9f3fd64b8d30d839cf21f266ac2310d20175f89e43bc7aa427d76;8923;33
+9176203036c2d4d52cd390588969d21532f3f1e48612c7083e7e1efb5157f96e;f77e197bd310687ca32194837f8d5346032fbef59121e68e1f4dcc39b549b88d;8923;33
+91b13f469bc49f5344ceed8ed7c7099201d9b0877a915e60f822cc72d3342750;9708142137b8913a9a20d786ac748d4f69394ebf2709dafa2ae26d6cb188166a;8923;33
+2096fc211593366115996eed6b5219c6d380331099779b65499d1ec3836272fa;63486099911563df5587ebaa4d27700fca190b269cc5092a91be11a1966c4d6a;8923;33
+5974c923e869e98e03be6cab7872e13a15cba81b89adfc846d628ef5624cafe3;4fba534a335c95a6b921e2c619d009f0dcd763cc74148a4c2c732962cebad599;8923;33
+8936e376f54c5e7751e7a44cb1261f93ffe5a1c317af984b59efef31397e705a;ef82f6ff2a24a56cc3c9448f3c5a2ccf9a85bcad569ca0b41895537a38d45520;8923;33
+64a3bbe8d606a422a3b90fa90393855d3e485dda702549c2188d25b9c3c79d68;36584e9db2780bc0821a4a2c50759c730bbb938f3d46146b59c487a2edc4b584;8923;33
+07df281ef8114297966c3cf3db280461f29d258543b4c5d78c8972ab1aa96c2a;93aa1acfb7ed1dc9467a4ad27e4c94b7f94ba50a26755d43c44eefec0d82f2c0;8923;33
+0998074b91a1439733a9e6e69339676a7d81156fe146b211b21be5b2a8a42f3c;dadbd3e4a2c5069ea1ab612c2edc2da0df6b91ece7f5a6c53b1369846d68b0e4;8923;33
+fcc714729583a349f7c351f15f229955ef8afd5f717c805c682b8c1f98a3e9d2;7c1da55201ce1a70af4dcdbe3a48b2cb88445b67abeabd5931470c869ec74b4f;8924;32
+45ebb0a3488f0c86fc16668a0e3858f83655f102224084162e882718cd37ddec;1d87bf0e7e9b92786f9811275762338e75ff49b3135ac9746330742065b70c96;8924;32
+54e8fe40a9ff7a46e50ae4edc2ad20cf60b3ad187f186ce1e98df37c92412eae;ca68dbc36eb9aa37df775c2bbebd4a5ce8daf39eb20d5f90426d8dc777116a44;8925;31
+c5acbf7b96eb918d2c1c1d61deacd379f108885dbfeab75e7e7ccfb7f9c08d3d;5f50f14b80b3b2a627cbaad8f86edd6aa6aa64085211fb104e639fcdc0c830ea;8925;31
+2236fae90f75b06a9031e6154bc9134239f9e104d99dba6562c5fce80aad7e26;d2be6fef4c8523c557c4740bf89135efb1aefd9d31361a73c3fdb16715b0e8bc;8925;31
+0145c837e132ab1e4b18842c08bb207a5e2639e3097bbc98ebaa68562285c4a5;74d9a1feae16346539c40319582f4cf8b491c630510ed43b1a4a9cdb4957cd2e;8925;31
+e8104ada37ef3986b086938ee5c9f311ed6ab76fdb56faf70dc36b3a81c081f1;0de04ba3ef728432ce8388289a5114192e98a75bcc5ea5abfd9dc5bd4e2d9dfc;8925;31
+7f61df87c265a410197f2286052b6507028d2de314d969bd2c2716600e6023b8;0d9cf5be1124065a176d1756436b7e5df34389c075ca1ff98132220596f57593;8925;31
+79b9e16af5578d7d775d8b225a170b625e471e52259c6ab606218f2adf7fd759;70298e2f33f34f0196e88a79867767d19a3228232e61432499bd6a64c19a7352;8925;31
+0e0ca737bcdd5fcba48d1d84c100785505f5180ea9686afe959fc735cbbaf0b6;714fb924802b55de26d0b0f8552ee144e459ba42fe32e9df66e6a081baaddc03;8925;31
+c57490dd927a3a813c449e25702abc12310121d1bd3ebfef397dd38a21d4ea28;4331eca13106c3110dfa0e009424650b4eb7db177dcf79a6ed3e6f67e4dd8d97;8925;31
+808a15956f3e0b75b9398e3b162e0d3bdc22b8900c6117f9b284840e0f62acda;919a2235746c102f194d3a75adce194be7fdaba355b0eec7afec4af5bbbe0f24;8925;31
+5e08dbd2dccc352d1f5d56edbdedc880503df0b250c20e4a8ac0114096b08299;561c8a1efb259a917ccb5e6f2fdcc41e03ce5dd762fb699179a84a1118cc64d7;8925;31
+efc63b323585ffc0aef4f275d3cdbc6960672764f58189613599163846314525;e2f9265ef2022b7507da1499bbd8a3f11d2ad3711bbd05b71b992e20b3744537;8925;31
+2c220b91912af0f3e9d03e1eaa1373fca1530e4406345dc7ad9b9e3af7bd120f;f99888ddb46611625145ad9627f184acf8866e4c318c43711042236401cc9999;8926;30
+2b6a273885d6ed2cf715182c4eea197ab5d701b2e14f319a47188370ebe33583;af5ee139750ac0c0df3115aa100c78e09a611e2c39e715ce48fb2b71f52fbcfc;8926;30
+f4bf094bae82e85229b7007383b55f78d83e5d46963f93b9a91c195d9af7abeb;0f46adb0b3e8cf72a988b974c8190767d237849d1f428e846ee1e0bf7c17d1f1;8926;30
+82996e3a6f0b66cf8710d670d9574881cc06308e57e06ec990860bc26a41b9a2;ac6f20139e83761b070c49e1d37bb3bf13ecac346d93db8267f1b510b459c22b;8926;30
+96af511af53cfa81cf07ab40179e3010876da4d2a49e73cc208768967c46f9f7;8ba01cec7c3a4ba7575bfef09a09b30df45b1882181a7d91e5567de09fbc559c;8927;29
+902104c828c64df810f5bb7576f7d95c06ee1ae54c39bbe79dc24063e9c0c579;1d04712ad947d5ce4e3d659acb17dd7fb41051d6f9adc7e9c3c4160ce11442f5;8927;29
+f8b5398f3753ae059c53300f770b27aaf9fb7dae0a197c5a6a06655f5824e67e;8fd3a25e22d9d6b8d39c220fab8ce4e43506ea2229a21db881f2734952f9b103;8927;29
+b2015cf967202254d97c87efb67b4c5a0e5df4849f04095ffa3c195b3f3f1683;a54f04c699d17cd840bbf1a84411e5505593bb82bac35613ccf28d6bda95e57e;8927;29
+512fceb43a6a4113eb15383009487aa2dab616ee25fece6922fab653a1646a2b;3460833043187bbb1d672373afc761d6bee959eb9e77864aa380b297d7c20340;8927;29
+064ee8f9b68d52e4cba5b502f6d6f1e97bf57ab0bde2c160d179da8c46f435cd;888fed32d0181a28a8d6832fccf62de1d4c327ad7cf7d76b3e8bef2131d96988;8927;29
+02c182154b4c8756fb3cc52a2890d5d1b3b4fd804f5f53c7ef6059ee3c545adc;e42cc290632706a46e779b37633679bb3396799e25806cb1e353b5d872ea250f;8927;29
+931bd57fb405de0d3a4fa2a47e1d8c3ab6611107b95aa7ea543e6f2489b8cca1;72161d83e616843231c36e3a9b4bc0b861dc01df52aa2d38c81dc2909d277710;8927;29
+42ebf656bbe0c6eb2cbac876b07646595f7368355c534d4fd3086f270cc9fe9b;cc71dcb8599a448a5f4eb9970c82c6696fa8aaf3d3fc0249417ef3ccfef1ff8b;8927;29
+ab269f5ff9c404e5ce3d723993b13ff1781d1380da33570d596adb10b1554185;34ce7d582258dde60fb97f5ab79e1208e8fef69a4152da7c02a7637006c41e7b;8927;29
+74e116e21fee2f25118694e5833964c304f1b03e77850125c3ffc84973e9c972;94a18fdf10ccd3ab61bb5e7ea7a017c0577b444d92c6a9cabf280a860b9fee38;8927;29
+5c851e8e5ec0c991ee034187e7849a22ba56ba53de20ee8fa3dab81cc8400566;77103a708b5204b645168f66bf62b2741a02cce3c6293c6cf866017b24b7c0c0;8927;29
+fcd8b9a478bccd4b853edd84cdf1488d3d7e7a98a96efac4206ea19564cfd75b;9f872d97a22152c852628a7c730f08704cce0696c2c14c3c5c6e2b9f30d89b8a;8927;29
+768212892e71c3dbde0d83db4ea4d4f562d4166ba21b89ca6b3c21c7cd17a3f6;f80bd950ead04b9a3b07e7ab28b62f6630e346d3245fb7f563e1ab793830c74a;8928;28
+bbfec23429d1adbb149ef16dccb2891273e5c7dff6a74a68caf07aca5d215d95;cfb13de338d618115a1ef09dda0d96312e31d50aa32357360370233250fcb183;8928;28
+94e2446242920fc6bb7dd3b6ee550eee10f701966ed038902d76f99edebf8d38;5e5738bcff995372ce5227597d95308551a21564b84b087a2f02d2e37caaf61e;8929;27
+5ffe13fb6b3cc0592c35251fa0e9362368a516b14ee58841828402aa2c60c9b0;85745b4e251bd0ab4dcfca004efad82ad7cb56ae843ed53b3f4b054f2b43f92f;8929;27
+3059ff207faff6256fa3b44216e8ebd9b48e7e641d3f81d8c8301c2f5a428ae7;57124be40c6a56ee25907fbe97d80cbb83068ab1bdb0421645fb7c908a606619;8929;27
+8598f00745008e8e45c21ffda645d86aa0f0430fd9800a84688a2dfb47fe7a1d;7b8c988912947989deaa077bee5a48665caa69e277a842f4213c0710924e80d2;8929;27
+5ca124f35e82b450522e4ea6bcd1ce8a183a3a09af54edabaebf0c1145002832;4e6147a147cb89ccf0a3bf9406acb5068af5060ef019d9ad59effc6c68472c55;8929;27
+5671e157660339b39fa679ec9555d7eace1a576fbf23e22cfd608b1c1866cfa4;561b77adf461fd64da929b9d998c1803abda131a39d706cc98bd37c9ef8f57f9;8930;26
+7aab87d60283e52e15f9537edc953280575034164571927b7b9999ec743c99df;41de377563e161fe07bd75a2b6e198add70e1307e0cb0b96c9252304ecfa727d;8930;26
+70707d6903278b17a97438833345c6897dcd4689be85deac2218bf063f65c7c2;a78a23022175858a6eb3c9329f3122a3fa86194d61c25d5da5ebcc8448a7c536;8930;26
+8ebe697ab153999ad71f39ad1c4a0a79f804aca2a3b35ce77311f9bbee4d3be9;90c299a0b3140774625c8f05c6258f284825233513cc70555771af079092198e;8930;26
+81ab647dca6cd0c8ee35839eae8b94c95accf384c718a0acc27468bb750298e4;58669d7948f98547047e8c68dd4b675740d6d2d492869ba6ac3076def2886e0a;8930;26
+3c33360111a0912bc4c7bed209202bda8322a1b037cca783e62b0b042f71d673;4986381f305f44520bbba3de2156c8ad238ddc3a7c4fabb7224785ae8b9ca027;8930;26
+232dc523930f6c601130ae49c667076a9d42479e41d487f3eb565afaa7484824;e259f716e9caf38048db91aa73b4ec2cbde6dbe6e5d1155299f47dec3841d53d;8930;26
+5966d5366ba97bd7fb90ff8d89b0c59efb347ab563c3c0a349f0aabb3f85ed21;fdbb461f3d77efb58c82f8a23444775573ac7e2252a438e672f27470239fdc59;8930;26
+42f265035ec98d735a78094484f1973b7b351f5fa0e6be9d8a3c0c0ad26a982a;d088438cf4ab89e707e77bdf4fadc29c757fb57d3309bc74480f77c80b6fc8b6;8931;25
+19ec6ddde612ade8e6707896dda0a167f787fa5371f41dbf74975144b9bb8414;8cec7d737500467c3d1fd676a9cb68be78c78911cd749d739267f7dd4e85fb08;8931;25
+a9a70bd84103f7e92647d208efb6b072a68262a4bc587d4536e20c9ca3ecea91;6f0d92737f59447281e81c9f638b571dd40cb6eae1dfd258bb3a178f65930c02;8931;25
+00b01f84c3cdbc0be5926cb7fd081fd21330120c6ab510d585cfd4e56ea2f820;5937f4a8e467cc260d86b4af22af658ba010605f5fc7f18c9780daea20d846ae;8931;25
+e8a784f2259aacb1c7996f8fed63857bc7c0c50d871e1e5655adf032c463ceec;52236a59899d1655e5ac1dc75a74c7c8f23c5017bb64b850214469acf3395e22;8931;25
+2fb7dbfa447a1d2624bfc53daee39afbb09dd0877a629efdb3ef1853eaad082d;7553ae22c986499e734939f37020ba091ef90a07753d49841f05ba2a2583960b;8932;24
+be2df8e374757a8c62620de617f7a1ea1b9cf55930b58f611521cd35ad8db6d5;beea5ba19a779009776f7ae390d0caa158590fdce224093e695897048890b986;8932;24
+586d57ed6ebaedd1fddb1db251ee479d07a35f3ab14c059031024da4b6afb1fd;8cd85f412f8a32c1737e056e119d215bffe2f65e9af1ef5db76ff2cd2a1d23b4;8932;24
+7e691a114a43c0c67f7249abfff5265ac4389f59ad7cd7c93385c450c610c12a;b75f98fc66369add2d2d4f92cdc9bad42661102cf5d839d674372976b1c7428e;8932;24
+a53baa586ac5d4b69d93dd2549e9dca8e82f0bb2b75657bbbc8f21c0e6291793;0923232b10fbc804c1ed434a02322574e200ae705d3b750ed51a5f93e42e9653;8932;24
+e33887a713e44144ad532aae8aae1c89045c07639443d5573abf24aef06bc013;7fd5a974d1992f1cd282cf3223eb490016ce17eb37384aec485d1702ce3ae600;8932;24
+8fe38ccced597a9b94d145ff777abe3f78222e32c1fd61fe549918cf66161a39;8e6264265bb08c791fc2efd51fbff81151a2ed87f817017f3aa64b0d2202705c;8932;24
+7992d9c60d53c20ba013d86daabdec1c1702bad80a7940430dc3aa5d55d3c996;4281bb6e77101e68f5d313c09006a6f504c9737fd88216e121318854adfd7414;8932;24
+38454e54ea61a7a3032101ad441c056d39925fffb1bcab26b2ae2d2e537adb38;d482442abbee95def3b99a47e8e3e4d54d948c8cfa15a9acde698a8ffb327f16;8933;23
+d57e5ce8f62f0df1a892d9d7a7f5bcdfdcccffb3b7c5312e20e658e753742e06;1fec77eaf4a7267859e024fb8c94a31ae72bd871444c0e2f207dcc595aa2d6e2;8933;23
+c8b9b5cadeb3b8ec5ee6b50f2ab74ace3fa0ed9fb90b68e3d434b32d82dc76e7;894b462255ed10b8f60f590ac2b0676a2966143b5023b6110d0a590b844fc110;8933;23
+275c30ee7e3e0ce8b7e362f4e883332e76d28666effbd7afc5f5f208cb71e3c2;6f706efe92fbf4177a2d6b87e6d4a72572296e703b2c68d754b23951cf7f853f;8933;23
+86b56c787563eac532c8929a20ba680a21e481e7253311d858ce94fbc8cbb935;d1da3644cfdfd59158a161d129ee7aa82c216baca3c9d6a8d314ece66384bae6;8933;23
+5a82b0584e8234963691d91e82114c9ad3b354dddfcd9d8d310fbc6b4f0b9f17;f3c23372bfedcc57fe7dabea416d0c5970b2f34d74956cb1828e9678c7c1d4cb;8933;23
+bda5a61719d4edd8786a036f7c6127ffabfbbbe5864782d8481ccd9874ae8d96;a8a9b45744b8e40a8e3391e0961916ae4568917a9edc1f27d69758eb024dd213;8933;23
+1c1a4df105abcb95b04ccd6df3efaac15f7f3ba21fd7713314b945bfb9224056;9011e6edba2ec342e82c5d11d3d581159719841423ef97503d2a0e3cc9558cba;8933;23
+cff91d629f503571450c10807f9b21d0df099a43e6e0824a0c1c49a79313f64a;f25f2859c926cb0419a4eef4fd616712850e761f397e47a564720661af1cc166;8933;23
+78c56312820871dfbbfd0fa42da51cfcfb2cd7ad2a6a2490aebd973d9bdbfb94;e875c3f0489369ff6b7f7c4efaa0ff3fe36f47349622113d4eaa0d179fa446dd;8933;23
+31a9d0927109fbd6bad9d5c46285f69e5bda19a662eac5fa400877e114f63c81;b790fea38ffe9599ec1499ddd729d7c652c322aa52188584797cb09a6ddbbb16;8933;23
+b38a2d5a6ae45cee90f4de1d54a1ca477155debab88ec842ac9456af8c752c36;c5b98a967918a2c9dcd39a172430e8eaddec4fd3ff9d3fb96fae1c9c61fc6705;8933;23
+9fbbf0dad228175bbd9031cccfd274eb63b13456ba90a341aa91a55d397e8a6d;71889d97c30affca9648b0d85dee2094e302c99c4738b3d65f0b31dad47ebf80;8933;23
+2a31def38e195fd942dd3b295403f4cbd6c8709b1188629b898be06379a91475;32e9cf1d4fa0680ce5fbd155f3f946c085b10300fa5192872a7eb416269584e0;8933;23
+fa18e3b4b3506ac26ae7ce38d52ce8867f1879c1ec3314421e4383274bb691fb;4abb03289435418d6791edb5d85423a04e5524c3dadc5944814cbd2d68a63e4b;8933;23
+99eaee362ee56117c45a4066e66758ebdb8876d792a7392efed1a792fc9867f9;207cb45282ce3a361abb91a2cc09674ca11a1d0e84840f41ee2d475720bc73eb;8933;23
+fef8941e91fa2f8d748774b179ee23598fc52ec0c44ea563ab6dd349896b5bc7;af6cc64e0d2358153fe2d3d3009dab6fb1994adf3a2bd2c75e256d40bbd94b7e;8934;22
+32eab2e3c59bc2a5ecd0d228037e410c898bf6b8c269ae0db9e0dc8aefbcbe10;86eb5736288716d7e90d85efc176f1abb7f244557723427a2372849e3ee55cc9;8934;22
+9aae3a9e056d567fa87a6294731c86c493cf644d0ab7a8706c8e03879f9e5d2d;b88c8ec2314cc34511add9e6adec9c52c922a70af260b0e96f49b2cece4006bd;8935;21
+c4bcb83db15522627603d44ab331d21a24d64151bdce290cf4240ea9674c4e06;78a95e49418e7577f5cad13911eadae93a4d71d07aae90db438e0c0ebd92daa1;8935;21
+4e065d51c8abb484ef4bc3f03ef28f401cf9d209a13eda0a576d3c6a85c98c27;86ce31838b20bde0e7bb99a1460b285dc29f66f244f26e4552d4654984b06387;8936;20
+a8f8a77c0d9e91c2e14fde4b83be8261ec0263beffc762b6711d54d0bba1914f;6603a9e18fe32c44fe614bafd1253f109caa7ef50374b8a556708ad662a2c11e;8936;20
+8140bf4185a619034b6a2e128ad203e5cff6395d47a4d28795339987b10876ae;d58be22ecb7ad7fb152b209eaa4ec8216702117ec152e5a820b79fd50252b79b;8936;20
+fe7a92b195d20b21edda4a8f75f3e5770dbe221467b48c35fded8a50f18229c0;fb504fd2e99e52695f1c30f33b4f22af1cbf7afdeaad7a93fa9e1c6423e94e32;8936;20
+8f45585418bf24acba11479bc411d7748c4607043c410b6cd4edd23ca5fd1997;72589408fb0d3c8a91b47026f92612dfb2b3defb5602cd30329bb8a126297ee1;8936;20
+4ed28504ad82fab03e8c9ad5d2ea4d2bc4e86ec6a8c4d0e8a495b62d80c5a00c;f1762826741c55cb421c13e809c77280aebd08970311887b4e1a575674f4917c;8936;20
+6e85ead43880f6dfe5d9152048b6b2198699d7fd84862062d77ebd0e52bc2c45;921425f12f9f2d57b3896d7118ca5dea625eef020e00b19b852942d4d0da8c7e;8937;19
+e0009015afb4dd026ab2f6956b96bf66143bb301a559fcfbd0903021754933fc;025db4f696c2290dd8c203fbd9ca48a774c97b383cb5396fbf8902b6449220d3;8938;18
+b4bf24917d8ba8787739edb76d48ba175f6ac66c6bb5f9a8e1cfff6029d6b0a2;75c2bca75884948fd4f213849d823c315e03e84d11aa953b1678690384c23c33;8938;18
+dc07af7cb00c01584ab0e8b0e96121610a773d52910b733f4d7071996b609257;5a1ba3c0b309c208f745ecf2f3c9fad1e85c6f7c7c1e3fa2bea34bbacfec8ed1;8938;18
+abcea557196272fa6fd1518c034bf861108aa0317e54032c2eab336e34473f1c;e7dbd1bb3ad628a743b5b8f4647447391f7629448b4bd8aabe30f16fa7eb22b8;8939;17
+3fd786393377cc6254b1bb9780d44f21b666951b293d31748899b1a76e02e796;64a50e9ba76b3b3b897c6e17673f3b5310f9536c743d844227f82f3975c0151f;8939;17
+23479ccab52155762a599982ab86ce679737f227e5e75d89827d55fe5ff8403c;964d20a0436df9904267694a39aea9117747c604a12cb93d134bafa162169cd6;8939;17
+c93d0c92e5031589faef3fbaa2b38e741adb88c4b1e46988ee567209f67c4c7a;61694ec5d33d806b53dd5c05632fdba4d0245a06a73ebd6ca4aebe8c1e270360;8939;17
+c638517d161f9bc5b57b530c1ef1221eca609d4dceded4e85aa97df6139cf663;d96207d019f50e9371bb19374503a2c03ec2b85bec8ebb947b59ddfe99a7e155;8939;17
+1512a6b37cc6f5bda598525d4dc71c5e5fad8affd0b9f5887148b2a6bf24acb9;edfe948ef820e16cf59e01eeefda82045837b18f16d018dfa647a08a7a5d8255;8939;17
+54cc18d4a8cdc88fc636323afc4e77908ab531d4de1df227278a4d1248955a0d;9808772eaded2cd4cde0ec1e60481069baf7cdab48ca39cfe06b15d5aa022e64;8940;16
+f3ef211590639679822ab6e8944467729a49055748dee06298a8af0f2b0110ab;f887bbc8aeeb1c4c695e9c18aba8f10166b023aeda2c486f2bd2d70d0915f8dc;8940;16
+0910c8e32400354f348ba20138245a36ca0fada8710739b238687e99e8ed8130;3c680ffbb6904544e745a806554bd5259b4169add4fe300e177bf5043677290e;8940;16
+d98257ccb3e46f45481bd854fbaec2339b23e94301622141f8ef79dd59538cc4;6bfaff0c532603d5c9f7d1950b4f13ef1707a1cab00d53ba0106d0b6eecc33c8;8940;16
+fbc32e7929b7ebde8c3c37ea9635552f464ff7a5961231ed9bab91cbab1c7868;53bdc871e323735a27a541c1c39b488a4875e7ba6ce891cb82dba96b647455ef;8940;16
+81460a7312cdcec091c348c923c303e5db4034a254a08d3badc1371b6c2d5da1;98c950dfa60c2a15bd6a1bc6a0616636b7db70c2a8c3c3bb0bd9d5c8658829fc;8940;16
+c0aff9a5da25972cb3f1586f55bdfaa0498e3b9978c53ffb7729715da7a4e7b1;6ced61033e5447f50ca9abd351353d0a98034938ca2fcf9a4d20f95b669c993c;8940;16
+1056adaf7841dcdedbf0bd0f7915478f89c7fee81fc8af6d50bb6b68504e2ba2;baf02cf44d19e0de062594190123643841f517ecc848975663858c62f52bb767;8940;16
+d9b0f764d0b78501a745454255a1b6028980466cf2fd803f18058a2fd7b204b0;5276ecfffd680a180324a5218b3dc9635fa2c3dad973ce13145050a10971e21d;8940;16
+c31d0c433f747c1abaf48916eca734118b356f6d3b57b9e17d7f0bccbdc4f249;f1c1035a39f72848024c2228a3df9fb3b8b3b9c888befca733dadfcb07dbeea4;8940;16
+d742ea9a76ea83f103276c0545bf585591803c196674699b4460d64b3561df07;4d1b1f70c53eb8d2dcb78fdbb3c28525c536a9c24390f14c7aae784f0057a5fe;8940;16
+ad80bc38b8d1c33d68376a5186781363176ec243ca7c9165f9b64507abe50555;82d4f492600558b109bbfb096aeec6fe511b6d46c0859f93ad55de40bf594acd;8940;16
+d639776b5cbbce569279075e15144a5a71ea6afa8687e563d6f0d237968917a6;3d690bc7567d3521651d8f4a112c242e8b294d689bcc4c3d06de5f22992afc67;8940;16
+cfca91b520e057113d4e0d33bbf798dc1486a6d86c9fedeba5051aa2343d3cc8;5a9e7fc37bf119d47ff01314efcc0a6acd59080e7754ac8b435c526a85b7a352;8940;16
+5f87104955c70654b57f2f27f282e7f9983b3ed427d5a01490b08f85074dcd5c;b6cd302727ef32fcaee67cdbe532942c790b4a6cd0d86b7693099afe33b69860;8940;16
+a3070d1bbb0dfb02f4b30ddf790cf9aae4704b01964fe7c31fcb07ab5c7170ea;c8277299ad4ca7ec5327cf0b8f3bbb644945f890d5067fd282492caf4f2abb81;8940;16
+3e2252abb8bf56fc8ba5f8222632ed678c553f926a0769b054ac0cac8b03c02e;858f49ae4ed1d813b028593c58c531cec522c7d30688b6ad128e27e7a45658f7;8940;16
+a134f24189382a2cb4875840a8ecef2342d6451c28fc8b9126a62af0367727ee;d9c6687bf16e4b2d15c4a5e668ac82fbff7bd1054a1a9fad74c64c09c85b83cb;8940;16
+27758f8722837f68044d6ed97d114ee6e68c535c90f65fd32c277f7e657e007a;832f20c00023ee7bea911bdc3bd27e91b5e71a0adffe251cbb33d7f795584e91;8940;16
+18dc44ab6a48e1e25e48ec363b0b1d8fc729c91a278dc631da7fc92e7f40f75b;af0cc86e067115583b4fbfc59a4c012f54e666ec30f0841fb3d9cd3d496836fb;8940;16
+ea769794e74b49c37b307c17188ae60f9d423f5b2a4a469361fc19473db01d8f;bde4450bd23eda7e920966570da1e4257b28651e71fb1b2cd81e794bbbdb166d;8940;16
+335d85614a489b6ad3da667a5f624fe888c7d6ab44c0d5239bd85b932c25a460;aa3460189f15a306a454c3156bc87d3eaacf4ea4034cb554db0dd30ca09c6cb1;8941;15
+db54f4394f983b6bbcab11a4fb1017944c524a69a054f85dff99dc671037e3db;61a3c71615bfcc1688e07403f5b7bae94c3d262f9f9b0b37e5190d9ac2c6eb1b;8941;15
+745bf0acab3de265dc39574594f1c5b9f8a5a2a92bea826c5dbb42286ab85e39;104b46c4e3722a8b297e952720f5e803206e3195ad216a8c75a0cc2b5433831a;8941;15
+a136b6595e314033aed66588157780ca7ce608727b0db61d23ba7875e5ec296d;e7318f82c0e2eed1bd0b10fdbfb9fdfd854f2764a8620a27cee69d263f826684;8941;15
+8ac930d00dfad1251c3faa0951b715a7f6c9097cc8a3cdf70f05d05f02be6cd7;567587560c79c8884aca051fad2ba8b494a556e2aeb7c8cfcca277e3f61bc3d7;8942;14
+14a918404c8a9df51f3faa44e6fbc1f0ad8dbed88a2b1d036df9c0b2708512db;94b4b0e48ea029dee127aee326b017a4445385930a343ee7f05cb6feaa37d512;8942;14
+8a57cc1e1da801063e87e79dae4147f9833b1259bddd1be4a0403d2f35583eec;b7fa36202df5eede9a6352a27e4207339ab10dcb0b223520fca5ada9b9c530f6;8943;13
+371127c3b4ff94fa653a3ce63d08c0bc96a4a4496ada825d08a4da7a0ab57731;d8191d88d893ce555bee59e7bfceb8ed6b87ce1499fa237c8dde21f43534caba;8943;13
+3dfab6890d563901ba56a25b950cd1f2e9378f9cda77d25b6d43f7c2cb493ad3;870238697cd0cc91c1cb38267a2b61287a583f2ac916e2f4d61b613a9e67940c;8943;13
+088a55b5b594c9ba7ef02570acbe9912da05e81421c888efa024a656acfb243f;a936d20c8a80422e776e40a000bb8ff775435162ace171f39f5c2e32ce2184c6;8944;12
+b6cf45e3d9fc0bf00bceecc0b601c22c157e28135be2022036f452887e7ab327;b38223adf45fb62e94f830fbfad8835b7ec723ee053c05c093b7c494d9909cb6;8944;12
+0b520dd769705389cb468a7d86070fe20da92adc0bc0d39b03e1ef7833c907eb;deeca396614da194b2bb674e2081221082e0be9bb7f5ba548e3b847804021c25;8944;12
+b26b53ef426dd926557a91d797d40acba655e0304809b976586237bec967d4e5;8d81cf49e46c977ebe858b748f45081ea35d837e4dbde8a1dafb18177a9f02be;8944;12
+d51fa8b2bd535c16964624f193b0f90daf0dc3015826cc34363b4a035089e09b;9ddadcd4366dcf33dd5acd4eba2394eece39c0db90918d8f743b64413a63df57;8944;12
+1182fd403d91a8a71c92a6a91d62b2539831602613905b81f24145cd9276d3f1;1e4c09124071070baf4d75cc17c2499d9def4fdbfdb311a98c79fbcdf62e3bee;8944;12
+abfae3f289070771bcaac2c94629df9a64e1b5dda6f16c42280459ca789d6aa3;5ec433e30cb651794f21fad41fa1e48c7838ac777e01b14cc04ea7078f6f368b;8944;12
+f31e7d7e0d172d1386cdbefea4b3965022f15c476dae35ddee21f0f3b49a0dde;6f2396274dda23809566aff0286a6ba2bfe8fb693ee41062cde6c631ab649f9b;8944;12
+ae392585edf946ce33c5c6fca2b28193dc5ff7ede48bc6f3262076bec018d686;26e43c3dffcf6f16748302c950f4968e9caf2e18b22ba5803747c92f70abff4f;8945;11
+2ee7819fa14b671e333658171e0c379936d3df26cf3f05fb4c9a7bf4f41cf6aa;7d3153defff5a15b426c69aec18c83597cf3f7817d65c0573fb63d7e577da791;8945;11
+2c5483d338a5630aecac76b410500bb90493ca9105f532294230a4b86ca2a094;4f29ad919f31e74df97dd866d57868d62741d2e72295b9d4fbba0fd0d0727705;8945;11
+eff8428de1e9366e13c7c7eb177b640ade363f9cc290a8bc04ff9858887923e8;62aa041ec714ef83fcbbf41e0e12b973d870478e8a494031e0de93774fd1977d;8945;11
+ff9f17e59a965ef331cb6d1aeb647d003580a31f44ab9035fa9109276e15e3c0;fb66a4542cdb270fb1affa4b3725122c47f287973cc421971f7da2e3fb6440fb;8945;11
+16fdff7dacd05f7b98bcf69ceb77ac56102e8dd6e6afd1a93d36e697d1a39530;8973e9caa69c4536660d2c5c82bf752a1df2e678bc4c39077209d912f8ce5940;8945;11
+bdc0268058acb77bb52bd72d179c339eba0a5d6d6187311b7f1cbdb7db9410cb;673f8ed47bb833de38e9c2b5e93720ea5e647dc30ad028654ce33406d1bcdaa4;8945;11
+1a4bdc29e799868b0665252faee9aa54964a6c15a63012a54b364b2db3dad0cf;18d2a7251081d89c65d9551c53351029e86dd1256e4f640a96d60abbd6975af6;8946;10
+e937f49548d5f4c115573899ca0acd2424adcb3610ac6b5f73e743ad07aaa35f;3b324d6722b233b4787679ab619243851b27dcc473eac82f82b456da7df42399;8946;10
+f1351e4e0a3fd65349ee14f311fd0dc23297dba64770da22beb1f85069acf7e2;aed244557fcdb8749abeca9e44b6882c353beb4cba09a3f4a5e28416460f69bb;8946;10
+2105397bbc9937b3f387629748ff8ff0f52ca6371f9fa907e8be3d0a02a5ef35;6aa50d82bcbff8db15bbdb7cb62cd73f3e270085bc1a8a39d80eeafb2805530b;8946;10
+5e8539cb82b8fef0b1dde3091083ffa9561fa5fbf2a8f8860904bcae034e2bfa;06cfdefadd80a9b6e44f7e135285b19d686d227c139a22c6eb4057b48e1abd65;8946;10
+9e2fbebad3d8e0d9f839989d55de7f4ebf4f2f86a95f352ce523c5cf377b7768;9d0ff674b5686650a7ebe1523a558dcdcd801d99f64a6b0381a146fd5aab8e65;8947;9
+2891e09d29f0f5a5e741935674751d5acb1b4cc7ec7a9cdf7e5fda5b8848d188;97a24c0681c2134d05e5a3eb4cbac1b2c8377ea4baba623c351b1a7e2a41aa7c;8947;9
+11948616323fd32122450c1435d3b348c9a1287587bf2fffe34e259c7fbb4460;35aa24c371efe449e12ac6ea3c532c91bcd47b60187c67bad1cfaf817e2c7ab1;8947;9
+1180cd042fa7ae08f898883f92ccc226981ad3d2da26ed1499f0afd88456fb16;1a1aaf24b2cf8cd38199fc6eb55ef6670745d02477c7ac574d3fb1b20a308a26;8948;8
+3704264bad0c152318469e83b7691170b06a372e54e4bd71c0aca8578409d5be;c8440adbbae43cabf38201705b238f67cf0a7ac17159f9232f39ff4037c7ff10;8948;8
+3d7b53df2cdf63665016a60536335937925e4185b86e990568333e938aaeab59;9d89fbd2681a904cda679e64b17865593149c29a37c686228c0fa4cb4c86cd12;8948;8
+9e5f04d5dd2c3ea811d176d2b725c0dcf429aa84ce6522adb1462709be6fbe5c;b79faa24d537318eb2f61e65ac4ab87a1c3ec2bc82c58465eb7d61ba1903e60d;8948;8
+88fb7e9c659df9accbae6fcf595c76953c6429b482715743f259ee23eeea1626;62e1fb0f3783b4154e04332dcc45a17f6056ce524148d5aec27e6a067bfdeec0;8948;8
+4beb613a81fb6f5900188e00cb1116f91b023d94b53a3916e4784c40dc6c28e8;c9c7140a1088acb999a8abbcfd21d1fb52a4f5e78aeb792412c10e0ef3e43b8f;8948;8
+1c17044bd57f111a39e69d11e9e3a0b8ef01b8857db5f3a0afc88f6b0eb8c78e;0a1cc0bb0a3e489718976adb70d76ed15572a3f9a7945a4dbd25e3093bdc4f4a;8948;8
+3d766329f6340d256489357401df9a75368e928bd4b52d766bede7b32477d23f;5cb057f2580500227a36c753179fe99f91247627129cdf89e80e781c786f3857;8948;8
+d7469a97ab4e8917012e8dac6ffbd718dbb1c0a461d61aee18786a3326d2979d;9b95e196f58f92bc1070637da6a5139687b70bd454fa2be06bdc711747bc9711;8948;8
+96e7b1d9dc8340ac499f56112f5eaaa8c20936db0d89b5f247768fd001fd8f00;de9a0af17e9486fa0d79e2471775e63e2be226a9ac0e6251b872fb396b7ec3b6;8948;8
+6a0a900d72429d93cc8f831a29e383b6bcb37c2d37fb09e8096f66ff1c46d79f;3ac561f9d523eb7c4613e244bc25733a236b962f53692bdb96baaa1295128692;8948;8
+c7286efee8a9049694ebe2279eefa80c0cfe938f4479ffb108fb1c12eae4f563;234f679cbf17a65a8ba9a6ce3a9da0fcff1f9432b62c90622a391b6b531c3340;8948;8
+4bb83847592c90c4f7cf9048bbb665d490edf43052dc4f5a2c1faebce4c6b44b;0b1bb84aca50541a1e1210b9c0122f131d27c6cad534f9f7d81372c68faa3def;8948;8
+95941e8655507beff021b0ebf44426ba80e03bdb4ece80ed2916aa12efe4910e;6bd91c7050b4f4e7357fc899b2ffc33b6c3e440d68f882d925b933e00c16a9c6;8948;8
+cbc0b3e3cc9aec6ea3e491bbcf3da6a6f567ae3aa5045f8323e5f3167b8ba51c;a5d872fcd077d54f935d6e7b8ae6be2430198bb6073a87320e22b4a952dd9ece;8948;8
+f3e6d87442063a372db69d5309f27d9ec0ab001fb576cf676e9487518c37c7f5;1f2a7ab944540fe5cc77fe5391a09b8c1739f22346fb330d3eea93c7cc811185;8949;7
+cc544e39966e65f1fa648ee57a95739e4da09cd3730cc0f73182969a2d47bdcf;f8a3e3ad30f9fa89eaf6c4dc7268ec013ecc7476f67399709df824a3248d4f99;8949;7
+68f1d6eddedb2a2a71b643e976c03c1f1c99a2f9203793bfa4d9b30b4e7643a6;06d249c04a60bb4c343a87a7add80dbbb83790e784948bc33e9dee79decd4ff3;8950;6
+a282a74bb37222ba7de2d8cdde28598972e4e23fa179fcfe4fab7054436b85e5;b735f8f5041bebc771682ca4307f31d4f026dde497ee6014a9e54969357b0631;8951;5
+81f66e82a7f91b8e3e9b7b1d917d1d7845816415c65d7d244296c94708be33e2;da8081ee0c7592f082e9428cc31a61c5928008aa301599d968c6447af30dddfa;8951;5
+b4ee3ed1594be01cb1632a63e0978794d6874d2119167af61cc1f40f44d85704;1681f0923f91922d4e6e8113c0f5ceba284268de2e0f489c4b064a51ecfa0d2b;8951;5
+cb24f68df07147f7b51761b889528497c3fadd3bb2b8e7b507af3073b250e074;6dfec815148b03e0fe9bbc2f5b1be64185ac8cf656867cb907ed88e29aa59f99;8951;5
+e41cd01e9cb4e55a68038dc33f07b13e8fdc677cab0d642ebcb982c2fb37d7e1;c859cd3282c2571d7a30881ac001b82b1425188e8a50c639f1a4072930194b71;8951;5
+db0b276e3d5e5d5be1b1747615f6191003f3bf10bd356babd35b7f802c20d90b;63d47c6f7ca71bb7a1b6e2e821fb1f75b69ec529c56aab69b75c29bb9c02db79;8951;5
+cbc3bab35be0bb8aa3c40e36816727dbe5d3eee1c458fd6e152b0d35697d088b;35c397ccb1db5991880b205d18375177b2777a0664836c83a210b846dd4fed2a;8951;5
+386178698a727402460a3a3e6748387b2e3aaf225d480a850cb27f18c0d72394;53d1c80c0d15d84b1eee80dbf721e0f23f06e993e49ea2d99e164df3a307a9ae;8952;4
+dfd8364014200760204455c81750610b3051e53535abfcd6c436633693a3bb74;2dcbdd1afcecab7dc18475a85385407a0b5455df6c702ad69ff2aebed1c13537;8952;4
+c2ddf1fbcbb3ac2d551c1d01be60a5b105f16f275763313870c613c63cc9bac2;85e0f43e566f2b6bef1bdb519951d077d601d041735b3b0e04204765e5300b71;8952;4
+2915ecb4f59993839211db82435bae8b1cc1a9b4cfc3719bf0adbc59aa01596d;d8e4298c3a89922d681c710157c416ea23de7a3eccf4fcb9481b802fcad569cc;8952;4
+234ab2416fe457a51f8de2ffcd9c5cb0b368e5d7c5aa8eaa3f05f5f44f444f72;1df5fe49d98e4606588551664861fa2dd1ffd5f19a0cf7a433d12381db501f49;8952;4
+1bf99edfa6131b6fec2d22b0ba6ba09a223310537e712e92b5448cd13542ed22;fd7fb5dd86b4431c89785f045536388029a02cc47cd6ba864730413247d3b28d;8952;4
+3a45d2547b9dda61540fb8d33d72056b09ea6045c644ddf2b067cdae927f677b;a014a2b49c48d3f25169b2612e5a8a2e29388e4cf7f0308270476af1fb63196d;8952;4
+74740aae47ac2c681c53ca63cb14431aed01026f4ab204480e5b8e122b1acf6d;0fa6f5b65e46fa8f525fe677a1b9a296ab33ce9ddb40597f400bf6247d9d2efc;8952;4
+f7688e6f8021414e2ae3efdb6248ebaf86e2a2f6295c4a8d6d354618f8f3a136;7f823c475c952d04f8239fcedcbab2e01bb96429fed39da10bb46fdb397871e6;8952;4
+e2b144091a283d440972041bfdf43e6a4be3be50c3c9aa8b4ab805b96aab268a;602ab6dddc28d57b0874feac13e3f708fa63e0d047ef823976ba44ab4e6a846e;8952;4
+a6b189015cddb472409c6a439a99f5e18fe40485004959aabd16c02129e121b1;c81473d5f732f3ace085378c7deff32d4fbd1f1da27058e7cd139e0206ea7634;8952;4
+9432e8ec4b470fd0774a62bd2477048e4051c1579d8461fb4708337b8eeadaa1;cc3ef1b120c03ca437a5dde85700ca8cee39e881d5287f0a43edd58e5f354221;8952;4
+f3dde371cb116cbf5b952b2aa24b958235600bef0a2a5af8070088c7234b1ccf;172c476736987e1f687febc36cc97278c75e5369ab55487d0adabb0e2ccd3d98;8952;4
+dd9ecd6ca417b1895d60745c6de3eaa52ad73316c2a434943c6e856adbfb6f1d;87ecfbeeced341d60c14b4faee58ccfa94b76e19a2c91f6e4551b19363c2073d;8952;4
+89d5e39b9064fa8c2bd7c4468c7af1fc423d3b15c073e75c1de28d6b9576a296;2312e4a425c59591606b03bc0bee263104007625745f50c4352acd1d126d0b14;8953;3
+29724deb3e2995afc209a947d76c749be8cfd1610fd4dbebbff99a1df5cd2952;d38ab487c889d1f5fbc252f9983c3531cf4658f838a5bcdd09f14bf65a6378bb;8953;3
+adc9bb9d8244bb863dd15a851b76c2c9aab36bba1ce20a5db306abe67b0721d8;52c00797b6f8392981afb63bea69f334422dcc4038189f0f91042c2608ecc905;8953;3
+5617744cd90c2ab68cd816c69950838f0fea8a2fce2d720ad653729b195286ce;f46d539e8092be8680f7b26b837a17fd0c99aa805fcb7a254c0015f4beec7235;8953;3
+23314209406e3ce635a97a403393e575cd52146efe356ab65d2ad9737055ea19;1ac00d716765d26dcb76020ab20bf876c4b1ccb5069eb0e5434c2174b9a3d887;8953;3
+467f10e93ffa982872b7dbe7a738e80b127c909e51ccab8ab0ef96bdea30a47c;060a9c8758d52734c4887b917f8ae240c108d2295affc45607d96479a7e8c27f;8953;3
+5df12b72df24a6157aff4bdb77da8b43350559201fee9ead5bf61f29dc59be44;a8c42ce5cc466b532b18e16dfc8adecebe79debe6ec4b258cd3a6d61700c24ca;8953;3
+8b3e25113858f7f200e7e705d69651586b0efaf2195aafccd578738253be2a41;2727445c5770b24c9f969f9e0c9564d353ac60b79d42a05a74f343392e1ca9fa;8953;3
+4fadf43cb3ac5a4d08734eb96860f412a94059315fa761b9a907aa32fff6073f;c987a8d9e328601249cce8038a5be9970afc2086f7c220dedde7f5b7a65f1c6a;8953;3
+59d2f57ea4f18e524cbc7d78b884653a1276b2eb48be477e678977233c613e22;7602bba0f46f36975f8e4066e90ebd323f6cf1d445144ae8dad2332ab8aa2411;8954;2
+8e9bf35ce0dce683ba1a74ed362923050a519129ba2846a5ff932bd1d24b11c9;350e6a5ce03c9243da84e17fa47370f9181bb5ba336215fd1b52c5bb618cf354;8954;2
+577a067f15bdbf627a28796ffd18ac2e86f8a7a9df2305eadfbf5ae7e7c86c38;c188855dc88bbcc8a6ae6426956241ce32213d426765106ec8080e45d07bd8c5;8954;2
+1fef70f36ae676c3ef0a2d094ba59e161e83e0a6d51565119856929f9af82bfc;1f01d2da5b76b6c7609a5f5b59aadc3483210e79993ac0de494d6c4bb763d0cb;8954;2
+60df0a3f5a0ff010fd1b045f3f76ae1a1a5035d6cf7dde097b479a67fe3ae9f9;a9121f3bb80a5814d08171d304d06faf361f75912f5792ba71765ca3d0957da2;8954;2
+55706bd0fbd99df396d002b5f7746a78b908dff3118d8cd21fee77416ba20310;37dfe6cf2dbb2690c79f6d86d6de7e91ec61310a9205a8901bc9672ac516e393;8954;2
+f31693521247760b2d4c9c61992d094288d53c090a718c01cc92c69c16f3c853;f4b0c11c0342212bf65bea78dc56ccf3bca25facea3f2063c2be2e10a2a7d631;8954;2
+1412a8b3493c3f117d7ec179143e8895cf37b83a90c0c9b499c268beb054bc2f;09c6f15d01ba1f19dbc823d393e373c4b8ea0ca57bfbb1e643ff9b3ece8f7283;8954;2
+34e3dde11682da6b352ccd67aa176d30c41d291ffedb1cd548b2031cf5ac6de6;f9096507149fa4fccfeb243cbf7d1626674c9e83185f45f9528cc69fb069e428;8954;2
+3dc931e5a3b3e9e440d95239eb51d8e780fe56fedeed131152fb4d7cf500bc90;32bcf8600bee4457fb519591f7e20a5344e4b773dbd481062ceef07e4c86ba07;8954;2
+60775892ac2a220eb785751d8ef4f3fd3e1c874d0a0623da8ce972a470fd2c86;da7bd95b1936da7aa6582fa726dd10c24ca44605818bdd0f4126f5cf771a71da;8954;2
+8a8f875d1a2e57827e2b247176e148a6d22a15f8053736ab6b054c4569e9a17a;7845c90586ac140593574087208bc90b462816fe4c0543596aa183558af10cbe;8954;2
+d34bb2fa598420897303fad164a885158c4d3b7a4bf3c0fe98a2067d7249ff76;e52f8193969a594dc7fb87701cd65b9522948217447f854f6295f175429de147;8954;2
+31e5fb0af9fb7c959905482bbc77a4582c696fbd4ffc04e5c5a33f1ab62867ff;7cfc46068107f1b1cfa0893f814009e3a4768c88c343db30833b74e7304ecccc;8954;2
+28be5fc5224afc9fa89ee8af860e424c710c8a8755dc84880a73d8df366e13f9;33030752da6a7e23cac3f0a0cc8b20bec3417b7162f1adfee004705a4d3c35b4;8954;2
+212bce01844c5e548fa8bc81dc86b8a3e53b11b453f1397a581e82b574746a6a;71de29805c4b8c1239a3e155a6d49d022f687d64a251f973765a866ede6ab67f;8954;2
+11a6b1b829f7b225eb59b9248748fb99858eea9ced9791133f5a2141e10c72b4;092d0c73de8ca34d9f199f29282db2c0e52b9996dbc0ab9a2a552259d86de5da;8954;2
+568485099971a64a06aef7ac84f72ff783769d72afd720ee47f57ffec0bb0434;53c85eb0e08ced919af6eac71be9e29fa4088094fb4f38110b9411e43d4f9a63;8955;1
+e7e0ac28dd4fdd599a6e3faad00a9891d6369830479b3225f898b570ff6f55a7;f968595c3b3a97e2afc87dbd19355216f9c1b93c4185132b3ac08f88492fe38c;8955;1
+a8eb3bd8d995940a8cb0a79775c226ff3600fcaf5ece5130221ac3875d6b5490;cfdca51fbd12afa0512fc23daa4b8fa5727ea7c446a18bd7645ca7c834ea90f8;8955;1
+33e59bde92b64a1932d5a11635554d6861fadce631441d69c044f9ed5591eb75;173013e2d08e83694c6aa09d369f4c30d153587bf52980c107e2c4a9a0a8c448;8955;1
+6d95508f552e48a67c9e3fcc45d5a0c9c589a9b8c5f90c43f5abec79c35a01a7;00c48b829e3bdacdd12c0ccbf72263814fda3f8409676fee0fe98b87a95f81dd;8955;1
+d39172ad833881dd82d73b2ace8e32305d15664fd1e063ca8c1214706b260b7d;2ea60cd926d41034c4c71fbed93dc482b745d476cd74995018b1f8a923455289;8955;1
+1d5bca40c06d3f245723a2b37d68a26545c363516e9b2467dd9472f3dea34af4;28bb06e90a8b4a5d11d5b4820243cd48cbd77621ee78f81cae66831d114cb33c;8955;1
+cf755175f727f5850693341385cc56bc41a22235b46b0ccc029a96f4383e0313;ac5f6fe51c864e6893f5b01af0115ca8e4aef7daf0ff983b467b67bd30a81ee0;8956;173
+4f7547df695b17b00d9b5a83b829ccff7606b51dd39336a7707a54445da37551;e4b136f0a21a4204d17f8748453a1fce0d5e7e94bce618c0135e2a6958b657a0;8956;173
+cb89801d41ee2c8c175a7970ffc17c1014047e0405f7ee82aa1e7d1ae73bc293;c3c1caf053c7338e1eedf8178cfe36f3d14e57da4a8933fa125d831fe0d9caa6;8956;173
+c93a323c9067282b481b904730bb618ea11ddf2fb2fd6ce497ad5f0d1edafb91;2e6f61a6d1604387da1b7d0711c50311f8c75c24d2e77d89b24e7c3409c7345d;8956;173
+881aad79121c51b31d65458b65cc892f18a85a48f92da40e4d27fbb596feffb9;6ebc346d3fc817b6e40f803fbbebe2d4a70516173478f444b349cd887150e301;8956;173
+b3d12721449fc637ddc91000d006d7ee51ed7227d10f7625293228fdcbbfbe97;6a5d33d9ac5c367fbeee8c6a679b1c173b1a320702a773dbd8c1eadcb02b2a6d;8957;172
+b5a5d2d3260341ef08bc38185fcae8b3c1dc5df2e235f689d16cadc534285e0f;f3149ddf3442c5a6fa1ad02e221dbff4331cac9cd93134aa4d0a08cdd6494140;8957;172
+909aea96c7ba0869f41c12bfee81a5445cdfe9acfbd667222c49787f79aba34a;de19eca59889df978c0b3339c6aae5d0a889836525a00b73fd5153952368fa29;8957;172
+e51662fdbde908c7b2cfd8b132fefb0c84dd6640bab023f43803c2c6140a5944;f62ce9924494c1a69fd0a26ba35f4abf61954738bd6d58f191cd69abf1f24c50;8957;172
+55c065510216308ef53a5c54d869b3522aafef5da7d17aab3702c43bcb4b319d;0750824925a6a3ab36e35208157960d12c34c9867d0dc78c33c49e159c5b700f;8957;172
+7276d2e8df5b5f852c9a7e3b193c6d098a69f8ca12942342a9b93a102393389f;deda8d84e4ae3418a4e6469608898d82f508e03effc3271ce11bb4a62c4165ff;8957;172
+e6a589a639c231cfa4d656d3d9b2e80bb54d13c84abbee51600cb07de5eb3bb2;f977123ea4adfe2bb20e89c3f68fa18aa0826b42ce088a9547a76f124d5058f5;8957;172
+17d35bd86c282dbb60b1f1c46c0775b8c7987b97678bc15c6568aa62929ba08c;56eec007a16f649075acaac0201ff7281e45c90cbaa73fdba8e8784105840049;8958;171
+5477c501ce3c805c8eb436b6d2053e0ce9217be26680477d3680846dda61c245;ea1e0c3503d3dca593d645b038df199fd8b7b56fa2af508e391e00e33df6512d;8958;171
+7c0615ab73ee4ba0c6496f8648bf6841e2e2a458438f61f88638a6459f3d6b68;6139d35cf4de75c6367f516d2868c59b1057405677a8bfb8520987908043179b;8958;171
+fe81ab910ba11203728ac379a048322e4d082c7b3d6d3b8c089ca4e64c2d9a28;e2042f3671fdc2f9d76a5ac7c77ca9857c2e57702cd383575b4219382f01c92b;8958;171
+9f854ebb9c05af85d7171f1706fd54e438e5b16b46466a75f613302e510fd99f;43bc00fd53ee30e58f58eb3ccde76f7dc8feef1a5e872a921af3c35e3e6aa000;8958;171
+c4c0a53c1d35d149d3b3c88d2a8ca530051a2e8f925bf44ba1fa6cfc5985f6ed;aea0b3ed09858142fb3e13662e09f2915d7e5cc1654aece537648e7c151587dd;8959;170
+2ad5488ee568b5b2d14fd655d66c653c8fa00a20763c9cb3ec3878f3fde5bb90;e896e64f3daba4c23ccda5ab199f853c5810a6ec0f77126bddbccabe6723b072;8959;170
+867bcdc8e8db8afdaea6526480e78c4e99948d7e5b7afb7250d8d205f1a094bb;08ec47af6c51b4e75d76da8f210522b5288f16c307d36058e6e0633bee2d52ed;8959;170
+bcd07d7f6eac72a4a24a85dd755a22f677d5ec8dd19f36470a8e209609f66e16;2a2e557405a29b48df1a1ea71ea7f2ef317480b4094471eef6beba8e0399d0f6;8959;170
+10b0806e430a925b24706fa26e08c675fb039c03c548509aa2676a1490797b56;42caeab7f918dcfd09b09d2d20ebafe4f3aca812c32e3bdee2344bd2cb8179d8;8959;170
+f5cef3057e497e7c5b8ec8845c92474e0ccdf408ed870cc5e27986199a622568;9cfa2d278b1638755a159f94ffa5b4a6146574e52ad90d9ed3db4676483e1823;8959;170
+74ff88a9d994dc709b78f7b77e8f8047e9f60f0b35befbb6cf4ea681d272c03a;f7b2c39451db6a534899678958a66a93caf004e1157cca450e67355714409d3a;8959;170
+e82423c039387a8316e57d9d7c06e6a43f66d37d9999cc26dcd52d39f51e80c3;987893334f29594ebe486f689014a30ff9d340a7bf6c8deeaaec220d18504753;8959;170
+287f3fd0ea8ed07b0f356ee8554f2ce5177d778a4fecef67ee43f58708e9771c;92ba89941a0dcb5cdf76edcdb228b382371bc9b0fba26e9201bbe783369a414d;8959;170
+6c681fafa0ef9b66c6c0fc9cab41b85b318dd2931a34dd5e1015d6f55dcb41c8;b0b6c84713cff25f13f128d5e6baaf06de4efb4634bb07a4918f571699327085;8959;170
+9a56c039825d6842d4f23dba6d640bb60e15f748bcc681e7443a575e19490b44;06fc32558b140502466b4f7fa05c9d28ffec5c0c8fc374853eaae047955505d8;8959;170
+5f6876d6920fbd99ab55e7ddad4366f25afe8cf9da93d83ea299c75ba3d7d340;84a3836d3f94409845b1a369d868ef4b7237ce2a7f0efbc7f996d111d8d25623;8959;170
+23c49d0c1654c0a7ab8c1d04b2ec3a616c24eb6bc9014f63e365d679c8994990;eadc25356115abe87d362ee1a037e869c6a1000236f1a81dd10038024a7071cd;8960;169
+a63dff69fe11d87163ad88413aca2a9544cf83fa76999267600b0ed449612f6a;009757f664674631890483dd37138f842b21c1191b5d867eea6c124dc846a833;8960;169
+17b38fe596a4adce116612e777634b93fcbc43b1d593d83c495c4ae8333279bf;a00e8cb79d0b55842e242d94ba78d9633370f1678f0cbca3e46cd0bf2d8759d5;8960;169
+b12ef0422f87e7f1194b44482242a58b896e36e5d8dec90bf0eaa9ae9da8a410;ae5d65c4c1a6e001c2d4bd79f6b6bad3930df9cba564d52b12fe3061b83f91ee;8960;169
+cabee1d311cf86a0c463eb8c1d19c7ab162e9c0170c699d278619ec60be203bd;3ff66720b20d97b7a6f0ccc0e031358e7df7b6c016fefadf1d3295c2547eb8e1;8960;169
+9491da0abe1d4e1d81a69acb3c0f6413909a41c3230722668449fafdce1e3865;f20ad15d130c2891a506b16636ffc22f79630f013bb587be37cb473fd5f5f91a;8960;169
+6a594b8da6fd24bbe732747a79d9d2e9d5f06cad0120a5f853feddc0c2ccd831;4c2e4b6fb0250af308029298885e9edb8cce200580e9dec38a77d9ad3d286fc6;8960;169
+81bbeb0cef5a594e9e77705b28aec9df579495dba57a22e7311a9038d45b46fd;4b680fd2dbb3af6254ddba4de3d8d003d55af18ab95c71e13f574d24e991a1fb;8960;169
+50249fa2f18d2f92d35e8ce8ad25d6ca40ca07fded26e1e12694887785418b03;86e7aeec587f6a089d22d6e389db05000358acd53dc8b4ebcc2f9cbb3880f01a;8960;169
+63b6782290b5ac961db5147b757acede268d0784ca16bcab21990a97d09c51da;a294025d57a4eb7aaf38b5c7705d1bb8d0fa7bafdd49f42502d7058a8014eac7;8961;168
+06026e382fa1561ed3ec73326648a66648758d29737663376c3989c30794f1d2;608a3dd1b8725dd50f96116b5e43bec17bebefe583ce033f22d5a018c6f8da33;8961;168
+66b114e095ad8854d5a7b86284a8cbaa044dce09b3e7be9c1544cab3218051eb;5d98467320a97902db7dbc0706b11c966120ee42d66658bec57b6c2f1d34d5c0;8961;168
+06e7924b9a7a781ab1becd8ff3cca66d5d3b106535a6b635b635c0ba60e8388f;b1f8396efb1acd22229490ae8f882ff9575ad09cf515e4a16cc9a427f0bbb8d1;8961;168
+28326a1cd76cdd5fcbb1638d661d0e9fb8abfa3aae9ac90e24a949d4d720a9c8;401fdec82b56713bb297fac9fec6df8dd60e24098314cf6c8bb266e2da5b109e;8961;168
+c2ebe9449b51b6bb589796d3db3947366115365669980d8cce58c2c2f6f4d927;4b4172296320fc67a1052c20c83b9105ac9bca24d073f5e41aa06cb26fe985bf;8961;168
+875f4e69d4ce0a3e6c97886573f7da664cb8ebe22fb1f4fa209e32b70074e22d;436a78503635524758c15cc33803d43a78420df6c902798a73f95cbdb03acefc;8961;168
+e3154a5b7295e49c0b6e961998bebbbfde0c98bce5269f4bf994b7ac35a07337;22c15c2ffb1afa4f6ae87380c8c64040df78b9f73c4633885aaae685d7dbfc83;8961;168
+b03049f4f4fd8c330a514dbfcc3a6e380dc36d5cc54c94bb40da73ecc6ccb41b;431fe871dfe54eead384a3f587fd721ceaaaf1e153759f86f4e0bdc2c523bb56;8961;168
+2cfe784f796e0e70d267a154b769cea3bc197b34ab6e4ab368a8880d4f9e77f7;4e961d61bc3ae3fba8b0ed5f88a1d475f48695378593cdb03a1ff64949cbc0bc;8961;168
+670efb40563ab103684b6aa677fa1222fd2ef7c0463c7e535852d8c5486018ca;852a7ddc90156f20092f99bf44c2220a0112a144946201c4eb774b4b6f790091;8962;167
+c01016ce4d62ad391a3503ef47bd90fe925abc5999cdcef0fca800166fe98e72;a1d2faa664484ab1bc47d14751007be52b6c5b0d5930fe4864c517f6129398f9;8962;167
+e98586dc89eb59d74369004ba9d168cd767919845427e2f2eb862d3a2305801f;f7127d0c0ff38ba3c537293c9ef21c937824c64388a0461d31ef7c99d110f494;8962;167
+80d38de17dddc26112d2ffab0abe86ef01b5d9c332e67798d2a1ff6bd9eccf2c;3648fe732e055aae08697496670be516ecda45c5da16e905f8f69baa95f34a7b;8963;166
+97bcb9508c72ab23730095a7557c12714e95834aae3e8cb3da882b41e57475b5;d5c6d113c24d65cefec6bb76426122281f64760daf963d2e7ee193d79804800e;8963;166
+355b05d2cd19e7a04d5d63bbbf3d5284c902320021e4aba4c97408b62efb4b6b;4df60c023341bff0c54deea812c0d17bce86fe34a785f7bedbec435525166ff0;8963;166
+8fbeca5435f58f6aca266cf60aacf071e500577bba8fb4d6aa565f27ef11f59c;db6fef72f8c9e23d34a7230e65a0a6c2c83bdbe5047a64cb2ea6a720ba724291;8963;166
+508844807ce68424cb9320162b09404028f70f1996773a61f2f8d04c499b2827;a68add671590d85453e55c57a3ad5021187106986077195df1d458e49ed59fcf;8963;166
+14e6b2b021ea30fef9503a12868b422ca0e67b19c279cd2fbde69410dede5ae0;fec339b04cb9df2e4ddf2f9edc76cd45291f9e7d7c356740d227c5f612bd3cd2;8964;165
+fa1d39019e0eff90b9673c81db9eb452a4c5960951e5313d67a3797f2eec226a;3b797261f71c9c3fff953b9ba53c7d1585c340332a36c6c3642de0b1d4b926e3;8964;165
+e4c5d7f498140e201c63298303fe67a0c0701621f5efc404ddbc01d9dd2c37d6;28dc8a1b6238becde3546ea5f84c79007620d48ae236b70bd61ed349f3f6cf26;8965;164
+455bd465f69e605103beb5845b6ae2ccbb2be49cc9d65abf05ec0d308ac04fb5;dc6b85db83f795087dcb16a7749c952048db9a7f0d40f9924f13ce794b7e5c36;8965;164
+01b0959b76618017f7b65dae92772d1d4195c62aca88c83158b9c4e42ffd7246;0a233e123ce9b66d31583edf85fece98762bd605250ec12d7194c845e5c49867;8966;163
+f897f69ad1dd5dccbbb6a804cb92835117543baea40e0e39f6bc1ef1ff58eb4e;ea82d693e934e336ca89976cfa1459767e0d119c1ca1462fa2df906d4542f721;8966;163
+02d226fa2bb706adbf491b0db17199253a2a7b4bb83b927c3ecde0a5153a7797;0ef0e12d48f168c0a2db6bd251e21a9d96089d3938e86cb549c15b62fa529fa0;8966;163
+9344f0a1a202480b0e00f41419f669251144a55816dfa228e13d80dd0877c4f8;71602c4228ac34dff2c0152fc09300bc4389e9e202933a3cf44c5540e98d2f5d;8966;163
+e9e60bd455f09bbc5d02e315eeceb6579066c2012916ba4e0adda01bc97a011f;ffffa4d94a53e7ab1f1de66bf04f5bfd8a05338cf8541fb39478b3134b217dc1;8966;163
+6bef5caae13de897ba506e9e3881bdcda1bf0912cfdd18b199cd347b4faeefaa;b4ae78325d1f00c3688b5c048c563f8e945b545d7b570ad4a358c5759ca20539;8966;163
+42d09a4493670184e3f5b124ad3349a2f47ff3db2af47ed2d9d394a2328eaf0c;f6fba906de397ddc925e9c0207b9844be8791dc5074b2adea487e66227419c13;8966;163
+9b4dcef650f4ec07de55a159107bd4c9b6e64c6c13ad0bfa96520a786c12d9a3;b18ec479d4a6786315aa2e7c263ec20c9c5551687a4243118f3e0ce6e95dc10e;8966;163
+1ba8abbabdd6c91904063ff404b9300e1699c902a04d259eacb82f7d5cb7fbe8;f9fc0bae3799df04033b50afacec47eaf495005d0031ec37e20130fabae1cd36;8966;163
+3421f1e75893b23a608eaa47357095a5cb9a18dcaa0cde7717177b10903b62b5;17f067c584ad8f657cf355a006f7f2221883326c2850781b4eb6de38c9b06a57;8966;163
+29350f78d2ec4a8e7cffd9e80827972da22ea401e25383b51ec104ed8c13ceeb;61afc72ad4191b4858bf6122f58ce83fccf426c9c7985dffd54187681bb04a3a;8966;163
+ed4f493e2d30e87bf8454d392f20db11129a536325dfb4d26217a036f13d6ebe;b818b07689ae7e8074d964681b9fbd5bf6f74bf5f80928a358065690f9a7f1ef;8966;163
+4cda9c39c6f3dc4a17a4d13a71226404dc8abde4c29792c67d6b89af4ed06991;25ec68a00dc91d1b78fff492aa9a085864cd3b021e2b17dfa6397092c2b83239;8966;163
+83063c19642c3ef5fc2f7768e1d0dc30acadcb0945c8b24c2e9601a18874adba;149b300d6030e85961f76e6d8c799f9cce22a03d486741fc3875739cebbdb3b3;8966;163
+678a8e96d134925653a9ac6fc867d1e33a0e0aaa646ad5b6d66041c8452ab816;7acdc475b57e12f98fb34dc4f20fca12dc0e33924440ce14bc07ccb4fa8c8e5e;8966;163
+a14a04f0c24a2287e4a8c40bc0dcf55b70efe31423911bacb4779e76e49338c3;cae060b3325c2c0607369e54a260bdf91b6028dc694acc60e7030df1527a90b4;8966;163
+66df53e9ea6c99a0eb306d9a325f61840a3656570ddf8668320d17d15c175814;cbe871de5829ccb60dca015f1bf40bda34072f7a3203f3162d4ef5e527bc2ccb;8966;163
+e3d18f0fcac71d3531596cfb501e05e35539bd6e1592d1679662d57081e96092;62e78a8054c116ad5cc6df8946d00a8667d47d0bdcb6d32215d39ca07ccfb1d5;8966;163
+fb76d7a64c427b12595291f40851d2c17b8e8e90d9999ecc7bd4eb4cc93ff814;ce818d7522b0868aca70184747ba9d6c25cbe2aabaa693f503d4c92d85b3e39d;8966;163
+722ce4b7e6f3327a556c0cbedb3e77f7c37327c5e5fff979ebb1953aaf63928d;2329532b69fd1e5aee5d6273c6fa38c3d731a20669ce0273e478399dc14c697a;8966;163
+3e486f2ba7d14e95218b654c8d2bf16ed4a52b5ae50294b5d02d37900b56e62a;496aff8ef36b95ed085a395c77094a97f76691e7777b5ad5502d18f498f42134;8966;163
+6bfb822b28458629069f7f31ec7395f8891c6ab38e8f941bf58abb884b6ba7ec;22686959db6fbcb3fc584083be58fcd97a435d8627f46f7303ccb6460658d0ba;8967;162
+7e78bcf75686352efef88a9dc4f143cdf6ffd46523dbadc981feeb88c054be0a;9f8b06d5ca458bac96fd539157e80c3dea2918739271d7d86df0c04a0caaf169;8967;162
+ea6426971ddfc55dc783ca3fec1a285639dc4e795bc39649d20fa6e668fd691c;3e7d06409b726336be6349df9b5164c02cf65d2e07c0d1f3b932037925240204;8967;162
+1d6f25e8df83bc9c1290e493c7ab5b2134e0471871b394b503baeabd2b618ed8;6d0172119e6e713cc976f71362159b5b098dd49ed41aaad93122a7b34cebacff;8968;161
+2ff7b6deaeb17b1321c2e74bb127dfcc503c2d8605ff39e35d3f77e6d73880b5;7b0458af490ec1386df2f16fe27ba000397e298ba1d609277c44351d1896dee4;8968;161
+2be4daea26436a15c68b01c8ec03ca169614157bc74d19778624249db5269071;b69354e02246640f8937d1daa4d8ba79a8522f6288c0be3b689dd4cf30784f00;8968;161
+aa0b88896b48a50c0127196ea301b655eb299f39f2790600465086f9d53720f7;a4c56826b8a6f8eee1c6904559a48924fa8bfb04bdc9c6df177e221aadeb2652;8968;161
+f21325f08ec958c7a2b1c7ab3d1d985de3b30dbdc7b28e43fccfe854bf937aba;27db88a68c3f0b8e94e649a39ef6325937ab0c7ecc12ea58df9768570289e346;8969;160
+e009f1ea0de2f6b9d9161de03739e93af6c1cc305c9c0bae25c548a8e0cb2a53;3743f4ed44bdb533b50e4d25d65c28ed61fbc9844afa83e9f75c58b4b48bacc9;8969;160
+5aa09639f47eb8eacd5d431a17f80e18f017467c70fbcabd9bb995650127fd42;6402b8c02bcb4783541d6a02b08172b294077ee0b9330dc8cfc1f56db1d2f5fe;8969;160
+f8296bc5a48fbb44dde5f5727beab28ec7c6d7c770e005aa2e3d70319ea7bfd9;3ae5999250d18786330db9c9e5a87653aa3fbe46f01b7ceddf53b7f9c2205ee1;8969;160
+2238b7383a68da5d19e1e5a13c3bee439528f9c3de81a66773108fc7ef5496d8;269cbf02d9fbc56ccd4f11ff9345a444644f2424ef9c385af97c954254da12c5;8969;160
+829ff587fc5d0850c1fea911f9c326aa20e685441fc511be2503738539086fa4;d8dbe0d577a32da0f132395aa4b793f61d710ecc3fa8007e9f8651d947323bdb;8969;160
+ea61374fd193d28190f636b5d9682c6ccc429da55c1f1a2b5dbb3da2f90dbf81;90631aeef216b358e3425d6e500298052ab8e0ab697d4d3b2d02578f2a31451a;8969;160
+7aa8d27f1131905bd454d6dd46613d6a6529ef85f4bc942973bfc702b0a96a95;66a98ee1d5e02d8c43e6892fec792211161c5a9253b3db6c5b4f29c219a1e892;8969;160
+66023a6f9b9d5ee727e830f6cb304aa80d24658745db66a95b6df35b71bf1f94;f9b017f63824977ef0b529c167c76971f7f16b10ac31712018cdad1c12a68692;8970;159
+209d573ef8a3133935d2c0c196faa67c4ebd5b95be8109884ac259c22af9fd26;b1ebba885c9ba1f67bd1455246b38e5d814f16674653b704bff72c342c9227a3;8970;159
+07fcfe4a32b4e32b3a1dcd395b33736660920f96459889905ee1fb415068444a;04d0fb8fa10e1423b47140dbf36734420524af2ed2c75ed74d4181547c463ff7;8970;159
+23a702ea14f55b9cdef1fe232c6d067f95a2a4b8811c7545f14b2433c025e800;c4e2cfd407ab29feb0117f0ec2b8ae593c6403864dc247d090d8db4b7ca1adf4;8970;159
+3feba03ce279833b6122e8aa879be47ac9cdaf6e533f31373ba0b1de2389ad00;a5dbebbec3034ead7cae3b93a30af8c5c129e5fa0ef398e00b9286c896a5a592;8970;159
+f92469c1d6af8d11d1b2378c1d1d7802e2c0b59726505f11cd9b87299c494288;01882ad42693cdaa89e7848dbccfdbc1f56f6d5aa44e3d92f6e0429a9fb9d821;8971;158
+b3eb57d21f2fc13205d4c015053d4222f72f166e5ef60868787925f98682dd71;5ef3697bc4ed953b59879f4756e5e422642d4d25fa9fec768580e8471b882666;8971;158
+9814ffa5740d519b7150012e26d241f789043b705f247a23545b9e451d5af250;25ad43993a349426be1e0a600474fa25fabd32b4ba5e13b271cea41175dc7e22;8971;158
+ff77db9eb7577562139b2d0859bccb898a4580a581aa124bf4670ac2ee5232e8;ba840512ad9141850f6e3b740b7913da422521c38747197b54e0961cc184ec39;8971;158
+4973dc2432dd9d731bb1277b041afcc549572bae78fb007824f3dfae4468c832;d0bd1af1ed237399c938f9dccf477e563d457e399367b4fe40fa732d8bee81d4;8971;158
+e2f1f0facb0087f15967ec66f164297239e01a7e06349f18a850207943342252;e2feb5e2665b4e3bd6047cc3c02e19eacb6e6c7c246e275e25c96e9f4fa7e6dd;8971;158
+360e882d61b07983889770b6752914324591820d00d90448c9d9b10b244b7a91;1b6d48b387d730868d26f8054ee2912d64116181ef0b9adda1451b58ec66acd1;8971;158
+47de6a3ef761fc1e71158d5436288226624116358ba288749440776f7ad814cb;8ee2b99996f833c3fc32348a92c17a26cdf5c888a7aa164a0759e332852f054a;8971;158
+ea68d525fc6a297233c5ec174669478cc4a21394c961b7a1a4ac4f6a993b190f;018b01f7f5abf1f25434a061328d810b36c38b75b11bb067f2ad2e92ec68df91;8971;158
+ad60c6a32af72cd91dc772f9d426897da80ccbeac82adefdbc1c9745a27bd524;7bab6b2df327e2b49d6794c9a26601ffda2d20e91ae35a4e4a151d78a66b07ae;8971;158
+c957ac51b94921ab54edb4f15d9e25a8723e065eb3838dd725e87db684f778c9;eff9e1450266a2b1de2e86d67ff8d3c4ad5852b17e5a412da37ae700547bbe27;8971;158
+f7de6ccd3781c644bb47ef10f0a2bcf22dbdb5fc558ef40a83ebbf1e5b451baa;9fd900df87709d379f34f3ee1824cdcb45b97fef0bfdadc2c03ca66befb69623;8971;158
+2638070ca2eee5527177a6b0e1e3821bc51ac8e06a7e8e29409e20800e9440c3;e8fa2da014f8dd1015e208485658609a40ff4e523fdb7558a3edbc693d108c80;8971;158
+3bb5bec6ac38380781927cd4e7d49fc328651b606dda439a6b8ce4641f005751;da13f9e6c0d9f34558bd89351b916c5fa7193ee3cc1c4ff830cd1cbb506a1125;8971;158
+c87d6e7d7f513ee9a79b1309c9245b897451d10af0bea4459bf72c207599dc25;2641f2ed40ab29304fdb022a69cea87a7668c784b71f01183c15ffdd2a537095;8971;158
+6bd1d7a34cd3115955c908b12ff6debff67b9e147b73b1e6eda56aee9cbdd199;2ee20c3c173d709786a72f7ed63afd0705459ea18de0b0060c2bda2196d5c025;8971;158
+8fe02ac1a05351b93e14625bfe07082f6b89bea45a698ab3f1e6c4b52d5fa54f;6d62c42ec28a35661049af809b36ba4deecf2181616068ea103e831e47fc2720;8971;158
+5da6c6494fda02b64f7a1f5ec13cb042cb40b4d5a3b48ffe67986230eb240133;71c9cd88b3b272c71719abfec19b6070bb62f0cf8cd0fbc75f4a3f6dfc2852de;8971;158
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;4d53013b3becae2d39e77e6aa03b26a8f62283d6535113f7380901f7030e267b;9087;42
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;feb6a494a61162c449330c549683fa00efe39ec2177189a6abd1fe4109768011;9091;38
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;d1070e5c9a95db4683f77fe9fc620e844c313e91446da0e23df9aff92ada041a;9101;28
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;f0035d49b83e78b064fc4a7cd02c6affd823a09ec8bf846e163216ab3dab6563;9112;17
+9aa6cc6fca0890d9ed90da16bd391936d4896de1fdb51b87c746caf0cd8f7a2d;5150239f43a4aee2aaeda37701e7d3cefd0ba4d8b217e741c6c4f9c8135110ed;9115;14
+f391ce8352765c5cae68feda011cfb11fa5de7b10df3c8bb3623617457f500b4;7392bd280fa9af65a6908bb3af4567c7f8ae460e61f7f9abf81d229c18451742;9115;14
+a98a9a874cfbd1c1fe0f087930541d177bf0dbba1136e613b1dcefc1fb754fd2;c55c29863fe8a5983bd455700904c07c5a7aee0a7d4120bc1961bbb9baa52b3e;9115;14
+3ace9e897eccd7615e5ebfd316ed02f393f0df8d7f5289352083ca2fb622699f;f20084cc943a0e34dc0dae83689474afbaf0fafa426f2f4673734e432903f5df;9116;13
+294b2cc47c19ed15ef82f881485c8ad2895050bcce31e55b9be7c4f4f7ae026f;dedbfe6d7d77c142c2ee9a99e206ff5cae333f8aae90a1f2dc9c1c43a2974e16;9116;13
+5f54193a8777e9006354cd4e36e54adb4920c30c15e07284e6ebf65d31cc4e28;a4eed26009ad8324fa31cc529b381a45b2d5fa2056823747ad6422036651e745;9116;13
+5c841e3286de2b222999d5369ac3ea2164f47dab3a5e78456710216ffd383c95;d5d987db1d4a18c1b08bdd53ee1f7085bff9e515bd07cd84f5e1ba1ecff4e2dc;9116;13
+bd5ad69c869b3462ed8ec7038e62690c788d6a7cac57f8c9a3ded0bca8cb2681;d6cfb5d0739f6057bfe0d29783c66b9626f3ff568f79a2f05ad3683e6b092b13;9117;12
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;247d308e1bac2f25a673cbb300ca52add1d6d04eb9e65aa47ba35c24a6625458;9118;11
+8c8dfc1548af9055427f57f71bd2a2e9147d0c958af9ecfcefeb79a79c085d7d;91554bdd3024bc4ba1a5a24bac0f964f29ad3f0d6be15e59581ddd65169d559a;9119;10
+41bcf4c62ea665676a978e0d26f47fd04da87b99057aada543a55b8a1990627c;1b24c380605fd98bb2e2edd01c49c5cf7e8d2e50005f319012baba83f3d0014b;9119;10
+fb93755a80f0cf97eee02109ae4b5cc58fc08660efd03eaec4e2a196f41dca05;b68104f391085342e4be392092cbfabc15b9bfca93bebc1e215b76f5c64ff452;9119;10
+508d8e626fb1b42c3a5831c34cc337f9872dd21558213ab27463f0eae6aa4f5a;bd1fec56eb84dc24c749264b82bd2d1f73052c0e6a04bd27552470abcc9111ca;9119;10
+2bfb98d943dd7ab4c868eeebc95ff50694b10e431c1afb7331354e09d0767b83;f56dca5470d71467ab110862ceaee7f12bbbf1b3215526f7bace990004eff9f3;9119;10
+268b682d7d4d8cc3c319ee62860a84c0e2de56a1e7d1acde36d6387f78b63caf;4e01d852c40b03b749c4f022cec1947d6d8ba0988108c348f7895f242cd41351;9119;10
+67a6adb93ebbc1968c4f6e7b2f01c9578913f8d91705da99f6e40e6f7a8c9ddc;ad07fad37239ff4b16176aa3bf5dfb50631b1b31fff5abbdd1366fffc012535e;9119;10
+2fa7993f931496ea54c54691f3e9096829e5a2c7c607371414c27797dcae13e1;bd580f445e38ee472fbf2d2ea5b2481d79dee012ae79543237bb264696437ddc;9119;10
+dfc90486d75f925cdcbbc8c1a406281ebd891fbf5c54866e2af0599de8201813;dec8396c42ef5353b264c804fd36ea9cada91e11cb459ee1b283e9edf69534c3;9119;10
+df17de95ca38b927625a6357d9ffa47c9b24967d87dfd74c828222e9e65aaed8;6e185f8e15852270d7409747e31fe173c4ee01b3f656b0261f3e11108956b563;9119;10
+a6282161cd6eca20d5157d904fb1bdc63562f83e371e497819a8bd759a33db8a;7f392583d6eb9a3c3baef49e7646702cd77a0939f0f306ebfcb58ba0cd880c9f;9119;10
+437794b2ee8dee93d5478e66a5dfc78d736b879c1d9cd6ac3ba6447ebcf8cc44;6ab530a80c478cac7da38d9b23522e52bab9c16490839931578feb48b152b8f1;9119;10
+86fe39897aae7a6386e3b5b753d6dc6e606dff60dd614fec13943c50a91dbb80;81e8829190fd4b0b3dbf3b6b5901bf80fa79e9f25545bb2b0d9aca732b03aa03;9119;10
+8a5d7a05e0370af787e591cc3436b94a24f4b83dcc0511eae7587cc69080e849;e48ee8ba1cd627d449bf9eaca969f0ece860d1a065e65c55af7b1583d594e9a7;9120;9
+95e96a3952978f3772f249ae828c1eb7275da78bf09b82413493887f60a35fa7;89d6882e838bfdd8b3a95ed05285e56440b8c438de8322ab9cdfbbfd2f4d816d;9120;9
+b55098bd3f36ff1346325dee0cb846ba675403b21395e104e5c92779e72a0539;fbb68b89db3ddfa6781443569745331bb1ed543b0dca22f0c9083e3cb574fa1d;9120;9
+c2693bd51f60263e0df90614da7b8cbdbea8d3f044b4c7d9629c22fd3ee93e43;e18e6e54e65535a614e5074f2c04b4b2a4802213c53bac8a903b3b1ce42e88d6;9120;9
+056443c5f1ad315fccde44fc7f9dac22e691c9467df36dbeef8dbdd72105363c;546532d51de64748d3b6fd145b4f9c69b020d8bbfc7390903ab53ff0b9b63e7c;9120;9
+c02a5c3c389de0f75773e5dfdbe01e7e3d9d1b38824aa7f012da00ffa06d395f;b4001de598d94e2113f2730b8f4b2646e9324e6b86b9e163d9fb5bccd0ee9024;9120;9
+07e21569028f36771309383946afdc5e6072e71faeb72d9201622e9c0967634f;019e62b0987633090c7e483eac70f14b0a0cceac40a2d9152944a3428326c1be;9120;9
+a185d2045623134b73d3ea0a5aa9018bbfa5294fe4f246792dbe2a510ee623a2;6f25b4977f4d3fa09608e2bb8667a7aa542bf3beb37e3ad514e8b9e936faa7d8;9120;9
+203c8746564a1ac54dfce000c84234564efab40131f9f219b8cbc23f43451964;fd709f64de07b0eaebfbc02a14cf028cccc9d5ac766fe0de712f3014b5e5ba87;9120;9
+e5fd49c7c83ae421a0ac199fc7153295d097dd022157238042508de68afc709e;2bc2e3c09f87d5d0fe41336937bbea796b58cd1ace77bcbcf15d074c15a6c478;9120;9
+bcd7f5c87e28ee9ab4de38c00334ed210d7da59b7038b6a1ed846e8ff7e01a7c;2301abfe38c3654cd74421eb692bfb0c655590ad479932091d5d93eda12ff9e0;9121;8
+29a864f814ff4459dacb3b2930a4b87bcc0417b753e76d15881d20664ce2eb74;484e86bf8b9a61066d9ce0b20bfc8f6e0101bf6dd955cbdcc935bf6b2ec5d9ef;9121;8
+319a45defa66386e5931a588c0caacc63633e0381870d702119d6638a8a0d3e7;8ef49be95815af8b62e3d055b9f8bd990e22ed80fa4906629965f8ca45a210df;9122;7
+517852bd46e298344d9a4be6b891010f80613253ced6a6e9c3f57ee3e88c0722;bf9ffd4287d6a1ce06835e4c3a3439c0b138699f99872ddeb38fb1027418915b;9122;7
+200dc29a8378a9915e508f1148f4872479153191612c9d08a0b6c7f90636925d;a524d6ffecdd1b41703970394c2e71b6f963c695809a6b6de83baedfeee70538;9122;7
+dc950fa44df473bc224bd2fbda1b544ad9546e2e5cf89a3607adfaa363ce5518;9045d67a7e26fa9330a172ea8d6a6b99abe0cc6c7504c4fb1e917eca5aea14db;9122;7
+3b2499c8c9555b65033939d27f6e6643ad20accc655a1ffb7d5cc47310997bbf;5b7d5aa5fe402309fb3545218322c8834244026d8899c4d3ecfe127ca3e6e600;9122;7
+b214475d6fc9edd62aaac151315d07c823ecba93f32fb73de327f837b60eb45a;a7af277ecddf2dd0853ee9b67dd2f30ba448f1cc162c961993476b9254ac9bcd;9122;7
+14638d9e42bd7c67d0594f45eff98014f46dad0a6df2f438d9e09129c14e4c63;3f7135848f851c64d83c160edb1993db2d1fee3463df7655a21485435d02c397;9122;7
+6c834b6291c8eb324ae5475e3addc0be10f0300e854819bbd1892573d0426732;7499cb5ee2edc8c798f7f0087cef7645aad26ca8b74eae6de5a4f81e6fd5cf30;9122;7
+d6223e486eb741ea9379ac6187357989ccddeb095e45ac4bd2bb8450af0f1f6e;edd61f855a3596671fb948e8d011a170048b42d4c619ef588b96ff1e343a807e;9122;7
+f28d265bb420618a324fc044b08193c6e5580713e82fb6bb379f3bf802e79883;350a5576a43a70b46cfce318e4e60b3af74edf9a553a08e4048adb92d240c479;9123;6
+42009f3ca2203262f285ff3e9000429f293a4424571e4ab573d4f6d8652b446a;0278600d92e20a9d15b4a8f094fa6edd651e4f908d253a90be9f7a8c9368e0c6;9123;6
+c6df4e231bc96a3d2b8456a1e1596056cefb932ff3d19fecb40e3bb602d9df2d;af55f09ecb746f45f66ee2eb4c02180c66487c96228b3887f088dee6a4524935;9123;6
+f291d6a3a6ff9dda7b12bb04de9eb7323e454dbe9bdd02c574f03634f4bfdb28;424d520be907f152a253a3b5815268031a37c7405270648849edabbede849746;9123;6
+e6fac0171cc6d77debd68e4bbba3d8e435cd39b9bacdb20d7342130beb7f9dec;fcabb940726f87682d54a31bdfd0dd6a9c65ed0477764953a0b0d722d638191c;9123;6
+cfaa99b453f3bdef1f276825fddd2a9c59ff69af91575b1bfb810a50e1c44bb6;28e625d63fb3abeeae6ec64a4206fa534f4bc91ae26cfdfa182099e2f0a7e69a;9123;6
+b3820d3890d0382b491ccc5382c837d949b70fdbed715b08b9dd3c41f66201e2;e5f0ede8e34c34653ee5c8fc29732ec9541a91f5b06a95bc5cd76f58294e5b0b;9123;6
+bcfc57dc62c107015619c73c33ab5727a090e01b4adabfa75301ca31871e588c;fa869f110f3a4f5627fc15905ec01f377afbd3397c099c45dcc0f1f25d72cc2e;9123;6
+1c61cb306c2f00825d98a5dc35d736602273474d7c40cb234a65eca42b23f781;05c91bbc42673e8d93f0830e1de6585f9e19ebdd2627177f2e31c3b6ce8411f9;9123;6
+64920589c141c60030656d0ea7a7fdb4d0def8ac9ddf91b89ac0e80144a8ec21;f49112d554783eae5936cc0f20c36746246138854803ab193c71c5f545626a87;9123;6
+46f0d22fc857a317ae1afb8870aff856cbae44106e5706332203be19d09f2584;ffd5e3ddb30c800c57053ae3f95f373555c702ec10bf980c8e47ea188b1cb864;9123;6
+61db523149ccc5b77dcfb67408d80646c0d99745d18e34f4ea9609c25247cde5;5da8b37523d326da1879d9a6394aae0a3a7f61320e910db1f891634c75729309;9123;6
+b2d18403e2e6bc3d2bfa183e7508bd977276cc1c9768129fa0d141b3ca0c9f76;269fa65681c56aaa178130cf2b9f5401eee63d86b5b1b31a305c31c4a4ba044c;9123;6
+d7312ce535e95850126acf33c49c33877b0f8158618b8a4618a90e4ffbf1aaa1;38ffc3e4e4391dba253266f7dbf9144165340adc87cbdd1730f002559f072964;9123;6
+31c7e0ca35fb585eee9d471e2f41765833577a30af5e808012138775fe87f5ed;e113576d2cf00e7aac076da128520a84a4f37181deaf2af95165d87b28d69f5d;9123;6
+047b6b05d065f72a3f43b0edca5b7296f65a7e03e3afa6c65549f52a7c3d7183;60d4e166c0a97cf7d3dda3717d07f468bd2387c65bf5ad48eb3a3bc8e361d51f;9123;6
+f35cbbb7b98ebfa1a926e884ecba158b876f25c52901bde398c638e61deacb35;8994f7659f794d73df892fb69966e0d0ec74e3b3ada4d45e41a4c6909c4e7ae1;9123;6
+75cd37e9c6dec3243963e231cc1a668c525c99783567808226ba606c6eee8780;ea9c3736b8fb462324991c43ba4dfce1022a2ac63bf1014c3cbe45c8455bda62;9123;6
+e6399dc9c5f429133dfc123d833f8aee487df2ed5715531c3b716c4a7d8acb9f;6bb1e969a59111e94cd4f65249df488f77647bd540f237166da6b0a69eb81c73;9124;5
+bae12ef7564f3b6c8a1cbb070aca3c7980bea57fd80cff011ccc0f6f5434a553;90923fafbac0e6e7339314a802ab250e2f32c61deda99dec70802f6f73e650d1;9124;5
+9fea5afc51f68f6ef377360c746d1d2f86d45b864e04ccfef352505e735ac31d;c71a863b25cce5c4700d3b5723631979e1fb870a78efa0f569ac1ed63f4e31c7;9124;5
+c109043552b29775bac4b2f199444fae7e94d7b67b3545844eb7c66cdadbc073;1651d2b58a40774a4a14160cc2138b7e6a9c11adc3fe98f5fef4c69c2312c9ad;9124;5
+31829e8277e9cf407e419b11b9d7ff1260151288777cf8327622e7efc87f6e95;8543429af30b5422104117b1a92fafe2fe6e4eaaeff3dcf8ea65c3967af9c07e;9124;5
+a64af8e0fa252753294f989c76273cae85af2b3c6df2144d85f543aa8f0e5155;dd0c465d984618212c1b9e7fd5305529fb040d8dade4bee0e870166191b167ff;9124;5
+e0aa360e59a08fa5445b0310492e536f9e1590e6496ee8613858c68d98a5207c;b382206af48c39e8749b564b030eb6ac316aff872d0ef40e8762065154b0c393;9124;5
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;3b14100c36caeb7314580a2bf28c60a19a506402534d4d8195cdcba914e61b54;9137;27
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;91bcbcebe45c931ed8a7ce54bfec4d985074635327138b82e59414d4bb457b76;9152;12
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;c311a9ae9b5bd94504ad73d67425a84e887d494ac1c30f683a5a59f8b482229f;9165;10
+4c1d2c2e355ae4245b0867405671c5e838bc66ccf6a36f8e5782caacf192fb22;9e767fe818acc2ff1aa110e72022ddf690daf704ce2457ee83ebcbeeb919d741;9170;5
+b455b068b9f8e42f356bf201b56b681680fdb87184adfe6d6fa812da0b854048;f6233530ef159d238a82f9385316071b43798f92463d498b298b9cd0d1891f87;9171;4
+798c648314ce5a11fe0362140601f20c809688881ff7c7c4dde95593ce9adaf0;0e22cc4f8abe74781a40627ba786bbae98ca11d75189fac5f244a5599b486574;9171;4
+b9b43b36ebee4ac5a502cbfeb8fbc41d2f6ff73d07149dcfd360df7913d8b9dc;1afca8698f2a48482071888c5181c3bcca973d2a627fc93169fbc7727faca865;9171;4
+24e200fc4dc2954a78e175cded41a0cfb5b91fb63bd1004106c162dfefbf16ab;6fa9c164689cbe6d348fb6abc3db75a7e331acfd66ccd297f08e58eafbe4e595;9171;4
+55033bf5938783d415e263c240f81f188dce34da7932d17f71cf76d46122b179;697110f74122e9c5a8841e05652e2512f8f7d0c73e92c15b2de7667caf62b34e;9172;3
+ccfbfe48258fd0c855b6fbf8b301253db1517eee1ff3f6d3ddaacd75a92d535b;9e39348348d28cb488a1f43fb395f177b70aa215f43f7adf8ce5dbcc2ec1fd46;9172;3
+1edfd0448c422cc54aa8b1256e75cf78aa2b5686dd104cfd9756eb92b472ea37;4f42942331843ed61996b30b20ed3bb3c8464aea6052613ce4a023bd42fec8cf;9173;2
+a0df1be3d6cae00e3b11c00a68005a5023b3956949fe275c97a97bc04a52b14d;2f63407d900e5f9de1fd3cfcd004fcca3f24a8d22989b1d014886a6f2ffb39de;9173;2
+7727e04db8fc7504bb1ed617bf14b02ce74d3ad7ec2f57ea2a37e095989184c9;80e82d72619fe88b06a3b75c65388d6afef98123a95e607873774a5f82c2712b;9174;1
+d0a146505f25c9e561590d09468e2c22ad9d51d81cd1acf60ab57ad9611a9859;71b9d2cd874c25d958ff87ec540719630f1ca35232834d2435fbc714f0528fef;9174;1
+57d5325250bd20614f3d1867f703535f152f61a846eb62b14fb8aae42894a784;f3be1ebe078ae264bcb7efccebb9d5515b380479f69fbb2bdfe161b823ae1362;9175;3
+7fdd080baff4f6296cdf811d4e3c153f143341c3696c25b856c1ef752d206113;f8c6fc57ff109ed28b910612d09c0e8bd91dc66af39690bc244d90280864dec7;9175;3
+b3fe6f245d95ffd2835fa39a5d7dc1d38b248f41c69bc33e9ae3b4920f6c2f3d;6a1a2e497274486424de683b2972d9dae9ff609c21e7a1abf4307614a2136473;9176;2
+b1dfb1521f96a3a90f9559c18f136b214c0495eb28bc8df7403abb4712b383a8;a9aca26bc26290066ea21afdd9f51f9d8d0f1250c31e0f6535af62ab734ca9d5;9176;2
+1ed56c46196d4f80b3f5c8da1adffc8355919071f201c097205d35c88417377d;cb858ff978e02eb2e163b0acb32f28b2b358d0b01f91ea2d27415b4ace3eb4e8;9176;2
+16f0e33f27b338b105a5146c435d93ff75dee7dd22cca016bdbd349bf595cb56;62112f983aff03e739940d7b2d8e336b539dfc899865f99d0b0a2477634ebb46;9176;2
+5d2116e7cea9489a446bb342b4cabf4379f025dc8808dc0cedfb9858b5269d93;2e173597c321d2204230753f4c26c8e6c6d877609d57aea8a644ae410056cfea;9176;2
+93f99422c9b6d1619a11ca90a73947375fd72b199b1ec31b415fd6c3500e4a98;dc673c29485407b8f743cf5d3620fa1995a22e0cecf9db45deb80bbc3edde88a;9176;2
+a10a454c07a06732a276288782453ce9fdd75454194d41895db21bfea3eccfc0;511321bec28f5fc0bfbe862ab6391bd1cce2178e9835f6bcfc97ac7cd299c9a8;9176;2
+ae4bf9cebdebe886a62c1d8eb68c56b78ecabfad8000ab6beb1f97cd46452e3c;8dee6d9a2ecd2d1d7621019ebb5b1beef08b2aa6a22042f26c9545852cb54f4c;9176;2
+f4c4815812eee61ec21e77cc14a7f48a9eb6d80cf591100e84394e99a9005482;910bc846a30bba28a91ade460ca8bfce93f83647bc016cd9400beff2d9821376;9176;2
+e0c7bbc006f0dda1172092fa35954ce919c0cab20656c8c503188cbff2544983;c92034557e77b944cd9a3f6f193dc357bc556c0bb62935b94101b4023a1e2728;9176;2
+26adfd8171e71ae2acd2674fe7d4f376ea0dd26b9a63054baf17ff0a27bc931b;f6334def0c4139b4c20c42688eb1d1e8cc11c3aa6a498e87d006dff032faf069;9176;2
+578b50ececb024c9903809c48653c43f3c2e3b3d061060e541968de83c4562df;2feff0ce77e0a40831f20143615be8db38c4f538e52a2db437169b7331d0a9e0;9176;2
+8df8cd79f555d6bac835e0f2362c417fdfff0d6e52b38d8aa56b851b2e35b4d0;c7a53fe30acbd44a5b0d4b90433f014ae289535bdf42849d5b74532ebe0ae3e4;9176;2
+197510f75f27e04957d3e3e86e03c5e483eb6fe806ef40da41d6a493f6e46a63;95e44b30bb3789ad3d7c383e248a395a000c962d7ed175cfcb2815c2aaba07f5;9176;2
+da765ee388639fbba618698217f653cec86096b91bf23a5245e3c14a96d241c2;31e054edfc7f5d933f61b014d004f44f52502aaa2e71c4c688d7b25a1e22673d;9177;1
+4e4d81bd0bd247d07af7e401f0d50af0ecde39401a6f8ec1633e8039368b4570;8cf23f6319af21ba16228b3fd101b16ac10ee37bce63a868adaeda449f855a8b;9177;1
+8861b915bb798a6585c5e5a178f2ba450178437237926af93a3bd27b9e7191d4;e1df49ea125a079ec7d9c93c3f9bbd3248ea011c1e398c32b02b8307c3e60605;9177;1
+f1124cfe028abbcf18cbe029d22493bb4b22bffa16a49f300f5f01e667248a75;be4339490891d90026d8994e2a5a22db52162205291cf5e35f9ed85e553d00d9;9178;5
+573244d8b817e75c95a829dd5904c521d22efd21fe2406b9c3face4335913a73;57f5392401fc75eb84d6d649d8555d5466120dd293d0885b4940bb49056d5b2f;9178;5
+1117e46e0edc4acc40e2d12fbce12609b174d1967e4e10712060ff3915ae8a31;df88b51fd64179f01b79b7442a41a0006091e9f5e3edfd41f925aea85343bc5d;9179;4
+141460dc2c50417068cb1ddf2ccbcf87f0b614590aeb7538019202b1a48dbaff;440fbe30f45649596bf3e42a6987c33d78d26e31e6103721e958790cd19968e7;9179;4
+2d96491077061eeb4821a1c0c588d8245d4211fd5b143f9adda7fa79aca033c2;224057c637d948c1cb86090b6499adf4f2ff72de41eec51a2c9d9d16da8b8bdc;9179;4
+d8445a4c3ccefd51c8aa84becb9cff9bbd0bdd73045953bb3245185d29a099ad;495cb36913ed38be7593068bf36ee33561d5a1b31d624ce2e6544e316dee4c88;9179;4
+318687371f6a9367ec2f3422e01c582dbae1ffe4b0cf30892eadd9ab03f5cce0;c5e061ce2749bd774a6aa9005eb024328b3c3a196fa9b89362633f2bb1e1bfa9;9179;4
+1c4f08b052a20e0ade767136669653b9f393368da73310d4edb8d8b7605489c9;cd743b77ff17da07122228bce9d96ab8d8f1bd82b2a8bc77c08598fd38d3e0c6;9179;4
+82417acdb1d9f607d363132d55101f403b07e717818acf14d43977bb1d393dd5;a4e2129fdafc9ea5c35db7163a0a3fccfdc9f54ceedbec82c9fc791cb7af8da2;9179;4
+a8437d599d6530b8c7ef50e5ede7094b5ccfd848ab6e41151cc7defa1b6cdd5e;f77be3d524049dd863bbb1eb1a3a6f8a93412157d48ed025fd22face43941e21;9179;4
+20a0e54bc9bad9eb0adb5108aed6ab55303fe669152f21ae985ef454fcb16d28;e14b0a8cea5e40934097462b39a235b374459057153194154648d8cb12af1aa2;9180;3
+a0dfadc9d90de3659ab3e161f72b37afa09b5928e527e3b50bce5f2820178a3f;7af72356eef127d1b1a64763bf229ae58bd114b9caf2e0862a81ec379e206548;9180;3
+30752bbce71a50d682cb74464842cc300c4be1c758e5506543e0a5ed623e8a9d;68eebdd8eea716f345bb7a522b20c892079fe3524a5ad482de69ae809a5703f3;9180;3
+5165b05406db6aadc3c4e69f75dea01bbb13d9f971900f2c6dce8673e13b3ee2;3bf50868e09340a4ac4c099795163a338f8fbd867225804d2728ce1a963e2755;9180;3
+272077516814c285887dd42d3c68f12e99148e3c8f88729ad456fb078e9d60a0;80ee07a58d84cdeb9018210a70c69b1d0f9569eaa03f903410ce106ade392be0;9180;3
+117432d0a4c0e64682de46ba218fe300ba74b8acfd2b391213d2d4907231b133;304fee635b636d0e83170d4436e88232f81d4ed9fc2baa3238be631b97c1989b;9180;3
+fe4622ee6c814721d37b6b18f30c5c236bdc3955ee9aa0375fcc407ebe5d5b17;29c6ac2c0eaeb0ebbf13193ae9d3e4e921901f4488f459b68ca907d10792c13d;9180;3
+ea22d61e98cb0c66d76b8796c01206f0167ab208f1e4cb4aa072fd90b1d7d93e;8123bd92357b1fb3bf24811bd7eef56359707fffe85a52dc364d1ef462196664;9181;2
+92484473d6d77d9141b2b9178cfd9ddd0dd1fae862ba07a68b58dc3aa95852c5;66595879c6001d3164ce010351afaf6c47d9b6d9451e9eb154905182bc9f9a05;9181;2
+289257fcc792721ff55c2d05cb3f452b8c7f57e98b6d82ff2529037057ca3100;3a8cde29bbf92e93cf0c6e284be716a213d2662b994093e69d1348627779fe61;9181;2
+caf66d880bf225c1c42a17166b5d81a2609160a71aac8fec6da5592afc69dfc2;891e4c16376ae5c164e5f668424032d5eea2b193621aba62ab70e6fc60acda93;9181;2
+42b08139c8989ca588465e780b8a19dafd4b3d634512a0515850d07a4eeacde6;24705b009615ff98912a8a665a6ce370b8c358f302f1e7122e7419eff92bbb5d;9181;2
+91a9ed3a112383fbdb527991e54fae977baf7c5e43b6290e5893875a094ddc89;3f54528c2b8174b5678f5b7275f243f8df6bdd95f5b4513e043d9b1a780b1bd7;9181;2
+bebb92477579b3ecfdc4ad709a787590a0d13dbec21ae4161978583702862613;3641f191f1b856d0d025ea1ab7d36c477dac18f3cd53fbdd768578442586fb3e;9181;2
+49e79d5bcb089c29fadbffcb84a4211db1b5337dee5147f558664a27a5528a4f;a9f7a71ad2862f0aecd0db00f24617f77d594f682cc334604870ba25cf1f7269;9182;1
+9d2ef6361cd02de3f0a0b03361e7008468ab94f9e1a967fadccd7476e5e78c37;e077c42b434b704101312e4ba072c34211756f5489605b9bbcbee0a6b19a1ea3;9182;1
+14b9bf1bfef2767ebaf7f77d3816ad0fc853c77ee78edfbe9767cf7cb6c1efbe;3aa04dd09c1cc2b35c0f8d0d0c1589c62a5493de5cc11a6fa331f00ddfc16300;9182;1
+efe9d3536126f97bbd6c4d7704eccb43f0d7ef12c112c74aa79c9f5b498aeba2;b893dec048c9f14a08cd7a616f1c73dc25c498bda05f7dfdd5d582d6a2d247f4;9182;1
+ece0940067966346d45afde3b5a50755ed9e7077e9ae895aed91f33ec6291d98;030d4a17eed891e97a455deeb803bcacdcc1733fa30c3871746b6316fad468d5;9183;5
+ce3d623201bae9338c3dd79e75fddf01e17bd0c8da2580c74b4f797b8da5fc67;7c83e89f41c0fc69bf97dceccd64827b1bfcc7245ab430cc47df61d6e86b12a9;9183;5
+6f68808848e816c7881937575ede8d5d72887e954fe47cd27206deb5e4cd6137;c73b251be50928d5ac217e9203edf24d4ea8e3615190359af0f9393ec816207c;9184;4
+eae02f2b25c46021a671ddd4b4727238aa2e4c967757c3546952a542ff1e670b;4bb2e8d1217c5177e52f97b56428bb8333b1cbb3ab20daf22027e78ff09d634b;9184;4
+c9a1c1edffa5a257bc6f0d3cea5432d1bd216aa5d87ed10951afc58d96b7b482;489af8cc3f8ea5fb630f0dc8f16d323a126d5d25b70236e1299af106bb666b13;9184;4
+06fce95094524c5210c3216856301b8a0504f22e1d8562879ce9afad09f1cb64;ce244a70961f098e6569454259c05b7b35e0965c3dba6306af4608a110d46184;9184;4
+dfe4162df98a013a1ff288197c14448f66c52bc43681ff0511ea06815c550d09;1723e18c5d5fad29906bd5ac8ed69a62636335c18d93cf594acd39a506d33994;9184;4
+625c1823cb9ec1add7442416d91a0509673fdc51ac45e5b3462e65b0d427238f;960b41a80041c4548b2f507969aedf173592e5e43c502f083c71ea562d9e8a0f;9184;4
+652b775c884ca3d9d1e907d4da837a6ac7bc104f92ed2bf077c03b3e1066b718;f343861c839c2be9c0dbac7732c940ac9444adf6cae7bff4ffa39e8e9d544e8d;9184;4
+384821ac24b57144f3b3b6840e84cef62d0a44355b72623007f8f602f25609d2;436ef3c7fd6979e6f3e513adc9d8653e1bf30648315657604dec388ff4bf3856;9184;4
+cbf3c1a2a865882fe8512938f530c8c49504dfb9b001d5e1561843f82eba9ed1;70023eb74b6097d164be3376b54c9f40af4880bfb31dce45f5bb170274562fd4;9184;4
+5828fb15537a960f3da2b203ab184cd4b6523ae7dcfe540c824dec01178f15d9;6c0752de7bede6898323d3d21fac992b23c2d739cb8ba139bb837dcf513ffdf1;9184;4
+f9fc6dc9aac89d7b6d568bd91a943d74913ac7fe1f90af1ad86ff2c7932f154b;7e00ea25614f31cdf5a415e24f7b22ba3d88cc7177ace33464f4d43dc1158a54;9184;4
+e46d574b905699efd17198b4ec47eb5fc76edd6b0116bfeb96e460c9de2871eb;569212c46dbe8f2514889c0df2e917209b901908cbdaf797d984ca5458fc1247;9184;4
+c6371d344ed5e60ee7e2aae9df3b2f3841891fb782f14c0cb9258c3a73088365;e8d8d4f54e2c50e3482a2fcb49da01710fae561434b731aed97574f348aeaa3f;9185;3
+21d7955a297bc0bec63d7e099266c67bce61a3f87fae803ec0275daccc33b04f;076247b914aa66214986e81b450dbcd76272bd163a2619981dd6747e94f0d5a8;9185;3
+68a900462794660098da66b9140a0e896d5dfdd659d45b69aa30fb297dbca8b2;f7538dbfaa90ff4c0c6518de9024cc7532bb8657cfd50dff238c06a49424e255;9186;2
+bf3ef0d104e2fec03e5ecee1d8e815fa0c557b8a47a103b7a7cf61bca5026fe3;26092aef598526ee99ef0357d9c2c10b1819630b1b27593047a8265dad8c5c36;9186;2
+e4ff749ae3b6a26360adde18541745d0caa227681ceb6add1fc9a52edb7632ec;3f3716b6ad37e672f4dfa9c27f166426753d81ed8a02dedc944a6c91dc4e6d0f;9186;2
+a5e26cd0f3353d963ba7f5d04107d2c9338f8b2a66ca8dfe36fd8a1e6bcdca69;53ff0a098228f02afa406e0901e4220d70e3511868ac7ecc2e1f69e31e5ae0a4;9186;2
+da04b61175b44868c6014ff70b040c5ef6e42523ec7c0543cb29a58edaa3fe03;969229271e84d095479bd4c7e5669dc51369624249fc5a252062fc5e277ad50d;9186;2
+ab208296f98b9121f1e5fe8ddcb26f26568bcb5b3e8aa810028087d29087d4e3;cc1974d087bbdb2a7705b5da2b2c2ba12a7a602b44620130c168a232064f86e1;9186;2
+381bc747ece058ace1474b7e175472b12b6a4352f62bd349144a69093ba496b9;a1b3d3d9bbbd27f8d3150a995ec738efa00e8e2854cbd7a6871e066036faec18;9186;2
+5c3fd137c23002aa1698c01b544bf0725cebc41f59e3539538a4189dc5f749ce;1894a90e3ae66641684fbda600a315d992711262b086f82a7fd1c2f3f44436f7;9186;2
+41f88e020e46f1c3dca2202defa567666409809a7636fd90ee59c3bcfb7f5f40;188125e3d145f2aa065bd143c0bb69284d2d99107b5b812c4531e883b6345607;9186;2
+b8b27910f99f2f43922f08d000b46f18ae9b4f3b6cdf18ddc0d96b3ccb79c055;7561cba1dfbfa4337009b70a1f87dc21bb8f80c7f24ecf0431149b30f900bd4b;9186;2
+f0392f825aebe66b7e0a7c1236f4706aad60f4b61b8de93dbdc2c433c9e95dc5;60a4dbbdec103a17e7b1be1941475ce9c72b3f542fb82dc139530d5e0c5c84e5;9186;2
+9dd5f1ded89f94d9e9b6e7df9e8a8e97ee456bc7a9889b2e39795a69abd7ae3f;a3767099aede5a85c4961571ec03d9468a18593a9a4bdd2901d4c19b35621438;9187;1
+112053115c7b8680688f94378f9ac947728bad04782edf30278b1f0faa14ebd4;c79e389131f2f1e1f1d4d482661c93ba4c50da742c8d9833860cac7039203b8b;9187;1
+d5b7d822e64214e0ba1093c575ba5a4936cf638ee7f6aad16099d48dff89a3cd;511bad59ed7777734dffeedcd9f796836ca56357b09402fa3074ceba80c3d807;9187;1
+30ea35a0a00bc17d3a1a236ba36db0c0c9f6364b62c7726504c44285c8112609;4fe90c2a3182f6066f7d086246f6c835a957844c71ef766cce545a102ae6d860;9187;1
+ea7ecc3a438243991fa2635ffa4ae14b5b17fddda3ff6cdd0a24bb1c6a43d98c;6384bacff27f484771496caa1d2917ab86f87d2b7a29db4c7b4d2a60174ea00a;9188;27
+c9bc3bf2b9a74d05cb4d0f3d1f7490939034a1254fce449ec9492973b4f9e29e;320bf8eb11c90b3fa1b9dc2c9fe8db84c6445be8d0223c4053759349aaa5725f;9188;27
+d1682bc6300b48ccba6e14fca63da5b72325ba153d8465ef2180f7fea2caef4e;a7080f014e9af91961bc8f678236c00a26836b4f72b27cc4c286e1792baea3a4;9188;27
+74ed1072e97fac4869a267cebec35fac1d5e38c391d6c94fba2769072e7152a9;ddd047d56b9a57a7c834b54c45cf8e74c65a9db203cd87ea205a928a68183048;9188;27
+9de1c54ad3bc1a9f11978fb54c5772b5fe7b672f37283cc4efc80143d8ecda37;432e6c4a1e823d100ce4b0d792121ca910b5b46babae392ee7ec2bb6689cb41e;9188;27
+80ef10bf7b90120ef7d5015154f9d6496ae962ed13331a038b54163ae4c4d6b2;8e1da074b1ef1bf3ea6ebc3ce5e960257e19e7427673f73a9afc947e064fbdf0;9189;26
+c6c0d291a525412dba1745f3cb077522c55f2fc02396e41c6b951b469e3804ba;403ff1b9261f3501f09c17eb3033f860601893a1e924612051392d7180c7d350;9189;26
+bca6764d67ca40b788e8f309ffcea31100c5b27ed9394fc71f3164ad188f7cdf;8c0e71975e78c35990b71ed438dd196fa49903d2a7618cb6025e2c8a8ed46f82;9189;26
+16abdf36823bb20888d50106186f3f50306422483f4ce7e908663c40f01efb82;3b232695dbb45c9fe33b3e6b7de482788b73543e9dda0d030565df5c0622d69d;9189;26
+56688fda1d791ca3c7c43e8a1c564c99539e51ff3c88aaa090d153a80acd111f;3070ece4bf71a37751926690c534e8cf7ef4a05ff55f2b5d2c49bd5677b74116;9189;26
+d99b439499200ed9481311291375227f304384e0cb2c7e3d37e315bcfface6d1;fa4ea012d477591ea022d4dd3dafaaa89e23a941b32d685305a16406516cca07;9189;26
+3bf52f8a8b645ebb4a6329dc94eabc67212c7bb0ff6c0c0f7e23a819ca74a6e2;d0fe34c9d5f1c04986e9cc94ae32f1aeb537d7f1fb2e3e51e7f2beea4766dfb0;9189;26
+190b6596329fea720e5299ba0086d5d6ce0a9622c00b8f44cb4c4af6633d2eed;bcf1686834ee6dbfd815853435aeab5bbb2d983eb03adac70fba1e398b37355e;9189;26
+7e1f89f2b000fca49f08bd12a6e252683115b769ad1cfe86e6baba205a681dca;70043d861fcd8c8e7de5d803f0a98e4da8b60c7b4183568882b9b529c69d4dba;9189;26
+0742718cfe6e06e8ebbdc7b8b28a70ecf67df744f3aa5893c22e8b90cd3eb096;c0e8518167104c0231540e629edb4be7f823a6f90759078013f0e50a15c8cadc;9190;25
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;f1a4cb461215388b55673de71bee894519c8425c428ae1bfccdee4bb745326b3;9193;22
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;98207adfd08d900e2fbb799e07ec514bed17cc4c7c37763cf887897a85719f04;9196;19
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;060d44f669f0a0fa4dedc13e4fa31d306cc3f7b9e23713d5be7845b1c8b1ba85;9204;11
+9b3dbc00eaf4030afb9f8733c452315d30ed42d9a2e5ba2ee2fcbe1a34fde056;01f9607ccd70fb2767acb86706b829d2d9d0238f02470f1c7fbb482b3348b562;9206;9
+660bcbaaf07ad80b0cb0e42e25113569f158cdc72ceae5f301a6a21b796817d7;81215646311e54c9f96485dfc7160090f23d0c11a571dafe3e17114b47bb1844;9207;8
+582c21eeebbaadee345af88efb9954816d6a3d8792bf987d18a4ef58f8977e90;68d10e46c9244dd09bb505df465b64fb6a4ec308116ac5ed89125e171a917560;9207;8
+62c0ae1449f6647f4f9877e31d60d0d832b92b81c440ce8edb2489ea0e97d812;0e8743bf2a68fa6836c5162846b763f7491399d2185a499b8e6861996231c3fc;9207;8
+be6c0ab8241e8c7d1da45a321223da9fe5a7ee5ea7ec7025a1c5d91fee36af79;5ecd4642775ed04da8276bf49514fb1c3378adb4e8da5d6749ae890dc59cf659;9208;7
+9cce2b44711b243cc8637da95c189ca5a8be1aedd5f8d7ccbcb289b90a0ce069;06b0cf7e6824fda399aab013a85b8f386eb1374fbbd4b7cee02b6007c30dd560;9208;7
+2ce91cc2fac75c0e2c392aebccca32cc7d223dbb2c89785ff1b42198bdb291ab;e50e3c9e93f33ea0a131b5a18d17d1143ae313715f7237d109ac9ad03d438e86;9208;7
+06fdc9aac15d99c4a506f2dc757d8b265b6b42f9bfc485100bc6cbcda27e5076;d042c221b3d8cba0c014759e3206f09ba52f2122a81e6cecdc20238d9c15cf08;9209;6
+81732fbe8f64c1f5e630ef8a853e7336634ebe880d90e8021fb23f5f4675e9a1;0bc88830fcbe78dfae743d1872ae3f9e9ba4c35bdd39bd598b3e456779bbe531;9209;6
+ba36d6f5158205981454f1a2217bcd49f1498bae9b00e53aad0d7f7b84093b94;533c96c23d344342ef4164cd2273238f3453af190a0a09928c432f7b33df6886;9209;6
+7c17cee7c7f0a10ea3481df17042f17c338d7c22f8a85b30a76dcbb4506fbdf0;86bfd222fce9e1935a0e4316ab90b806b4e1b7d8dbb0b702c21b244b765404d8;9209;6
+49c59781401ba081a2b54c4cc67ba57bc1ee0d7475001e8ca89188be2362d990;260620a657909938e9a3401fc2cb3493b66273c7f47afe48c07a16a9cdd82f49;9213;2
+fa9f28a4436fff72c61927a6606341790e218231b5c3cf2f900db8e7dcd92376;2d077d726e76dcf19a7ad8bfad1f513def2f9b4e18868ec41d7f98191a6bebd0;9213;2
+e1e79b024dcc4188067060287c95d8bee59bc9a8cebf3c8b14347da990f3bc29;713bd5a0920a0278e4185a0efac5a5a4dda71b7ae992bbb2fe06aa4db7a729f7;9213;2
+a3927fc42521629920741a541db0c75b9dcf86a0aa4a7db84fe7ff583159253f;b8baddd59bec6c592201f7936ed1d33a65e365ed3190d256d7a7a98b5cb84113;9214;1
+36a749e113a81b317f4b873e95d30592c116006467abb2daaf2be87c77216f22;95babcb804f56d8e9a1fd3e97dece3089b6f82bbd21372a1ca96ce1c0d6f415d;9214;1
+c58e52a72f604b460d807010ea7163aee65103848ff8595d69f2948b6c86dc51;78cc9aa3f9fda6194fa5fd6c2d1b7802e5b6eeb6b455ea19929761b24c76f860;9214;1
+6603eeb6a9131c0892b8c7cfb24aba2d867ef05c352b59759907f7c4271907a6;e73a0465b108200178a25dada311591e09ef7755aefe920d86c07456163dbf72;9214;1
+83e889e83a899651329d06d3f34fb8d5baded91137310db5ab41f54a6cc91879;7b6d85d20fed2459f5e79c9ccf88507b818b2ef7b62978ef3bfd387182139f7e;9214;1
+cbfcec4d1ee7c9dd511f08588910a8555add3468e8338317ce71e4d0320b1e34;3c50417c164c85db9dfcc9e0678250d296cd1ca3b6ef386a7c545ab60a87a79b;9214;1
+7b209b7c34f79f55ff6f47ba79f539b446af6866bf2446a3b05092f95d778898;227ac0e89f98d388ba5414e5c833ae6ac02fef64f536fcd365dbbe12d90c4f9c;9214;1
+9e5cbc3e4bc847c8d7159a6c437cf03f96b19a6f3e4542e8e92bf0d2552f18d7;d6cb4235688e2dbdba817470cc4659719448c0078586fddb14e1565b4706c59c;9214;1
+9d98514b12f0f8d1fbfba12edf1dfcad3c8de009ead66aad1b8b41a0e7fa720a;902823c7fa70c5f68b3e119fbb8412b9c6c440b68818f526a49a97a30bc45da0;9214;1
+c5496f909cad6d84cdd2803a87402e1db473d64f95eed32346606ab2c464f371;c0ab1311cd7a157cc67b7b9f57a6165982e0a5a191f80823d3046cc7fe42e0a1;9214;1
+7690f0622807cb992c7c420ee37f43e082361ac05a7cfc0b205e38bfd3af4aac;e06b8f3cdb462c839fd4d065e25f85d827797b60d069d869dee06bbf3059abd7;9214;1
+e1dcf488f941bd355647956eb15e38ad8fd8497b8dce09667cc6f4fd7d049ea9;de3f8ed5f835b4a3b77eb1019fd3794df7e8191159665132b62773a2034a6bec;9214;1
+6c1eea93b3703fa61eba129b0f3ac71a4ab334527cbdf3089faebad8474b8f34;26057c5fb12bfb9123fcdf7952ea125ddedbbece06f8ab6b3d4070d77d51f493;9215;3
+0ec3e3c97b9fd5550eefaeba2c4b7422dc87caa97dcc2b721a4b30da47493549;2c76c46f138ccfd89be2904ea32a288a71db26c895058715b1ca3d5ea3e255f0;9215;3
+8ad84c2040fe87cd833c80fde1feb7ae539e7dc01b5b29513ac7b3c96a2ed747;27631a7f9874a5258cfdb1d637e5a1360a6933c2b86fefd2c3ceec0f9db9e051;9216;2
+4f05a93a258cb0df035fa467378abafcb0306b7feb0c15b6704921ce8ddf01d9;dd705eb28339ade61e8c57aa50063722ff20b447053cfa7a26562477f04e0be9;9216;2
+2bf1cbaa4036ea2fa9db87187f29f9b187c09d392c3be5fdf1a966514b2567fa;ae168585738d911a63f85a6aa5210553ef67f5b6420497797d2f5ba154750b16;9217;1
+f70715b0c38ae9c83e730fb10e1b84408b04b3bfd9bae6c6c7f1bf1df21903b7;0e183c2a54d13d8393d035415d3488d243269aeb7964349259da2f2d66d5501f;9217;1
+56949e80a531a7f6e1cf4a4c174ed2870ccb857616f60e84729ee954ec914ed1;c85fcae3eab4ff4482300f3924ad38128f98bb1dba953c00bffbf618a14785bb;9217;1
+2a7d9ad0bd1573e00b7054c952277a2a97993d73e4d3073581ac2d0e2212f532;bd609220408f914f52a20a0b5c4e2b1eb22a17f463e3e9309c094258192324bc;9218;12
+deea7d18a1d384341f8783ef87ddc8b24d2f4159e99ff12586f08b0e960611df;b202c73d1fd9d533842bbbef81ffd6632dbda54376784ad6068c3c91617a4247;9219;11
+c900becf6d3dbfb99cb672412d8eee0cfe0b20ca1a193eeb1b603409f9fde6e1;fd9aef8951bdfd3401bf7b522c2680272c16369904fec35ae5ecab72351d3166;9219;11
+70e4d4ac4793816b8db245fbf130a022e9b27450ab58edaf0ed3a909f82c2875;2d3d160f2418095d1631b30133b86523e97f184d563cb3a6d295b20a7d9ad879;9219;11
+5449708fe2f857adfefef7e17476d7b3f104ac5fc48b055064e0bc416fad538c;d565c119154472f8c8d34be0b1467efad124f6184862a0aa51bd55444702a190;9219;11
+b24e8c0e30743e1d54937c22d9a27c593f4cc7663dcea822ac6b6d5a1320ed8f;a3cc2695c62a7c76c5edbe0fd4d90eaaaae3abdf0267cc2e422dd0fca8df3393;9219;11
+210c8d64571c7ff1a8ea664c657c2039df9aae375913740dbc2052d9c15e105f;410f18a0afbcb5c861d4f3682873ea7095da1ce8212d5dad77508205a687e49b;9219;11
+c90ff4992efe1f36d89b5bc8f1fc95d9f6df94a5a84cabb2f3f6d5e1c54e6534;27fa07afacbabd56064a2139ad9bd0deaeaf138a269c98ce29a978dbbe01e8a7;9219;11
+7188b51c0285d94343cea0df55d765898b61439e8d6259db60f76d9e0cf7a712;813be5df1b056cae75153f58814e9be87f66921d165ab061ad4431fc50220db1;9219;11
+7f0e291f7ff374aeb750a693c08f4c00c3e24d5083fdb7176acd044752f80ddf;bacab821a73980b6ddc4e970780afe7586da43dafa3e94054a83cb1d1c9f21b2;9219;11
+7ab3938d18b876c14232bf04b2b4cb71737fea09d63268172955fdd665bd6f87;c923a929126f064276ca3ac3b96c7662971e8cff3c1064aa7bbef1381fb00eb6;9219;11
+528d474cb2fa7ca807a7cdab3d5b298ff26987125da8c5ad38c46185ce382e77;0683d31b99abf4bf5ff4172f6ba49d0606bb18c437b9a442cadd44748ec5a2b9;9219;11
+e4a68891bef16e2c3fc69f2798e087e222b32bee63dd1dd7aa1ec4aba4328dd8;d0d02ed8dddbe63dafa57b103fb1e088ce197c12d2de4b7d3dc897b28a3549c7;9219;11
+d726498d102ba01f3dd12e21b2b3ebd8b899755c037441283397990f4bbdae09;7c667db51fdbc5743d92c5b57a25068b2d9baa9b67803c5c8aed75f8864f99f4;9221;9
+062994599dd877a6b2943a227f10a9546eb49fe9444a139e370a7f8616049952;1a2c0e68178e1013b4e37d5f73c1c4fe3f44ddcde3ed92f32a8a9be0d9a93ab6;9222;8
+56442523170ea8c417044b47fc6f5b042799026850ada75a828a38b1f7582e50;e79601b2075aadd65238ee02bafa207f8f3a44ec47da32084ddec853418ac8f0;9222;8
+c9b04e0052bd07892c81fae88679f60480a6a83772bcc6fc9f283a9eac8414f3;b36f83a3d0762ab41754ce5e66576eeac614054b13d5e5936e0ab5f2d859d51b;9223;7
+2204a6a48ad45a8039ce558500cc58eeb09ec361d1e49a2895539ea56c9cfd56;ea298940893744c9b4b7b65cb30f1bbc99a44f1a30384e28a7d3761f72a4e9a9;9223;7
+5776b422a8f1404175c5e18c4aa994d4a744d1ed4fa1b85ff32505c57bb1ea90;e756bcc1587fb67497ac27a2eb862d8f8fc4c6c229c66db6a4e4f390410cf2d5;9223;7
+2954f501a423519f83db09cf2764b22fd2bbcb7fd148c6d1337a1fc2d75ba7b3;f3ed6e18872fcdcd3c1df26ebf2ab1ebd73e9657164623b6d2cb77f796a5b5e8;9223;7
+75a321881fd15384c4595c8e773389bb403bbb3a8394793ad6dfac0d55615e99;e1e30b01b37bc3e70238a4f8937c91d5c08c961a082ea9460b17e89f0a4fab30;9224;6
+7a2504fe5a0f0f58bf3f0ac68e2ead9867c6b41d74c456483e30c4248d13b35c;3c481cd60cd18a36b29e1e6f24ebff0da7e95f616a7fe8b01e10012e263644cf;9225;5
+0c7f022f65333dc3f7f0e109109b5f57f8f2450497a78c230ef51cbe1cb5b067;48425c204dbd77e1a8dddfc076ed3d5f6634b4fdb01f5b6799c4a289422fcafb;9226;4
+3b9e1f1c26e99cbc0511294dbd10810a7e96566211800918f34857febf574600;83d655c925971a970a853c158477bec1495e75d00e8711af4d4e789c8f4f9262;9228;2
+0d9937bebdd7b673caba5343c85d37b470b1799425d05ffbb0c0dd34f438b977;8e4c7406d96c5a264a37df2a9e9a2d4761fc6c35ec93758d09d779cc3d627f0c;9229;1
+69e33da0f45b04909bf7802cad4c376c98f987c55888302d049d97c5d44ab2eb;7ef4112ce101031a02052e4acb996e1afab873444e0235989a7c7c7554b78616;9229;1
+1b7e7a2d0dcdcb2bc5ae4b07a2bff29fee0736ad5d44c7366be22e436e283b40;f1f0c82739d1c6db1549495a85271e95c6669dae5e60039f582a45dcba68752d;9229;1
+93aaf9017a7a73e74dfbbc5f948c74c6dd8a6760174066118443deac499df875;34e354725952705af4db3b5490f3491f548417edb717d6f27276bdb565dd8fba;9229;1
+5da7424479c89cbd1c7b17e0a27be67f8a80f7aec9ea34c8ebc48b629fc45834;37b496d5c4ca800930e088fa134dea8ac835c44d7b0d2982e9bbf17f84792ccf;9229;1
+8dcdb3f8614fe95c0e8bb4f45047d87eb75576ea81975cee3f29dcd51e1a410d;1768237c5b27f72973592bbc41bd033ec08b501005b99b1ffd7d866d7df080dc;9229;1
+66c616ea48fd14762048174cece09a5ee234df052d657030d517cccf6a6e6bb0;33c6fe40acb79b620e2e8e0a7dd91d772a4ee887e999b9f467d1efe8e52578de;9229;1
+c572e7d692b3d9dcb36e8f961e4fad7aca1119fda9ccb6d82bd3890788a79842;ccdc977f323ea3daf0f131f06c696837f13148af5755accffe3496680f7927f7;9230;4
+e88021983148c27c491039cc551fbff1f2009d5fb6942c963fde1a7b4f0b059c;22321515d1afadee3ee2facd1fff1431c357e934492bca6d1f5daac96f2d182e;9231;3
+f530e425d5c191ef178fb68d069059aa1979130109436dcf9593eeffabe400b3;72b3574b83a81f77c3c80051485e1e7d1e03373efd6270264516527df4f8f63f;9231;3
+3e31dc6e6457a535e82878a45f74d86b9d0c4ce7b65346d6411ddd3cc061b796;431af9e783e0b35e0646f2e05033ed9d8eb0b6ae08ccab86a9cf207981825346;9231;3
+50afa63815268fa7a6a2ed52d8d936cbbdef497df63e3ae42611a40974486b2c;da345916178164f93cbc204d38b6589064c0b68602f328449a60140f5a84de6b;9231;3
+5767e3f23bb17a97876d7dfa92a4c7cd970d03760c50f16e0e20a7ef6e88e724;f8e06832093758f0da068ae439aa234e0732ba3b0bb68c09c02adcef0b695fda;9231;3
+708cad52087a2b9f301ef7626d14870b42efeced41b2a7c5865478b93ca780e9;54fb6519fbd9757b80c8a98491a6ddc3c13b259ad7d8682cfd1d56c01a19ae17;9232;2
+03e06ee8fa41089b765b1c70f51e1c6c02ed2105dbd28b76ad89cd7e5760b077;467e5b9d7542618b39c3a7730bdd3dfaa8dc8b4a2e3c831e390cffb6b98ce129;9232;2
+9d6759d0dd7999096089444bec33b58d354a800e09c40c42e07e9d8b1f613ef7;777c9d6268c27fa24fd5c21ead7fe579773f53f62968f2fa9b0dba9732ac893d;9232;2
+b8d00f6c1eb94d207491e20a418f3d6410afcad4556483cb2a5c7cc85a3b9512;fa708ad87102209060b0da20cd0544a2adc79563b8badac1750c35f73c79356d;9232;2
+f8975080d0e93e6cf41dd98b4430eb9c7bc6bdc52be7eb4c38efec26a247f29f;5a1417f59080b49ad828038fb8c8b5bfe116a18e6c346e033b4eb488dc9ac283;9232;2
+1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;d48b70541d13bed665968e38073ac6f69a4ec9ff08b260783e6f5a1b426facf0;9235;4
+0bc302ddeb59b3ced20eb0ebd947260ae7b328789c12791e4771ad69583a2b87;b4e2124dd71d844d760a8f920c8e64763c33baaca7e6284bcab0900d5a8337ca;9239;7
+67047148a438dc8789ee576b4436429e2e070f32ae1ddf87c7b10354caa44323;2308c3f73433774ffa49e50cdc34ed0c78a9153fc8d98252ace067ea131353f2;9239;7
+1d40c4503153943591b2f399997fc1f21725ef1fb55d4e39cdc43a776cb9d44e;c3c13a211c7848e5e4bba8594b7b58df1ee7e705086256b8e2a57d1058c09644;9240;6
+ec187abd6be3da62d9f348269b47ce73b18326fb468adba0a64ab373f37e25a1;08b02f6e409f4b11ee51481bd76a6084ed7a8a92359581e77bb2d5e8cae01d4b;9241;5
+022b1dd6953d4c674d817536e8e259d86cdfc7bb459d86ad767a3cfe6a94bc32;72760d8fe80bca613946279ea66ccac1de115bb96dac24d29e02afd7165f734b;9241;5
+e9900b93a3f0558006d370ebb9e259f5a60f2cbbd5026aa1397564e04db1279b;ffd549dccda792e6341318dcc5459fe19ceae089cc9aba136349b7479eb20d57;9241;5
+ee2c8f5f60bde9a2719459ed59e9e475e65e7645a49fa36279df604ac564e02a;280d12d8c7eabe8255e6e3355726e0024bce197937509caf5bdd61c3abf90195;9241;5
+c938f2946d94fad91be6434f7ac3619b9eb8bcd7e1cf64876160d8b793edd179;0381bb4198324eb2ab4f67888ec8191c9075e77e49a8ee0ecca815324ac18d99;9241;5
+310c0bcc0dc4c851a64d819ea53418c75ecc13700e943471d3b63fef48dd870e;96beb5321b5d5f9b48e5de85a253b13b84fdad1bbfe5cc791ab771270f9f1cec;9241;5
+9e6d985aa2b86f6f07dab853e4383f84121582816086e1d8c13be545d091f1d4;dac49290b9c0f85233b566b15ff050f82d2da785a11534403922fe50704ca4ff;9243;3
+00dcae3febe862822efc45124bb55d4252ac556f7f87ec8974433826a885efce;80aea342f1c91f135c3b05eb4d71002fb305ace64218610ff41745f22706ae00;9244;2
+dd4d26dc979d4419fae3cbda519a21e543e7e79f6e096d4490711c044ee75fed;e846d9327b43c239a1816303c5bd742bb22a0d13276b2f1cfe811a5fa6114404;9244;2
+c315ee3ca70bad0e7f39021871ea65573b0bb42111f84ec310f1165307a680f1;7f409dc158da52551740b282f69605f4807a4d91db0b1c368f4c17067ade40d2;9244;2
+568882d4e15e20b00a34c0386d05a49a33c28fcbd97e92002acc4b8deda50222;2de1dd27f3c68f1955e29ba7ddc2d4110eebaad3e17b09e7110feacd60afb578;9245;1
+f5307f66326a5e8f2af510274210f1fad75d7e4ef5baee1caca800395bde29cf;e7572f8ad41fe8f58d5245adb0d0fb530daba6411fc57a4af83aad2ddad1bdc1;9245;1
\ No newline at end of file
diff --git a/hash_list_cache.txt b/hash_list_cache.txt
index 9e64e77..b57c8ab 100644
--- a/hash_list_cache.txt
+++ b/hash_list_cache.txt
@@ -1 +1 @@
-2026-01-25T16:04:04.413Z;8701;0000000ad30983fec618eebdfb5da673175f5b54c63ea3ef7d87a1fffb18e33a
\ No newline at end of file
+2026-01-25T23:53:35.210Z;9245;000000057a9ba10877ec7e33c55ab124354dd4cd693992d115068dabdf868264
\ No newline at end of file
diff --git a/restart-userwallet.sh b/restart-userwallet.sh
new file mode 100755
index 0000000..ee2bc8a
--- /dev/null
+++ b/restart-userwallet.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+# Restart UserWallet service on 192.168.1.105 (vite preview on 3018).
+# Usage: ./restart-userwallet.sh
+# Requires: SSH access via proxy (4nk.myftp.biz) to .105.
+
+set -e
+
+REMOTE_HOST="192.168.1.105"
+REMOTE_USER="ncantu"
+PROXY_HOST="4nk.myftp.biz"
+
+echo "=== Redémarrage UserWallet sur ${REMOTE_HOST} ==="
+
+ssh -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10 \
+ -J "${REMOTE_USER}@${PROXY_HOST}" "${REMOTE_USER}@${REMOTE_HOST}" \
+ 'sudo systemctl restart userwallet && systemctl status userwallet --no-pager'
+
+echo ""
+echo "=== Terminé ==="
diff --git a/scripts/complete-hash-list-dates.js b/scripts/complete-hash-list-dates.js
new file mode 100755
index 0000000..5ea9fdb
--- /dev/null
+++ b/scripts/complete-hash-list-dates.js
@@ -0,0 +1,61 @@
+#!/usr/bin/env node
+/**
+ * Script batch pour compléter les dates manquantes dans hash_list.txt
+ * Ajoute la colonne date (ISO 8601) si elle est absente
+ */
+
+import { readFileSync, writeFileSync, existsSync } from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname, join } from 'path';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+const hashListPath = join(__dirname, '../hash_list.txt');
+
+if (!existsSync(hashListPath)) {
+ console.error('hash_list.txt not found');
+ process.exit(1);
+}
+
+try {
+ const content = readFileSync(hashListPath, 'utf8').trim();
+ if (!content) {
+ console.log('hash_list.txt is empty');
+ process.exit(0);
+ }
+
+ const lines = content.split('\n');
+ const now = new Date().toISOString();
+ let updated = 0;
+
+ const outputLines = lines.map((line) => {
+ if (!line.trim()) return line;
+ const parts = line.split(';');
+
+ // Format attendu: hash;txid;blockHeight;confirmations;date
+ if (parts.length === 4) {
+ // Ancien format sans date, ajouter date actuelle
+ updated++;
+ return `${line};${now}`;
+ } else if (parts.length === 5) {
+ // Format avec date, vérifier si date valide
+ const date = parts[4];
+ if (!date || date.trim() === '') {
+ updated++;
+ return `${parts.slice(0, 4).join(';')};${now}`;
+ }
+ return line;
+ }
+ return line;
+ });
+
+ if (updated > 0) {
+ writeFileSync(hashListPath, outputLines.join('\n'), 'utf8');
+ console.log(`✅ ${updated} ligne(s) mise(s) à jour avec date dans hash_list.txt`);
+ } else {
+ console.log('✅ Toutes les lignes ont déjà une date dans hash_list.txt');
+ }
+} catch (error) {
+ console.error('Error:', error.message);
+ process.exit(1);
+}
diff --git a/scripts/complete-utxo-list-blocktime.js b/scripts/complete-utxo-list-blocktime.js
new file mode 100755
index 0000000..44b67c8
--- /dev/null
+++ b/scripts/complete-utxo-list-blocktime.js
@@ -0,0 +1,123 @@
+#!/usr/bin/env node
+/**
+ * Script batch pour compléter les blockTime manquants dans utxo_list.txt
+ * Récupère blockTime depuis RPC pour les UTXOs confirmés sans blockTime
+ */
+
+import { readFileSync, writeFileSync, existsSync } from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname, join } from 'path';
+import { createRequire } from 'module';
+
+const require = createRequire(import.meta.url);
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+const utxoListPath = join(__dirname, '../utxo_list.txt');
+
+// Charger les variables d'environnement
+import { config } from 'dotenv';
+config({ path: join(__dirname, '../signet-dashboard/.env') });
+
+const BITCOIN_RPC_URL = process.env.BITCOIN_RPC_URL || 'http://127.0.0.1:38332';
+const BITCOIN_RPC_USER = process.env.BITCOIN_RPC_USER || 'bitcoin';
+const BITCOIN_RPC_PASSWORD = process.env.BITCOIN_RPC_PASSWORD || 'bitcoin';
+const BITCOIN_RPC_WALLET = process.env.BITCOIN_RPC_WALLET || 'custom_signet';
+
+if (!existsSync(utxoListPath)) {
+ console.error('utxo_list.txt not found');
+ process.exit(1);
+}
+
+async function getTransactionBlockTime(txid) {
+ try {
+ const auth = Buffer.from(`${BITCOIN_RPC_USER}:${BITCOIN_RPC_PASSWORD}`).toString('base64');
+ const rpcUrl = `${BITCOIN_RPC_URL}/wallet/${BITCOIN_RPC_WALLET}`;
+
+ const response = await fetch(rpcUrl, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Authorization': `Basic ${auth}`,
+ },
+ body: JSON.stringify({
+ jsonrpc: '1.0',
+ id: 'gettx',
+ method: 'gettransaction',
+ params: [txid],
+ }),
+ });
+
+ if (!response.ok) {
+ return null;
+ }
+
+ const result = await response.json();
+ if (result.error) {
+ return null;
+ }
+
+ return result.result.blocktime || null;
+ } catch (error) {
+ return null;
+ }
+}
+
+try {
+ const content = readFileSync(utxoListPath, 'utf8').trim();
+ if (!content) {
+ console.log('utxo_list.txt is empty');
+ process.exit(0);
+ }
+
+ const lines = content.split('\n');
+ let updated = 0;
+ let processed = 0;
+ const total = lines.length;
+
+ console.log(`📊 Traitement de ${total} lignes...`);
+
+ const outputLines = await Promise.all(lines.map(async (line) => {
+ if (!line.trim()) return line;
+ const parts = line.split(';');
+
+ // Format attendu: category;txid;vout;amount;confirmations;isAnchorChange;blockTime
+ if (parts.length >= 6) {
+ const confirmations = parseInt(parts[4], 10) || 0;
+ const blockTime = parts.length >= 7 ? parts[6] : '';
+
+ // Si confirmé mais blockTime manquant, récupérer depuis RPC
+ if (confirmations > 0 && (!blockTime || blockTime.trim() === '')) {
+ const txid = parts[1];
+ processed++;
+
+ if (processed % 10 === 0) {
+ console.log(`⏳ Traitement: ${processed}/${total}...`);
+ }
+
+ const txBlockTime = await getTransactionBlockTime(txid);
+ if (txBlockTime) {
+ updated++;
+ // Reconstruire la ligne avec blockTime
+ const newParts = [...parts];
+ if (newParts.length === 6) {
+ newParts.push(txBlockTime.toString());
+ } else {
+ newParts[6] = txBlockTime.toString();
+ }
+ return newParts.join(';');
+ }
+ }
+ }
+ return line;
+ }));
+
+ if (updated > 0) {
+ writeFileSync(utxoListPath, outputLines.join('\n'), 'utf8');
+ console.log(`✅ ${updated} ligne(s) mise(s) à jour avec blockTime dans utxo_list.txt`);
+ } else {
+ console.log('✅ Toutes les lignes ont déjà un blockTime dans utxo_list.txt');
+ }
+} catch (error) {
+ console.error('Error:', error.message);
+ process.exit(1);
+}
diff --git a/scripts/diagnose-bloc-rewards.js b/scripts/diagnose-bloc-rewards.js
new file mode 100755
index 0000000..d5668a5
--- /dev/null
+++ b/scripts/diagnose-bloc-rewards.js
@@ -0,0 +1,157 @@
+#!/usr/bin/env node
+/**
+ * Script de diagnostic pour comprendre pourquoi les Bloc Rewards affichent ~4700 BTC au lieu de 50 BTC
+ * Vérifie : listunspent, getrawtransaction, blockheight, subsidy
+ */
+
+import { readFileSync, existsSync } from 'fs';
+import { fileURLToPath } from 'url';
+import { dirname, join } from 'path';
+import { config } from 'dotenv';
+
+const require = createRequire(import.meta.url);
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
+
+config({ path: join(__dirname, '../signet-dashboard/.env') });
+
+const BITCOIN_RPC_URL = process.env.BITCOIN_RPC_URL || 'http://127.0.0.1:38332';
+const BITCOIN_RPC_USER = process.env.BITCOIN_RPC_USER || 'bitcoin';
+const BITCOIN_RPC_PASSWORD = process.env.BITCOIN_RPC_PASSWORD || 'bitcoin';
+const BITCOIN_RPC_WALLET = process.env.BITCOIN_RPC_WALLET || 'custom_signet';
+
+const auth = Buffer.from(`${BITCOIN_RPC_USER}:${BITCOIN_RPC_PASSWORD}`).toString('base64');
+const rpcUrl = `${BITCOIN_RPC_URL}/wallet/${BITCOIN_RPC_WALLET}`;
+
+async function rpcCall(method, params = []) {
+ try {
+ const response = await fetch(rpcUrl, {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ 'Authorization': `Basic ${auth}`,
+ },
+ body: JSON.stringify({
+ jsonrpc: '1.0',
+ id: method,
+ method,
+ params,
+ }),
+ });
+
+ if (!response.ok) {
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
+ }
+
+ const result = await response.json();
+ if (result.error) {
+ throw new Error(`RPC error: ${result.error.message}`);
+ }
+
+ return result.result;
+ } catch (error) {
+ console.error(`Error calling ${method}:`, error.message);
+ return null;
+ }
+}
+
+async function diagnoseBlocRewards() {
+ console.log('🔍 Diagnostic Bloc Rewards - Pourquoi ~4700 BTC au lieu de 50 BTC?\n');
+
+ // 1. Lire les Bloc Rewards depuis utxo_list.txt
+ const utxoListPath = join(__dirname, '../utxo_list.txt');
+ if (!existsSync(utxoListPath)) {
+ console.error('❌ utxo_list.txt not found');
+ return;
+ }
+
+ const content = readFileSync(utxoListPath, 'utf8').trim();
+ const lines = content.split('\n');
+ const blocRewards = lines
+ .filter(line => line.trim().startsWith('bloc_rewards;'))
+ .slice(0, 5); // Prendre les 5 premiers
+
+ if (blocRewards.length === 0) {
+ console.log('⚠️ Aucun Bloc Reward trouvé dans utxo_list.txt');
+ return;
+ }
+
+ console.log(`📋 Analyse de ${blocRewards.length} Bloc Rewards depuis utxo_list.txt:\n`);
+
+ // 2. Vérifier blockchain info (hauteur actuelle)
+ console.log('1️⃣ Informations blockchain:');
+ const blockchainInfo = await rpcCall('getblockchaininfo');
+ if (blockchainInfo) {
+ console.log(` Hauteur actuelle: ${blockchainInfo.blocks}`);
+ console.log(` Chain: ${blockchainInfo.chain}`);
+ console.log(` Subsidy attendu (blocs 0-209999): 50 BTC\n`);
+ }
+
+ // 3. Analyser chaque Bloc Reward
+ for (let i = 0; i < blocRewards.length; i++) {
+ const line = blocRewards[i];
+ const parts = line.split(';');
+ if (parts.length < 4) continue;
+
+ const txid = parts[1];
+ const amount = parseFloat(parts[3]);
+ const confirmations = parseInt(parts[4], 10) || 0;
+
+ console.log(`\n${i + 1}. Transaction: ${txid}`);
+ console.log(` Montant dans fichier: ${amount} BTC`);
+
+ // 4. Vérifier listunspent
+ const unspent = await rpcCall('listunspent', [1]);
+ if (unspent) {
+ const utxo = unspent.find(u => u.txid === txid && u.vout === 0);
+ if (utxo) {
+ console.log(` Montant listunspent: ${utxo.amount} BTC`);
+ console.log(` Confirmations listunspent: ${utxo.confirmations}`);
+ } else {
+ console.log(` ⚠️ UTXO non trouvé dans listunspent (peut être dépensé)`);
+ }
+ }
+
+ // 5. Vérifier getrawtransaction
+ const rawTx = await rpcCall('getrawtransaction', [txid, true]);
+ if (rawTx) {
+ console.log(` Blockheight: ${rawTx.blockheight || 'non confirmé'}`);
+ console.log(` Blocktime: ${rawTx.blocktime ? new Date(rawTx.blocktime * 1000).toISOString() : 'N/A'}`);
+
+ if (rawTx.vout && rawTx.vout.length > 0) {
+ const vout0 = rawTx.vout[0];
+ console.log(` Vout[0].value: ${vout0.value} BTC`);
+ console.log(` Vout[0].scriptPubKey.type: ${vout0.scriptPubKey?.type || 'N/A'}`);
+
+ // Vérifier si coinbase
+ if (rawTx.vin && rawTx.vin.length === 1 && rawTx.vin[0].coinbase) {
+ console.log(` ✅ Transaction coinbase détectée`);
+ console.log(` Coinbase: ${rawTx.vin[0].coinbase}`);
+ }
+ }
+
+ // 6. Calculer subsidy attendu
+ if (rawTx.blockheight !== null && rawTx.blockheight !== undefined) {
+ const height = rawTx.blockheight;
+ if (height < 210000) {
+ const expectedSubsidy = 50;
+ const fees = amount - expectedSubsidy;
+ console.log(` Subsidy attendu (hauteur ${height}): ${expectedSubsidy} BTC`);
+ console.log(` Frais calculés (montant - subsidy): ${fees.toFixed(8)} BTC`);
+ if (Math.abs(fees) > 1) {
+ console.log(` ⚠️ ÉCART IMPORTANT: ${fees.toFixed(2)} BTC de frais (anormal pour un bloc)`);
+ }
+ } else {
+ console.log(` ⚠️ Bloc après 210000, subsidy devrait être réduit`);
+ }
+ }
+ }
+ }
+
+ console.log('\n\n📝 Conclusion:');
+ console.log(' - Si montants listunspent/getrawtransaction = montants fichier → source correcte');
+ console.log(' - Si montants >> 50 BTC → signet custom avec subsidy différent ou bug nœud');
+ console.log(' - Vérifier chain params du signet (subsidy, halving)');
+}
+
+diagnoseBlocRewards().catch(console.error);
diff --git a/signet-dashboard/public/index.html b/signet-dashboard/public/index.html
index 53bdbdb..2f8c32a 100644
--- a/signet-dashboard/public/index.html
+++ b/signet-dashboard/public/index.html
@@ -71,9 +71,6 @@
-
⏳
-
- - UTXOs confirmés
-
Nombre de Pairs
diff --git a/signet-dashboard/public/join-signet.html b/signet-dashboard/public/join-signet.html
index e26bcd9..071f854 100644
--- a/signet-dashboard/public/join-signet.html
+++ b/signet-dashboard/public/join-signet.html
@@ -5,17 +5,6 @@
Rejoindre le Réseau Signet Custom - Bitcoin Ancrage
-
-