├── sample.env
├── app
├── www
│ ├── How_19andMe_Works.png
│ ├── MathematicaLogo_White.png
│ └── MathematicaLogo_White_smaller.png
├── app.js
├── google-analytics.html
├── style.css
├── server.R
├── global.R
├── ui.R
├── functions.R
└── info_html.R
├── docker-compose.yml
├── HISTORY.md
├── Dockerfile
├── .gitignore
├── LICENSE
├── _deploy_buildspec.yaml
├── web.Dockerfile
├── README.md
├── aws-infrastructure
└── codepipeline_setup_all_ecs_resources.yaml
└── data
└── county_pop.csv
/sample.env:
--------------------------------------------------------------------------------
1 | PASSWORD=mystrongpassword
--------------------------------------------------------------------------------
/app/www/How_19andMe_Works.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathematica-mpr/covid_risk_score/HEAD/app/www/How_19andMe_Works.png
--------------------------------------------------------------------------------
/app/www/MathematicaLogo_White.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathematica-mpr/covid_risk_score/HEAD/app/www/MathematicaLogo_White.png
--------------------------------------------------------------------------------
/app/www/MathematicaLogo_White_smaller.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/mathematica-mpr/covid_risk_score/HEAD/app/www/MathematicaLogo_White_smaller.png
--------------------------------------------------------------------------------
/app/app.js:
--------------------------------------------------------------------------------
1 | $(document).ready(function() {
2 |
3 | Shiny.addCustomMessageHandler('update_label', function(msg) {
4 |
5 | var selector = 'label[for=' + msg.id + ']';
6 | $(selector).html(msg.html);
7 |
8 | })
9 |
10 | })
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '3'
2 | services:
3 | rstudio:
4 | environment:
5 | # - ADD=SHINY
6 | - PASSWORD=${PASSWORD}
7 | build: .
8 | volumes:
9 | - .:/home/rstudio
10 | - ~/.aws:/home/rstudio/.aws
11 |
12 | ports:
13 | - '8787:8787' # Rstudio
14 | - '8080:8080'
15 | #- '3838:3838' # Shiny
--------------------------------------------------------------------------------
/HISTORY.md:
--------------------------------------------------------------------------------
1 | ## v0.3.0
2 | ---------------------------------
3 | * QA review with Fei and Kelsey
4 | * QA review by Matt Salganik
5 |
6 | ## v0.2.0
7 | ----------------------------------
8 | * Deployed to shinyapps.io
9 |
10 |
11 | ## v0.1.0
12 | -----------------------------------
13 | * Started the project! Woohoo!
14 | * Initial creation of each module
15 |
--------------------------------------------------------------------------------
/app/google-analytics.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM rocker/tidyverse:3.6.1 as base
2 |
3 | RUN apt-get update \
4 | && apt-get install -y --no-install-recommends \
5 | libxml2-dev \
6 | libgit2-dev \
7 | libpng-dev \
8 | libudunits2-dev \
9 | libgdal-dev \
10 | ca-certificates
11 |
12 | RUN R -e "install.packages(c('rlang','shiny', 'shinythemes', 'shinyjs', 'shinycssloaders', 'shinyBS', 'tidycensus' , 'assertr', 'flexdashboard', 'httr', 'remotes'), repos='http://cran.rstudio.com/')"
13 | RUN R -e "install.packages('git2r', type='source', configure.vars='autobrew=yes')"
14 | RUN R -e "remotes::install_github('rstudio/renv')"
15 | RUN R -e "install.packages(c('aws.signature', 'aws.ec2metadata', 'aws.s3'), repos = c(cloudyr = 'http://cloudyr.github.io/drat', getOption('repos')))"
16 |
17 | COPY .Renviron .Renviron
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Environment variable file
2 | .env
3 | # History files
4 | .Rhistory
5 | .Rapp.history
6 |
7 | # Session Data files
8 | .RData
9 |
10 | # User-specific files
11 | .Ruserdata
12 |
13 | # Example code in package build process
14 | *-Ex.R
15 |
16 | # Output files from R CMD build
17 | /*.tar.gz
18 |
19 | # Output files from R CMD check
20 | /*.Rcheck/
21 |
22 | # RStudio files
23 | .Rproj.user/
24 |
25 | # produced vignettes
26 | vignettes/*.html
27 | vignettes/*.pdf
28 |
29 | # OAuth2 token, see https://github.com/hadley/httr/releases/tag/v0.3
30 | .httr-oauth
31 |
32 | # knitr and R markdown default cache directories
33 | *_cache/
34 | /cache/
35 |
36 | # Temporary files created by R markdown
37 | *.utf8.md
38 | *.knit.md
39 |
40 | # R Environment Variables
41 | .Renviron
42 |
43 | # data
44 | /data/covid-19-data/
45 |
46 | #
47 | .DS_Store
48 | rsconnect/
49 | .env
50 | data/us-counties.csv
51 | .rstudio/
52 | .bash_history
53 | doc/HUD_API_KEY.txt
54 | *.Rproj
55 |
--------------------------------------------------------------------------------
/app/style.css:
--------------------------------------------------------------------------------
1 | .html-widget.gauge svg {
2 | height: auto;
3 | width: auto;
4 | display: block;
5 | margin-left: auto;
6 | margin-right: auto;
7 | margin-bottom: auto;
8 | }
9 |
10 | #go{
11 | display:block;
12 | }
13 |
14 | .irs-bar {background: #DF691A;}
15 | .irs-single {background: #DF691A;}
16 | .irs-bar-edge {background: #DF691A;}
17 | .irs-from {background: #DF691A;}
18 | .irs-to {background: #DF691A;}
19 |
20 | .btn-facebook {
21 | background: #428BCA;
22 | color: #FFFFFF;
23 | }
24 |
25 | .btn {
26 | border-radius: 6px;
27 | }
28 |
29 | .nav-pills>li.active>a, .nav-pills>li.active>a:hover, .nav-pills>li.active>a:focus{
30 | border-radius: 6px;
31 | }
32 |
33 | .text-muted {
34 | color: #777;
35 | }
36 |
37 | .shiny-output-error-validation {
38 | color: #DC7633;
39 | font-weight: 400;
40 | font-size: 18px;
41 |
42 | }
43 |
44 | /*question text formatter in the input UI*/
45 | .questiontext {
46 | font-size: 12px;
47 | display: inline-block;
48 | max-width: 100%;
49 | margin-bottom: 5px;
50 | font-weight: bold;
51 | }
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Xindi Hu
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/_deploy_buildspec.yaml:
--------------------------------------------------------------------------------
1 | version: 0.2
2 | phases:
3 | install:
4 | runtime-versions:
5 | docker: 19
6 | pre_build:
7 | commands:
8 | - echo Logging in to Amazon ECR...
9 | - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
10 | - REPOSITORY_URI=${ContainerRepositoryName}
11 | - COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION | cut -c 1-7)
12 | - IMAGE_TAG=${COMMIT_HASH:=latest}
13 | build:
14 | commands:
15 | - echo Building the Docker image...
16 | - export apiKey=X_API_KEY
17 | - paramname=$(aws ssm get-parameter --name $apiKey --query "Parameter.Name" --output text)
18 | - paramvalue=$(aws ssm get-parameter --name $apiKey --query "Parameter.Value" --output text)
19 | - result=${paramname}=${paramvalue}
20 | - echo -n $result > .Renviron
21 | - docker build --build-arg AWS_ACCOUNT_ID=$BaseImageAccountId -f web.Dockerfile -t $REPOSITORY_URI:latest .
22 | - echo Tagging the Docker image...
23 | - docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
24 |
25 | post_build:
26 | commands:
27 | - echo Pushing the Docker images...
28 | - docker push $REPOSITORY_URI:$IMAGE_TAG
29 | - echo Writing image definitions file used during deployment to pick new tasks ...
30 | - printf '[{"name":"Shiny-Container","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > imagedefinitions.json
31 |
32 | artifacts:
33 | files: imagedefinitions.json
34 |
--------------------------------------------------------------------------------
/web.Dockerfile:
--------------------------------------------------------------------------------
1 | ARG AWS_ACCOUNT_ID
2 | FROM ${AWS_ACCOUNT_ID}.dkr.ecr.us-east-1.amazonaws.com/shiny-verse-base-image:4.1.0
3 |
4 | RUN apt-get update \
5 | && apt-get install -y --no-install-recommends \
6 | libxml2-dev \
7 | libgit2-dev \
8 | libpng-dev \
9 | libudunits2-dev \
10 | libgdal-dev \
11 | ca-certificates \
12 | libharfbuzz-dev\
13 | libfribidi-dev\
14 | libgit2-dev\
15 | curl \
16 | && R -e "install.packages(c('rlang','shiny', 'shinythemes', 'shinyjs', 'shinycssloaders', 'shinyBS', 'tidycensus' , 'assertr', 'flexdashboard', 'httr'), dependencies=TRUE, repos='https://cloud.r-project.org/')" \
17 | && R -e "install.packages('git2r', type='source', configure.vars='autobrew=yes')" \
18 | && R -e "install.packages(c('aws.signature', 'aws.ec2metadata', 'aws.s3'), repos = c(cloudyr = 'http://cloudyr.github.io/drat', getOption('repos')))" \
19 | && rm -rf /tmp/downloaded_packages
20 |
21 | RUN printf 'run_as shiny;\n\
22 | server {\n\
23 | listen 3838;\n\
24 | location / {\n\
25 | app_dir /srv/shiny-server/covid_risk_score;\n\
26 | log_dir /var/log/shiny-server;\n\
27 | }\n\
28 | }\n' > /etc/shiny-server/shiny-server.conf \
29 | && rm -rf /srv/shiny-server/sample-apps
30 |
31 |
32 |
33 | COPY /app /srv/shiny-server/covid_risk_score
34 | COPY .Renviron /srv/shiny-server/covid_risk_score/.Renviron
35 |
36 |
37 | WORKDIR /root
38 |
39 | RUN printf '#!/bin/sh\n\
40 | mkdir -p /var/log/shiny-server\n\
41 | chown shiny.shiny /var/log/shiny-server\n\
42 | if [ "$APPLICATION_LOGS_TO_STDOUT" != "false" ];\n\
43 | then\n\
44 | # push the "real" application logs to stdout with xtail in detached mode\n\
45 | exec xtail /var/log/shiny-server/ &\n\
46 | fi\n\
47 | echo "AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" > /home/shiny/.Renviron\n\
48 | chown shiny:shiny /home/shiny/.Renviron\n\
49 | # start shiny server\n\
50 | exec shiny-server 2>&1\n' > start.sh \
51 | && chmod +x start.sh
52 |
53 | RUN chown -R shiny:shiny /srv/shiny-server/covid_risk_score
54 |
55 | EXPOSE 3838
56 |
57 | CMD ["/root/start.sh"]
58 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 19andMe
2 |
3 | ## Introduction
4 | 19andMe is an interactive dashboard for users to calculate their individualized risk score of contracting COVID-19 and related adverse health outcomes. https://19andme.covid19.mathematica.org/
5 |
6 | How 19andMe Works?
7 |
8 | 19andMe takes user input on where you live, who you are, and what you do in the pandemic, uses the best available science to provide a ballpark estimation on the how likely someone with similar characteristics like you may contract COVID-19, and if infected, how likely is the outcome going to be severe. Please see the "Methods" tab in the app for more details on our methodology.
9 |
10 |
11 |
12 | ## Contents
13 |
14 | * app/
15 | * R Scripts for different modules of the app
16 | * Google Analytics plug-in
17 | * CSS
18 | * www/
19 | * Mathematica logo
20 | * How 19andMe works
21 |
22 | ## Authors
23 | * **Cindy Hu** - *product owner*
24 | * **Emma Pendl-Robinson** - *full-stack developer*
25 | * **Erin Lipman** - *back-end developer and data engineer*
26 | * **Jennifer Starling** - *validation lead*
27 | * **Margaret Luo** - *API support and technical consultant*
28 | * **Max Dulieu** - *API tech lead*
29 |
30 | ## Reviewers and Support
31 | * **George Luo** - *front-end developer*
32 | * **Arpan Bhattacharya, George Gallo** - *AWS architects*
33 | * **Aaron White** - *technical consultant*
34 | * **Sean Kirk** - *DevOps engineer*
35 | * **Kelsey Skvoretz, Fei Xing** - *QA reviewers*
36 | * **Matt Salganik** - *expert reviewer*
37 |
38 | ## Acknowledgements
39 | We appreciate additional support towards this project from Alex Bohl, Dave Peters, and Matt Gillingham.
40 |
41 | ## Contact info
42 | For more information, please contact Cindy Hu at CHu@mathematica-mpr.com or at covid.risk.score@gmail.com.
43 |
44 | # DockerShinyApp
45 |
46 | ## Installing
47 | This project is built to use Docker and docker-compose to make development easy across all machines and remove host machine configuration as a potential issue. Use `docker-compose` to get started quickly. You will need to install docker and docker-compose.
48 |
49 | * [Docker](https://docs.docker.com/install/)
50 | * [Docker Compose](https://docs.docker.com/compose/install/)
51 |
52 | Use docker-compose to build the image:
53 | ```
54 | docker-compose build
55 | ```
56 |
57 | Remember that docker images are immutable once built. Only changes to files in `/home/rstudio` will persist after restarts.
58 |
59 | ## Development
60 | To create an RStudio environment preloaded with all dependencies
61 | 1. Create a `.env` file that defines the desired RStudio password, e.g.
62 | ```
63 | PASSWORD=mystrongpassword
64 | ```
65 | There is an example [sample.env](sample.env) you can also use. Copy it and rename it to `.env`.
66 |
67 | 2. Email the [Mathematica Communications team](Communications@mathematica-mpr.com ) to get an x-api-key. We will use this to make POST requests for the covid-risk-score-api. Add X_API_KEY to your `.Renviron` file.
68 |
69 | 3. Start the environment
70 | `docker-compose up`
71 |
72 | 4. Visit `http://localhost:8787` and start hacking.
73 |
74 | 5. Keep shiny app code in `app.R`. Launch it for development with `shiny::runApp('app.R')`.
75 |
76 | ## Deployment
77 | Utilize the attached Dockerfile for a simple but efficient deployment setup.
78 |
--------------------------------------------------------------------------------
/app/server.R:
--------------------------------------------------------------------------------
1 | # Define the server code
2 | server <- function(input, output, session) {
3 | # Sidebar Collapse ---------------------------------------------------
4 | observeEvent(input$next0, {
5 | updateCollapse(session, id = "collapse_main", open = "1. About You", close = "Introduction")
6 | })
7 | observeEvent(input$next1, {
8 | updateCollapse(session, id = "collapse_main", open = "2. Your Health Status",
9 | close = "1. About You")
10 | })
11 | observeEvent(input$next2, {
12 | updateCollapse(session, id = "collapse_main", open = "3. Your Behavior",
13 | close = "2. Your Health Status")
14 | })
15 | observeEvent(input$next3, {
16 | updateCollapse(session, id = "collapse_main", open = "4. Your Vaccination Status",
17 | close = "3. Your Behavior")
18 | })
19 |
20 | ## modify symptom, condition and vaccine selections --------------------------
21 | observe({
22 | if (!input$is_sick) {
23 | # clear the conditional panel's UI when unchecked
24 | updateCheckboxGroupInput(session, "symptoms", selected = character(0))
25 | }
26 | if (!input$has_preexisting) {
27 | # clear the conditional panel's UI when unchecked
28 | updateCheckboxGroupInput(session, "conditions", selected = character(0))
29 | }
30 | if (!input$has_vaccine) {
31 | # clear vaccine conditional input when collapsed
32 | updateRadioButtons(session, "vaccine", selected = character(0))
33 | updateSelectInput(session, "months_last_vaccination", selected = character(0))
34 | }
35 | })
36 |
37 | # reactive values and lists --------------------------------------------------
38 | get_risk_info <- reactive({
39 | # hit the API
40 | # do not proceed if go was not clicked at all
41 | validate(need(input$go > 0, ""))
42 | validate(need((input$country == "us" & nchar(input$zip) >= 5) | (input$country == "be" & nchar(input$zip) >= 4), ""))
43 | api_return <- calculateRisk(input)
44 |
45 | if (is.null(api_return$message)) {
46 | api_out <- api_return$results
47 |
48 | # number of outputs
49 | n_out <- length(api_out)
50 |
51 | # if the length of output is more than one have user select one county
52 | if(n_out > 1 ){
53 | output$select_county <- renderUI({
54 | validate(need(is.null(input$ordinal_county), ""))
55 | tagList(
56 | tags$h4("There is more than one county that matches your 5-digit zip code."),
57 | tags$h4("Please choose a county:")
58 | )})
59 | output$zipcontrol <- renderUI({
60 | validate(need(is.null(input$ordinal_county), ""))
61 | list_opts <- as.character(1:length(api_out))
62 | county_names<-sapply(api_out, `[`, "name") %>% as.character()
63 | radioButtons("ordinal_county", label = "Counties:",
64 | choiceNames = county_names, choiceValues = list_opts, selected = character(0))
65 | })
66 |
67 | # stop if county is not selected
68 | validate(need(!is.null(input$ordinal_county), ""))
69 | which_county<- as.numeric(input$ordinal_county)
70 | } else {
71 | # if there is only one output county, select the first output county
72 | which_county <- 1}
73 | one_county <- api_out[[which_county]]
74 |
75 | return (one_county)
76 | } else {
77 | return(api_return)
78 | }
79 | })
80 |
81 | # output ---------------------------------------------------------------------
82 |
83 | ## disclaimer message dialogue -----------------------------------------------
84 | disclaimer_message <- modalDialog(
85 | title = "Disclaimer",
86 | disclaimerpopupHTML()
87 | )
88 |
89 | # Show the model on start up ...
90 | showModal(disclaimer_message)
91 |
92 | ## score output intro --------------------------------------------------------
93 | output$output_intro <- renderUI({
94 | risk<-get_risk_info()
95 |
96 | if (!is.null(risk$message)) {
97 | HTML(paste0(risk$message, collapse = "
"))
98 | } else {
99 | renderOutputIntroHtml()
100 | }
101 | })
102 |
103 | ## render risk score gauge ---------------------------------------------------
104 | output$gauge <-renderGauge({
105 | risk<-get_risk_info()
106 | if (is.null(risk$message)) {
107 | validate(need(!is.null(risk), ""))
108 |
109 | gauge(round(risk$risk_score),
110 | min = 0, max = 100,
111 | sectors = gaugeSectors(success = c(0, 30),
112 | warning = c(30, 70),
113 | danger = c(70, 100)),
114 | label = "")
115 | }
116 | })
117 |
118 | ## render risk score UI ---------------------------------------------------
119 | output$score_info <-renderUI({
120 | risk <- get_risk_info()
121 | # in app/results.R
122 | if (is.null(risk$message)) {
123 | renderScoreHtml(risk)
124 | }
125 | })
126 | output$vaccines <-renderUI({
127 | risk<-get_risk_info()
128 | # in app/results.R
129 | if (is.null(risk$message)) {
130 | renderVaccinesHtml(risk, input$has_vaccine, input$vaccine, input$months_last_vaccination)
131 | }
132 | })
133 | output$res <-renderUI({
134 | risk <- get_risk_info()
135 | # in app/results.R
136 | if (is.null(risk$message)) {
137 | renderResultsHtml(risk, input$symptoms, input$hand, input$ppe)
138 | }
139 | })
140 |
141 | ## render methods page ---------------------------------------------------
142 | output$methods <-renderUI({
143 | # in app/info_html.R
144 | renderMethodsHtml()
145 | })
146 |
147 | ## render FAQ page ---------------------------------------------------
148 | output$faq <- renderUI({
149 | # in app/info_html.R
150 | renderFaqHtml()
151 | })
152 |
153 | ## render CHANGELOG page ---------------------------------------------------
154 | output$changelog <- renderUI({
155 | # in app/info_html.R
156 | renderChangelogHtml()
157 | })
158 |
159 | }
--------------------------------------------------------------------------------
/app/global.R:
--------------------------------------------------------------------------------
1 | # libraries
2 | library(shiny)
3 | library(shinycssloaders)
4 | library(shinythemes)
5 | library(shinyBS)
6 | library(assertr)
7 | library(flexdashboard)
8 | library(httr)
9 | library(tidyverse)
10 | library(lubridate)
11 |
12 | # helper functions
13 | source("info_html.R")
14 | source("functions.R")
15 |
16 |
17 | # Global variables can go here
18 |
19 | # urls class to store our urls
20 | urls = list(
21 | # Mathematica COVID Score API
22 | covid_score_api = "https://us-api.covid19.mathematica.org/score",
23 | covid_score_api_dev = "https://awsdev.us-api.covid19.mathematica.org/score",
24 | covid_change_log_api = "https://us-api.covid19.mathematica.org/change-log",
25 | terms_of_use = "https://covid-risk-score-rshiny-code-artifacts.s3.amazonaws.com/COVID-19+Risk+Calculator+Terms+of+Use+-+042220.pdf",
26 | # CCDC
27 | ccdc_vol2_2020 = "https://www.unboundmedicine.com/medline/citation/32064853/[The_epidemiological_characteristics_of_an_outbreak_of_2019_novel_coronavirus_diseases__COVID_19__in_China]",
28 | # CDC
29 | cdc_get_ready = "https://www.cdc.gov/coronavirus/2019-ncov/daily-life-coping/get-your-household-ready-for-COVID-19.html",
30 | cdc_hand_hygiene = "https://www.cdc.gov/handwashing/when-how-handwashing.html",
31 | cdc_mm6909e1 = "https://www.cdc.gov/mmwr/volumes/69/wr/pdfs/mm6909e1-H.pdf",
32 | cdc_mm6913e2 = "https://www.cdc.gov/mmwr/volumes/69/wr/mm6913e2.htm",
33 | cdc_ppe = "https://www.cdc.gov/coronavirus/2019-ncov/prevent-getting-sick/cloth-face-cover-guidance.html",
34 | cdc_prevention = "https://www.cdc.gov/coronavirus/2019-ncov/prevent-getting-sick/prevention.html",
35 | cdc_symptoms = "https://www.cdc.gov/coronavirus/2019-ncov/symptoms-testing/symptoms.html",
36 | cdc_flu = "https://www.cdc.gov/flu/about/burden/index.html",
37 | cdc_medicalconditions = "https://www.cdc.gov/coronavirus/2019-ncov/need-extra-precautions/people-with-medical-conditions.html",
38 | cdc_test_info = "https://www.cdc.gov/coronavirus/2019-ncov/symptoms-testing/testing.html",
39 | cdc_vaccines = "https://www.cdc.gov/coronavirus/2019-ncov/vaccines/index.html",
40 | cdc_vaccinated_guidance = "https://www.cdc.gov/coronavirus/2019-ncov/vaccines/fully-vaccinated-guidance.html",
41 | cdc_case_surv = "https://data.cdc.gov/Case-Surveillance/COVID-19-Case-Surveillance-Public-Use-Data/vbim-akqf/data",
42 | cdc_vax_science_brief = "https://www.cdc.gov/coronavirus/2019-ncov/science/science-briefs/fully-vaccinated-people.html",
43 | cdc_delta_variant = "https://web.archive.org/web/20210901003835/https://www.cdc.gov/coronavirus/2019-ncov/variants/delta-variant.html",
44 | # USA Facts
45 | usafacts_data = "https://usafacts.org/visualizations/coronavirus-covid-19-spread-map/",
46 | # papers
47 | caramelo_etal_2020 = "https://www.medrxiv.org/content/10.1101/2020.02.24.20027268v1",
48 | russel_etal_2020 = "https://bmcmedicine.biomedcentral.com/articles/10.1186/s12916-020-01790-9",
49 | verity_etal_2020 = "https://www.thelancet.com/journals/laninf/article/PIIS1473-3099(20)30243-7/fulltext",
50 | open_safely = "https://www.nature.com/articles/s41586-020-2521-4:",
51 | jin_etal_2020 = "https://www.nature.com/articles/s41591-020-01191-8",
52 | wolfer_etall_2020 = "https://www.nature.com/articles/s41586-020-2196-x",
53 | covid_symptom_study = "https://covid19.joinzoe.com/us/about",
54 | menni_etall_2020 = "https://www.nature.com/articles/s41591-020-0916-2",
55 | chu_etal_2020 = "https://www.thelancet.com/journals/lancet/article/PIIS0140-6736(20)31142-9/fulltext",
56 | jefferson_etal_2008 = "https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2190272/",
57 | xue_etal_2022 = "https://www.sciencedirect.com/science/article/pii/S1201971222002958",
58 | # misc
59 | empirical_bayes = "https://en.wikipedia.org/wiki/Empirical_Bayes_method",
60 | # Additional sources for ORs December 2020 update
61 | gottlieb = "https://onlinelibrary.wiley.com/doi/full/10.1111/acem.14104",
62 | fairhealth = "https://www.prnewswire.com/news-releases/new-fair-health-study-uncovers-relationship-between-covid-19-comorbidities-and-mortality-301171033.html",
63 | zambrano = "https://www.cdc.gov/mmwr/volumes/69/wr/mm6944e3.htm",
64 | # vaccine efficacy data
65 | moderna_eua_2020 = "https://www.fda.gov/media/144637/download", #moderna vaccine factsheet for hcp
66 | pfizer_eua_2020 = "https://www.fda.gov/media/144413/download", #pfizer vaccine factsheet for hcp
67 | jandj_eua_2021 = "https://www.fda.gov/media/146217/download",
68 | bernal_etal_2021a = "https://www.bmj.com/content/373/bmj.n1088", #pfizer and astrazeneca vax against hosp and death
69 | bernal_etal_2021b = "https://www.medrxiv.org/content/10.1101/2021.05.22.21257658v1", #pfizer and astrazeneca vax against delta variant
70 | voysey_etal_2021 = "https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3777268", # astrazeneca vaccine efficacy against symptomatic infections
71 | feilkin_etal_2021 = "http://dx.doi.org/10.2139/ssrn.3961378", # vaccine effectiveness over time systematic review and meta-regression
72 | who_vaccines = "https://covid19.trackvaccines.org/agency/who", # Vaccines Approved for Use by WHO
73 | # Activity risk level
74 | bellage_activity_chart = "https://bellage.org/wp-content/uploads/2020/09/BellAge-COVID19-Activity-Risk-Chart.pdf",
75 | # excerise level and severe covid
76 | sallis_etal_2021 = "https://www.bmj.com/company/newsroom/physical-inactivity-linked-to-more-severe-covid-19-infection-and-death"
77 | )
78 |
79 | # possible input conditions
80 | conditions_list = c("Chronic renal disease" = "renal_disease",
81 | "Cardiovascular disease" = "cardiovascular_disease",
82 | "Diabetes" = "diabetes",
83 | "Hypertension" = "hypertension",
84 | "Current or former smoker" = "smoking",
85 | "Immunocompromised condition" = "immunocompromised",
86 | "Chronic lung disease" = "lung_disease",
87 | "Obesity (BMI ≥ 30 kg/m²)" = "obesity",
88 | "Pregnancy" = "pregnancy",
89 | "Cancer" = "cancer",
90 | "Sickle cell disease" = "sickle_cell",
91 | "Down syndrome" = "downsyndrome",
92 | "Other chronic condition" = "other")
93 |
94 | # activities list
95 | l_activities_list = c("Indoor socially distanced activities (e.g. grocery store, library, museum)",
96 | "Outdoor socially distanced activities")
97 | m_activities_list = c("In person work or school",
98 | "Indoor busy or crowed activities (e.g. casino, shopping mall, salon)",
99 | "Public transportation/airplane",
100 | "Overnight stay at a hotel",
101 | "Outdoor dining",
102 | "Seeing doctor or dentist")
103 | h_activities_list = c("Indoor restaurant or bar",
104 | "Nightclub/music concert/movie theater/gym",
105 | "Sports stadium",
106 | "Religious services (including weddings and funerals)",
107 | "Team sports (e.g. basketball, football)",
108 | "Visiting nursing home or hospital")
109 |
110 | # possible exercise_levels
111 | exercise_level_list = c("10 minutes or less" = "lte_10mpw",
112 | "11-149 minutes" = "btw_11_149mpw",
113 | "150 minutes or more" = "gte_150mpw")
114 | # vaccine doses
115 | vaccine_labels = list(pfizer = "Pfizer-BioNTech",
116 | moderna = "Moderna",
117 | johnsonandjohnson = "Johnson & Johnson",
118 | astrazeneca = "AstraZeneca")
119 |
120 | months_last_vaccination_labels = c("Within one month" = "lt_1mo", "1-6 months ago" = "btw_1_6mo", "More than 6 months ago" = "gt_6mo")
121 |
--------------------------------------------------------------------------------
/app/ui.R:
--------------------------------------------------------------------------------
1 | # Define the UI
2 | ui <- fluidPage(
3 | theme=shinytheme("superhero"),
4 | titlePanel(fluidRow(column(width = 9, "19 and Me: COVID-19 Risk Score Calculator"),
5 | column(width = 3, img(src = 'MathematicaLogo_White_smaller.png',class = "pull-right"))),
6 | windowTitle = "19 and Me: COVID-19 Risk Calculator"),
7 | # google analytics tracking
8 | tags$head(includeHTML("google-analytics.html")),
9 |
10 | includeCSS("style.css"),
11 | includeScript('app.js'),
12 |
13 | #INPUT --------------------------------------------------------------------------------------------------
14 | sidebarLayout(
15 | sidebarPanel(
16 | # collapsible UI to streamline input. Everything is open by default.
17 | bsCollapse(
18 | id = "collapse_main",
19 | multiple = TRUE,
20 | open = c("Introduction"),
21 | bsCollapsePanel(
22 | title = "Introduction",
23 | tags$p("This tool synthesizes reported COVID-19 geographic case data and rapidly evolving
24 | scientific research to help you ballpark how much risk this disease poses to you."),
25 | tags$p("We believe people make the right decisions when empowered with neither fear, nor
26 | complacency, but with accurate data."),
27 | tags$p("Please note: many
28 | very important aspects of this disease are either unknown or estimated with large
29 | uncertainty. With that said, our guiding philosophy is that an imperfect estimate
30 | is better than no estimate."),
31 | tags$p("This tool works best on Google Chrome and mobile.", class = "text-warning"),
32 | tags$p("We do not retain any information that you provide in connection with your use of the tool."),
33 | tags$p("Your use of this tool is subject to these ", tags$a("Terms of Use.", href=urls$terms_of_use)),
34 | tags$p(style="color:#DF691A", "THE INFORMATION PROVIDED BY THIS TOOL IS NOT MEDICAL ADVICE AND CANNOT BE
35 | USED TO DIAGNOSE OR TREAT ANY MEDICAL CONDITION. See FAQ for more information.", class = "text-warning"),
36 | tags$p("For demonstration purposes, the tool returns risk scores as of April 6th, 2022.", class = "text-warning"),
37 | actionButton('next0', "Next", class = "btn btn-info btn-block")
38 | ),
39 | bsCollapsePanel(
40 | title = "1. About You",
41 | radioButtons('country', "What is your country?",
42 | c("United States" = "us", "Belgium" = "be"), selected = "us", inline=TRUE),
43 | conditionalPanel(
44 | condition = "input.country == 'us'",
45 | div(class = "questiontext", "What is your 5-digit zip code?")),
46 | conditionalPanel(
47 | condition = "input.country == 'be'",
48 | div(class = "questiontext", "What is your 4-digit postal code?")),
49 | textInput('zip', label = NULL),
50 | textInput('age', label = "What is your age?"),
51 | radioButtons('sex', "What sex were you assigned at birth?",
52 | c("Male" = "male", "Female" = "female", "Other" = "sex_other", "Prefer not to say" = "sex_other"), inline=TRUE),
53 | actionButton('next1', "Next", class = "btn btn-info btn-block")
54 | ), # bsCollapsePanel
55 | bsCollapsePanel(
56 | title = "2. Your Health Status",
57 | checkboxInput('is_sick', div("I have ", tags$a("potential symptoms of COVID-19", href = urls$cdc_symptoms))),
58 | # COVID-19 symptoms input
59 | conditionalPanel(
60 | condition = "input.is_sick == true",
61 | checkboxGroupInput("symptoms", "Symptoms",
62 | c("Loss of smell and taste" = "loss_smell_taste",
63 | "Severe or significant persistent cough" = "severe_cough",
64 | "Severe fatigue" = "severe_fatigue",
65 | "Loss of appetite, skipped meals" = "loss_appetite",
66 | "My symptoms are not listed here" = "other"
67 | ))),
68 | hr(),
69 | # Pre-Existing conditions inputs
70 | checkboxInput('has_preexisting', div("I have ", tags$a("underlying medical complications",
71 | href = urls$cdc_medicalconditions))),
72 | conditionalPanel(
73 | condition = "input.has_preexisting == true",
74 | checkboxGroupInput("conditions", "Conditions", # this is written this way to allow html math in obesity test
75 | choiceNames = lapply(names(conditions_list), HTML),
76 | choiceValues = unname(conditions_list)
77 | ),
78 | ),
79 | hr(),
80 | # Excerise Level
81 | radioButtons('exercise_level', "On average how many minutes per week do you engage in moderate to strenuous exercises (like brisk walking)?",
82 | exercise_level_list, inline=TRUE, selected = "btw_11_149mpw"),
83 | # Next Buttion
84 | actionButton('next2', "Next", class = "btn btn-info btn-block")
85 | ), # bsCollapsePanel
86 | bsCollapsePanel(
87 | title = "3. Your Behavior",
88 | radioButtons('live_w_others', "Do you live with other people?",
89 | list("Yes"="True", "No"="False"), inline=TRUE, selected = "False"),
90 | sliderInput('direct_contacts',
91 | 'Direct exposure: how many people (include your household members) do you come into close contact (> 10 min, < 6 feet) with in a week?',
92 | min = 0, max = 100, value = 1, step =1),
93 | conditionalPanel(
94 | condition = "input.live_w_others == 'True'",
95 | sliderInput('indirect_contacts',
96 | 'Indirect exposure: how many people in total do your household members come into close contact with in a week? (Do not include contact between household members in this count.)',
97 | min = 0, max = 100, value = 0, step =1)),
98 | hr(),
99 | checkboxInput("hand", div("I perform hand hygiene according to ",
100 | tags$a("CDC guidance", href = urls$cdc_hand_hygiene))),
101 | checkboxInput("ppe", div("I wear personal protection equipment consistent with ",
102 | tags$a("CDC guidelines", href = urls$cdc_ppe))),
103 | # activities risk
104 | hr(),
105 | div(class = "questiontext", "In the previous week, I participated in the following activities:"),
106 | checkboxGroupInput("l_activities", "Low-risk activities:",
107 | choices = l_activities_list,
108 | inline = TRUE,
109 | selected = NULL),
110 | checkboxGroupInput("m_activities", "Medium-risk activities:",
111 | choices = m_activities_list,
112 | inline = TRUE,
113 | selected = NULL),
114 | checkboxGroupInput("h_activities", "High-risk activities:",
115 | choices = h_activities_list,
116 | inline = TRUE,
117 | selected = NULL),
118 | actionButton('next3', "Next", class = "btn btn-info btn-block")
119 | ), # bsCollapsePanel
120 | bsCollapsePanel(
121 | title = "4. Your Vaccination Status",
122 | checkboxInput('has_vaccine', div("I have received at least one dose of a COVID-19 vaccine")),
123 | conditionalPanel(
124 | condition = "input.has_vaccine == true",
125 | radioButtons('vaccine', "Which of the available COVID-19 vaccines did you receive most recently, including the booster?",
126 | choiceNames = unname(vaccine_labels), choiceValues = names(vaccine_labels),
127 | inline=TRUE),
128 | radioButtons('months_last_vaccination', "When was your most recent COVID-19 vaccine, including the booster?",
129 | months_last_vaccination_labels, inline=TRUE),
130 | ),
131 | actionButton('go', "Calculate", class = "btn btn-primary btn-block")
132 | ) # bsCollapsePanel
133 | ), # bsCollapse
134 | width = 4
135 | ), # sidebarPanel
136 |
137 | # OUTPUT--------------------------------------------------------------------------------------------------
138 | mainPanel(
139 | tabsetPanel(
140 | type = c("pills"),
141 | tabPanel("Score",
142 | uiOutput("select_county"),
143 | uiOutput("zipcontrol"),
144 | fluidRow(column(width = 8, htmlOutput("output_intro"))),
145 | fluidRow(column(width = 8, withSpinner(gaugeOutput("gauge", height = 'auto'), type = 1))),
146 | fluidRow(column(width = 8,htmlOutput("score_info"))),
147 | fluidRow(column(width = 8,htmlOutput("vaccines"),style = "background-color:#4E5D6C;")),
148 | fluidRow(column(width = 8,htmlOutput("res")))
149 | ),
150 | # tabPanel("Map"),
151 | tabPanel("Method", htmlOutput("methods")),
152 | tabPanel("FAQ", htmlOutput("faq")),
153 | tabPanel("Change Log", htmlOutput("changelog"))
154 | ),
155 | width = 8
156 | ) # mainPanel
157 | ) # sidebarLayout
158 | ) # fluidPage
159 |
--------------------------------------------------------------------------------
/app/functions.R:
--------------------------------------------------------------------------------
1 |
2 | # converts boolean into string -------------------------------------------------
3 | bool2char <- function(bol){
4 | # convert boolean to char
5 | # bol : boolean
6 | stringr::str_to_sentence(bol)
7 | }
8 |
9 | # function makes score API call -------------------------------------------------
10 | calculateRisk <- function(input) {
11 | request_body <- list(
12 | "country" = input$country,
13 | "zip" = input$zip,
14 | "age"= as.numeric(input$age),
15 | "sex" = input$sex,
16 | "symptoms" = as.list(input$symptoms),
17 | "direct_contacts" = as.numeric(input$direct_contacts),
18 | "live_w_others"= input$live_w_others,
19 | "indirect_contacts" = as.numeric(input$indirect_contacts),
20 | "hand"= bool2char(input$hand),
21 | "ppe"= bool2char(input$ppe),
22 | "conditions" = as.list(input$conditions),
23 | "activities_high" = length(input$h_activities),
24 | "activities_medium" = length(input$m_activities),
25 | "activities_low" = length(input$l_activities),
26 | "exercise_level" = input$exercise_level,
27 | "calc_date" = "04/06/2022")
28 |
29 | if (input$has_vaccine){
30 | request_body$vaccine = input$vaccine
31 | request_body$months_last_vaccination = input$months_last_vaccination
32 | }
33 |
34 | resp <- POST(urls$covid_score_api, add_headers("x-api-key" = Sys.getenv("X_API_KEY")), body = request_body, encode = "json")
35 | #resp <- POST(urls$covid_score_api_dev, add_headers("x-api-key" = Sys.getenv("X_API_KEY_DEV")), body = request_body, encode = "json")
36 | api_return <- content(resp)
37 |
38 | return (api_return)
39 | }
40 |
41 | # formate string, numbers, or percent ------------------------------------------
42 | formatResultsHeader <- function(string){
43 | return (tags$h4(tags$span(style="color:#F0AD4E",string)))
44 | }
45 | formatDynamicString <- function(string) {
46 | return (tags$b(tags$span(style="color:#F0AD4E",string)))
47 | }
48 | formatNumber<-function(number, unit) {
49 | return (formatDynamicString(HTML(paste0(formatC(signif(number,digits=2), digits=2,format="fg"), unit))))
50 | }
51 | formatPercent<-function(probability) {
52 | return (formatNumber(100 * probability, "%"))
53 | }
54 | formatProbability<-function(probability) {
55 | return (formatDynamicString(format(round(1/probability), big.mark=",")))
56 | }
57 |
58 | renderOutputIntroHtml <- function() {
59 | tagList(
60 | tags$h3("The risk score for people with similar characteristics and behaviors as you is")
61 | )
62 | }
63 |
64 | # function to create location HTML output --------------------------------------
65 | renderLocationHtml <- function(risk) {
66 | underreport_factor_string = formatNumber(risk$underreport_factor, "x")
67 | latest_day_string <- format(as.Date(risk$latest_day, "%m/%d/%Y"), "%B %d, %Y")
68 | cases_past14d_string <- format(round(risk$cases_past14d), big.mark =",")
69 | cumulative_cases_string <- format(risk$cumulative_cases, big.mark=",")
70 | est_current_sick_string <- format(round(risk$est_current_sick), big.mark =",")
71 |
72 | proportion_sick <- risk$est_current_sick/risk$population
73 | prob_group50 <- 1-((1-proportion_sick)^50)
74 | prob_group10 <- 1-((1-proportion_sick)^10)
75 |
76 | div(
77 | title = "Location",
78 | tags$p(div('We found data from ', formatDynamicString(risk$county), ' for your zip code. As of ',
79 | formatDynamicString(latest_day_string), ', this county had', formatDynamicString(cases_past14d_string),
80 | ' new reported cases in the last 14 days and ',
81 | formatDynamicString(cumulative_cases_string),
82 | ' total reported cases of COVID-19. Many people who contract COVID-19 are not tested, and therefore not reported.
83 | We estimate that your county has an under-reporting factor of ', underreport_factor_string,
84 | '.'
85 |
86 | ),
87 | tags$p(),
88 | tags$p("Taking into account the under-reporting factor and average time from symptom onset to recovery, we estimate that:"),
89 | tags$p(tags$ul(
90 | tags$li(div('There are ', formatDynamicString(format(round(risk$est_current_sick), big.mark =",")),
91 | ' total sick people distributed throughout the county, including those who are not officially reported.')),
92 | tags$li(div("1 in every ",
93 | formatDynamicString(format(round(1/(proportion_sick)), big.mark =",")),
94 | " people in your county is currently infected with COVID-19.")),
95 | tags$li(div("In a group of 50 people, there is a ", formatPercent(prob_group50),
96 | " chance that at least one person has COVID-19.")),
97 | tags$li(div("In a group of 10 people, there is a ", formatPercent(prob_group10),
98 | " chance that at least one person has COVID-19.")))
99 | ))
100 | )
101 | }
102 |
103 | # function to create risk_score HTML output ------------------------------------
104 | renderScoreHtml <- function(risk) {
105 | score<- risk$risk_score
106 | moving_casecount <- risk$moving_casecount
107 | text_score <- div(tags$p("WARNING: For demonstration purposes, the tool returns risk scores as of April 6th, 2022.", class = "text-warning"),
108 | tags$p(HTML(paste0(
109 | "The risk score for people with similar characteristics and behaviors as you is ",
110 | formatDynamicString(round(score)),
111 | case_when(
112 | score<30 ~ paste0(
113 | ", which is (relatively) safe. Even so, it's a good time to make sure that you're ",
114 | tags$a("prepared! ", href = urls$cdc_get_ready)),
115 | score>70 ~ paste0(
116 | ", which is quite serious. Avoiding exposure, practicing good hygiene, and making sure you have ",
117 | tags$a("a plan in place ", href = urls$cdc_prevention),
118 | "are critically important for you."),
119 | TRUE ~ paste0(
120 | ". Please take the time to review ",
121 | tags$a("this page", href = urls$cdc_prevention),
122 | " to make sure you're well prepared in the days to come.")
123 | )))))
124 |
125 | if (moving_casecount == 0){
126 | # if there are no reported cases in last 14 days
127 | warning_text <- tags$p(style="color:#DF691A",
128 | "WARNING: There are zero reported cases in the last 14 days. This could be due to USAFacts no longer reporting recent covid cases or deaths for the county.
129 | For more information, please check the ", tags$a("USAFacts", href = urls$usafacts_data), " or state agency's health department website.",
130 | class = "text-warning")
131 | return(div(warning_text, text_score))
132 | } else {
133 | return(text_score)
134 | }
135 | }
136 |
137 | # function to create vaccines HTML output ------------------------------------
138 | renderVaccinesHtml <- function(risk, has_vaccine, vaccine, months_last_vaccination){
139 |
140 | # Case where not vaccinated
141 | if (!has_vaccine){
142 | # no doses
143 | text <- tags$p("The approved against COVID-19 vaccines are safe and highly effective at preventing symptomatic COVID-19. ",
144 | tags$a("Click here", href=urls$cdc_vaccines), " for more information and to check when you might be eligible for vccination. ",
145 | tags$a("Click here", href=urls$who_vaccines), " for a full list of vaccines approved for Use by the World Health Organization (WHO).")
146 | } else if (!is.na(months_last_vaccination)) {
147 | # if has vaccination
148 | infection_efficacy_perc <- formatPercent(risk$vaccine_reduction$infection_efficacy)
149 | hosp_efficacy_perc <- formatPercent(risk$vaccine_reduction$hosp_efficacy)
150 | icu_efficacy_perc <- formatPercent(risk$vaccine_reduction$icu_efficacy)
151 | death_efficacy_perc <- formatPercent(risk$vaccine_reduction$death_efficacy)
152 |
153 | if (months_last_vaccination == "lt_1mo"){
154 | # last vaccine within 1 month
155 | months_last_vaccination_text <- HTML(paste0("Congratulations on receiving the ", vaccine_labels[vaccine], " COVID-19 vaccine! ",
156 | "The vaccine reaches its full efficacy at around 14 days after vaccination. ",
157 | "We estimate that the full efficacy of the ", vaccine_labels[vaccine]))
158 | } else if (months_last_vaccination == "btw_1_6mo"){
159 | # last vaccine within 1-6 month
160 | months_last_vaccination_text <- HTML(paste0("Congratulations on receiving the ", vaccine_labels[vaccine], " COVID-19 vaccine! ",
161 | "Between 1 and 6 months after last vaccination, we estimate that the efficacy of the ", vaccine_labels[vaccine]))
162 |
163 | } else if (months_last_vaccination == "gt_6mo"){
164 | # last vaccine within greater than 6 month
165 | months_last_vaccination_text <- HTML(paste0("Congratulations on receiving the ", vaccine_labels[vaccine], " COVID-19 vaccine! ",
166 | "Be sure check if you are eligible to receive a booster shot. ",
167 | "More than 6 months after last vaccination, we estimate that the efficacy of the ", vaccine_labels[vaccine]))
168 | }
169 |
170 | reduction_text <- HTML(paste0( " COVID-19 vaccine is a ",
171 | infection_efficacy_perc, "reduction in risk of infection; a ",
172 | hosp_efficacy_perc, "reduction in risk of hospitalization; a ",
173 | icu_efficacy_perc, "reduction in risk of ICU addmission; and a ",
174 | death_efficacy_perc, "reduction in risk of death due to COVID-19. ",
175 | tags$a("Click here ", href=urls$cdc_vaccines), "for more information about the United States' vaccination program."))
176 |
177 | text <- tags$p(months_last_vaccination_text, reduction_text)
178 | }
179 |
180 | div(formatResultsHeader("Vaccine information"), text,
181 | tags$p("After you have been vaccinated, be sure to follow the ",
182 | tags$a("CDC guidance for fully vaccinated individuals ", href=urls$cdc_vaccinated_guidance),
183 | "to protect your family, friends, and community."))
184 | }
185 |
186 | # function to create exporsure risk HTML output --------------------------------
187 | renderExposureHtml <- function(risk, symptoms) {
188 | prob_flu_string = formatPercent(risk$flu_risk_natl_avg)
189 | risk_string = formatPercent(risk$exposure_risk)
190 | sympt_covid_string = formatPercent(risk$sympt_covid_risk)
191 | exposure_text = paste0(
192 | "Among people in your county who have behaviors and levels of interaction
193 | with others that are similar to yours, the estimated probability of catching COVID-19 through community transmission in a week is ",
194 | risk_string, '. ', "For comparison, ", prob_flu_string, ' of Americans catch the flu every week during flu season.')
195 | sickness_text = (paste0(
196 | "Based on the symptom(s) you selected, the probability that your symptoms indicate COVID-19 is ", sympt_covid_string,
197 | ". If you are experiencing symptoms associated with COVID-19, please consult the ",
198 | tags$a("CDC's information on COVID-19 testing", href = urls$cdc_test_info),
199 | " or visit the website for your state or local health department ",
200 | "for information about getting tested for COVID-19."))
201 |
202 | if (!is.null(symptoms)) {
203 | total_risk_html = div(tags$p(HTML(exposure_text)), tags$p(HTML(sickness_text)))
204 | } else {
205 | total_risk_html = tags$p(HTML(paste0(exposure_text)))
206 | }
207 |
208 | return (total_risk_html)
209 | }
210 |
211 | # function to create susceptibility HTML output --------------------------------------
212 | renderSusceptibilityHtml <- function(risk) {
213 | tags$p(HTML(paste0(
214 | "Among people who are the same age, sex, and health status as you and get sick from COVID-19, the risk of hospitalization is ",
215 | formatPercent(risk$hosp_risk),
216 | ", the risk of requiring an ICU is ",
217 | formatPercent(risk$icu_risk),
218 | ", and the risk of death is ",
219 | formatPercent(risk$death_risk),
220 | ". Put another way, we estimate that one person in a group of ",
221 | formatProbability(risk$hosp_risk),
222 | " people will be hospitalized if infected, one person in a group of ",
223 | formatProbability(risk$icu_risk),
224 | " people will require an ICU, and one person in a group of ",
225 | formatProbability(risk$death_risk),
226 | " people will not survive."
227 | )))
228 | }
229 |
230 | # function to create hand and ppe HTML output ----------------------------------
231 | renderProtectionHtml <- function(risk, hand, ppe){
232 |
233 | prob_hand_string<- formatPercent(risk$risk_reduction_handwash)
234 | prob_ppe_string<- formatPercent(risk$risk_reduction_ppe)
235 |
236 | if (hand == TRUE ){
237 | hand_html = HTML(paste0(
238 | "Good to know that you wash your hands per ",
239 | tags$a("CDC guidance", href = urls$cdc_hand_hygiene),
240 | "."))
241 | } else{
242 | hand_html = HTML(paste0(
243 | "We recommend that you wash your hands per ",
244 | tags$a("CDC guidance", href = urls$cdc_hand_hygiene),
245 | "."))
246 | }
247 | if (risk$exposure_risk >0){
248 | # exposure reduction hand text for users with exposure risk of over 0
249 | hand_delta_html = HTML(paste0("In general, handwashing reduces people's risk of being exposed to COVID-19 by ",
250 | prob_hand_string, " . "))
251 | } else{
252 | # exposure reduction hand text for users with exposure risk less than or equal to 0
253 | hand_delta_html = HTML(paste0("In general, handwashing reduces people's risk of being exposed to COVID-19,
254 | if they do come into close contact with others. "))
255 | }
256 |
257 | if (ppe == TRUE){
258 | ppe_html = HTML(paste0(
259 | "Good to know that you wear personal protective equipment per ",
260 | tags$a("CDC guidelines", href = urls$cdc_ppe), " . "))
261 | } else {
262 | ppe_html = HTML(paste0(
263 | "We recommend that you wear personal protective equipment per ",
264 | tags$a("CDC guidelines", href = urls$cdc_ppe), " . "))
265 | }
266 |
267 | if (risk$exposure_risk >0){
268 | # exposure reduction ppe text for users with exposure risk of over 0
269 | ppe_delta_html = HTML(paste0("In general, wearing personal protective equipment reduces people's risk of being
270 | exposed to COVID-19 by ", prob_ppe_string, " . "))
271 | } else {
272 | # exposure reduction ppe text for users with exposure risk less than or equal to 0
273 | ppe_delta_html = HTML(paste0("In general, wearing personal protective equipment reduces people's risk of being
274 | exposed to COVID-19, if they do come into close contact with others. "))
275 | }
276 |
277 | return(tags$p(hand_html, hand_delta_html, ppe_html, ppe_delta_html))
278 | }
279 |
280 | # function combines score page HTML outputs ------------------------------------
281 | renderResultsHtml <- function(risk, symptoms, hand, ppe) {
282 |
283 | # return
284 | tagList(
285 | formatResultsHeader("County prevalence"),
286 | renderLocationHtml(risk),
287 | formatResultsHeader("Risk of contracting COVID-19"),
288 | renderExposureHtml(risk, symptoms),
289 | renderProtectionHtml(risk, hand, ppe),
290 | formatResultsHeader("Risk of adverse outcomes from COVID-19"),
291 | renderSusceptibilityHtml(risk)
292 | )
293 | }
294 |
--------------------------------------------------------------------------------
/aws-infrastructure/codepipeline_setup_all_ecs_resources.yaml:
--------------------------------------------------------------------------------
1 | AWSTemplateFormatVersion: 2010-09-09
2 | Description: This template creates Code pipeline for deploying app on ECS service
3 |
4 | #####################################################################
5 | # Metadata
6 | #####################################################################
7 |
8 | Metadata:
9 | AWS::CloudFormation::Interface:
10 | ParameterGroups:
11 | - Label:
12 | default: Network configuration
13 | Parameters:
14 | - VpcId
15 | - PrivateSubnet1
16 | - PrivateSubnet2
17 | - PublicSubnet1
18 | - PublicSubnet2
19 |
20 | - Label:
21 | default: Code build and pipeline configuration
22 | Parameters:
23 | - ApplicationName
24 | - PipelineName
25 | - CodeBuildProjectName
26 | - BuildInstanceSize
27 | - DeployImage
28 | - BuildSpecLoc
29 |
30 | - Label:
31 | default: Github webhook configuration
32 | Parameters:
33 | - GitHubUser
34 | - GitHubRepository
35 | - GitHubBranch
36 |
37 | - Label:
38 | default: Docker Container configuration
39 | Parameters:
40 | - ECSCluster
41 | - ECSService
42 | - EcrRepositoryName
43 | - ImageUri
44 | - TaskDefFamily
45 | - ContainerPort
46 | - Protocol
47 |
48 | - Label:
49 | default: Load balancer configuration
50 | Parameters:
51 | - LoadBalancerName
52 | - LoadBalancerType
53 | - LoadBalancerScheme
54 | - LoadBalancerIpType
55 | - LoadBalancerCertArn
56 | - SSLSecurityPolicy
57 |
58 | - Label:
59 | default: Target Group configuration
60 | Parameters:
61 | - TargetGroupName
62 |
63 | #####################################################################
64 | # Mappings
65 | #####################################################################
66 | Mappings:
67 | LbIpAddressType:
68 | externalIP:
69 | scheme1: internet-facing
70 | addresstype1: ipv4
71 |
72 | ####################################################################
73 | # PARAMETERS
74 | ####################################################################
75 | Parameters:
76 | PipelineName:
77 | Description: Code Pipeline name for CI/Cid
78 | Type: String
79 | Default: Covid_Risk_Score_Rshiny_Pipeline
80 |
81 | ApplicationName:
82 | Description: Name of the application
83 | Type: String
84 | Default: covid-risk-score
85 |
86 | CodeBuildProjectName:
87 | Description: Code Build Project name
88 | Type: String
89 | Default: Covid_Risk_Score_Rshiny_Build
90 |
91 | BuildInstanceSize:
92 | Description: Build Step Compute Size
93 | Type: String
94 | AllowedValues:
95 | - BUILD_GENERAL1_SMALL
96 | - BUILD_GENERAL1_MEDIUM
97 | - BUILD_GENERAL1_LARGE
98 | Default: BUILD_GENERAL1_LARGE
99 |
100 | DeployImage:
101 | Description: 'Deploy image to use for CodeBuild project.'
102 | Type: String
103 | Default: 'aws/codebuild/standard:4.0'
104 |
105 | BuildSpecLoc:
106 | Description: Buildspec file name
107 | Type: String
108 | Default: _deploy_buildspec.yaml
109 |
110 | GitHubUser:
111 | Description: GitHub repository owner
112 | Type: String
113 | Default: mathematica-mpr
114 |
115 | GitHubRepository:
116 | Description: GitHub repository name
117 | Type: String
118 | Default: covid_risk_score
119 |
120 | GitHubBranch:
121 | Description: GitHub repository branch
122 | Type: String
123 | Default: develop-aws #TB changed
124 |
125 | VpcId:
126 | Description: VPC to place the resources
127 | Type: AWS::EC2::VPC::Id
128 |
129 | PrivateSubnet1:
130 | Description: Private subnet1 to allow code build access to
131 | Type: AWS::EC2::Subnet::Id
132 |
133 | PrivateSubnet2:
134 | Description: Private subnet2 to allow code build access to
135 | Type: AWS::EC2::Subnet::Id
136 |
137 | PublicSubnet1:
138 | Description: Public subnet1 to route the traffic to target
139 | Type: AWS::EC2::Subnet::Id
140 |
141 | PublicSubnet2:
142 | Description: Public subnet2 to route the traffic to target
143 | Type: AWS::EC2::Subnet::Id
144 |
145 | ECSCluster:
146 | Description: ECS Cluster name
147 | Type: String
148 | Default: RShinyCluster
149 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]*
150 |
151 | ECSService:
152 | Description: ECS Service name
153 | Type: String
154 | Default: CovidRiskScoreService
155 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]*
156 |
157 | TaskDefFamily:
158 | Description: Task Definition Family Name
159 | Type: String
160 | Default: CovidRiskScoreTaskDef
161 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]*
162 |
163 | EcrRepositoryName:
164 | Description: ECR repository name
165 | Type: String
166 | Default: covid-risk-score
167 |
168 | ImageUri:
169 | Description: Docker container image uri
170 | Type: String
171 |
172 | ContainerPort:
173 | Description: Dafault docker container Port exposed
174 | Type: Number
175 | Default: 3838
176 |
177 | Protocol:
178 | Description: Protocol used for PortMappings
179 | Type: String
180 | Default: tcp
181 |
182 | LoadBalancerName:
183 | Description: Load balancer name
184 | Type: String
185 | Default: CovidRiskScoreLB
186 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]*
187 |
188 | LoadBalancerType:
189 | Description: Choose the load balancer Type
190 | Type: String
191 | Default: application
192 | AllowedValues:
193 | - application
194 |
195 | LoadBalancerScheme:
196 | Description: Indicates if the load balancer in front of the ECS service is external
197 | Type: String
198 | Default: externalIP
199 | AllowedValues:
200 | - externalIP
201 |
202 | LoadBalancerCertArn:
203 | Description: Provide loadbalancer certificate ARN(optional) to associate with load balancer
204 | Type: String
205 | Default: ''
206 |
207 | SSLSecurityPolicy:
208 | Description: SSL security policy
209 | Type: String
210 | AllowedValues:
211 | - ELBSecurityPolicy-FS-1-2-2019-08
212 | - ELBSecurityPolicy-FS-1-2-Res-2020-10
213 | - ELBSecurityPolicy-FS-1-1-Res-2019-08
214 | - ELBSecurityPolicy-FS-1-2-Res-2019-08
215 | Default: ELBSecurityPolicy-FS-1-2-Res-2020-10
216 |
217 | TargetGroupName:
218 | Description: Target group name
219 | Type: String
220 | Default: CovidRiskScoreTG
221 | AllowedPattern: ^[A-Za-z][A-Za-z0-9-]*
222 |
223 | #####################################################################
224 | # CONDITIONS
225 | #####################################################################
226 |
227 | Conditions:
228 | LoadBalancerCertificateArn: !Not [!Equals [!Ref LoadBalancerCertArn, '']]
229 |
230 | ###################################################################
231 | # RESOURCES
232 | #####################################################################
233 | Resources:
234 | LoadBalancer:
235 | Type: AWS::ElasticLoadBalancingV2::LoadBalancer
236 | DependsOn: [DefaultTargetGroup, AlbSecurityGroups]
237 | Properties:
238 | Name: !Ref LoadBalancerName
239 | Type: !Ref LoadBalancerType
240 | Scheme: !FindInMap [LbIpAddressType,!Ref LoadBalancerScheme, scheme1]
241 | IpAddressType: !FindInMap [LbIpAddressType,!Ref LoadBalancerScheme, addresstype1]
242 | Subnets:
243 | - !Ref PublicSubnet1
244 | - !Ref PublicSubnet2
245 | SecurityGroups:
246 | - !Ref AlbSecurityGroups
247 |
248 | HttpListener:
249 | Type: 'AWS::ElasticLoadBalancingV2::Listener'
250 | Properties:
251 | LoadBalancerArn: !Ref LoadBalancer
252 | Port: 80
253 | Protocol: HTTP
254 | DefaultActions:
255 | - Type: redirect
256 | RedirectConfig:
257 | Protocol: "HTTPS"
258 | Port: "443"
259 | Host: "#{host}"
260 | Path: "/#{path}"
261 | Query: "#{query}"
262 | StatusCode: "HTTP_301"
263 |
264 | HttpsListener:
265 | Type: 'AWS::ElasticLoadBalancingV2::Listener'
266 | Condition: LoadBalancerCertificateArn
267 | Properties:
268 | Certificates:
269 | - CertificateArn: !Ref LoadBalancerCertArn
270 | DefaultActions:
271 | - TargetGroupArn: !Ref DefaultTargetGroup
272 | Type: forward
273 | LoadBalancerArn: !Ref LoadBalancer
274 | Port: 443
275 | Protocol: HTTPS
276 | SslPolicy: !Ref SSLSecurityPolicy
277 |
278 | DefaultTargetGroup:
279 | Type: 'AWS::ElasticLoadBalancingV2::TargetGroup'
280 | Properties:
281 | Name: !Ref TargetGroupName
282 | HealthCheckIntervalSeconds: 15
283 | HealthCheckPath: '/'
284 | HealthCheckProtocol: HTTP
285 | HealthCheckTimeoutSeconds: 10
286 | HealthyThresholdCount: 2
287 | UnhealthyThresholdCount: 2
288 | Matcher:
289 | HttpCode: 200
290 | Port: !Ref ContainerPort
291 | Protocol: HTTP
292 | VpcId: !Ref VpcId
293 | TargetType: ip
294 | TargetGroupAttributes:
295 | - Key: deregistration_delay.timeout_seconds
296 | Value: 300
297 | - Key : stickiness.enabled
298 | Value: true
299 |
300 | AlbSecurityGroups:
301 | Type: AWS::EC2::SecurityGroup
302 | Properties:
303 | GroupDescription: Allow HTTP and HTTPs inbound from everywhere
304 | GroupName: AllowHTTPAndHTTPs
305 | VpcId: !Ref VpcId
306 | SecurityGroupIngress:
307 | - IpProtocol: tcp
308 | FromPort: 443
309 | ToPort: 443
310 | CidrIp: 0.0.0.0/0
311 |
312 | - IpProtocol: tcp
313 | FromPort: 80
314 | ToPort: 80
315 | CidrIp: 0.0.0.0/0
316 |
317 | EcsCluster:
318 | Type: AWS::ECS::Cluster
319 | Properties:
320 | ClusterName: !Ref ECSCluster
321 | ClusterSettings:
322 | - Name: containerInsights
323 | Value: enabled
324 |
325 | EcsService:
326 | Type: AWS::ECS::Service
327 | DependsOn: [LoadBalancer, HttpsListener, TaskDefinition]
328 | Properties:
329 | LaunchType: FARGATE
330 | Cluster: !Ref EcsCluster
331 | TaskDefinition: !Ref TaskDefinition
332 | ServiceName: !Ref ECSService
333 | SchedulingStrategy: REPLICA
334 | DeploymentConfiguration:
335 | MaximumPercent: 200
336 | MinimumHealthyPercent: 100
337 | DesiredCount: 1
338 | HealthCheckGracePeriodSeconds: 300
339 | LoadBalancers:
340 | - ContainerName: !Sub 'Shiny-Container'
341 | ContainerPort: !Ref ContainerPort
342 | TargetGroupArn: !Ref DefaultTargetGroup
343 | NetworkConfiguration:
344 | AwsvpcConfiguration:
345 | AssignPublicIp: DISABLED
346 | SecurityGroups:
347 | - !Ref TaskDefSecurityGroups
348 | Subnets:
349 | - !Ref PrivateSubnet1
350 | - !Ref PrivateSubnet2
351 |
352 | TaskDefinition:
353 | Type: AWS::ECS::TaskDefinition
354 | DependsOn: ExecutionRole
355 | Properties:
356 | Family: !Ref TaskDefFamily
357 | Memory: 2048
358 | Cpu: 1024
359 | NetworkMode: awsvpc
360 | RequiresCompatibilities:
361 | - 'FARGATE'
362 | # TaskRoleArn: None
363 | ExecutionRoleArn: !Ref ExecutionRole
364 | ContainerDefinitions:
365 | - Name: !Sub 'Shiny-Container'
366 | Image: !Ref ImageUri
367 | Cpu: 1024
368 | Memory: 2048
369 | PortMappings:
370 | - ContainerPort: !Ref ContainerPort
371 | Protocol: !Ref Protocol
372 |
373 | ExecutionRole:
374 | Type: AWS::IAM::Role
375 | Properties:
376 | RoleName: !Sub 'MathRole-ECSExecutionRole'
377 | PermissionsBoundary: !Sub arn:aws:iam::${AWS::AccountId}:policy/Math-Boundary-Policy
378 | AssumeRolePolicyDocument:
379 | Version: '2012-10-17'
380 | Statement:
381 | - Effect: Allow
382 | Principal:
383 | Service:
384 | - ecs-tasks.amazonaws.com
385 | Action:
386 | - sts:AssumeRole
387 | ManagedPolicyArns:
388 | - arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
389 |
390 | TaskDefSecurityGroups:
391 | Type: AWS::EC2::SecurityGroup
392 | Properties:
393 | GroupDescription: Allow container port to access the app exposed to docker container port
394 | GroupName: RshinySecGroup
395 | VpcId: !Ref VpcId
396 | SecurityGroupIngress:
397 | - IpProtocol: tcp
398 | FromPort: !Ref ContainerPort
399 | ToPort: !Ref ContainerPort
400 | SourceSecurityGroupId: !Ref AlbSecurityGroups
401 |
402 | BuildProject:
403 | Type: AWS::CodeBuild::Project
404 | DependsOn: [CodeBuildPolicy, TaskDefSecurityGroups]
405 | Properties:
406 | Name: !Ref CodeBuildProjectName
407 | ServiceRole: !Ref CodeBuildRole
408 | Artifacts:
409 | Type: CODEPIPELINE
410 | Environment:
411 | Type: LINUX_CONTAINER
412 | ComputeType: !Ref BuildInstanceSize
413 | Image: !Ref DeployImage
414 | PrivilegedMode: Yes
415 | EnvironmentVariables:
416 | - Name: ContainerRepositoryName
417 | Type: PLAINTEXT
418 | Value: !Sub '${AWS::AccountId}.dkr.ecr.us-east-1.amazonaws.com/${EcrRepositoryName}'
419 | - Name: S3CodeArtifactBucket
420 | Type: PLAINTEXT
421 | Value: !Ref CodeArtifactBucket
422 | - Name: BaseImageAccountId
423 | Type: PLAINTEXT
424 | Value: !Sub '${AWS::AccountId}'
425 | Source:
426 | Type: CODEPIPELINE
427 | BuildSpec: !Ref BuildSpecLoc
428 |
429 | CodeBuildRole:
430 | Type: AWS::IAM::Role
431 | Properties:
432 | RoleName: !Sub 'MathRole-CodeBuild'
433 | PermissionsBoundary: !Sub arn:aws:iam::${AWS::AccountId}:policy/Math-Boundary-Policy
434 | AssumeRolePolicyDocument:
435 | Version: '2012-10-17'
436 | Statement:
437 | - Effect: Allow
438 | Principal:
439 | Service:
440 | - codebuild.amazonaws.com
441 | Action:
442 | - sts:AssumeRole
443 | ManagedPolicyArns:
444 | - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser
445 |
446 | CodeBuildPolicy:
447 | Type: AWS::IAM::Policy
448 | DependsOn: CodeBuildRole
449 | Properties:
450 | PolicyName: !Sub 'MathPolicy-CodeBuildPolicy'
451 | PolicyDocument:
452 | Version: "2012-10-17"
453 | Statement:
454 | Effect: Allow
455 | Action:
456 | - s3:*
457 | - logs:*
458 | - codebuild:*
459 | - ec2:*
460 | - codepipeline:*
461 | - iam:PassRole
462 | - iam:ListRoles
463 | - ecs:*
464 | - ssm:GetParameter
465 | - ssm:DescribeParameters
466 | - ssm:GetParameters
467 | - ssm:AddTagsToResource
468 | Resource: "*"
469 | Roles:
470 | - !Ref CodeBuildRole
471 |
472 | CodePipeline:
473 | Type: AWS::CodePipeline::Pipeline
474 | DependsOn: [BuildProject, CodePipelinePolicy, PipelineArtifactBucket,EcsService]
475 | Properties:
476 | Name: !Ref PipelineName
477 | RoleArn: !GetAtt CodePipelineServiceRole.Arn
478 | ArtifactStore:
479 | Type: S3
480 | Location: !Ref PipelineArtifactBucket
481 | Stages:
482 | - Name: Source
483 | Actions:
484 | - Name: GitHub
485 | ActionTypeId:
486 | Category: Source
487 | Owner: ThirdParty
488 | Version: 1
489 | Provider: GitHub
490 | OutputArtifacts:
491 | - Name: Source
492 | Configuration:
493 | Owner: !Ref GitHubUser
494 | Repo: !Ref GitHubRepository
495 | Branch: !Ref GitHubBranch
496 | OAuthToken: '{{resolve:secretsmanager:covid-risk-score/rshiny/oauth:SecretString}}'
497 | PollForSourceChanges: true
498 | RunOrder: 1
499 |
500 | - Name: DockerBuild
501 | Actions:
502 | - Name: CodeBuild
503 | InputArtifacts:
504 | - Name: Source
505 | ActionTypeId:
506 | Category: Build
507 | Owner: AWS
508 | Version: 1
509 | Provider: CodeBuild
510 | OutputArtifacts:
511 | - Name: BuildOutput
512 | Configuration:
513 | ProjectName: !Ref BuildProject
514 | RunOrder: 1
515 |
516 | - Name: ECSDeploy
517 | Actions:
518 | - Name: DeployContainers
519 | InputArtifacts:
520 | - Name: BuildOutput
521 | ActionTypeId:
522 | Category: Deploy
523 | Owner: AWS
524 | Version: 1
525 | Provider: ECS
526 | Configuration:
527 | ClusterName: !Ref ECSCluster
528 | ServiceName: !Ref ECSService
529 | FileName: imagedefinitions.json
530 | RunOrder: 1
531 |
532 | PipelineArtifactBucket:
533 | Type: AWS::S3::Bucket
534 | Properties:
535 | BucketName: !Sub '${ApplicationName}-rshiny-pipeline-artifacts'
536 | BucketEncryption:
537 | ServerSideEncryptionConfiguration:
538 | - ServerSideEncryptionByDefault:
539 | SSEAlgorithm: AES256
540 | PublicAccessBlockConfiguration:
541 | BlockPublicAcls: true
542 | BlockPublicPolicy: true
543 | IgnorePublicAcls: true
544 | RestrictPublicBuckets: true
545 |
546 | CodeArtifactBucket:
547 | Type: AWS::S3::Bucket
548 | Properties:
549 | BucketName: !Sub '${ApplicationName}-rshiny-code-artifacts'
550 | BucketEncryption:
551 | ServerSideEncryptionConfiguration:
552 | - ServerSideEncryptionByDefault:
553 | SSEAlgorithm: AES256
554 | PublicAccessBlockConfiguration:
555 | BlockPublicAcls: true
556 | BlockPublicPolicy: true
557 | IgnorePublicAcls: true
558 | RestrictPublicBuckets: true
559 |
560 | CodePipelineServiceRole:
561 | Type: AWS::IAM::Role
562 | Properties:
563 | RoleName: !Sub 'MathRole-CodePipelineServiceRole'
564 | PermissionsBoundary: !Sub arn:aws:iam::${AWS::AccountId}:policy/Math-Boundary-Policy
565 | Path: /
566 | AssumeRolePolicyDocument:
567 | Version: 2012-10-17
568 | Statement:
569 | - Effect: Allow
570 | Principal:
571 | Service: codepipeline.amazonaws.com
572 | Action: sts:AssumeRole
573 |
574 | CodePipelinePolicy:
575 | Type: AWS::IAM::Policy
576 | DependsOn: CodePipelineServiceRole
577 | Properties:
578 | PolicyName: !Sub 'MathPolicy-CodePipelinePolicy'
579 | PolicyDocument:
580 | Version: "2012-10-17"
581 | Statement:
582 | Effect: Allow
583 | Action:
584 | - logs:CreateLogGroup
585 | - logs:CreateLogStream
586 | - logs:PutLogEvents
587 | - ecs:*
588 | - elasticloadbalancing:*
589 | - s3:PutObject
590 | - s3:GetObject
591 | - ecr:DescribeImages
592 | - iam:PassRole
593 | - iam:ListRoles
594 | - codebuild:*
595 | - cloudformation:List*
596 | - cloudformation:Get*
597 | - cloudformation:PreviewStackUpdate
598 | - cloudformation:ValidateTemplate
599 | - cloudformation:CreateStack
600 | - cloudformation:CreateUploadBucket
601 | - cloudformation:DeleteStack
602 | - cloudformation:Describe*
603 | - cloudformation:UpdateStack
604 | Resource: "*"
605 | Roles:
606 | - !Ref CodePipelineServiceRole
607 |
608 |
609 | ####################################################################
610 | # OUTPUTS
611 | ####################################################################
612 | Outputs:
613 | PipelineUrl:
614 | Value: !Sub https://console.aws.amazon.com/codepipeline/home?region=${AWS::Region}#/view/${CodePipeline}
615 | Description: Codepipeline location
616 | Export:
617 | Name: !Sub ${AWS::StackName}-CodePipeline
618 |
619 |
--------------------------------------------------------------------------------
/app/info_html.R:
--------------------------------------------------------------------------------
1 |
2 | # disclaimer popup
3 | disclaimerpopupHTML <- function(){
4 | # return
5 | tagList(
6 | tags$p("This tool works best on Google Chrome and mobile.", class = "text-warning"),
7 | tags$p("We do not retain any information that you provide in connection with your use of the tool."),
8 | tags$p("Your use of this tool is subject to these ", tags$a("Terms of Use.", href=urls$terms_of_use)),
9 | tags$p(style="color:#DF691A", "THE INFORMATION PROVIDED BY THIS TOOL IS NOT MEDICAL ADVICE AND CANNOT BE
10 | USED TO DIAGNOSE OR TREAT ANY MEDICAL CONDITION. See FAQ for more information.", class = "text-warning"),
11 | tags$p("The 19andMe app and API are no longer being updated as of March 31st, 2023.
12 | For demonstration purposes, the tool returns risk scores as of April 6th, 2022.", class = "text-warning")
13 | )
14 | }
15 |
16 | # render the Methodology
17 | renderMethodsHtml <- function() {
18 | # return
19 | tagList(
20 | tags$p(""),
21 | tags$p('Our "Risk Score" visualization is the quantity {Exposure * Susceptibility}, normalized by the average disease burden of flu for the average American, logarithmically scaled.'),
22 | tags$p('In the 2018-2019 flu season, the US had 35 million cases, 0.5 million hospitalizations, and almost 35,000 deaths (',
23 | tags$a('Source: CDC', href = urls$cdc_flu),
24 | ').'),
25 | tags$p("Exposure represents how likely it is that you've been infected with the virus. It's a function of the prevalence of active cases in your
26 | community and ",
27 | tags$a("transmissibility estimates.", href = urls$cdc_mm6909e1),
28 | "You can reduce your exposure by ",
29 | tags$a("social distancing, practicing good hygiene, and closely following the directives of your local public health officials.",
30 | href = urls$cdc_prevention),
31 | "Your personal susceptibility to COVID-19 is quantified by {P(hospitalization) + P(ICU) + P(death)}.",
32 | "Please remember that even if your personal susceptibility is low, you can still help by preventing spread to others."
33 | ),
34 | tags$p(""),
35 | tags$h4("Exposure:"),
36 | tags$ol(
37 | tags$li(
38 | "To estimate the number of people in your county currently infected with COVID-19, we use the county-level daily case counts reported by ",
39 | tags$a("the USAFacts published data on COVID-19 cases & deaths ", href = urls$usafacts_data),
40 | " and the average length of sickness reported by ",
41 | tags$a("Wolfel et al (2020)", href = urls$wolfer_etall_2020), " and the ",
42 | tags$a("COVID-19 Symptom Study. ", href = urls$covid_symptom_study),
43 | "USAFacts reports all Kansas City cases under Jackson County, MO even though three other counties overlap Kansas City, ",
44 | "so we report cases for all four of these counties aggregated together into 'Kansas City and surrounding counties'."),
45 | tags$li(
46 | "Due to rapid spread and insufficient testing during the COVID-19 pandemic, there are likely additional unreported cases beyond the
47 | officially reported cases. We use the methodology reported by ", tags$a("Russell et al (2020)", href = urls$russel_etal_2020),
48 | "and the infection fatality rate used in the economic analysis by ",
49 | tags$a("Xue et al (2022)", href=urls$xue_etal_2022),
50 | "to estimate the number of cases in your county that were not reported."),
51 |
52 | tags$ul(tags$li("The methodology from ", tags$a("Russell et al (2020)", href = urls$russel_etal_2020),
53 | " uses the county-level case fatality rate (CFR) to estimate the percentage of cases that are not reported. ",
54 | "Because under-reporting has decreased since the beginning of the pandemic (in part due to increased access to testing), ",
55 | " we use a 90-day moving window for cases and deaths to calculate the county-level CFR. ",
56 | "Because the CFR is noisy for counties with few cases, we use an ",
57 | tags$a("empirical Bayes", href = urls$empirical_bayes), " adjustment to shrink the county CFR ",
58 | "towards the state CFR.",
59 | "The result is that for counties with many cases, we essentially use the county-level CFR, ",
60 | "but for counties with only a few cases we use a CFR that is partway between the county and state CFRs. ")),
61 | tags$li(
62 | "Estimations of the probability of having COVID-19 given symptoms are calculated using a logistic regression model published on Nature Medicine developed by ",
63 | tags$a("Menni et al (2020).", href = urls$menni_etall_2020),
64 | "This is the largest study so far using self-reported symptoms of more than 2.6 million participants to predict probable infection of COVID-19. "
65 | ),
66 | tags$li("The effects of wearing masks and hand hygiene on reducing the spread of SARS-CoV-2 and similar respiratory viruses were obtained from two systematic review and meta-analysis studies: ",
67 | tags$a("Chu et al (2020) ", href = urls$chu_etal_2020),
68 | "and ",
69 | tags$a("Jefferson et al (2008). ", href = urls$jefferson_etal_2008),
70 | "Without randomized trials, these systematic appraisals of the current best available evidence are useful to inform interim guidance. "),
71 | tags$li("The efficacy data of the Pfizer-BioNTech, Moderna, Johnson and Johnson, and AstraZeneca COVID-19 vaccines against infection were obtained from
72 | FDA Emergency Use Authorization fact sheets and peer-reviewed journal articles",
73 | tags$a("FDA (2020a)", href = urls$pfizer_eua_2020), ", ", tags$a("FDA (2020b)", href = urls$moderna_eua_2020), ", ",
74 | tags$a("FDA (2021)", href = urls$jandj_eua_2021), ", and ", tags$a("Voysey et al (2021)", href = urls$voysey_etal_2021),
75 | ". We adjusted these vaccine efficacy rates to account for the Delta variant by using
76 | a recent large-scale study in the United Kingdom on vaccine efficacy the B.1.617.2 (Delta) variant completed by ",
77 | tags$a("Bernal et al (2021b)", href = urls$bernal_etal_2021b),
78 | ". Then we estimated vaccine effectiveness over time based on a systematic review and meta-regression completed by ",
79 | tags$a("Feilkin et al (2021)", href = urls$feilkin_etal_2021), "."),
80 | tags$li("Activity risk levels for COVID-19 are based on a professional review panel completed by ",
81 | tags$a("BellAge", href = urls$bellage_activity_chart),
82 | ". To provide 19 and Me users with a general idea of how different activities affect risk of COVID-19 through community exposure,
83 | we grouped the activities into three categories -- high, medium, and low risk -- and assigned an equivalent
84 | number of direct contacts for each activity risk categories.
85 | Activities in the low risk category have a value of 0.5 direct contacts, medium is
86 | 1.5 direct contacts and high is 3 direct contacts. For each activity checked, the equivalent number of direct contacts is added to the number of direct
87 | contacts used to compute the risk score. For example, if two low risk activities are selected, the 19 and Me calculator
88 | adds 1 direct contact to the person's risk level." )
89 | ), # end of ol
90 | tags$h4("Susceptibility:"),
91 | tags$ol(
92 | tags$li(
93 | "Estimates of the probability of hospitalization, ICU admission, and death among all infections, stratified by age groups, were calculated using the ",
94 | tags$a("CDC's COVID-19 Case Surveillance Public Use Data. ", href = urls$cdc_case_surv),
95 | "The calculation includes data from a recent 6-month period and ",
96 | "rates are adjusted downward to account for under-reporting of cases (the national estimate of the percentage of cases that go unreported ",
97 | "for this time period was calculated using the same methodology describe in 'Exposure')."
98 | ),
99 | tags$li("Estimations of risk factors associated with sex and underlying medical conditions were obtained from multiple studies. ",
100 | "Odds ratios are adjusted for age, sex, and other underlying conditions. ",
101 | "When an odds ratio is below 1 with a confidence interval containing 1, we round up to 1 so that no chronic conditions will decrease the COVID-19 risk score",
102 | "When no odds ratio is available for a given condition and outcome, ",
103 | "we use the same odds ratio as for another outcome (ex. use the same odds ratio for hospitalization and ICU risk). ",
104 | "In selecting studies to include, we prioritize large, US-based studies that are peer-reviewed and published in distinguished journals like Lancet, Nature, NEJM. ",
105 | "There is a temporal aspect because the earliest studies are likely selected because it was the only one available at the time. ",
106 | "Later during our monthly review and update process, if the more recent studies are considerably different from the current parameter, we would update its value. ",
107 | tags$a("Gottlieb et al (2020) ", href = urls$gottlieb),
108 | "was selected for risk factors associated with hospitalizations and ICU admissions because it is a large Chicago-based study",
109 | " that has accounted for the coexistence of multiple risk factors. ",
110 | tags$a("Zambrano et al (2020) ", href = urls$zambrano),
111 | "was selected because it was the most recent CDC MMWR that reports increased risks of severe illness associated with pregnancy.",
112 | tags$a("OpenSAFELY (2020)", href = urls$open_safely), " was a large UK study based on 17 million adults' primary care records. ",
113 | "The risk of mortality associated with various age groups in the US follows a comparable pattern to that reported by OpenSAFELY ",
114 | tags$a("(Jin et al 2020). ", href = urls$jin_etal_2020),
115 | "The risk factors of mortality were also complemented by ",
116 | tags$a("FAIR Health, ", href = urls$fairhealth),
117 | "and ",
118 | tags$a("CDC MMWR (2020). ", href = urls$cdc_mm6913e2),
119 | "We keep the list of comorbidities included in the app to be consistent with the CDC list of medical conditions that increase the risk of severe illness ",
120 | tags$a("(CDC 2021). ", href = urls$cdc_medicalconditions)
121 | ),
122 | tags$li("Odds ratios for hospitalization, ICU admission, and death associated with exercise level were obtained from ",
123 | tags$a("Sallis et al (2021)", href = urls$sallis_etal_2021), "."
124 | ),
125 | tags$li("Based on a recent large scale study in older adults in England ",
126 | tags$a("(Bernal et al 2021a), ", href = urls$bernal_etal_2021a),
127 | "we estimated the effectiveness of vaccine against emergency hospital admissions and mortality.
128 | This is an imperfect proxy, and we will keep monitoring the literature and update the calculation as more data on other population segments become available.
129 | Then we estimated vaccine effectiveness over time based on a systematic review and meta-regression completed by ",
130 | tags$a("Feilkin et al (2021)", href = urls$feilkin_etal_2021), "."),
131 | ), #end of ol
132 | tags$br(),
133 | tags$p("If you have additional suggestions about the app, data sets, or features, Please let us know at",
134 | tags$a("covid.risk.score@gmail.com", href="mailto:covid.risk.score@gmail.com"),
135 | "or visit us on ", tags$a("GitHub", href="https://github.com/mathematica-mpr/covid_risk_score"))
136 | ) # end of ul
137 | }
138 |
139 | # helper function for rendering FAQ's
140 | faqQuestion<- function(string) {
141 | return (tags$li(tags$b(tags$span(style="color:#DF691A", string))))
142 | }
143 |
144 | # render the FAQ's
145 | renderFaqHtml <- function() {
146 | # return
147 | tagList(
148 | tags$h3("Frequently Asked Questions:"),
149 | faqQuestion("I understand that the information provided by the tool is not medical advice and cannot be
150 | used to diagnose or treat any medical condition, so how should I best use the information provided
151 | by the tool?"),
152 | tags$p("This tool provides you with an estimation of your personal susceptibility or risk of contracting
153 | COVID-19 based on the information you input into the tool. We believe that having this information
154 | can help you make better decisions when going about your daily activities. Whatever your personal
155 | risk of contracting COVID-19 may be, you should always follow the ",
156 | tags$a("CDC’s guidelines", href="https://www.cdc.gov/coronavirus/2019-ncov/communication/guidance-list.html?Sort=Date%3A%3Adesc"),
157 | " and any other guidelines provided by your state or local public health officials. It is also very important to remember that even
158 | if your risk is low, following the ",
159 | tags$a("CDC’s guidelines", href="https://www.cdc.gov/coronavirus/2019-ncov/communication/guidance-list.html?Sort=Date%3A%3Adesc"),
160 | " will help prevent spreading COVID-19 to others."),
161 | faqQuestion("Are my data captured by the app?"),
162 | tags$p("No, we do not collect or store any data you put in. We want this app to be a tool that can serve you."),
163 | faqQuestion("Why is my score so high?"),
164 | tags$p("We wanted our tool to be sensitive to the wide variety of circumstances encountered in the US right now;",
165 | "as a result, it's calibrated around a score of 50. A score of 50 is defined as an equal disease burden as ",
166 | "the flu, estimated based on total number of flu cases, hospitalizations, ICU admission, and deaths in the ",
167 | "2018-2019 flu season. For every 10x change in (Exposure*Susceptibility), the score will change by 50/3.",
168 | "Thus, for two users, one with a score of 20, and one with a score of 70, the user with a score of 70 is",
169 | "1000x more likely to have been exposed to COVID-19 and experience a serious consequence (hospitalization, ",
170 | "ICU admission, or death)."),
171 | faqQuestion("My family is sheltering in place with me. Should I count them as exposure risks?"),
172 | tags$p("As long as your family has been sheltering in place with you, you should be able to think of your family",
173 | "as a single \"user\" of the tool. However, bear in mind that their exposure risks become yours, and vice",
174 | "versa."),
175 | faqQuestion("My county only has a few (tens, hundreds, thousands) of cases. Why is my exposure risk so high?"),
176 | tags$p("Probably the most difficult/controversial/inaccurate part of our calculator is our estimation of the",
177 | "underreporting factor, the factor we use to estimate the true, larger, community prevalence of COVID-19",
178 | "in your community. In some places, our tool may be overestimating this factor, and in some places, it",
179 | "may be underestimating. Even so, it's probably good enough to get you a ballpark estimate of your risk."),
180 | tags$p("If your community has seen a huge increase in testing, has a \"test positive\" rate < 5%, and if you",
181 | "feel like anyone that wants to be tested is being tested promptly, then I think there is reason to",
182 | "believe that the authorities are tracking most of the community cases of COVID-19 in your area.",
183 | "Unfortunately, that is not true of most of the US at present."),
184 | faqQuestion("My specific medical condition isn't listed. What do I do?"),
185 | tags$p("Try using \"other conditions\" to get a catch-all estimate of your susceptibility."),
186 | faqQuestion("How is my sex assigned at birth used in risk score calculations?"),
187 | tags$p("For exposure risk, the ", tags$a("Menni et al (2020)", href = urls$menni_etall_2020), " model included
188 | self-reported 'sex at birth' as a binary independent variable with 1 indicative of male participants and 0 representing
189 | females. Therefore for the app, if sex assigned at birth selected is 'Other' or 'Prefer not to say',
190 | for the estimations of probability of symptomatic COVID-19, we code these inputs as having a 'sex at birth' equal to 0.5."),
191 | tags$p("For susceptibility, we used the original data from ", tags$a("Verity et al (2020)", href = urls$verity_etal_2020),
192 | " for people at different age groups. If the sex assigned at birth selected is 'Male' or 'Female', then we modify the estimates from ",
193 | tags$a("Verity et al (2020)", href = urls$verity_etal_2020), "by male and female odds ratio from this preprint by ",
194 | tags$a("Caramelo et al (2020)", href = urls$caramelo_etal_2020),
195 | "and if the sex assigned at birth selected is 'Other' or 'Prefer not to say', then we do not modify the estimates." ),
196 | faqQuestion("Why is race not in your app?"),
197 | tags$p("While we acknowledge people from different race groups experience different levels of adverse health outcomes due to COVID-19",
198 | ", we think race is an 'indicator', not mechanistically causal. There are other exogenous variables that better explain the health outcomes, ",
199 | "such as access to health care, nutrition, residential condition, occupation, etc. We will try to incorporate these other features when data become available."),
200 | faqQuestion("When you report 'probability of catching COVID-19 through community transmission', over what period of time does this refer to? Is this XX% chance per day?"),
201 | tags$p("We calculate the probability of community transmission as a function of the number of close contacts in a week and",
202 | "prevalence in your local community, so this is a weekly probability."),
203 | faqQuestion("Why is pregnancy added to the list of underlying conditions"),
204 | tags$p("CDC recently revised its recommendations and started to suggest pregnancy increases the risks",
205 | "of severe COVID-19 illness. Therefore we revised the list of medical conditions. ",
206 | "Odds ratio related to pregnancy was obtained from ",
207 | tags$a("Zambrano et al (2020) .", href = urls$zambrano)),
208 | faqQuestion("Are vaccinated individuals less likely to transmit COVID-19 to others around them?"),
209 | tags$p("According to the ", tags$a("CDC (2021) , ", href = urls$cdc_vax_science_brief), " data from multiple studies in different countries suggest that people vaccinated with Pfizer-BioNTech COVID-19 vaccine
210 | who develop COVID-19 have a lower viral load than unvaccinated people. This observation may indicate reduced transmissibility",
211 | "as viral load has been identified as a key driver of transmission. ", "However, infections in fully vaccinated persons are more commonly
212 | observed with the Delta variant than with other SARS-CoV-2 variants. Infections with the Delta variant in vaccinated persons potentially have reduced transmissibility than infections in unvaccinated persons",
213 | "although additional studies are needed. "),
214 | faqQuestion("How are you accounting for the dominance of the Delta variant?"),
215 | tags$p("Delta variant has changed the pandemic in two ways: increased transmission and decreased vaccination effectiveness. ",
216 | "Therefore, we have updated the transmissibility parameter in the model to account for the more contagious Delta variant. ",
217 | tags$a("The CDC (2021)", href = urls$cdc_delta_variant), " estimates that the Delta variant is more than 2x as contagious as previous variants. ",
218 | "Vaccines in the US are still highly effective, including against the Delta variant, but they are not 100% effective. ",
219 | "We modified the algorithm to account for reduced vaccine protection against Delta variant infections, using the recent data from ",
220 | "a recent study from ", tags$a("Bernal et al (2021b) .", href = urls$bernal_etal_2021b)),
221 | faqQuestion("When was the most recent update to the app and what is new?"),
222 | tags$p("We are no longer updating the COVID-19 data behind this app nor the algorithm used for risk score estimation. ",
223 | "Visit the \"Change Log\" tab to see the past updates to the algorithm."),
224 | faqQuestion("Why is the tool calculating risk scores as of April 6th 2022?"),
225 | tags$p("On March 31, 2023, the 19andMe api was discontinued and is no longer being maintained. ",
226 | "For demonstration purposes, the tool returns risk scores as of April 6th, 2022. ",
227 | "We choose the date April 6th 2022 for two reasons. ",
228 | "First, at-home testing becomes widely available in the spring of 2022. ",
229 | "Second, since spring of 2022 since the official case counts became less reliable. ",
230 | "Missouri is the first state that stopped reporting case data to ", tags$a("USAFacts", href = urls$usafacts_data), ", and they stopped on April 6th, 2022. ",
231 | "Therefore, freezing the tool as of April 6th 2022 will allow most users from anywhere in the country to test out the full functionality of the tool. "),
232 | tags$p("The 19andMe team at ", tags$a("Mathematica", href = "https://www.mathematica.org/"), " thanks you for your support through using, testing, and improving the tool. ",
233 | "We hope the tool has helped you through the COVID-19 public health emergency by empowering you with up-to-date information and personalized risk scores.")
234 | )# end of tag list
235 | }
236 |
237 | # function makes CHANGELOG API call -------------------------------------------------
238 | renderChangelogHtml <- function() {
239 | changelog_r <- GET(urls$covid_change_log_api, add_headers("x-api-key" = Sys.getenv("X_API_KEY")))
240 | changelog_md <- content(changelog_r, "text", encoding = "UTF-8") %>% gsub("\n###", "\n\n###", .) %>% gsub("##", "###", .)
241 | changelog_html <- HTML(markdown::markdownToHTML(text = changelog_md, fragment.only = T))
242 | return (changelog_html)
243 | }
244 |
245 |
--------------------------------------------------------------------------------
/data/county_pop.csv:
--------------------------------------------------------------------------------
1 | "","STATE","COUNTY","POPESTIMATE2019","fips"
2 | "1","01","000",4903185,"01000"
3 | "2","01","001",55869,"01001"
4 | "3","01","003",223234,"01003"
5 | "4","01","005",24686,"01005"
6 | "5","01","007",22394,"01007"
7 | "6","01","009",57826,"01009"
8 | "7","01","011",10101,"01011"
9 | "8","01","013",19448,"01013"
10 | "9","01","015",113605,"01015"
11 | "10","01","017",33254,"01017"
12 | "11","01","019",26196,"01019"
13 | "12","01","021",44428,"01021"
14 | "13","01","023",12589,"01023"
15 | "14","01","025",23622,"01025"
16 | "15","01","027",13235,"01027"
17 | "16","01","029",14910,"01029"
18 | "17","01","031",52342,"01031"
19 | "18","01","033",55241,"01033"
20 | "19","01","035",12067,"01035"
21 | "20","01","037",10663,"01037"
22 | "21","01","039",37049,"01039"
23 | "22","01","041",13772,"01041"
24 | "23","01","043",83768,"01043"
25 | "24","01","045",49172,"01045"
26 | "25","01","047",37196,"01047"
27 | "26","01","049",71513,"01049"
28 | "27","01","051",81209,"01051"
29 | "28","01","053",36633,"01053"
30 | "29","01","055",102268,"01055"
31 | "30","01","057",16302,"01057"
32 | "31","01","059",31362,"01059"
33 | "32","01","061",26271,"01061"
34 | "33","01","063",8111,"01063"
35 | "34","01","065",14651,"01065"
36 | "35","01","067",17205,"01067"
37 | "36","01","069",105882,"01069"
38 | "37","01","071",51626,"01071"
39 | "38","01","073",658573,"01073"
40 | "39","01","075",13805,"01075"
41 | "40","01","077",92729,"01077"
42 | "41","01","079",32924,"01079"
43 | "42","01","081",164542,"01081"
44 | "43","01","083",98915,"01083"
45 | "44","01","085",9726,"01085"
46 | "45","01","087",18068,"01087"
47 | "46","01","089",372909,"01089"
48 | "47","01","091",18863,"01091"
49 | "48","01","093",29709,"01093"
50 | "49","01","095",96774,"01095"
51 | "50","01","097",413210,"01097"
52 | "51","01","099",20733,"01099"
53 | "52","01","101",226486,"01101"
54 | "53","01","103",119679,"01103"
55 | "54","01","105",8923,"01105"
56 | "55","01","107",19930,"01107"
57 | "56","01","109",33114,"01109"
58 | "57","01","111",22722,"01111"
59 | "58","01","113",57961,"01113"
60 | "59","01","115",89512,"01115"
61 | "60","01","117",217702,"01117"
62 | "61","01","119",12427,"01119"
63 | "62","01","121",79978,"01121"
64 | "63","01","123",40367,"01123"
65 | "64","01","125",209355,"01125"
66 | "65","01","127",63521,"01127"
67 | "66","01","129",16326,"01129"
68 | "67","01","131",10373,"01131"
69 | "68","01","133",23629,"01133"
70 | "69","02","000",731545,"02000"
71 | "70","02","013",3337,"02013"
72 | "71","02","016",5634,"02016"
73 | "72","02","020",288000,"02020"
74 | "73","02","050",18386,"02050"
75 | "74","02","060",836,"02060"
76 | "75","02","068",2097,"02068"
77 | "76","02","070",4916,"02070"
78 | "77","02","090",96849,"02090"
79 | "78","02","100",2530,"02100"
80 | "79","02","105",2148,"02105"
81 | "80","02","110",31974,"02110"
82 | "81","02","122",58708,"02122"
83 | "82","02","130",13901,"02130"
84 | "83","02","150",12998,"02150"
85 | "84","02","158",8314,"02158"
86 | "85","02","164",1592,"02164"
87 | "86","02","170",108317,"02170"
88 | "87","02","180",10004,"02180"
89 | "88","02","185",9832,"02185"
90 | "89","02","188",7621,"02188"
91 | "90","02","195",3266,"02195"
92 | "91","02","198",6203,"02198"
93 | "92","02","220",8493,"02220"
94 | "93","02","230",1183,"02230"
95 | "94","02","240",6893,"02240"
96 | "95","02","261",9202,"02261"
97 | "96","02","275",2502,"02275"
98 | "97","02","282",579,"02282"
99 | "98","02","290",5230,"02290"
100 | "99","04","000",7278717,"04000"
101 | "100","04","001",71887,"04001"
102 | "101","04","003",125922,"04003"
103 | "102","04","005",143476,"04005"
104 | "103","04","007",54018,"04007"
105 | "104","04","009",38837,"04009"
106 | "105","04","011",9498,"04011"
107 | "106","04","012",21108,"04012"
108 | "107","04","013",4485414,"04013"
109 | "108","04","015",212181,"04015"
110 | "109","04","017",110924,"04017"
111 | "110","04","019",1047279,"04019"
112 | "111","04","021",462789,"04021"
113 | "112","04","023",46498,"04023"
114 | "113","04","025",235099,"04025"
115 | "114","04","027",213787,"04027"
116 | "115","05","000",3017804,"05000"
117 | "116","05","001",17486,"05001"
118 | "117","05","003",19657,"05003"
119 | "118","05","005",41932,"05005"
120 | "119","05","007",279141,"05007"
121 | "120","05","009",37432,"05009"
122 | "121","05","011",10763,"05011"
123 | "122","05","013",5189,"05013"
124 | "123","05","015",28380,"05015"
125 | "124","05","017",10118,"05017"
126 | "125","05","019",22320,"05019"
127 | "126","05","021",14551,"05021"
128 | "127","05","023",24919,"05023"
129 | "128","05","025",7956,"05025"
130 | "129","05","027",23457,"05027"
131 | "130","05","029",20846,"05029"
132 | "131","05","031",110332,"05031"
133 | "132","05","033",63257,"05033"
134 | "133","05","035",47955,"05035"
135 | "134","05","037",16419,"05037"
136 | "135","05","039",7009,"05039"
137 | "136","05","041",11361,"05041"
138 | "137","05","043",18219,"05043"
139 | "138","05","045",126007,"05045"
140 | "139","05","047",17715,"05047"
141 | "140","05","049",12477,"05049"
142 | "141","05","051",99386,"05051"
143 | "142","05","053",18265,"05053"
144 | "143","05","055",45325,"05055"
145 | "144","05","057",21532,"05057"
146 | "145","05","059",33771,"05059"
147 | "146","05","061",13202,"05061"
148 | "147","05","063",37825,"05063"
149 | "148","05","065",13629,"05065"
150 | "149","05","067",16719,"05067"
151 | "150","05","069",66824,"05069"
152 | "151","05","071",26578,"05071"
153 | "152","05","073",6624,"05073"
154 | "153","05","075",16406,"05075"
155 | "154","05","077",8857,"05077"
156 | "155","05","079",13024,"05079"
157 | "156","05","081",12259,"05081"
158 | "157","05","083",21466,"05083"
159 | "158","05","085",73309,"05085"
160 | "159","05","087",16576,"05087"
161 | "160","05","089",16694,"05089"
162 | "161","05","091",43257,"05091"
163 | "162","05","093",40651,"05093"
164 | "163","05","095",6701,"05095"
165 | "164","05","097",8986,"05097"
166 | "165","05","099",8252,"05099"
167 | "166","05","101",7753,"05101"
168 | "167","05","103",23382,"05103"
169 | "168","05","105",10455,"05105"
170 | "169","05","107",17782,"05107"
171 | "170","05","109",10718,"05109"
172 | "171","05","111",23528,"05111"
173 | "172","05","113",19964,"05113"
174 | "173","05","115",64072,"05115"
175 | "174","05","117",8062,"05117"
176 | "175","05","119",391911,"05119"
177 | "176","05","121",17958,"05121"
178 | "177","05","123",24994,"05123"
179 | "178","05","125",122437,"05125"
180 | "179","05","127",10281,"05127"
181 | "180","05","129",7881,"05129"
182 | "181","05","131",127827,"05131"
183 | "182","05","133",17007,"05133"
184 | "183","05","135",17442,"05135"
185 | "184","05","137",12506,"05137"
186 | "185","05","139",38682,"05139"
187 | "186","05","141",16545,"05141"
188 | "187","05","143",239187,"05143"
189 | "188","05","145",78753,"05145"
190 | "189","05","147",6320,"05147"
191 | "190","05","149",21341,"05149"
192 | "191","06","000",39512223,"06000"
193 | "192","06","001",1671329,"06001"
194 | "193","06","003",1129,"06003"
195 | "194","06","005",39752,"06005"
196 | "195","06","007",219186,"06007"
197 | "196","06","009",45905,"06009"
198 | "197","06","011",21547,"06011"
199 | "198","06","013",1153526,"06013"
200 | "199","06","015",27812,"06015"
201 | "200","06","017",192843,"06017"
202 | "201","06","019",999101,"06019"
203 | "202","06","021",28393,"06021"
204 | "203","06","023",135558,"06023"
205 | "204","06","025",181215,"06025"
206 | "205","06","027",18039,"06027"
207 | "206","06","029",900202,"06029"
208 | "207","06","031",152940,"06031"
209 | "208","06","033",64386,"06033"
210 | "209","06","035",30573,"06035"
211 | "210","06","037",10039107,"06037"
212 | "211","06","039",157327,"06039"
213 | "212","06","041",258826,"06041"
214 | "213","06","043",17203,"06043"
215 | "214","06","045",86749,"06045"
216 | "215","06","047",277680,"06047"
217 | "216","06","049",8841,"06049"
218 | "217","06","051",14444,"06051"
219 | "218","06","053",434061,"06053"
220 | "219","06","055",137744,"06055"
221 | "220","06","057",99755,"06057"
222 | "221","06","059",3175692,"06059"
223 | "222","06","061",398329,"06061"
224 | "223","06","063",18807,"06063"
225 | "224","06","065",2470546,"06065"
226 | "225","06","067",1552058,"06067"
227 | "226","06","069",62808,"06069"
228 | "227","06","071",2180085,"06071"
229 | "228","06","073",3338330,"06073"
230 | "229","06","075",881549,"06075"
231 | "230","06","077",762148,"06077"
232 | "231","06","079",283111,"06079"
233 | "232","06","081",766573,"06081"
234 | "233","06","083",446499,"06083"
235 | "234","06","085",1927852,"06085"
236 | "235","06","087",273213,"06087"
237 | "236","06","089",180080,"06089"
238 | "237","06","091",3005,"06091"
239 | "238","06","093",43539,"06093"
240 | "239","06","095",447643,"06095"
241 | "240","06","097",494336,"06097"
242 | "241","06","099",550660,"06099"
243 | "242","06","101",96971,"06101"
244 | "243","06","103",65084,"06103"
245 | "244","06","105",12285,"06105"
246 | "245","06","107",466195,"06107"
247 | "246","06","109",54478,"06109"
248 | "247","06","111",846006,"06111"
249 | "248","06","113",220500,"06113"
250 | "249","06","115",78668,"06115"
251 | "250","08","000",5758736,"08000"
252 | "251","08","001",517421,"08001"
253 | "252","08","003",16233,"08003"
254 | "253","08","005",656590,"08005"
255 | "254","08","007",14029,"08007"
256 | "255","08","009",3581,"08009"
257 | "256","08","011",5577,"08011"
258 | "257","08","013",326196,"08013"
259 | "258","08","014",70465,"08014"
260 | "259","08","015",20356,"08015"
261 | "260","08","017",1831,"08017"
262 | "261","08","019",9700,"08019"
263 | "262","08","021",8205,"08021"
264 | "263","08","023",3887,"08023"
265 | "264","08","025",6061,"08025"
266 | "265","08","027",5068,"08027"
267 | "266","08","029",31162,"08029"
268 | "267","08","031",727211,"08031"
269 | "268","08","033",2055,"08033"
270 | "269","08","035",351154,"08035"
271 | "270","08","037",55127,"08037"
272 | "271","08","039",26729,"08039"
273 | "272","08","041",720403,"08041"
274 | "273","08","043",47839,"08043"
275 | "274","08","045",60061,"08045"
276 | "275","08","047",6243,"08047"
277 | "276","08","049",15734,"08049"
278 | "277","08","051",17462,"08051"
279 | "278","08","053",820,"08053"
280 | "279","08","055",6897,"08055"
281 | "280","08","057",1392,"08057"
282 | "281","08","059",582881,"08059"
283 | "282","08","061",1406,"08061"
284 | "283","08","063",7097,"08063"
285 | "284","08","065",8127,"08065"
286 | "285","08","067",56221,"08067"
287 | "286","08","069",356899,"08069"
288 | "287","08","071",14506,"08071"
289 | "288","08","073",5701,"08073"
290 | "289","08","075",22409,"08075"
291 | "290","08","077",154210,"08077"
292 | "291","08","079",769,"08079"
293 | "292","08","081",13283,"08081"
294 | "293","08","083",26183,"08083"
295 | "294","08","085",42758,"08085"
296 | "295","08","087",29068,"08087"
297 | "296","08","089",18278,"08089"
298 | "297","08","091",4952,"08091"
299 | "298","08","093",18845,"08093"
300 | "299","08","095",4265,"08095"
301 | "300","08","097",17767,"08097"
302 | "301","08","099",12172,"08099"
303 | "302","08","101",168424,"08101"
304 | "303","08","103",6324,"08103"
305 | "304","08","105",11267,"08105"
306 | "305","08","107",25638,"08107"
307 | "306","08","109",6824,"08109"
308 | "307","08","111",728,"08111"
309 | "308","08","113",8179,"08113"
310 | "309","08","115",2248,"08115"
311 | "310","08","117",31011,"08117"
312 | "311","08","119",25388,"08119"
313 | "312","08","121",4908,"08121"
314 | "313","08","123",324492,"08123"
315 | "314","08","125",10019,"08125"
316 | "315","09","000",3565287,"09000"
317 | "316","09","001",943332,"09001"
318 | "317","09","003",891720,"09003"
319 | "318","09","005",180333,"09005"
320 | "319","09","007",162436,"09007"
321 | "320","09","009",854757,"09009"
322 | "321","09","011",265206,"09011"
323 | "322","09","013",150721,"09013"
324 | "323","09","015",116782,"09015"
325 | "324","10","000",973764,"10000"
326 | "325","10","001",180786,"10001"
327 | "326","10","003",558753,"10003"
328 | "327","10","005",234225,"10005"
329 | "328","11","000",705749,"11000"
330 | "329","11","001",705749,"11001"
331 | "330","12","000",21477737,"12000"
332 | "331","12","001",269043,"12001"
333 | "332","12","003",29210,"12003"
334 | "333","12","005",174705,"12005"
335 | "334","12","007",28201,"12007"
336 | "335","12","009",601942,"12009"
337 | "336","12","011",1952778,"12011"
338 | "337","12","013",14105,"12013"
339 | "338","12","015",188910,"12015"
340 | "339","12","017",149657,"12017"
341 | "340","12","019",219252,"12019"
342 | "341","12","021",384902,"12021"
343 | "342","12","023",71686,"12023"
344 | "343","12","027",38001,"12027"
345 | "344","12","029",16826,"12029"
346 | "345","12","031",957755,"12031"
347 | "346","12","033",318316,"12033"
348 | "347","12","035",115081,"12035"
349 | "348","12","037",12125,"12037"
350 | "349","12","039",45660,"12039"
351 | "350","12","041",18582,"12041"
352 | "351","12","043",13811,"12043"
353 | "352","12","045",13639,"12045"
354 | "353","12","047",14428,"12047"
355 | "354","12","049",26937,"12049"
356 | "355","12","051",42022,"12051"
357 | "356","12","053",193920,"12053"
358 | "357","12","055",106221,"12055"
359 | "358","12","057",1471968,"12057"
360 | "359","12","059",19617,"12059"
361 | "360","12","061",159923,"12061"
362 | "361","12","063",46414,"12063"
363 | "362","12","065",14246,"12065"
364 | "363","12","067",8422,"12067"
365 | "364","12","069",367118,"12069"
366 | "365","12","071",770577,"12071"
367 | "366","12","073",293582,"12073"
368 | "367","12","075",41503,"12075"
369 | "368","12","077",8354,"12077"
370 | "369","12","079",18493,"12079"
371 | "370","12","081",403253,"12081"
372 | "371","12","083",365579,"12083"
373 | "372","12","085",161000,"12085"
374 | "373","12","086",2716940,"12086"
375 | "374","12","087",74228,"12087"
376 | "375","12","089",88625,"12089"
377 | "376","12","091",210738,"12091"
378 | "377","12","093",42168,"12093"
379 | "378","12","095",1393452,"12095"
380 | "379","12","097",375751,"12097"
381 | "380","12","099",1496770,"12099"
382 | "381","12","101",553947,"12101"
383 | "382","12","103",974996,"12103"
384 | "383","12","105",724777,"12105"
385 | "384","12","107",74521,"12107"
386 | "385","12","109",264672,"12109"
387 | "386","12","111",328297,"12111"
388 | "387","12","113",184313,"12113"
389 | "388","12","115",433742,"12115"
390 | "389","12","117",471826,"12117"
391 | "390","12","119",132420,"12119"
392 | "391","12","121",44417,"12121"
393 | "392","12","123",21569,"12123"
394 | "393","12","125",15237,"12125"
395 | "394","12","127",553284,"12127"
396 | "395","12","129",33739,"12129"
397 | "396","12","131",74071,"12131"
398 | "397","12","133",25473,"12133"
399 | "398","13","000",10617423,"13000"
400 | "399","13","001",18386,"13001"
401 | "400","13","003",8165,"13003"
402 | "401","13","005",11164,"13005"
403 | "402","13","007",3038,"13007"
404 | "403","13","009",44890,"13009"
405 | "404","13","011",19234,"13011"
406 | "405","13","013",83240,"13013"
407 | "406","13","015",107738,"13015"
408 | "407","13","017",16700,"13017"
409 | "408","13","019",19397,"13019"
410 | "409","13","021",153159,"13021"
411 | "410","13","023",12873,"13023"
412 | "411","13","025",19109,"13025"
413 | "412","13","027",15457,"13027"
414 | "413","13","029",39627,"13029"
415 | "414","13","031",79608,"13031"
416 | "415","13","033",22383,"13033"
417 | "416","13","035",24936,"13035"
418 | "417","13","037",6189,"13037"
419 | "418","13","039",54666,"13039"
420 | "419","13","043",10803,"13043"
421 | "420","13","045",119992,"13045"
422 | "421","13","047",67580,"13047"
423 | "422","13","049",13392,"13049"
424 | "423","13","051",289430,"13051"
425 | "424","13","053",10907,"13053"
426 | "425","13","055",24789,"13055"
427 | "426","13","057",258773,"13057"
428 | "427","13","059",128331,"13059"
429 | "428","13","061",2834,"13061"
430 | "429","13","063",292256,"13063"
431 | "430","13","065",6618,"13065"
432 | "431","13","067",760141,"13067"
433 | "432","13","069",43273,"13069"
434 | "433","13","071",45600,"13071"
435 | "434","13","073",156714,"13073"
436 | "435","13","075",17270,"13075"
437 | "436","13","077",148509,"13077"
438 | "437","13","079",12404,"13079"
439 | "438","13","081",22372,"13081"
440 | "439","13","083",16116,"13083"
441 | "440","13","085",26108,"13085"
442 | "441","13","087",26404,"13087"
443 | "442","13","089",759297,"13089"
444 | "443","13","091",20605,"13091"
445 | "444","13","093",13390,"13093"
446 | "445","13","095",87956,"13095"
447 | "446","13","097",146343,"13097"
448 | "447","13","099",10190,"13099"
449 | "448","13","101",4006,"13101"
450 | "449","13","103",64296,"13103"
451 | "450","13","105",19194,"13105"
452 | "451","13","107",22646,"13107"
453 | "452","13","109",10654,"13109"
454 | "453","13","111",26188,"13111"
455 | "454","13","113",114421,"13113"
456 | "455","13","115",98498,"13115"
457 | "456","13","117",244252,"13117"
458 | "457","13","119",23349,"13119"
459 | "458","13","121",1063937,"13121"
460 | "459","13","123",31369,"13123"
461 | "460","13","125",2971,"13125"
462 | "461","13","127",85292,"13127"
463 | "462","13","129",57963,"13129"
464 | "463","13","131",24633,"13131"
465 | "464","13","133",18324,"13133"
466 | "465","13","135",936250,"13135"
467 | "466","13","137",45328,"13137"
468 | "467","13","139",204441,"13139"
469 | "468","13","141",8457,"13141"
470 | "469","13","143",29792,"13143"
471 | "470","13","145",35236,"13145"
472 | "471","13","147",26205,"13147"
473 | "472","13","149",11923,"13149"
474 | "473","13","151",234561,"13151"
475 | "474","13","153",157863,"13153"
476 | "475","13","155",9416,"13155"
477 | "476","13","157",72977,"13157"
478 | "477","13","159",14219,"13159"
479 | "478","13","161",15115,"13161"
480 | "479","13","163",15362,"13163"
481 | "480","13","165",8676,"13165"
482 | "481","13","167",9643,"13167"
483 | "482","13","169",28735,"13169"
484 | "483","13","171",19077,"13171"
485 | "484","13","173",10423,"13173"
486 | "485","13","175",47546,"13175"
487 | "486","13","177",29992,"13177"
488 | "487","13","179",61435,"13179"
489 | "488","13","181",7921,"13181"
490 | "489","13","183",19559,"13183"
491 | "490","13","185",117406,"13185"
492 | "491","13","187",33610,"13187"
493 | "492","13","189",21312,"13189"
494 | "493","13","191",14378,"13191"
495 | "494","13","193",12947,"13193"
496 | "495","13","195",29880,"13195"
497 | "496","13","197",8359,"13197"
498 | "497","13","199",21167,"13199"
499 | "498","13","201",5718,"13201"
500 | "499","13","205",21863,"13205"
501 | "500","13","207",27578,"13207"
502 | "501","13","209",9172,"13209"
503 | "502","13","211",19276,"13211"
504 | "503","13","213",40096,"13213"
505 | "504","13","215",195769,"13215"
506 | "505","13","217",111744,"13217"
507 | "506","13","219",40280,"13219"
508 | "507","13","221",15259,"13221"
509 | "508","13","223",168667,"13223"
510 | "509","13","225",27546,"13225"
511 | "510","13","227",32591,"13227"
512 | "511","13","229",19465,"13229"
513 | "512","13","231",18962,"13231"
514 | "513","13","233",42613,"13233"
515 | "514","13","235",11137,"13235"
516 | "515","13","237",22119,"13237"
517 | "516","13","239",2299,"13239"
518 | "517","13","241",17137,"13241"
519 | "518","13","243",6778,"13243"
520 | "519","13","245",202518,"13245"
521 | "520","13","247",90896,"13247"
522 | "521","13","249",5257,"13249"
523 | "522","13","251",13966,"13251"
524 | "523","13","253",8090,"13253"
525 | "524","13","255",66703,"13255"
526 | "525","13","257",25925,"13257"
527 | "526","13","259",6621,"13259"
528 | "527","13","261",29524,"13261"
529 | "528","13","263",6195,"13263"
530 | "529","13","265",1537,"13265"
531 | "530","13","267",25286,"13267"
532 | "531","13","269",8020,"13269"
533 | "532","13","271",15860,"13271"
534 | "533","13","273",8531,"13273"
535 | "534","13","275",44451,"13275"
536 | "535","13","277",40644,"13277"
537 | "536","13","279",26830,"13279"
538 | "537","13","281",12037,"13281"
539 | "538","13","283",6901,"13283"
540 | "539","13","285",69922,"13285"
541 | "540","13","287",7985,"13287"
542 | "541","13","289",8120,"13289"
543 | "542","13","291",24511,"13291"
544 | "543","13","293",26320,"13293"
545 | "544","13","295",69761,"13295"
546 | "545","13","297",94593,"13297"
547 | "546","13","299",35734,"13299"
548 | "547","13","301",5254,"13301"
549 | "548","13","303",20374,"13303"
550 | "549","13","305",29927,"13305"
551 | "550","13","307",2607,"13307"
552 | "551","13","309",7855,"13309"
553 | "552","13","311",30798,"13311"
554 | "553","13","313",104628,"13313"
555 | "554","13","315",8635,"13315"
556 | "555","13","317",9777,"13317"
557 | "556","13","319",8954,"13319"
558 | "557","13","321",20247,"13321"
559 | "558","15","000",1415872,"15000"
560 | "559","15","001",201513,"15001"
561 | "560","15","003",974563,"15003"
562 | "561","15","005",86,"15005"
563 | "562","15","007",72293,"15007"
564 | "563","15","009",167417,"15009"
565 | "564","16","000",1787065,"16000"
566 | "565","16","001",481587,"16001"
567 | "566","16","003",4294,"16003"
568 | "567","16","005",87808,"16005"
569 | "568","16","007",6125,"16007"
570 | "569","16","009",9298,"16009"
571 | "570","16","011",46811,"16011"
572 | "571","16","013",23021,"16013"
573 | "572","16","015",7831,"16015"
574 | "573","16","017",45739,"16017"
575 | "574","16","019",119062,"16019"
576 | "575","16","021",12245,"16021"
577 | "576","16","023",2597,"16023"
578 | "577","16","025",1106,"16025"
579 | "578","16","027",229849,"16027"
580 | "579","16","029",7155,"16029"
581 | "580","16","031",24030,"16031"
582 | "581","16","033",845,"16033"
583 | "582","16","035",8756,"16035"
584 | "583","16","037",4315,"16037"
585 | "584","16","039",27511,"16039"
586 | "585","16","041",13876,"16041"
587 | "586","16","043",13099,"16043"
588 | "587","16","045",18112,"16045"
589 | "588","16","047",15179,"16047"
590 | "589","16","049",16667,"16049"
591 | "590","16","051",29871,"16051"
592 | "591","16","053",24412,"16053"
593 | "592","16","055",165697,"16055"
594 | "593","16","057",40108,"16057"
595 | "594","16","059",8027,"16059"
596 | "595","16","061",3838,"16061"
597 | "596","16","063",5366,"16063"
598 | "597","16","065",39907,"16065"
599 | "598","16","067",21039,"16067"
600 | "599","16","069",40408,"16069"
601 | "600","16","071",4531,"16071"
602 | "601","16","073",11823,"16073"
603 | "602","16","075",23951,"16075"
604 | "603","16","077",7681,"16077"
605 | "604","16","079",12882,"16079"
606 | "605","16","081",12142,"16081"
607 | "606","16","083",86878,"16083"
608 | "607","16","085",11392,"16085"
609 | "608","16","087",10194,"16087"
610 | "609","17","000",12671821,"17000"
611 | "610","17","001",65435,"17001"
612 | "611","17","003",5761,"17003"
613 | "612","17","005",16426,"17005"
614 | "613","17","007",53544,"17007"
615 | "614","17","009",6578,"17009"
616 | "615","17","011",32628,"17011"
617 | "616","17","013",4739,"17013"
618 | "617","17","015",14305,"17015"
619 | "618","17","017",12147,"17017"
620 | "619","17","019",209689,"17019"
621 | "620","17","021",32304,"17021"
622 | "621","17","023",15441,"17023"
623 | "622","17","025",13184,"17025"
624 | "623","17","027",37562,"17027"
625 | "624","17","029",50621,"17029"
626 | "625","17","031",5150233,"17031"
627 | "626","17","033",18667,"17033"
628 | "627","17","035",10766,"17035"
629 | "628","17","037",104897,"17037"
630 | "629","17","039",15638,"17039"
631 | "630","17","041",19465,"17041"
632 | "631","17","043",922921,"17043"
633 | "632","17","045",17161,"17045"
634 | "633","17","047",6395,"17047"
635 | "634","17","049",34008,"17049"
636 | "635","17","051",21336,"17051"
637 | "636","17","053",12961,"17053"
638 | "637","17","055",38469,"17055"
639 | "638","17","057",34340,"17057"
640 | "639","17","059",4828,"17059"
641 | "640","17","061",12969,"17061"
642 | "641","17","063",51054,"17063"
643 | "642","17","065",8116,"17065"
644 | "643","17","067",17708,"17067"
645 | "644","17","069",3821,"17069"
646 | "645","17","071",6646,"17071"
647 | "646","17","073",48913,"17073"
648 | "647","17","075",27114,"17075"
649 | "648","17","077",56750,"17077"
650 | "649","17","079",9610,"17079"
651 | "650","17","081",37684,"17081"
652 | "651","17","083",21773,"17083"
653 | "652","17","085",21235,"17085"
654 | "653","17","087",12417,"17087"
655 | "654","17","089",532403,"17089"
656 | "655","17","091",109862,"17091"
657 | "656","17","093",128990,"17093"
658 | "657","17","095",49699,"17095"
659 | "658","17","097",696535,"17097"
660 | "659","17","099",108669,"17099"
661 | "660","17","101",15678,"17101"
662 | "661","17","103",34096,"17103"
663 | "662","17","105",35648,"17105"
664 | "663","17","107",28618,"17107"
665 | "664","17","109",29682,"17109"
666 | "665","17","111",307774,"17111"
667 | "666","17","113",171517,"17113"
668 | "667","17","115",104009,"17115"
669 | "668","17","117",44926,"17117"
670 | "669","17","119",262966,"17119"
671 | "670","17","121",37205,"17121"
672 | "671","17","123",11438,"17123"
673 | "672","17","125",13359,"17125"
674 | "673","17","127",13772,"17127"
675 | "674","17","129",12196,"17129"
676 | "675","17","131",15437,"17131"
677 | "676","17","133",34637,"17133"
678 | "677","17","135",28414,"17135"
679 | "678","17","137",33658,"17137"
680 | "679","17","139",14501,"17139"
681 | "680","17","141",50643,"17141"
682 | "681","17","143",179179,"17143"
683 | "682","17","145",20916,"17145"
684 | "683","17","147",16344,"17147"
685 | "684","17","149",15561,"17149"
686 | "685","17","151",4177,"17151"
687 | "686","17","153",5335,"17153"
688 | "687","17","155",5739,"17155"
689 | "688","17","157",31782,"17157"
690 | "689","17","159",15513,"17159"
691 | "690","17","161",141879,"17161"
692 | "691","17","163",259686,"17163"
693 | "692","17","165",23491,"17165"
694 | "693","17","167",194672,"17167"
695 | "694","17","169",6768,"17169"
696 | "695","17","171",4951,"17171"
697 | "696","17","173",21634,"17173"
698 | "697","17","175",5342,"17175"
699 | "698","17","177",44498,"17177"
700 | "699","17","179",131803,"17179"
701 | "700","17","181",16653,"17181"
702 | "701","17","183",75758,"17183"
703 | "702","17","185",11520,"17185"
704 | "703","17","187",16844,"17187"
705 | "704","17","189",13887,"17189"
706 | "705","17","191",16215,"17191"
707 | "706","17","193",13537,"17193"
708 | "707","17","195",55175,"17195"
709 | "708","17","197",690743,"17197"
710 | "709","17","199",66597,"17199"
711 | "710","17","201",282572,"17201"
712 | "711","17","203",38459,"17203"
713 | "712","18","000",6732219,"18000"
714 | "713","18","001",35777,"18001"
715 | "714","18","003",379299,"18003"
716 | "715","18","005",83779,"18005"
717 | "716","18","007",8748,"18007"
718 | "717","18","009",11758,"18009"
719 | "718","18","011",67843,"18011"
720 | "719","18","013",15092,"18013"
721 | "720","18","015",20257,"18015"
722 | "721","18","017",37689,"18017"
723 | "722","18","019",118302,"18019"
724 | "723","18","021",26225,"18021"
725 | "724","18","023",32399,"18023"
726 | "725","18","025",10577,"18025"
727 | "726","18","027",33351,"18027"
728 | "727","18","029",49458,"18029"
729 | "728","18","031",26559,"18031"
730 | "729","18","033",43475,"18033"
731 | "730","18","035",114135,"18035"
732 | "731","18","037",42736,"18037"
733 | "732","18","039",206341,"18039"
734 | "733","18","041",23102,"18041"
735 | "734","18","043",78522,"18043"
736 | "735","18","045",16346,"18045"
737 | "736","18","047",22758,"18047"
738 | "737","18","049",19974,"18049"
739 | "738","18","051",33659,"18051"
740 | "739","18","053",65769,"18053"
741 | "740","18","055",31922,"18055"
742 | "741","18","057",338011,"18057"
743 | "742","18","059",78168,"18059"
744 | "743","18","061",40515,"18061"
745 | "744","18","063",170311,"18063"
746 | "745","18","065",47972,"18065"
747 | "746","18","067",82544,"18067"
748 | "747","18","069",36520,"18069"
749 | "748","18","071",44231,"18071"
750 | "749","18","073",33562,"18073"
751 | "750","18","075",20436,"18075"
752 | "751","18","077",32308,"18077"
753 | "752","18","079",27735,"18079"
754 | "753","18","081",158167,"18081"
755 | "754","18","083",36594,"18083"
756 | "755","18","085",79456,"18085"
757 | "756","18","087",39614,"18087"
758 | "757","18","089",485493,"18089"
759 | "758","18","091",109888,"18091"
760 | "759","18","093",45370,"18093"
761 | "760","18","095",129569,"18095"
762 | "761","18","097",964582,"18097"
763 | "762","18","099",46258,"18099"
764 | "763","18","101",10255,"18101"
765 | "764","18","103",35516,"18103"
766 | "765","18","105",148431,"18105"
767 | "766","18","107",38338,"18107"
768 | "767","18","109",70489,"18109"
769 | "768","18","111",13984,"18111"
770 | "769","18","113",47744,"18113"
771 | "770","18","115",5875,"18115"
772 | "771","18","117",19646,"18117"
773 | "772","18","119",20799,"18119"
774 | "773","18","121",16937,"18121"
775 | "774","18","123",19169,"18123"
776 | "775","18","125",12389,"18125"
777 | "776","18","127",170389,"18127"
778 | "777","18","129",25427,"18129"
779 | "778","18","131",12353,"18131"
780 | "779","18","133",37576,"18133"
781 | "780","18","135",24665,"18135"
782 | "781","18","137",28324,"18137"
783 | "782","18","139",16581,"18139"
784 | "783","18","141",271826,"18141"
785 | "784","18","143",23873,"18143"
786 | "785","18","145",44729,"18145"
787 | "786","18","147",20277,"18147"
788 | "787","18","149",22995,"18149"
789 | "788","18","151",34594,"18151"
790 | "789","18","153",20669,"18153"
791 | "790","18","155",10751,"18155"
792 | "791","18","157",195732,"18157"
793 | "792","18","159",15148,"18159"
794 | "793","18","161",7054,"18161"
795 | "794","18","163",181451,"18163"
796 | "795","18","165",15498,"18165"
797 | "796","18","167",107038,"18167"
798 | "797","18","169",30996,"18169"
799 | "798","18","171",8265,"18171"
800 | "799","18","173",62998,"18173"
801 | "800","18","175",28036,"18175"
802 | "801","18","177",65884,"18177"
803 | "802","18","179",28296,"18179"
804 | "803","18","181",24102,"18181"
805 | "804","18","183",33964,"18183"
806 | "805","19","000",3155070,"19000"
807 | "806","19","001",7152,"19001"
808 | "807","19","003",3602,"19003"
809 | "808","19","005",13687,"19005"
810 | "809","19","007",12426,"19007"
811 | "810","19","009",5496,"19009"
812 | "811","19","011",25645,"19011"
813 | "812","19","013",131228,"19013"
814 | "813","19","015",26234,"19015"
815 | "814","19","017",25062,"19017"
816 | "815","19","019",21175,"19019"
817 | "816","19","021",19620,"19021"
818 | "817","19","023",14439,"19023"
819 | "818","19","025",9668,"19025"
820 | "819","19","027",20165,"19027"
821 | "820","19","029",12836,"19029"
822 | "821","19","031",18627,"19031"
823 | "822","19","033",42450,"19033"
824 | "823","19","035",11235,"19035"
825 | "824","19","037",11933,"19037"
826 | "825","19","039",9395,"19039"
827 | "826","19","041",16016,"19041"
828 | "827","19","043",17549,"19043"
829 | "828","19","045",46429,"19045"
830 | "829","19","047",16820,"19047"
831 | "830","19","049",93453,"19049"
832 | "831","19","051",9000,"19051"
833 | "832","19","053",7870,"19053"
834 | "833","19","055",17011,"19055"
835 | "834","19","057",38967,"19057"
836 | "835","19","059",17258,"19059"
837 | "836","19","061",97311,"19061"
838 | "837","19","063",9208,"19063"
839 | "838","19","065",19650,"19065"
840 | "839","19","067",15642,"19067"
841 | "840","19","069",10070,"19069"
842 | "841","19","071",6960,"19071"
843 | "842","19","073",8888,"19073"
844 | "843","19","075",12232,"19075"
845 | "844","19","077",10689,"19077"
846 | "845","19","079",14773,"19079"
847 | "846","19","081",10630,"19081"
848 | "847","19","083",16846,"19083"
849 | "848","19","085",14049,"19085"
850 | "849","19","087",19954,"19087"
851 | "850","19","089",9158,"19089"
852 | "851","19","091",9558,"19091"
853 | "852","19","093",6860,"19093"
854 | "853","19","095",16184,"19095"
855 | "854","19","097",19439,"19097"
856 | "855","19","099",37185,"19099"
857 | "856","19","101",18295,"19101"
858 | "857","19","103",151140,"19103"
859 | "858","19","105",20681,"19105"
860 | "859","19","107",10246,"19107"
861 | "860","19","109",14813,"19109"
862 | "861","19","111",33657,"19111"
863 | "862","19","113",226706,"19113"
864 | "863","19","115",11035,"19115"
865 | "864","19","117",8600,"19117"
866 | "865","19","119",11755,"19119"
867 | "866","19","121",16338,"19121"
868 | "867","19","123",22095,"19123"
869 | "868","19","125",33253,"19125"
870 | "869","19","127",39369,"19127"
871 | "870","19","129",15109,"19129"
872 | "871","19","131",10586,"19131"
873 | "872","19","133",8615,"19133"
874 | "873","19","135",7707,"19135"
875 | "874","19","137",9917,"19137"
876 | "875","19","139",42664,"19139"
877 | "876","19","141",13753,"19141"
878 | "877","19","143",5958,"19143"
879 | "878","19","145",15107,"19145"
880 | "879","19","147",8886,"19147"
881 | "880","19","149",25177,"19149"
882 | "881","19","151",6619,"19151"
883 | "882","19","153",490161,"19153"
884 | "883","19","155",93206,"19155"
885 | "884","19","157",18504,"19157"
886 | "885","19","159",4894,"19159"
887 | "886","19","161",9721,"19161"
888 | "887","19","163",172943,"19163"
889 | "888","19","165",11454,"19165"
890 | "889","19","167",34855,"19167"
891 | "890","19","169",97117,"19169"
892 | "891","19","171",16854,"19171"
893 | "892","19","173",6121,"19173"
894 | "893","19","175",12241,"19175"
895 | "894","19","177",7044,"19177"
896 | "895","19","179",34969,"19179"
897 | "896","19","181",51466,"19181"
898 | "897","19","183",21965,"19183"
899 | "898","19","185",6441,"19185"
900 | "899","19","187",35904,"19187"
901 | "900","19","189",10354,"19189"
902 | "901","19","191",19991,"19191"
903 | "902","19","193",103107,"19193"
904 | "903","19","195",7381,"19195"
905 | "904","19","197",12562,"19197"
906 | "905","20","000",2913314,"20000"
907 | "906","20","001",12369,"20001"
908 | "907","20","003",7858,"20003"
909 | "908","20","005",16073,"20005"
910 | "909","20","007",4427,"20007"
911 | "910","20","009",25779,"20009"
912 | "911","20","011",14534,"20011"
913 | "912","20","013",9564,"20013"
914 | "913","20","015",66911,"20015"
915 | "914","20","017",2648,"20017"
916 | "915","20","019",3250,"20019"
917 | "916","20","021",19939,"20021"
918 | "917","20","023",2657,"20023"
919 | "918","20","025",1994,"20025"
920 | "919","20","027",8002,"20027"
921 | "920","20","029",8786,"20029"
922 | "921","20","031",8179,"20031"
923 | "922","20","033",1700,"20033"
924 | "923","20","035",34908,"20035"
925 | "924","20","037",38818,"20037"
926 | "925","20","039",2827,"20039"
927 | "926","20","041",18466,"20041"
928 | "927","20","043",7600,"20043"
929 | "928","20","045",122259,"20045"
930 | "929","20","047",2798,"20047"
931 | "930","20","049",2530,"20049"
932 | "931","20","051",28553,"20051"
933 | "932","20","053",6102,"20053"
934 | "933","20","055",36467,"20055"
935 | "934","20","057",33619,"20057"
936 | "935","20","059",25544,"20059"
937 | "936","20","061",31670,"20061"
938 | "937","20","063",2636,"20063"
939 | "938","20","065",2482,"20065"
940 | "939","20","067",7150,"20067"
941 | "940","20","069",5988,"20069"
942 | "941","20","071",1232,"20071"
943 | "942","20","073",5982,"20073"
944 | "943","20","075",2539,"20075"
945 | "944","20","077",5436,"20077"
946 | "945","20","079",34429,"20079"
947 | "946","20","081",3968,"20081"
948 | "947","20","083",1794,"20083"
949 | "948","20","085",13171,"20085"
950 | "949","20","087",19043,"20087"
951 | "950","20","089",2879,"20089"
952 | "951","20","091",602401,"20091"
953 | "952","20","093",3838,"20093"
954 | "953","20","095",7152,"20095"
955 | "954","20","097",2475,"20097"
956 | "955","20","099",19618,"20099"
957 | "956","20","101",1535,"20101"
958 | "957","20","103",81758,"20103"
959 | "958","20","105",2962,"20105"
960 | "959","20","107",9703,"20107"
961 | "960","20","109",2794,"20109"
962 | "961","20","111",33195,"20111"
963 | "962","20","113",28542,"20113"
964 | "963","20","115",11884,"20115"
965 | "964","20","117",9707,"20117"
966 | "965","20","119",4033,"20119"
967 | "966","20","121",34237,"20121"
968 | "967","20","123",5979,"20123"
969 | "968","20","125",31829,"20125"
970 | "969","20","127",5620,"20127"
971 | "970","20","129",2587,"20129"
972 | "971","20","131",10231,"20131"
973 | "972","20","133",16007,"20133"
974 | "973","20","135",2750,"20135"
975 | "974","20","137",5361,"20137"
976 | "975","20","139",15949,"20139"
977 | "976","20","141",3421,"20141"
978 | "977","20","143",5704,"20143"
979 | "978","20","145",6414,"20145"
980 | "979","20","147",5234,"20147"
981 | "980","20","149",24383,"20149"
982 | "981","20","151",9164,"20151"
983 | "982","20","153",2530,"20153"
984 | "983","20","155",61998,"20155"
985 | "984","20","157",4636,"20157"
986 | "985","20","159",9537,"20159"
987 | "986","20","161",74232,"20161"
988 | "987","20","163",4920,"20163"
989 | "988","20","165",3036,"20165"
990 | "989","20","167",6856,"20167"
991 | "990","20","169",54224,"20169"
992 | "991","20","171",4823,"20171"
993 | "992","20","173",516042,"20173"
994 | "993","20","175",21428,"20175"
995 | "994","20","177",176875,"20177"
996 | "995","20","179",2521,"20179"
997 | "996","20","181",5917,"20181"
998 | "997","20","183",3583,"20183"
999 | "998","20","185",4156,"20185"
1000 | "999","20","187",2006,"20187"
1001 | "1000","20","189",5485,"20189"
1002 | "1001","20","191",22836,"20191"
1003 | "1002","20","193",7777,"20193"
1004 | "1003","20","195",2803,"20195"
1005 | "1004","20","197",6931,"20197"
1006 | "1005","20","199",1518,"20199"
1007 | "1006","20","201",5406,"20201"
1008 | "1007","20","203",2119,"20203"
1009 | "1008","20","205",8525,"20205"
1010 | "1009","20","207",3138,"20207"
1011 | "1010","20","209",165429,"20209"
1012 | "1011","21","000",4467673,"21000"
1013 | "1012","21","001",19202,"21001"
1014 | "1013","21","003",21315,"21003"
1015 | "1014","21","005",22747,"21005"
1016 | "1015","21","007",7888,"21007"
1017 | "1016","21","009",44249,"21009"
1018 | "1017","21","011",12500,"21011"
1019 | "1018","21","013",26032,"21013"
1020 | "1019","21","015",133581,"21015"
1021 | "1020","21","017",19788,"21017"
1022 | "1021","21","019",46718,"21019"
1023 | "1022","21","021",30060,"21021"
1024 | "1023","21","023",8303,"21023"
1025 | "1024","21","025",12630,"21025"
1026 | "1025","21","027",20477,"21027"
1027 | "1026","21","029",81676,"21029"
1028 | "1027","21","031",12879,"21031"
1029 | "1028","21","033",12747,"21033"
1030 | "1029","21","035",39001,"21035"
1031 | "1030","21","037",93584,"21037"
1032 | "1031","21","039",4760,"21039"
1033 | "1032","21","041",10631,"21041"
1034 | "1033","21","043",26797,"21043"
1035 | "1034","21","045",16159,"21045"
1036 | "1035","21","047",70461,"21047"
1037 | "1036","21","049",36263,"21049"
1038 | "1037","21","051",19901,"21051"
1039 | "1038","21","053",10218,"21053"
1040 | "1039","21","055",8806,"21055"
1041 | "1040","21","057",6614,"21057"
1042 | "1041","21","059",101511,"21059"
1043 | "1042","21","061",12150,"21061"
1044 | "1043","21","063",7517,"21063"
1045 | "1044","21","065",14106,"21065"
1046 | "1045","21","067",323152,"21067"
1047 | "1046","21","069",14581,"21069"
1048 | "1047","21","071",35589,"21071"
1049 | "1048","21","073",50991,"21073"
1050 | "1049","21","075",5969,"21075"
1051 | "1050","21","077",8869,"21077"
1052 | "1051","21","079",17666,"21079"
1053 | "1052","21","081",25069,"21081"
1054 | "1053","21","083",37266,"21083"
1055 | "1054","21","085",26427,"21085"
1056 | "1055","21","087",10941,"21087"
1057 | "1056","21","089",35098,"21089"
1058 | "1057","21","091",8722,"21091"
1059 | "1058","21","093",110958,"21093"
1060 | "1059","21","095",26010,"21095"
1061 | "1060","21","097",18886,"21097"
1062 | "1061","21","099",19035,"21099"
1063 | "1062","21","101",45210,"21101"
1064 | "1063","21","103",16126,"21103"
1065 | "1064","21","105",4380,"21105"
1066 | "1065","21","107",44686,"21107"
1067 | "1066","21","109",13329,"21109"
1068 | "1067","21","111",766757,"21111"
1069 | "1068","21","113",54115,"21113"
1070 | "1069","21","115",22188,"21115"
1071 | "1070","21","117",166998,"21117"
1072 | "1071","21","119",14806,"21119"
1073 | "1072","21","121",31145,"21121"
1074 | "1073","21","123",14398,"21123"
1075 | "1074","21","125",60813,"21125"
1076 | "1075","21","127",15317,"21127"
1077 | "1076","21","129",7403,"21129"
1078 | "1077","21","131",9877,"21131"
1079 | "1078","21","133",21553,"21133"
1080 | "1079","21","135",13275,"21135"
1081 | "1080","21","137",24549,"21137"
1082 | "1081","21","139",9194,"21139"
1083 | "1082","21","141",27102,"21141"
1084 | "1083","21","143",8210,"21143"
1085 | "1084","21","145",65418,"21145"
1086 | "1085","21","147",17231,"21147"
1087 | "1086","21","149",9207,"21149"
1088 | "1087","21","151",92987,"21151"
1089 | "1088","21","153",12161,"21153"
1090 | "1089","21","155",19273,"21155"
1091 | "1090","21","157",31100,"21157"
1092 | "1091","21","159",11195,"21159"
1093 | "1092","21","161",17070,"21161"
1094 | "1093","21","163",28572,"21163"
1095 | "1094","21","165",6489,"21165"
1096 | "1095","21","167",21933,"21167"
1097 | "1096","21","169",10071,"21169"
1098 | "1097","21","171",10650,"21171"
1099 | "1098","21","173",28157,"21173"
1100 | "1099","21","175",13309,"21175"
1101 | "1100","21","177",30622,"21177"
1102 | "1101","21","179",46233,"21179"
1103 | "1102","21","181",7269,"21181"
1104 | "1103","21","183",23994,"21183"
1105 | "1104","21","185",66799,"21185"
1106 | "1105","21","187",10901,"21187"
1107 | "1106","21","189",4415,"21189"
1108 | "1107","21","191",14590,"21191"
1109 | "1108","21","193",25758,"21193"
1110 | "1109","21","195",57876,"21195"
1111 | "1110","21","197",12359,"21197"
1112 | "1111","21","199",64979,"21199"
1113 | "1112","21","201",2108,"21201"
1114 | "1113","21","203",16695,"21203"
1115 | "1114","21","205",24460,"21205"
1116 | "1115","21","207",17923,"21207"
1117 | "1116","21","209",57004,"21209"
1118 | "1117","21","211",49024,"21211"
1119 | "1118","21","213",18572,"21213"
1120 | "1119","21","215",19351,"21215"
1121 | "1120","21","217",25769,"21217"
1122 | "1121","21","219",12294,"21219"
1123 | "1122","21","221",14651,"21221"
1124 | "1123","21","223",8471,"21223"
1125 | "1124","21","225",14381,"21225"
1126 | "1125","21","227",132896,"21227"
1127 | "1126","21","229",12095,"21229"
1128 | "1127","21","231",20333,"21231"
1129 | "1128","21","233",12942,"21233"
1130 | "1129","21","235",36264,"21235"
1131 | "1130","21","237",7157,"21237"
1132 | "1131","21","239",26734,"21239"
1133 | "1132","22","000",4648794,"22000"
1134 | "1133","22","001",62045,"22001"
1135 | "1134","22","003",25627,"22003"
1136 | "1135","22","005",126604,"22005"
1137 | "1136","22","007",21891,"22007"
1138 | "1137","22","009",40144,"22009"
1139 | "1138","22","011",37497,"22011"
1140 | "1139","22","013",13241,"22013"
1141 | "1140","22","015",127039,"22015"
1142 | "1141","22","017",240204,"22017"
1143 | "1142","22","019",203436,"22019"
1144 | "1143","22","021",9918,"22021"
1145 | "1144","22","023",6973,"22023"
1146 | "1145","22","025",9494,"22025"
1147 | "1146","22","027",15670,"22027"
1148 | "1147","22","029",19259,"22029"
1149 | "1148","22","031",27463,"22031"
1150 | "1149","22","033",440059,"22033"
1151 | "1150","22","035",6861,"22035"
1152 | "1151","22","037",19135,"22037"
1153 | "1152","22","039",33395,"22039"
1154 | "1153","22","041",20015,"22041"
1155 | "1154","22","043",22389,"22043"
1156 | "1155","22","045",69830,"22045"
1157 | "1156","22","047",32511,"22047"
1158 | "1157","22","049",15744,"22049"
1159 | "1158","22","051",432493,"22051"
1160 | "1159","22","053",31368,"22053"
1161 | "1160","22","055",244390,"22055"
1162 | "1161","22","057",97614,"22057"
1163 | "1162","22","059",14892,"22059"
1164 | "1163","22","061",46742,"22061"
1165 | "1164","22","063",140789,"22063"
1166 | "1165","22","065",10951,"22065"
1167 | "1166","22","067",24874,"22067"
1168 | "1167","22","069",38158,"22069"
1169 | "1168","22","071",390144,"22071"
1170 | "1169","22","073",153279,"22073"
1171 | "1170","22","075",23197,"22075"
1172 | "1171","22","077",21730,"22077"
1173 | "1172","22","079",129648,"22079"
1174 | "1173","22","081",8442,"22081"
1175 | "1174","22","083",20122,"22083"
1176 | "1175","22","085",23884,"22085"
1177 | "1176","22","087",47244,"22087"
1178 | "1177","22","089",53100,"22089"
1179 | "1178","22","091",10132,"22091"
1180 | "1179","22","093",21096,"22093"
1181 | "1180","22","095",42837,"22095"
1182 | "1181","22","097",82124,"22097"
1183 | "1182","22","099",53431,"22099"
1184 | "1183","22","101",49348,"22101"
1185 | "1184","22","103",260419,"22103"
1186 | "1185","22","105",134758,"22105"
1187 | "1186","22","107",4334,"22107"
1188 | "1187","22","109",110461,"22109"
1189 | "1188","22","111",22108,"22111"
1190 | "1189","22","113",59511,"22113"
1191 | "1190","22","115",47429,"22115"
1192 | "1191","22","117",46194,"22117"
1193 | "1192","22","119",38340,"22119"
1194 | "1193","22","121",26465,"22121"
1195 | "1194","22","123",10830,"22123"
1196 | "1195","22","125",15568,"22125"
1197 | "1196","22","127",13904,"22127"
1198 | "1197","23","000",1344212,"23000"
1199 | "1198","23","001",108277,"23001"
1200 | "1199","23","003",67055,"23003"
1201 | "1200","23","005",295003,"23005"
1202 | "1201","23","007",30199,"23007"
1203 | "1202","23","009",54987,"23009"
1204 | "1203","23","011",122302,"23011"
1205 | "1204","23","013",39772,"23013"
1206 | "1205","23","015",34634,"23015"
1207 | "1206","23","017",57975,"23017"
1208 | "1207","23","019",152148,"23019"
1209 | "1208","23","021",16785,"23021"
1210 | "1209","23","023",35856,"23023"
1211 | "1210","23","025",50484,"23025"
1212 | "1211","23","027",39715,"23027"
1213 | "1212","23","029",31379,"23029"
1214 | "1213","23","031",207641,"23031"
1215 | "1214","24","000",6045680,"24000"
1216 | "1215","24","001",70416,"24001"
1217 | "1216","24","003",579234,"24003"
1218 | "1217","24","005",827370,"24005"
1219 | "1218","24","009",92525,"24009"
1220 | "1219","24","011",33406,"24011"
1221 | "1220","24","013",168447,"24013"
1222 | "1221","24","015",102855,"24015"
1223 | "1222","24","017",163257,"24017"
1224 | "1223","24","019",31929,"24019"
1225 | "1224","24","021",259547,"24021"
1226 | "1225","24","023",29014,"24023"
1227 | "1226","24","025",255441,"24025"
1228 | "1227","24","027",325690,"24027"
1229 | "1228","24","029",19422,"24029"
1230 | "1229","24","031",1050688,"24031"
1231 | "1230","24","033",909327,"24033"
1232 | "1231","24","035",50381,"24035"
1233 | "1232","24","037",113510,"24037"
1234 | "1233","24","039",25616,"24039"
1235 | "1234","24","041",37181,"24041"
1236 | "1235","24","043",151049,"24043"
1237 | "1236","24","045",103609,"24045"
1238 | "1237","24","047",52276,"24047"
1239 | "1238","24","510",593490,"24510"
1240 | "1239","25","000",6892503,"25000"
1241 | "1240","25","001",212990,"25001"
1242 | "1241","25","003",124944,"25003"
1243 | "1242","25","005",565217,"25005"
1244 | "1243","25","007",17332,"25007"
1245 | "1244","25","009",789034,"25009"
1246 | "1245","25","011",70180,"25011"
1247 | "1246","25","013",466372,"25013"
1248 | "1247","25","015",160830,"25015"
1249 | "1248","25","017",1611699,"25017"
1250 | "1249","25","019",11399,"25019"
1251 | "1250","25","021",706775,"25021"
1252 | "1251","25","023",521202,"25023"
1253 | "1252","25","025",803907,"25025"
1254 | "1253","25","027",830622,"25027"
1255 | "1254","26","000",9986857,"26000"
1256 | "1255","26","001",10405,"26001"
1257 | "1256","26","003",9108,"26003"
1258 | "1257","26","005",118081,"26005"
1259 | "1258","26","007",28405,"26007"
1260 | "1259","26","009",23324,"26009"
1261 | "1260","26","011",14883,"26011"
1262 | "1261","26","013",8209,"26013"
1263 | "1262","26","015",61550,"26015"
1264 | "1263","26","017",103126,"26017"
1265 | "1264","26","019",17766,"26019"
1266 | "1265","26","021",153401,"26021"
1267 | "1266","26","023",43517,"26023"
1268 | "1267","26","025",134159,"26025"
1269 | "1268","26","027",51787,"26027"
1270 | "1269","26","029",26143,"26029"
1271 | "1270","26","031",25276,"26031"
1272 | "1271","26","033",37349,"26033"
1273 | "1272","26","035",30950,"26035"
1274 | "1273","26","037",79595,"26037"
1275 | "1274","26","039",14029,"26039"
1276 | "1275","26","041",35784,"26041"
1277 | "1276","26","043",25239,"26043"
1278 | "1277","26","045",110268,"26045"
1279 | "1278","26","047",33415,"26047"
1280 | "1279","26","049",405813,"26049"
1281 | "1280","26","051",25449,"26051"
1282 | "1281","26","053",13975,"26053"
1283 | "1282","26","055",93088,"26055"
1284 | "1283","26","057",40711,"26057"
1285 | "1284","26","059",45605,"26059"
1286 | "1285","26","061",35684,"26061"
1287 | "1286","26","063",30981,"26063"
1288 | "1287","26","065",292406,"26065"
1289 | "1288","26","067",64697,"26067"
1290 | "1289","26","069",25127,"26069"
1291 | "1290","26","071",11066,"26071"
1292 | "1291","26","073",69872,"26073"
1293 | "1292","26","075",158510,"26075"
1294 | "1293","26","077",265066,"26077"
1295 | "1294","26","079",18038,"26079"
1296 | "1295","26","081",656955,"26081"
1297 | "1296","26","083",2116,"26083"
1298 | "1297","26","085",11853,"26085"
1299 | "1298","26","087",87607,"26087"
1300 | "1299","26","089",21761,"26089"
1301 | "1300","26","091",98451,"26091"
1302 | "1301","26","093",191995,"26093"
1303 | "1302","26","095",6229,"26095"
1304 | "1303","26","097",10799,"26097"
1305 | "1304","26","099",873972,"26099"
1306 | "1305","26","101",24558,"26101"
1307 | "1306","26","103",66699,"26103"
1308 | "1307","26","105",29144,"26105"
1309 | "1308","26","107",43453,"26107"
1310 | "1309","26","109",22780,"26109"
1311 | "1310","26","111",83156,"26111"
1312 | "1311","26","113",15118,"26113"
1313 | "1312","26","115",150500,"26115"
1314 | "1313","26","117",63888,"26117"
1315 | "1314","26","119",9328,"26119"
1316 | "1315","26","121",173566,"26121"
1317 | "1316","26","123",48980,"26123"
1318 | "1317","26","125",1257584,"26125"
1319 | "1318","26","127",26467,"26127"
1320 | "1319","26","129",20997,"26129"
1321 | "1320","26","131",5720,"26131"
1322 | "1321","26","133",23460,"26133"
1323 | "1322","26","135",8241,"26135"
1324 | "1323","26","137",24668,"26137"
1325 | "1324","26","139",291830,"26139"
1326 | "1325","26","141",12592,"26141"
1327 | "1326","26","143",24019,"26143"
1328 | "1327","26","145",190539,"26145"
1329 | "1328","26","147",159128,"26147"
1330 | "1329","26","149",60964,"26149"
1331 | "1330","26","151",41170,"26151"
1332 | "1331","26","153",8094,"26153"
1333 | "1332","26","155",68122,"26155"
1334 | "1333","26","157",52245,"26157"
1335 | "1334","26","159",75677,"26159"
1336 | "1335","26","161",367601,"26161"
1337 | "1336","26","163",1749343,"26163"
1338 | "1337","26","165",33631,"26165"
1339 | "1338","27","000",5639632,"27000"
1340 | "1339","27","001",15886,"27001"
1341 | "1340","27","003",356921,"27003"
1342 | "1341","27","005",34423,"27005"
1343 | "1342","27","007",47188,"27007"
1344 | "1343","27","009",40889,"27009"
1345 | "1344","27","011",4991,"27011"
1346 | "1345","27","013",67653,"27013"
1347 | "1346","27","015",25008,"27015"
1348 | "1347","27","017",35871,"27017"
1349 | "1348","27","019",105089,"27019"
1350 | "1349","27","021",29779,"27021"
1351 | "1350","27","023",11800,"27023"
1352 | "1351","27","025",56579,"27025"
1353 | "1352","27","027",64222,"27027"
1354 | "1353","27","029",8818,"27029"
1355 | "1354","27","031",5463,"27031"
1356 | "1355","27","033",11196,"27033"
1357 | "1356","27","035",65055,"27035"
1358 | "1357","27","037",429021,"27037"
1359 | "1358","27","039",20934,"27039"
1360 | "1359","27","041",38141,"27041"
1361 | "1360","27","043",13653,"27043"
1362 | "1361","27","045",21067,"27045"
1363 | "1362","27","047",30281,"27047"
1364 | "1363","27","049",46340,"27049"
1365 | "1364","27","051",5972,"27051"
1366 | "1365","27","053",1265843,"27053"
1367 | "1366","27","055",18600,"27055"
1368 | "1367","27","057",21491,"27057"
1369 | "1368","27","059",40596,"27059"
1370 | "1369","27","061",45130,"27061"
1371 | "1370","27","063",9846,"27063"
1372 | "1371","27","065",16337,"27065"
1373 | "1372","27","067",43199,"27067"
1374 | "1373","27","069",4298,"27069"
1375 | "1374","27","071",12229,"27071"
1376 | "1375","27","073",6623,"27073"
1377 | "1376","27","075",10641,"27075"
1378 | "1377","27","077",3740,"27077"
1379 | "1378","27","079",28887,"27079"
1380 | "1379","27","081",5639,"27081"
1381 | "1380","27","083",25474,"27083"
1382 | "1381","27","085",35893,"27085"
1383 | "1382","27","087",5527,"27087"
1384 | "1383","27","089",9336,"27089"
1385 | "1384","27","091",19683,"27091"
1386 | "1385","27","093",23222,"27093"
1387 | "1386","27","095",26277,"27095"
1388 | "1387","27","097",33386,"27097"
1389 | "1388","27","099",40062,"27099"
1390 | "1389","27","101",8194,"27101"
1391 | "1390","27","103",34274,"27103"
1392 | "1391","27","105",21629,"27105"
1393 | "1392","27","107",6375,"27107"
1394 | "1393","27","109",158293,"27109"
1395 | "1394","27","111",58746,"27111"
1396 | "1395","27","113",14119,"27113"
1397 | "1396","27","115",29579,"27115"
1398 | "1397","27","117",9126,"27117"
1399 | "1398","27","119",31364,"27119"
1400 | "1399","27","121",11249,"27121"
1401 | "1400","27","123",550321,"27123"
1402 | "1401","27","125",4055,"27125"
1403 | "1402","27","127",15170,"27127"
1404 | "1403","27","129",14548,"27129"
1405 | "1404","27","131",66972,"27131"
1406 | "1405","27","133",9315,"27133"
1407 | "1406","27","135",15165,"27135"
1408 | "1407","27","137",199070,"27137"
1409 | "1408","27","139",149013,"27139"
1410 | "1409","27","141",97238,"27141"
1411 | "1410","27","143",14865,"27143"
1412 | "1411","27","145",161075,"27145"
1413 | "1412","27","147",36649,"27147"
1414 | "1413","27","149",9805,"27149"
1415 | "1414","27","151",9266,"27151"
1416 | "1415","27","153",24664,"27153"
1417 | "1416","27","155",3259,"27155"
1418 | "1417","27","157",21627,"27157"
1419 | "1418","27","159",13682,"27159"
1420 | "1419","27","161",18612,"27161"
1421 | "1420","27","163",262440,"27163"
1422 | "1421","27","165",10897,"27165"
1423 | "1422","27","167",6207,"27167"
1424 | "1423","27","169",50484,"27169"
1425 | "1424","27","171",138377,"27171"
1426 | "1425","27","173",9709,"27173"
1427 | "1426","28","000",2976149,"28000"
1428 | "1427","28","001",30693,"28001"
1429 | "1428","28","003",36953,"28003"
1430 | "1429","28","005",12297,"28005"
1431 | "1430","28","007",18174,"28007"
1432 | "1431","28","009",8259,"28009"
1433 | "1432","28","011",30628,"28011"
1434 | "1433","28","013",14361,"28013"
1435 | "1434","28","015",9947,"28015"
1436 | "1435","28","017",17103,"28017"
1437 | "1436","28","019",8210,"28019"
1438 | "1437","28","021",8988,"28021"
1439 | "1438","28","023",15541,"28023"
1440 | "1439","28","025",19316,"28025"
1441 | "1440","28","027",22124,"28027"
1442 | "1441","28","029",28065,"28029"
1443 | "1442","28","031",18636,"28031"
1444 | "1443","28","033",184945,"28033"
1445 | "1444","28","035",74897,"28035"
1446 | "1445","28","037",7713,"28037"
1447 | "1446","28","039",24500,"28039"
1448 | "1447","28","041",13586,"28041"
1449 | "1448","28","043",20758,"28043"
1450 | "1449","28","045",47632,"28045"
1451 | "1450","28","047",208080,"28047"
1452 | "1451","28","049",231840,"28049"
1453 | "1452","28","051",17010,"28051"
1454 | "1453","28","053",8064,"28053"
1455 | "1454","28","055",1327,"28055"
1456 | "1455","28","057",23390,"28057"
1457 | "1456","28","059",143617,"28059"
1458 | "1457","28","061",16383,"28061"
1459 | "1458","28","063",6990,"28063"
1460 | "1459","28","065",11128,"28065"
1461 | "1460","28","067",68098,"28067"
1462 | "1461","28","069",9742,"28069"
1463 | "1462","28","071",54019,"28071"
1464 | "1463","28","073",63343,"28073"
1465 | "1464","28","075",74125,"28075"
1466 | "1465","28","077",12586,"28077"
1467 | "1466","28","079",22786,"28079"
1468 | "1467","28","081",85436,"28081"
1469 | "1468","28","083",28183,"28083"
1470 | "1469","28","085",34153,"28085"
1471 | "1470","28","087",58595,"28087"
1472 | "1471","28","089",106272,"28089"
1473 | "1472","28","091",24573,"28091"
1474 | "1473","28","093",35294,"28093"
1475 | "1474","28","095",35252,"28095"
1476 | "1475","28","097",9775,"28097"
1477 | "1476","28","099",29118,"28099"
1478 | "1477","28","101",21018,"28101"
1479 | "1478","28","103",10417,"28103"
1480 | "1479","28","105",49587,"28105"
1481 | "1480","28","107",34192,"28107"
1482 | "1481","28","109",55535,"28109"
1483 | "1482","28","111",11973,"28111"
1484 | "1483","28","113",39288,"28113"
1485 | "1484","28","115",32174,"28115"
1486 | "1485","28","117",25126,"28117"
1487 | "1486","28","119",6792,"28119"
1488 | "1487","28","121",155271,"28121"
1489 | "1488","28","123",28124,"28123"
1490 | "1489","28","125",4321,"28125"
1491 | "1490","28","127",26658,"28127"
1492 | "1491","28","129",15916,"28129"
1493 | "1492","28","131",18336,"28131"
1494 | "1493","28","133",25110,"28133"
1495 | "1494","28","135",13809,"28135"
1496 | "1495","28","137",28321,"28137"
1497 | "1496","28","139",22015,"28139"
1498 | "1497","28","141",19383,"28141"
1499 | "1498","28","143",9632,"28143"
1500 | "1499","28","145",28815,"28145"
1501 | "1500","28","147",14286,"28147"
1502 | "1501","28","149",45381,"28149"
1503 | "1502","28","151",43909,"28151"
1504 | "1503","28","153",20183,"28153"
1505 | "1504","28","155",9689,"28155"
1506 | "1505","28","157",8630,"28157"
1507 | "1506","28","159",17955,"28159"
1508 | "1507","28","161",12108,"28161"
1509 | "1508","28","163",29690,"28163"
1510 | "1509","29","000",6137428,"29000"
1511 | "1510","29","001",25343,"29001"
1512 | "1511","29","003",17712,"29003"
1513 | "1512","29","005",5143,"29005"
1514 | "1513","29","007",25388,"29007"
1515 | "1514","29","009",35789,"29009"
1516 | "1515","29","011",11754,"29011"
1517 | "1516","29","013",16172,"29013"
1518 | "1517","29","015",19443,"29015"
1519 | "1518","29","017",12133,"29017"
1520 | "1519","29","019",180463,"29019"
1521 | "1520","29","021",87364,"29021"
1522 | "1521","29","023",42478,"29023"
1523 | "1522","29","025",9020,"29025"
1524 | "1523","29","027",44743,"29027"
1525 | "1524","29","029",46305,"29029"
1526 | "1525","29","031",78871,"29031"
1527 | "1526","29","033",8679,"29033"
1528 | "1527","29","035",5982,"29035"
1529 | "1528","29","037",105780,"29037"
1530 | "1529","29","039",14349,"29039"
1531 | "1530","29","041",7426,"29041"
1532 | "1531","29","043",88595,"29043"
1533 | "1532","29","045",6797,"29045"
1534 | "1533","29","047",249948,"29047"
1535 | "1534","29","049",20387,"29049"
1536 | "1535","29","051",76745,"29051"
1537 | "1536","29","053",17709,"29053"
1538 | "1537","29","055",23920,"29055"
1539 | "1538","29","057",7561,"29057"
1540 | "1539","29","059",16878,"29059"
1541 | "1540","29","061",8278,"29061"
1542 | "1541","29","063",12547,"29063"
1543 | "1542","29","065",15573,"29065"
1544 | "1543","29","067",13185,"29067"
1545 | "1544","29","069",29131,"29069"
1546 | "1545","29","071",103967,"29071"
1547 | "1546","29","073",14706,"29073"
1548 | "1547","29","075",6571,"29075"
1549 | "1548","29","077",293086,"29077"
1550 | "1549","29","079",9850,"29079"
1551 | "1550","29","081",8352,"29081"
1552 | "1551","29","083",21824,"29083"
1553 | "1552","29","085",9544,"29085"
1554 | "1553","29","087",4403,"29087"
1555 | "1554","29","089",10001,"29089"
1556 | "1555","29","091",40117,"29091"
1557 | "1556","29","093",10125,"29093"
1558 | "1557","29","095",703011,"29095"
1559 | "1558","29","097",121328,"29097"
1560 | "1559","29","099",225081,"29099"
1561 | "1560","29","101",54062,"29101"
1562 | "1561","29","103",3959,"29103"
1563 | "1562","29","105",35723,"29105"
1564 | "1563","29","107",32708,"29107"
1565 | "1564","29","109",38355,"29109"
1566 | "1565","29","111",9776,"29111"
1567 | "1566","29","113",59013,"29113"
1568 | "1567","29","115",11920,"29115"
1569 | "1568","29","117",15227,"29117"
1570 | "1569","29","119",22837,"29119"
1571 | "1570","29","121",15117,"29121"
1572 | "1571","29","123",12088,"29123"
1573 | "1572","29","125",8697,"29125"
1574 | "1573","29","127",28530,"29127"
1575 | "1574","29","129",3617,"29129"
1576 | "1575","29","131",25619,"29131"
1577 | "1576","29","133",13180,"29133"
1578 | "1577","29","135",16132,"29135"
1579 | "1578","29","137",8644,"29137"
1580 | "1579","29","139",11551,"29139"
1581 | "1580","29","141",20627,"29141"
1582 | "1581","29","143",17076,"29143"
1583 | "1582","29","145",58236,"29145"
1584 | "1583","29","147",22092,"29147"
1585 | "1584","29","149",10529,"29149"
1586 | "1585","29","151",13615,"29151"
1587 | "1586","29","153",9174,"29153"
1588 | "1587","29","155",15805,"29155"
1589 | "1588","29","157",19136,"29157"
1590 | "1589","29","159",42339,"29159"
1591 | "1590","29","161",44573,"29161"
1592 | "1591","29","163",18302,"29163"
1593 | "1592","29","165",104418,"29165"
1594 | "1593","29","167",32149,"29167"
1595 | "1594","29","169",52607,"29169"
1596 | "1595","29","171",4696,"29171"
1597 | "1596","29","173",10309,"29173"
1598 | "1597","29","175",24748,"29175"
1599 | "1598","29","177",23018,"29177"
1600 | "1599","29","179",6270,"29179"
1601 | "1600","29","181",13288,"29181"
1602 | "1601","29","183",402022,"29183"
1603 | "1602","29","185",9397,"29185"
1604 | "1603","29","186",17894,"29186"
1605 | "1604","29","187",67215,"29187"
1606 | "1605","29","189",994205,"29189"
1607 | "1606","29","195",22761,"29195"
1608 | "1607","29","197",4660,"29197"
1609 | "1608","29","199",4902,"29199"
1610 | "1609","29","201",38280,"29201"
1611 | "1610","29","203",8166,"29203"
1612 | "1611","29","205",5930,"29205"
1613 | "1612","29","207",29025,"29207"
1614 | "1613","29","209",31952,"29209"
1615 | "1614","29","211",6089,"29211"
1616 | "1615","29","213",55928,"29213"
1617 | "1616","29","215",25398,"29215"
1618 | "1617","29","217",20563,"29217"
1619 | "1618","29","219",35649,"29219"
1620 | "1619","29","221",24730,"29221"
1621 | "1620","29","223",12873,"29223"
1622 | "1621","29","225",39592,"29225"
1623 | "1622","29","227",2013,"29227"
1624 | "1623","29","229",18289,"29229"
1625 | "1624","29","510",300576,"29510"
1626 | "1625","30","000",1068778,"30000"
1627 | "1626","30","001",9453,"30001"
1628 | "1627","30","003",13319,"30003"
1629 | "1628","30","005",6681,"30005"
1630 | "1629","30","007",6237,"30007"
1631 | "1630","30","009",10725,"30009"
1632 | "1631","30","011",1252,"30011"
1633 | "1632","30","013",81366,"30013"
1634 | "1633","30","015",5635,"30015"
1635 | "1634","30","017",11402,"30017"
1636 | "1635","30","019",1690,"30019"
1637 | "1636","30","021",8613,"30021"
1638 | "1637","30","023",9140,"30023"
1639 | "1638","30","025",2846,"30025"
1640 | "1639","30","027",11050,"30027"
1641 | "1640","30","029",103806,"30029"
1642 | "1641","30","031",114434,"30031"
1643 | "1642","30","033",1258,"30033"
1644 | "1643","30","035",13753,"30035"
1645 | "1644","30","037",821,"30037"
1646 | "1645","30","039",3379,"30039"
1647 | "1646","30","041",16484,"30041"
1648 | "1647","30","043",12221,"30043"
1649 | "1648","30","045",2007,"30045"
1650 | "1649","30","047",30458,"30047"
1651 | "1650","30","049",69432,"30049"
1652 | "1651","30","051",2337,"30051"
1653 | "1652","30","053",19980,"30053"
1654 | "1653","30","055",1664,"30055"
1655 | "1654","30","057",8600,"30057"
1656 | "1655","30","059",1862,"30059"
1657 | "1656","30","061",4397,"30061"
1658 | "1657","30","063",119600,"30063"
1659 | "1658","30","065",4633,"30065"
1660 | "1659","30","067",16606,"30067"
1661 | "1660","30","069",487,"30069"
1662 | "1661","30","071",3954,"30071"
1663 | "1662","30","073",5911,"30073"
1664 | "1663","30","075",1682,"30075"
1665 | "1664","30","077",6890,"30077"
1666 | "1665","30","079",1077,"30079"
1667 | "1666","30","081",43806,"30081"
1668 | "1667","30","083",10803,"30083"
1669 | "1668","30","085",11004,"30085"
1670 | "1669","30","087",8937,"30087"
1671 | "1670","30","089",12113,"30089"
1672 | "1671","30","091",3309,"30091"
1673 | "1672","30","093",34915,"30093"
1674 | "1673","30","095",9642,"30095"
1675 | "1674","30","097",3737,"30097"
1676 | "1675","30","099",6147,"30099"
1677 | "1676","30","101",4736,"30101"
1678 | "1677","30","103",696,"30103"
1679 | "1678","30","105",7396,"30105"
1680 | "1679","30","107",2126,"30107"
1681 | "1680","30","109",969,"30109"
1682 | "1681","30","111",161300,"30111"
1683 | "1682","31","000",1934408,"31000"
1684 | "1683","31","001",31363,"31001"
1685 | "1684","31","003",6298,"31003"
1686 | "1685","31","005",463,"31005"
1687 | "1686","31","007",745,"31007"
1688 | "1687","31","009",465,"31009"
1689 | "1688","31","011",5192,"31011"
1690 | "1689","31","013",10783,"31013"
1691 | "1690","31","015",1919,"31015"
1692 | "1691","31","017",2955,"31017"
1693 | "1692","31","019",49659,"31019"
1694 | "1693","31","021",6459,"31021"
1695 | "1694","31","023",8016,"31023"
1696 | "1695","31","025",26248,"31025"
1697 | "1696","31","027",8402,"31027"
1698 | "1697","31","029",3924,"31029"
1699 | "1698","31","031",5689,"31031"
1700 | "1699","31","033",8910,"31033"
1701 | "1700","31","035",6203,"31035"
1702 | "1701","31","037",10709,"31037"
1703 | "1702","31","039",8846,"31039"
1704 | "1703","31","041",10777,"31041"
1705 | "1704","31","043",20026,"31043"
1706 | "1705","31","045",8589,"31045"
1707 | "1706","31","047",23595,"31047"
1708 | "1707","31","049",1794,"31049"
1709 | "1708","31","051",5636,"31051"
1710 | "1709","31","053",36565,"31053"
1711 | "1710","31","055",571327,"31055"
1712 | "1711","31","057",1693,"31057"
1713 | "1712","31","059",5462,"31059"
1714 | "1713","31","061",2979,"31061"
1715 | "1714","31","063",2627,"31063"
1716 | "1715","31","065",4676,"31065"
1717 | "1716","31","067",21513,"31067"
1718 | "1717","31","069",1837,"31069"
1719 | "1718","31","071",1969,"31071"
1720 | "1719","31","073",1990,"31073"
1721 | "1720","31","075",623,"31075"
1722 | "1721","31","077",2356,"31077"
1723 | "1722","31","079",61353,"31079"
1724 | "1723","31","081",9324,"31081"
1725 | "1724","31","083",3380,"31083"
1726 | "1725","31","085",922,"31085"
1727 | "1726","31","087",2762,"31087"
1728 | "1727","31","089",10067,"31089"
1729 | "1728","31","091",682,"31091"
1730 | "1729","31","093",6445,"31093"
1731 | "1730","31","095",7046,"31095"
1732 | "1731","31","097",5071,"31097"
1733 | "1732","31","099",6495,"31099"
1734 | "1733","31","101",8034,"31101"
1735 | "1734","31","103",806,"31103"
1736 | "1735","31","105",3632,"31105"
1737 | "1736","31","107",8332,"31107"
1738 | "1737","31","109",319090,"31109"
1739 | "1738","31","111",34914,"31111"
1740 | "1739","31","113",748,"31113"
1741 | "1740","31","115",664,"31115"
1742 | "1741","31","117",494,"31117"
1743 | "1742","31","119",35099,"31119"
1744 | "1743","31","121",7755,"31121"
1745 | "1744","31","123",4642,"31123"
1746 | "1745","31","125",3519,"31125"
1747 | "1746","31","127",6972,"31127"
1748 | "1747","31","129",4148,"31129"
1749 | "1748","31","131",16012,"31131"
1750 | "1749","31","133",2613,"31133"
1751 | "1750","31","135",2891,"31135"
1752 | "1751","31","137",9034,"31137"
1753 | "1752","31","139",7148,"31139"
1754 | "1753","31","141",33470,"31141"
1755 | "1754","31","143",5213,"31143"
1756 | "1755","31","145",10724,"31145"
1757 | "1756","31","147",7865,"31147"
1758 | "1757","31","149",1357,"31149"
1759 | "1758","31","151",14224,"31151"
1760 | "1759","31","153",187196,"31153"
1761 | "1760","31","155",21578,"31155"
1762 | "1761","31","157",35618,"31157"
1763 | "1762","31","159",17284,"31159"
1764 | "1763","31","161",5246,"31161"
1765 | "1764","31","163",3001,"31163"
1766 | "1765","31","165",1166,"31165"
1767 | "1766","31","167",5920,"31167"
1768 | "1767","31","169",5003,"31169"
1769 | "1768","31","171",722,"31171"
1770 | "1769","31","173",7224,"31173"
1771 | "1770","31","175",4158,"31175"
1772 | "1771","31","177",20729,"31177"
1773 | "1772","31","179",9385,"31179"
1774 | "1773","31","181",3487,"31181"
1775 | "1774","31","183",783,"31183"
1776 | "1775","31","185",13679,"31185"
1777 | "1776","32","000",3080156,"32000"
1778 | "1777","32","001",24909,"32001"
1779 | "1778","32","003",2266715,"32003"
1780 | "1779","32","005",48905,"32005"
1781 | "1780","32","007",52778,"32007"
1782 | "1781","32","009",873,"32009"
1783 | "1782","32","011",2029,"32011"
1784 | "1783","32","013",16831,"32013"
1785 | "1784","32","015",5532,"32015"
1786 | "1785","32","017",5183,"32017"
1787 | "1786","32","019",57510,"32019"
1788 | "1787","32","021",4505,"32021"
1789 | "1788","32","023",46523,"32023"
1790 | "1789","32","027",6725,"32027"
1791 | "1790","32","029",4123,"32029"
1792 | "1791","32","031",471519,"32031"
1793 | "1792","32","033",9580,"32033"
1794 | "1793","32","510",55916,"32510"
1795 | "1794","33","000",1359711,"33000"
1796 | "1795","33","001",61303,"33001"
1797 | "1796","33","003",48910,"33003"
1798 | "1797","33","005",76085,"33005"
1799 | "1798","33","007",31563,"33007"
1800 | "1799","33","009",89886,"33009"
1801 | "1800","33","011",417025,"33011"
1802 | "1801","33","013",151391,"33013"
1803 | "1802","33","015",309769,"33015"
1804 | "1803","33","017",130633,"33017"
1805 | "1804","33","019",43146,"33019"
1806 | "1805","34","000",8882190,"34000"
1807 | "1806","34","001",263670,"34001"
1808 | "1807","34","003",932202,"34003"
1809 | "1808","34","005",445349,"34005"
1810 | "1809","34","007",506471,"34007"
1811 | "1810","34","009",92039,"34009"
1812 | "1811","34","011",149527,"34011"
1813 | "1812","34","013",798975,"34013"
1814 | "1813","34","015",291636,"34015"
1815 | "1814","34","017",672391,"34017"
1816 | "1815","34","019",124371,"34019"
1817 | "1816","34","021",367430,"34021"
1818 | "1817","34","023",825062,"34023"
1819 | "1818","34","025",618795,"34025"
1820 | "1819","34","027",491845,"34027"
1821 | "1820","34","029",607186,"34029"
1822 | "1821","34","031",501826,"34031"
1823 | "1822","34","033",62385,"34033"
1824 | "1823","34","035",328934,"34035"
1825 | "1824","34","037",140488,"34037"
1826 | "1825","34","039",556341,"34039"
1827 | "1826","34","041",105267,"34041"
1828 | "1827","35","000",2096829,"35000"
1829 | "1828","35","001",679121,"35001"
1830 | "1829","35","003",3527,"35003"
1831 | "1830","35","005",64615,"35005"
1832 | "1831","35","006",26675,"35006"
1833 | "1832","35","007",11941,"35007"
1834 | "1833","35","009",48954,"35009"
1835 | "1834","35","011",1748,"35011"
1836 | "1835","35","013",218195,"35013"
1837 | "1836","35","015",58460,"35015"
1838 | "1837","35","017",26998,"35017"
1839 | "1838","35","019",4300,"35019"
1840 | "1839","35","021",625,"35021"
1841 | "1840","35","023",4198,"35023"
1842 | "1841","35","025",71070,"35025"
1843 | "1842","35","027",19572,"35027"
1844 | "1843","35","028",19369,"35028"
1845 | "1844","35","029",23709,"35029"
1846 | "1845","35","031",71367,"35031"
1847 | "1846","35","033",4521,"35033"
1848 | "1847","35","035",67490,"35035"
1849 | "1848","35","037",8253,"35037"
1850 | "1849","35","039",38921,"35039"
1851 | "1850","35","041",18500,"35041"
1852 | "1851","35","043",146748,"35043"
1853 | "1852","35","045",123958,"35045"
1854 | "1853","35","047",27277,"35047"
1855 | "1854","35","049",150358,"35049"
1856 | "1855","35","051",10791,"35051"
1857 | "1856","35","053",16637,"35053"
1858 | "1857","35","055",32723,"35055"
1859 | "1858","35","057",15461,"35057"
1860 | "1859","35","059",4059,"35059"
1861 | "1860","35","061",76688,"35061"
1862 | "1861","36","000",19453561,"36000"
1863 | "1862","36","001",305506,"36001"
1864 | "1863","36","003",46091,"36003"
1865 | "1864","36","005",1418207,"36005"
1866 | "1865","36","007",190488,"36007"
1867 | "1866","36","009",76117,"36009"
1868 | "1867","36","011",76576,"36011"
1869 | "1868","36","013",126903,"36013"
1870 | "1869","36","015",83456,"36015"
1871 | "1870","36","017",47207,"36017"
1872 | "1871","36","019",80485,"36019"
1873 | "1872","36","021",59461,"36021"
1874 | "1873","36","023",47581,"36023"
1875 | "1874","36","025",44135,"36025"
1876 | "1875","36","027",294218,"36027"
1877 | "1876","36","029",918702,"36029"
1878 | "1877","36","031",36885,"36031"
1879 | "1878","36","033",50022,"36033"
1880 | "1879","36","035",53383,"36035"
1881 | "1880","36","037",57280,"36037"
1882 | "1881","36","039",47188,"36039"
1883 | "1882","36","041",4416,"36041"
1884 | "1883","36","043",61319,"36043"
1885 | "1884","36","045",109834,"36045"
1886 | "1885","36","047",2559903,"36047"
1887 | "1886","36","049",26296,"36049"
1888 | "1887","36","051",62914,"36051"
1889 | "1888","36","053",70941,"36053"
1890 | "1889","36","055",741770,"36055"
1891 | "1890","36","057",49221,"36057"
1892 | "1891","36","059",1356924,"36059"
1893 | "1892","36","061",1628706,"36061"
1894 | "1893","36","063",209281,"36063"
1895 | "1894","36","065",228671,"36065"
1896 | "1895","36","067",460528,"36067"
1897 | "1896","36","069",109777,"36069"
1898 | "1897","36","071",384940,"36071"
1899 | "1898","36","073",40352,"36073"
1900 | "1899","36","075",117124,"36075"
1901 | "1900","36","077",59493,"36077"
1902 | "1901","36","079",98320,"36079"
1903 | "1902","36","081",2253858,"36081"
1904 | "1903","36","083",158714,"36083"
1905 | "1904","36","085",476143,"36085"
1906 | "1905","36","087",325789,"36087"
1907 | "1906","36","089",107740,"36089"
1908 | "1907","36","091",229863,"36091"
1909 | "1908","36","093",155299,"36093"
1910 | "1909","36","095",30999,"36095"
1911 | "1910","36","097",17807,"36097"
1912 | "1911","36","099",34016,"36099"
1913 | "1912","36","101",95379,"36101"
1914 | "1913","36","103",1476601,"36103"
1915 | "1914","36","105",75432,"36105"
1916 | "1915","36","107",48203,"36107"
1917 | "1916","36","109",102180,"36109"
1918 | "1917","36","111",177573,"36111"
1919 | "1918","36","113",63944,"36113"
1920 | "1919","36","115",61204,"36115"
1921 | "1920","36","117",89918,"36117"
1922 | "1921","36","119",967506,"36119"
1923 | "1922","36","121",39859,"36121"
1924 | "1923","36","123",24913,"36123"
1925 | "1924","37","000",10488084,"37000"
1926 | "1925","37","001",169509,"37001"
1927 | "1926","37","003",37497,"37003"
1928 | "1927","37","005",11137,"37005"
1929 | "1928","37","007",24446,"37007"
1930 | "1929","37","009",27203,"37009"
1931 | "1930","37","011",17557,"37011"
1932 | "1931","37","013",46994,"37013"
1933 | "1932","37","015",18947,"37015"
1934 | "1933","37","017",32722,"37017"
1935 | "1934","37","019",142820,"37019"
1936 | "1935","37","021",261191,"37021"
1937 | "1936","37","023",90485,"37023"
1938 | "1937","37","025",216453,"37025"
1939 | "1938","37","027",82178,"37027"
1940 | "1939","37","029",10867,"37029"
1941 | "1940","37","031",69473,"37031"
1942 | "1941","37","033",22604,"37033"
1943 | "1942","37","035",159551,"37035"
1944 | "1943","37","037",74470,"37037"
1945 | "1944","37","039",28612,"37039"
1946 | "1945","37","041",13943,"37041"
1947 | "1946","37","043",11231,"37043"
1948 | "1947","37","045",97947,"37045"
1949 | "1948","37","047",55508,"37047"
1950 | "1949","37","049",102139,"37049"
1951 | "1950","37","051",335509,"37051"
1952 | "1951","37","053",27763,"37053"
1953 | "1952","37","055",37009,"37055"
1954 | "1953","37","057",167609,"37057"
1955 | "1954","37","059",42846,"37059"
1956 | "1955","37","061",58741,"37061"
1957 | "1956","37","063",321488,"37063"
1958 | "1957","37","065",51472,"37065"
1959 | "1958","37","067",382295,"37067"
1960 | "1959","37","069",69685,"37069"
1961 | "1960","37","071",224529,"37071"
1962 | "1961","37","073",11562,"37073"
1963 | "1962","37","075",8441,"37075"
1964 | "1963","37","077",60443,"37077"
1965 | "1964","37","079",21069,"37079"
1966 | "1965","37","081",537174,"37081"
1967 | "1966","37","083",50010,"37083"
1968 | "1967","37","085",135976,"37085"
1969 | "1968","37","087",62317,"37087"
1970 | "1969","37","089",117417,"37089"
1971 | "1970","37","091",23677,"37091"
1972 | "1971","37","093",55234,"37093"
1973 | "1972","37","095",4937,"37095"
1974 | "1973","37","097",181806,"37097"
1975 | "1974","37","099",43938,"37099"
1976 | "1975","37","101",209339,"37101"
1977 | "1976","37","103",9419,"37103"
1978 | "1977","37","105",61779,"37105"
1979 | "1978","37","107",55949,"37107"
1980 | "1979","37","109",86111,"37109"
1981 | "1980","37","111",45756,"37111"
1982 | "1981","37","113",35858,"37113"
1983 | "1982","37","115",21755,"37115"
1984 | "1983","37","117",22440,"37117"
1985 | "1984","37","119",1110356,"37119"
1986 | "1985","37","121",14964,"37121"
1987 | "1986","37","123",27173,"37123"
1988 | "1987","37","125",100880,"37125"
1989 | "1988","37","127",94298,"37127"
1990 | "1989","37","129",234473,"37129"
1991 | "1990","37","131",19483,"37131"
1992 | "1991","37","133",197938,"37133"
1993 | "1992","37","135",148476,"37135"
1994 | "1993","37","137",12726,"37137"
1995 | "1994","37","139",39824,"37139"
1996 | "1995","37","141",63060,"37141"
1997 | "1996","37","143",13463,"37143"
1998 | "1997","37","145",39490,"37145"
1999 | "1998","37","147",180742,"37147"
2000 | "1999","37","149",20724,"37149"
2001 | "2000","37","151",143667,"37151"
2002 | "2001","37","153",44829,"37153"
2003 | "2002","37","155",130625,"37155"
2004 | "2003","37","157",91010,"37157"
2005 | "2004","37","159",142088,"37159"
2006 | "2005","37","161",67029,"37161"
2007 | "2006","37","163",63531,"37163"
2008 | "2007","37","165",34823,"37165"
2009 | "2008","37","167",62806,"37167"
2010 | "2009","37","169",45591,"37169"
2011 | "2010","37","171",71783,"37171"
2012 | "2011","37","173",14271,"37173"
2013 | "2012","37","175",34385,"37175"
2014 | "2013","37","177",4016,"37177"
2015 | "2014","37","179",239859,"37179"
2016 | "2015","37","181",44535,"37181"
2017 | "2016","37","183",1111761,"37183"
2018 | "2017","37","185",19731,"37185"
2019 | "2018","37","187",11580,"37187"
2020 | "2019","37","189",56177,"37189"
2021 | "2020","37","191",123131,"37191"
2022 | "2021","37","193",68412,"37193"
2023 | "2022","37","195",81801,"37195"
2024 | "2023","37","197",37667,"37197"
2025 | "2024","37","199",18069,"37199"
2026 | "2025","38","000",762062,"38000"
2027 | "2026","38","001",2216,"38001"
2028 | "2027","38","003",10415,"38003"
2029 | "2028","38","005",6832,"38005"
2030 | "2029","38","007",928,"38007"
2031 | "2030","38","009",6282,"38009"
2032 | "2031","38","011",3024,"38011"
2033 | "2032","38","013",2115,"38013"
2034 | "2033","38","015",95626,"38015"
2035 | "2034","38","017",181923,"38017"
2036 | "2035","38","019",3762,"38019"
2037 | "2036","38","021",4872,"38021"
2038 | "2037","38","023",2264,"38023"
2039 | "2038","38","025",4424,"38025"
2040 | "2039","38","027",2287,"38027"
2041 | "2040","38","029",3241,"38029"
2042 | "2041","38","031",3210,"38031"
2043 | "2042","38","033",1761,"38033"
2044 | "2043","38","035",69451,"38035"
2045 | "2044","38","037",2274,"38037"
2046 | "2045","38","039",2231,"38039"
2047 | "2046","38","041",2499,"38041"
2048 | "2047","38","043",2480,"38043"
2049 | "2048","38","045",4046,"38045"
2050 | "2049","38","047",1850,"38047"
2051 | "2050","38","049",5745,"38049"
2052 | "2051","38","051",2497,"38051"
2053 | "2052","38","053",15024,"38053"
2054 | "2053","38","055",9450,"38055"
2055 | "2054","38","057",8187,"38057"
2056 | "2055","38","059",31364,"38059"
2057 | "2056","38","061",10545,"38061"
2058 | "2057","38","063",2879,"38063"
2059 | "2058","38","065",1959,"38065"
2060 | "2059","38","067",6801,"38067"
2061 | "2060","38","069",3975,"38069"
2062 | "2061","38","071",11519,"38071"
2063 | "2062","38","073",5218,"38073"
2064 | "2063","38","075",2327,"38075"
2065 | "2064","38","077",16177,"38077"
2066 | "2065","38","079",14176,"38079"
2067 | "2066","38","081",3898,"38081"
2068 | "2067","38","083",1315,"38083"
2069 | "2068","38","085",4230,"38085"
2070 | "2069","38","087",750,"38087"
2071 | "2070","38","089",31489,"38089"
2072 | "2071","38","091",1890,"38091"
2073 | "2072","38","093",20704,"38093"
2074 | "2073","38","095",2189,"38095"
2075 | "2074","38","097",8036,"38097"
2076 | "2075","38","099",10641,"38099"
2077 | "2076","38","101",67641,"38101"
2078 | "2077","38","103",3834,"38103"
2079 | "2078","38","105",37589,"38105"
2080 | "2079","39","000",11689100,"39000"
2081 | "2080","39","001",27698,"39001"
2082 | "2081","39","003",102351,"39003"
2083 | "2082","39","005",53484,"39005"
2084 | "2083","39","007",97241,"39007"
2085 | "2084","39","009",65327,"39009"
2086 | "2085","39","011",45656,"39011"
2087 | "2086","39","013",67006,"39013"
2088 | "2087","39","015",43432,"39015"
2089 | "2088","39","017",383134,"39017"
2090 | "2089","39","019",26914,"39019"
2091 | "2090","39","021",38885,"39021"
2092 | "2091","39","023",134083,"39023"
2093 | "2092","39","025",206428,"39025"
2094 | "2093","39","027",41968,"39027"
2095 | "2094","39","029",101883,"39029"
2096 | "2095","39","031",36600,"39031"
2097 | "2096","39","033",41494,"39033"
2098 | "2097","39","035",1235072,"39035"
2099 | "2098","39","037",51113,"39037"
2100 | "2099","39","039",38087,"39039"
2101 | "2100","39","041",209177,"39041"
2102 | "2101","39","043",74266,"39043"
2103 | "2102","39","045",157574,"39045"
2104 | "2103","39","047",28525,"39047"
2105 | "2104","39","049",1316756,"39049"
2106 | "2105","39","051",42126,"39051"
2107 | "2106","39","053",29898,"39053"
2108 | "2107","39","055",93649,"39055"
2109 | "2108","39","057",168937,"39057"
2110 | "2109","39","059",38875,"39059"
2111 | "2110","39","061",817473,"39061"
2112 | "2111","39","063",75783,"39063"
2113 | "2112","39","065",31365,"39065"
2114 | "2113","39","067",15040,"39067"
2115 | "2114","39","069",27006,"39069"
2116 | "2115","39","071",43161,"39071"
2117 | "2116","39","073",28264,"39073"
2118 | "2117","39","075",43960,"39075"
2119 | "2118","39","077",58266,"39077"
2120 | "2119","39","079",32413,"39079"
2121 | "2120","39","081",65325,"39081"
2122 | "2121","39","083",62322,"39083"
2123 | "2122","39","085",230149,"39085"
2124 | "2123","39","087",59463,"39087"
2125 | "2124","39","089",176862,"39089"
2126 | "2125","39","091",45672,"39091"
2127 | "2126","39","093",309833,"39093"
2128 | "2127","39","095",428348,"39095"
2129 | "2128","39","097",44731,"39097"
2130 | "2129","39","099",228683,"39099"
2131 | "2130","39","101",65093,"39101"
2132 | "2131","39","103",179746,"39103"
2133 | "2132","39","105",22907,"39105"
2134 | "2133","39","107",41172,"39107"
2135 | "2134","39","109",106987,"39109"
2136 | "2135","39","111",13654,"39111"
2137 | "2136","39","113",531687,"39113"
2138 | "2137","39","115",14508,"39115"
2139 | "2138","39","117",35328,"39117"
2140 | "2139","39","119",86215,"39119"
2141 | "2140","39","121",14424,"39121"
2142 | "2141","39","123",40525,"39123"
2143 | "2142","39","125",18672,"39125"
2144 | "2143","39","127",36134,"39127"
2145 | "2144","39","129",58457,"39129"
2146 | "2145","39","131",27772,"39131"
2147 | "2146","39","133",162466,"39133"
2148 | "2147","39","135",40882,"39135"
2149 | "2148","39","137",33861,"39137"
2150 | "2149","39","139",121154,"39139"
2151 | "2150","39","141",76666,"39141"
2152 | "2151","39","143",58518,"39143"
2153 | "2152","39","145",75314,"39145"
2154 | "2153","39","147",55178,"39147"
2155 | "2154","39","149",48590,"39149"
2156 | "2155","39","151",370606,"39151"
2157 | "2156","39","153",541013,"39153"
2158 | "2157","39","155",197974,"39155"
2159 | "2158","39","157",91987,"39157"
2160 | "2159","39","159",58988,"39159"
2161 | "2160","39","161",28275,"39161"
2162 | "2161","39","163",13085,"39163"
2163 | "2162","39","165",234602,"39165"
2164 | "2163","39","167",59911,"39167"
2165 | "2164","39","169",115710,"39169"
2166 | "2165","39","171",36692,"39171"
2167 | "2166","39","173",130817,"39173"
2168 | "2167","39","175",21772,"39175"
2169 | "2168","40","000",3956971,"40000"
2170 | "2169","40","001",22194,"40001"
2171 | "2170","40","003",5702,"40003"
2172 | "2171","40","005",13758,"40005"
2173 | "2172","40","007",5311,"40007"
2174 | "2173","40","009",21859,"40009"
2175 | "2174","40","011",9429,"40011"
2176 | "2175","40","013",47995,"40013"
2177 | "2176","40","015",28762,"40015"
2178 | "2177","40","017",148306,"40017"
2179 | "2178","40","019",48111,"40019"
2180 | "2179","40","021",48657,"40021"
2181 | "2180","40","023",14672,"40023"
2182 | "2181","40","025",2137,"40025"
2183 | "2182","40","027",284014,"40027"
2184 | "2183","40","029",5495,"40029"
2185 | "2184","40","031",120749,"40031"
2186 | "2185","40","033",5666,"40033"
2187 | "2186","40","035",14142,"40035"
2188 | "2187","40","037",71522,"40037"
2189 | "2188","40","039",29003,"40039"
2190 | "2189","40","041",43009,"40041"
2191 | "2190","40","043",4891,"40043"
2192 | "2191","40","045",3859,"40045"
2193 | "2192","40","047",61056,"40047"
2194 | "2193","40","049",27711,"40049"
2195 | "2194","40","051",55834,"40051"
2196 | "2195","40","053",4333,"40053"
2197 | "2196","40","055",5712,"40055"
2198 | "2197","40","057",2653,"40057"
2199 | "2198","40","059",3688,"40059"
2200 | "2199","40","061",12627,"40061"
2201 | "2200","40","063",13279,"40063"
2202 | "2201","40","065",24530,"40065"
2203 | "2202","40","067",6002,"40067"
2204 | "2203","40","069",11085,"40069"
2205 | "2204","40","071",43538,"40071"
2206 | "2205","40","073",15765,"40073"
2207 | "2206","40","075",8708,"40075"
2208 | "2207","40","077",10073,"40077"
2209 | "2208","40","079",49853,"40079"
2210 | "2209","40","081",34877,"40081"
2211 | "2210","40","083",48011,"40083"
2212 | "2211","40","085",10253,"40085"
2213 | "2212","40","087",40474,"40087"
2214 | "2213","40","089",32832,"40089"
2215 | "2214","40","091",19596,"40091"
2216 | "2215","40","093",7629,"40093"
2217 | "2216","40","095",16931,"40095"
2218 | "2217","40","097",41100,"40097"
2219 | "2218","40","099",14073,"40099"
2220 | "2219","40","101",67997,"40101"
2221 | "2220","40","103",11131,"40103"
2222 | "2221","40","105",10076,"40105"
2223 | "2222","40","107",11993,"40107"
2224 | "2223","40","109",797434,"40109"
2225 | "2224","40","111",38465,"40111"
2226 | "2225","40","113",46963,"40113"
2227 | "2226","40","115",31127,"40115"
2228 | "2227","40","117",16376,"40117"
2229 | "2228","40","119",81784,"40119"
2230 | "2229","40","121",43654,"40121"
2231 | "2230","40","123",38284,"40123"
2232 | "2231","40","125",72592,"40125"
2233 | "2232","40","127",11096,"40127"
2234 | "2233","40","129",3583,"40129"
2235 | "2234","40","131",92459,"40131"
2236 | "2235","40","133",24258,"40133"
2237 | "2236","40","135",41569,"40135"
2238 | "2237","40","137",43143,"40137"
2239 | "2238","40","139",19983,"40139"
2240 | "2239","40","141",7250,"40141"
2241 | "2240","40","143",651552,"40143"
2242 | "2241","40","145",81289,"40145"
2243 | "2242","40","147",51527,"40147"
2244 | "2243","40","149",10916,"40149"
2245 | "2244","40","151",8793,"40151"
2246 | "2245","40","153",20211,"40153"
2247 | "2246","41","000",4217737,"41000"
2248 | "2247","41","001",16124,"41001"
2249 | "2248","41","003",93053,"41003"
2250 | "2249","41","005",418187,"41005"
2251 | "2250","41","007",40224,"41007"
2252 | "2251","41","009",52354,"41009"
2253 | "2252","41","011",64487,"41011"
2254 | "2253","41","013",24404,"41013"
2255 | "2254","41","015",22925,"41015"
2256 | "2255","41","017",197692,"41017"
2257 | "2256","41","019",110980,"41019"
2258 | "2257","41","021",1912,"41021"
2259 | "2258","41","023",7199,"41023"
2260 | "2259","41","025",7393,"41025"
2261 | "2260","41","027",23382,"41027"
2262 | "2261","41","029",220944,"41029"
2263 | "2262","41","031",24658,"41031"
2264 | "2263","41","033",87487,"41033"
2265 | "2264","41","035",68238,"41035"
2266 | "2265","41","037",7869,"41037"
2267 | "2266","41","039",382067,"41039"
2268 | "2267","41","041",49962,"41041"
2269 | "2268","41","043",129749,"41043"
2270 | "2269","41","045",30571,"41045"
2271 | "2270","41","047",347818,"41047"
2272 | "2271","41","049",11603,"41049"
2273 | "2272","41","051",812855,"41051"
2274 | "2273","41","053",86085,"41053"
2275 | "2274","41","055",1780,"41055"
2276 | "2275","41","057",27036,"41057"
2277 | "2276","41","059",77950,"41059"
2278 | "2277","41","061",26835,"41061"
2279 | "2278","41","063",7208,"41063"
2280 | "2279","41","065",26682,"41065"
2281 | "2280","41","067",601592,"41067"
2282 | "2281","41","069",1332,"41069"
2283 | "2282","41","071",107100,"41071"
2284 | "2283","42","000",12801989,"42000"
2285 | "2284","42","001",103009,"42001"
2286 | "2285","42","003",1216045,"42003"
2287 | "2286","42","005",64735,"42005"
2288 | "2287","42","007",163929,"42007"
2289 | "2288","42","009",47888,"42009"
2290 | "2289","42","011",421164,"42011"
2291 | "2290","42","013",121829,"42013"
2292 | "2291","42","015",60323,"42015"
2293 | "2292","42","017",628270,"42017"
2294 | "2293","42","019",187853,"42019"
2295 | "2294","42","021",130192,"42021"
2296 | "2295","42","023",4447,"42023"
2297 | "2296","42","025",64182,"42025"
2298 | "2297","42","027",162385,"42027"
2299 | "2298","42","029",524989,"42029"
2300 | "2299","42","031",38438,"42031"
2301 | "2300","42","033",79255,"42033"
2302 | "2301","42","035",38632,"42035"
2303 | "2302","42","037",64964,"42037"
2304 | "2303","42","039",84629,"42039"
2305 | "2304","42","041",253370,"42041"
2306 | "2305","42","043",278299,"42043"
2307 | "2306","42","045",566747,"42045"
2308 | "2307","42","047",29910,"42047"
2309 | "2308","42","049",269728,"42049"
2310 | "2309","42","051",129274,"42051"
2311 | "2310","42","053",7247,"42053"
2312 | "2311","42","055",155027,"42055"
2313 | "2312","42","057",14530,"42057"
2314 | "2313","42","059",36233,"42059"
2315 | "2314","42","061",45144,"42061"
2316 | "2315","42","063",84073,"42063"
2317 | "2316","42","065",43425,"42065"
2318 | "2317","42","067",24763,"42067"
2319 | "2318","42","069",209674,"42069"
2320 | "2319","42","071",545724,"42071"
2321 | "2320","42","073",85512,"42073"
2322 | "2321","42","075",141793,"42075"
2323 | "2322","42","077",369318,"42077"
2324 | "2323","42","079",317417,"42079"
2325 | "2324","42","081",113299,"42081"
2326 | "2325","42","083",40625,"42083"
2327 | "2326","42","085",109424,"42085"
2328 | "2327","42","087",46138,"42087"
2329 | "2328","42","089",170271,"42089"
2330 | "2329","42","091",830915,"42091"
2331 | "2330","42","093",18230,"42093"
2332 | "2331","42","095",305285,"42095"
2333 | "2332","42","097",90843,"42097"
2334 | "2333","42","099",46272,"42099"
2335 | "2334","42","101",1584064,"42101"
2336 | "2335","42","103",55809,"42103"
2337 | "2336","42","105",16526,"42105"
2338 | "2337","42","107",141359,"42107"
2339 | "2338","42","109",40372,"42109"
2340 | "2339","42","111",73447,"42111"
2341 | "2340","42","113",6066,"42113"
2342 | "2341","42","115",40328,"42115"
2343 | "2342","42","117",40591,"42117"
2344 | "2343","42","119",44923,"42119"
2345 | "2344","42","121",50668,"42121"
2346 | "2345","42","123",39191,"42123"
2347 | "2346","42","125",206865,"42125"
2348 | "2347","42","127",51361,"42127"
2349 | "2348","42","129",348899,"42129"
2350 | "2349","42","131",26794,"42131"
2351 | "2350","42","133",449058,"42133"
2352 | "2351","44","000",1059361,"44000"
2353 | "2352","44","001",48479,"44001"
2354 | "2353","44","003",164292,"44003"
2355 | "2354","44","005",82082,"44005"
2356 | "2355","44","007",638931,"44007"
2357 | "2356","44","009",125577,"44009"
2358 | "2357","45","000",5148714,"45000"
2359 | "2358","45","001",24527,"45001"
2360 | "2359","45","003",170872,"45003"
2361 | "2360","45","005",8688,"45005"
2362 | "2361","45","007",202558,"45007"
2363 | "2362","45","009",14066,"45009"
2364 | "2363","45","011",20866,"45011"
2365 | "2364","45","013",192122,"45013"
2366 | "2365","45","015",227907,"45015"
2367 | "2366","45","017",14553,"45017"
2368 | "2367","45","019",411406,"45019"
2369 | "2368","45","021",57300,"45021"
2370 | "2369","45","023",32244,"45023"
2371 | "2370","45","025",45650,"45025"
2372 | "2371","45","027",33745,"45027"
2373 | "2372","45","029",37677,"45029"
2374 | "2373","45","031",66618,"45031"
2375 | "2374","45","033",30479,"45033"
2376 | "2375","45","035",162809,"45035"
2377 | "2376","45","037",27260,"45037"
2378 | "2377","45","039",22347,"45039"
2379 | "2378","45","041",138293,"45041"
2380 | "2379","45","043",62680,"45043"
2381 | "2380","45","045",523542,"45045"
2382 | "2381","45","047",70811,"45047"
2383 | "2382","45","049",19222,"45049"
2384 | "2383","45","051",354081,"45051"
2385 | "2384","45","053",30073,"45053"
2386 | "2385","45","055",66551,"45055"
2387 | "2386","45","057",98012,"45057"
2388 | "2387","45","059",67493,"45059"
2389 | "2388","45","061",16828,"45061"
2390 | "2389","45","063",298750,"45063"
2391 | "2390","45","065",9463,"45065"
2392 | "2391","45","067",30657,"45067"
2393 | "2392","45","069",26118,"45069"
2394 | "2393","45","071",38440,"45071"
2395 | "2394","45","073",79546,"45073"
2396 | "2395","45","075",86175,"45075"
2397 | "2396","45","077",126884,"45077"
2398 | "2397","45","079",415759,"45079"
2399 | "2398","45","081",20473,"45081"
2400 | "2399","45","083",319785,"45083"
2401 | "2400","45","085",106721,"45085"
2402 | "2401","45","087",27316,"45087"
2403 | "2402","45","089",30368,"45089"
2404 | "2403","45","091",280979,"45091"
2405 | "2404","46","000",884659,"46000"
2406 | "2405","46","003",2751,"46003"
2407 | "2406","46","005",18453,"46005"
2408 | "2407","46","007",3365,"46007"
2409 | "2408","46","009",6901,"46009"
2410 | "2409","46","011",35077,"46011"
2411 | "2410","46","013",38839,"46013"
2412 | "2411","46","015",5297,"46015"
2413 | "2412","46","017",1962,"46017"
2414 | "2413","46","019",10429,"46019"
2415 | "2414","46","021",1376,"46021"
2416 | "2415","46","023",9292,"46023"
2417 | "2416","46","025",3736,"46025"
2418 | "2417","46","027",14070,"46027"
2419 | "2418","46","029",28009,"46029"
2420 | "2419","46","031",4086,"46031"
2421 | "2420","46","033",8972,"46033"
2422 | "2421","46","035",19775,"46035"
2423 | "2422","46","037",5424,"46037"
2424 | "2423","46","039",4351,"46039"
2425 | "2424","46","041",5892,"46041"
2426 | "2425","46","043",2921,"46043"
2427 | "2426","46","045",3829,"46045"
2428 | "2427","46","047",6713,"46047"
2429 | "2428","46","049",2299,"46049"
2430 | "2429","46","051",7052,"46051"
2431 | "2430","46","053",4185,"46053"
2432 | "2431","46","055",1899,"46055"
2433 | "2432","46","057",6164,"46057"
2434 | "2433","46","059",3191,"46059"
2435 | "2434","46","061",3453,"46061"
2436 | "2435","46","063",1298,"46063"
2437 | "2436","46","065",17526,"46065"
2438 | "2437","46","067",7291,"46067"
2439 | "2438","46","069",1301,"46069"
2440 | "2439","46","071",3344,"46071"
2441 | "2440","46","073",2013,"46073"
2442 | "2441","46","075",903,"46075"
2443 | "2442","46","077",4939,"46077"
2444 | "2443","46","079",12797,"46079"
2445 | "2444","46","081",25844,"46081"
2446 | "2445","46","083",61128,"46083"
2447 | "2446","46","085",3781,"46085"
2448 | "2447","46","087",5586,"46087"
2449 | "2448","46","089",2379,"46089"
2450 | "2449","46","091",4935,"46091"
2451 | "2450","46","093",28332,"46093"
2452 | "2451","46","095",2061,"46095"
2453 | "2452","46","097",2216,"46097"
2454 | "2453","46","099",193134,"46099"
2455 | "2454","46","101",6576,"46101"
2456 | "2455","46","102",14177,"46102"
2457 | "2456","46","103",113775,"46103"
2458 | "2457","46","105",2865,"46105"
2459 | "2458","46","107",2153,"46107"
2460 | "2459","46","109",10394,"46109"
2461 | "2460","46","111",2344,"46111"
2462 | "2461","46","115",6376,"46115"
2463 | "2462","46","117",3098,"46117"
2464 | "2463","46","119",1391,"46119"
2465 | "2464","46","121",10177,"46121"
2466 | "2465","46","123",5441,"46123"
2467 | "2466","46","125",8384,"46125"
2468 | "2467","46","127",15932,"46127"
2469 | "2468","46","129",5435,"46129"
2470 | "2469","46","135",22814,"46135"
2471 | "2470","46","137",2756,"46137"
2472 | "2471","47","000",6829174,"47000"
2473 | "2472","47","001",76978,"47001"
2474 | "2473","47","003",49713,"47003"
2475 | "2474","47","005",16160,"47005"
2476 | "2475","47","007",15064,"47007"
2477 | "2476","47","009",133088,"47009"
2478 | "2477","47","011",108110,"47011"
2479 | "2478","47","013",39842,"47013"
2480 | "2479","47","015",14678,"47015"
2481 | "2480","47","017",27767,"47017"
2482 | "2481","47","019",56391,"47019"
2483 | "2482","47","021",40667,"47021"
2484 | "2483","47","023",17297,"47023"
2485 | "2484","47","025",31959,"47025"
2486 | "2485","47","027",7615,"47027"
2487 | "2486","47","029",36004,"47029"
2488 | "2487","47","031",56520,"47031"
2489 | "2488","47","033",14230,"47033"
2490 | "2489","47","035",60520,"47035"
2491 | "2490","47","037",694144,"47037"
2492 | "2491","47","039",11663,"47039"
2493 | "2492","47","041",20490,"47041"
2494 | "2493","47","043",53948,"47043"
2495 | "2494","47","045",37159,"47045"
2496 | "2495","47","047",41133,"47047"
2497 | "2496","47","049",18523,"47049"
2498 | "2497","47","051",42208,"47051"
2499 | "2498","47","053",49133,"47053"
2500 | "2499","47","055",29464,"47055"
2501 | "2500","47","057",23320,"47057"
2502 | "2501","47","059",69069,"47059"
2503 | "2502","47","061",13427,"47061"
2504 | "2503","47","063",64934,"47063"
2505 | "2504","47","065",367804,"47065"
2506 | "2505","47","067",6620,"47067"
2507 | "2506","47","069",25050,"47069"
2508 | "2507","47","071",25652,"47071"
2509 | "2508","47","073",56786,"47073"
2510 | "2509","47","075",17304,"47075"
2511 | "2510","47","077",28117,"47077"
2512 | "2511","47","079",32345,"47079"
2513 | "2512","47","081",25178,"47081"
2514 | "2513","47","083",8201,"47083"
2515 | "2514","47","085",18582,"47085"
2516 | "2515","47","087",11786,"47087"
2517 | "2516","47","089",54495,"47089"
2518 | "2517","47","091",17788,"47091"
2519 | "2518","47","093",470313,"47093"
2520 | "2519","47","095",7016,"47095"
2521 | "2520","47","097",25633,"47097"
2522 | "2521","47","099",44142,"47099"
2523 | "2522","47","101",12268,"47101"
2524 | "2523","47","103",34366,"47103"
2525 | "2524","47","105",54068,"47105"
2526 | "2525","47","107",53794,"47107"
2527 | "2526","47","109",25694,"47109"
2528 | "2527","47","111",24602,"47111"
2529 | "2528","47","113",97984,"47113"
2530 | "2529","47","115",28907,"47115"
2531 | "2530","47","117",34375,"47117"
2532 | "2531","47","119",96387,"47119"
2533 | "2532","47","121",12422,"47121"
2534 | "2533","47","123",46545,"47123"
2535 | "2534","47","125",208993,"47125"
2536 | "2535","47","127",6488,"47127"
2537 | "2536","47","129",21403,"47129"
2538 | "2537","47","131",30069,"47131"
2539 | "2538","47","133",22241,"47133"
2540 | "2539","47","135",8076,"47135"
2541 | "2540","47","137",5048,"47137"
2542 | "2541","47","139",16832,"47139"
2543 | "2542","47","141",80245,"47141"
2544 | "2543","47","143",33167,"47143"
2545 | "2544","47","145",53382,"47145"
2546 | "2545","47","147",71813,"47147"
2547 | "2546","47","149",332285,"47149"
2548 | "2547","47","151",22068,"47151"
2549 | "2548","47","153",15026,"47153"
2550 | "2549","47","155",98250,"47155"
2551 | "2550","47","157",937166,"47157"
2552 | "2551","47","159",20157,"47159"
2553 | "2552","47","161",13715,"47161"
2554 | "2553","47","163",158348,"47163"
2555 | "2554","47","165",191283,"47165"
2556 | "2555","47","167",61599,"47167"
2557 | "2556","47","169",11284,"47169"
2558 | "2557","47","171",17883,"47171"
2559 | "2558","47","173",19972,"47173"
2560 | "2559","47","175",5872,"47175"
2561 | "2560","47","177",41277,"47177"
2562 | "2561","47","179",129375,"47179"
2563 | "2562","47","181",16673,"47181"
2564 | "2563","47","183",33328,"47183"
2565 | "2564","47","185",27345,"47185"
2566 | "2565","47","187",238412,"47187"
2567 | "2566","47","189",144657,"47189"
2568 | "2567","48","000",28995881,"48000"
2569 | "2568","48","001",57735,"48001"
2570 | "2569","48","003",18705,"48003"
2571 | "2570","48","005",86715,"48005"
2572 | "2571","48","007",23510,"48007"
2573 | "2572","48","009",8553,"48009"
2574 | "2573","48","011",1887,"48011"
2575 | "2574","48","013",51153,"48013"
2576 | "2575","48","015",30032,"48015"
2577 | "2576","48","017",7000,"48017"
2578 | "2577","48","019",23112,"48019"
2579 | "2578","48","021",88723,"48021"
2580 | "2579","48","023",3509,"48023"
2581 | "2580","48","025",32565,"48025"
2582 | "2581","48","027",362924,"48027"
2583 | "2582","48","029",2003554,"48029"
2584 | "2583","48","031",11931,"48031"
2585 | "2584","48","033",654,"48033"
2586 | "2585","48","035",18685,"48035"
2587 | "2586","48","037",93245,"48037"
2588 | "2587","48","039",374264,"48039"
2589 | "2588","48","041",229211,"48041"
2590 | "2589","48","043",9203,"48043"
2591 | "2590","48","045",1546,"48045"
2592 | "2591","48","047",7093,"48047"
2593 | "2592","48","049",37864,"48049"
2594 | "2593","48","051",18443,"48051"
2595 | "2594","48","053",48155,"48053"
2596 | "2595","48","055",43664,"48055"
2597 | "2596","48","057",21290,"48057"
2598 | "2597","48","059",13943,"48059"
2599 | "2598","48","061",423163,"48061"
2600 | "2599","48","063",13094,"48063"
2601 | "2600","48","065",5926,"48065"
2602 | "2601","48","067",30026,"48067"
2603 | "2602","48","069",7530,"48069"
2604 | "2603","48","071",43837,"48071"
2605 | "2604","48","073",52646,"48073"
2606 | "2605","48","075",7306,"48075"
2607 | "2606","48","077",10471,"48077"
2608 | "2607","48","079",2853,"48079"
2609 | "2608","48","081",3387,"48081"
2610 | "2609","48","083",8175,"48083"
2611 | "2610","48","085",1034730,"48085"
2612 | "2611","48","087",2920,"48087"
2613 | "2612","48","089",21493,"48089"
2614 | "2613","48","091",156209,"48091"
2615 | "2614","48","093",13635,"48093"
2616 | "2615","48","095",2726,"48095"
2617 | "2616","48","097",41257,"48097"
2618 | "2617","48","099",75951,"48099"
2619 | "2618","48","101",1398,"48101"
2620 | "2619","48","103",4797,"48103"
2621 | "2620","48","105",3464,"48105"
2622 | "2621","48","107",5737,"48107"
2623 | "2622","48","109",2171,"48109"
2624 | "2623","48","111",7287,"48111"
2625 | "2624","48","113",2635516,"48113"
2626 | "2625","48","115",12728,"48115"
2627 | "2626","48","117",18546,"48117"
2628 | "2627","48","119",5331,"48119"
2629 | "2628","48","121",887207,"48121"
2630 | "2629","48","123",20160,"48123"
2631 | "2630","48","125",2211,"48125"
2632 | "2631","48","127",10124,"48127"
2633 | "2632","48","129",3278,"48129"
2634 | "2633","48","131",11157,"48131"
2635 | "2634","48","133",18360,"48133"
2636 | "2635","48","135",166223,"48135"
2637 | "2636","48","137",1932,"48137"
2638 | "2637","48","139",184826,"48139"
2639 | "2638","48","141",839238,"48141"
2640 | "2639","48","143",42698,"48143"
2641 | "2640","48","145",17297,"48145"
2642 | "2641","48","147",35514,"48147"
2643 | "2642","48","149",25346,"48149"
2644 | "2643","48","151",3830,"48151"
2645 | "2644","48","153",5712,"48153"
2646 | "2645","48","155",1155,"48155"
2647 | "2646","48","157",811688,"48157"
2648 | "2647","48","159",10725,"48159"
2649 | "2648","48","161",19717,"48161"
2650 | "2649","48","163",20306,"48163"
2651 | "2650","48","165",21492,"48165"
2652 | "2651","48","167",342139,"48167"
2653 | "2652","48","169",6229,"48169"
2654 | "2653","48","171",26988,"48171"
2655 | "2654","48","173",1409,"48173"
2656 | "2655","48","175",7658,"48175"
2657 | "2656","48","177",20837,"48177"
2658 | "2657","48","179",21886,"48179"
2659 | "2658","48","181",136212,"48181"
2660 | "2659","48","183",123945,"48183"
2661 | "2660","48","185",28880,"48185"
2662 | "2661","48","187",166847,"48187"
2663 | "2662","48","189",33406,"48189"
2664 | "2663","48","191",2964,"48191"
2665 | "2664","48","193",8461,"48193"
2666 | "2665","48","195",5399,"48195"
2667 | "2666","48","197",3933,"48197"
2668 | "2667","48","199",57602,"48199"
2669 | "2668","48","201",4713325,"48201"
2670 | "2669","48","203",66553,"48203"
2671 | "2670","48","205",5576,"48205"
2672 | "2671","48","207",5658,"48207"
2673 | "2672","48","209",230191,"48209"
2674 | "2673","48","211",3819,"48211"
2675 | "2674","48","213",82737,"48213"
2676 | "2675","48","215",868707,"48215"
2677 | "2676","48","217",36649,"48217"
2678 | "2677","48","219",23021,"48219"
2679 | "2678","48","221",61643,"48221"
2680 | "2679","48","223",37084,"48223"
2681 | "2680","48","225",22968,"48225"
2682 | "2681","48","227",36664,"48227"
2683 | "2682","48","229",4886,"48229"
2684 | "2683","48","231",98594,"48231"
2685 | "2684","48","233",20938,"48233"
2686 | "2685","48","235",1536,"48235"
2687 | "2686","48","237",8935,"48237"
2688 | "2687","48","239",14760,"48239"
2689 | "2688","48","241",35529,"48241"
2690 | "2689","48","243",2274,"48243"
2691 | "2690","48","245",251565,"48245"
2692 | "2691","48","247",5200,"48247"
2693 | "2692","48","249",40482,"48249"
2694 | "2693","48","251",175817,"48251"
2695 | "2694","48","253",20083,"48253"
2696 | "2695","48","255",15601,"48255"
2697 | "2696","48","257",136154,"48257"
2698 | "2697","48","259",47431,"48259"
2699 | "2698","48","261",404,"48261"
2700 | "2699","48","263",762,"48263"
2701 | "2700","48","265",52600,"48265"
2702 | "2701","48","267",4337,"48267"
2703 | "2702","48","269",272,"48269"
2704 | "2703","48","271",3667,"48271"
2705 | "2704","48","273",30680,"48273"
2706 | "2705","48","275",3664,"48275"
2707 | "2706","48","277",49859,"48277"
2708 | "2707","48","279",12893,"48279"
2709 | "2708","48","281",21428,"48281"
2710 | "2709","48","283",7520,"48283"
2711 | "2710","48","285",20154,"48285"
2712 | "2711","48","287",17239,"48287"
2713 | "2712","48","289",17404,"48289"
2714 | "2713","48","291",88219,"48291"
2715 | "2714","48","293",23437,"48293"
2716 | "2715","48","295",3233,"48295"
2717 | "2716","48","297",12207,"48297"
2718 | "2717","48","299",21795,"48299"
2719 | "2718","48","301",169,"48301"
2720 | "2719","48","303",310569,"48303"
2721 | "2720","48","305",5951,"48305"
2722 | "2721","48","307",7984,"48307"
2723 | "2722","48","309",256623,"48309"
2724 | "2723","48","311",743,"48311"
2725 | "2724","48","313",14284,"48313"
2726 | "2725","48","315",9854,"48315"
2727 | "2726","48","317",5771,"48317"
2728 | "2727","48","319",4274,"48319"
2729 | "2728","48","321",36643,"48321"
2730 | "2729","48","323",58722,"48323"
2731 | "2730","48","325",51584,"48325"
2732 | "2731","48","327",2138,"48327"
2733 | "2732","48","329",176832,"48329"
2734 | "2733","48","331",24823,"48331"
2735 | "2734","48","333",4873,"48333"
2736 | "2735","48","335",8545,"48335"
2737 | "2736","48","337",19818,"48337"
2738 | "2737","48","339",607391,"48339"
2739 | "2738","48","341",20940,"48341"
2740 | "2739","48","343",12388,"48343"
2741 | "2740","48","345",1200,"48345"
2742 | "2741","48","347",65204,"48347"
2743 | "2742","48","349",50113,"48349"
2744 | "2743","48","351",13595,"48351"
2745 | "2744","48","353",14714,"48353"
2746 | "2745","48","355",362294,"48355"
2747 | "2746","48","357",9836,"48357"
2748 | "2747","48","359",2112,"48359"
2749 | "2748","48","361",83396,"48361"
2750 | "2749","48","363",29189,"48363"
2751 | "2750","48","365",23194,"48365"
2752 | "2751","48","367",142878,"48367"
2753 | "2752","48","369",9605,"48369"
2754 | "2753","48","371",15823,"48371"
2755 | "2754","48","373",51353,"48373"
2756 | "2755","48","375",117415,"48375"
2757 | "2756","48","377",6704,"48377"
2758 | "2757","48","379",12514,"48379"
2759 | "2758","48","381",137713,"48381"
2760 | "2759","48","383",3849,"48383"
2761 | "2760","48","385",3452,"48385"
2762 | "2761","48","387",12023,"48387"
2763 | "2762","48","389",15976,"48389"
2764 | "2763","48","391",6948,"48391"
2765 | "2764","48","393",854,"48393"
2766 | "2765","48","395",17074,"48395"
2767 | "2766","48","397",104915,"48397"
2768 | "2767","48","399",10264,"48399"
2769 | "2768","48","401",54406,"48401"
2770 | "2769","48","403",10542,"48403"
2771 | "2770","48","405",8237,"48405"
2772 | "2771","48","407",28859,"48407"
2773 | "2772","48","409",66730,"48409"
2774 | "2773","48","411",6055,"48411"
2775 | "2774","48","413",2793,"48413"
2776 | "2775","48","415",16703,"48415"
2777 | "2776","48","417",3265,"48417"
2778 | "2777","48","419",25274,"48419"
2779 | "2778","48","421",3022,"48421"
2780 | "2779","48","423",232751,"48423"
2781 | "2780","48","425",9128,"48425"
2782 | "2781","48","427",64633,"48427"
2783 | "2782","48","429",9366,"48429"
2784 | "2783","48","431",1291,"48431"
2785 | "2784","48","433",1350,"48433"
2786 | "2785","48","435",3776,"48435"
2787 | "2786","48","437",7397,"48437"
2788 | "2787","48","439",2102515,"48439"
2789 | "2788","48","441",138034,"48441"
2790 | "2789","48","443",776,"48443"
2791 | "2790","48","445",12337,"48445"
2792 | "2791","48","447",1501,"48447"
2793 | "2792","48","449",32750,"48449"
2794 | "2793","48","451",119200,"48451"
2795 | "2794","48","453",1273954,"48453"
2796 | "2795","48","455",14651,"48455"
2797 | "2796","48","457",21672,"48457"
2798 | "2797","48","459",41753,"48459"
2799 | "2798","48","461",3657,"48461"
2800 | "2799","48","463",26741,"48463"
2801 | "2800","48","465",49025,"48465"
2802 | "2801","48","467",56590,"48467"
2803 | "2802","48","469",92084,"48469"
2804 | "2803","48","471",72971,"48471"
2805 | "2804","48","473",55246,"48473"
2806 | "2805","48","475",11998,"48475"
2807 | "2806","48","477",35882,"48477"
2808 | "2807","48","479",276652,"48479"
2809 | "2808","48","481",41556,"48481"
2810 | "2809","48","483",5056,"48483"
2811 | "2810","48","485",132230,"48485"
2812 | "2811","48","487",12769,"48487"
2813 | "2812","48","489",21358,"48489"
2814 | "2813","48","491",590551,"48491"
2815 | "2814","48","493",51070,"48493"
2816 | "2815","48","495",8010,"48495"
2817 | "2816","48","497",69984,"48497"
2818 | "2817","48","499",45539,"48499"
2819 | "2818","48","501",8713,"48501"
2820 | "2819","48","503",18010,"48503"
2821 | "2820","48","505",14179,"48505"
2822 | "2821","48","507",11840,"48507"
2823 | "2822","49","000",3205958,"49000"
2824 | "2823","49","001",6710,"49001"
2825 | "2824","49","003",56046,"49003"
2826 | "2825","49","005",128289,"49005"
2827 | "2826","49","007",20463,"49007"
2828 | "2827","49","009",950,"49009"
2829 | "2828","49","011",355481,"49011"
2830 | "2829","49","013",19938,"49013"
2831 | "2830","49","015",10012,"49015"
2832 | "2831","49","017",5051,"49017"
2833 | "2832","49","019",9754,"49019"
2834 | "2833","49","021",54839,"49021"
2835 | "2834","49","023",12017,"49023"
2836 | "2835","49","025",7886,"49025"
2837 | "2836","49","027",13188,"49027"
2838 | "2837","49","029",12124,"49029"
2839 | "2838","49","031",1479,"49031"
2840 | "2839","49","033",2483,"49033"
2841 | "2840","49","035",1160437,"49035"
2842 | "2841","49","037",15308,"49037"
2843 | "2842","49","039",30939,"49039"
2844 | "2843","49","041",21620,"49041"
2845 | "2844","49","043",42145,"49043"
2846 | "2845","49","045",72259,"49045"
2847 | "2846","49","047",35734,"49047"
2848 | "2847","49","049",636235,"49049"
2849 | "2848","49","051",34091,"49051"
2850 | "2849","49","053",177556,"49053"
2851 | "2850","49","055",2711,"49055"
2852 | "2851","49","057",260213,"49057"
2853 | "2852","50","000",623989,"50000"
2854 | "2853","50","001",36777,"50001"
2855 | "2854","50","003",35470,"50003"
2856 | "2855","50","005",29993,"50005"
2857 | "2856","50","007",163774,"50007"
2858 | "2857","50","009",6163,"50009"
2859 | "2858","50","011",49402,"50011"
2860 | "2859","50","013",7235,"50013"
2861 | "2860","50","015",25362,"50015"
2862 | "2861","50","017",28892,"50017"
2863 | "2862","50","019",27037,"50019"
2864 | "2863","50","021",58191,"50021"
2865 | "2864","50","023",58409,"50023"
2866 | "2865","50","025",42222,"50025"
2867 | "2866","50","027",55062,"50027"
2868 | "2867","51","000",8535519,"51000"
2869 | "2868","51","001",32316,"51001"
2870 | "2869","51","003",109330,"51003"
2871 | "2870","51","005",14860,"51005"
2872 | "2871","51","007",13145,"51007"
2873 | "2872","51","009",31605,"51009"
2874 | "2873","51","011",15911,"51011"
2875 | "2874","51","013",236842,"51013"
2876 | "2875","51","015",75558,"51015"
2877 | "2876","51","017",4147,"51017"
2878 | "2877","51","019",78997,"51019"
2879 | "2878","51","021",6280,"51021"
2880 | "2879","51","023",33419,"51023"
2881 | "2880","51","025",16231,"51025"
2882 | "2881","51","027",21004,"51027"
2883 | "2882","51","029",17148,"51029"
2884 | "2883","51","031",54885,"51031"
2885 | "2884","51","033",30725,"51033"
2886 | "2885","51","035",29791,"51035"
2887 | "2886","51","036",6963,"51036"
2888 | "2887","51","037",11880,"51037"
2889 | "2888","51","041",352802,"51041"
2890 | "2889","51","043",14619,"51043"
2891 | "2890","51","045",5131,"51045"
2892 | "2891","51","047",52605,"51047"
2893 | "2892","51","049",9932,"51049"
2894 | "2893","51","051",14318,"51051"
2895 | "2894","51","053",28544,"51053"
2896 | "2895","51","057",10953,"51057"
2897 | "2896","51","059",1147532,"51059"
2898 | "2897","51","061",71222,"51061"
2899 | "2898","51","063",15749,"51063"
2900 | "2899","51","065",27270,"51065"
2901 | "2900","51","067",56042,"51067"
2902 | "2901","51","069",89313,"51069"
2903 | "2902","51","071",16720,"51071"
2904 | "2903","51","073",37348,"51073"
2905 | "2904","51","075",23753,"51075"
2906 | "2905","51","077",15550,"51077"
2907 | "2906","51","079",19819,"51079"
2908 | "2907","51","081",11336,"51081"
2909 | "2908","51","083",33911,"51083"
2910 | "2909","51","085",107766,"51085"
2911 | "2910","51","087",330818,"51087"
2912 | "2911","51","089",50557,"51089"
2913 | "2912","51","091",2190,"51091"
2914 | "2913","51","093",37109,"51093"
2915 | "2914","51","095",76523,"51095"
2916 | "2915","51","097",7025,"51097"
2917 | "2916","51","099",26836,"51099"
2918 | "2917","51","101",17148,"51101"
2919 | "2918","51","103",10603,"51103"
2920 | "2919","51","105",23423,"51105"
2921 | "2920","51","107",413538,"51107"
2922 | "2921","51","109",37591,"51109"
2923 | "2922","51","111",12196,"51111"
2924 | "2923","51","113",13261,"51113"
2925 | "2924","51","115",8834,"51115"
2926 | "2925","51","117",30587,"51117"
2927 | "2926","51","119",10582,"51119"
2928 | "2927","51","121",98535,"51121"
2929 | "2928","51","125",14930,"51125"
2930 | "2929","51","127",23091,"51127"
2931 | "2930","51","131",11710,"51131"
2932 | "2931","51","133",12095,"51133"
2933 | "2932","51","135",15232,"51135"
2934 | "2933","51","137",37051,"51137"
2935 | "2934","51","139",23902,"51139"
2936 | "2935","51","141",17608,"51141"
2937 | "2936","51","143",60354,"51143"
2938 | "2937","51","145",29652,"51145"
2939 | "2938","51","147",22802,"51147"
2940 | "2939","51","149",38353,"51149"
2941 | "2940","51","153",470335,"51153"
2942 | "2941","51","155",34027,"51155"
2943 | "2942","51","157",7370,"51157"
2944 | "2943","51","159",9023,"51159"
2945 | "2944","51","161",94186,"51161"
2946 | "2945","51","163",22573,"51163"
2947 | "2946","51","165",81948,"51165"
2948 | "2947","51","167",26586,"51167"
2949 | "2948","51","169",21566,"51169"
2950 | "2949","51","171",43616,"51171"
2951 | "2950","51","173",30104,"51173"
2952 | "2951","51","175",17631,"51175"
2953 | "2952","51","177",136215,"51177"
2954 | "2953","51","179",152882,"51179"
2955 | "2954","51","181",6422,"51181"
2956 | "2955","51","183",11159,"51183"
2957 | "2956","51","185",40595,"51185"
2958 | "2957","51","187",40164,"51187"
2959 | "2958","51","191",53740,"51191"
2960 | "2959","51","193",18015,"51193"
2961 | "2960","51","195",37383,"51195"
2962 | "2961","51","197",28684,"51197"
2963 | "2962","51","199",68280,"51199"
2964 | "2963","51","510",159428,"51510"
2965 | "2964","51","520",16762,"51520"
2966 | "2965","51","530",6478,"51530"
2967 | "2966","51","540",47266,"51540"
2968 | "2967","51","550",244835,"51550"
2969 | "2968","51","570",17370,"51570"
2970 | "2969","51","580",5538,"51580"
2971 | "2970","51","590",40044,"51590"
2972 | "2971","51","595",5346,"51595"
2973 | "2972","51","600",24019,"51600"
2974 | "2973","51","610",14617,"51610"
2975 | "2974","51","620",7967,"51620"
2976 | "2975","51","630",29036,"51630"
2977 | "2976","51","640",6347,"51640"
2978 | "2977","51","650",134510,"51650"
2979 | "2978","51","660",53016,"51660"
2980 | "2979","51","670",22529,"51670"
2981 | "2980","51","678",7446,"51678"
2982 | "2981","51","680",82168,"51680"
2983 | "2982","51","683",41085,"51683"
2984 | "2983","51","685",17478,"51685"
2985 | "2984","51","690",12554,"51690"
2986 | "2985","51","700",179225,"51700"
2987 | "2986","51","710",242742,"51710"
2988 | "2987","51","720",3981,"51720"
2989 | "2988","51","730",31346,"51730"
2990 | "2989","51","735",12271,"51735"
2991 | "2990","51","740",94398,"51740"
2992 | "2991","51","750",18249,"51750"
2993 | "2992","51","760",230436,"51760"
2994 | "2993","51","770",99143,"51770"
2995 | "2994","51","775",25301,"51775"
2996 | "2995","51","790",24932,"51790"
2997 | "2996","51","800",92108,"51800"
2998 | "2997","51","810",449974,"51810"
2999 | "2998","51","820",22630,"51820"
3000 | "2999","51","830",14954,"51830"
3001 | "3000","51","840",28078,"51840"
3002 | "3001","53","000",7614893,"53000"
3003 | "3002","53","001",19983,"53001"
3004 | "3003","53","003",22582,"53003"
3005 | "3004","53","005",204390,"53005"
3006 | "3005","53","007",77200,"53007"
3007 | "3006","53","009",77331,"53009"
3008 | "3007","53","011",488241,"53011"
3009 | "3008","53","013",3985,"53013"
3010 | "3009","53","015",110593,"53015"
3011 | "3010","53","017",43429,"53017"
3012 | "3011","53","019",7627,"53019"
3013 | "3012","53","021",95222,"53021"
3014 | "3013","53","023",2225,"53023"
3015 | "3014","53","025",97733,"53025"
3016 | "3015","53","027",75061,"53027"
3017 | "3016","53","029",85141,"53029"
3018 | "3017","53","031",32221,"53031"
3019 | "3018","53","033",2252782,"53033"
3020 | "3019","53","035",271473,"53035"
3021 | "3020","53","037",47935,"53037"
3022 | "3021","53","039",22425,"53039"
3023 | "3022","53","041",80707,"53041"
3024 | "3023","53","043",10939,"53043"
3025 | "3024","53","045",66768,"53045"
3026 | "3025","53","047",42243,"53047"
3027 | "3026","53","049",22471,"53049"
3028 | "3027","53","051",13724,"53051"
3029 | "3028","53","053",904980,"53053"
3030 | "3029","53","055",17582,"53055"
3031 | "3030","53","057",129205,"53057"
3032 | "3031","53","059",12083,"53059"
3033 | "3032","53","061",822083,"53061"
3034 | "3033","53","063",522798,"53063"
3035 | "3034","53","065",45723,"53065"
3036 | "3035","53","067",290536,"53067"
3037 | "3036","53","069",4488,"53069"
3038 | "3037","53","071",60760,"53071"
3039 | "3038","53","073",229247,"53073"
3040 | "3039","53","075",50104,"53075"
3041 | "3040","53","077",250873,"53077"
3042 | "3041","54","000",1792147,"54000"
3043 | "3042","54","001",16441,"54001"
3044 | "3043","54","003",119171,"54003"
3045 | "3044","54","005",21457,"54005"
3046 | "3045","54","007",13957,"54007"
3047 | "3046","54","009",21939,"54009"
3048 | "3047","54","011",91945,"54011"
3049 | "3048","54","013",7109,"54013"
3050 | "3049","54","015",8508,"54015"
3051 | "3050","54","017",8448,"54017"
3052 | "3051","54","019",42406,"54019"
3053 | "3052","54","021",7823,"54021"
3054 | "3053","54","023",11568,"54023"
3055 | "3054","54","025",34662,"54025"
3056 | "3055","54","027",23175,"54027"
3057 | "3056","54","029",28810,"54029"
3058 | "3057","54","031",13776,"54031"
3059 | "3058","54","033",67256,"54033"
3060 | "3059","54","035",28576,"54035"
3061 | "3060","54","037",57146,"54037"
3062 | "3061","54","039",178124,"54039"
3063 | "3062","54","041",15907,"54041"
3064 | "3063","54","043",20409,"54043"
3065 | "3064","54","045",32019,"54045"
3066 | "3065","54","047",17624,"54047"
3067 | "3066","54","049",56072,"54049"
3068 | "3067","54","051",30531,"54051"
3069 | "3068","54","053",26516,"54053"
3070 | "3069","54","055",58758,"54055"
3071 | "3070","54","057",26868,"54057"
3072 | "3071","54","059",23424,"54059"
3073 | "3072","54","061",105612,"54061"
3074 | "3073","54","063",13275,"54063"
3075 | "3074","54","065",17884,"54065"
3076 | "3075","54","067",24496,"54067"
3077 | "3076","54","069",41411,"54069"
3078 | "3077","54","071",6969,"54071"
3079 | "3078","54","073",7460,"54073"
3080 | "3079","54","075",8247,"54075"
3081 | "3080","54","077",33432,"54077"
3082 | "3081","54","079",56450,"54079"
3083 | "3082","54","081",73361,"54081"
3084 | "3083","54","083",28695,"54083"
3085 | "3084","54","085",9554,"54085"
3086 | "3085","54","087",13688,"54087"
3087 | "3086","54","089",12573,"54089"
3088 | "3087","54","091",16695,"54091"
3089 | "3088","54","093",6839,"54093"
3090 | "3089","54","095",8591,"54095"
3091 | "3090","54","097",24176,"54097"
3092 | "3091","54","099",39402,"54099"
3093 | "3092","54","101",8114,"54101"
3094 | "3093","54","103",15065,"54103"
3095 | "3094","54","105",5821,"54105"
3096 | "3095","54","107",83518,"54107"
3097 | "3096","54","109",20394,"54109"
3098 | "3097","55","000",5822434,"55000"
3099 | "3098","55","001",20220,"55001"
3100 | "3099","55","003",15562,"55003"
3101 | "3100","55","005",45244,"55005"
3102 | "3101","55","007",15036,"55007"
3103 | "3102","55","009",264542,"55009"
3104 | "3103","55","011",13031,"55011"
3105 | "3104","55","013",15414,"55013"
3106 | "3105","55","015",50089,"55015"
3107 | "3106","55","017",64658,"55017"
3108 | "3107","55","019",34774,"55019"
3109 | "3108","55","021",57532,"55021"
3110 | "3109","55","023",16131,"55023"
3111 | "3110","55","025",546695,"55025"
3112 | "3111","55","027",87839,"55027"
3113 | "3112","55","029",27668,"55029"
3114 | "3113","55","031",43150,"55031"
3115 | "3114","55","033",45368,"55033"
3116 | "3115","55","035",104646,"55035"
3117 | "3116","55","037",4295,"55037"
3118 | "3117","55","039",103403,"55039"
3119 | "3118","55","041",9004,"55041"
3120 | "3119","55","043",51439,"55043"
3121 | "3120","55","045",36960,"55045"
3122 | "3121","55","047",18913,"55047"
3123 | "3122","55","049",23678,"55049"
3124 | "3123","55","051",5687,"55051"
3125 | "3124","55","053",20643,"55053"
3126 | "3125","55","055",84769,"55055"
3127 | "3126","55","057",26687,"55057"
3128 | "3127","55","059",169561,"55059"
3129 | "3128","55","061",20434,"55061"
3130 | "3129","55","063",118016,"55063"
3131 | "3130","55","065",16665,"55065"
3132 | "3131","55","067",19189,"55067"
3133 | "3132","55","069",27593,"55069"
3134 | "3133","55","071",78981,"55071"
3135 | "3134","55","073",135692,"55073"
3136 | "3135","55","075",40350,"55075"
3137 | "3136","55","077",15574,"55077"
3138 | "3137","55","078",4556,"55078"
3139 | "3138","55","079",945726,"55079"
3140 | "3139","55","081",46253,"55081"
3141 | "3140","55","083",37930,"55083"
3142 | "3141","55","085",35595,"55085"
3143 | "3142","55","087",187885,"55087"
3144 | "3143","55","089",89221,"55089"
3145 | "3144","55","091",7287,"55091"
3146 | "3145","55","093",42754,"55093"
3147 | "3146","55","095",43783,"55095"
3148 | "3147","55","097",70772,"55097"
3149 | "3148","55","099",13351,"55099"
3150 | "3149","55","101",196311,"55101"
3151 | "3150","55","103",17252,"55103"
3152 | "3151","55","105",163354,"55105"
3153 | "3152","55","107",14178,"55107"
3154 | "3153","55","109",90687,"55109"
3155 | "3154","55","111",64442,"55111"
3156 | "3155","55","113",16558,"55113"
3157 | "3156","55","115",40899,"55115"
3158 | "3157","55","117",115340,"55117"
3159 | "3158","55","119",20343,"55119"
3160 | "3159","55","121",29649,"55121"
3161 | "3160","55","123",30822,"55123"
3162 | "3161","55","125",22195,"55125"
3163 | "3162","55","127",103868,"55127"
3164 | "3163","55","129",15720,"55129"
3165 | "3164","55","131",136034,"55131"
3166 | "3165","55","133",404198,"55133"
3167 | "3166","55","135",50990,"55135"
3168 | "3167","55","137",24443,"55137"
3169 | "3168","55","139",171907,"55139"
3170 | "3169","55","141",72999,"55141"
3171 | "3170","56","000",578759,"56000"
3172 | "3171","56","001",38880,"56001"
3173 | "3172","56","003",11790,"56003"
3174 | "3173","56","005",46341,"56005"
3175 | "3174","56","007",14800,"56007"
3176 | "3175","56","009",13822,"56009"
3177 | "3176","56","011",7584,"56011"
3178 | "3177","56","013",39261,"56013"
3179 | "3178","56","015",13211,"56015"
3180 | "3179","56","017",4413,"56017"
3181 | "3180","56","019",8445,"56019"
3182 | "3181","56","021",99500,"56021"
3183 | "3182","56","023",19830,"56023"
3184 | "3183","56","025",79858,"56025"
3185 | "3184","56","027",2356,"56027"
3186 | "3185","56","029",29194,"56029"
3187 | "3186","56","031",8393,"56031"
3188 | "3187","56","033",30485,"56033"
3189 | "3188","56","035",9831,"56035"
3190 | "3189","56","037",42343,"56037"
3191 | "3190","56","039",23464,"56039"
3192 | "3191","56","041",20226,"56041"
3193 | "3192","56","043",7805,"56043"
3194 | "3193","56","045",6927,"56045"
3195 |
--------------------------------------------------------------------------------