#1. Define a binary outcome of your choosing

self rated health status

1 Define an ordinal or multinomial outcome variable of your choosing and define how you will recode the original variable.

Answer: Health status, with 5 being the worst and 1 being the best health

1&2= 1 (Excellent/V. good) 3=2 (Good) 4&5= 3(Fair/poor)

data$generalhealth<-Recode(data$health,
                               recodes="1:2=1;3=2;4:5=3; else=NA",
                               as.factor = T)

data$generalhealth<-relevel(data$generalhealth, ref = "1")

data$healthnum<-car::Recode(data$health,
                                recodes="1:2=1;3=2;4:5=3; else=NA",
                                as.factor = F)



data <- data%>%
filter(age >=16 & age<=24)

#First we tell R our survey design
options(survey.lonely.psu = "adjust")





library(dplyr)
sub<-data%>%
  select(badhealth,healthnum,generalhealth, opportunity_youth_cat,
         age2,race_eth, male, educ,whitemajority,otherminority,urban_rural,healthinsurace_coverage,
         ,sampweight, strata) %>%
  filter( complete.cases(.))




#First we tell R our survey design
options(survey.lonely.psu = "adjust")
des<-svydesign(ids=~1,
               strata=~strata,
               weights=~sampweight,
               data =sub )

State a research question about what factors you believe will affect your outcome variable.

Research question

Is there an association between the health status and opportunity youth status
Other Predictor Variables
  1. Education

  2. gender

  3. health insurance

3. Fit the ordinal or the multinomial logistic regression models to your outcome.

#Multinomial Model

mfit<-svy_vglm(generalhealth~opportunity_youth_cat+educ+male+healthinsurace_coverage,
           family=multinomial(refLevel = 1),
           design = des)
mfit%>%
  tbl_regression()
## ! `broom::tidy()` failed to tidy the model.
## x No tidy method for objects of class svy_vglm
## ✓ `tidy_parameters()` used instead.
## ℹ Add `tidy_fun = broom.helpers::tidy_parameters` to quiet these messages.
## x Unable to identify the list of variables.
## 
## This is usually due to an error calling `stats::model.frame(x)`or `stats::model.matrix(x)`.
## It could be the case if that type of model does not implement these methods.
## Rarely, this error may occur if the model object was created within
## a functional programming framework (e.g. using `lappy()`, `purrr::map()`, etc.).
Characteristic Beta 95% CI1 p-value
(Intercept):1 -0.79 -1.3, -0.31 0.001
(Intercept):2 -1.0 -1.6, -0.37 0.002
opportunity_youth_catNot opportunity youth:1 -0.40 -0.73, -0.08 0.013
opportunity_youth_catNot opportunity youth:2 -0.93 -1.3, -0.50 <0.001
educ2hsgrad:1 0.18 -0.18, 0.54 0.3
educ2hsgrad:2 -0.59 -1.1, -0.10 0.018
educ3More than HS:1 -0.13 -0.48, 0.22 0.5
educ3More than HS:2 -0.69 -1.2, -0.22 0.004
maleMale:1 0.03 -0.17, 0.23 0.8
maleMale:2 -0.34 -0.69, 0.01 0.054
healthinsurace_coverageno, has coverage:1 -0.29 -0.57, -0.02 0.036
healthinsurace_coverageno, has coverage:2 -0.29 -0.73, 0.15 0.2

1 CI = Confidence Interval

3.1. Describe the results of your model

opportunity_youth_catNot opportunity youth:1 corresponds to the odds ratio for non opportunity youth respondents having good compared to verygood/excellent health, compared to opportunity youth.

And the opportunity_youth_catNot opportunity youth:2 odds ratio is the odds ratio for non opportunity youth respondents having fair/poor versus verygood/excellent health, compared to opportunity youths.

In terms of education, those high school grads are more likely to report good, compared to excellent/vg health, compared to those with less than high school, but those with more than High school education are less likely to report good vs excellent/vg health, compared to those with less than high school.

While those high school grads and more than high school grad are less likely to report fair/poor health versus verygood/ excellent health, compared to those with less than high school grad

In terms of gender, females are more likely to report good, compared to excellent/vg health, compared to males.

While females are less likely to report fair/poor versus verygood/excellent health compared to males

In terms of health insurance coverage, those who have health insurance coverage are less likely to report good, compared to excellent/vg health, compared to those without health insurance coverage. Also those with health insurance coverage are less likely to report fair/poor health versus verygood/ excellent health, compared to those without health insurance

LS0tCnRpdGxlOiAiQXNzaWdubWVudCA1IgphdXRob3I6ICJKb3NlcGggSmFpeWVvbGEiCmRhdGU6ICAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiCm91dHB1dDoKICAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogICAgZmlnX2hlaWdodDogNwogICAgZmlnX3dpZHRoOiA3CiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKLS0tCgojMS4gRGVmaW5lIGEgYmluYXJ5IG91dGNvbWUgb2YgeW91ciBjaG9vc2luZwoKc2VsZiByYXRlZCBoZWFsdGggc3RhdHVzCgoKCmBgYHtyIGluY2x1ZGU9RkFMU0V9CmxpYnJhcnkoc3RhcmdhemVyLCBxdWlldGx5ID0gVCkKbGlicmFyeShzdXJ2ZXksIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KGNhciwgcXVpZXRseSA9IFQpCmxpYnJhcnkocXVlc3Rpb25yLCBxdWlldGx5ID0gVCkKbGlicmFyeShkcGx5ciwgcXVpZXRseSA9IFQpCmxpYnJhcnkoZm9yY2F0cywgcXVpZXRseSA9IFQpCmxpYnJhcnkodGlkeXZlcnNlLCBxdWlldGx5ID0gVCkKbGlicmFyeShzcnZ5ciwgcXVpZXRseSA9IFQpCmxpYnJhcnkoIGd0c3VtbWFyeSwgcXVpZXRseSA9IFQpCmxpYnJhcnkoY2FyZXQsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KFZHQU0sIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KGdncGxvdDIsIHF1aWV0bHkgPSBUKQpsaWJyYXJ5KHN2eVZHQU0sIHF1aWV0bHkgPSBUKQpgYGAKCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KGlwdW1zcikKYGBgCgpgYGB7ciBpbmNsdWRlPUZBTFNFfQpkZGkgPC0gcmVhZF9pcHVtc19kZGkoIm5oaXNfMDAwMDIueG1sIikKZGF0YSA8LSByZWFkX2lwdW1zX21pY3JvKGRkaSkKZGF0YTwtIGhhdmVuOjp6YXBfbGFiZWxzKGRhdGEpCmBgYAoKYGBge3IgaW5jbHVkZT1GQUxTRX0KbmFtZXMoZGF0YSkgPC0gdG9sb3dlcihnc3ViKHBhdHRlcm4gPSAiXyIscmVwbGFjZW1lbnQgPSAgIiIseCA9ICBuYW1lcyhkYXRhKSkpCmBgYAoKCmBgYHtyIGluY2x1ZGU9RkFMU0V9CiNzZXgKZGF0YSRtYWxlPC1hcy5mYWN0b3IoaWZlbHNlKGRhdGEkc2V4PT0xLCAiTWFsZSIsICJGZW1hbGUiKSkKCgojYWdlCgpkYXRhJGFnZTI8LSBkYXRhJGFnZV4yCgojcmFjZS9ldGhuaWNpdHkKZGF0YSR3aGl0ZW1ham9yaXR5PC0gY2FyOjpSZWNvZGUoZGF0YSRoaXNwcmFjZSwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIwMj0xOyA5OT1OQTsgZWxzZT0wIikKCmRhdGEkb3RoZXJtaW5vcml0eTwtIGNhcjo6UmVjb2RlKGRhdGEkaGlzcHJhY2UsCiAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSJjKDEsMyw0LDUsNiw3KT0xOyA5OT1OQTsgZWxzZT0wIikKCmRhdGEkcmFjZV9ldGg8LWNhcjo6UmVjb2RlKGRhdGEkaGlzcHJhY2UsCnJlY29kZXM9IjAyPSd3aGl0ZW1ham9yaXR5JzsgYygxLDMsNCw1LDYsNyk9J290aGVybWlub3JpdHknO2Vsc2U9TkEiLAphcy5mYWN0b3IgPSBUKQpkYXRhJHJhY2VfZXRoPC1yZWxldmVsKGRhdGEkcmFjZV9ldGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmID0gIndoaXRlbWFqb3JpdHkiKQoKCiNlZHVjYXRpb24gbGV2ZWwKCgoKZGF0YSRlZHVjPC0gY2FyOjpSZWNvZGUoZGF0YSRlZHVjLAogICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxMDI6MTE2PScxTGVzcyB0aGFuIEhTJzsgMjAxOjIwMj0nMmhzZ3JhZCc7IDMwMTo1MDM9JzNNb3JlIHRoYW4gSFMnOzk5Nzo5OTk9TkE7MDAwPU5BIiwKICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpCmRhdGEkZWR1YzwtZmN0X3JlbGV2ZWwoZGF0YSRlZHVjLCcxTGVzcyB0aGFuIEhTJywnMmhzZ3JhZCcsJzNNb3JlIHRoYW4gSFMnKSAKCgojVXJiYW4tcnVyYWwgY2xhc3NpZmljYXRpb24KCgpkYXRhJHVyYmFuX3J1cmFsPC0gY2FyOjpSZWNvZGUoZGF0YSR1cmJycmwsCiAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjE6Mz0ndXJiYW4nOyA0PSdydXJhbCc7MDAwPU5BIiwKICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpCmRhdGEkdXJiYW5fcnVyYWw8LXJlbGV2ZWwoZGF0YSR1cmJhbl9ydXJhbCwgcmVmPSdydXJhbCcpIAoKCmRhdGEkcnVyYWw8LSBjYXI6OlJlY29kZShkYXRhJGhpc3ByYWNlLAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjQ9MTsgOTk9TkE7IGVsc2U9MCIpCgpkYXRhJHVyYmFuPC0gY2FyOjpSZWNvZGUoZGF0YSRoaXNwcmFjZSwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxOjM9MTsgOTk9TkE7IGVsc2U9MCIpCgoKCgojZW1wbG95bWVudCBzdGF0dXMKCgpkYXRhJHVuZW1wbG95PC0gY2FyOjpSZWNvZGUoZGF0YSRlbXBzdGF0LAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjIwMD0xOyAwMD1OQTsgOTk5PU5BOyBlbHNlPTAiKQoKCmRhdGEkZW1wbG95X3N0YXR1czwtIGNhcjo6UmVjb2RlKGRhdGEkZW1wc3RhdCwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxMDA9J0VtcGxveWVkJzsgMjAwPSd1bmVtcGxveWVkJztlbHNlPU5BIiwKICAgICAgICAgICAgICAgICAgICAgICBhcy5mYWN0b3I9VCkKZGF0YSRlbXBsb3lfc3RhdHVzPC1yZWxldmVsKGRhdGEkZW1wbG95X3N0YXR1cywgcmVmPSdFbXBsb3llZCcpCgoKIyBjdXJyZW50bHkgaW4gc2Nob29sCgpkYXRhJG5vbl9zY2hvb2xpbmc8LSBjYXI6OlJlY29kZShkYXRhJHNjaG9vbG5vdywKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxPTE7IDA9TkE7IDc6OT1OQTsgZWxzZT0wIikKCmRhdGEkc2Nob29sc3RhdHVzPC0gY2FyOjpSZWNvZGUoZGF0YSRzY2hvb2xub3csCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nbm8nOyAyPSd5ZXMnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJHNjaG9vbHN0YXR1czwtcmVsZXZlbChkYXRhJHNjaG9vbHN0YXR1cywgcmVmPSdubycpCgoKCgojIG1lcmdpbmcgc2Nob29saW5nIGFuZCB3b3JraW5nCgpkYXRhJG9wcG9ydHVuaXR5X3lvdXRoIDwtIHBhc3RlKCBkYXRhJHVuZW1wbG95LCBkYXRhJG5vbl9zY2hvb2xpbmcsIHNlcCA9IiIpCgoKZGF0YSRvcHBvcnR1bml0eV95b3V0aF9jYXRfbnVtPC0gY2FyOjpSZWNvZGUoZGF0YSRvcHBvcnR1bml0eV95b3V0aCwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxMT0xOyAwMDoxMD0wO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1GKQoKCmRhdGEkb3Bwb3J0dW5pdHlfeW91dGhfY2F0PC0gY2FyOjpSZWNvZGUoZGF0YSRvcHBvcnR1bml0eV95b3V0aCwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxMT0nT3Bwb3J0dW5pdHkgeW91dGgnOzAwOjEwPSdOb3Qgb3Bwb3J0dW5pdHkgeW91dGgnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJG9wcG9ydHVuaXR5X3lvdXRoX2NhdDwtcmVsZXZlbChkYXRhJG9wcG9ydHVuaXR5X3lvdXRoX2NhdCwgcmVmPSdPcHBvcnR1bml0eSB5b3V0aCcpCgpkYXRhJG5vbl9vcHBvcnR1bml0eV95b3V0aF9jYXRfbnVtPC0gY2FyOjpSZWNvZGUoZGF0YSRvcHBvcnR1bml0eV95b3V0aF9jYXRfbnVtLAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjA9MTsgOTk9TkE7IGVsc2U9MCIpCgojaW5jb21lIGdyb3VwaW5nCgpkYXRhJGZhbWlseWluY29tZSA8LSBkYXRhJGluY2ZhbTA3b24KCiMgYm9ybiBpbiB0aGUgVVMKCmRhdGEkdXNib3JuPC0gY2FyOjpSZWNvZGUoZGF0YSR1c2Jvcm4sCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMjA9MTsgOTc6OTg9TkE7IGVsc2U9MCIpCgojIFVTIENpdGl6ZW4KZGF0YSRjaXRpemVuPC0gY2FyOjpSZWNvZGUoZGF0YSRjaXRpemVuLAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjI9MTsgODo5PU5BOyBlbHNlPTAiKQoKI2xhc3QgZW1wbG95ZWQKCgoKZGF0YSRlbXBsb3llZGxhc3Q8LSBjYXI6OlJlY29kZShkYXRhJGVtcGxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nV2l0aGluIHBhc3QgMTJtb250aHMnOyAyPScxLTV5ZWFycyBhZ28nOyAzPSdvdmVyIDV5ZWFycyBhZ28nOyA0PSduZXZlciB3b3JrZWQnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJGVtcGxveWVkbGFzdDwtcmVsZXZlbChkYXRhJGVtcGxveWVkbGFzdCwgcmVmPScxLTV5ZWFycyBhZ28nKQoKCiNIRUFMVEggVkFSSUFCTEVTCgojUG9vciBvciBmYWlyIHNlbGYgcmF0ZWQgaGVhbHRoCmRhdGEkYmFkaGVhbHRoPC1jYXI6OlJlY29kZShkYXRhJGhlYWx0aCwgcmVjb2Rlcz0iNDo1PTE7IDE6Mz0wOyBlbHNlPU5BIikKCiNHZW5lcmFsIG9yZGluYWwgY29kaW5nLCB3aXRoIDUgYmVpbmcgdGhlIHdvcnN0IGFuZCAxIGJlaW5nIHRoZSBiZXN0IGhlYWx0aAoKCiNwbGFjZSBmb3IgbWVkaWNhbCBjYXJlCgoKZGF0YSRtZWRpY2FscGxhY2U8LSBjYXI6OlJlY29kZShkYXRhJHVzdWFscGwsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nbm8nOyAyOjM6PSd5ZXMnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJG1lZGljYWxwbGFjZTwtcmVsZXZlbChkYXRhJG1lZGljYWxwbGFjZSwgcmVmPSdubycpCgoKIyBkZWxheWVkIG1lZGljYWwgY2FyZSBkdWUgdG8gY29zdAoKCmRhdGEkbWVkaWNhbF9jYXJlX2Nvc3Q8LSBjYXI6OlJlY29kZShkYXRhJGRlbGF5Y29zdCwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIyPSd5ZXMnOyAxPSdubyc7ZWxzZT1OQSIsCiAgICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpCmRhdGEkbWVkaWNhbF9jYXJlX2Nvc3Q8LXJlbGV2ZWwoZGF0YSRtZWRpY2FsX2NhcmVfY29zdCwgcmVmPSd5ZXMnKQoKIyB3b3JyaWVkIGFib3V0IHBheWluZyBtZWRpY2FsIGJpbGxzCgoKZGF0YSRtZWRpY2FsX2JpbGxfd29ycmllZDwtIGNhcjo6UmVjb2RlKGRhdGEkd29ybWVkYmlsbCwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxPSd2ZXJ5IHdvcnJpZWQnOyAyPSdzb21ld2hhdCB3b3JyaWVkJzsgMz0nbm90IGF0IGFsbCc7ZWxzZT1OQSIsCiAgICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpCmRhdGEkbWVkaWNhbF9iaWxsX3dvcnJpZWQ8LXJlbGV2ZWwoZGF0YSRtZWRpY2FsX2JpbGxfd29ycmllZCwgcmVmPSd2ZXJ5IHdvcnJpZWQnKQoKIyB1bmFibGUgdG8gcGF5IG1lZGljYWwgYmlsbHMKCgojZGF0YSRtZWRpY2FsX2JpbGxfdW5hYmxldG9wYXk8LSBjYXI6OlJlY29kZShkYXRhJGhpdW5hYmxlcGF5LAogICAgICAgICAgICAgICAgICAgICAgICNyZWNvZGVzPSIxPSdubyc7IDI9J3llcyc7ZWxzZT1OQSIsCiAgICAgICAgICAgICAgICAgICAgICAjIGFzLmZhY3Rvcj1UKQojZGF0YSRtZWRpY2FsX2JpbGxfdW5hYmxldG9wYXk8LXJlbGV2ZWwoZGF0YSRtZWRpY2FsX2JpbGxfdW5hYmxldG9wYXksIHJlZj0neWVzJykKCgojIGhlYWx0aCBpbnN1cmFuY2UgY292ZXJhZ2UKCgpkYXRhJGhlYWx0aGluc3VyYWNlX2NvdmVyYWdlPC0gY2FyOjpSZWNvZGUoZGF0YSRoaW5vdGNvdmUsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nbm8sIGhhcyBjb3ZlcmFnZSc7IDI9J3llcywgbm8gY292ZXJhZ2UnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJGhlYWx0aGluc3VyYWNlX2NvdmVyYWdlPC1yZWxldmVsKGRhdGEkaGVhbHRoaW5zdXJhY2VfY292ZXJhZ2UsIHJlZj0neWVzLCBubyBjb3ZlcmFnZScpCgojIGRvbnQgaGF2ZSBoZWFsdGggaW5zdXJhbmNlIGN1eiBvZiBjb3N0CgoKI2RhdGEkbm9oZWFsdGhpbnN1cmFjZV9jb3N0PC0gY2FyOjpSZWNvZGUoZGF0YSRoaW5vY29zdHIsCiAgICAgICAgICAgICAgICAgICAgICAjIHJlY29kZXM9IjE9J25vJzsgMj0neWVzJztlbHNlPU5BIiwKICAgICAgICAgICAgICAgICAgICAgICAjYXMuZmFjdG9yPVQpCiNkYXRhJG5vaGVhbHRoaW5zdXJhY2VfY29zdDwtcmVsZXZlbChkYXRhJG5vaGVhbHRoaW5zdXJhY2VfY29zdCwgcmVmPSd5ZXMnKQoKIyB1c2VkIG1lZGljYXRpb24gaW4gdGhlIHBhc3QgeWVhcgoKCmRhdGEkdXNlZG1lZGljYXRpb25zPC0gY2FyOjpSZWNvZGUoZGF0YSRwcmVtZWR5ciwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxPSdubyc7IDI9J3llcyc7ZWxzZT1OQSIsCiAgICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpCmRhdGEkdXNlZG1lZGljYXRpb25zPC1yZWxldmVsKGRhdGEkdXNlZG1lZGljYXRpb25zLCByZWY9J3llcycpCgoKIyBpZiB0aGV5IHNtb2tlZAoKCmRhdGEkc21va2VfZnJlcXVlbnRseTwtIGNhcjo6UmVjb2RlKGRhdGEkc21va2ZyZXFub3csCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nbm8nOyAyOjM9J3NvbWVkYXlzL2V2ZXJ5ZGF5JztlbHNlPU5BIiwKICAgICAgICAgICAgICAgICAgICAgICBhcy5mYWN0b3I9VCkKZGF0YSRzbW9rZV9mcmVxdWVudGx5PC1yZWxldmVsKGRhdGEkc21va2VfZnJlcXVlbnRseSwgcmVmPSdzb21lZGF5cy9ldmVyeWRheScpCgojIHNtb2tlZCB1cCB0byAxMDAgY2lnYXJyZXRoIGluIGxpZmUgdGltZQoKCiNkYXRhJHNtb2tlXzEwMGNpZzwtIGNhcjo6UmVjb2RlKGRhdGEkc21va2V2LAogICAgICAgICAgICAgICAgICAgICAjICByZWNvZGVzPSIxPSdubyc7IDI9J3llcyc7ZWxzZT1OQSIsCiAgICAgICAgICAgICAgICAgICAgICAjIGFzLmZhY3Rvcj1UKQojZGF0YSRzbW9rZV8xMDBjaWc8LXJlbGV2ZWwoZGF0YSRzbW9rZV8xMDBjaWcsIHJlZj0neWVzJykKCgojTWVudGFsIGhlYWx0aAoKIyBldmVyIGhhZCBhbnhpZXR5IGRpc29yZWRlcgoKCmRhdGEkYW54aWV0eV9kaXNvcmVkZXI8LSBjYXI6OlJlY29kZShkYXRhJGFueGlldHlldiwKICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVzPSIxPSdubyc7IDI9J3llcyc7ZWxzZT1OQSIsCiAgICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpCmRhdGEkYW54aWV0eV9kaXNvcmVkZXI8LXJlbGV2ZWwoZGF0YSRhbnhpZXR5X2Rpc29yZWRlciwgcmVmPSd5ZXMnKQoKIyBtZWRpY2F0aW9uIGZvciB3b3JyeWluZwoKCmRhdGEkbWVkaWNhdGlvbl9mb3Jfd29ycnk8LSBjYXI6OlJlY29kZShkYXRhJHdvcnJ4LAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjE9J25vJzsgMj0neWVzJztlbHNlPU5BIiwKICAgICAgICAgICAgICAgICAgICAgICBhcy5mYWN0b3I9VCkKZGF0YSRtZWRpY2F0aW9uX2Zvcl93b3JyeTwtcmVsZXZlbChkYXRhJG1lZGljYXRpb25fZm9yX3dvcnJ5LCByZWY9J3llcycpCgoKIyBtZWRpY2F0aW9uIGZvciBkZXByZXNzaW9uCgoKCmRhdGEkbWVkaWNhdGlvbl9mb3JfZGVwcmVzc2lvbjwtIGNhcjo6UmVjb2RlKGRhdGEkZGVwcngsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nbm8nOyAyPSd5ZXMnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJG1lZGljYXRpb25fZm9yX2RlcHJlc3Npb248LXJlbGV2ZWwoZGF0YSRtZWRpY2F0aW9uX2Zvcl9kZXByZXNzaW9uLCByZWY9J3llcycpCgojIGxldmVsIG9mIHdvcnJ5CgoKCmRhdGEkbGV2ZWxfb2Zfd29ycnk8LSBjYXI6OlJlY29kZShkYXRhJHdvcmZlZWxldmwsCiAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMT0nYWxvdCc7IDI9J2EgbGl0dGxlJzsgMz0nYnR3IGxpdHRsZSBhbmQgYWxvdCc7ZWxzZT1OQSIsCiAgICAgICAgICAgICAgICAgICAgICAgYXMuZmFjdG9yPVQpCmRhdGEkbGV2ZWxfb2Zfd29ycnk8LXJlbGV2ZWwoZGF0YSRsZXZlbF9vZl93b3JyeSwgcmVmPSdhbG90JykKCgojIGxldmVsIG9mIGRlcHJlc3Npb24KCgoKZGF0YSRsZXZlbF9vZl9kZXByZXNzaW9uPC0gY2FyOjpSZWNvZGUoZGF0YSRkZXBmZWVsZXZsLAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjE9JzFhbG90JzsgMj0nM2EgbGl0dGxlJzsgMz0nMmJ0dyBsaXR0bGUgYW5kIGFsb3QnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJGxldmVsX29mX2RlcHJlc3Npb248LXJlbGV2ZWwoZGF0YSRsZXZlbF9vZl9kZXByZXNzaW9uLCByZWY9JzFhbG90JykKCgpkYXRhJGxldmVsX29mX2RlcHJlc3Npb25fbnVtPC0gY2FyOjpSZWNvZGUoZGF0YSRkZXBmZWVsZXZsLAogICAgICAgICAgICAgICAgICAgICAgIHJlY29kZXM9IjE9MTsgMj0nM2EgbGl0dGxlJzsgMz0nMmJ0dyBsaXR0bGUgYW5kIGFsb3QnO2Vsc2U9TkEiLAogICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3Rvcj1UKQpkYXRhJGxldmVsX29mX2RlcHJlc3Npb248LXJlbGV2ZWwoZGF0YSRsZXZlbF9vZl9kZXByZXNzaW9uLCByZWY9JzFhbG90JykKCgoKCmBgYAoKCgojIDEgRGVmaW5lIGFuIG9yZGluYWwgb3IgbXVsdGlub21pYWwgb3V0Y29tZSB2YXJpYWJsZSBvZiB5b3VyIGNob29zaW5nIGFuZCBkZWZpbmUgaG93IHlvdSB3aWxsIHJlY29kZSB0aGUgb3JpZ2luYWwgdmFyaWFibGUuCgpBbnN3ZXI6IEhlYWx0aCBzdGF0dXMsIHdpdGggNSBiZWluZyB0aGUgd29yc3QgYW5kIDEgYmVpbmcgdGhlIGJlc3QgaGVhbHRoCgoxJjI9IDEgKEV4Y2VsbGVudC9WLiBnb29kKQozPTIgKEdvb2QpCjQmNT0gMyhGYWlyL3Bvb3IpCgpgYGB7cn0KCmRhdGEkZ2VuZXJhbGhlYWx0aDwtUmVjb2RlKGRhdGEkaGVhbHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMToyPTE7Mz0yOzQ6NT0zOyBlbHNlPU5BIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzLmZhY3RvciA9IFQpCgpkYXRhJGdlbmVyYWxoZWFsdGg8LXJlbGV2ZWwoZGF0YSRnZW5lcmFsaGVhbHRoLCByZWYgPSAiMSIpCgpkYXRhJGhlYWx0aG51bTwtY2FyOjpSZWNvZGUoZGF0YSRoZWFsdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb2Rlcz0iMToyPTE7Mz0yOzQ6NT0zOyBlbHNlPU5BIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5mYWN0b3IgPSBGKQoKCgpkYXRhIDwtIGRhdGElPiUKZmlsdGVyKGFnZSA+PTE2ICYgYWdlPD0yNCkKCiNGaXJzdCB3ZSB0ZWxsIFIgb3VyIHN1cnZleSBkZXNpZ24Kb3B0aW9ucyhzdXJ2ZXkubG9uZWx5LnBzdSA9ICJhZGp1c3QiKQoKCgoKCmxpYnJhcnkoZHBseXIpCnN1YjwtZGF0YSU+JQogIHNlbGVjdChiYWRoZWFsdGgsaGVhbHRobnVtLGdlbmVyYWxoZWFsdGgsIG9wcG9ydHVuaXR5X3lvdXRoX2NhdCwKICAgICAgICAgYWdlMixyYWNlX2V0aCwgbWFsZSwgZWR1Yyx3aGl0ZW1ham9yaXR5LG90aGVybWlub3JpdHksdXJiYW5fcnVyYWwsaGVhbHRoaW5zdXJhY2VfY292ZXJhZ2UsCiAgICAgICAgICxzYW1wd2VpZ2h0LCBzdHJhdGEpICU+JQogIGZpbHRlciggY29tcGxldGUuY2FzZXMoLikpCgoKCgojRmlyc3Qgd2UgdGVsbCBSIG91ciBzdXJ2ZXkgZGVzaWduCm9wdGlvbnMoc3VydmV5LmxvbmVseS5wc3UgPSAiYWRqdXN0IikKZGVzPC1zdnlkZXNpZ24oaWRzPX4xLAogICAgICAgICAgICAgICBzdHJhdGE9fnN0cmF0YSwKICAgICAgICAgICAgICAgd2VpZ2h0cz1+c2FtcHdlaWdodCwKICAgICAgICAgICAgICAgZGF0YSA9c3ViICkKCmBgYAoKCiMgU3RhdGUgYSByZXNlYXJjaCBxdWVzdGlvbiBhYm91dCB3aGF0IGZhY3RvcnMgeW91IGJlbGlldmUgd2lsbCBhZmZlY3QgeW91ciBvdXRjb21lIHZhcmlhYmxlLgoKIyMgUmVzZWFyY2ggcXVlc3Rpb24KCiMjIyMjIElzIHRoZXJlIGFuIGFzc29jaWF0aW9uIGJldHdlZW4gdGhlIGhlYWx0aCBzdGF0dXMgYW5kIG9wcG9ydHVuaXR5IHlvdXRoIHN0YXR1cwoKIyMjIyMgT3RoZXIgUHJlZGljdG9yIFZhcmlhYmxlcwphLiBFZHVjYXRpb24KCmIuIGdlbmRlcgoKYy4gaGVhbHRoIGluc3VyYW5jZQoKCiMgMy4gRml0IHRoZSBvcmRpbmFsIG9yIHRoZSBtdWx0aW5vbWlhbCBsb2dpc3RpYyByZWdyZXNzaW9uIG1vZGVscyB0byB5b3VyIG91dGNvbWUuCiNNdWx0aW5vbWlhbCBNb2RlbAoKYGBge3J9Cm1maXQ8LXN2eV92Z2xtKGdlbmVyYWxoZWFsdGh+b3Bwb3J0dW5pdHlfeW91dGhfY2F0K2VkdWMrbWFsZStoZWFsdGhpbnN1cmFjZV9jb3ZlcmFnZSwKICAgICAgICAgICBmYW1pbHk9bXVsdGlub21pYWwocmVmTGV2ZWwgPSAxKSwKICAgICAgICAgICBkZXNpZ24gPSBkZXMpCm1maXQlPiUKICB0YmxfcmVncmVzc2lvbigpCmBgYAoKCiMgMy4xLiBEZXNjcmliZSB0aGUgcmVzdWx0cyBvZiB5b3VyIG1vZGVsCgpgb3Bwb3J0dW5pdHlfeW91dGhfY2F0Tm90IG9wcG9ydHVuaXR5IHlvdXRoOjFgIGNvcnJlc3BvbmRzIHRvIHRoZSBvZGRzIHJhdGlvIGZvciBub24gb3Bwb3J0dW5pdHkgeW91dGggcmVzcG9uZGVudHMgaGF2aW5nIGdvb2QgIGNvbXBhcmVkIHRvICB2ZXJ5Z29vZC9leGNlbGxlbnQgaGVhbHRoLCBjb21wYXJlZCB0byBvcHBvcnR1bml0eSB5b3V0aC4gCgpBbmQgdGhlIGAgb3Bwb3J0dW5pdHlfeW91dGhfY2F0Tm90IG9wcG9ydHVuaXR5IHlvdXRoOjJgIG9kZHMgcmF0aW8gaXMgdGhlIG9kZHMgcmF0aW8gZm9yIG5vbiBvcHBvcnR1bml0eSB5b3V0aCByZXNwb25kZW50cyBoYXZpbmcgZmFpci9wb29yIHZlcnN1cyB2ZXJ5Z29vZC9leGNlbGxlbnQgaGVhbHRoLCBjb21wYXJlZCB0byBvcHBvcnR1bml0eSB5b3V0aHMuIAoKCkluIHRlcm1zIG9mIGVkdWNhdGlvbiwgdGhvc2UgaGlnaCBzY2hvb2wgZ3JhZHMgYXJlIG1vcmUgbGlrZWx5IHRvIHJlcG9ydCBnb29kLCBjb21wYXJlZCB0byBleGNlbGxlbnQvdmcgaGVhbHRoLCBjb21wYXJlZCB0byB0aG9zZSB3aXRoIGxlc3MgdGhhbiBoaWdoIHNjaG9vbCwgYnV0IHRob3NlIHdpdGggbW9yZSB0aGFuIEhpZ2ggc2Nob29sIGVkdWNhdGlvbiBhcmUgbGVzcyBsaWtlbHkgdG8gcmVwb3J0IGdvb2QgdnMgZXhjZWxsZW50L3ZnIGhlYWx0aCwgY29tcGFyZWQgdG8gdGhvc2Ugd2l0aCBsZXNzIHRoYW4gaGlnaCBzY2hvb2wuCgpXaGlsZSB0aG9zZSBoaWdoIHNjaG9vbCBncmFkcyBhbmQgbW9yZSB0aGFuIGhpZ2ggc2Nob29sIGdyYWQgYXJlIGxlc3MgbGlrZWx5IHRvIHJlcG9ydCBmYWlyL3Bvb3IgaGVhbHRoIHZlcnN1cyB2ZXJ5Z29vZC8gZXhjZWxsZW50IGhlYWx0aCwgY29tcGFyZWQgdG8gdGhvc2Ugd2l0aCBsZXNzIHRoYW4gaGlnaCBzY2hvb2wgZ3JhZAoKSW4gdGVybXMgb2YgZ2VuZGVyLCBmZW1hbGVzIGFyZSBtb3JlIGxpa2VseSB0byByZXBvcnQgZ29vZCwgY29tcGFyZWQgdG8gZXhjZWxsZW50L3ZnIGhlYWx0aCwgY29tcGFyZWQgdG8gbWFsZXMuCgpXaGlsZSBmZW1hbGVzIGFyZSBsZXNzIGxpa2VseSB0byByZXBvcnQgZmFpci9wb29yIHZlcnN1cyB2ZXJ5Z29vZC9leGNlbGxlbnQgaGVhbHRoIGNvbXBhcmVkIHRvIG1hbGVzCgpJbiB0ZXJtcyBvZiBoZWFsdGggaW5zdXJhbmNlIGNvdmVyYWdlLCB0aG9zZSB3aG8gaGF2ZSBoZWFsdGggaW5zdXJhbmNlIGNvdmVyYWdlIGFyZSBsZXNzIGxpa2VseSB0byByZXBvcnQgZ29vZCwgY29tcGFyZWQgdG8gZXhjZWxsZW50L3ZnIGhlYWx0aCwgY29tcGFyZWQgdG8gdGhvc2Ugd2l0aG91dCBoZWFsdGggaW5zdXJhbmNlIGNvdmVyYWdlLiBBbHNvIHRob3NlIHdpdGggaGVhbHRoIGluc3VyYW5jZSBjb3ZlcmFnZSBhcmUgbGVzcyBsaWtlbHkgdG8gcmVwb3J0IGZhaXIvcG9vciBoZWFsdGggdmVyc3VzIHZlcnlnb29kLyBleGNlbGxlbnQgaGVhbHRoLCBjb21wYXJlZCB0byB0aG9zZSB3aXRob3V0IGhlYWx0aCBpbnN1cmFuY2UKCgoK