Load Packages

tidyverse

if (!require(tidyverse)){
  install.packages("tidyverse", dependencies = TRUE)
  library(tidyverse)
}

codebookr

if (!require(codebookr)){
  install.packages("codebookr", dependencies = TRUE)
  library(codebookr)
}

summarytools

if (!require(summarytools)){
  install.packages("summarytools", dependencies = TRUE)
  library(summarytools)
}

broom

if (!require(broom)){
  install.packages("broom", dependencies = TRUE)
  library(broom)
}

performance

if (!require(performance)){
  install.packages("performance", dependencies = TRUE)
  library(performance)
}

gtsummary

if (!require(gtsummary)){
  install.packages("gtsummary", dependencies = TRUE)
  library(gtsummary)
}

janitor

if (!require(janitor)){
  install.packages("janitor", dependencies = TRUE)
  library(janitor)
}

forcats

if (!require(forcats)){
  install.packages("forcats", dependencies = TRUE)
  library(forcats)
}

Import Data

mh_deidv3 <- read.csv("~/Desktop/R-Code/mh_deidv3.csv")

Data Cleaning

RPL_THEMES erroneous values

mh_deidv3 %>%
  select(age_yrs, PATIENT_GENDER_CD, PATIENT_RACE_DESC, PATIENT_ETHNIC_GROUP_DESC, PATIENT_LANGUAGE_DESC, PATIENT_RELIGION_DESC, PATIENT_MARITAL_STATUS_DESC, PATIENT_STATE_CD, EDU_YEARS, TOBACCO_DESC, depression, anxiety, ptsd, bipolar, body_image, ocd, stress, seasonalAD, panic, any_psych_dx,ST_ABBR, E_TOTPOP, RPL_THEMES, RPL_THEME1, RPL_THEME2, RPL_THEME3, RPL_THEME4) -> exampledf1
exampledf1 %>%
mutate(RPL_THEMES = na_if(RPL_THEMES, "-999")) %>%
mutate(RPL_THEMES = na_if(RPL_THEMES, "0")) %>%
mutate(RPL_THEME1 = na_if(RPL_THEME1, "-999")) %>%
mutate(RPL_THEME1 = na_if(RPL_THEME1, "0")) %>%
mutate(RPL_THEME2 = na_if(RPL_THEME2, "-999")) %>%
mutate(RPL_THEME2 = na_if(RPL_THEME2, "0")) %>%
mutate(RPL_THEME3 = na_if(RPL_THEME3, "-999")) %>%
mutate(RPL_THEME3 = na_if(RPL_THEME3, "0")) %>%
mutate(RPL_THEME4 = na_if(RPL_THEME4, "-999")) %>%
mutate(RPL_THEME4 = na_if(RPL_THEME4, "0")) -> exampledf1NA

Mental Health Dich

exampledf1NA %>% mutate(across(depression:any_psych_dx, ~if_else(.x>0.5, 1, 0),
                .names = "{col}_2")) -> exampledf1NADi2

Marital Status

exampledf1NADi2 %>% 
mutate(mstat_5 = as_factor(PATIENT_MARITAL_STATUS_DESC),
         mstat_5 = fct_recode(mstat_5, div_sep = "DIVORCED",
                              div_sep = "LEGALLY SEPARATED", widow = "WIDOWED",
                              married = "MARRIED", unmarried = "SINGLE",
                              unmarried = "SIGNIFICANT OTHER"),
         mstat_5 = fct_relevel(mstat_5, ref = 'married')) %>% 
  mutate(mstat_5 = na_if(mstat_5, "UNKNOWN")) %>% 
mutate(mstat_5 = na_if(mstat_5, "OTHER")) -> exampledf1NADi2MA

Religion

exampledf1NADi2MA %>% 
  mutate(relig_affil = as_factor(PATIENT_RELIGION_DESC),
          relig_affil = fct_recode(relig_affil, yes = "CATHOLIC",
                      no = "NONE", 
                      yes = "CHRISTIAN", yes = "LUTHERAN",
                      yes = "RUSSIAN ORTHODOX",
                      yes = "PROTESTANT", yes = "BAPTIST",
                      yes = "METHODIST", yes = "PRESBYTERIAN",
                      yes = "NON-DENOMINATIONAL", yes = "JEWISH",
                      yes = "MUSLIM", yes = "OTHER",
                      yes = "EPISCOPALIAN", yes = "PENTECOSTAL",
                      no = "AGNOSTIC", no = "ATHEIST",
                      yes = "JEHOVAH'S WITNESS", yes = "HINDU",
                      yes = "GREEK ORTHODOX", yes = "CHURCH OF JESUS CHRIST OF LATTER-DAY SAINTS", yes = "BAHAI", no = "SPIRITUAL", yes = "CHURCH OF CHRIST",
         yes = "SEVENTH DAY ADVENTIST", yes = "APOSTOLIC", yes = "BUDDHIST", yes = "NAZARENE", yes = "CONGREGATIONAL", yes = "UNITED CHURCH OF CHR", yes = "REFORMED", yes = "PAGAN", yes = "JAIN", yes = "ASSEMBLY OF GOD", yes = "REORG CHR OF LAT DAY", yes = "QUAKER", yes = "UNITARIAN UNIVERSALIST", yes = "MENNONITE", yes = "FREE METHODIST", yes = "NATIVE AMER SPIRITL", yes = "WICCAN", yes = "ORTHODOX", yes = "SALVATION ARMY", yes = "DISCIPLES OF CHRIST", yes = "AFRICAN METHODIST EP", yes = "SIKH", yes = "CHURCH OF GOD", yes = "TAOIST", yes = "ANGLICAN"),
relig_affil = fct_relevel(relig_affil, ref = 'yes')) %>% 
mutate(relig_affil = na_if(relig_affil, "UNKNOWN")) %>% 
mutate(relig_affil = na_if(relig_affil, "PATIENT REFUSED")) -> exampledf1NADi2MARel

Race

exampledf1NADi2MARel %>% 
mutate(race_5 = as_factor(PATIENT_RACE_DESC),
         race_5 = fct_recode(race_5, Other = "OTHER",
                  Other = "UNKNOWN", Other = "CHOOSE NOT TO DISCLOSE",
                  ASIAN = "NATIVE HAWAIIAN AND OTHER PACIFIC ISLANDER", 
                  Other = "MIDDLE EASTERN/NORTH AFRICAN",
                ASIAN = "ASIAN INDIAN", ASIAN = "OTHER ASIAN",
                ASIAN = "JAPANESE", ASIAN = "KOREAN", ASIAN = "FILIPINO",
                ASIAN = "CHINESE"),
         race_5 = fct_relevel(race_5, ref = 'WHITE OR CAUCASIAN')) -> exampledf1NADi2MARelRa

Gender

exampledf1NADi2MARelRa %>% 
mutate(gender = as_factor(PATIENT_GENDER_CD),
         gender = fct_recode(gender, male = "M", female = "F"),
         gender = fct_relevel(gender, ref = "male")) -> exampledf1NADi2MARelRaG

Language

exampledf1NADi2MARelRaG %>% 
  mutate(lang_3 = as_factor(PATIENT_LANGUAGE_DESC),
lang_3 = fct_recode(lang_3, English = "ENGLISH",
Other = "ARABIC", Other = "JAPANESE",
Other = "CHINESE, MANDARIN",
Other = "KOREAN", Other = "SIGN LANGUAGE",
Other = "RUSSIAN", Other = "SPANISH", Other = "ARMENIAN",
Other = "TURKISH", Other = "HINDI", Other = "BENGALI", Other = "FARSI; PERSIAN", Other = "ALBANIAN", Other = "HMONG", Other = "ROMANIAN", 
Other = "PUNJABI", Other = "CROATIAN", Other = "CHALDEAN", 
Other = "BURMESE", Other = "PORTUGUESE",
Other = "TAGALOG", Other = "FRENCH",
Other = "GERMAN", Other = "CHINESE, CANTONESE",
Other = "BOSNIAN", Other = "URDU",
Other = "UNKNOWN"),
lang_3 = fct_relevel(lang_3, ref = 'English')) -> exampledf1NADi2MARelRaGL

Ethnicity

exampledf1NADi2MARelRaGL %>% 
  mutate(ethnic_3 = as_factor(PATIENT_ETHNIC_GROUP_DESC)) %>% 
 mutate(ethnic_3 = na_if(ethnic_3, "UNKNOWN")) %>% 
mutate(ethnic_3 = na_if(ethnic_3, "CHOOSE NOT TO DISCLOSE")) -> exampledf1NADi2MARelRaGLEth

tobacco

exampledf1NADi2MARelRaGLEth %>% 
  mutate(tobac_4 = as_factor(TOBACCO_DESC),
 tobac_4 = fct_recode(tobac_4, Yes = "PASSIVE",
Yes = "YES"),
tobac_4 = fct_relevel(tobac_4, ref = 'NEVER')) %>% 
mutate(tobac_4 = na_if(tobac_4, "NOT ASKED")) -> exampledf1NADi2MARelRaGLEthT

Codebook

exampledf1NADi2MARelRaGLEthT %>% 
select(age_yrs, gender, race_5, ethnic_3, lang_3, relig_affil, mstat_5, PATIENT_STATE_CD, EDU_YEARS, tobac_4, depression_2, anxiety_2, ptsd_2, bipolar_2, body_image_2, ocd_2, seasonalAD_2, panic_2, any_psych_dx_2, E_TOTPOP, RPL_THEMES, RPL_THEME1, RPL_THEME2, RPL_THEME3, RPL_THEME4) -> mh_clean1
print(dfSummary(mh_clean1), method = 'render') 

Data Frame Summary

mh_clean1

Dimensions: 15245 x 25
Duplicates: 0
No Variable Stats / Values Freqs (% of Valid) Graph Valid Missing
1 age_yrs [numeric]
Mean (sd) : 49.3 (19.5)
min ≤ med ≤ max:
1 ≤ 49.3 ≤ 108.3
IQR (CV) : 31.5 (0.4)
11557 distinct values 15245 (100.0%) 0 (0.0%)
2 gender [factor]
1. male
2. female
6973(45.7%)
8272(54.3%)
15245 (100.0%) 0 (0.0%)
3 race_5 [factor]
1. WHITE OR CAUCASIAN
2. BLACK OR AFRICAN AMERICAN
3. Other
4. ASIAN
5. AMERICAN INDIAN AND ALASK
13230(86.8%)
946(6.2%)
630(4.1%)
383(2.5%)
56(0.4%)
15245 (100.0%) 0 (0.0%)
4 ethnic_3 [factor]
1. NON-HISPANIC
2. UNKNOWN
3. CHOOSE NOT TO DISCLOSE
4. HISPANIC
14401(97.9%)
0(0.0%)
0(0.0%)
302(2.1%)
14703 (96.4%) 542 (3.6%)
5 lang_3 [factor]
1. English
2. Other
15081(98.9%)
164(1.1%)
15245 (100.0%) 0 (0.0%)
6 relig_affil [factor]
1. yes
2. no
3. PATIENT REFUSED
4. UNKNOWN
8211(57.4%)
6085(42.6%)
0(0.0%)
0(0.0%)
14296 (93.8%) 949 (6.2%)
7 mstat_5 [factor]
1. married
2. UNKNOWN
3. unmarried
4. div_sep
5. widow
6. OTHER
6198(51.6%)
0(0.0%)
4997(41.6%)
507(4.2%)
307(2.6%)
0(0.0%)
12009 (78.8%) 3236 (21.2%)
8 PATIENT_STATE_CD [character]
1. MI
2. OH
3. FL
4. IN
5. IL
6. CA
7. NY
8. NC
9. TX
10. PA
[ 36 others ]
14299(93.8%)
339(2.2%)
82(0.5%)
60(0.4%)
52(0.3%)
50(0.3%)
50(0.3%)
24(0.2%)
22(0.1%)
21(0.1%)
245(1.6%)
15244 (100.0%) 1 (0.0%)
9 EDU_YEARS [integer]
Mean (sd) : 15.3 (3.8)
min ≤ med ≤ max:
0 ≤ 16 ≤ 50
IQR (CV) : 5 (0.2)
29 distinct values 960 (6.3%) 14285 (93.7%)
10 tobac_4 [factor]
1. NEVER
2. QUIT
3. Yes
4. NOT ASKED
8173(56.4%)
4439(30.6%)
1890(13.0%)
0(0.0%)
14502 (95.1%) 743 (4.9%)
11 depression_2 [numeric]
Min : 0
Mean : 0.2
Max : 1
0:12639(82.9%)
1:2606(17.1%)
15245 (100.0%) 0 (0.0%)
12 anxiety_2 [numeric]
Min : 0
Mean : 0.2
Max : 1
0:12434(81.6%)
1:2811(18.4%)
15245 (100.0%) 0 (0.0%)
13 ptsd_2 [numeric]
Min : 0
Mean : 0
Max : 1
0:15085(99.0%)
1:160(1.0%)
15245 (100.0%) 0 (0.0%)
14 bipolar_2 [numeric]
Min : 0
Mean : 0
Max : 1
0:15026(98.6%)
1:219(1.4%)
15245 (100.0%) 0 (0.0%)
15 body_image_2 [numeric]
Min : 0
Mean : 0
Max : 1
0:15242(100.0%)
1:3(0.0%)
15245 (100.0%) 0 (0.0%)
16 ocd_2 [numeric]
Min : 0
Mean : 0
Max : 1
0:15166(99.5%)
1:79(0.5%)
15245 (100.0%) 0 (0.0%)
17 seasonalAD_2 [numeric]
Min : 0
Mean : 0
Max : 1
0:15219(99.8%)
1:26(0.2%)
15245 (100.0%) 0 (0.0%)
18 panic_2 [numeric]
Min : 0
Mean : 0
Max : 1
0:15062(98.8%)
1:183(1.2%)
15245 (100.0%) 0 (0.0%)
19 any_psych_dx_2 [numeric]
Min : 0
Mean : 0.3
Max : 1
0:10929(71.7%)
1:4316(28.3%)
15245 (100.0%) 0 (0.0%)
20 E_TOTPOP [integer]
Mean (sd) : 4362.8 (1701.5)
min ≤ med ≤ max:
182 ≤ 4128 ≤ 20695
IQR (CV) : 2148 (0.4)
2130 distinct values 14966 (98.2%) 279 (1.8%)
21 RPL_THEMES [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.3 ≤ 1
IQR (CV) : 0.4 (0.7)
2539 distinct values 14957 (98.1%) 288 (1.9%)
22 RPL_THEME1 [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.3 ≤ 1
IQR (CV) : 0.4 (0.7)
2477 distinct values 14907 (97.8%) 338 (2.2%)
23 RPL_THEME2 [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.3 ≤ 1
IQR (CV) : 0.4 (0.7)
2451 distinct values 14958 (98.1%) 287 (1.9%)
24 RPL_THEME3 [numeric]
Mean (sd) : 0.5 (0.3)
min ≤ med ≤ max:
0 ≤ 0.5 ≤ 1
IQR (CV) : 0.5 (0.6)
1832 distinct values 14966 (98.2%) 279 (1.8%)
25 RPL_THEME4 [numeric]
Mean (sd) : 0.4 (0.3)
min ≤ med ≤ max:
0 ≤ 0.4 ≤ 1
IQR (CV) : 0.5 (0.7)
2455 distinct values 14935 (98.0%) 310 (2.0%)

Generated by summarytools 1.0.1 (R version 4.1.2)
2022-10-18

Patient Characteristics

Baseline Characteristics

mh_clean1 %>% 
  select(age_yrs, gender, race_5, ethnic_3, lang_3, relig_affil, mstat_5, tobac_4, depression_2, anxiety_2, ptsd_2, any_psych_dx_2, RPL_THEMES, RPL_THEME1, RPL_THEME2, RPL_THEME3, RPL_THEME4) -> baseline
baseline %>% tbl_summary(label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", depression_2 ~ "Depression", anxiety_2 ~ "Anxiety", ptsd_2 ~ "PTSD", any_psych_dx_2 ~ "Any Psychiatric Diagnosis", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", tobac_4 ~ "Tobacco Use"),
        statistic = list(all_continuous() ~ "{mean} ({sd})"),
        missing_text = "(Missing)")
Characteristic N = 15,2451
Age 49 (19)
Gender
    male 6,973 (46%)
    female 8,272 (54%)
Race
    WHITE OR CAUCASIAN 13,230 (87%)
    BLACK OR AFRICAN AMERICAN 946 (6.2%)
    Other 630 (4.1%)
    ASIAN 383 (2.5%)
    AMERICAN INDIAN AND ALASKA NATIVE 56 (0.4%)
Ethnicity
    NON-HISPANIC 14,401 (98%)
    UNKNOWN 0 (0%)
    CHOOSE NOT TO DISCLOSE 0 (0%)
    HISPANIC 302 (2.1%)
    (Missing) 542
English Speaking
    English 15,081 (99%)
    Other 164 (1.1%)
Any Religious Affiliation
    yes 8,211 (57%)
    no 6,085 (43%)
    PATIENT REFUSED 0 (0%)
    UNKNOWN 0 (0%)
    (Missing) 949
Marital Status
    married 6,198 (52%)
    UNKNOWN 0 (0%)
    unmarried 4,997 (42%)
    div_sep 507 (4.2%)
    widow 307 (2.6%)
    OTHER 0 (0%)
    (Missing) 3,236
Tobacco Use
    NEVER 8,173 (56%)
    QUIT 4,439 (31%)
    Yes 1,890 (13%)
    NOT ASKED 0 (0%)
    (Missing) 743
Depression 2,606 (17%)
Anxiety 2,811 (18%)
PTSD 160 (1.0%)
Any Psychiatric Diagnosis 4,316 (28%)
Total SVI 0.37 (0.26)
    (Missing) 288
Soceioeconomic Status 0.35 (0.26)
    (Missing) 338
Household Composition 0.40 (0.27)
    (Missing) 287
Minority Status and Language 0.48 (0.29)
    (Missing) 279
Housing and Transportation 0.44 (0.29)
    (Missing) 310
1 Mean (SD); n (%)

Baseline Characteristics by Depression

baseline %>% tbl_summary(by = depression_2,
         statistic = list(all_continuous() ~ "{mean} ({sd})"),
        label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", anxiety_2 ~ "Anxiety", ptsd_2 ~ "PTSD", any_psych_dx_2 ~ "Any Psychiatric Diagnosis", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", tobac_4 ~ "Tobacco Use"),
        missing_text = "(Missing)"
        ) %>% add_p()
There was an error in 'add_p()/add_difference()' for variable 'tobac_4', p-value omitted:
Error in stats::fisher.test(structure(c(1L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, : FEXACT error 6.  LDKEY=531 is too small for this problem,
  (ii := key2[itp=345] = 27473220, ldstp=15930)
Try increasing the size of the workspace and possibly 'mult'
Characteristic 0, N = 12,6391 1, N = 2,6061 p-value2
Age 49 (20) 51 (18) <0.001
Gender <0.001
    male 6,090 (48%) 883 (34%)
    female 6,549 (52%) 1,723 (66%)
Race <0.001
    WHITE OR CAUCASIAN 10,927 (86%) 2,303 (88%)
    BLACK OR AFRICAN AMERICAN 778 (6.2%) 168 (6.4%)
    Other 544 (4.3%) 86 (3.3%)
    ASIAN 347 (2.7%) 36 (1.4%)
    AMERICAN INDIAN AND ALASKA NATIVE 43 (0.3%) 13 (0.5%)
Ethnicity 0.5
    NON-HISPANIC 11,905 (98%) 2,496 (98%)
    UNKNOWN 0 (0%) 0 (0%)
    CHOOSE NOT TO DISCLOSE 0 (0%) 0 (0%)
    HISPANIC 255 (2.1%) 47 (1.8%)
    (Missing) 479 63
English Speaking 0.002
    English 12,488 (99%) 2,593 (100%)
    Other 151 (1.2%) 13 (0.5%)
Any Religious Affiliation 0.2
    yes 6,740 (57%) 1,471 (59%)
    no 5,043 (43%) 1,042 (41%)
    PATIENT REFUSED 0 (0%) 0 (0%)
    UNKNOWN 0 (0%) 0 (0%)
    (Missing) 856 93
Marital Status <0.001
    married 5,228 (41%) 970 (37%)
    unknown 2,727 (22%) 509 (20%)
    unmarried 4,095 (32%) 902 (35%)
    div_sep 362 (2.9%) 145 (5.6%)
    widow 227 (1.8%) 80 (3.1%)
Tobacco Use
    NEVER 6,990 (59%) 1,183 (46%)
    QUIT 3,499 (29%) 940 (37%)
    Yes 1,459 (12%) 431 (17%)
    NOT ASKED 0 (0%) 0 (0%)
    (Missing) 691 52
Anxiety 1,320 (10%) 1,491 (57%) <0.001
PTSD 54 (0.4%) 106 (4.1%) <0.001
Any Psychiatric Diagnosis 1,710 (14%) 2,606 (100%) <0.001
Total SVI 0.37 (0.26) 0.39 (0.26) <0.001
    (Missing) 261 27
Soceioeconomic Status 0.35 (0.25) 0.37 (0.26) <0.001
    (Missing) 301 37
Household Composition 0.39 (0.27) 0.40 (0.27) >0.9
    (Missing) 260 27
Minority Status and Language 0.48 (0.28) 0.49 (0.29) 0.026
    (Missing) 252 27
Housing and Transportation 0.44 (0.29) 0.45 (0.29) 0.004
    (Missing) 278 32
1 Mean (SD); n (%)
2 Wilcoxon rank sum test; Pearson's Chi-squared test; Fisher's exact test

Baseline Characteristics By Anxiety

baseline %>% tbl_summary(by = anxiety_2,
       statistic = list(all_continuous() ~ "{mean} ({sd})"),
        label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", depression_2 ~ "Depression", ptsd_2 ~ "PTSD", any_psych_dx_2 ~ "Any Psychiatric Diagnosis", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", tobac_4 ~ "Tobacco Use"),
        missing_text = "(Missing)"
        ) %>% add_p()
There was an error in 'add_p()/add_difference()' for variable 'tobac_4', p-value omitted:
Error in stats::fisher.test(structure(c(1L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, : FEXACT error 6.  LDKEY=531 is too small for this problem,
  (ii := key2[itp=1030] = 30145890, ldstp=15930)
Try increasing the size of the workspace and possibly 'mult'
Characteristic 0, N = 12,4341 1, N = 2,8111 p-value2
Age 50 (20) 47 (18) <0.001
Gender <0.001
    male 6,058 (49%) 915 (33%)
    female 6,376 (51%) 1,896 (67%)
Race <0.001
    WHITE OR CAUCASIAN 10,731 (86%) 2,499 (89%)
    BLACK OR AFRICAN AMERICAN 792 (6.4%) 154 (5.5%)
    Other 527 (4.2%) 103 (3.7%)
    ASIAN 342 (2.8%) 41 (1.5%)
    AMERICAN INDIAN AND ALASKA NATIVE 42 (0.3%) 14 (0.5%)
Ethnicity 0.8
    NON-HISPANIC 11,713 (98%) 2,688 (98%)
    UNKNOWN 0 (0%) 0 (0%)
    CHOOSE NOT TO DISCLOSE 0 (0%) 0 (0%)
    HISPANIC 248 (2.1%) 54 (2.0%)
    (Missing) 473 69
English Speaking <0.001
    English 12,280 (99%) 2,801 (100%)
    Other 154 (1.2%) 10 (0.4%)
Any Religious Affiliation 0.9
    yes 6,652 (57%) 1,559 (58%)
    no 4,935 (43%) 1,150 (42%)
    PATIENT REFUSED 0 (0%) 0 (0%)
    UNKNOWN 0 (0%) 0 (0%)
    (Missing) 847 102
Marital Status <0.001
    married 5,162 (42%) 1,036 (37%)
    unknown 2,664 (21%) 572 (20%)
    unmarried 3,990 (32%) 1,007 (36%)
    div_sep 372 (3.0%) 135 (4.8%)
    widow 246 (2.0%) 61 (2.2%)
Tobacco Use
    NEVER 6,752 (58%) 1,421 (51%)
    QUIT 3,540 (30%) 899 (33%)
    Yes 1,447 (12%) 443 (16%)
    NOT ASKED 0 (0%) 0 (0%)
    (Missing) 695 48
Depression 1,115 (9.0%) 1,491 (53%) <0.001
PTSD 60 (0.5%) 100 (3.6%) <0.001
Any Psychiatric Diagnosis 1,505 (12%) 2,811 (100%) <0.001
Total SVI 0.37 (0.26) 0.36 (0.25) 0.088
    (Missing) 256 32
Soceioeconomic Status 0.35 (0.26) 0.34 (0.25) 0.009
    (Missing) 296 42
Household Composition 0.40 (0.27) 0.38 (0.26) <0.001
    (Missing) 255 32
Minority Status and Language 0.48 (0.28) 0.49 (0.29) 0.004
    (Missing) 247 32
Housing and Transportation 0.44 (0.29) 0.44 (0.28) 0.7
    (Missing) 273 37
1 Mean (SD); n (%)
2 Wilcoxon rank sum test; Pearson's Chi-squared test; Fisher's exact test

Baseline Characteristics by Any Psych Dx

baseline %>% tbl_summary(by = any_psych_dx_2,
       statistic = list(all_continuous() ~ "{mean} ({sd})"),
        label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", mstat_5 ~ "Marital Status", depression_2 ~ "Depression", ptsd_2 ~ "PTSD", anxiety_2 ~ "Anxiety", RPL_THEMES ~ "Total SVI", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", tobac_4 ~ "Tobacco Use", RPL_THEME4 ~ "Housing and Transportation"),
        missing_text = "(Missing)"
        ) %>% add_p()
There was an error in 'add_p()/add_difference()' for variable 'tobac_4', p-value omitted:
Error in stats::fisher.test(structure(c(1L, 1L, 2L, 3L, 1L, 2L, 1L, 2L, : FEXACT error 6.  LDKEY=531 is too small for this problem,
  (ii := key2[itp=1047] = 39726216, ldstp=15930)
Try increasing the size of the workspace and possibly 'mult'
Characteristic 0, N = 10,9291 1, N = 4,3161 p-value2
Age 49 (20) 49 (18) 0.7
Gender <0.001
    male 5,444 (50%) 1,529 (35%)
    female 5,485 (50%) 2,787 (65%)
Race <0.001
    WHITE OR CAUCASIAN 9,433 (86%) 3,797 (88%)
    BLACK OR AFRICAN AMERICAN 678 (6.2%) 268 (6.2%)
    Other 475 (4.3%) 155 (3.6%)
    ASIAN 307 (2.8%) 76 (1.8%)
    AMERICAN INDIAN AND ALASKA NATIVE 36 (0.3%) 20 (0.5%)
Ethnicity 0.7
    NON-HISPANIC 10,280 (98%) 4,121 (98%)
    UNKNOWN 0 (0%) 0 (0%)
    CHOOSE NOT TO DISCLOSE 0 (0%) 0 (0%)
    HISPANIC 219 (2.1%) 83 (2.0%)
    (Missing) 430 112
English Speaking <0.001
    English 10,787 (99%) 4,294 (99%)
    Other 142 (1.3%) 22 (0.5%)
Any Religious Affiliation 0.3
    yes 5,804 (57%) 2,407 (58%)
    no 4,350 (43%) 1,735 (42%)
    PATIENT REFUSED 0 (0%) 0 (0%)
    UNKNOWN 0 (0%) 0 (0%)
    (Missing) 775 174
Marital Status <0.001
    married 4,553 (42%) 1,645 (38%)
    unknown 2,376 (22%) 860 (20%)
    unmarried 3,498 (32%) 1,499 (35%)
    div_sep 304 (2.8%) 203 (4.7%)
    widow 198 (1.8%) 109 (2.5%)
Tobacco Use
    NEVER 6,064 (59%) 2,109 (50%)
    QUIT 2,988 (29%) 1,451 (34%)
    Yes 1,222 (12%) 668 (16%)
    NOT ASKED 0 (0%) 0 (0%)
    (Missing) 655 88
Depression 0 (0%) 2,606 (60%) <0.001
Anxiety 0 (0%) 2,811 (65%) <0.001
PTSD 0 (0%) 160 (3.7%) <0.001
Total SVI 0.37 (0.26) 0.38 (0.26) 0.3
    (Missing) 236 52
Soceioeconomic Status 0.35 (0.25) 0.35 (0.26) 0.5
    (Missing) 273 65
Household Composition 0.40 (0.27) 0.39 (0.27) 0.040
    (Missing) 236 51
Minority Status and Language 0.47 (0.28) 0.49 (0.29) 0.002
    (Missing) 228 51
Housing and Transportation 0.44 (0.29) 0.44 (0.28) 0.2
    (Missing) 251 59
1 Mean (SD); n (%)
2 Wilcoxon rank sum test; Pearson's Chi-squared test; Fisher's exact test

Prelim Models

Depression + RPL_THEMES


model1a <- glm(depression_2 ~ + race_5 + lang_3 + relig_affil + age_yrs
               + gender + ethnic_3 + tobac_4 + RPL_THEMES,
              family = "binomial",
              data = mh_clean1)
summary(model1a)

Call:
glm(formula = depression_2 ~ +race_5 + lang_3 + relig_affil + 
    age_yrs + gender + ethnic_3 + tobac_4 + RPL_THEMES, family = "binomial", 
    data = mh_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.9599  -0.6474  -0.6083  -0.4750   2.4939  

Coefficients:
                                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)                             -2.189351   0.086970 -25.174   <2e-16 ***
race_5BLACK OR AFRICAN AMERICAN         -0.012107   0.095732  -0.126   0.8994    
race_5Other                             -0.141798   0.152837  -0.928   0.3535    
race_5ASIAN                             -0.368055   0.186422  -1.974   0.0483 *  
race_5AMERICAN INDIAN AND ALASKA NATIVE  0.283480   0.337460   0.840   0.4009    
lang_3Other                             -0.533237   0.312910  -1.704   0.0884 .  
relig_affilno                           -0.013350   0.047884  -0.279   0.7804    
age_yrs                                  0.001306   0.001316   0.993   0.3208    
genderfemale                             0.599821   0.047966  12.505   <2e-16 ***
ethnic_3HISPANIC                         0.046810   0.175318   0.267   0.7895    
tobac_4QUIT                              0.448447   0.054477   8.232   <2e-16 ***
tobac_4Yes                               0.571420   0.067302   8.490   <2e-16 ***
RPL_THEMES                               0.160805   0.092026   1.747   0.0806 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 12438  on 13063  degrees of freedom
Residual deviance: 12131  on 13051  degrees of freedom
  (2181 observations deleted due to missingness)
AIC: 12157

Number of Fisher Scoring iterations: 4
broom::glance(model1a)
broom::tidy(model1a, exponentiate = TRUE)
model_performance(model1a)
# Indices of model performance

AIC       |       BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
--------------------------------------------------------------------------------------------------
12157.277 | 12254.486 |     0.023 | 0.382 | 0.964 |    0.464 |      -Inf |       7.657e-05 | 0.708
tbl_regression(model1a, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", tobac_4 ~ "Tobacco Use"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
Race
    WHITE OR CAUCASIAN
    BLACK OR AFRICAN AMERICAN 0.99 0.82, 1.19 0.9
    Other 0.87 0.64, 1.16 0.4
    ASIAN 0.69 0.47, 0.98 0.048
    AMERICAN INDIAN AND ALASKA NATIVE 1.33 0.66, 2.50 0.4
English Speaking
    English
    Other 0.59 0.30, 1.04 0.088
Any Religious Affiliation
    yes
    no 0.99 0.90, 1.08 0.8
Age 1.00 1.00, 1.00 0.3
Gender
    male
    female 1.82 1.66, 2.00 <0.001
Ethnicity
    NON-HISPANIC
    HISPANIC 1.05 0.74, 1.46 0.8
Tobacco Use
    NEVER
    QUIT 1.57 1.41, 1.74 <0.001
    Yes 1.77 1.55, 2.02 <0.001
Total SVI 1.17 0.98, 1.41 0.081
1 OR = Odds Ratio, CI = Confidence Interval
NA

Depression + RPL_THEMESx4


model1b <- glm(depression_2 ~  lang_3 + relig_affil + age_yrs + race_5
       + tobac_4 + gender + ethnic_3 + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
              family = "binomial",
              data = mh_clean1)
summary(model1b)

Call:
glm(formula = depression_2 ~ lang_3 + relig_affil + age_yrs + 
    race_5 + tobac_4 + gender + ethnic_3 + RPL_THEME1 + RPL_THEME2 + 
    RPL_THEME3 + RPL_THEME4, family = "binomial", data = mh_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-0.9772  -0.6567  -0.5968  -0.4626   2.5622  

Coefficients:
                                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)                             -2.285510   0.099863 -22.886  < 2e-16 ***
lang_3Other                             -0.630681   0.314163  -2.007  0.04470 *  
relig_affilno                           -0.009748   0.048102  -0.203  0.83940    
age_yrs                                  0.001732   0.001323   1.308  0.19075    
race_5BLACK OR AFRICAN AMERICAN         -0.068330   0.097496  -0.701  0.48340    
race_5Other                             -0.168300   0.153101  -1.099  0.27165    
race_5ASIAN                             -0.451993   0.188107  -2.403  0.01627 *  
race_5AMERICAN INDIAN AND ALASKA NATIVE  0.308150   0.339114   0.909  0.36351    
tobac_4QUIT                              0.456258   0.054880   8.314  < 2e-16 ***
tobac_4Yes                               0.575558   0.067870   8.480  < 2e-16 ***
genderfemale                             0.601136   0.048165  12.481  < 2e-16 ***
ethnic_3HISPANIC                         0.035639   0.175267   0.203  0.83887    
RPL_THEME1                               0.338928   0.132086   2.566  0.01029 *  
RPL_THEME2                              -0.354265   0.114493  -3.094  0.00197 ** 
RPL_THEME3                               0.218637   0.084902   2.575  0.01002 *  
RPL_THEME4                               0.109498   0.096162   1.139  0.25483    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 12369  on 12995  degrees of freedom
Residual deviance: 12042  on 12980  degrees of freedom
  (2249 observations deleted due to missingness)
AIC: 12074

Number of Fisher Scoring iterations: 4
broom::glance(model1b)
broom::tidy(model1b, exponentiate = TRUE)
model_performance(model1b)
# Indices of model performance

AIC       |       BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
--------------------------------------------------------------------------------------------------
12074.247 | 12193.806 |     0.025 | 0.382 | 0.963 |    0.463 |      -Inf |       7.909e-05 | 0.709
tbl_regression(model1b, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", tobac_4 ~ "Tobacco Use"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
English Speaking
    English
    Other 0.53 0.27, 0.95 0.045
Any Religious Affiliation
    yes
    no 0.99 0.90, 1.09 0.8
Age 1.00 1.00, 1.00 0.2
Race
    WHITE OR CAUCASIAN
    BLACK OR AFRICAN AMERICAN 0.93 0.77, 1.13 0.5
    Other 0.85 0.62, 1.13 0.3
    ASIAN 0.64 0.43, 0.91 0.016
    AMERICAN INDIAN AND ALASKA NATIVE 1.36 0.67, 2.57 0.4
Tobacco Use
    NEVER
    QUIT 1.58 1.42, 1.76 <0.001
    Yes 1.78 1.56, 2.03 <0.001
Gender
    male
    female 1.82 1.66, 2.01 <0.001
Ethnicity
    NON-HISPANIC
    HISPANIC 1.04 0.73, 1.45 0.8
Soceioeconomic Status 1.40 1.08, 1.82 0.010
Household Composition 0.70 0.56, 0.88 0.002
Minority Status and Language 1.24 1.05, 1.47 0.010
Housing and Transportation 1.12 0.92, 1.35 0.3
1 OR = Odds Ratio, CI = Confidence Interval

Anxiety + RPL_THEMES

model2a <- glm(anxiety_2 ~ lang_3 + age_yrs + race_5 + relig_affil
               + tobac_4 + gender + ethnic_3 + RPL_THEMES,
              family = "binomial",
              data = mh_clean1)
summary(model2a)

Call:
glm(formula = anxiety_2 ~ lang_3 + age_yrs + race_5 + relig_affil + 
    tobac_4 + gender + ethnic_3 + RPL_THEMES, family = "binomial", 
    data = mh_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.1018  -0.7241  -0.5830  -0.4602   2.5735  

Coefficients:
                                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)                             -1.346818   0.080938 -16.640  < 2e-16 ***
lang_3Other                             -0.874349   0.354352  -2.467 0.013608 *  
age_yrs                                 -0.011502   0.001295  -8.879  < 2e-16 ***
race_5BLACK OR AFRICAN AMERICAN         -0.177295   0.097635  -1.816 0.069387 .  
race_5Other                              0.068542   0.139035   0.493 0.622024    
race_5ASIAN                             -0.629592   0.188770  -3.335 0.000852 ***
race_5AMERICAN INDIAN AND ALASKA NATIVE  0.267240   0.330068   0.810 0.418142    
relig_affilno                           -0.053691   0.046441  -1.156 0.247636    
tobac_4QUIT                              0.402107   0.054218   7.417  1.2e-13 ***
tobac_4Yes                               0.511390   0.066184   7.727  1.1e-14 ***
genderfemale                             0.727003   0.047142  15.421  < 2e-16 ***
ethnic_3HISPANIC                        -0.034620   0.166894  -0.207 0.835669    
RPL_THEMES                              -0.233620   0.090939  -2.569 0.010200 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 12977  on 13063  degrees of freedom
Residual deviance: 12579  on 13051  degrees of freedom
  (2181 observations deleted due to missingness)
AIC: 12605

Number of Fisher Scoring iterations: 4
broom::glance(model2a)
broom::tidy(model2a, exponentiate = TRUE)
model_performance(model2a)
# Indices of model performance

AIC       |       BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
--------------------------------------------------------------------------------------------------
12604.858 | 12702.067 |     0.030 | 0.392 | 0.982 |    0.481 |      -Inf |       7.664e-05 | 0.693
tbl_regression(model2a, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", tobac_4 ~ "Tobacco Use"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
English Speaking
    English
    Other 0.42 0.19, 0.79 0.014
Age 0.99 0.99, 0.99 <0.001
Race
    WHITE OR CAUCASIAN
    BLACK OR AFRICAN AMERICAN 0.84 0.69, 1.01 0.069
    Other 1.07 0.81, 1.40 0.6
    ASIAN 0.53 0.36, 0.76 <0.001
    AMERICAN INDIAN AND ALASKA NATIVE 1.31 0.66, 2.43 0.4
Any Religious Affiliation
    yes
    no 0.95 0.87, 1.04 0.2
Tobacco Use
    NEVER
    QUIT 1.49 1.34, 1.66 <0.001
    Yes 1.67 1.46, 1.90 <0.001
Gender
    male
    female 2.07 1.89, 2.27 <0.001
Ethnicity
    NON-HISPANIC
    HISPANIC 0.97 0.69, 1.33 0.8
Total SVI 0.79 0.66, 0.95 0.010
1 OR = Odds Ratio, CI = Confidence Interval

Anxiety + RPL_THEMESx4

model2b <- glm(anxiety_2 ~  lang_3 + age_yrs + race_5 + relig_affil 
          + tobac_4 + gender + ethnic_3 + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
              family = "binomial",
              data = mh_clean1)
summary(model2b)

Call:
glm(formula = anxiety_2 ~ lang_3 + age_yrs + race_5 + relig_affil + 
    tobac_4 + gender + ethnic_3 + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + 
    RPL_THEME4, family = "binomial", data = mh_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.1402  -0.7221  -0.5811  -0.4526   2.6011  

Coefficients:
                                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)                             -1.464848   0.094004 -15.583  < 2e-16 ***
lang_3Other                             -0.955461   0.355321  -2.689 0.007166 ** 
age_yrs                                 -0.011236   0.001302  -8.629  < 2e-16 ***
race_5BLACK OR AFRICAN AMERICAN         -0.235553   0.099262  -2.373 0.017642 *  
race_5Other                              0.039657   0.139322   0.285 0.775920    
race_5ASIAN                             -0.754171   0.190326  -3.963 7.42e-05 ***
race_5AMERICAN INDIAN AND ALASKA NATIVE  0.297927   0.332590   0.896 0.370371    
relig_affilno                           -0.047082   0.046659  -1.009 0.312946    
tobac_4QUIT                              0.422736   0.054662   7.734 1.05e-14 ***
tobac_4Yes                               0.536588   0.066807   8.032 9.59e-16 ***
genderfemale                             0.734696   0.047372  15.509  < 2e-16 ***
ethnic_3HISPANIC                        -0.041189   0.166887  -0.247 0.805058    
RPL_THEME1                              -0.197443   0.130341  -1.515 0.129818    
RPL_THEME2                              -0.255494   0.112778  -2.265 0.023484 *  
RPL_THEME3                               0.313945   0.082664   3.798 0.000146 ***
RPL_THEME4                               0.051412   0.094157   0.546 0.585054    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 12908  on 12995  degrees of freedom
Residual deviance: 12482  on 12980  degrees of freedom
  (2249 observations deleted due to missingness)
AIC: 12514

Number of Fisher Scoring iterations: 4
broom::glance(model2b)
broom::tidy(model2b, exponentiate = TRUE)
model_performance(model2b)
# Indices of model performance

AIC       |       BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
--------------------------------------------------------------------------------------------------
12514.377 | 12633.935 |     0.033 | 0.391 | 0.981 |    0.480 |      -Inf |       8.020e-05 | 0.694
tbl_regression(model2b, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation", tobac_4 ~ "Tobacco Use", relig_affil ~ "Any Religious Affiliation"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
English Speaking
    English
    Other 0.38 0.18, 0.73 0.007
Age 0.99 0.99, 0.99 <0.001
Race
    WHITE OR CAUCASIAN
    BLACK OR AFRICAN AMERICAN 0.79 0.65, 0.96 0.018
    Other 1.04 0.79, 1.36 0.8
    ASIAN 0.47 0.32, 0.67 <0.001
    AMERICAN INDIAN AND ALASKA NATIVE 1.35 0.68, 2.52 0.4
Any Religious Affiliation
    yes
    no 0.95 0.87, 1.05 0.3
Tobacco Use
    NEVER
    QUIT 1.53 1.37, 1.70 <0.001
    Yes 1.71 1.50, 1.95 <0.001
Gender
    male
    female 2.08 1.90, 2.29 <0.001
Ethnicity
    NON-HISPANIC
    HISPANIC 0.96 0.69, 1.32 0.8
Soceioeconomic Status 0.82 0.64, 1.06 0.13
Household Composition 0.77 0.62, 0.97 0.023
Minority Status and Language 1.37 1.16, 1.61 <0.001
Housing and Transportation 1.05 0.88, 1.27 0.6
1 OR = Odds Ratio, CI = Confidence Interval

Any Psych + RPL THEMES

model4a <- glm(any_psych_dx_2 ~ relig_affil + race_5 + lang_3 +
              + tobac_4 + age_yrs + gender + ethnic_3 + RPL_THEMES,
              family = "binomial",
              data = mh_clean1)
summary(model4a)

Call:
glm(formula = any_psych_dx_2 ~ relig_affil + race_5 + lang_3 + 
    +tobac_4 + age_yrs + gender + ethnic_3 + RPL_THEMES, family = "binomial", 
    data = mh_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.2110  -0.8732  -0.7174   1.3297   2.1660  

Coefficients:
                                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)                             -1.172352   0.071002 -16.511  < 2e-16 ***
relig_affilno                           -0.038905   0.040379  -0.964 0.335295    
race_5BLACK OR AFRICAN AMERICAN         -0.028279   0.082003  -0.345 0.730203    
race_5Other                              0.029307   0.122218   0.240 0.810491    
race_5ASIAN                             -0.355153   0.145493  -2.441 0.014646 *  
race_5AMERICAN INDIAN AND ALASKA NATIVE  0.206501   0.301479   0.685 0.493370    
lang_3Other                             -0.619971   0.252969  -2.451 0.014255 *  
tobac_4QUIT                              0.426124   0.046582   9.148  < 2e-16 ***
tobac_4Yes                               0.523448   0.058605   8.932  < 2e-16 ***
age_yrs                                 -0.003955   0.001108  -3.569 0.000358 ***
genderfemale                             0.617571   0.039950  15.458  < 2e-16 ***
ethnic_3HISPANIC                         0.059182   0.144512   0.410 0.682149    
RPL_THEMES                              -0.038900   0.078423  -0.496 0.619877    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 15974  on 13063  degrees of freedom
Residual deviance: 15591  on 13051  degrees of freedom
  (2181 observations deleted due to missingness)
AIC: 15617

Number of Fisher Scoring iterations: 4
broom::glance(model4a)
broom::tidy(model4a, exponentiate = TRUE)
model_performance(model4a)
# Indices of model performance

AIC       |       BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
--------------------------------------------------------------------------------------------------
15617.318 | 15714.527 |     0.029 | 0.452 | 1.093 |    0.597 |      -Inf |       7.655e-05 | 0.592
tbl_regression(model4a, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", RPL_THEMES ~ "Total SVI", tobac_4 ~ "Tobacco Use"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
Any Religious Affiliation
    yes
    no 0.96 0.89, 1.04 0.3
Race
    WHITE OR CAUCASIAN
    BLACK OR AFRICAN AMERICAN 0.97 0.83, 1.14 0.7
    Other 1.03 0.81, 1.31 0.8
    ASIAN 0.70 0.52, 0.93 0.015
    AMERICAN INDIAN AND ALASKA NATIVE 1.23 0.67, 2.20 0.5
English Speaking
    English
    Other 0.54 0.32, 0.86 0.014
Tobacco Use
    NEVER
    QUIT 1.53 1.40, 1.68 <0.001
    Yes 1.69 1.50, 1.89 <0.001
Age 1.00 0.99, 1.00 <0.001
Gender
    male
    female 1.85 1.72, 2.01 <0.001
Ethnicity
    NON-HISPANIC
    HISPANIC 1.06 0.80, 1.40 0.7
Total SVI 0.96 0.82, 1.12 0.6
1 OR = Odds Ratio, CI = Confidence Interval

Any Psych + RPL_THEMESx4

model4b <- glm(any_psych_dx_2 ~ relig_affil + race_5 + lang_3 
             + age_yrs + tobac_4 + gender + ethnic_3  + RPL_THEME1 + RPL_THEME2 + RPL_THEME3 + RPL_THEME4,
              family = "binomial",
              data = mh_clean1)
summary(model4b)

Call:
glm(formula = any_psych_dx_2 ~ relig_affil + race_5 + lang_3 + 
    age_yrs + tobac_4 + gender + ethnic_3 + RPL_THEME1 + RPL_THEME2 + 
    RPL_THEME3 + RPL_THEME4, family = "binomial", data = mh_clean1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.2482  -0.8736  -0.7300   1.3302   2.2268  

Coefficients:
                                         Estimate Std. Error z value Pr(>|z|)    
(Intercept)                             -1.271738   0.082156 -15.480  < 2e-16 ***
relig_affilno                           -0.033501   0.040562  -0.826 0.408856    
race_5BLACK OR AFRICAN AMERICAN         -0.081292   0.083559  -0.973 0.330620    
race_5Other                              0.005038   0.122614   0.041 0.967228    
race_5ASIAN                             -0.457314   0.147089  -3.109 0.001877 ** 
race_5AMERICAN INDIAN AND ALASKA NATIVE  0.240394   0.304220   0.790 0.429412    
lang_3Other                             -0.706477   0.254101  -2.780 0.005431 ** 
age_yrs                                 -0.003565   0.001114  -3.200 0.001376 ** 
tobac_4QUIT                              0.439496   0.046946   9.362  < 2e-16 ***
tobac_4Yes                               0.539086   0.059082   9.124  < 2e-16 ***
genderfemale                             0.623325   0.040128  15.533  < 2e-16 ***
ethnic_3HISPANIC                         0.052089   0.144687   0.360 0.718839    
RPL_THEME1                               0.071775   0.112524   0.638 0.523564    
RPL_THEME2                              -0.315640   0.097437  -3.239 0.001198 ** 
RPL_THEME3                               0.252296   0.071866   3.511 0.000447 ***
RPL_THEME4                               0.082906   0.081579   1.016 0.309503    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 15891  on 12995  degrees of freedom
Residual deviance: 15480  on 12980  degrees of freedom
  (2249 observations deleted due to missingness)
AIC: 15512

Number of Fisher Scoring iterations: 4
broom::glance(model4b)
broom::tidy(model4b, exponentiate = TRUE)
model_performance(model4b)
# Indices of model performance

AIC       |       BIC | Tjur's R2 |  RMSE | Sigma | Log_loss | Score_log | Score_spherical |   PCP
--------------------------------------------------------------------------------------------------
15511.960 | 15631.518 |     0.031 | 0.451 | 1.092 |    0.596 |      -Inf |       7.695e-05 | 0.593
tbl_regression(model4b, label = list(age_yrs ~ "Age", gender~ "Gender", race_5 ~ "Race", ethnic_3 ~ "Ethnicity", lang_3 ~ "English Speaking", relig_affil ~ "Any Religious Affiliation", RPL_THEME1 ~ "Soceioeconomic Status", RPL_THEME2 ~ "Household Composition", RPL_THEME3 ~ "Minority Status and Language", RPL_THEME4 ~ "Housing and Transportation"), exponentiate = TRUE)
Characteristic OR1 95% CI1 p-value
Any Religious Affiliation
    yes
    no 0.97 0.89, 1.05 0.4
Race
    WHITE OR CAUCASIAN
    BLACK OR AFRICAN AMERICAN 0.92 0.78, 1.08 0.3
    Other 1.01 0.79, 1.27 >0.9
    ASIAN 0.63 0.47, 0.84 0.002
    AMERICAN INDIAN AND ALASKA NATIVE 1.27 0.69, 2.29 0.4
English Speaking
    English
    Other 0.49 0.29, 0.79 0.005
Age 1.00 0.99, 1.00 0.001
tobac_4
    NEVER
    QUIT 1.55 1.42, 1.70 <0.001
    Yes 1.71 1.53, 1.92 <0.001
Gender
    male
    female 1.87 1.72, 2.02 <0.001
Ethnicity
    NON-HISPANIC
    HISPANIC 1.05 0.79, 1.39 0.7
Soceioeconomic Status 1.07 0.86, 1.34 0.5
Household Composition 0.73 0.60, 0.88 0.001
Minority Status and Language 1.29 1.12, 1.48 <0.001
Housing and Transportation 1.09 0.93, 1.27 0.3
1 OR = Odds Ratio, CI = Confidence Interval
LS0tCnRpdGxlOiAiTUggTW9kZWxzLCBleGx1ZGluZyB1bmtub3ducywgZXhjbHVkaW5nIG1hcml0YWwgc3RhdHVzIgpvdXRwdXQ6IAogIGh0bWxfbm90ZWJvb2s6CiAgIHRoZW1lczogcGFwZXIKICAgdG9jOiB5ZXMKICAgdG9jX2Zsb2F0OiB5ZXMKZWRpdG9yX29wdGlvbnM6IAogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUKLS0tCgojIExvYWQgUGFja2FnZXMgey50YWJzZXR9CgojIyB0aWR5dmVyc2UKCmBgYHtyfQppZiAoIXJlcXVpcmUodGlkeXZlcnNlKSl7CiAgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkKICBsaWJyYXJ5KHRpZHl2ZXJzZSkKfQpgYGAKCiMjIGNvZGVib29rcgpgYGB7cn0KaWYgKCFyZXF1aXJlKGNvZGVib29rcikpewogIGluc3RhbGwucGFja2FnZXMoImNvZGVib29rciIsIGRlcGVuZGVuY2llcyA9IFRSVUUpCiAgbGlicmFyeShjb2RlYm9va3IpCn0KYGBgCgojIyBzdW1tYXJ5dG9vbHMKYGBge3J9CmlmICghcmVxdWlyZShzdW1tYXJ5dG9vbHMpKXsKICBpbnN0YWxsLnBhY2thZ2VzKCJzdW1tYXJ5dG9vbHMiLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQogIGxpYnJhcnkoc3VtbWFyeXRvb2xzKQp9CmBgYAoKIyMgYnJvb20gCmBgYHtyfQppZiAoIXJlcXVpcmUoYnJvb20pKXsKICBpbnN0YWxsLnBhY2thZ2VzKCJicm9vbSIsIGRlcGVuZGVuY2llcyA9IFRSVUUpCiAgbGlicmFyeShicm9vbSkKfQpgYGAKCiMjIHBlcmZvcm1hbmNlCmBgYHtyfQppZiAoIXJlcXVpcmUocGVyZm9ybWFuY2UpKXsKICBpbnN0YWxsLnBhY2thZ2VzKCJwZXJmb3JtYW5jZSIsIGRlcGVuZGVuY2llcyA9IFRSVUUpCiAgbGlicmFyeShwZXJmb3JtYW5jZSkKfQpgYGAKCiMjIGd0c3VtbWFyeQpgYGB7cn0KaWYgKCFyZXF1aXJlKGd0c3VtbWFyeSkpewogIGluc3RhbGwucGFja2FnZXMoImd0c3VtbWFyeSIsIGRlcGVuZGVuY2llcyA9IFRSVUUpCiAgbGlicmFyeShndHN1bW1hcnkpCn0KYGBgCgojIyBqYW5pdG9yCmBgYHtyfQppZiAoIXJlcXVpcmUoamFuaXRvcikpewogIGluc3RhbGwucGFja2FnZXMoImphbml0b3IiLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQogIGxpYnJhcnkoamFuaXRvcikKfQpgYGAKCiMjIGZvcmNhdHMKYGBge3J9CmlmICghcmVxdWlyZShmb3JjYXRzKSl7CiAgaW5zdGFsbC5wYWNrYWdlcygiZm9yY2F0cyIsIGRlcGVuZGVuY2llcyA9IFRSVUUpCiAgbGlicmFyeShmb3JjYXRzKQp9CmBgYAoKIyBJbXBvcnQgRGF0YQpgYGB7cn0KbWhfZGVpZHYzIDwtIHJlYWQuY3N2KCJ+L0Rlc2t0b3AvUi1Db2RlL21oX2RlaWR2My5jc3YiKQpgYGAKCiMgRGF0YSBDbGVhbmluZyB7LnRhYnNldH0KCiMjIFJQTF9USEVNRVMgZXJyb25lb3VzIHZhbHVlcyAKYGBge3J9Cm1oX2RlaWR2MyAlPiUKICBzZWxlY3QoYWdlX3lycywgUEFUSUVOVF9HRU5ERVJfQ0QsIFBBVElFTlRfUkFDRV9ERVNDLCBQQVRJRU5UX0VUSE5JQ19HUk9VUF9ERVNDLCBQQVRJRU5UX0xBTkdVQUdFX0RFU0MsIFBBVElFTlRfUkVMSUdJT05fREVTQywgUEFUSUVOVF9NQVJJVEFMX1NUQVRVU19ERVNDLCBQQVRJRU5UX1NUQVRFX0NELCBFRFVfWUVBUlMsIFRPQkFDQ09fREVTQywgZGVwcmVzc2lvbiwgYW54aWV0eSwgcHRzZCwgYmlwb2xhciwgYm9keV9pbWFnZSwgb2NkLCBzdHJlc3MsIHNlYXNvbmFsQUQsIHBhbmljLCBhbnlfcHN5Y2hfZHgsU1RfQUJCUiwgRV9UT1RQT1AsIFJQTF9USEVNRVMsIFJQTF9USEVNRTEsIFJQTF9USEVNRTIsIFJQTF9USEVNRTMsIFJQTF9USEVNRTQpIC0+IGV4YW1wbGVkZjEKZXhhbXBsZWRmMSAlPiUKbXV0YXRlKFJQTF9USEVNRVMgPSBuYV9pZihSUExfVEhFTUVTLCAiLTk5OSIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRVMgPSBuYV9pZihSUExfVEhFTUVTLCAiMCIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTEgPSBuYV9pZihSUExfVEhFTUUxLCAiLTk5OSIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTEgPSBuYV9pZihSUExfVEhFTUUxLCAiMCIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTIgPSBuYV9pZihSUExfVEhFTUUyLCAiLTk5OSIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTIgPSBuYV9pZihSUExfVEhFTUUyLCAiMCIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTMgPSBuYV9pZihSUExfVEhFTUUzLCAiLTk5OSIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTMgPSBuYV9pZihSUExfVEhFTUUzLCAiMCIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTQgPSBuYV9pZihSUExfVEhFTUU0LCAiLTk5OSIpKSAlPiUKbXV0YXRlKFJQTF9USEVNRTQgPSBuYV9pZihSUExfVEhFTUU0LCAiMCIpKSAtPiBleGFtcGxlZGYxTkEKCmBgYAoKIyMgTWVudGFsIEhlYWx0aCBEaWNoCmBgYHtyfQpleGFtcGxlZGYxTkEgJT4lIG11dGF0ZShhY3Jvc3MoZGVwcmVzc2lvbjphbnlfcHN5Y2hfZHgsIH5pZl9lbHNlKC54PjAuNSwgMSwgMCksCiAgICAgICAgICAgICAgICAubmFtZXMgPSAie2NvbH1fMiIpKSAtPiBleGFtcGxlZGYxTkFEaTIKYGBgCgojIyBNYXJpdGFsIFN0YXR1cyAKYGBge3J9CmV4YW1wbGVkZjFOQURpMiAlPiUgCm11dGF0ZShtc3RhdF81ID0gYXNfZmFjdG9yKFBBVElFTlRfTUFSSVRBTF9TVEFUVVNfREVTQyksCiAgICAgICAgIG1zdGF0XzUgPSBmY3RfcmVjb2RlKG1zdGF0XzUsIGRpdl9zZXAgPSAiRElWT1JDRUQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZfc2VwID0gIkxFR0FMTFkgU0VQQVJBVEVEIiwgd2lkb3cgPSAiV0lET1dFRCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcnJpZWQgPSAiTUFSUklFRCIsIHVubWFycmllZCA9ICJTSU5HTEUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bm1hcnJpZWQgPSAiU0lHTklGSUNBTlQgT1RIRVIiKSwKICAgICAgICAgbXN0YXRfNSA9IGZjdF9yZWxldmVsKG1zdGF0XzUsIHJlZiA9ICdtYXJyaWVkJykpICU+JSAKICBtdXRhdGUobXN0YXRfNSA9IG5hX2lmKG1zdGF0XzUsICJVTktOT1dOIikpICU+JSAKbXV0YXRlKG1zdGF0XzUgPSBuYV9pZihtc3RhdF81LCAiT1RIRVIiKSkgLT4gZXhhbXBsZWRmMU5BRGkyTUEKYGBgCgojIyBSZWxpZ2lvbiAKYGBge3J9CmV4YW1wbGVkZjFOQURpMk1BICU+JSAKICBtdXRhdGUocmVsaWdfYWZmaWwgPSBhc19mYWN0b3IoUEFUSUVOVF9SRUxJR0lPTl9ERVNDKSwKICAgICAgICAgIHJlbGlnX2FmZmlsID0gZmN0X3JlY29kZShyZWxpZ19hZmZpbCwgeWVzID0gIkNBVEhPTElDIiwKICAgICAgICAgICAgICAgICAgICAgIG5vID0gIk5PTkUiLCAKICAgICAgICAgICAgICAgICAgICAgIHllcyA9ICJDSFJJU1RJQU4iLCB5ZXMgPSAiTFVUSEVSQU4iLAogICAgICAgICAgICAgICAgICAgICAgeWVzID0gIlJVU1NJQU4gT1JUSE9ET1giLAogICAgICAgICAgICAgICAgICAgICAgeWVzID0gIlBST1RFU1RBTlQiLCB5ZXMgPSAiQkFQVElTVCIsCiAgICAgICAgICAgICAgICAgICAgICB5ZXMgPSAiTUVUSE9ESVNUIiwgeWVzID0gIlBSRVNCWVRFUklBTiIsCiAgICAgICAgICAgICAgICAgICAgICB5ZXMgPSAiTk9OLURFTk9NSU5BVElPTkFMIiwgeWVzID0gIkpFV0lTSCIsCiAgICAgICAgICAgICAgICAgICAgICB5ZXMgPSAiTVVTTElNIiwgeWVzID0gIk9USEVSIiwKICAgICAgICAgICAgICAgICAgICAgIHllcyA9ICJFUElTQ09QQUxJQU4iLCB5ZXMgPSAiUEVOVEVDT1NUQUwiLAogICAgICAgICAgICAgICAgICAgICAgbm8gPSAiQUdOT1NUSUMiLCBubyA9ICJBVEhFSVNUIiwKICAgICAgICAgICAgICAgICAgICAgIHllcyA9ICJKRUhPVkFIJ1MgV0lUTkVTUyIsIHllcyA9ICJISU5EVSIsCiAgICAgICAgICAgICAgICAgICAgICB5ZXMgPSAiR1JFRUsgT1JUSE9ET1giLCB5ZXMgPSAiQ0hVUkNIIE9GIEpFU1VTIENIUklTVCBPRiBMQVRURVItREFZIFNBSU5UUyIsIHllcyA9ICJCQUhBSSIsIG5vID0gIlNQSVJJVFVBTCIsIHllcyA9ICJDSFVSQ0ggT0YgQ0hSSVNUIiwKICAgICAgICAgeWVzID0gIlNFVkVOVEggREFZIEFEVkVOVElTVCIsIHllcyA9ICJBUE9TVE9MSUMiLCB5ZXMgPSAiQlVEREhJU1QiLCB5ZXMgPSAiTkFaQVJFTkUiLCB5ZXMgPSAiQ09OR1JFR0FUSU9OQUwiLCB5ZXMgPSAiVU5JVEVEIENIVVJDSCBPRiBDSFIiLCB5ZXMgPSAiUkVGT1JNRUQiLCB5ZXMgPSAiUEFHQU4iLCB5ZXMgPSAiSkFJTiIsIHllcyA9ICJBU1NFTUJMWSBPRiBHT0QiLCB5ZXMgPSAiUkVPUkcgQ0hSIE9GIExBVCBEQVkiLCB5ZXMgPSAiUVVBS0VSIiwgeWVzID0gIlVOSVRBUklBTiBVTklWRVJTQUxJU1QiLCB5ZXMgPSAiTUVOTk9OSVRFIiwgeWVzID0gIkZSRUUgTUVUSE9ESVNUIiwgeWVzID0gIk5BVElWRSBBTUVSIFNQSVJJVEwiLCB5ZXMgPSAiV0lDQ0FOIiwgeWVzID0gIk9SVEhPRE9YIiwgeWVzID0gIlNBTFZBVElPTiBBUk1ZIiwgeWVzID0gIkRJU0NJUExFUyBPRiBDSFJJU1QiLCB5ZXMgPSAiQUZSSUNBTiBNRVRIT0RJU1QgRVAiLCB5ZXMgPSAiU0lLSCIsIHllcyA9ICJDSFVSQ0ggT0YgR09EIiwgeWVzID0gIlRBT0lTVCIsIHllcyA9ICJBTkdMSUNBTiIpLApyZWxpZ19hZmZpbCA9IGZjdF9yZWxldmVsKHJlbGlnX2FmZmlsLCByZWYgPSAneWVzJykpICU+JSAKbXV0YXRlKHJlbGlnX2FmZmlsID0gbmFfaWYocmVsaWdfYWZmaWwsICJVTktOT1dOIikpICU+JSAKbXV0YXRlKHJlbGlnX2FmZmlsID0gbmFfaWYocmVsaWdfYWZmaWwsICJQQVRJRU5UIFJFRlVTRUQiKSkgLT4gZXhhbXBsZWRmMU5BRGkyTUFSZWwKYGBgCgojIyBSYWNlCmBgYHtyfQpleGFtcGxlZGYxTkFEaTJNQVJlbCAlPiUgCm11dGF0ZShyYWNlXzUgPSBhc19mYWN0b3IoUEFUSUVOVF9SQUNFX0RFU0MpLAogICAgICAgICByYWNlXzUgPSBmY3RfcmVjb2RlKHJhY2VfNSwgT3RoZXIgPSAiT1RIRVIiLAogICAgICAgICAgICAgICAgICBPdGhlciA9ICJVTktOT1dOIiwgT3RoZXIgPSAiQ0hPT1NFIE5PVCBUTyBESVNDTE9TRSIsCiAgICAgICAgICAgICAgICAgIEFTSUFOID0gIk5BVElWRSBIQVdBSUlBTiBBTkQgT1RIRVIgUEFDSUZJQyBJU0xBTkRFUiIsIAogICAgICAgICAgICAgICAgICBPdGhlciA9ICJNSURETEUgRUFTVEVSTi9OT1JUSCBBRlJJQ0FOIiwKICAgICAgICAgICAgICAgIEFTSUFOID0gIkFTSUFOIElORElBTiIsIEFTSUFOID0gIk9USEVSIEFTSUFOIiwKICAgICAgICAgICAgICAgIEFTSUFOID0gIkpBUEFORVNFIiwgQVNJQU4gPSAiS09SRUFOIiwgQVNJQU4gPSAiRklMSVBJTk8iLAogICAgICAgICAgICAgICAgQVNJQU4gPSAiQ0hJTkVTRSIpLAogICAgICAgICByYWNlXzUgPSBmY3RfcmVsZXZlbChyYWNlXzUsIHJlZiA9ICdXSElURSBPUiBDQVVDQVNJQU4nKSkgLT4gZXhhbXBsZWRmMU5BRGkyTUFSZWxSYQpgYGAKCiMjIEdlbmRlcgpgYGB7cn0KZXhhbXBsZWRmMU5BRGkyTUFSZWxSYSAlPiUgCm11dGF0ZShnZW5kZXIgPSBhc19mYWN0b3IoUEFUSUVOVF9HRU5ERVJfQ0QpLAogICAgICAgICBnZW5kZXIgPSBmY3RfcmVjb2RlKGdlbmRlciwgbWFsZSA9ICJNIiwgZmVtYWxlID0gIkYiKSwKICAgICAgICAgZ2VuZGVyID0gZmN0X3JlbGV2ZWwoZ2VuZGVyLCByZWYgPSAibWFsZSIpKSAtPiBleGFtcGxlZGYxTkFEaTJNQVJlbFJhRwpgYGAKCiMjIExhbmd1YWdlIApgYGB7cn0KZXhhbXBsZWRmMU5BRGkyTUFSZWxSYUcgJT4lIAogIG11dGF0ZShsYW5nXzMgPSBhc19mYWN0b3IoUEFUSUVOVF9MQU5HVUFHRV9ERVNDKSwKbGFuZ18zID0gZmN0X3JlY29kZShsYW5nXzMsIEVuZ2xpc2ggPSAiRU5HTElTSCIsCk90aGVyID0gIkFSQUJJQyIsIE90aGVyID0gIkpBUEFORVNFIiwKT3RoZXIgPSAiQ0hJTkVTRSwgTUFOREFSSU4iLApPdGhlciA9ICJLT1JFQU4iLCBPdGhlciA9ICJTSUdOIExBTkdVQUdFIiwKT3RoZXIgPSAiUlVTU0lBTiIsIE90aGVyID0gIlNQQU5JU0giLCBPdGhlciA9ICJBUk1FTklBTiIsCk90aGVyID0gIlRVUktJU0giLCBPdGhlciA9ICJISU5ESSIsIE90aGVyID0gIkJFTkdBTEkiLCBPdGhlciA9ICJGQVJTSTsgUEVSU0lBTiIsIE90aGVyID0gIkFMQkFOSUFOIiwgT3RoZXIgPSAiSE1PTkciLCBPdGhlciA9ICJST01BTklBTiIsIApPdGhlciA9ICJQVU5KQUJJIiwgT3RoZXIgPSAiQ1JPQVRJQU4iLCBPdGhlciA9ICJDSEFMREVBTiIsIApPdGhlciA9ICJCVVJNRVNFIiwgT3RoZXIgPSAiUE9SVFVHVUVTRSIsCk90aGVyID0gIlRBR0FMT0ciLCBPdGhlciA9ICJGUkVOQ0giLApPdGhlciA9ICJHRVJNQU4iLCBPdGhlciA9ICJDSElORVNFLCBDQU5UT05FU0UiLApPdGhlciA9ICJCT1NOSUFOIiwgT3RoZXIgPSAiVVJEVSIsCk90aGVyID0gIlVOS05PV04iKSwKbGFuZ18zID0gZmN0X3JlbGV2ZWwobGFuZ18zLCByZWYgPSAnRW5nbGlzaCcpKSAtPiBleGFtcGxlZGYxTkFEaTJNQVJlbFJhR0wKCmBgYAoKIyMgRXRobmljaXR5IApgYGB7cn0KZXhhbXBsZWRmMU5BRGkyTUFSZWxSYUdMICU+JSAKICBtdXRhdGUoZXRobmljXzMgPSBhc19mYWN0b3IoUEFUSUVOVF9FVEhOSUNfR1JPVVBfREVTQykpICU+JSAKIG11dGF0ZShldGhuaWNfMyA9IG5hX2lmKGV0aG5pY18zLCAiVU5LTk9XTiIpKSAlPiUgCm11dGF0ZShldGhuaWNfMyA9IG5hX2lmKGV0aG5pY18zLCAiQ0hPT1NFIE5PVCBUTyBESVNDTE9TRSIpKSAtPiBleGFtcGxlZGYxTkFEaTJNQVJlbFJhR0xFdGgKYGBgCgojIHRvYmFjY28gCmBgYHtyfQpleGFtcGxlZGYxTkFEaTJNQVJlbFJhR0xFdGggJT4lIAogIG11dGF0ZSh0b2JhY180ID0gYXNfZmFjdG9yKFRPQkFDQ09fREVTQyksCiB0b2JhY180ID0gZmN0X3JlY29kZSh0b2JhY180LCBZZXMgPSAiUEFTU0lWRSIsClllcyA9ICJZRVMiKSwKdG9iYWNfNCA9IGZjdF9yZWxldmVsKHRvYmFjXzQsIHJlZiA9ICdORVZFUicpKSAlPiUgCm11dGF0ZSh0b2JhY180ID0gbmFfaWYodG9iYWNfNCwgIk5PVCBBU0tFRCIpKSAtPiBleGFtcGxlZGYxTkFEaTJNQVJlbFJhR0xFdGhUCmBgYAoKCiMgQ29kZWJvb2sgCmBgYHtyfQpleGFtcGxlZGYxTkFEaTJNQVJlbFJhR0xFdGhUICU+JSAKc2VsZWN0KGFnZV95cnMsIGdlbmRlciwgcmFjZV81LCBldGhuaWNfMywgbGFuZ18zLCByZWxpZ19hZmZpbCwgbXN0YXRfNSwgUEFUSUVOVF9TVEFURV9DRCwgRURVX1lFQVJTLCB0b2JhY180LCBkZXByZXNzaW9uXzIsIGFueGlldHlfMiwgcHRzZF8yLCBiaXBvbGFyXzIsIGJvZHlfaW1hZ2VfMiwgb2NkXzIsIHNlYXNvbmFsQURfMiwgcGFuaWNfMiwgYW55X3BzeWNoX2R4XzIsIEVfVE9UUE9QLCBSUExfVEhFTUVTLCBSUExfVEhFTUUxLCBSUExfVEhFTUUyLCBSUExfVEhFTUUzLCBSUExfVEhFTUU0KSAtPiBtaF9jbGVhbjEKcHJpbnQoZGZTdW1tYXJ5KG1oX2NsZWFuMSksIG1ldGhvZCA9ICdyZW5kZXInKSAKYGBgCgojIFBhdGllbnQgQ2hhcmFjdGVyaXN0aWNzIHsudGFic2V0fQoKIyMgQmFzZWxpbmUgQ2hhcmFjdGVyaXN0aWNzIApgYGB7cn0KbWhfY2xlYW4xICU+JSAKICBzZWxlY3QoYWdlX3lycywgZ2VuZGVyLCByYWNlXzUsIGV0aG5pY18zLCBsYW5nXzMsIHJlbGlnX2FmZmlsLCBtc3RhdF81LCB0b2JhY180LCBkZXByZXNzaW9uXzIsIGFueGlldHlfMiwgcHRzZF8yLCBhbnlfcHN5Y2hfZHhfMiwgUlBMX1RIRU1FUywgUlBMX1RIRU1FMSwgUlBMX1RIRU1FMiwgUlBMX1RIRU1FMywgUlBMX1RIRU1FNCkgLT4gYmFzZWxpbmUKYmFzZWxpbmUgJT4lIHRibF9zdW1tYXJ5KGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIkVuZ2xpc2ggU3BlYWtpbmciLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIGRlcHJlc3Npb25fMiB+ICJEZXByZXNzaW9uIiwgYW54aWV0eV8yIH4gIkFueGlldHkiLCBwdHNkXzIgfiAiUFRTRCIsIGFueV9wc3ljaF9keF8yIH4gIkFueSBQc3ljaGlhdHJpYyBEaWFnbm9zaXMiLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgdG9iYWNfNCB+ICJUb2JhY2NvIFVzZSIpLAogICAgICAgIHN0YXRpc3RpYyA9IGxpc3QoYWxsX2NvbnRpbnVvdXMoKSB+ICJ7bWVhbn0gKHtzZH0pIiksCiAgICAgICAgbWlzc2luZ190ZXh0ID0gIihNaXNzaW5nKSIpCmBgYAoKCiMjIEJhc2VsaW5lIENoYXJhY3RlcmlzdGljcyBieSBEZXByZXNzaW9uIApgYGB7cn0KYmFzZWxpbmUgJT4lIHRibF9zdW1tYXJ5KGJ5ID0gZGVwcmVzc2lvbl8yLAogICAgICAgICBzdGF0aXN0aWMgPSBsaXN0KGFsbF9jb250aW51b3VzKCkgfiAie21lYW59ICh7c2R9KSIpLAogICAgICAgIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIkVuZ2xpc2ggU3BlYWtpbmciLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIGFueGlldHlfMiB+ICJBbnhpZXR5IiwgcHRzZF8yIH4gIlBUU0QiLCBhbnlfcHN5Y2hfZHhfMiB+ICJBbnkgUHN5Y2hpYXRyaWMgRGlhZ25vc2lzIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHRvYmFjXzQgfiAiVG9iYWNjbyBVc2UiKSwKICAgICAgICBtaXNzaW5nX3RleHQgPSAiKE1pc3NpbmcpIgogICAgICAgICkgJT4lIGFkZF9wKCkKCgpgYGAKCiMjIEJhc2VsaW5lIENoYXJhY3RlcmlzdGljcyBCeSBBbnhpZXR5CmBgYHtyfQpiYXNlbGluZSAlPiUgdGJsX3N1bW1hcnkoYnkgPSBhbnhpZXR5XzIsCiAgICAgICBzdGF0aXN0aWMgPSBsaXN0KGFsbF9jb250aW51b3VzKCkgfiAie21lYW59ICh7c2R9KSIpLAogICAgICAgIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIkVuZ2xpc2ggU3BlYWtpbmciLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIGRlcHJlc3Npb25fMiB+ICJEZXByZXNzaW9uIiwgcHRzZF8yIH4gIlBUU0QiLCBhbnlfcHN5Y2hfZHhfMiB+ICJBbnkgUHN5Y2hpYXRyaWMgRGlhZ25vc2lzIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHRvYmFjXzQgfiAiVG9iYWNjbyBVc2UiKSwKICAgICAgICBtaXNzaW5nX3RleHQgPSAiKE1pc3NpbmcpIgogICAgICAgICkgJT4lIGFkZF9wKCkKYGBgCgojIyBCYXNlbGluZSBDaGFyYWN0ZXJpc3RpY3MgYnkgQW55IFBzeWNoIER4IApgYGB7cn0KYmFzZWxpbmUgJT4lIHRibF9zdW1tYXJ5KGJ5ID0gYW55X3BzeWNoX2R4XzIsCiAgICAgICBzdGF0aXN0aWMgPSBsaXN0KGFsbF9jb250aW51b3VzKCkgfiAie21lYW59ICh7c2R9KSIpLAogICAgICAgIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIkVuZ2xpc2ggU3BlYWtpbmciLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgbXN0YXRfNSB+ICJNYXJpdGFsIFN0YXR1cyIsIGRlcHJlc3Npb25fMiB+ICJEZXByZXNzaW9uIiwgcHRzZF8yIH4gIlBUU0QiLCBhbnhpZXR5XzIgfiAiQW54aWV0eSIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiwgUlBMX1RIRU1FMSB+ICJTb2NlaW9lY29ub21pYyBTdGF0dXMiLCBSUExfVEhFTUUyIH4gIkhvdXNlaG9sZCBDb21wb3NpdGlvbiIsIFJQTF9USEVNRTMgfiAiTWlub3JpdHkgU3RhdHVzIGFuZCBMYW5ndWFnZSIsIHRvYmFjXzQgfiAiVG9iYWNjbyBVc2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiksCiAgICAgICAgbWlzc2luZ190ZXh0ID0gIihNaXNzaW5nKSIKICAgICAgICApICU+JSBhZGRfcCgpCmBgYAoKCiMgUHJlbGltIE1vZGVscyB7LnRhYnNldH0KCiMjIERlcHJlc3Npb24gKyBSUExfVEhFTUVTCmBgYHtyfSAKCm1vZGVsMWEgPC0gZ2xtKGRlcHJlc3Npb25fMiB+ICsgcmFjZV81ICsgbGFuZ18zICsgcmVsaWdfYWZmaWwgKyBhZ2VfeXJzCiAgICAgICAgICAgICAgICsgZ2VuZGVyICsgZXRobmljXzMgKyB0b2JhY180ICsgUlBMX1RIRU1FUywKICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgIGRhdGEgPSBtaF9jbGVhbjEpCnN1bW1hcnkobW9kZWwxYSkKYnJvb206OmdsYW5jZShtb2RlbDFhKQpicm9vbTo6dGlkeShtb2RlbDFhLCBleHBvbmVudGlhdGUgPSBUUlVFKQptb2RlbF9wZXJmb3JtYW5jZShtb2RlbDFhKQp0YmxfcmVncmVzc2lvbihtb2RlbDFhLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJFbmdsaXNoIFNwZWFraW5nIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRVMgfiAiVG90YWwgU1ZJIiwgdG9iYWNfNCB+ICJUb2JhY2NvIFVzZSIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQoKYGBgCgojIyBEZXByZXNzaW9uICsgUlBMX1RIRU1FU3g0IApgYGB7cn0KCm1vZGVsMWIgPC0gZ2xtKGRlcHJlc3Npb25fMiB+ICBsYW5nXzMgKyByZWxpZ19hZmZpbCArIGFnZV95cnMgKyByYWNlXzUKICAgICAgICsgdG9iYWNfNCArIGdlbmRlciArIGV0aG5pY18zICsgUlBMX1RIRU1FMSArIFJQTF9USEVNRTIgKyBSUExfVEhFTUUzICsgUlBMX1RIRU1FNCwKICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgIGRhdGEgPSBtaF9jbGVhbjEpCnN1bW1hcnkobW9kZWwxYikKYnJvb206OmdsYW5jZShtb2RlbDFiKQpicm9vbTo6dGlkeShtb2RlbDFiLCBleHBvbmVudGlhdGUgPSBUUlVFKQptb2RlbF9wZXJmb3JtYW5jZShtb2RlbDFiKQp0YmxfcmVncmVzc2lvbihtb2RlbDFiLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJFbmdsaXNoIFNwZWFraW5nIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiwgdG9iYWNfNCB+ICJUb2JhY2NvIFVzZSIpLCBleHBvbmVudGlhdGUgPSBUUlVFKQpgYGAKCiMjIEFueGlldHkgKyBSUExfVEhFTUVTCmBgYHtyfQptb2RlbDJhIDwtIGdsbShhbnhpZXR5XzIgfiBsYW5nXzMgKyBhZ2VfeXJzICsgcmFjZV81ICsgcmVsaWdfYWZmaWwKICAgICAgICAgICAgICAgKyB0b2JhY180ICsgZ2VuZGVyICsgZXRobmljXzMgKyBSUExfVEhFTUVTLAogICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsCiAgICAgICAgICAgICAgZGF0YSA9IG1oX2NsZWFuMSkKc3VtbWFyeShtb2RlbDJhKQpicm9vbTo6Z2xhbmNlKG1vZGVsMmEpCmJyb29tOjp0aWR5KG1vZGVsMmEsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKG1vZGVsMmEpCnRibF9yZWdyZXNzaW9uKG1vZGVsMmEsIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIkVuZ2xpc2ggU3BlYWtpbmciLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiwgUlBMX1RIRU1FUyB+ICJUb3RhbCBTVkkiLCB0b2JhY180IH4gIlRvYmFjY28gVXNlIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCmBgYAojIyBBbnhpZXR5ICsgUlBMX1RIRU1FU3g0CmBgYHtyfQptb2RlbDJiIDwtIGdsbShhbnhpZXR5XzIgfiAgbGFuZ18zICsgYWdlX3lycyArIHJhY2VfNSArIHJlbGlnX2FmZmlsIAogICAgICAgICAgKyB0b2JhY180ICsgZ2VuZGVyICsgZXRobmljXzMgKyBSUExfVEhFTUUxICsgUlBMX1RIRU1FMiArIFJQTF9USEVNRTMgKyBSUExfVEhFTUU0LAogICAgICAgICAgICAgIGZhbWlseSA9ICJiaW5vbWlhbCIsCiAgICAgICAgICAgICAgZGF0YSA9IG1oX2NsZWFuMSkKc3VtbWFyeShtb2RlbDJiKQpicm9vbTo6Z2xhbmNlKG1vZGVsMmIpCmJyb29tOjp0aWR5KG1vZGVsMmIsIGV4cG9uZW50aWF0ZSA9IFRSVUUpCm1vZGVsX3BlcmZvcm1hbmNlKG1vZGVsMmIpCnRibF9yZWdyZXNzaW9uKG1vZGVsMmIsIGxhYmVsID0gbGlzdChhZ2VfeXJzIH4gIkFnZSIsIGdlbmRlcn4gIkdlbmRlciIsIHJhY2VfNSB+ICJSYWNlIiwgZXRobmljXzMgfiAiRXRobmljaXR5IiwgbGFuZ18zIH4gIkVuZ2xpc2ggU3BlYWtpbmciLCBSUExfVEhFTUUxIH4gIlNvY2Vpb2Vjb25vbWljIFN0YXR1cyIsIFJQTF9USEVNRTIgfiAiSG91c2Vob2xkIENvbXBvc2l0aW9uIiwgUlBMX1RIRU1FMyB+ICJNaW5vcml0eSBTdGF0dXMgYW5kIExhbmd1YWdlIiwgUlBMX1RIRU1FNCB+ICJIb3VzaW5nIGFuZCBUcmFuc3BvcnRhdGlvbiIsIHRvYmFjXzQgfiAiVG9iYWNjbyBVc2UiLCByZWxpZ19hZmZpbCB+ICJBbnkgUmVsaWdpb3VzIEFmZmlsaWF0aW9uIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCmBgYAoKIyMgQW55IFBzeWNoICsgUlBMIFRIRU1FUyAKYGBge3J9Cm1vZGVsNGEgPC0gZ2xtKGFueV9wc3ljaF9keF8yIH4gcmVsaWdfYWZmaWwgKyByYWNlXzUgKyBsYW5nXzMgKwogICAgICAgICAgICAgICsgdG9iYWNfNCArIGFnZV95cnMgKyBnZW5kZXIgKyBldGhuaWNfMyArIFJQTF9USEVNRVMsCiAgICAgICAgICAgICAgZmFtaWx5ID0gImJpbm9taWFsIiwKICAgICAgICAgICAgICBkYXRhID0gbWhfY2xlYW4xKQpzdW1tYXJ5KG1vZGVsNGEpCmJyb29tOjpnbGFuY2UobW9kZWw0YSkKYnJvb206OnRpZHkobW9kZWw0YSwgZXhwb25lbnRpYXRlID0gVFJVRSkKbW9kZWxfcGVyZm9ybWFuY2UobW9kZWw0YSkKdGJsX3JlZ3Jlc3Npb24obW9kZWw0YSwgbGFiZWwgPSBsaXN0KGFnZV95cnMgfiAiQWdlIiwgZ2VuZGVyfiAiR2VuZGVyIiwgcmFjZV81IH4gIlJhY2UiLCBldGhuaWNfMyB+ICJFdGhuaWNpdHkiLCBsYW5nXzMgfiAiRW5nbGlzaCBTcGVha2luZyIsIHJlbGlnX2FmZmlsIH4gIkFueSBSZWxpZ2lvdXMgQWZmaWxpYXRpb24iLCBSUExfVEhFTUVTIH4gIlRvdGFsIFNWSSIsIHRvYmFjXzQgfiAiVG9iYWNjbyBVc2UiKSwgZXhwb25lbnRpYXRlID0gVFJVRSkKYGBgCgojIyBBbnkgUHN5Y2ggKyBSUExfVEhFTUVTeDQKYGBge3J9Cm1vZGVsNGIgPC0gZ2xtKGFueV9wc3ljaF9keF8yIH4gcmVsaWdfYWZmaWwgKyByYWNlXzUgKyBsYW5nXzMgCiAgICAgICAgICAgICArIGFnZV95cnMgKyB0b2JhY180ICsgZ2VuZGVyICsgZXRobmljXzMgICsgUlBMX1RIRU1FMSArIFJQTF9USEVNRTIgKyBSUExfVEhFTUUzICsgUlBMX1RIRU1FNCwKICAgICAgICAgICAgICBmYW1pbHkgPSAiYmlub21pYWwiLAogICAgICAgICAgICAgIGRhdGEgPSBtaF9jbGVhbjEpCnN1bW1hcnkobW9kZWw0YikKYnJvb206OmdsYW5jZShtb2RlbDRiKQpicm9vbTo6dGlkeShtb2RlbDRiLCBleHBvbmVudGlhdGUgPSBUUlVFKQptb2RlbF9wZXJmb3JtYW5jZShtb2RlbDRiKQp0YmxfcmVncmVzc2lvbihtb2RlbDRiLCBsYWJlbCA9IGxpc3QoYWdlX3lycyB+ICJBZ2UiLCBnZW5kZXJ+ICJHZW5kZXIiLCByYWNlXzUgfiAiUmFjZSIsIGV0aG5pY18zIH4gIkV0aG5pY2l0eSIsIGxhbmdfMyB+ICJFbmdsaXNoIFNwZWFraW5nIiwgcmVsaWdfYWZmaWwgfiAiQW55IFJlbGlnaW91cyBBZmZpbGlhdGlvbiIsIFJQTF9USEVNRTEgfiAiU29jZWlvZWNvbm9taWMgU3RhdHVzIiwgUlBMX1RIRU1FMiB+ICJIb3VzZWhvbGQgQ29tcG9zaXRpb24iLCBSUExfVEhFTUUzIH4gIk1pbm9yaXR5IFN0YXR1cyBhbmQgTGFuZ3VhZ2UiLCBSUExfVEhFTUU0IH4gIkhvdXNpbmcgYW5kIFRyYW5zcG9ydGF0aW9uIiksIGV4cG9uZW50aWF0ZSA9IFRSVUUpCmBgYAoK