From a13cf62310ccda7e332b4f45c20b43c3144318ff Mon Sep 17 00:00:00 2001 From: Diego Ripley Date: Wed, 1 Oct 2025 11:34:44 -0400 Subject: [PATCH] Remove vector tiles HTML experiment. All the work is available at https://www.diegoripley.ca/files/census_of_population_2021_vector_tiles_august_12_2025/. I have the code in another repo, but I need to clean it up before publishing --- experiments/vector_tiles/to_deploy/index.html | 36 - .../vector_tiles/to_deploy/package.json | 17 - .../vector_tiles/to_deploy/pnpm-lock.yaml | 815 ------------------ .../vector_tiles/to_deploy/src/fields.js | 3 - .../vector_tiles/to_deploy/src/main.js | 452 ---------- .../to_deploy/src/pelias-geocoder.js | 313 ------- .../vector_tiles/to_deploy/src/styles.css | 256 ------ experiments/vector_tiles/to_deploy/upload.sh | 1 - .../vector_tiles/to_deploy/vite.config.js | 23 - 9 files changed, 1916 deletions(-) delete mode 100644 experiments/vector_tiles/to_deploy/index.html delete mode 100644 experiments/vector_tiles/to_deploy/package.json delete mode 100644 experiments/vector_tiles/to_deploy/pnpm-lock.yaml delete mode 100644 experiments/vector_tiles/to_deploy/src/fields.js delete mode 100644 experiments/vector_tiles/to_deploy/src/main.js delete mode 100644 experiments/vector_tiles/to_deploy/src/pelias-geocoder.js delete mode 100644 experiments/vector_tiles/to_deploy/src/styles.css delete mode 100644 experiments/vector_tiles/to_deploy/upload.sh delete mode 100644 experiments/vector_tiles/to_deploy/vite.config.js diff --git a/experiments/vector_tiles/to_deploy/index.html b/experiments/vector_tiles/to_deploy/index.html deleted file mode 100644 index 10928c5..0000000 --- a/experiments/vector_tiles/to_deploy/index.html +++ /dev/null @@ -1,36 +0,0 @@ - - - - 2021 Census of Population Characteristics - - - - - - -
- -
- -
-
- - - -
- Current field: total_1 -
- -
- Classification: Loading... -
- -
-
Legend
-
-
- - - - \ No newline at end of file diff --git a/experiments/vector_tiles/to_deploy/package.json b/experiments/vector_tiles/to_deploy/package.json deleted file mode 100644 index 9979b7b..0000000 --- a/experiments/vector_tiles/to_deploy/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "census-map-visualization", - "version": "0.0.1", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^7.1.1" - }, - "dependencies": { - "maplibre-gl": "^5.6.2", - "simple-statistics": "^7.8.3" - } -} \ No newline at end of file diff --git a/experiments/vector_tiles/to_deploy/pnpm-lock.yaml b/experiments/vector_tiles/to_deploy/pnpm-lock.yaml deleted file mode 100644 index c60e815..0000000 --- a/experiments/vector_tiles/to_deploy/pnpm-lock.yaml +++ /dev/null @@ -1,815 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - maplibre-gl: - specifier: ^5.6.2 - version: 5.6.2 - simple-statistics: - specifier: ^7.8.3 - version: 7.8.8 - devDependencies: - vite: - specifier: ^7.1.1 - version: 7.1.1 - -packages: - - '@esbuild/aix-ppc64@0.25.8': - resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.8': - resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.8': - resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.8': - resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.8': - resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.8': - resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.8': - resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.8': - resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.8': - resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.8': - resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.8': - resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.8': - resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.8': - resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.8': - resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.8': - resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.8': - resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.8': - resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.8': - resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.8': - resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.8': - resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.8': - resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.8': - resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.8': - resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.8': - resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.8': - resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.8': - resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@mapbox/geojson-rewind@0.5.2': - resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} - hasBin: true - - '@mapbox/jsonlint-lines-primitives@2.0.2': - resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} - engines: {node: '>= 0.6'} - - '@mapbox/point-geometry@1.1.0': - resolution: {integrity: sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==} - - '@mapbox/tiny-sdf@2.0.7': - resolution: {integrity: sha512-25gQLQMcpivjOSA40g3gO6qgiFPDpWRoMfd+G/GoppPIeP6JDaMMkMrEJnMZhKyyS6iKwVt5YKu02vCUyJM3Ug==} - - '@mapbox/unitbezier@0.0.1': - resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} - - '@mapbox/vector-tile@2.0.4': - resolution: {integrity: sha512-AkOLcbgGTdXScosBWwmmD7cDlvOjkg/DetGva26pIRiZPdeJYjYKarIlb4uxVzi6bwHO6EWH82eZ5Nuv4T5DUg==} - - '@mapbox/whoots-js@3.1.0': - resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} - engines: {node: '>=6.0.0'} - - '@maplibre/maplibre-gl-style-spec@23.3.0': - resolution: {integrity: sha512-IGJtuBbaGzOUgODdBRg66p8stnwj9iDXkgbYKoYcNiiQmaez5WVRfXm4b03MCDwmZyX93csbfHFWEJJYHnn5oA==} - hasBin: true - - '@maplibre/vt-pbf@4.0.3': - resolution: {integrity: sha512-YsW99BwnT+ukJRkseBcLuZHfITB4puJoxnqPVjo72rhW/TaawVYsgQHcqWLzTxqknttYoDpgyERzWSa/XrETdA==} - - '@rollup/rollup-android-arm-eabi@4.46.2': - resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.46.2': - resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.46.2': - resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.46.2': - resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.46.2': - resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.46.2': - resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': - resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.46.2': - resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.46.2': - resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.46.2': - resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': - resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} - cpu: [loong64] - os: [linux] - - '@rollup/rollup-linux-ppc64-gnu@4.46.2': - resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.46.2': - resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-musl@4.46.2': - resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.46.2': - resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.46.2': - resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.46.2': - resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.46.2': - resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.46.2': - resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.46.2': - resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} - cpu: [x64] - os: [win32] - - '@types/estree@1.0.8': - resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - - '@types/geojson-vt@3.2.5': - resolution: {integrity: sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==} - - '@types/geojson@7946.0.16': - resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} - - '@types/supercluster@7.1.3': - resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} - - earcut@3.0.2: - resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==} - - esbuild@0.25.8: - resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} - engines: {node: '>=18'} - hasBin: true - - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - geojson-vt@4.0.2: - resolution: {integrity: sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - gl-matrix@3.4.4: - resolution: {integrity: sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==} - - json-stringify-pretty-compact@4.0.0: - resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} - - kdbush@4.0.2: - resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} - - maplibre-gl@5.6.2: - resolution: {integrity: sha512-SEqYThhUCFf6Lm0TckpgpKnto5u4JsdPYdFJb6g12VtuaFsm3nYdBO+fOmnUYddc8dXihgoGnuXvPPooUcRv5w==} - engines: {node: '>=16.14.0', npm: '>=8.1.0'} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - murmurhash-js@1.0.0: - resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} - - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - pbf@4.0.1: - resolution: {integrity: sha512-SuLdBvS42z33m8ejRbInMapQe8n0D3vN/Xd5fmWM3tufNgRQFBpaW2YVJxQZV4iPNqb0vEFvssMEo5w9c6BTIA==} - hasBin: true - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - - postcss@8.5.6: - resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} - engines: {node: ^10 || ^12 || >=14} - - potpack@2.1.0: - resolution: {integrity: sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==} - - protocol-buffers-schema@3.6.0: - resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} - - quickselect@3.0.0: - resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} - - resolve-protobuf-schema@2.1.0: - resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} - - rollup@4.46.2: - resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} - hasBin: true - - rw@1.3.3: - resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} - - simple-statistics@7.8.8: - resolution: {integrity: sha512-CUtP0+uZbcbsFpqEyvNDYjJCl+612fNgjT8GaVuvMG7tBuJg8gXGpsP5M7X658zy0IcepWOZ6nPBu1Qb9ezA1w==} - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - supercluster@8.0.1: - resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} - - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} - engines: {node: '>=12.0.0'} - - tinyqueue@3.0.0: - resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} - - vite@7.1.1: - resolution: {integrity: sha512-yJ+Mp7OyV+4S+afWo+QyoL9jFWD11QFH0i5i7JypnfTcA1rmgxCbiA8WwAICDEtZ1Z1hzrVhN8R8rGTqkTY8ZQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - peerDependencies: - '@types/node': ^20.19.0 || >=22.12.0 - jiti: '>=1.21.0' - less: ^4.0.0 - lightningcss: ^1.21.0 - sass: ^1.70.0 - sass-embedded: ^1.70.0 - stylus: '>=0.54.8' - sugarss: ^5.0.0 - terser: ^5.16.0 - tsx: ^4.8.1 - yaml: ^2.4.2 - peerDependenciesMeta: - '@types/node': - optional: true - jiti: - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - tsx: - optional: true - yaml: - optional: true - -snapshots: - - '@esbuild/aix-ppc64@0.25.8': - optional: true - - '@esbuild/android-arm64@0.25.8': - optional: true - - '@esbuild/android-arm@0.25.8': - optional: true - - '@esbuild/android-x64@0.25.8': - optional: true - - '@esbuild/darwin-arm64@0.25.8': - optional: true - - '@esbuild/darwin-x64@0.25.8': - optional: true - - '@esbuild/freebsd-arm64@0.25.8': - optional: true - - '@esbuild/freebsd-x64@0.25.8': - optional: true - - '@esbuild/linux-arm64@0.25.8': - optional: true - - '@esbuild/linux-arm@0.25.8': - optional: true - - '@esbuild/linux-ia32@0.25.8': - optional: true - - '@esbuild/linux-loong64@0.25.8': - optional: true - - '@esbuild/linux-mips64el@0.25.8': - optional: true - - '@esbuild/linux-ppc64@0.25.8': - optional: true - - '@esbuild/linux-riscv64@0.25.8': - optional: true - - '@esbuild/linux-s390x@0.25.8': - optional: true - - '@esbuild/linux-x64@0.25.8': - optional: true - - '@esbuild/netbsd-arm64@0.25.8': - optional: true - - '@esbuild/netbsd-x64@0.25.8': - optional: true - - '@esbuild/openbsd-arm64@0.25.8': - optional: true - - '@esbuild/openbsd-x64@0.25.8': - optional: true - - '@esbuild/openharmony-arm64@0.25.8': - optional: true - - '@esbuild/sunos-x64@0.25.8': - optional: true - - '@esbuild/win32-arm64@0.25.8': - optional: true - - '@esbuild/win32-ia32@0.25.8': - optional: true - - '@esbuild/win32-x64@0.25.8': - optional: true - - '@mapbox/geojson-rewind@0.5.2': - dependencies: - get-stream: 6.0.1 - minimist: 1.2.8 - - '@mapbox/jsonlint-lines-primitives@2.0.2': {} - - '@mapbox/point-geometry@1.1.0': {} - - '@mapbox/tiny-sdf@2.0.7': {} - - '@mapbox/unitbezier@0.0.1': {} - - '@mapbox/vector-tile@2.0.4': - dependencies: - '@mapbox/point-geometry': 1.1.0 - '@types/geojson': 7946.0.16 - pbf: 4.0.1 - - '@mapbox/whoots-js@3.1.0': {} - - '@maplibre/maplibre-gl-style-spec@23.3.0': - dependencies: - '@mapbox/jsonlint-lines-primitives': 2.0.2 - '@mapbox/unitbezier': 0.0.1 - json-stringify-pretty-compact: 4.0.0 - minimist: 1.2.8 - quickselect: 3.0.0 - rw: 1.3.3 - tinyqueue: 3.0.0 - - '@maplibre/vt-pbf@4.0.3': - dependencies: - '@mapbox/point-geometry': 1.1.0 - '@mapbox/vector-tile': 2.0.4 - '@types/geojson-vt': 3.2.5 - '@types/supercluster': 7.1.3 - geojson-vt: 4.0.2 - pbf: 4.0.1 - supercluster: 8.0.1 - - '@rollup/rollup-android-arm-eabi@4.46.2': - optional: true - - '@rollup/rollup-android-arm64@4.46.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.46.2': - optional: true - - '@rollup/rollup-darwin-x64@4.46.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.46.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.46.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.46.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.46.2': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.46.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.46.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.46.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.46.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.46.2': - optional: true - - '@types/estree@1.0.8': {} - - '@types/geojson-vt@3.2.5': - dependencies: - '@types/geojson': 7946.0.16 - - '@types/geojson@7946.0.16': {} - - '@types/supercluster@7.1.3': - dependencies: - '@types/geojson': 7946.0.16 - - earcut@3.0.2: {} - - esbuild@0.25.8: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.8 - '@esbuild/android-arm': 0.25.8 - '@esbuild/android-arm64': 0.25.8 - '@esbuild/android-x64': 0.25.8 - '@esbuild/darwin-arm64': 0.25.8 - '@esbuild/darwin-x64': 0.25.8 - '@esbuild/freebsd-arm64': 0.25.8 - '@esbuild/freebsd-x64': 0.25.8 - '@esbuild/linux-arm': 0.25.8 - '@esbuild/linux-arm64': 0.25.8 - '@esbuild/linux-ia32': 0.25.8 - '@esbuild/linux-loong64': 0.25.8 - '@esbuild/linux-mips64el': 0.25.8 - '@esbuild/linux-ppc64': 0.25.8 - '@esbuild/linux-riscv64': 0.25.8 - '@esbuild/linux-s390x': 0.25.8 - '@esbuild/linux-x64': 0.25.8 - '@esbuild/netbsd-arm64': 0.25.8 - '@esbuild/netbsd-x64': 0.25.8 - '@esbuild/openbsd-arm64': 0.25.8 - '@esbuild/openbsd-x64': 0.25.8 - '@esbuild/openharmony-arm64': 0.25.8 - '@esbuild/sunos-x64': 0.25.8 - '@esbuild/win32-arm64': 0.25.8 - '@esbuild/win32-ia32': 0.25.8 - '@esbuild/win32-x64': 0.25.8 - - fdir@6.4.6(picomatch@4.0.3): - optionalDependencies: - picomatch: 4.0.3 - - fsevents@2.3.3: - optional: true - - geojson-vt@4.0.2: {} - - get-stream@6.0.1: {} - - gl-matrix@3.4.4: {} - - json-stringify-pretty-compact@4.0.0: {} - - kdbush@4.0.2: {} - - maplibre-gl@5.6.2: - dependencies: - '@mapbox/geojson-rewind': 0.5.2 - '@mapbox/jsonlint-lines-primitives': 2.0.2 - '@mapbox/point-geometry': 1.1.0 - '@mapbox/tiny-sdf': 2.0.7 - '@mapbox/unitbezier': 0.0.1 - '@mapbox/vector-tile': 2.0.4 - '@mapbox/whoots-js': 3.1.0 - '@maplibre/maplibre-gl-style-spec': 23.3.0 - '@maplibre/vt-pbf': 4.0.3 - '@types/geojson': 7946.0.16 - '@types/geojson-vt': 3.2.5 - '@types/supercluster': 7.1.3 - earcut: 3.0.2 - geojson-vt: 4.0.2 - gl-matrix: 3.4.4 - kdbush: 4.0.2 - murmurhash-js: 1.0.0 - pbf: 4.0.1 - potpack: 2.1.0 - quickselect: 3.0.0 - supercluster: 8.0.1 - tinyqueue: 3.0.0 - - minimist@1.2.8: {} - - murmurhash-js@1.0.0: {} - - nanoid@3.3.11: {} - - pbf@4.0.1: - dependencies: - resolve-protobuf-schema: 2.1.0 - - picocolors@1.1.1: {} - - picomatch@4.0.3: {} - - postcss@8.5.6: - dependencies: - nanoid: 3.3.11 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - potpack@2.1.0: {} - - protocol-buffers-schema@3.6.0: {} - - quickselect@3.0.0: {} - - resolve-protobuf-schema@2.1.0: - dependencies: - protocol-buffers-schema: 3.6.0 - - rollup@4.46.2: - dependencies: - '@types/estree': 1.0.8 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.46.2 - '@rollup/rollup-android-arm64': 4.46.2 - '@rollup/rollup-darwin-arm64': 4.46.2 - '@rollup/rollup-darwin-x64': 4.46.2 - '@rollup/rollup-freebsd-arm64': 4.46.2 - '@rollup/rollup-freebsd-x64': 4.46.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 - '@rollup/rollup-linux-arm-musleabihf': 4.46.2 - '@rollup/rollup-linux-arm64-gnu': 4.46.2 - '@rollup/rollup-linux-arm64-musl': 4.46.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 - '@rollup/rollup-linux-ppc64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-musl': 4.46.2 - '@rollup/rollup-linux-s390x-gnu': 4.46.2 - '@rollup/rollup-linux-x64-gnu': 4.46.2 - '@rollup/rollup-linux-x64-musl': 4.46.2 - '@rollup/rollup-win32-arm64-msvc': 4.46.2 - '@rollup/rollup-win32-ia32-msvc': 4.46.2 - '@rollup/rollup-win32-x64-msvc': 4.46.2 - fsevents: 2.3.3 - - rw@1.3.3: {} - - simple-statistics@7.8.8: {} - - source-map-js@1.2.1: {} - - supercluster@8.0.1: - dependencies: - kdbush: 4.0.2 - - tinyglobby@0.2.14: - dependencies: - fdir: 6.4.6(picomatch@4.0.3) - picomatch: 4.0.3 - - tinyqueue@3.0.0: {} - - vite@7.1.1: - dependencies: - esbuild: 0.25.8 - fdir: 6.4.6(picomatch@4.0.3) - picomatch: 4.0.3 - postcss: 8.5.6 - rollup: 4.46.2 - tinyglobby: 0.2.14 - optionalDependencies: - fsevents: 2.3.3 diff --git a/experiments/vector_tiles/to_deploy/src/fields.js b/experiments/vector_tiles/to_deploy/src/fields.js deleted file mode 100644 index b963c9c..0000000 --- a/experiments/vector_tiles/to_deploy/src/fields.js +++ /dev/null @@ -1,3 +0,0 @@ -const availableFields = ['total_1', 'total_4', 'total_5', 'total_6', 'total_7', 'total_8', 'total_9', 'total_10', 'total_11', 'total_12', 'total_13', 'total_14', 'total_15', 'total_16', 'total_17', 'total_18', 'total_19', 'total_20', 'total_21', 'total_22', 'total_23', 'total_24', 'total_25', 'total_26', 'total_27', 'total_28', 'total_29', 'total_30', 'total_31', 'total_32', 'total_33', 'total_34', 'total_35', 'total_36', 'total_37', 'total_38', 'total_39', 'total_40', 'total_41', 'total_42', 'total_43', 'total_44', 'total_45', 'total_46', 'total_47', 'total_48', 'total_49', 'total_50', 'total_51', 'total_52', 'total_53', 'total_54', 'total_55', 'total_56', 'total_57', 'total_58', 'total_59', 'total_60', 'total_61', 'total_62', 'total_63', 'total_64', 'total_65', 'total_66', 'total_67', 'total_68', 'total_69', 'total_70', 'total_71', 'total_72', 'total_73', 'total_74', 'total_75', 'total_76', 'total_77', 'total_78', 'total_79', 'total_80', 'total_81', 'total_82', 'total_83', 'total_84', 'total_85', 'total_86', 'total_87', 'total_88', 'total_89', 'total_90', 'total_91', 'total_92', 'total_93', 'total_94', 'total_95', 'total_96', 'total_97', 'total_98', 'total_99', 'total_100', 'total_101', 'total_102', 'total_103', 'total_104', 'total_105', 'total_106', 'total_107', 'total_108', 'total_109', 'total_110', 'total_111', 'total_112', 'total_113', 'total_114', 'total_115', 'total_116', 'total_117', 'total_118', 'total_119', 'total_120', 'total_121', 'total_122', 'total_123', 'total_124', 'total_125', 'total_126', 'total_127', 'total_128', 'total_129', 'total_130', 'total_131', 'total_132', 'total_133', 'total_134', 'total_135', 'total_136', 'total_137', 'total_138', 'total_139', 'total_140', 'total_141', 'total_142', 'total_143', 'total_144', 'total_145', 'total_146', 'total_147', 'total_148', 'total_149', 'total_150', 'total_151', 'total_152', 'total_153', 'total_154', 'total_155', 'total_156', 'total_157', 'total_158', 'total_159', 'total_160', 'total_161', 'total_162', 'total_163', 'total_164', 'total_165', 'total_166', 'total_167', 'total_168', 'total_169', 'total_170', 'total_171', 'total_172', 'total_173', 'total_174', 'total_175', 'total_176', 'total_177', 'total_178', 'total_179', 'total_180', 'total_181', 'total_182', 'total_183', 'total_184', 'total_185', 'total_186', 'total_187', 'total_188', 'total_189', 'total_190', 'total_191', 'total_192', 'total_193', 'total_194', 'total_195', 'total_196', 'total_197', 'total_198', 'total_199', 'total_200', 'total_201', 'total_202', 'total_203', 'total_204', 'total_205', 'total_206', 'total_207', 'total_208', 'total_209', 'total_210', 'total_211', 'total_212', 'total_213', 'total_214', 'total_215', 'total_216', 'total_217', 'total_218', 'total_219', 'total_220', 'total_221', 'total_222', 'total_223', 'total_224', 'total_225', 'total_226', 'total_227', 'total_228', 'total_229', 'total_230', 'total_231', 'total_232', 'total_233', 'total_234', 'total_235', 'total_236', 'total_237', 'total_238', 'total_239', 'total_240', 'total_241', 'total_242', 'total_243', 'total_244', 'total_245', 'total_246', 'total_247', 'total_248', 'total_249', 'total_250', 'total_251', 'total_252', 'total_253', 'total_254', 'total_255', 'total_256', 'total_257', 'total_258', 'total_259', 'total_260', 'total_261', 'total_262', 'total_263', 'total_264', 'total_265', 'total_266', 'total_267', 'total_268', 'total_269', 'total_270', 'total_271', 'total_272', 'total_273', 'total_274', 'total_275', 'total_276', 'total_277', 'total_278', 'total_279', 'total_280', 'total_281', 'total_282', 'total_283', 'total_284', 'total_285', 'total_286', 'total_287', 'total_288', 'total_289', 'total_290', 'total_291', 'total_292', 'total_293', 'total_294', 'total_295', 'total_296', 'total_297', 'total_298', 'total_299', 'total_300', 'total_301', 'total_302', 'total_303', 'total_304', 'total_305', 'total_306', 'total_307', 'total_308', 'total_309', 'total_310', 'total_311', 'total_312', 'total_313', 'total_314', 'total_315', 'total_316', 'total_317', 'total_318', 'total_319', 'total_320', 'total_321', 'total_322', 'total_323', 'total_324', 'total_325', 'total_326', 'total_327', 'total_328', 'total_329', 'total_330', 'total_331', 'total_332', 'total_333', 'total_334', 'total_335', 'total_336', 'total_337', 'total_338', 'total_339', 'total_340', 'total_341', 'total_342', 'total_343', 'total_344', 'total_345', 'total_346', 'total_347', 'total_348', 'total_349', 'total_350', 'total_351', 'total_352', 'total_353', 'total_354', 'total_355', 'total_356', 'total_357', 'total_358', 'total_359', 'total_360', 'total_361', 'total_362', 'total_363', 'total_364', 'total_365', 'total_366', 'total_367', 'total_368', 'total_369', 'total_370', 'total_371', 'total_372', 'total_373', 'total_374', 'total_375', 'total_376', 'total_377', 'total_378', 'total_379', 'total_380', 'total_381', 'total_382', 'total_383', 'total_384', 'total_385', 'total_386', 'total_387', 'total_388', 'total_389', 'total_390', 'total_391', 'total_392', 'total_393', 'total_394', 'total_395', 'total_396', 'total_397', 'total_398', 'total_399', 'total_400', 'total_401', 'total_402', 'total_403', 'total_404', 'total_405', 'total_406', 'total_407', 'total_408', 'total_409', 'total_410', 'total_411', 'total_412', 'total_413', 'total_414', 'total_415', 'total_416', 'total_417', 'total_418', 'total_419', 'total_420', 'total_421', 'total_422', 'total_423', 'total_424', 'total_425', 'total_426', 'total_427', 'total_428', 'total_429', 'total_430', 'total_431', 'total_432', 'total_433', 'total_434', 'total_435', 'total_436', 'total_437', 'total_438', 'total_439', 'total_440', 'total_441', 'total_442', 'total_443', 'total_444', 'total_445', 'total_446', 'total_447', 'total_448', 'total_449', 'total_450', 'total_451', 'total_452', 'total_453', 'total_454', 'total_455', 'total_456', 'total_457', 'total_458', 'total_459', 'total_460', 'total_461', 'total_462', 'total_463', 'total_464', 'total_465', 'total_466', 'total_467', 'total_468', 'total_469', 'total_470', 'total_471', 'total_472', 'total_473', 'total_474', 'total_475', 'total_476', 'total_477', 'total_478', 'total_479', 'total_480', 'total_481', 'total_482', 'total_483', 'total_484', 'total_485', 'total_486', 'total_487', 'total_488', 'total_489', 'total_490', 'total_491', 'total_492', 'total_493', 'total_494', 'total_495', 'total_496', 'total_497', 'total_498', 'total_499', 'total_500', 'total_501', 'total_502', 'total_503', 'total_504', 'total_505', 'total_506', 'total_507', 'total_508', 'total_509', 'total_510', 'total_511', 'total_512', 'total_513', 'total_514', 'total_515', 'total_516', 'total_517', 'total_518', 'total_519', 'total_520', 'total_521', 'total_522', 'total_523', 'total_524', 'total_525', 'total_526', 'total_527', 'total_528', 'total_529', 'total_530', 'total_531', 'total_532', 'total_533', 'total_534', 'total_535', 'total_536', 'total_537', 'total_538', 'total_539', 'total_540', 'total_541', 'total_542', 'total_543', 'total_544', 'total_545', 'total_546', 'total_547', 'total_548', 'total_549', 'total_550', 'total_551', 'total_552', 'total_553', 'total_554', 'total_555', 'total_556', 'total_557', 'total_558', 'total_559', 'total_560', 'total_561', 'total_562', 'total_563', 'total_564', 'total_565', 'total_566', 'total_567', 'total_568', 'total_569', 'total_570', 'total_571', 'total_572', 'total_573', 'total_574', 'total_575', 'total_576', 'total_577', 'total_578', 'total_579', 'total_580', 'total_581', 'total_582', 'total_583', 'total_584', 'total_585', 'total_586', 'total_587', 'total_588', 'total_589', 'total_590', 'total_591', 'total_592', 'total_593', 'total_594', 'total_595', 'total_596', 'total_597', 'total_598', 'total_599', 'total_600', 'total_601', 'total_602', 'total_603', 'total_604', 'total_605', 'total_606', 'total_607', 'total_608', 'total_609', 'total_610', 'total_611', 'total_612', 'total_613', 'total_614', 'total_615', 'total_616', 'total_617', 'total_618', 'total_619', 'total_620', 'total_621', 'total_622', 'total_623', 'total_624', 'total_625', 'total_626', 'total_627', 'total_628', 'total_629', 'total_630', 'total_631', 'total_632', 'total_633', 'total_634', 'total_635', 'total_636', 'total_637', 'total_638', 'total_639', 'total_640', 'total_641', 'total_642', 'total_643', 'total_644', 'total_645', 'total_646', 'total_647', 'total_648', 'total_649', 'total_650', 'total_651', 'total_652', 'total_653', 'total_654', 'total_655', 'total_656', 'total_657', 'total_658', 'total_659', 'total_660', 'total_661', 'total_662', 'total_663', 'total_664', 'total_665', 'total_666', 'total_667', 'total_668', 'total_669', 'total_670', 'total_671', 'total_672', 'total_673', 'total_674', 'total_675', 'total_676', 'total_677', 'total_678', 'total_679', 'total_680', 'total_681', 'total_682', 'total_683', 'total_684', 'total_685', 'total_686', 'total_687', 'total_688', 'total_689', 'total_690', 'total_691', 'total_692', 'total_693', 'total_694', 'total_695', 'total_696', 'total_697', 'total_698', 'total_699', 'total_700', 'total_701', 'total_702', 'total_703', 'total_704', 'total_705', 'total_706', 'total_707', 'total_708', 'total_709', 'total_710', 'total_711', 'total_712', 'total_713', 'total_714', 'total_715', 'total_716', 'total_717', 'total_718', 'total_719', 'total_720', 'total_721', 'total_722', 'total_723', 'total_724', 'total_725', 'total_726', 'total_727', 'total_728', 'total_729', 'total_730', 'total_731', 'total_732', 'total_733', 'total_734', 'total_735', 'total_736', 'total_737', 'total_738', 'total_739', 'total_740', 'total_741', 'total_742', 'total_743', 'total_744', 'total_745', 'total_746', 'total_747', 'total_748', 'total_749', 'total_750', 'total_751', 'total_752', 'total_753', 'total_754', 'total_755', 'total_756', 'total_757', 'total_758', 'total_759', 'total_760', 'total_761', 'total_762', 'total_763', 'total_764', 'total_765', 'total_766', 'total_767', 'total_768', 'total_769', 'total_770', 'total_771', 'total_772', 'total_773', 'total_774', 'total_775', 'total_776', 'total_777', 'total_778', 'total_779', 'total_780', 'total_781', 'total_782', 'total_783', 'total_784', 'total_785', 'total_786', 'total_787', 'total_788', 'total_789', 'total_790', 'total_791', 'total_792', 'total_793', 'total_794', 'total_795', 'total_796', 'total_797', 'total_798', 'total_799', 'total_800', 'total_801', 'total_802', 'total_803', 'total_804', 'total_805', 'total_806', 'total_807', 'total_808', 'total_809', 'total_810', 'total_811', 'total_812', 'total_813', 'total_814', 'total_815', 'total_816', 'total_817', 'total_818', 'total_819', 'total_820', 'total_821', 'total_822', 'total_823', 'total_824', 'total_825', 'total_826', 'total_827', 'total_828', 'total_829', 'total_830', 'total_831', 'total_832', 'total_833', 'total_834', 'total_835', 'total_836', 'total_837', 'total_838', 'total_839', 'total_840', 'total_841', 'total_842', 'total_843', 'total_844', 'total_845', 'total_846', 'total_847', 'total_848', 'total_849', 'total_850', 'total_851', 'total_852', 'total_853', 'total_854', 'total_855', 'total_856', 'total_857', 'total_858', 'total_859', 'total_860', 'total_861', 'total_862', 'total_863', 'total_864', 'total_865', 'total_866', 'total_867', 'total_868', 'total_869', 'total_870', 'total_871', 'total_872', 'total_873', 'total_874', 'total_875', 'total_876', 'total_877', 'total_878', 'total_879', 'total_880', 'total_881', 'total_882', 'total_883', 'total_884', 'total_885', 'total_886', 'total_887', 'total_888', 'total_889', 'total_890', 'total_891', 'total_892', 'total_893', 'total_894', 'total_895', 'total_896', 'total_897', 'total_898', 'total_899', 'total_900', 'total_901', 'total_902', 'total_903', 'total_904', 'total_905', 'total_906', 'total_907', 'total_908', 'total_909', 'total_910', 'total_911', 'total_912', 'total_913', 'total_914', 'total_915', 'total_916', 'total_917', 'total_918', 'total_919', 'total_920', 'total_921', 'total_922', 'total_923', 'total_924', 'total_925', 'total_926', 'total_927', 'total_928', 'total_929', 'total_930', 'total_931', 'total_932', 'total_933', 'total_934', 'total_935', 'total_936', 'total_937', 'total_938', 'total_939', 'total_940', 'total_941', 'total_942', 'total_943', 'total_944', 'total_945', 'total_946', 'total_947', 'total_948', 'total_949', 'total_950', 'total_951', 'total_952', 'total_953', 'total_954', 'total_955', 'total_956', 'total_957', 'total_958', 'total_959', 'total_960', 'total_961', 'total_962', 'total_963', 'total_964', 'total_965', 'total_966', 'total_967', 'total_968', 'total_969', 'total_970', 'total_971', 'total_972', 'total_973', 'total_974', 'total_975', 'total_976', 'total_977', 'total_978', 'total_979', 'total_980', 'total_981', 'total_982', 'total_983', 'total_984', 'total_985', 'total_986', 'total_987', 'total_988', 'total_989', 'total_990', 'total_991', 'total_992', 'total_993', 'total_994', 'total_995', 'total_996', 'total_997', 'total_998', 'total_999', 'total_1000', 'total_1001', 'total_1002', 'total_1003', 'total_1004', 'total_1005', 'total_1006', 'total_1007', 'total_1008', 'total_1009', 'total_1010', 'total_1011', 'total_1012', 'total_1013', 'total_1014', 'total_1015', 'total_1016', 'total_1017', 'total_1018', 'total_1019', 'total_1020', 'total_1021', 'total_1022', 'total_1023', 'total_1024', 'total_1025', 'total_1026', 'total_1027', 'total_1028', 'total_1029', 'total_1030', 'total_1031', 'total_1032', 'total_1033', 'total_1034', 'total_1035', 'total_1036', 'total_1037', 'total_1038', 'total_1039', 'total_1040', 'total_1041', 'total_1042', 'total_1043', 'total_1044', 'total_1045', 'total_1046', 'total_1047', 'total_1048', 'total_1049', 'total_1050', 'total_1051', 'total_1052', 'total_1053', 'total_1054', 'total_1055', 'total_1056', 'total_1057', 'total_1058', 'total_1059', 'total_1060', 'total_1061', 'total_1062', 'total_1063', 'total_1064', 'total_1065', 'total_1066', 'total_1067', 'total_1068', 'total_1069', 'total_1070', 'total_1071', 'total_1072', 'total_1073', 'total_1074', 'total_1075', 'total_1076', 'total_1077', 'total_1078', 'total_1079', 'total_1080', 'total_1081', 'total_1082', 'total_1083', 'total_1084', 'total_1085', 'total_1086', 'total_1087', 'total_1088', 'total_1089', 'total_1090', 'total_1091', 'total_1092', 'total_1093', 'total_1094', 'total_1095', 'total_1096', 'total_1097', 'total_1098', 'total_1099', 'total_1100', 'total_1101', 'total_1102', 'total_1103', 'total_1104', 'total_1105', 'total_1106', 'total_1107', 'total_1108', 'total_1109', 'total_1110', 'total_1111', 'total_1112', 'total_1113', 'total_1114', 'total_1115', 'total_1116', 'total_1117', 'total_1118', 'total_1119', 'total_1120', 'total_1121', 'total_1122', 'total_1123', 'total_1124', 'total_1125', 'total_1126', 'total_1127', 'total_1128', 'total_1129', 'total_1130', 'total_1131', 'total_1132', 'total_1133', 'total_1134', 'total_1135', 'total_1136', 'total_1137', 'total_1138', 'total_1139', 'total_1140', 'total_1141', 'total_1142', 'total_1143', 'total_1144', 'total_1145', 'total_1146', 'total_1147', 'total_1148', 'total_1149', 'total_1150', 'total_1151', 'total_1152', 'total_1153', 'total_1154', 'total_1155', 'total_1156', 'total_1157', 'total_1158', 'total_1159', 'total_1160', 'total_1161', 'total_1162', 'total_1163', 'total_1164', 'total_1165', 'total_1166', 'total_1167', 'total_1168', 'total_1169', 'total_1170', 'total_1171', 'total_1172', 'total_1173', 'total_1174', 'total_1175', 'total_1176', 'total_1177', 'total_1178', 'total_1179', 'total_1180', 'total_1181', 'total_1182', 'total_1183', 'total_1184', 'total_1185', 'total_1186', 'total_1187', 'total_1188', 'total_1189', 'total_1190', 'total_1191', 'total_1192', 'total_1193', 'total_1194', 'total_1195', 'total_1196', 'total_1197', 'total_1198', 'total_1199', 'total_1200', 'total_1201', 'total_1202', 'total_1203', 'total_1204', 'total_1205', 'total_1206', 'total_1207', 'total_1208', 'total_1209', 'total_1210', 'total_1211', 'total_1212', 'total_1213', 'total_1214', 'total_1215', 'total_1216', 'total_1217', 'total_1218', 'total_1219', 'total_1220', 'total_1221', 'total_1222', 'total_1223', 'total_1224', 'total_1225', 'total_1226', 'total_1227', 'total_1228', 'total_1229', 'total_1230', 'total_1231', 'total_1232', 'total_1233', 'total_1234', 'total_1235', 'total_1236', 'total_1237', 'total_1238', 'total_1239', 'total_1240', 'total_1241', 'total_1242', 'total_1243', 'total_1244', 'total_1245', 'total_1246', 'total_1247', 'total_1248', 'total_1249', 'total_1250', 'total_1251', 'total_1252', 'total_1253', 'total_1254', 'total_1255', 'total_1256', 'total_1257', 'total_1258', 'total_1259', 'total_1260', 'total_1261', 'total_1262', 'total_1263', 'total_1264', 'total_1265', 'total_1266', 'total_1267', 'total_1268', 'total_1269', 'total_1270', 'total_1271', 'total_1272', 'total_1273', 'total_1274', 'total_1275', 'total_1276', 'total_1277', 'total_1278', 'total_1279', 'total_1280', 'total_1281', 'total_1282', 'total_1283', 'total_1284', 'total_1285', 'total_1286', 'total_1287', 'total_1288', 'total_1289', 'total_1290', 'total_1291', 'total_1292', 'total_1293', 'total_1294', 'total_1295', 'total_1296', 'total_1297', 'total_1298', 'total_1299', 'total_1300', 'total_1301', 'total_1302', 'total_1303', 'total_1304', 'total_1305', 'total_1306', 'total_1307', 'total_1308', 'total_1309', 'total_1310', 'total_1311', 'total_1312', 'total_1313', 'total_1314', 'total_1315', 'total_1316', 'total_1317', 'total_1318', 'total_1319', 'total_1320', 'total_1321', 'total_1322', 'total_1323', 'total_1324', 'total_1325', 'total_1326', 'total_1327', 'total_1328', 'total_1329', 'total_1330', 'total_1331', 'total_1332', 'total_1333', 'total_1334', 'total_1335', 'total_1336', 'total_1337', 'total_1338', 'total_1339', 'total_1340', 'total_1341', 'total_1342', 'total_1343', 'total_1344', 'total_1345', 'total_1346', 'total_1347', 'total_1348', 'total_1349', 'total_1350', 'total_1351', 'total_1352', 'total_1353', 'total_1354', 'total_1355', 'total_1356', 'total_1357', 'total_1358', 'total_1359', 'total_1360', 'total_1361', 'total_1362', 'total_1363', 'total_1364', 'total_1365', 'total_1366', 'total_1367', 'total_1368', 'total_1369', 'total_1370', 'total_1371', 'total_1372', 'total_1373', 'total_1374', 'total_1375', 'total_1376', 'total_1377', 'total_1378', 'total_1379', 'total_1380', 'total_1381', 'total_1382', 'total_1383', 'total_1384', 'total_1385', 'total_1386', 'total_1387', 'total_1388', 'total_1389', 'total_1390', 'total_1391', 'total_1392', 'total_1393', 'total_1394', 'total_1395', 'total_1396', 'total_1397', 'total_1398', 'total_1399', 'total_1400', 'total_1401', 'total_1402', 'total_1403', 'total_1404', 'total_1405', 'total_1406', 'total_1407', 'total_1408', 'total_1409', 'total_1410', 'total_1411', 'total_1412', 'total_1413', 'total_1414', 'total_1415', 'total_1416', 'total_1417', 'total_1418', 'total_1419', 'total_1420', 'total_1421', 'total_1422', 'total_1423', 'total_1424', 'total_1425', 'total_1426', 'total_1427', 'total_1428', 'total_1429', 'total_1430', 'total_1431', 'total_1432', 'total_1433', 'total_1434', 'total_1435', 'total_1436', 'total_1437', 'total_1438', 'total_1439', 'total_1440', 'total_1441', 'total_1442', 'total_1443', 'total_1444', 'total_1445', 'total_1446', 'total_1447', 'total_1448', 'total_1449', 'total_1450', 'total_1451', 'total_1452', 'total_1453', 'total_1454', 'total_1455', 'total_1456', 'total_1457', 'total_1458', 'total_1459', 'total_1460', 'total_1461', 'total_1462', 'total_1463', 'total_1464', 'total_1465', 'total_1466', 'total_1467', 'total_1468', 'total_1469', 'total_1470', 'total_1471', 'total_1472', 'total_1473', 'total_1474', 'total_1475', 'total_1476', 'total_1477', 'total_1478', 'total_1479', 'total_1480', 'total_1481', 'total_1482', 'total_1483', 'total_1484', 'total_1485', 'total_1486', 'total_1487', 'total_1488', 'total_1489', 'total_1490', 'total_1491', 'total_1492', 'total_1493', 'total_1494', 'total_1495', 'total_1496', 'total_1497', 'total_1498', 'total_1499', 'total_1500', 'total_1501', 'total_1502', 'total_1503', 'total_1504', 'total_1505', 'total_1506', 'total_1507', 'total_1508', 'total_1509', 'total_1510', 'total_1511', 'total_1512', 'total_1513', 'total_1514', 'total_1515', 'total_1516', 'total_1517', 'total_1518', 'total_1519', 'total_1520', 'total_1521', 'total_1522', 'total_1523', 'total_1524', 'total_1525', 'total_1526', 'total_1527', 'total_1528', 'total_1529', 'total_1530', 'total_1531', 'total_1532', 'total_1533', 'total_1534', 'total_1535', 'total_1536', 'total_1537', 'total_1538', 'total_1539', 'total_1540', 'total_1541', 'total_1542', 'total_1543', 'total_1544', 'total_1545', 'total_1546', 'total_1547', 'total_1548', 'total_1549', 'total_1550', 'total_1551', 'total_1552', 'total_1553', 'total_1554', 'total_1555', 'total_1556', 'total_1557', 'total_1558', 'total_1559', 'total_1560', 'total_1561', 'total_1562', 'total_1563', 'total_1564', 'total_1565', 'total_1566', 'total_1567', 'total_1568', 'total_1569', 'total_1570', 'total_1571', 'total_1572', 'total_1573', 'total_1574', 'total_1575', 'total_1576', 'total_1577', 'total_1578', 'total_1579', 'total_1580', 'total_1581', 'total_1582', 'total_1583', 'total_1584', 'total_1585', 'total_1586', 'total_1587', 'total_1588', 'total_1589', 'total_1590', 'total_1591', 'total_1592', 'total_1593', 'total_1594', 'total_1595', 'total_1596', 'total_1597', 'total_1598', 'total_1599', 'total_1600', 'total_1601', 'total_1602', 'total_1603', 'total_1604', 'total_1605', 'total_1606', 'total_1607', 'total_1608', 'total_1609', 'total_1610', 'total_1611', 'total_1612', 'total_1613', 'total_1614', 'total_1615', 'total_1616', 'total_1617', 'total_1618', 'total_1619', 'total_1620', 'total_1621', 'total_1622', 'total_1623', 'total_1624', 'total_1625', 'total_1626', 'total_1627', 'total_1628', 'total_1629', 'total_1630', 'total_1631', 'total_1632', 'total_1633', 'total_1634', 'total_1635', 'total_1636', 'total_1637', 'total_1638', 'total_1639', 'total_1640', 'total_1641', 'total_1642', 'total_1643', 'total_1644', 'total_1645', 'total_1646', 'total_1647', 'total_1648', 'total_1649', 'total_1650', 'total_1651', 'total_1652', 'total_1653', 'total_1654', 'total_1655', 'total_1656', 'total_1657', 'total_1658', 'total_1659', 'total_1660', 'total_1661', 'total_1662', 'total_1663', 'total_1664', 'total_1665', 'total_1666', 'total_1667', 'total_1668', 'total_1669', 'total_1670', 'total_1671', 'total_1672', 'total_1673', 'total_1674', 'total_1675', 'total_1676', 'total_1677', 'total_1678', 'total_1679', 'total_1680', 'total_1681', 'total_1682', 'total_1683', 'total_1684', 'total_1685', 'total_1686', 'total_1687', 'total_1688', 'total_1689', 'total_1690', 'total_1691', 'total_1692', 'total_1693', 'total_1694', 'total_1695', 'total_1696', 'total_1697', 'total_1698', 'total_1699', 'total_1700', 'total_1701', 'total_1702', 'total_1703', 'total_1704', 'total_1705', 'total_1706', 'total_1707', 'total_1708', 'total_1709', 'total_1710', 'total_1711', 'total_1712', 'total_1713', 'total_1714', 'total_1715', 'total_1716', 'total_1717', 'total_1718', 'total_1719', 'total_1720', 'total_1721', 'total_1722', 'total_1723', 'total_1724', 'total_1725', 'total_1726', 'total_1727', 'total_1728', 'total_1729', 'total_1730', 'total_1731', 'total_1732', 'total_1733', 'total_1734', 'total_1735', 'total_1736', 'total_1737', 'total_1738', 'total_1739', 'total_1740', 'total_1741', 'total_1742', 'total_1743', 'total_1744', 'total_1745', 'total_1746', 'total_1747', 'total_1748', 'total_1749', 'total_1750', 'total_1751', 'total_1752', 'total_1753', 'total_1754', 'total_1755', 'total_1756', 'total_1757', 'total_1758', 'total_1759', 'total_1760', 'total_1761', 'total_1762', 'total_1763', 'total_1764', 'total_1765', 'total_1766', 'total_1767', 'total_1768', 'total_1769', 'total_1770', 'total_1771', 'total_1772', 'total_1773', 'total_1774', 'total_1775', 'total_1776', 'total_1777', 'total_1778', 'total_1779', 'total_1780', 'total_1781', 'total_1782', 'total_1783', 'total_1784', 'total_1785', 'total_1786', 'total_1787', 'total_1788', 'total_1789', 'total_1790', 'total_1791', 'total_1792', 'total_1793', 'total_1794', 'total_1795', 'total_1796', 'total_1797', 'total_1798', 'total_1799', 'total_1800', 'total_1801', 'total_1802', 'total_1803', 'total_1804', 'total_1805', 'total_1806', 'total_1807', 'total_1808', 'total_1809', 'total_1810', 'total_1811', 'total_1812', 'total_1813', 'total_1814', 'total_1815', 'total_1816', 'total_1817', 'total_1818', 'total_1819', 'total_1820', 'total_1821', 'total_1822', 'total_1823', 'total_1824', 'total_1825', 'total_1826', 'total_1827', 'total_1828', 'total_1829', 'total_1830', 'total_1831', 'total_1832', 'total_1833', 'total_1834', 'total_1835', 'total_1836', 'total_1837', 'total_1838', 'total_1839', 'total_1840', 'total_1841', 'total_1842', 'total_1843', 'total_1844', 'total_1845', 'total_1846', 'total_1847', 'total_1848', 'total_1849', 'total_1850', 'total_1851', 'total_1852', 'total_1853', 'total_1854', 'total_1855', 'total_1856', 'total_1857', 'total_1858', 'total_1859', 'total_1860', 'total_1861', 'total_1862', 'total_1863', 'total_1864', 'total_1865', 'total_1866', 'total_1867', 'total_1868', 'total_1869', 'total_1870', 'total_1871', 'total_1872', 'total_1873', 'total_1874', 'total_1875', 'total_1876', 'total_1877', 'total_1878', 'total_1879', 'total_1880', 'total_1881', 'total_1882', 'total_1883', 'total_1884', 'total_1885', 'total_1886', 'total_1887', 'total_1888', 'total_1889', 'total_1890', 'total_1891', 'total_1892', 'total_1893', 'total_1894', 'total_1895', 'total_1896', 'total_1897', 'total_1898', 'total_1899', 'total_1900', 'total_1901', 'total_1902', 'total_1903', 'total_1904', 'total_1905', 'total_1906', 'total_1907', 'total_1908', 'total_1909', 'total_1910', 'total_1911', 'total_1912', 'total_1913', 'total_1914', 'total_1915', 'total_1916', 'total_1917', 'total_1918', 'total_1919', 'total_1920', 'total_1921', 'total_1922', 'total_1923', 'total_1924', 'total_1925', 'total_1926', 'total_1927', 'total_1928', 'total_1929', 'total_1930', 'total_1931', 'total_1932', 'total_1933', 'total_1934', 'total_1935', 'total_1936', 'total_1937', 'total_1938', 'total_1939', 'total_1940', 'total_1941', 'total_1942', 'total_1943', 'total_1944', 'total_1945', 'total_1946', 'total_1947', 'total_1948', 'total_1949', 'total_1950', 'total_1951', 'total_1952', 'total_1953', 'total_1954', 'total_1955', 'total_1956', 'total_1957', 'total_1958', 'total_1959', 'total_1960', 'total_1961', 'total_1962', 'total_1963', 'total_1964', 'total_1965', 'total_1966', 'total_1967', 'total_1968', 'total_1969', 'total_1970', 'total_1971', 'total_1972', 'total_1973', 'total_1974', 'total_1975', 'total_1976', 'total_1977', 'total_1978', 'total_1979', 'total_1980', 'total_1981', 'total_1982', 'total_1983', 'total_1984', 'total_1985', 'total_1986', 'total_1987', 'total_1988', 'total_1989', 'total_1990', 'total_1991', 'total_1992', 'total_1993', 'total_1994', 'total_1995', 'total_1996', 'total_1997', 'total_1998', 'total_1999', 'total_2000', 'total_2001', 'total_2002', 'total_2003', 'total_2004', 'total_2005', 'total_2006', 'total_2007', 'total_2008', 'total_2009', 'total_2010', 'total_2011', 'total_2012', 'total_2013', 'total_2014', 'total_2015', 'total_2016', 'total_2017', 'total_2018', 'total_2019', 'total_2020', 'total_2021', 'total_2022', 'total_2023', 'total_2024', 'total_2025', 'total_2026', 'total_2027', 'total_2028', 'total_2029', 'total_2030', 'total_2031', 'total_2032', 'total_2033', 'total_2034', 'total_2035', 'total_2036', 'total_2037', 'total_2038', 'total_2039', 'total_2040', 'total_2041', 'total_2042', 'total_2043', 'total_2044', 'total_2045', 'total_2046', 'total_2047', 'total_2048', 'total_2049', 'total_2050', 'total_2051', 'total_2052', 'total_2053', 'total_2054', 'total_2055', 'total_2056', 'total_2057', 'total_2058', 'total_2059', 'total_2060', 'total_2061', 'total_2062', 'total_2063', 'total_2064', 'total_2065', 'total_2066', 'total_2067', 'total_2068', 'total_2069', 'total_2070', 'total_2071', 'total_2072', 'total_2073', 'total_2074', 'total_2075', 'total_2076', 'total_2077', 'total_2078', 'total_2079', 'total_2080', 'total_2081', 'total_2082', 'total_2083', 'total_2084', 'total_2085', 'total_2086', 'total_2087', 'total_2088', 'total_2089', 'total_2090', 'total_2091', 'total_2092', 'total_2093', 'total_2094', 'total_2095', 'total_2096', 'total_2097', 'total_2098', 'total_2099', 'total_2100', 'total_2101', 'total_2102', 'total_2103', 'total_2104', 'total_2105', 'total_2106', 'total_2107', 'total_2108', 'total_2109', 'total_2110', 'total_2111', 'total_2112', 'total_2113', 'total_2114', 'total_2115', 'total_2116', 'total_2117', 'total_2118', 'total_2119', 'total_2120', 'total_2121', 'total_2122', 'total_2123', 'total_2124', 'total_2125', 'total_2126', 'total_2127', 'total_2128', 'total_2129', 'total_2130', 'total_2131', 'total_2132', 'total_2133', 'total_2134', 'total_2135', 'total_2136', 'total_2137', 'total_2138', 'total_2139', 'total_2140', 'total_2141', 'total_2142', 'total_2143', 'total_2144', 'total_2145', 'total_2146', 'total_2147', 'total_2148', 'total_2149', 'total_2150', 'total_2151', 'total_2152', 'total_2153', 'total_2154', 'total_2155', 'total_2156', 'total_2157', 'total_2158', 'total_2159', 'total_2160', 'total_2161', 'total_2162', 'total_2163', 'total_2164', 'total_2165', 'total_2166', 'total_2167', 'total_2168', 'total_2169', 'total_2170', 'total_2171', 'total_2172', 'total_2173', 'total_2174', 'total_2175', 'total_2176', 'total_2177', 'total_2178', 'total_2179', 'total_2180', 'total_2181', 'total_2182', 'total_2183', 'total_2184', 'total_2185', 'total_2186', 'total_2187', 'total_2188', 'total_2189', 'total_2190', 'total_2191', 'total_2192', 'total_2193', 'total_2194', 'total_2195', 'total_2196', 'total_2197', 'total_2198', 'total_2199', 'total_2200', 'total_2201', 'total_2202', 'total_2203', 'total_2204', 'total_2205', 'total_2206', 'total_2207', 'total_2208', 'total_2209', 'total_2210', 'total_2211', 'total_2212', 'total_2213', 'total_2214', 'total_2215', 'total_2216', 'total_2217', 'total_2218', 'total_2219', 'total_2220', 'total_2221', 'total_2222', 'total_2223', 'total_2224', 'total_2225', 'total_2226', 'total_2227', 'total_2228', 'total_2229', 'total_2230', 'total_2231', 'total_2232', 'total_2233', 'total_2234', 'total_2235', 'total_2236', 'total_2237', 'total_2238', 'total_2239', 'total_2240', 'total_2241', 'total_2242', 'total_2243', 'total_2244', 'total_2245', 'total_2246', 'total_2247', 'total_2248', 'total_2249', 'total_2250', 'total_2251', 'total_2252', 'total_2253', 'total_2254', 'total_2255', 'total_2256', 'total_2257', 'total_2258', 'total_2259', 'total_2260', 'total_2261', 'total_2262', 'total_2263', 'total_2264', 'total_2265', 'total_2266', 'total_2267', 'total_2268', 'total_2269', 'total_2270', 'total_2271', 'total_2272', 'total_2273', 'total_2274', 'total_2275', 'total_2276', 'total_2277', 'total_2278', 'total_2279', 'total_2280', 'total_2281', 'total_2282', 'total_2283', 'total_2284', 'total_2285', 'total_2286', 'total_2287', 'total_2288', 'total_2289', 'total_2290', 'total_2291', 'total_2292', 'total_2293', 'total_2294', 'total_2295', 'total_2296', 'total_2297', 'total_2298', 'total_2299', 'total_2300', 'total_2301', 'total_2302', 'total_2303', 'total_2304', 'total_2305', 'total_2306', 'total_2307', 'total_2308', 'total_2309', 'total_2310', 'total_2311', 'total_2312', 'total_2313', 'total_2314', 'total_2315', 'total_2316', 'total_2317', 'total_2318', 'total_2319', 'total_2320', 'total_2321', 'total_2322', 'total_2323', 'total_2324', 'total_2325', 'total_2326', 'total_2327', 'total_2328', 'total_2329', 'total_2330', 'total_2331', 'total_2332', 'total_2333', 'total_2334', 'total_2335', 'total_2336', 'total_2337', 'total_2338', 'total_2339', 'total_2340', 'total_2341', 'total_2342', 'total_2343', 'total_2344', 'total_2345', 'total_2346', 'total_2347', 'total_2348', 'total_2349', 'total_2350', 'total_2351', 'total_2352', 'total_2353', 'total_2354', 'total_2355', 'total_2356', 'total_2357', 'total_2358', 'total_2359', 'total_2360', 'total_2361', 'total_2362', 'total_2363', 'total_2364', 'total_2365', 'total_2366', 'total_2367', 'total_2368', 'total_2369', 'total_2370', 'total_2371', 'total_2372', 'total_2373', 'total_2374', 'total_2375', 'total_2376', 'total_2377', 'total_2378', 'total_2379', 'total_2380', 'total_2381', 'total_2382', 'total_2383', 'total_2384', 'total_2385', 'total_2386', 'total_2387', 'total_2388', 'total_2389', 'total_2390', 'total_2391', 'total_2392', 'total_2393', 'total_2394', 'total_2395', 'total_2396', 'total_2397', 'total_2398', 'total_2399', 'total_2400', 'total_2401', 'total_2402', 'total_2403', 'total_2404', 'total_2405', 'total_2406', 'total_2407', 'total_2408', 'total_2409', 'total_2410', 'total_2411', 'total_2412', 'total_2413', 'total_2414', 'total_2415', 'total_2416', 'total_2417', 'total_2418', 'total_2419', 'total_2420', 'total_2421', 'total_2422', 'total_2423', 'total_2424', 'total_2425', 'total_2426', 'total_2427', 'total_2428', 'total_2429', 'total_2430', 'total_2431', 'total_2432', 'total_2433', 'total_2434', 'total_2435', 'total_2436', 'total_2437', 'total_2438', 'total_2439', 'total_2440', 'total_2441', 'total_2442', 'total_2443', 'total_2444', 'total_2445', 'total_2446', 'total_2447', 'total_2448', 'total_2449', 'total_2450', 'total_2451', 'total_2452', 'total_2453', 'total_2454', 'total_2455', 'total_2456', 'total_2457', 'total_2458', 'total_2459', 'total_2460', 'total_2461', 'total_2462', 'total_2463', 'total_2464', 'total_2465', 'total_2466', 'total_2467', 'total_2468', 'total_2469', 'total_2470', 'total_2471', 'total_2472', 'total_2473', 'total_2474', 'total_2475', 'total_2476', 'total_2477', 'total_2478', 'total_2479', 'total_2480', 'total_2481', 'total_2482', 'total_2483', 'total_2484', 'total_2485', 'total_2486', 'total_2487', 'total_2488', 'total_2489', 'total_2490', 'total_2491', 'total_2492', 'total_2493', 'total_2494', 'total_2495', 'total_2496', 'total_2497', 'total_2498', 'total_2499', 'total_2500', 'total_2501', 'total_2502', 'total_2503', 'total_2504', 'total_2505', 'total_2506', 'total_2507', 'total_2508', 'total_2509', 'total_2510', 'total_2511', 'total_2512', 'total_2513', 'total_2514', 'total_2515', 'total_2516', 'total_2517', 'total_2518', 'total_2519', 'total_2520', 'total_2521', 'total_2522', 'total_2523', 'total_2524', 'total_2525', 'total_2526', 'total_2527', 'total_2528', 'total_2529', 'total_2530', 'total_2531', 'total_2532', 'total_2533', 'total_2534', 'total_2535', 'total_2536', 'total_2537', 'total_2538', 'total_2539', 'total_2540', 'total_2541', 'total_2542', 'total_2543', 'total_2544', 'total_2545', 'total_2546', 'total_2547', 'total_2548', 'total_2549', 'total_2550', 'total_2551', 'total_2552', 'total_2553', 'total_2554', 'total_2555', 'total_2556', 'total_2557', 'total_2558', 'total_2559', 'total_2560', 'total_2561', 'total_2562', 'total_2563', 'total_2564', 'total_2565', 'total_2566', 'total_2567', 'total_2568', 'total_2569', 'total_2570', 'total_2571', 'total_2572', 'total_2573', 'total_2574', 'total_2575', 'total_2576', 'total_2577', 'total_2578', 'total_2579', 'total_2580', 'total_2581', 'total_2582', 'total_2583', 'total_2584', 'total_2585', 'total_2586', 'total_2587', 'total_2588', 'total_2589', 'total_2590', 'total_2591', 'total_2592', 'total_2593', 'total_2594', 'total_2595', 'total_2596', 'total_2597', 'total_2598', 'total_2599', 'total_2600', 'total_2601', 'total_2602', 'total_2603', 'total_2604', 'total_2605', 'total_2606', 'total_2607', 'total_2608', 'total_2609', 'total_2610', 'total_2611', 'total_2612', 'total_2613', 'total_2614', 'total_2615', 'total_2616', 'total_2617', 'total_2618', 'total_2619', 'total_2620', 'total_2621', 'total_2622', 'total_2623', 'total_2624', 'total_2625', 'total_2626', 'total_2627', 'total_2628', 'total_2629', 'total_2630', 'total_2631', 'men_8', 'men_9', 'men_10', 'men_11', 'men_12', 'men_13', 'men_14', 'men_15', 'men_16', 'men_17', 'men_18', 'men_19', 'men_20', 'men_21', 'men_22', 'men_23', 'men_24', 'men_25', 'men_26', 'men_27', 'men_28', 'men_29', 'men_30', 'men_31', 'men_32', 'men_33', 'men_34', 'men_35', 'men_36', 'men_37', 'men_38', 'men_39', 'men_40', 'men_56', 'men_58', 'men_59', 'men_60', 'men_61', 'men_62', 'men_63', 'men_64', 'men_65', 'men_66', 'men_67', 'men_68', 'men_69', 'men_70', 'men_89', 'men_90', 'men_91', 'men_92', 'men_93', 'men_94', 'men_95', 'men_96', 'men_97', 'men_98', 'men_99', 'men_111', 'men_112', 'men_113', 'men_114', 'men_115', 'men_116', 'men_117', 'men_118', 'men_119', 'men_120', 'men_121', 'men_122', 'men_123', 'men_124', 'men_125', 'men_126', 'men_127', 'men_128', 'men_129', 'men_130', 'men_131', 'men_132', 'men_133', 'men_134', 'men_135', 'men_136', 'men_137', 'men_138', 'men_139', 'men_140', 'men_141', 'men_142', 'men_143', 'men_144', 'men_145', 'men_146', 'men_147', 'men_148', 'men_149', 'men_150', 'men_151', 'men_152', 'men_153', 'men_154', 'men_155', 'men_156', 'men_157', 'men_158', 'men_159', 'men_160', 'men_161', 'men_162', 'men_163', 'men_164', 'men_165', 'men_166', 'men_167', 'men_168', 'men_169', 'men_170', 'men_171', 'men_172', 'men_173', 'men_174', 'men_175', 'men_176', 'men_177', 'men_178', 'men_179', 'men_180', 'men_181', 'men_182', 'men_183', 'men_184', 'men_185', 'men_186', 'men_187', 'men_188', 'men_189', 'men_190', 'men_191', 'men_192', 'men_193', 'men_194', 'men_195', 'men_196', 'men_197', 'men_198', 'men_199', 'men_200', 'men_201', 'men_202', 'men_203', 'men_204', 'men_205', 'men_206', 'men_207', 'men_208', 'men_209', 'men_210', 'men_211', 'men_212', 'men_213', 'men_214', 'men_215', 'men_216', 'men_217', 'men_218', 'men_219', 'men_220', 'men_221', 'men_222', 'men_223', 'men_224', 'men_225', 'men_226', 'men_227', 'men_228', 'men_229', 'men_230', 'men_231', 'men_232', 'men_233', 'men_234', 'men_235', 'men_236', 'men_237', 'men_238', 'men_239', 'men_240', 'men_241', 'men_317', 'men_318', 'men_319', 'men_332', 'men_333', 'men_334', 'men_335', 'men_336', 'men_337', 'men_338', 'men_339', 'men_340', 'men_341', 'men_342', 'men_343', 'men_344', 'men_345', 'men_346', 'men_347', 'men_348', 'men_349', 'men_350', 'men_351', 'men_352', 'men_353', 'men_354', 'men_355', 'men_356', 'men_357', 'men_358', 'men_359', 'men_360', 'men_361', 'men_362', 'men_363', 'men_364', 'men_365', 'men_366', 'men_367', 'men_368', 'men_369', 'men_370', 'men_371', 'men_372', 'men_373', 'men_374', 'men_375', 'men_376', 'men_377', 'men_383', 'men_384', 'men_385', 'men_386', 'men_387', 'men_388', 'men_389', 'men_390', 'men_391', 'men_392', 'men_393', 'men_394', 'men_395', 'men_396', 'men_397', 'men_398', 'men_399', 'men_400', 'men_401', 'men_402', 'men_403', 'men_404', 'men_405', 'men_406', 'men_407', 'men_408', 'men_409', 'men_410', 'men_411', 'men_412', 'men_413', 'men_414', 'men_415', 'men_416', 'men_417', 'men_418', 'men_419', 'men_420', 'men_421', 'men_422', 'men_423', 'men_424', 'men_425', 'men_426', 'men_427', 'men_428', 'men_429', 'men_430', 'men_431', 'men_432', 'men_433', 'men_434', 'men_435', 'men_436', 'men_437', 'men_438', 'men_439', 'men_440', 'men_441', 'men_442', 'men_443', 'men_444', 'men_445', 'men_446', 'men_447', 'men_448', 'men_449', 'men_450', 'men_451', 'men_452', 'men_453', 'men_454', 'men_455', 'men_456', 'men_457', 'men_458', 'men_459', 'men_460', 'men_461', 'men_462', 'men_463', 'men_464', 'men_465', 'men_466', 'men_467', 'men_468', 'men_469', 'men_470', 'men_471', 'men_472', 'men_473', 'men_474', 'men_475', 'men_476', 'men_477', 'men_478', 'men_479', 'men_480', 'men_481', 'men_482', 'men_483', 'men_484', 'men_485', 'men_486', 'men_487', 'men_488', 'men_489', 'men_490', 'men_491', 'men_492', 'men_493', 'men_494', 'men_495', 'men_496', 'men_497', 'men_498', 'men_499', 'men_500', 'men_501', 'men_502', 'men_503', 'men_504', 'men_505', 'men_506', 'men_507', 'men_508', 'men_509', 'men_510', 'men_511', 'men_512', 'men_513', 'men_514', 'men_515', 'men_516', 'men_517', 'men_518', 'men_519', 'men_520', 'men_521', 'men_522', 'men_523', 'men_524', 'men_525', 'men_526', 'men_527', 'men_528', 'men_529', 'men_530', 'men_531', 'men_532', 'men_533', 'men_534', 'men_535', 'men_536', 'men_537', 'men_538', 'men_539', 'men_540', 'men_541', 'men_542', 'men_543', 'men_544', 'men_545', 'men_546', 'men_547', 'men_548', 'men_549', 'men_550', 'men_551', 'men_552', 'men_553', 'men_554', 'men_555', 'men_556', 'men_557', 'men_558', 'men_559', 'men_560', 'men_561', 'men_562', 'men_563', 'men_564', 'men_565', 'men_566', 'men_567', 'men_568', 'men_569', 'men_570', 'men_571', 'men_572', 'men_573', 'men_574', 'men_575', 'men_576', 'men_577', 'men_578', 'men_579', 'men_580', 'men_581', 'men_582', 'men_583', 'men_584', 'men_585', 'men_586', 'men_587', 'men_588', 'men_589', 'men_590', 'men_591', 'men_592', 'men_593', 'men_594', 'men_595', 'men_596', 'men_597', 'men_598', 'men_599', 'men_600', 'men_601', 'men_602', 'men_603', 'men_604', 'men_605', 'men_606', 'men_607', 'men_608', 'men_609', 'men_610', 'men_611', 'men_612', 'men_613', 'men_614', 'men_615', 'men_616', 'men_617', 'men_618', 'men_619', 'men_620', 'men_621', 'men_622', 'men_623', 'men_624', 'men_625', 'men_626', 'men_627', 'men_628', 'men_629', 'men_630', 'men_631', 'men_632', 'men_633', 'men_634', 'men_635', 'men_636', 'men_637', 'men_638', 'men_639', 'men_640', 'men_641', 'men_642', 'men_643', 'men_644', 'men_645', 'men_646', 'men_647', 'men_648', 'men_649', 'men_650', 'men_651', 'men_652', 'men_653', 'men_654', 'men_655', 'men_656', 'men_657', 'men_658', 'men_659', 'men_660', 'men_661', 'men_662', 'men_663', 'men_664', 'men_665', 'men_666', 'men_667', 'men_668', 'men_669', 'men_670', 'men_671', 'men_672', 'men_673', 'men_674', 'men_675', 'men_676', 'men_677', 'men_678', 'men_679', 'men_680', 'men_681', 'men_682', 'men_683', 'men_684', 'men_685', 'men_686', 'men_687', 'men_688', 'men_689', 'men_690', 'men_691', 'men_692', 'men_693', 'men_694', 'men_695', 'men_696', 'men_697', 'men_698', 'men_699', 'men_700', 'men_701', 'men_702', 'men_703', 'men_704', 'men_705', 'men_706', 'men_707', 'men_708', 'men_709', 'men_710', 'men_711', 'men_712', 'men_713', 'men_714', 'men_715', 'men_716', 'men_717', 'men_718', 'men_719', 'men_720', 'men_721', 'men_722', 'men_723', 'men_724', 'men_725', 'men_726', 'men_727', 'men_728', 'men_729', 'men_730', 'men_731', 'men_732', 'men_733', 'men_734', 'men_735', 'men_736', 'men_737', 'men_738', 'men_739', 'men_740', 'men_741', 'men_742', 'men_743', 'men_744', 'men_745', 'men_746', 'men_747', 'men_748', 'men_749', 'men_750', 'men_751', 'men_752', 'men_753', 'men_754', 'men_755', 'men_756', 'men_757', 'men_758', 'men_759', 'men_760', 'men_761', 'men_762', 'men_763', 'men_764', 'men_765', 'men_766', 'men_767', 'men_768', 'men_769', 'men_770', 'men_771', 'men_772', 'men_773', 'men_774', 'men_775', 'men_776', 'men_777', 'men_778', 'men_779', 'men_780', 'men_781', 'men_782', 'men_783', 'men_784', 'men_785', 'men_786', 'men_787', 'men_788', 'men_789', 'men_790', 'men_791', 'men_792', 'men_793', 'men_794', 'men_795', 'men_796', 'men_797', 'men_798', 'men_799', 'men_800', 'men_801', 'men_802', 'men_803', 'men_804', 'men_805', 'men_806', 'men_807', 'men_808', 'men_809', 'men_810', 'men_811', 'men_812', 'men_813', 'men_814', 'men_815', 'men_816', 'men_817', 'men_818', 'men_819', 'men_820', 'men_821', 'men_822', 'men_823', 'men_824', 'men_825', 'men_826', 'men_827', 'men_828', 'men_829', 'men_830', 'men_831', 'men_832', 'men_833', 'men_834', 'men_835', 'men_836', 'men_837', 'men_838', 'men_839', 'men_840', 'men_841', 'men_842', 'men_843', 'men_844', 'men_845', 'men_846', 'men_847', 'men_848', 'men_849', 'men_850', 'men_851', 'men_852', 'men_853', 'men_854', 'men_855', 'men_856', 'men_857', 'men_858', 'men_859', 'men_860', 'men_861', 'men_862', 'men_863', 'men_864', 'men_865', 'men_866', 'men_867', 'men_868', 'men_869', 'men_870', 'men_871', 'men_872', 'men_873', 'men_874', 'men_875', 'men_876', 'men_877', 'men_878', 'men_879', 'men_880', 'men_881', 'men_882', 'men_883', 'men_884', 'men_885', 'men_886', 'men_887', 'men_888', 'men_889', 'men_890', 'men_891', 'men_892', 'men_893', 'men_894', 'men_895', 'men_896', 'men_897', 'men_898', 'men_899', 'men_900', 'men_901', 'men_902', 'men_903', 'men_904', 'men_905', 'men_906', 'men_907', 'men_908', 'men_909', 'men_910', 'men_911', 'men_912', 'men_913', 'men_914', 'men_915', 'men_916', 'men_917', 'men_918', 'men_919', 'men_920', 'men_921', 'men_922', 'men_923', 'men_924', 'men_925', 'men_926', 'men_927', 'men_928', 'men_929', 'men_930', 'men_931', 'men_932', 'men_933', 'men_934', 'men_935', 'men_936', 'men_937', 'men_938', 'men_939', 'men_940', 'men_941', 'men_942', 'men_943', 'men_944', 'men_945', 'men_946', 'men_947', 'men_948', 'men_949', 'men_950', 'men_951', 'men_952', 'men_953', 'men_954', 'men_955', 'men_956', 'men_957', 'men_958', 'men_959', 'men_960', 'men_961', 'men_962', 'men_963', 'men_964', 'men_965', 'men_966', 'men_967', 'men_968', 'men_969', 'men_970', 'men_971', 'men_972', 'men_973', 'men_974', 'men_975', 'men_976', 'men_977', 'men_978', 'men_979', 'men_980', 'men_981', 'men_982', 'men_983', 'men_984', 'men_985', 'men_986', 'men_987', 'men_988', 'men_989', 'men_990', 'men_991', 'men_992', 'men_993', 'men_994', 'men_995', 'men_996', 'men_997', 'men_998', 'men_999', 'men_1000', 'men_1001', 'men_1002', 'men_1003', 'men_1004', 'men_1005', 'men_1006', 'men_1007', 'men_1008', 'men_1009', 'men_1010', 'men_1011', 'men_1012', 'men_1013', 'men_1014', 'men_1015', 'men_1016', 'men_1017', 'men_1018', 'men_1019', 'men_1020', 'men_1021', 'men_1022', 'men_1023', 'men_1024', 'men_1025', 'men_1026', 'men_1027', 'men_1028', 'men_1029', 'men_1030', 'men_1031', 'men_1032', 'men_1033', 'men_1034', 'men_1035', 'men_1036', 'men_1037', 'men_1038', 'men_1039', 'men_1040', 'men_1041', 'men_1042', 'men_1043', 'men_1044', 'men_1045', 'men_1046', 'men_1047', 'men_1048', 'men_1049', 'men_1050', 'men_1051', 'men_1052', 'men_1053', 'men_1054', 'men_1055', 'men_1056', 'men_1057', 'men_1058', 'men_1059', 'men_1060', 'men_1061', 'men_1062', 'men_1063', 'men_1064', 'men_1065', 'men_1066', 'men_1067', 'men_1068', 'men_1069', 'men_1070', 'men_1071', 'men_1072', 'men_1073', 'men_1074', 'men_1075', 'men_1076', 'men_1077', 'men_1078', 'men_1079', 'men_1080', 'men_1081', 'men_1082', 'men_1083', 'men_1084', 'men_1085', 'men_1086', 'men_1087', 'men_1088', 'men_1089', 'men_1090', 'men_1091', 'men_1092', 'men_1093', 'men_1094', 'men_1095', 'men_1096', 'men_1097', 'men_1098', 'men_1099', 'men_1100', 'men_1101', 'men_1102', 'men_1103', 'men_1104', 'men_1105', 'men_1106', 'men_1107', 'men_1108', 'men_1109', 'men_1110', 'men_1111', 'men_1112', 'men_1113', 'men_1114', 'men_1115', 'men_1116', 'men_1117', 'men_1118', 'men_1119', 'men_1120', 'men_1121', 'men_1122', 'men_1123', 'men_1124', 'men_1125', 'men_1126', 'men_1127', 'men_1128', 'men_1129', 'men_1130', 'men_1131', 'men_1132', 'men_1133', 'men_1134', 'men_1135', 'men_1136', 'men_1137', 'men_1138', 'men_1139', 'men_1140', 'men_1141', 'men_1142', 'men_1143', 'men_1144', 'men_1145', 'men_1146', 'men_1147', 'men_1148', 'men_1149', 'men_1150', 'men_1151', 'men_1152', 'men_1153', 'men_1154', 'men_1155', 'men_1156', 'men_1157', 'men_1158', 'men_1159', 'men_1160', 'men_1161', 'men_1162', 'men_1163', 'men_1164', 'men_1165', 'men_1166', 'men_1167', 'men_1168', 'men_1169', 'men_1170', 'men_1171', 'men_1172', 'men_1173', 'men_1174', 'men_1175', 'men_1176', 'men_1177', 'men_1178', 'men_1179', 'men_1180', 'men_1181', 'men_1182', 'men_1183', 'men_1184', 'men_1185', 'men_1186', 'men_1187', 'men_1188', 'men_1189', 'men_1190', 'men_1191', 'men_1192', 'men_1193', 'men_1194', 'men_1195', 'men_1196', 'men_1197', 'men_1198', 'men_1199', 'men_1200', 'men_1201', 'men_1202', 'men_1203', 'men_1204', 'men_1205', 'men_1206', 'men_1207', 'men_1208', 'men_1209', 'men_1210', 'men_1211', 'men_1212', 'men_1213', 'men_1214', 'men_1215', 'men_1216', 'men_1217', 'men_1218', 'men_1219', 'men_1220', 'men_1221', 'men_1222', 'men_1223', 'men_1224', 'men_1225', 'men_1226', 'men_1227', 'men_1228', 'men_1229', 'men_1230', 'men_1231', 'men_1232', 'men_1233', 'men_1234', 'men_1235', 'men_1236', 'men_1237', 'men_1238', 'men_1239', 'men_1240', 'men_1241', 'men_1242', 'men_1243', 'men_1244', 'men_1245', 'men_1246', 'men_1247', 'men_1248', 'men_1249', 'men_1250', 'men_1251', 'men_1252', 'men_1253', 'men_1254', 'men_1255', 'men_1256', 'men_1257', 'men_1258', 'men_1259', 'men_1260', 'men_1261', 'men_1262', 'men_1263', 'men_1264', 'men_1265', 'men_1266', 'men_1267', 'men_1268', 'men_1269', 'men_1270', 'men_1271', 'men_1272', 'men_1273', 'men_1274', 'men_1275', 'men_1276', 'men_1277', 'men_1278', 'men_1279', 'men_1280', 'men_1281', 'men_1282', 'men_1283', 'men_1284', 'men_1285', 'men_1286', 'men_1287', 'men_1288', 'men_1289', 'men_1290', 'men_1291', 'men_1292', 'men_1293', 'men_1294', 'men_1295', 'men_1296', 'men_1297', 'men_1298', 'men_1299', 'men_1300', 'men_1301', 'men_1302', 'men_1303', 'men_1304', 'men_1305', 'men_1306', 'men_1307', 'men_1308', 'men_1309', 'men_1310', 'men_1311', 'men_1312', 'men_1313', 'men_1314', 'men_1315', 'men_1316', 'men_1317', 'men_1318', 'men_1319', 'men_1320', 'men_1321', 'men_1322', 'men_1323', 'men_1324', 'men_1325', 'men_1326', 'men_1327', 'men_1328', 'men_1329', 'men_1330', 'men_1331', 'men_1332', 'men_1333', 'men_1334', 'men_1335', 'men_1336', 'men_1337', 'men_1338', 'men_1339', 'men_1340', 'men_1341', 'men_1342', 'men_1343', 'men_1344', 'men_1345', 'men_1346', 'men_1347', 'men_1348', 'men_1349', 'men_1350', 'men_1351', 'men_1352', 'men_1353', 'men_1354', 'men_1355', 'men_1356', 'men_1357', 'men_1358', 'men_1359', 'men_1360', 'men_1361', 'men_1362', 'men_1363', 'men_1364', 'men_1365', 'men_1366', 'men_1367', 'men_1368', 'men_1369', 'men_1370', 'men_1371', 'men_1372', 'men_1373', 'men_1374', 'men_1375', 'men_1376', 'men_1377', 'men_1378', 'men_1379', 'men_1380', 'men_1381', 'men_1382', 'men_1383', 'men_1384', 'men_1385', 'men_1386', 'men_1387', 'men_1388', 'men_1389', 'men_1390', 'men_1391', 'men_1392', 'men_1393', 'men_1394', 'men_1395', 'men_1396', 'men_1397', 'men_1398', 'men_1399', 'men_1400', 'men_1401', 'men_1402', 'men_1403', 'men_1404', 'men_1405', 'men_1406', 'men_1407', 'men_1408', 'men_1409', 'men_1410', 'men_1411', 'men_1412', 'men_1413', 'men_1500', 'men_1501', 'men_1502', 'men_1503', 'men_1504', 'men_1505', 'men_1506', 'men_1507', 'men_1508', 'men_1509', 'men_1510', 'men_1511', 'men_1512', 'men_1513', 'men_1514', 'men_1515', 'men_1516', 'men_1517', 'men_1518', 'men_1519', 'men_1520', 'men_1521', 'men_1522', 'men_1523', 'men_1524', 'men_1525', 'men_1526', 'men_1527', 'men_1528', 'men_1529', 'men_1530', 'men_1531', 'men_1532', 'men_1533', 'men_1534', 'men_1535', 'men_1536', 'men_1537', 'men_1538', 'men_1539', 'men_1540', 'men_1541', 'men_1542', 'men_1543', 'men_1544', 'men_1545', 'men_1546', 'men_1547', 'men_1548', 'men_1549', 'men_1550', 'men_1551', 'men_1552', 'men_1553', 'men_1554', 'men_1555', 'men_1556', 'men_1557', 'men_1558', 'men_1559', 'men_1560', 'men_1561', 'men_1562', 'men_1563', 'men_1564', 'men_1565', 'men_1566', 'men_1567', 'men_1568', 'men_1569', 'men_1570', 'men_1571', 'men_1572', 'men_1573', 'men_1574', 'men_1575', 'men_1576', 'men_1577', 'men_1578', 'men_1579', 'men_1580', 'men_1581', 'men_1582', 'men_1583', 'men_1584', 'men_1585', 'men_1586', 'men_1587', 'men_1588', 'men_1589', 'men_1590', 'men_1591', 'men_1592', 'men_1593', 'men_1594', 'men_1595', 'men_1596', 'men_1597', 'men_1598', 'men_1599', 'men_1600', 'men_1601', 'men_1602', 'men_1603', 'men_1604', 'men_1605', 'men_1606', 'men_1607', 'men_1608', 'men_1609', 'men_1610', 'men_1611', 'men_1612', 'men_1613', 'men_1614', 'men_1615', 'men_1616', 'men_1617', 'men_1618', 'men_1619', 'men_1620', 'men_1621', 'men_1622', 'men_1623', 'men_1624', 'men_1625', 'men_1626', 'men_1627', 'men_1628', 'men_1629', 'men_1630', 'men_1631', 'men_1632', 'men_1633', 'men_1634', 'men_1635', 'men_1636', 'men_1637', 'men_1638', 'men_1639', 'men_1640', 'men_1641', 'men_1642', 'men_1643', 'men_1644', 'men_1645', 'men_1646', 'men_1647', 'men_1648', 'men_1649', 'men_1650', 'men_1651', 'men_1652', 'men_1653', 'men_1654', 'men_1655', 'men_1656', 'men_1657', 'men_1658', 'men_1659', 'men_1660', 'men_1661', 'men_1662', 'men_1663', 'men_1664', 'men_1665', 'men_1666', 'men_1667', 'men_1668', 'men_1669', 'men_1670', 'men_1671', 'men_1672', 'men_1673', 'men_1674', 'men_1675', 'men_1676', 'men_1677', 'men_1678', 'men_1679', 'men_1680', 'men_1681', 'men_1682', 'men_1683', 'men_1684', 'men_1685', 'men_1686', 'men_1687', 'men_1688', 'men_1689', 'men_1690', 'men_1691', 'men_1692', 'men_1693', 'men_1694', 'men_1695', 'men_1696', 'men_1697', 'men_1698', 'men_1699', 'men_1700', 'men_1701', 'men_1702', 'men_1703', 'men_1704', 'men_1705', 'men_1706', 'men_1707', 'men_1708', 'men_1709', 'men_1710', 'men_1711', 'men_1712', 'men_1713', 'men_1714', 'men_1715', 'men_1716', 'men_1717', 'men_1718', 'men_1719', 'men_1720', 'men_1721', 'men_1722', 'men_1723', 'men_1724', 'men_1725', 'men_1726', 'men_1727', 'men_1728', 'men_1729', 'men_1730', 'men_1731', 'men_1732', 'men_1733', 'men_1734', 'men_1735', 'men_1736', 'men_1737', 'men_1738', 'men_1739', 'men_1740', 'men_1741', 'men_1742', 'men_1743', 'men_1744', 'men_1745', 'men_1746', 'men_1747', 'men_1748', 'men_1749', 'men_1750', 'men_1751', 'men_1752', 'men_1753', 'men_1754', 'men_1755', 'men_1756', 'men_1757', 'men_1758', 'men_1759', 'men_1760', 'men_1761', 'men_1762', 'men_1763', 'men_1764', 'men_1765', 'men_1766', 'men_1767', 'men_1768', 'men_1769', 'men_1770', 'men_1771', 'men_1772', 'men_1773', 'men_1774', 'men_1775', 'men_1776', 'men_1777', 'men_1778', 'men_1779', 'men_1780', 'men_1781', 'men_1782', 'men_1783', 'men_1784', 'men_1785', 'men_1786', 'men_1787', 'men_1788', 'men_1789', 'men_1790', 'men_1791', 'men_1792', 'men_1793', 'men_1794', 'men_1795', 'men_1796', 'men_1797', 'men_1798', 'men_1799', 'men_1800', 'men_1801', 'men_1802', 'men_1803', 'men_1804', 'men_1805', 'men_1806', 'men_1807', 'men_1808', 'men_1809', 'men_1810', 'men_1811', 'men_1812', 'men_1813', 'men_1814', 'men_1815', 'men_1816', 'men_1817', 'men_1818', 'men_1819', 'men_1820', 'men_1821', 'men_1822', 'men_1823', 'men_1824', 'men_1825', 'men_1826', 'men_1827', 'men_1828', 'men_1829', 'men_1830', 'men_1831', 'men_1832', 'men_1833', 'men_1834', 'men_1835', 'men_1836', 'men_1837', 'men_1838', 'men_1839', 'men_1840', 'men_1841', 'men_1842', 'men_1843', 'men_1844', 'men_1845', 'men_1846', 'men_1847', 'men_1848', 'men_1849', 'men_1850', 'men_1851', 'men_1852', 'men_1853', 'men_1854', 'men_1855', 'men_1856', 'men_1857', 'men_1858', 'men_1859', 'men_1860', 'men_1861', 'men_1862', 'men_1863', 'men_1864', 'men_1865', 'men_1866', 'men_1867', 'men_1868', 'men_1869', 'men_1870', 'men_1871', 'men_1872', 'men_1873', 'men_1874', 'men_1875', 'men_1876', 'men_1877', 'men_1878', 'men_1879', 'men_1880', 'men_1881', 'men_1882', 'men_1883', 'men_1884', 'men_1885', 'men_1886', 'men_1887', 'men_1888', 'men_1889', 'men_1890', 'men_1891', 'men_1892', 'men_1893', 'men_1894', 'men_1895', 'men_1896', 'men_1897', 'men_1898', 'men_1899', 'men_1900', 'men_1901', 'men_1902', 'men_1903', 'men_1904', 'men_1905', 'men_1906', 'men_1907', 'men_1908', 'men_1909', 'men_1910', 'men_1911', 'men_1912', 'men_1913', 'men_1914', 'men_1915', 'men_1916', 'men_1917', 'men_1918', 'men_1919', 'men_1920', 'men_1921', 'men_1922', 'men_1923', 'men_1924', 'men_1925', 'men_1926', 'men_1927', 'men_1928', 'men_1929', 'men_1930', 'men_1931', 'men_1932', 'men_1933', 'men_1934', 'men_1935', 'men_1936', 'men_1937', 'men_1938', 'men_1939', 'men_1940', 'men_1941', 'men_1942', 'men_1943', 'men_1944', 'men_1945', 'men_1946', 'men_1947', 'men_1948', 'men_1949', 'men_1950', 'men_1951', 'men_1952', 'men_1953', 'men_1954', 'men_1955', 'men_1956', 'men_1957', 'men_1958', 'men_1959', 'men_1960', 'men_1961', 'men_1962', 'men_1963', 'men_1964', 'men_1965', 'men_1966', 'men_1967', 'men_1968', 'men_1969', 'men_1970', 'men_1971', 'men_1972', 'men_1973', 'men_1974', 'men_1975', 'men_1976', 'men_1977', 'men_1978', 'men_1979', 'men_1980', 'men_1981', 'men_1982', 'men_1983', 'men_1984', 'men_1985', 'men_1986', 'men_1987', 'men_1988', 'men_1989', 'men_1990', 'men_1991', 'men_1992', 'men_1993', 'men_1994', 'men_1995', 'men_1996', 'men_1997', 'men_1998', 'men_1999', 'men_2000', 'men_2001', 'men_2002', 'men_2003', 'men_2004', 'men_2005', 'men_2006', 'men_2007', 'men_2008', 'men_2009', 'men_2010', 'men_2011', 'men_2012', 'men_2013', 'men_2014', 'men_2015', 'men_2016', 'men_2017', 'men_2018', 'men_2019', 'men_2020', 'men_2021', 'men_2022', 'men_2023', 'men_2024', 'men_2025', 'men_2026', 'men_2027', 'men_2028', 'men_2029', 'men_2030', 'men_2031', 'men_2032', 'men_2033', 'men_2034', 'men_2035', 'men_2036', 'men_2037', 'men_2038', 'men_2039', 'men_2040', 'men_2041', 'men_2042', 'men_2043', 'men_2044', 'men_2045', 'men_2046', 'men_2047', 'men_2048', 'men_2049', 'men_2050', 'men_2051', 'men_2052', 'men_2053', 'men_2054', 'men_2055', 'men_2056', 'men_2057', 'men_2058', 'men_2059', 'men_2060', 'men_2061', 'men_2062', 'men_2063', 'men_2064', 'men_2065', 'men_2066', 'men_2067', 'men_2068', 'men_2069', 'men_2070', 'men_2071', 'men_2072', 'men_2073', 'men_2074', 'men_2075', 'men_2076', 'men_2077', 'men_2078', 'men_2079', 'men_2080', 'men_2081', 'men_2082', 'men_2083', 'men_2084', 'men_2085', 'men_2086', 'men_2087', 'men_2088', 'men_2089', 'men_2090', 'men_2091', 'men_2092', 'men_2093', 'men_2094', 'men_2095', 'men_2096', 'men_2097', 'men_2098', 'men_2099', 'men_2100', 'men_2101', 'men_2102', 'men_2103', 'men_2104', 'men_2105', 'men_2106', 'men_2107', 'men_2108', 'men_2109', 'men_2110', 'men_2111', 'men_2112', 'men_2113', 'men_2114', 'men_2115', 'men_2116', 'men_2117', 'men_2118', 'men_2119', 'men_2120', 'men_2121', 'men_2122', 'men_2123', 'men_2124', 'men_2125', 'men_2126', 'men_2127', 'men_2128', 'men_2129', 'men_2130', 'men_2131', 'men_2132', 'men_2133', 'men_2134', 'men_2135', 'men_2136', 'men_2137', 'men_2138', 'men_2139', 'men_2140', 'men_2141', 'men_2142', 'men_2143', 'men_2144', 'men_2145', 'men_2146', 'men_2147', 'men_2148', 'men_2149', 'men_2150', 'men_2151', 'men_2152', 'men_2153', 'men_2154', 'men_2155', 'men_2156', 'men_2157', 'men_2158', 'men_2159', 'men_2160', 'men_2161', 'men_2162', 'men_2163', 'men_2164', 'men_2165', 'men_2166', 'men_2167', 'men_2168', 'men_2169', 'men_2170', 'men_2171', 'men_2172', 'men_2173', 'men_2174', 'men_2175', 'men_2176', 'men_2177', 'men_2178', 'men_2179', 'men_2180', 'men_2181', 'men_2182', 'men_2183', 'men_2184', 'men_2185', 'men_2186', 'men_2187', 'men_2188', 'men_2189', 'men_2190', 'men_2191', 'men_2192', 'men_2193', 'men_2194', 'men_2195', 'men_2196', 'men_2197', 'men_2198', 'men_2199', 'men_2200', 'men_2201', 'men_2202', 'men_2203', 'men_2204', 'men_2205', 'men_2206', 'men_2207', 'men_2208', 'men_2209', 'men_2210', 'men_2211', 'men_2212', 'men_2213', 'men_2214', 'men_2215', 'men_2216', 'men_2217', 'men_2218', 'men_2219', 'men_2220', 'men_2221', 'men_2222', 'men_2223', 'men_2224', 'men_2225', 'men_2226', 'men_2227', 'men_2228', 'men_2229', 'men_2230', 'men_2231', 'men_2232', 'men_2233', 'men_2234', 'men_2235', 'men_2236', 'men_2237', 'men_2238', 'men_2239', 'men_2240', 'men_2241', 'men_2242', 'men_2243', 'men_2244', 'men_2245', 'men_2246', 'men_2247', 'men_2248', 'men_2249', 'men_2250', 'men_2251', 'men_2252', 'men_2253', 'men_2254', 'men_2255', 'men_2256', 'men_2257', 'men_2258', 'men_2259', 'men_2260', 'men_2261', 'men_2262', 'men_2263', 'men_2264', 'men_2265', 'men_2266', 'men_2267', 'men_2268', 'men_2269', 'men_2270', 'men_2271', 'men_2272', 'men_2273', 'men_2274', 'men_2275', 'men_2276', 'men_2277', 'men_2278', 'men_2279', 'men_2280', 'men_2281', 'men_2282', 'men_2283', 'men_2284', 'men_2285', 'men_2286', 'men_2287', 'men_2288', 'men_2289', 'men_2290', 'men_2291', 'men_2292', 'men_2293', 'men_2294', 'men_2295', 'men_2296', 'men_2297', 'men_2298', 'men_2299', 'men_2300', 'men_2301', 'men_2302', 'men_2303', 'men_2304', 'men_2305', 'men_2306', 'men_2307', 'men_2308', 'men_2309', 'men_2310', 'men_2311', 'men_2312', 'men_2313', 'men_2314', 'men_2315', 'men_2316', 'men_2317', 'men_2318', 'men_2319', 'men_2320', 'men_2321', 'men_2322', 'men_2323', 'men_2324', 'men_2325', 'men_2326', 'men_2327', 'men_2328', 'men_2329', 'men_2330', 'men_2331', 'men_2332', 'men_2333', 'men_2334', 'men_2335', 'men_2336', 'men_2337', 'men_2338', 'men_2339', 'men_2340', 'men_2341', 'men_2342', 'men_2343', 'men_2344', 'men_2345', 'men_2346', 'men_2347', 'men_2348', 'men_2349', 'men_2350', 'men_2351', 'men_2352', 'men_2353', 'men_2354', 'men_2355', 'men_2356', 'men_2357', 'men_2358', 'men_2359', 'men_2360', 'men_2361', 'men_2362', 'men_2363', 'men_2364', 'men_2365', 'men_2366', 'men_2367', 'men_2368', 'men_2369', 'men_2370', 'men_2371', 'men_2372', 'men_2373', 'men_2374', 'men_2375', 'men_2376', 'men_2377', 'men_2378', 'men_2379', 'men_2380', 'men_2381', 'men_2382', 'men_2383', 'men_2384', 'men_2385', 'men_2386', 'men_2387', 'men_2388', 'men_2389', 'men_2390', 'men_2391', 'men_2392', 'men_2393', 'men_2394', 'men_2395', 'men_2396', 'men_2397', 'men_2398', 'men_2399', 'men_2400', 'men_2401', 'men_2402', 'men_2403', 'men_2404', 'men_2405', 'men_2406', 'men_2407', 'men_2408', 'men_2409', 'men_2410', 'men_2411', 'men_2412', 'men_2413', 'men_2414', 'men_2415', 'men_2416', 'men_2417', 'men_2418', 'men_2419', 'men_2420', 'men_2421', 'men_2422', 'men_2423', 'men_2424', 'men_2425', 'men_2426', 'men_2427', 'men_2428', 'men_2429', 'men_2430', 'men_2431', 'men_2432', 'men_2433', 'men_2434', 'men_2435', 'men_2436', 'men_2437', 'men_2438', 'men_2439', 'men_2440', 'men_2441', 'men_2442', 'men_2443', 'men_2444', 'men_2445', 'men_2446', 'men_2447', 'men_2448', 'men_2449', 'men_2450', 'men_2451', 'men_2452', 'men_2453', 'men_2454', 'men_2455', 'men_2456', 'men_2457', 'men_2458', 'men_2459', 'men_2460', 'men_2461', 'men_2462', 'men_2463', 'men_2464', 'men_2465', 'men_2466', 'men_2467', 'men_2468', 'men_2469', 'men_2470', 'men_2471', 'men_2472', 'men_2473', 'men_2474', 'men_2475', 'men_2476', 'men_2477', 'men_2478', 'men_2479', 'men_2480', 'men_2481', 'men_2482', 'men_2483', 'men_2484', 'men_2485', 'men_2486', 'men_2487', 'men_2488', 'men_2489', 'men_2490', 'men_2491', 'men_2492', 'men_2493', 'men_2494', 'men_2495', 'men_2496', 'men_2497', 'men_2498', 'men_2499', 'men_2500', 'men_2501', 'men_2502', 'men_2503', 'men_2504', 'men_2505', 'men_2506', 'men_2507', 'men_2508', 'men_2509', 'men_2510', 'men_2511', 'men_2512', 'men_2513', 'men_2514', 'men_2515', 'men_2516', 'men_2517', 'men_2518', 'men_2519', 'men_2520', 'men_2521', 'men_2522', 'men_2523', 'men_2524', 'men_2525', 'men_2526', 'men_2527', 'men_2528', 'men_2529', 'men_2530', 'men_2531', 'men_2532', 'men_2533', 'men_2534', 'men_2535', 'men_2536', 'men_2537', 'men_2538', 'men_2539', 'men_2540', 'men_2541', 'men_2542', 'men_2543', 'men_2544', 'men_2545', 'men_2546', 'men_2547', 'men_2548', 'men_2549', 'men_2550', 'men_2551', 'men_2552', 'men_2553', 'men_2554', 'men_2555', 'men_2556', 'men_2557', 'men_2558', 'men_2559', 'men_2560', 'men_2561', 'men_2562', 'men_2563', 'men_2564', 'men_2565', 'men_2566', 'men_2567', 'men_2568', 'men_2569', 'men_2570', 'men_2571', 'men_2572', 'men_2573', 'men_2574', 'men_2575', 'men_2576', 'men_2577', 'men_2578', 'men_2579', 'men_2580', 'men_2581', 'men_2582', 'men_2583', 'men_2584', 'men_2585', 'men_2586', 'men_2587', 'men_2588', 'men_2589', 'men_2590', 'men_2591', 'men_2592', 'men_2593', 'men_2594', 'men_2595', 'men_2596', 'men_2597', 'men_2598', 'men_2599', 'men_2600', 'men_2601', 'men_2602', 'men_2603', 'men_2604', 'men_2605', 'men_2606', 'men_2607', 'men_2608', 'men_2609', 'men_2610', 'men_2611', 'men_2612', 'men_2613', 'men_2614', 'men_2615', 'men_2616', 'men_2617', 'men_2618', 'men_2619', 'men_2620', 'men_2621', 'men_2622', 'men_2623', 'men_2624', 'men_2625', 'men_2626', 'men_2627', 'men_2628', 'men_2629', 'men_2630', 'men_2631', 'women_8', 'women_9', 'women_10', 'women_11', 'women_12', 'women_13', 'women_14', 'women_15', 'women_16', 'women_17', 'women_18', 'women_19', 'women_20', 'women_21', 'women_22', 'women_23', 'women_24', 'women_25', 'women_26', 'women_27', 'women_28', 'women_29', 'women_30', 'women_31', 'women_32', 'women_33', 'women_34', 'women_35', 'women_36', 'women_37', 'women_38', 'women_39', 'women_40', 'women_56', 'women_58', 'women_59', 'women_60', 'women_61', 'women_62', 'women_63', 'women_64', 'women_65', 'women_66', 'women_67', 'women_68', 'women_69', 'women_70', 'women_89', 'women_90', 'women_91', 'women_92', 'women_93', 'women_94', 'women_95', 'women_96', 'women_97', 'women_98', 'women_99', 'women_111', 'women_112', 'women_113', 'women_114', 'women_115', 'women_116', 'women_117', 'women_118', 'women_119', 'women_120', 'women_121', 'women_122', 'women_123', 'women_124', 'women_125', 'women_126', 'women_127', 'women_128', 'women_129', 'women_130', 'women_131', 'women_132', 'women_133', 'women_134', 'women_135', 'women_136', 'women_137', 'women_138', 'women_139', 'women_140', 'women_141', 'women_142', 'women_143', 'women_144', 'women_145', 'women_146', 'women_147', 'women_148', 'women_149', 'women_150', 'women_151', 'women_152', 'women_153', 'women_154', 'women_155', 'women_156', 'women_157', 'women_158', 'women_159', 'women_160', 'women_161', 'women_162', 'women_163', 'women_164', 'women_165', 'women_166', 'women_167', 'women_168', 'women_169', 'women_170', 'women_171', 'women_172', 'women_173', 'women_174', 'women_175', 'women_176', 'women_177', 'women_178', 'women_179', 'women_180', 'women_181', 'women_182', 'women_183', 'women_184', 'women_185', 'women_186', 'women_187', 'women_188', 'women_189', 'women_190', 'women_191', 'women_192', 'women_193', 'women_194', 'women_195', 'women_196', 'women_197', 'women_198', 'women_199', 'women_200', 'women_201', 'women_202', 'women_203', 'women_204', 'women_205', 'women_206', 'women_207', 'women_208', 'women_209', 'women_210', 'women_211', 'women_212', 'women_213', 'women_214', 'women_215', 'women_216', 'women_217', 'women_218', 'women_219', 'women_220', 'women_221', 'women_222', 'women_223', 'women_224', 'women_225', 'women_226', 'women_227', 'women_228', 'women_229', 'women_230', 'women_231', 'women_232', 'women_233', 'women_234', 'women_235', 'women_236', 'women_237', 'women_238', 'women_239', 'women_240', 'women_241', 'women_317', 'women_318', 'women_319', 'women_332', 'women_333', 'women_334', 'women_335', 'women_336', 'women_337', 'women_338', 'women_339', 'women_340', 'women_341', 'women_342', 'women_343', 'women_344', 'women_345', 'women_346', 'women_347', 'women_348', 'women_349', 'women_350', 'women_351', 'women_352', 'women_353', 'women_354', 'women_355', 'women_356', 'women_357', 'women_358', 'women_359', 'women_360', 'women_361', 'women_362', 'women_363', 'women_364', 'women_365', 'women_366', 'women_367', 'women_368', 'women_369', 'women_370', 'women_371', 'women_372', 'women_373', 'women_374', 'women_375', 'women_376', 'women_377', 'women_383', 'women_384', 'women_385', 'women_386', 'women_387', 'women_388', 'women_389', 'women_390', 'women_391', 'women_392', 'women_393', 'women_394', 'women_395', 'women_396', 'women_397', 'women_398', 'women_399', 'women_400', 'women_401', 'women_402', 'women_403', 'women_404', 'women_405', 'women_406', 'women_407', 'women_408', 'women_409', 'women_410', 'women_411', 'women_412', 'women_413', 'women_414', 'women_415', 'women_416', 'women_417', 'women_418', 'women_419', 'women_420', 'women_421', 'women_422', 'women_423', 'women_424', 'women_425', 'women_426', 'women_427', 'women_428', 'women_429', 'women_430', 'women_431', 'women_432', 'women_433', 'women_434', 'women_435', 'women_436', 'women_437', 'women_438', 'women_439', 'women_440', 'women_441', 'women_442', 'women_443', 'women_444', 'women_445', 'women_446', 'women_447', 'women_448', 'women_449', 'women_450', 'women_451', 'women_452', 'women_453', 'women_454', 'women_455', 'women_456', 'women_457', 'women_458', 'women_459', 'women_460', 'women_461', 'women_462', 'women_463', 'women_464', 'women_465', 'women_466', 'women_467', 'women_468', 'women_469', 'women_470', 'women_471', 'women_472', 'women_473', 'women_474', 'women_475', 'women_476', 'women_477', 'women_478', 'women_479', 'women_480', 'women_481', 'women_482', 'women_483', 'women_484', 'women_485', 'women_486', 'women_487', 'women_488', 'women_489', 'women_490', 'women_491', 'women_492', 'women_493', 'women_494', 'women_495', 'women_496', 'women_497', 'women_498', 'women_499', 'women_500', 'women_501', 'women_502', 'women_503', 'women_504', 'women_505', 'women_506', 'women_507', 'women_508', 'women_509', 'women_510', 'women_511', 'women_512', 'women_513', 'women_514', 'women_515', 'women_516', 'women_517', 'women_518', 'women_519', 'women_520', 'women_521', 'women_522', 'women_523', 'women_524', 'women_525', 'women_526', 'women_527', 'women_528', 'women_529', 'women_530', 'women_531', 'women_532', 'women_533', 'women_534', 'women_535', 'women_536', 'women_537', 'women_538', 'women_539', 'women_540', 'women_541', 'women_542', 'women_543', 'women_544', 'women_545', 'women_546', 'women_547', 'women_548', 'women_549', 'women_550', 'women_551', 'women_552', 'women_553', 'women_554', 'women_555', 'women_556', 'women_557', 'women_558', 'women_559', 'women_560', 'women_561', 'women_562', 'women_563', 'women_564', 'women_565', 'women_566', 'women_567', 'women_568', 'women_569', 'women_570', 'women_571', 'women_572', 'women_573', 'women_574', 'women_575', 'women_576', 'women_577', 'women_578', 'women_579', 'women_580', 'women_581', 'women_582', 'women_583', 'women_584', 'women_585', 'women_586', 'women_587', 'women_588', 'women_589', 'women_590', 'women_591', 'women_592', 'women_593', 'women_594', 'women_595', 'women_596', 'women_597', 'women_598', 'women_599', 'women_600', 'women_601', 'women_602', 'women_603', 'women_604', 'women_605', 'women_606', 'women_607', 'women_608', 'women_609', 'women_610', 'women_611', 'women_612', 'women_613', 'women_614', 'women_615', 'women_616', 'women_617', 'women_618', 'women_619', 'women_620', 'women_621', 'women_622', 'women_623', 'women_624', 'women_625', 'women_626', 'women_627', 'women_628', 'women_629', 'women_630', 'women_631', 'women_632', 'women_633', 'women_634', 'women_635', 'women_636', 'women_637', 'women_638', 'women_639', 'women_640', 'women_641', 'women_642', 'women_643', 'women_644', 'women_645', 'women_646', 'women_647', 'women_648', 'women_649', 'women_650', 'women_651', 'women_652', 'women_653', 'women_654', 'women_655', 'women_656', 'women_657', 'women_658', 'women_659', 'women_660', 'women_661', 'women_662', 'women_663', 'women_664', 'women_665', 'women_666', 'women_667', 'women_668', 'women_669', 'women_670', 'women_671', 'women_672', 'women_673', 'women_674', 'women_675', 'women_676', 'women_677', 'women_678', 'women_679', 'women_680', 'women_681', 'women_682', 'women_683', 'women_684', 'women_685', 'women_686', 'women_687', 'women_688', 'women_689', 'women_690', 'women_691', 'women_692', 'women_693', 'women_694', 'women_695', 'women_696', 'women_697', 'women_698', 'women_699', 'women_700', 'women_701', 'women_702', 'women_703', 'women_704', 'women_705', 'women_706', 'women_707', 'women_708', 'women_709', 'women_710', 'women_711', 'women_712', 'women_713', 'women_714', 'women_715', 'women_716', 'women_717', 'women_718', 'women_719', 'women_720', 'women_721', 'women_722', 'women_723', 'women_724', 'women_725', 'women_726', 'women_727', 'women_728', 'women_729', 'women_730', 'women_731', 'women_732', 'women_733', 'women_734', 'women_735', 'women_736', 'women_737', 'women_738', 'women_739', 'women_740', 'women_741', 'women_742', 'women_743', 'women_744', 'women_745', 'women_746', 'women_747', 'women_748', 'women_749', 'women_750', 'women_751', 'women_752', 'women_753', 'women_754', 'women_755', 'women_756', 'women_757', 'women_758', 'women_759', 'women_760', 'women_761', 'women_762', 'women_763', 'women_764', 'women_765', 'women_766', 'women_767', 'women_768', 'women_769', 'women_770', 'women_771', 'women_772', 'women_773', 'women_774', 'women_775', 'women_776', 'women_777', 'women_778', 'women_779', 'women_780', 'women_781', 'women_782', 'women_783', 'women_784', 'women_785', 'women_786', 'women_787', 'women_788', 'women_789', 'women_790', 'women_791', 'women_792', 'women_793', 'women_794', 'women_795', 'women_796', 'women_797', 'women_798', 'women_799', 'women_800', 'women_801', 'women_802', 'women_803', 'women_804', 'women_805', 'women_806', 'women_807', 'women_808', 'women_809', 'women_810', 'women_811', 'women_812', 'women_813', 'women_814', 'women_815', 'women_816', 'women_817', 'women_818', 'women_819', 'women_820', 'women_821', 'women_822', 'women_823', 'women_824', 'women_825', 'women_826', 'women_827', 'women_828', 'women_829', 'women_830', 'women_831', 'women_832', 'women_833', 'women_834', 'women_835', 'women_836', 'women_837', 'women_838', 'women_839', 'women_840', 'women_841', 'women_842', 'women_843', 'women_844', 'women_845', 'women_846', 'women_847', 'women_848', 'women_849', 'women_850', 'women_851', 'women_852', 'women_853', 'women_854', 'women_855', 'women_856', 'women_857', 'women_858', 'women_859', 'women_860', 'women_861', 'women_862', 'women_863', 'women_864', 'women_865', 'women_866', 'women_867', 'women_868', 'women_869', 'women_870', 'women_871', 'women_872', 'women_873', 'women_874', 'women_875', 'women_876', 'women_877', 'women_878', 'women_879', 'women_880', 'women_881', 'women_882', 'women_883', 'women_884', 'women_885', 'women_886', 'women_887', 'women_888', 'women_889', 'women_890', 'women_891', 'women_892', 'women_893', 'women_894', 'women_895', 'women_896', 'women_897', 'women_898', 'women_899', 'women_900', 'women_901', 'women_902', 'women_903', 'women_904', 'women_905', 'women_906', 'women_907', 'women_908', 'women_909', 'women_910', 'women_911', 'women_912', 'women_913', 'women_914', 'women_915', 'women_916', 'women_917', 'women_918', 'women_919', 'women_920', 'women_921', 'women_922', 'women_923', 'women_924', 'women_925', 'women_926', 'women_927', 'women_928', 'women_929', 'women_930', 'women_931', 'women_932', 'women_933', 'women_934', 'women_935', 'women_936', 'women_937', 'women_938', 'women_939', 'women_940', 'women_941', 'women_942', 'women_943', 'women_944', 'women_945', 'women_946', 'women_947', 'women_948', 'women_949', 'women_950', 'women_951', 'women_952', 'women_953', 'women_954', 'women_955', 'women_956', 'women_957', 'women_958', 'women_959', 'women_960', 'women_961', 'women_962', 'women_963', 'women_964', 'women_965', 'women_966', 'women_967', 'women_968', 'women_969', 'women_970', 'women_971', 'women_972', 'women_973', 'women_974', 'women_975', 'women_976', 'women_977', 'women_978', 'women_979', 'women_980', 'women_981', 'women_982', 'women_983', 'women_984', 'women_985', 'women_986', 'women_987', 'women_988', 'women_989', 'women_990', 'women_991', 'women_992', 'women_993', 'women_994', 'women_995', 'women_996', 'women_997', 'women_998', 'women_999', 'women_1000', 'women_1001', 'women_1002', 'women_1003', 'women_1004', 'women_1005', 'women_1006', 'women_1007', 'women_1008', 'women_1009', 'women_1010', 'women_1011', 'women_1012', 'women_1013', 'women_1014', 'women_1015', 'women_1016', 'women_1017', 'women_1018', 'women_1019', 'women_1020', 'women_1021', 'women_1022', 'women_1023', 'women_1024', 'women_1025', 'women_1026', 'women_1027', 'women_1028', 'women_1029', 'women_1030', 'women_1031', 'women_1032', 'women_1033', 'women_1034', 'women_1035', 'women_1036', 'women_1037', 'women_1038', 'women_1039', 'women_1040', 'women_1041', 'women_1042', 'women_1043', 'women_1044', 'women_1045', 'women_1046', 'women_1047', 'women_1048', 'women_1049', 'women_1050', 'women_1051', 'women_1052', 'women_1053', 'women_1054', 'women_1055', 'women_1056', 'women_1057', 'women_1058', 'women_1059', 'women_1060', 'women_1061', 'women_1062', 'women_1063', 'women_1064', 'women_1065', 'women_1066', 'women_1067', 'women_1068', 'women_1069', 'women_1070', 'women_1071', 'women_1072', 'women_1073', 'women_1074', 'women_1075', 'women_1076', 'women_1077', 'women_1078', 'women_1079', 'women_1080', 'women_1081', 'women_1082', 'women_1083', 'women_1084', 'women_1085', 'women_1086', 'women_1087', 'women_1088', 'women_1089', 'women_1090', 'women_1091', 'women_1092', 'women_1093', 'women_1094', 'women_1095', 'women_1096', 'women_1097', 'women_1098', 'women_1099', 'women_1100', 'women_1101', 'women_1102', 'women_1103', 'women_1104', 'women_1105', 'women_1106', 'women_1107', 'women_1108', 'women_1109', 'women_1110', 'women_1111', 'women_1112', 'women_1113', 'women_1114', 'women_1115', 'women_1116', 'women_1117', 'women_1118', 'women_1119', 'women_1120', 'women_1121', 'women_1122', 'women_1123', 'women_1124', 'women_1125', 'women_1126', 'women_1127', 'women_1128', 'women_1129', 'women_1130', 'women_1131', 'women_1132', 'women_1133', 'women_1134', 'women_1135', 'women_1136', 'women_1137', 'women_1138', 'women_1139', 'women_1140', 'women_1141', 'women_1142', 'women_1143', 'women_1144', 'women_1145', 'women_1146', 'women_1147', 'women_1148', 'women_1149', 'women_1150', 'women_1151', 'women_1152', 'women_1153', 'women_1154', 'women_1155', 'women_1156', 'women_1157', 'women_1158', 'women_1159', 'women_1160', 'women_1161', 'women_1162', 'women_1163', 'women_1164', 'women_1165', 'women_1166', 'women_1167', 'women_1168', 'women_1169', 'women_1170', 'women_1171', 'women_1172', 'women_1173', 'women_1174', 'women_1175', 'women_1176', 'women_1177', 'women_1178', 'women_1179', 'women_1180', 'women_1181', 'women_1182', 'women_1183', 'women_1184', 'women_1185', 'women_1186', 'women_1187', 'women_1188', 'women_1189', 'women_1190', 'women_1191', 'women_1192', 'women_1193', 'women_1194', 'women_1195', 'women_1196', 'women_1197', 'women_1198', 'women_1199', 'women_1200', 'women_1201', 'women_1202', 'women_1203', 'women_1204', 'women_1205', 'women_1206', 'women_1207', 'women_1208', 'women_1209', 'women_1210', 'women_1211', 'women_1212', 'women_1213', 'women_1214', 'women_1215', 'women_1216', 'women_1217', 'women_1218', 'women_1219', 'women_1220', 'women_1221', 'women_1222', 'women_1223', 'women_1224', 'women_1225', 'women_1226', 'women_1227', 'women_1228', 'women_1229', 'women_1230', 'women_1231', 'women_1232', 'women_1233', 'women_1234', 'women_1235', 'women_1236', 'women_1237', 'women_1238', 'women_1239', 'women_1240', 'women_1241', 'women_1242', 'women_1243', 'women_1244', 'women_1245', 'women_1246', 'women_1247', 'women_1248', 'women_1249', 'women_1250', 'women_1251', 'women_1252', 'women_1253', 'women_1254', 'women_1255', 'women_1256', 'women_1257', 'women_1258', 'women_1259', 'women_1260', 'women_1261', 'women_1262', 'women_1263', 'women_1264', 'women_1265', 'women_1266', 'women_1267', 'women_1268', 'women_1269', 'women_1270', 'women_1271', 'women_1272', 'women_1273', 'women_1274', 'women_1275', 'women_1276', 'women_1277', 'women_1278', 'women_1279', 'women_1280', 'women_1281', 'women_1282', 'women_1283', 'women_1284', 'women_1285', 'women_1286', 'women_1287', 'women_1288', 'women_1289', 'women_1290', 'women_1291', 'women_1292', 'women_1293', 'women_1294', 'women_1295', 'women_1296', 'women_1297', 'women_1298', 'women_1299', 'women_1300', 'women_1301', 'women_1302', 'women_1303', 'women_1304', 'women_1305', 'women_1306', 'women_1307', 'women_1308', 'women_1309', 'women_1310', 'women_1311', 'women_1312', 'women_1313', 'women_1314', 'women_1315', 'women_1316', 'women_1317', 'women_1318', 'women_1319', 'women_1320', 'women_1321', 'women_1322', 'women_1323', 'women_1324', 'women_1325', 'women_1326', 'women_1327', 'women_1328', 'women_1329', 'women_1330', 'women_1331', 'women_1332', 'women_1333', 'women_1334', 'women_1335', 'women_1336', 'women_1337', 'women_1338', 'women_1339', 'women_1340', 'women_1341', 'women_1342', 'women_1343', 'women_1344', 'women_1345', 'women_1346', 'women_1347', 'women_1348', 'women_1349', 'women_1350', 'women_1351', 'women_1352', 'women_1353', 'women_1354', 'women_1355', 'women_1356', 'women_1357', 'women_1358', 'women_1359', 'women_1360', 'women_1361', 'women_1362', 'women_1363', 'women_1364', 'women_1365', 'women_1366', 'women_1367', 'women_1368', 'women_1369', 'women_1370', 'women_1371', 'women_1372', 'women_1373', 'women_1374', 'women_1375', 'women_1376', 'women_1377', 'women_1378', 'women_1379', 'women_1380', 'women_1381', 'women_1382', 'women_1383', 'women_1384', 'women_1385', 'women_1386', 'women_1387', 'women_1388', 'women_1389', 'women_1390', 'women_1391', 'women_1392', 'women_1393', 'women_1394', 'women_1395', 'women_1396', 'women_1397', 'women_1398', 'women_1399', 'women_1400', 'women_1401', 'women_1402', 'women_1403', 'women_1404', 'women_1405', 'women_1406', 'women_1407', 'women_1408', 'women_1409', 'women_1410', 'women_1411', 'women_1412', 'women_1413', 'women_1500', 'women_1501', 'women_1502', 'women_1503', 'women_1504', 'women_1505', 'women_1506', 'women_1507', 'women_1508', 'women_1509', 'women_1510', 'women_1511', 'women_1512', 'women_1513', 'women_1514', 'women_1515', 'women_1516', 'women_1517', 'women_1518', 'women_1519', 'women_1520', 'women_1521', 'women_1522', 'women_1523', 'women_1524', 'women_1525', 'women_1526', 'women_1527', 'women_1528', 'women_1529', 'women_1530', 'women_1531', 'women_1532', 'women_1533', 'women_1534', 'women_1535', 'women_1536', 'women_1537', 'women_1538', 'women_1539', 'women_1540', 'women_1541', 'women_1542', 'women_1543', 'women_1544', 'women_1545', 'women_1546', 'women_1547', 'women_1548', 'women_1549', 'women_1550', 'women_1551', 'women_1552', 'women_1553', 'women_1554', 'women_1555', 'women_1556', 'women_1557', 'women_1558', 'women_1559', 'women_1560', 'women_1561', 'women_1562', 'women_1563', 'women_1564', 'women_1565', 'women_1566', 'women_1567', 'women_1568', 'women_1569', 'women_1570', 'women_1571', 'women_1572', 'women_1573', 'women_1574', 'women_1575', 'women_1576', 'women_1577', 'women_1578', 'women_1579', 'women_1580', 'women_1581', 'women_1582', 'women_1583', 'women_1584', 'women_1585', 'women_1586', 'women_1587', 'women_1588', 'women_1589', 'women_1590', 'women_1591', 'women_1592', 'women_1593', 'women_1594', 'women_1595', 'women_1596', 'women_1597', 'women_1598', 'women_1599', 'women_1600', 'women_1601', 'women_1602', 'women_1603', 'women_1604', 'women_1605', 'women_1606', 'women_1607', 'women_1608', 'women_1609', 'women_1610', 'women_1611', 'women_1612', 'women_1613', 'women_1614', 'women_1615', 'women_1616', 'women_1617', 'women_1618', 'women_1619', 'women_1620', 'women_1621', 'women_1622', 'women_1623', 'women_1624', 'women_1625', 'women_1626', 'women_1627', 'women_1628', 'women_1629', 'women_1630', 'women_1631', 'women_1632', 'women_1633', 'women_1634', 'women_1635', 'women_1636', 'women_1637', 'women_1638', 'women_1639', 'women_1640', 'women_1641', 'women_1642', 'women_1643', 'women_1644', 'women_1645', 'women_1646', 'women_1647', 'women_1648', 'women_1649', 'women_1650', 'women_1651', 'women_1652', 'women_1653', 'women_1654', 'women_1655', 'women_1656', 'women_1657', 'women_1658', 'women_1659', 'women_1660', 'women_1661', 'women_1662', 'women_1663', 'women_1664', 'women_1665', 'women_1666', 'women_1667', 'women_1668', 'women_1669', 'women_1670', 'women_1671', 'women_1672', 'women_1673', 'women_1674', 'women_1675', 'women_1676', 'women_1677', 'women_1678', 'women_1679', 'women_1680', 'women_1681', 'women_1682', 'women_1683', 'women_1684', 'women_1685', 'women_1686', 'women_1687', 'women_1688', 'women_1689', 'women_1690', 'women_1691', 'women_1692', 'women_1693', 'women_1694', 'women_1695', 'women_1696', 'women_1697', 'women_1698', 'women_1699', 'women_1700', 'women_1701', 'women_1702', 'women_1703', 'women_1704', 'women_1705', 'women_1706', 'women_1707', 'women_1708', 'women_1709', 'women_1710', 'women_1711', 'women_1712', 'women_1713', 'women_1714', 'women_1715', 'women_1716', 'women_1717', 'women_1718', 'women_1719', 'women_1720', 'women_1721', 'women_1722', 'women_1723', 'women_1724', 'women_1725', 'women_1726', 'women_1727', 'women_1728', 'women_1729', 'women_1730', 'women_1731', 'women_1732', 'women_1733', 'women_1734', 'women_1735', 'women_1736', 'women_1737', 'women_1738', 'women_1739', 'women_1740', 'women_1741', 'women_1742', 'women_1743', 'women_1744', 'women_1745', 'women_1746', 'women_1747', 'women_1748', 'women_1749', 'women_1750', 'women_1751', 'women_1752', 'women_1753', 'women_1754', 'women_1755', 'women_1756', 'women_1757', 'women_1758', 'women_1759', 'women_1760', 'women_1761', 'women_1762', 'women_1763', 'women_1764', 'women_1765', 'women_1766', 'women_1767', 'women_1768', 'women_1769', 'women_1770', 'women_1771', 'women_1772', 'women_1773', 'women_1774', 'women_1775', 'women_1776', 'women_1777', 'women_1778', 'women_1779', 'women_1780', 'women_1781', 'women_1782', 'women_1783', 'women_1784', 'women_1785', 'women_1786', 'women_1787', 'women_1788', 'women_1789', 'women_1790', 'women_1791', 'women_1792', 'women_1793', 'women_1794', 'women_1795', 'women_1796', 'women_1797', 'women_1798', 'women_1799', 'women_1800', 'women_1801', 'women_1802', 'women_1803', 'women_1804', 'women_1805', 'women_1806', 'women_1807', 'women_1808', 'women_1809', 'women_1810', 'women_1811', 'women_1812', 'women_1813', 'women_1814', 'women_1815', 'women_1816', 'women_1817', 'women_1818', 'women_1819', 'women_1820', 'women_1821', 'women_1822', 'women_1823', 'women_1824', 'women_1825', 'women_1826', 'women_1827', 'women_1828', 'women_1829', 'women_1830', 'women_1831', 'women_1832', 'women_1833', 'women_1834', 'women_1835', 'women_1836', 'women_1837', 'women_1838', 'women_1839', 'women_1840', 'women_1841', 'women_1842', 'women_1843', 'women_1844', 'women_1845', 'women_1846', 'women_1847', 'women_1848', 'women_1849', 'women_1850', 'women_1851', 'women_1852', 'women_1853', 'women_1854', 'women_1855', 'women_1856', 'women_1857', 'women_1858', 'women_1859', 'women_1860', 'women_1861', 'women_1862', 'women_1863', 'women_1864', 'women_1865', 'women_1866', 'women_1867', 'women_1868', 'women_1869', 'women_1870', 'women_1871', 'women_1872', 'women_1873', 'women_1874', 'women_1875', 'women_1876', 'women_1877', 'women_1878', 'women_1879', 'women_1880', 'women_1881', 'women_1882', 'women_1883', 'women_1884', 'women_1885', 'women_1886', 'women_1887', 'women_1888', 'women_1889', 'women_1890', 'women_1891', 'women_1892', 'women_1893', 'women_1894', 'women_1895', 'women_1896', 'women_1897', 'women_1898', 'women_1899', 'women_1900', 'women_1901', 'women_1902', 'women_1903', 'women_1904', 'women_1905', 'women_1906', 'women_1907', 'women_1908', 'women_1909', 'women_1910', 'women_1911', 'women_1912', 'women_1913', 'women_1914', 'women_1915', 'women_1916', 'women_1917', 'women_1918', 'women_1919', 'women_1920', 'women_1921', 'women_1922', 'women_1923', 'women_1924', 'women_1925', 'women_1926', 'women_1927', 'women_1928', 'women_1929', 'women_1930', 'women_1931', 'women_1932', 'women_1933', 'women_1934', 'women_1935', 'women_1936', 'women_1937', 'women_1938', 'women_1939', 'women_1940', 'women_1941', 'women_1942', 'women_1943', 'women_1944', 'women_1945', 'women_1946', 'women_1947', 'women_1948', 'women_1949', 'women_1950', 'women_1951', 'women_1952', 'women_1953', 'women_1954', 'women_1955', 'women_1956', 'women_1957', 'women_1958', 'women_1959', 'women_1960', 'women_1961', 'women_1962', 'women_1963', 'women_1964', 'women_1965', 'women_1966', 'women_1967', 'women_1968', 'women_1969', 'women_1970', 'women_1971', 'women_1972', 'women_1973', 'women_1974', 'women_1975', 'women_1976', 'women_1977', 'women_1978', 'women_1979', 'women_1980', 'women_1981', 'women_1982', 'women_1983', 'women_1984', 'women_1985', 'women_1986', 'women_1987', 'women_1988', 'women_1989', 'women_1990', 'women_1991', 'women_1992', 'women_1993', 'women_1994', 'women_1995', 'women_1996', 'women_1997', 'women_1998', 'women_1999', 'women_2000', 'women_2001', 'women_2002', 'women_2003', 'women_2004', 'women_2005', 'women_2006', 'women_2007', 'women_2008', 'women_2009', 'women_2010', 'women_2011', 'women_2012', 'women_2013', 'women_2014', 'women_2015', 'women_2016', 'women_2017', 'women_2018', 'women_2019', 'women_2020', 'women_2021', 'women_2022', 'women_2023', 'women_2024', 'women_2025', 'women_2026', 'women_2027', 'women_2028', 'women_2029', 'women_2030', 'women_2031', 'women_2032', 'women_2033', 'women_2034', 'women_2035', 'women_2036', 'women_2037', 'women_2038', 'women_2039', 'women_2040', 'women_2041', 'women_2042', 'women_2043', 'women_2044', 'women_2045', 'women_2046', 'women_2047', 'women_2048', 'women_2049', 'women_2050', 'women_2051', 'women_2052', 'women_2053', 'women_2054', 'women_2055', 'women_2056', 'women_2057', 'women_2058', 'women_2059', 'women_2060', 'women_2061', 'women_2062', 'women_2063', 'women_2064', 'women_2065', 'women_2066', 'women_2067', 'women_2068', 'women_2069', 'women_2070', 'women_2071', 'women_2072', 'women_2073', 'women_2074', 'women_2075', 'women_2076', 'women_2077', 'women_2078', 'women_2079', 'women_2080', 'women_2081', 'women_2082', 'women_2083', 'women_2084', 'women_2085', 'women_2086', 'women_2087', 'women_2088', 'women_2089', 'women_2090', 'women_2091', 'women_2092', 'women_2093', 'women_2094', 'women_2095', 'women_2096', 'women_2097', 'women_2098', 'women_2099', 'women_2100', 'women_2101', 'women_2102', 'women_2103', 'women_2104', 'women_2105', 'women_2106', 'women_2107', 'women_2108', 'women_2109', 'women_2110', 'women_2111', 'women_2112', 'women_2113', 'women_2114', 'women_2115', 'women_2116', 'women_2117', 'women_2118', 'women_2119', 'women_2120', 'women_2121', 'women_2122', 'women_2123', 'women_2124', 'women_2125', 'women_2126', 'women_2127', 'women_2128', 'women_2129', 'women_2130', 'women_2131', 'women_2132', 'women_2133', 'women_2134', 'women_2135', 'women_2136', 'women_2137', 'women_2138', 'women_2139', 'women_2140', 'women_2141', 'women_2142', 'women_2143', 'women_2144', 'women_2145', 'women_2146', 'women_2147', 'women_2148', 'women_2149', 'women_2150', 'women_2151', 'women_2152', 'women_2153', 'women_2154', 'women_2155', 'women_2156', 'women_2157', 'women_2158', 'women_2159', 'women_2160', 'women_2161', 'women_2162', 'women_2163', 'women_2164', 'women_2165', 'women_2166', 'women_2167', 'women_2168', 'women_2169', 'women_2170', 'women_2171', 'women_2172', 'women_2173', 'women_2174', 'women_2175', 'women_2176', 'women_2177', 'women_2178', 'women_2179', 'women_2180', 'women_2181', 'women_2182', 'women_2183', 'women_2184', 'women_2185', 'women_2186', 'women_2187', 'women_2188', 'women_2189', 'women_2190', 'women_2191', 'women_2192', 'women_2193', 'women_2194', 'women_2195', 'women_2196', 'women_2197', 'women_2198', 'women_2199', 'women_2200', 'women_2201', 'women_2202', 'women_2203', 'women_2204', 'women_2205', 'women_2206', 'women_2207', 'women_2208', 'women_2209', 'women_2210', 'women_2211', 'women_2212', 'women_2213', 'women_2214', 'women_2215', 'women_2216', 'women_2217', 'women_2218', 'women_2219', 'women_2220', 'women_2221', 'women_2222', 'women_2223', 'women_2224', 'women_2225', 'women_2226', 'women_2227', 'women_2228', 'women_2229', 'women_2230', 'women_2231', 'women_2232', 'women_2233', 'women_2234', 'women_2235', 'women_2236', 'women_2237', 'women_2238', 'women_2239', 'women_2240', 'women_2241', 'women_2242', 'women_2243', 'women_2244', 'women_2245', 'women_2246', 'women_2247', 'women_2248', 'women_2249', 'women_2250', 'women_2251', 'women_2252', 'women_2253', 'women_2254', 'women_2255', 'women_2256', 'women_2257', 'women_2258', 'women_2259', 'women_2260', 'women_2261', 'women_2262', 'women_2263', 'women_2264', 'women_2265', 'women_2266', 'women_2267', 'women_2268', 'women_2269', 'women_2270', 'women_2271', 'women_2272', 'women_2273', 'women_2274', 'women_2275', 'women_2276', 'women_2277', 'women_2278', 'women_2279', 'women_2280', 'women_2281', 'women_2282', 'women_2283', 'women_2284', 'women_2285', 'women_2286', 'women_2287', 'women_2288', 'women_2289', 'women_2290', 'women_2291', 'women_2292', 'women_2293', 'women_2294', 'women_2295', 'women_2296', 'women_2297', 'women_2298', 'women_2299', 'women_2300', 'women_2301', 'women_2302', 'women_2303', 'women_2304', 'women_2305', 'women_2306', 'women_2307', 'women_2308', 'women_2309', 'women_2310', 'women_2311', 'women_2312', 'women_2313', 'women_2314', 'women_2315', 'women_2316', 'women_2317', 'women_2318', 'women_2319', 'women_2320', 'women_2321', 'women_2322', 'women_2323', 'women_2324', 'women_2325', 'women_2326', 'women_2327', 'women_2328', 'women_2329', 'women_2330', 'women_2331', 'women_2332', 'women_2333', 'women_2334', 'women_2335', 'women_2336', 'women_2337', 'women_2338', 'women_2339', 'women_2340', 'women_2341', 'women_2342', 'women_2343', 'women_2344', 'women_2345', 'women_2346', 'women_2347', 'women_2348', 'women_2349', 'women_2350', 'women_2351', 'women_2352', 'women_2353', 'women_2354', 'women_2355', 'women_2356', 'women_2357', 'women_2358', 'women_2359', 'women_2360', 'women_2361', 'women_2362', 'women_2363', 'women_2364', 'women_2365', 'women_2366', 'women_2367', 'women_2368', 'women_2369', 'women_2370', 'women_2371', 'women_2372', 'women_2373', 'women_2374', 'women_2375', 'women_2376', 'women_2377', 'women_2378', 'women_2379', 'women_2380', 'women_2381', 'women_2382', 'women_2383', 'women_2384', 'women_2385', 'women_2386', 'women_2387', 'women_2388', 'women_2389', 'women_2390', 'women_2391', 'women_2392', 'women_2393', 'women_2394', 'women_2395', 'women_2396', 'women_2397', 'women_2398', 'women_2399', 'women_2400', 'women_2401', 'women_2402', 'women_2403', 'women_2404', 'women_2405', 'women_2406', 'women_2407', 'women_2408', 'women_2409', 'women_2410', 'women_2411', 'women_2412', 'women_2413', 'women_2414', 'women_2415', 'women_2416', 'women_2417', 'women_2418', 'women_2419', 'women_2420', 'women_2421', 'women_2422', 'women_2423', 'women_2424', 'women_2425', 'women_2426', 'women_2427', 'women_2428', 'women_2429', 'women_2430', 'women_2431', 'women_2432', 'women_2433', 'women_2434', 'women_2435', 'women_2436', 'women_2437', 'women_2438', 'women_2439', 'women_2440', 'women_2441', 'women_2442', 'women_2443', 'women_2444', 'women_2445', 'women_2446', 'women_2447', 'women_2448', 'women_2449', 'women_2450', 'women_2451', 'women_2452', 'women_2453', 'women_2454', 'women_2455', 'women_2456', 'women_2457', 'women_2458', 'women_2459', 'women_2460', 'women_2461', 'women_2462', 'women_2463', 'women_2464', 'women_2465', 'women_2466', 'women_2467', 'women_2468', 'women_2469', 'women_2470', 'women_2471', 'women_2472', 'women_2473', 'women_2474', 'women_2475', 'women_2476', 'women_2477', 'women_2478', 'women_2479', 'women_2480', 'women_2481', 'women_2482', 'women_2483', 'women_2484', 'women_2485', 'women_2486', 'women_2487', 'women_2488', 'women_2489', 'women_2490', 'women_2491', 'women_2492', 'women_2493', 'women_2494', 'women_2495', 'women_2496', 'women_2497', 'women_2498', 'women_2499', 'women_2500', 'women_2501', 'women_2502', 'women_2503', 'women_2504', 'women_2505', 'women_2506', 'women_2507', 'women_2508', 'women_2509', 'women_2510', 'women_2511', 'women_2512', 'women_2513', 'women_2514', 'women_2515', 'women_2516', 'women_2517', 'women_2518', 'women_2519', 'women_2520', 'women_2521', 'women_2522', 'women_2523', 'women_2524', 'women_2525', 'women_2526', 'women_2527', 'women_2528', 'women_2529', 'women_2530', 'women_2531', 'women_2532', 'women_2533', 'women_2534', 'women_2535', 'women_2536', 'women_2537', 'women_2538', 'women_2539', 'women_2540', 'women_2541', 'women_2542', 'women_2543', 'women_2544', 'women_2545', 'women_2546', 'women_2547', 'women_2548', 'women_2549', 'women_2550', 'women_2551', 'women_2552', 'women_2553', 'women_2554', 'women_2555', 'women_2556', 'women_2557', 'women_2558', 'women_2559', 'women_2560', 'women_2561', 'women_2562', 'women_2563', 'women_2564', 'women_2565', 'women_2566', 'women_2567', 'women_2568', 'women_2569', 'women_2570', 'women_2571', 'women_2572', 'women_2573', 'women_2574', 'women_2575', 'women_2576', 'women_2577', 'women_2578', 'women_2579', 'women_2580', 'women_2581', 'women_2582', 'women_2583', 'women_2584', 'women_2585', 'women_2586', 'women_2587', 'women_2588', 'women_2589', 'women_2590', 'women_2591', 'women_2592', 'women_2593', 'women_2594', 'women_2595', 'women_2596', 'women_2597', 'women_2598', 'women_2599', 'women_2600', 'women_2601', 'women_2602', 'women_2603', 'women_2604', 'women_2605', 'women_2606', 'women_2607', 'women_2608', 'women_2609', 'women_2610', 'women_2611', 'women_2612', 'women_2613', 'women_2614', 'women_2615', 'women_2616', 'women_2617', 'women_2618', 'women_2619', 'women_2620', 'women_2621', 'women_2622', 'women_2623', 'women_2624', 'women_2625', 'women_2626', 'women_2627', 'women_2628', 'women_2629', 'women_2630', 'women_2631']; - -export default availableFields; \ No newline at end of file diff --git a/experiments/vector_tiles/to_deploy/src/main.js b/experiments/vector_tiles/to_deploy/src/main.js deleted file mode 100644 index 3844c5f..0000000 --- a/experiments/vector_tiles/to_deploy/src/main.js +++ /dev/null @@ -1,452 +0,0 @@ -import maplibregl from 'maplibre-gl'; -import * as ss from 'simple-statistics'; -import PeliasGeocoder from './pelias-geocoder'; - -// 2021 Census of Population characteristics -import availableFields from './fields' - -let currentField = 'total_1'; -let currentClassification = null; -let mapLoaded = false; -let hoveredFeatureId = null; - -// Get field from URL parameters -function getFieldFromURL() { - const urlParams = new URLSearchParams(window.location.search); - const fieldParam = urlParams.get('field'); - if (fieldParam && availableFields.includes(fieldParam)) { - return fieldParam; - } - return 'total_1'; // default -} - -// Update URL with current field -function updateURL(field) { - const url = new URL(window.location); - url.searchParams.set('field', field); - window.history.replaceState({}, '', url); -} - -// Initialize field from URL -currentField = getFieldFromURL(); -document.getElementById('currentField').textContent = `Current field: ${currentField}`; - -const map = new maplibregl.Map({ - container: 'map', - style: "https://tiles.openfreemap.org/styles/liberty", - zoom: 10, - center: [-75.695000, 45.424721], - hash: true, - maxZoom: 18, - attributionControl: false, - dragRotate: false, - keyboard: false, - pitchWithRotate: false -}); - -map.on('style.load', () => { - map.setProjection({ - type: 'globe', - }); -}); - -map.on('load', () => { - mapLoaded = true; - - map.addSource('my-vector-tiles', { - type: 'vector', - tiles: ['https://tiles.diegoripley.ca/files/census_of_population_vector_tiles_subset_august_12_2025/da_2021_cop/{z}/{x}/{y}.mvt'], - minzoom: 8, - maxzoom: 14, - promoteId: 'da_dguid' // Promote DGUID to feature id for hover state - }); - - // Add controls - map.addControl(new maplibregl.FullscreenControl(), 'top-left'); - - // Add Pelias Geocoder - const geocoder = new PeliasGeocoder({ - params: { - 'boundary.country': 'CAN', - 'boundary.rect.min_lat': 40, - 'boundary.rect.max_lat': 60, - 'boundary.rect.min_lon': -140, - 'boundary.rect.max_lon': -50 - }, - flyTo: { - duration: 100, - curve: 1.5 - }, - marker: { - icon: 'marker', - color: '#FF0000' - }, - placeholder: 'Search for places...' - }); - map.addControl(geocoder, 'top-left'); - - // Disable rotation - map.touchZoomRotate.disableRotation(); - - // Add main visualization layer - map.addLayer({ - 'id': 'my-layer', - 'type': 'fill', - 'source': 'my-vector-tiles', - 'source-layer': 'da_2021_cop', - 'paint': { - 'fill-color': '#cccccc', - 'fill-opacity': [ - 'case', - ['boolean', ['feature-state', 'hover'], false], - 0, - 0.7 - ] - } - }); - - // Add hover outline layer - map.addLayer({ - 'id': 'my-layer-hover', - 'type': 'line', - 'source': 'my-vector-tiles', - 'source-layer': 'da_2021_cop', - 'paint': { - 'line-color': '#ff0000', - 'line-width': [ - 'case', - ['boolean', ['feature-state', 'hover'], false], - 3, - 0 - ], - 'line-dasharray': [2, 2], - 'line-opacity': [ - 'case', - ['boolean', ['feature-state', 'hover'], false], - 1, - 0 - ] - }, - 'layout': { - 'line-cap': 'round', - 'line-join': 'round' - } - }); - - // Add static outline layer (always visible) - map.addLayer({ - 'id': 'my-layer-outline', - 'type': 'line', - 'source': 'my-vector-tiles', - 'source-layer': 'da_2021_cop', - 'paint': { - 'line-color': '#000', - 'line-width': 0.5, - 'line-opacity': 0.5 - } - }); - - // Use CKMeans by default - const actualFieldName = `count_${currentField}`; - addVisualizationLayerWithCKMeans(actualFieldName); - - // Set up hover effects - setupHoverEffects(); -}); - -function setupHoverEffects() { - // Mouse move handler for hover state - map.on('mousemove', 'my-layer', (e) => { - if (e.features.length > 0) { - // Remove previous hover state - if (hoveredFeatureId !== null) { - map.setFeatureState( - { source: 'my-vector-tiles', sourceLayer: 'da_2021_cop', id: hoveredFeatureId }, - { hover: false } - ); - } - - // Set new hover state - hoveredFeatureId = e.features[0].properties.da_dguid; - if (hoveredFeatureId) { - map.setFeatureState( - { source: 'my-vector-tiles', sourceLayer: 'da_2021_cop', id: hoveredFeatureId }, - { hover: true } - ); - } - - map.getCanvas().style.cursor = 'pointer'; - } - }); - - // Mouse leave handler - map.on('mouseleave', 'my-layer', () => { - if (hoveredFeatureId !== null) { - map.setFeatureState( - { source: 'my-vector-tiles', sourceLayer: 'da_2021_cop', id: hoveredFeatureId }, - { hover: false } - ); - hoveredFeatureId = null; - } - map.getCanvas().style.cursor = ''; - }); -} - -// Search functionality -const searchInput = document.getElementById('fieldSearch'); -const searchResults = document.getElementById('searchResults'); -const currentFieldDiv = document.getElementById('currentField'); -const recalculateBtn = document.getElementById('recalculateBtn'); -const classificationInfo = document.getElementById('classificationInfo'); - -searchInput.addEventListener('input', (e) => { - const query = e.target.value.toLowerCase(); - - if (query.length === 0) { - searchResults.style.display = 'none'; - return; - } - - const filtered = availableFields.filter(field => - field.toLowerCase().includes(query) - ).slice(0, 5); - - if (filtered.length === 0) { - searchResults.innerHTML = '
No fields found
'; - } else { - searchResults.innerHTML = filtered.map(field => - `
${field}
` - ).join(''); - } - - searchResults.style.display = 'block'; -}); - -searchResults.addEventListener('click', (e) => { - if (e.target.classList.contains('search-item')) { - const selectedField = e.target.getAttribute('data-field'); - if (selectedField && selectedField !== currentField) { - currentField = selectedField; - currentFieldDiv.textContent = `Current field: ${currentField}`; - searchInput.value = ''; - searchResults.style.display = 'none'; - - updateURL(currentField); - addVisualizationLayerWithCKMeans(currentField); - } - } -}); - -document.addEventListener('click', (e) => { - if (!e.target.closest('.search-container')) { - searchResults.style.display = 'none'; - } -}); - -recalculateBtn.addEventListener('click', () => { - recalculateClassesFromExtent(); -}); - -function calculateCKMeansBreaks(features, field, numClasses = 5) { - const values = features - .map(f => f.properties[field]) - .filter(v => v !== null && v !== undefined && !isNaN(v)); - - if (values.length === 0) return null; - - const uniqueValues = [...new Set(values)].sort((a, b) => a - b); - const actualNumClasses = Math.min(numClasses, uniqueValues.length); - - if (actualNumClasses === 1) { - return { - breaks: [uniqueValues[0], uniqueValues[0]], - colors: ['#ff0000'], - method: 'single-value', - numClasses: 1 - }; - } - - try { - const clusters = ss.ckmeans(values, actualNumClasses); - const breaks = []; - - for (let i = 0; i < clusters.length; i++) { - if (i === 0) { - breaks.push(Math.min(...clusters[i])); - } - breaks.push(Math.max(...clusters[i])); - } - - const colors = generateColors(actualNumClasses); - - return { - breaks: breaks, - colors: colors, - method: 'ckmeans', - numClasses: actualNumClasses, - clusters: clusters.length - }; - - } catch (error) { - console.warn('CKMeans failed, falling back to quantile classification:', error); - return calculateQuantileBreaks(values, actualNumClasses); - } -} - -function calculateQuantileBreaks(values, numClasses) { - const sortedValues = [...values].sort((a, b) => a - b); - const breaks = []; - const colors = generateColors(numClasses); - - for (let i = 0; i <= numClasses; i++) { - const quantile = i / numClasses; - const index = Math.floor(quantile * (sortedValues.length - 1)); - breaks.push(sortedValues[index]); - } - - return { - breaks: breaks, - colors: colors, - method: 'quantile-fallback', - numClasses: numClasses - }; -} - -function generateColors(numClasses) { - const colors = []; - for (let i = 0; i < numClasses; i++) { - const intensity = (i + 1) / numClasses; - const red = Math.round(255); - const green = Math.round(255 * (1 - intensity)); - const blue = Math.round(255 * (1 - intensity)); - colors.push(`rgb(${red}, ${green}, ${blue})`); - } - return colors; -} - -function addVisualizationLayerWithCKMeans(field) { - if (!mapLoaded) return; - - // Update temporary color - map.setPaintProperty('my-layer', 'fill-color', '#cccccc'); - - updateClassificationInfo('Loading CKMeans...', 'calculating optimal classes'); - - setTimeout(() => { - recalculateClassesFromExtent(); - }, 500); -} - -function recalculateClassesFromExtent() { - if (!mapLoaded) return; - - const features = map.queryRenderedFeatures({ layers: ['my-layer'] }); - - if (features.length > 0) { - console.log(`Calculating CKMeans classification for ${features.length} features`); - const actualFieldName = `count_${currentField}`; - const classification = calculateCKMeansBreaks(features, actualFieldName, 5); - - if (classification) { - currentClassification = classification; - - const paintExpression = ['case']; - - for (let i = 0; i < classification.breaks.length - 1; i++) { - const lowerBound = classification.breaks[i]; - const upperBound = classification.breaks[i + 1]; - - if (i === 0) { - paintExpression.push(['<=', ['get', actualFieldName], upperBound]); - } else { - paintExpression.push([ - 'all', - ['>', ['get', actualFieldName], lowerBound], - ['<=', ['get', actualFieldName], upperBound] - ]); - } - paintExpression.push(classification.colors[i]); - } - - paintExpression.push('#cccccc'); - - map.setPaintProperty('my-layer', 'fill-color', paintExpression); - updateLegend(currentField, classification.breaks, classification.colors); - updateClassificationInfo( - `${classification.method} (${classification.numClasses} classes)`, - `${features.length} features analyzed` - ); - - console.log('Classification applied:', classification); - } - } else { - console.log('No features in current view, trying to get data for initial classification...'); - updateClassificationInfo('CKMeans (5 classes)', 'Pan/zoom to data areas for classification'); - } -} - -function updateLegend(field, breaks, colors) { - const legendContent = document.getElementById('legendContent'); - let legendHTML = ''; - - for (let i = 0; i < colors.length && i < breaks.length - 1; i++) { - const rangeStart = breaks[i]; - const rangeEnd = breaks[i + 1]; - - let label; - if (i === 0) { - label = `≤ ${rangeEnd.toFixed(0)}`; - } else { - label = `${rangeStart.toFixed(0)} - ${rangeEnd.toFixed(0)}`; - } - - legendHTML += ` -
-
- ${label} -
- `; - } - - legendContent.innerHTML = legendHTML; -} - -function updateClassificationInfo(method, details) { - classificationInfo.innerHTML = `Classification: ${method}
${details}`; -} - -window.addEventListener('popstate', (e) => { - const newField = getFieldFromURL(); - if (newField !== currentField && availableFields.includes(newField)) { - currentField = newField; - document.getElementById('currentField').textContent = `Current field: ${currentField}`; - addVisualizationLayerWithCKMeans(currentField); - } -}); - -map.on('click', 'my-layer', (e) => { - if (e.features.length > 0) { - const feature = e.features[0]; - const properties = feature.properties; - console.log(`Field: ${currentField}, Value: ${properties[`count_${currentField}`]}`); - console.log('DGUID:', properties.da_dguid); - - const clickLatLong = e.lngLat.wrap(); - const googleMapsURL = `https://www.google.ca/maps/@${clickLatLong.lat},${clickLatLong.lng},17z`; - const openstreetmapURL = `https://www.openstreetmap.org/#map=17/${clickLatLong.lat}/${clickLatLong.lng}`; - const bingURL = `https://www.bing.com/maps?FORM=Z9LH2&cp=${clickLatLong.lat}%7E${clickLatLong.lng}&lvl=16.0`; - - new maplibregl.Popup() - .setLngLat(e.lngLat) - .setHTML(` -
- ${currentField}: ${properties[`count_${currentField}`]}
- DGUID: ${properties.da_dguid}
- Google Maps: Open
- OpenStreetMap: Open
- Bing: Open -
- `) - .addTo(map); - } -}); \ No newline at end of file diff --git a/experiments/vector_tiles/to_deploy/src/pelias-geocoder.js b/experiments/vector_tiles/to_deploy/src/pelias-geocoder.js deleted file mode 100644 index 6c0e14d..0000000 --- a/experiments/vector_tiles/to_deploy/src/pelias-geocoder.js +++ /dev/null @@ -1,313 +0,0 @@ -/** - * Pelias Geocoder for MapLibre GL JS - * Adapted from pelias-mapbox-gl-js for MapLibre compatibility - */ - -import maplibregl from 'maplibre-gl'; - -class PeliasGeocoder { - constructor(options = {}) { - this.options = { - url: options.url || 'https://geocoder.alpha.phac.gc.ca/api/v1', - apiKey: options.apiKey || '', - params: options.params || {}, - flyTo: options.flyTo === false ? false : (options.flyTo || {}), - wof: options.wof === false ? false : true, - marker: options.marker === false ? false : (options.marker || {}), - placeholder: options.placeholder || 'Search', - minLength: options.minLength || 3, - limit: options.limit || 5, - customAttribution: options.customAttribution || null - }; - - this.marker = null; - this.results = []; - this.selectedIndex = -1; - this.lastQuery = ''; - this.searchTimeout = null; - } - - onAdd(map) { - this.map = map; - this.container = document.createElement('div'); - this.container.className = 'maplibregl-ctrl pelias-ctrl'; - - // Create input - this.input = document.createElement('input'); - this.input.type = 'text'; - this.input.className = 'pelias-ctrl-input'; - this.input.placeholder = this.options.placeholder; - - // Create clear button - this.clearBtn = document.createElement('button'); - this.clearBtn.className = 'pelias-ctrl-clear'; - this.clearBtn.innerHTML = '×'; - this.clearBtn.style.display = 'none'; - - // Create results container - this.resultsContainer = document.createElement('div'); - this.resultsContainer.className = 'pelias-ctrl-results'; - - // Assemble the control - this.container.appendChild(this.input); - this.container.appendChild(this.clearBtn); - this.container.appendChild(this.resultsContainer); - - // Set up event listeners - this.setupEventListeners(); - - return this.container; - } - - onRemove() { - if (this.marker) { - this.marker.remove(); - } - this.container.parentNode.removeChild(this.container); - this.map = undefined; - } - - setupEventListeners() { - // Input events - this.input.addEventListener('input', (e) => { - const query = e.target.value; - - if (query.length >= this.options.minLength) { - this.clearBtn.style.display = 'block'; - clearTimeout(this.searchTimeout); - this.searchTimeout = setTimeout(() => { - this.search(query); - }, 300); - } else { - this.clearBtn.style.display = 'none'; - this.clearResults(); - } - }); - - // Keyboard navigation - this.input.addEventListener('keydown', (e) => { - if (!this.results.length) return; - - switch(e.key) { - case 'ArrowDown': - e.preventDefault(); - this.selectResult(Math.min(this.selectedIndex + 1, this.results.length - 1)); - break; - case 'ArrowUp': - e.preventDefault(); - this.selectResult(Math.max(this.selectedIndex - 1, -1)); - break; - case 'Enter': - e.preventDefault(); - if (this.selectedIndex >= 0) { - this.chooseResult(this.results[this.selectedIndex]); - } - break; - case 'Escape': - this.clearResults(); - this.input.blur(); - break; - } - }); - - // Clear button - this.clearBtn.addEventListener('click', () => { - this.input.value = ''; - this.clearBtn.style.display = 'none'; - this.clearResults(); - if (this.marker) { - this.marker.remove(); - this.marker = null; - } - this.input.focus(); - }); - - // Click outside to close - document.addEventListener('click', (e) => { - if (!this.container.contains(e.target)) { - this.clearResults(); - } - }); - } - - async search(query) { - if (query === this.lastQuery) return; - this.lastQuery = query; - - const params = new URLSearchParams({ - text: query, - size: this.options.limit, - ...this.options.params - }); - - if (this.options.apiKey) { - params.append('api_key', this.options.apiKey); - } - - // Add focus point if map has a center - if (this.map) { - const center = this.map.getCenter(); - params.append('focus.point.lat', center.lat); - params.append('focus.point.lon', center.lng); - } - - try { - const response = await fetch(`${this.options.url}/search?${params}`); - const data = await response.json(); - - if (data.features) { - this.results = data.features; - this.displayResults(); - } - } catch (error) { - console.error('Geocoding error:', error); - this.showError('Search failed. Please try again.'); - } - } - - displayResults() { - this.resultsContainer.innerHTML = ''; - this.selectedIndex = -1; - - if (this.results.length === 0) { - const noResults = document.createElement('div'); - noResults.className = 'pelias-ctrl-result'; - noResults.textContent = 'No results found'; - this.resultsContainer.appendChild(noResults); - } else { - this.results.forEach((result, index) => { - const item = document.createElement('div'); - item.className = 'pelias-ctrl-result'; - - const name = document.createElement('div'); - name.className = 'pelias-ctrl-result-name'; - name.textContent = result.properties.name || result.properties.label; - - const address = document.createElement('div'); - address.className = 'pelias-ctrl-result-address'; - - // Build address from properties - const parts = []; - if (result.properties.locality) parts.push(result.properties.locality); - if (result.properties.region) parts.push(result.properties.region); - if (result.properties.country) parts.push(result.properties.country); - address.textContent = parts.join(', '); - - item.appendChild(name); - if (address.textContent) { - item.appendChild(address); - } - - item.addEventListener('click', () => { - this.chooseResult(result); - }); - - item.addEventListener('mouseenter', () => { - this.selectResult(index); - }); - - this.resultsContainer.appendChild(item); - }); - } - - this.resultsContainer.classList.add('active'); - } - - selectResult(index) { - // Remove previous selection - const items = this.resultsContainer.querySelectorAll('.pelias-ctrl-result'); - items.forEach((item, i) => { - if (i === index) { - item.classList.add('active'); - } else { - item.classList.remove('active'); - } - }); - this.selectedIndex = index; - } - - chooseResult(result) { - // Update input - this.input.value = result.properties.label || result.properties.name; - - // Clear results - this.clearResults(); - - // Get coordinates - const coords = result.geometry.coordinates; - - // Fly to location - if (this.options.flyTo !== false && this.map) { - const flyOptions = { - center: coords, - zoom: 16, - ...this.options.flyTo - }; - this.map.flyTo(flyOptions); - } - - // Add/update marker - if (this.options.marker !== false && this.map) { - if (this.marker) { - this.marker.setLngLat(coords); - } else { - const markerOptions = { - color: '#FF0000', - ...this.options.marker - }; - this.marker = new maplibregl.Marker(markerOptions) - .setLngLat(coords) - .addTo(this.map); - } - } - - // Trigger custom event - this.container.dispatchEvent(new CustomEvent('select', { - detail: result - })); - } - - clearResults() { - this.resultsContainer.innerHTML = ''; - this.resultsContainer.classList.remove('active'); - this.results = []; - this.selectedIndex = -1; - } - - showError(message) { - this.resultsContainer.innerHTML = ''; - const error = document.createElement('div'); - error.className = 'pelias-ctrl-error'; - error.textContent = message; - this.resultsContainer.appendChild(error); - this.resultsContainer.classList.add('active'); - } - - // Public methods - setQuery(query) { - this.input.value = query; - if (query.length >= this.options.minLength) { - this.search(query); - } - } - - clear() { - this.input.value = ''; - this.clearBtn.style.display = 'none'; - this.clearResults(); - if (this.marker) { - this.marker.remove(); - this.marker = null; - } - } - - focus() { - this.input.focus(); - } - - blur() { - this.input.blur(); - } -} - -export default PeliasGeocoder; \ No newline at end of file diff --git a/experiments/vector_tiles/to_deploy/src/styles.css b/experiments/vector_tiles/to_deploy/src/styles.css deleted file mode 100644 index 4116c5d..0000000 --- a/experiments/vector_tiles/to_deploy/src/styles.css +++ /dev/null @@ -1,256 +0,0 @@ -@import 'maplibre-gl/dist/maplibre-gl.css'; - -body { - margin: 0; - padding: 0; - font-family: Arial, sans-serif; -} - -html, -body, -#map { - height: 100%; -} - -.search-container { - position: absolute; - top: 10px; - right: 10px; - z-index: 1000; - background: white; - border-radius: 8px; - box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); - width: 300px; -} - -.search-input { - width: 100%; - padding: 12px; - border: none; - border-radius: 8px; - font-size: 14px; - outline: none; - box-sizing: border-box; -} - -.search-results { - max-height: 200px; - overflow-y: auto; - border-top: 1px solid #eee; - display: none; -} - -.search-item { - padding: 10px 12px; - cursor: pointer; - border-bottom: 1px solid #f5f5f5; - font-size: 13px; -} - -.search-item:hover { - background-color: #f0f0f0; -} - -.search-item:last-child { - border-bottom: none; -} - -.recalculate-btn { - position: absolute; - bottom: 10px; - left: 10px; - z-index: 1000; - background: #007cbf; - color: white; - border: none; - padding: 10px 15px; - border-radius: 6px; - font-size: 12px; - cursor: pointer; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); -} - -.recalculate-btn:hover { - background: #005a87; -} - -.current-field { - position: absolute; - top: 70px; - right: 10px; - z-index: 1000; - background: rgba(255, 255, 255, 0.95); - padding: 8px 12px; - border-radius: 6px; - font-size: 12px; - color: #333; - max-width: 300px; - word-break: break-word; -} - -.legend { - position: absolute; - bottom: 20px; - right: 10px; - z-index: 1000; - background: rgba(255, 255, 255, 0.95); - border-radius: 6px; - padding: 12px; - font-size: 12px; - min-width: 120px; -} - -.legend-title { - font-weight: bold; - margin-bottom: 8px; -} - -.legend-item { - display: flex; - align-items: center; - margin-bottom: 4px; -} - -.legend-color { - width: 16px; - height: 16px; - margin-right: 8px; - border: 1px solid #ccc; -} - -.classification-info { - position: absolute; - bottom: 50px; - left: 10px; - z-index: 1000; - background: rgba(255, 255, 255, 0.95); - padding: 8px 12px; - border-radius: 6px; - font-size: 11px; - color: #666; - max-width: 200px; -} - -/* Pelias Geocoder Styles - Adapted for MapLibre */ -.pelias-ctrl { - position: relative; - display: inline-block; - background: #fff; - border-radius: 3px; - box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); - min-width: 200px; - max-width: 360px; -} - -.pelias-ctrl-input { - width: 100%; - border: 0; - font-size: 12px; - line-height: 1.67; - padding: 8px 32px 8px 8px; - text-overflow: ellipsis; - background: transparent; - outline: none; - box-sizing: border-box; -} - -.pelias-ctrl-input::-webkit-input-placeholder { - color: #9b9b9b; -} - -.pelias-ctrl-input::-moz-placeholder { - color: #9b9b9b; -} - -.pelias-ctrl-input:-ms-input-placeholder { - color: #9b9b9b; -} - -.pelias-ctrl-input:-moz-placeholder { - color: #9b9b9b; -} - -.pelias-ctrl-results { - position: absolute; - top: 100%; - left: 0; - right: 0; - background: #fff; - border-top: 1px solid #eee; - border-radius: 0 0 3px 3px; - box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); - z-index: 1000; - max-height: 200px; - overflow-y: auto; - display: none; -} - -.pelias-ctrl-results.active { - display: block; -} - -.pelias-ctrl-result { - padding: 8px; - cursor: pointer; - border-bottom: 1px solid #eee; - font-size: 12px; - line-height: 1.4; -} - -.pelias-ctrl-result:last-child { - border-bottom: none; -} - -.pelias-ctrl-result:hover, -.pelias-ctrl-result.active { - background: #f8f8f8; -} - -.pelias-ctrl-result-name { - font-weight: bold; - margin-bottom: 2px; -} - -.pelias-ctrl-result-address { - color: #666; -} - -.pelias-ctrl-clear { - position: absolute; - right: 8px; - top: 50%; - transform: translateY(-50%); - background: none; - border: none; - cursor: pointer; - font-size: 16px; - color: #999; - padding: 0; - width: 20px; - height: 20px; - display: none; -} - -.pelias-ctrl-clear:hover { - color: #333; -} - -.pelias-ctrl-clear.active { - display: block; -} - -.pelias-ctrl-error { - padding: 8px; - color: #d00; - font-size: 11px; - border-top: 1px solid #eee; -} - -/* MapLibre Control positioning */ -.maplibregl-ctrl-top-right .pelias-ctrl { - margin: 10px 10px 0 0; -} - -.maplibregl-ctrl-top-left .pelias-ctrl { - margin: 10px 0 0 10px; -} \ No newline at end of file diff --git a/experiments/vector_tiles/to_deploy/upload.sh b/experiments/vector_tiles/to_deploy/upload.sh deleted file mode 100644 index bdf4e45..0000000 --- a/experiments/vector_tiles/to_deploy/upload.sh +++ /dev/null @@ -1 +0,0 @@ -rclone --progress copy dist/ cloudflare:/diegoripley-www/files/census_of_population_vector_tiles_subset_august_12_2025/ diff --git a/experiments/vector_tiles/to_deploy/vite.config.js b/experiments/vector_tiles/to_deploy/vite.config.js deleted file mode 100644 index 1965297..0000000 --- a/experiments/vector_tiles/to_deploy/vite.config.js +++ /dev/null @@ -1,23 +0,0 @@ -import { defineConfig } from 'vite' - -export default defineConfig({ - base: './', - build: { - outDir: 'dist', - assetsDir: 'assets', - sourcemap: true, - rollupOptions: { - output: { - manualChunks: { - 'maplibre': ['maplibre-gl'], - 'statistics': ['simple-statistics'] - } - } - } - }, - server: { - port: 3000, - host: "0.0.0.0", - open: true - } -}) \ No newline at end of file