Introduction

We will be using sleep75 dataset, from wooldridge library.

Loading and peeking at data:

## Rows: 706
## Columns: 34
## $ age      <int> 32, 31, 44, 30, 64, 41, 35, 47, 32, 30, 43, 23, 24, 48, 33, 23, 46, 37, 53, 45, 4…
## $ black    <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ case     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23…
## $ clerical <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ construc <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ educ     <int> 12, 14, 17, 12, 14, 12, 12, 13, 17, 15, 8, 16, 16, 5, 12, 12, 17, 14, 12, 17, 17,…
## $ earns74  <dbl> 0, 9500, 42500, 42500, 2500, 0, 8250, 0, 18750, 11750, 21250, 1000, 1000, 18750, …
## $ gdhlth   <int> 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ inlf     <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ leis1    <int> 3529, 2140, 4595, 3211, 4052, 4812, 4787, 3544, 4359, 4211, 2090, 6415, 3844, 437…
## $ leis2    <int> 3479, 2140, 4505, 3211, 4007, 4797, 4157, 3469, 4359, 4061, 1677, 6355, 3844, 437…
## $ leis3    <int> 3479, 2140, 4227, 3211, 4007, 4797, 4157, 3439, 4121, 4061, 1677, 6230, 3794, 437…
## $ smsa     <int> 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, …
## $ lhrwage  <dbl> 1.955861, 0.357674, 3.021887, 2.263844, 1.011601, 2.957511, 0.364643, 2.708717, 1…
## $ lothinc  <dbl> 10.075380, 0.000000, 0.000000, 0.000000, 9.328213, 10.657280, 8.987322, 10.657280…
## $ male     <int> 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ marr     <int> 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, …
## $ prot     <int> 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, …
## $ rlxall   <int> 3163, 2920, 3038, 3083, 3493, 4078, 3810, 3033, 3606, 3168, 1988, 3480, 3848, 300…
## $ selfe    <int> 0, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, …
## $ sleep    <int> 3113, 2920, 2670, 3083, 3448, 4063, 3180, 2928, 3368, 3018, 1575, 3295, 3798, 300…
## $ slpnaps  <int> 3163, 2920, 2760, 3083, 3493, 4078, 3810, 3003, 3368, 3168, 1988, 3355, 3798, 300…
## $ south    <int> 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ spsepay  <dbl> 0, 0, 20000, 5000, 2400, 0, 12000, 0, 0, 6000, 0, 3000, 3000, 6000, 9000, 5000, 3…
## $ spwrk75  <int> 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, …
## $ totwrk   <int> 3438, 5020, 2815, 3786, 2580, 1205, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693…
## $ union    <int> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, …
## $ worknrm  <int> 3438, 5020, 2815, 3786, 2580, 0, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693, 2…
## $ workscnd <int> 0, 0, 0, 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ exper    <int> 14, 11, 21, 12, 44, 23, 17, 28, 9, 9, 29, 1, 2, 37, 15, 5, 23, 17, 35, 22, 23, 21…
## $ yngkid   <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ yrsmarr  <int> 13, 0, 0, 12, 33, 23, 0, 24, 11, 7, 23, 4, 4, 0, 9, 4, 21, 17, 26, 22, 0, 0, 31, …
## $ hrwage   <dbl> 7.070004, 1.429999, 20.529997, 9.619998, 2.750000, 19.249998, 1.440000, 15.010007…
## $ agesq    <int> 1024, 961, 1936, 900, 4096, 1681, 1225, 2209, 1024, 900, 1849, 529, 576, 2304, 10…

Data wrangling - Krzysztof Ostrzycki

Checking for NA.

Imputing NA with 0 (since those people do not work, they earn 0$/hour).

Changing boolean data stored as int to boolean.

## Rows: 706
## Columns: 34
## $ age      <int> 32, 31, 44, 30, 64, 41, 35, 47, 32, 30, 43, 23, 24, 48, 33, 23, 46, 37, 53, 45, 4…
## $ black    <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
## $ case     <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23…
## $ clerical <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
## $ construc <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
## $ educ     <int> 12, 14, 17, 12, 14, 12, 12, 13, 17, 15, 8, 16, 16, 5, 12, 12, 17, 14, 12, 17, 17,…
## $ earns74  <dbl> 0, 9500, 42500, 42500, 2500, 0, 8250, 0, 18750, 11750, 21250, 1000, 1000, 18750, …
## $ gdhlth   <lgl> FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TR…
## $ inlf     <lgl> TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRU…
## $ leis1    <int> 3529, 2140, 4595, 3211, 4052, 4812, 4787, 3544, 4359, 4211, 2090, 6415, 3844, 437…
## $ leis2    <int> 3479, 2140, 4505, 3211, 4007, 4797, 4157, 3469, 4359, 4061, 1677, 6355, 3844, 437…
## $ leis3    <int> 3479, 2140, 4227, 3211, 4007, 4797, 4157, 3439, 4121, 4061, 1677, 6230, 3794, 437…
## $ smsa     <lgl> FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, T…
## $ lhrwage  <dbl> 1.955861, 0.357674, 3.021887, 2.263844, 1.011601, 2.957511, 0.364643, 2.708717, 1…
## $ lothinc  <dbl> 10.075380, 0.000000, 0.000000, 0.000000, 9.328213, 10.657280, 8.987322, 10.657280…
## $ male     <lgl> TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, T…
## $ marr     <lgl> TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TR…
## $ prot     <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, FALSE…
## $ rlxall   <int> 3163, 2920, 3038, 3083, 3493, 4078, 3810, 3033, 3606, 3168, 1988, 3480, 3848, 300…
## $ selfe    <lgl> FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FA…
## $ sleep    <int> 3113, 2920, 2670, 3083, 3448, 4063, 3180, 2928, 3368, 3018, 1575, 3295, 3798, 300…
## $ slpnaps  <int> 3163, 2920, 2760, 3083, 3493, 4078, 3810, 3003, 3368, 3168, 1988, 3355, 3798, 300…
## $ south    <lgl> FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE…
## $ spsepay  <dbl> 0, 0, 20000, 5000, 2400, 0, 12000, 0, 0, 6000, 0, 3000, 3000, 6000, 9000, 5000, 3…
## $ spwrk75  <lgl> FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, TRU…
## $ totwrk   <int> 3438, 5020, 2815, 3786, 2580, 1205, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693…
## $ union    <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE…
## $ worknrm  <int> 3438, 5020, 2815, 3786, 2580, 0, 2113, 3608, 2353, 2851, 6415, 370, 2438, 2693, 2…
## $ workscnd <int> 0, 0, 0, 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ exper    <int> 14, 11, 21, 12, 44, 23, 17, 28, 9, 9, 29, 1, 2, 37, 15, 5, 23, 17, 35, 22, 23, 21…
## $ yngkid   <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE…
## $ yrsmarr  <int> 13, 0, 0, 12, 33, 23, 0, 24, 11, 7, 23, 4, 4, 0, 9, 4, 21, 17, 26, 22, 0, 0, 31, …
## $ hrwage   <dbl> 7.070004, 1.429999, 20.529997, 9.619998, 2.750000, 19.249998, 1.440000, 15.010007…
## $ agesq    <int> 1024, 961, 1936, 900, 4096, 1681, 1225, 2209, 1024, 900, 1849, 529, 576, 2304, 10…

Checking for variables that are too correlated with response variable.

Removing variables that are computed using sleep.

All variables that correlate with sleep to well were removed.

Exploratory analisys - Michal Szablewski

Statistical modeling - Milosz Grunwald

Regsubsets

## Reordering variables and trying again:

Model 1

First model, using male, south and totwrk.

Average residual over mean:

## [1] 0.09621059

Residuals average is smaller than ~10% of the response variable.

Model 2

Second model, using earns74, gdhlth, smsa, male, marr, south, totwrk, yrsmarr, agesq.

Average residual over mean:

## [1] 0.09496449

Residuals average is again smaller than ~10% of the response variable.

Model 3

Third model, using totwork and expert.

Average residual over mean:

## [1] 0.09667747

Residuals average is again smaller than ~10% of the response variable.

LS0tDQp0aXRsZTogJ0Rlc2NyaXB0aXZlIFN0YXRpc3RpY3MnDQpzdWJ0aXRsZTogJ1NsZWVwIGFuZCB0aGUgQWxsb2NhdGlvbiBvZiBUaW1lJw0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0KYXV0aG9yOiAiTWlsb3N6IEdydW53YWxkLCBNaWNoYWwgU3phYmxld3NraSwgS3J6eXN6dG9mIE9zdHJ6eWNraSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogDQogICAgdGhlbWU6IGNlcnVsZWFuDQogICAgaGlnaGxpZ2h0OiB0ZXh0bWF0ZQ0KICAgIGZvbnRzaXplOiAxMHB0DQogICAgdG9jOiB5ZXMNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICB0b2NfZmxvYXQ6DQogICAgICBjb2xsYXBzZWQ6IG5vDQogICAgZGZfcHJpbnQ6IGRlZmF1bHQNCiAgICB0b2NfZGVwdGg6IDUNCmVkaXRvcl9vcHRpb25zOiANCiAgbWFya2Rvd246IA0KICAgIHdyYXA6IDcyDQotLS0NCg0KYGBge3Igc2V0dXAsCW1lc3NhZ2UgPSBGQUxTRSwJd2FybmluZyA9IEZBTFNFLAlpbmNsdWRlID0gRkFMU0V9DQpsaWJyYXJ5KHdvb2xkcmlkZ2UpDQpsaWJyYXJ5KHZpc2RhdCkNCmxpYnJhcnkoaW1wdXRlVFMpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShsZWFwcykNCmxpYnJhcnkoR0dhbGx5KQ0KYGBgDQoNCiMgSW50cm9kdWN0aW9uDQoNCldlIHdpbGwgYmUgdXNpbmcgc2xlZXA3NSBkYXRhc2V0LCBmcm9tIHdvb2xkcmlkZ2UgbGlicmFyeS4NCg0KTG9hZGluZyBhbmQgcGVla2luZyBhdCBkYXRhOg0KDQpgYGB7ciBsb2FkLWRhdGEsIHdhcm5pbmc9VFJVRSwgaW5jbHVkZT1GQUxTRX0NCmRhdGEoInNsZWVwNzUiKQ0KDQpgYGANCg0KYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1UUlVFfQ0KZ2xpbXBzZShzbGVlcDc1LCB3aWR0aCA9IDEwMCkNCmBgYA0KDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPVRSVUV9DQoNCmBgYA0KDQojIERhdGEgd3JhbmdsaW5nIC0gS3J6eXN6dG9mIE9zdHJ6eWNraQ0KDQpDaGVja2luZyBmb3IgTkEuDQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9VFJVRX0NCnZpc19taXNzKHNsZWVwNzUpDQpgYGANCg0KSW1wdXRpbmcgTkEgd2l0aCAwIChzaW5jZSB0aG9zZSBwZW9wbGUgZG8gbm90IHdvcmssIHRoZXkgZWFybiAwXCQvaG91cikuDQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9VFJVRX0NCnNsZWVwNzUkaHJ3YWdlIDwtIG5hX3JlcGxhY2Uoc2xlZXA3NSRocndhZ2UsIDApDQpzbGVlcDc1JGxocndhZ2UgPC0gbmFfcmVwbGFjZShzbGVlcDc1JGxocndhZ2UsIDApDQp2aXNfbWlzcyhzbGVlcDc1KQ0KDQpgYGANCg0KQ2hhbmdpbmcgYm9vbGVhbiBkYXRhIHN0b3JlZCBhcyBpbnQgdG8gYm9vbGVhbi4NCg0KYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1UUlVFfQ0Kc2xlZXA3NSRibGFjayA8LSBhcy5sb2dpY2FsKHNsZWVwNzUkYmxhY2spDQpzbGVlcDc1JGNsZXJpY2FsIDwtIGFzLmxvZ2ljYWwoc2xlZXA3NSRjbGVyaWNhbCkNCnNsZWVwNzUkY29uc3RydWMgPC0gYXMubG9naWNhbChzbGVlcDc1JGNvbnN0cnVjKQ0Kc2xlZXA3NSRnZGhsdGggPC0gYXMubG9naWNhbChzbGVlcDc1JGdkaGx0aCkNCnNsZWVwNzUkaW5sZiA8LSBhcy5sb2dpY2FsKHNsZWVwNzUkaW5sZikNCnNsZWVwNzUkc21zYSA8LSBhcy5sb2dpY2FsKHNsZWVwNzUkc21zYSkNCnNsZWVwNzUkbWFsZSA8LSBhcy5sb2dpY2FsKHNsZWVwNzUkbWFsZSkNCnNsZWVwNzUkbWFyciA8LSBhcy5sb2dpY2FsKHNsZWVwNzUkbWFycikNCnNsZWVwNzUkcHJvdCA8LSBhcy5sb2dpY2FsKHNsZWVwNzUkcHJvdCkNCnNsZWVwNzUkc2VsZmUgPC0gYXMubG9naWNhbChzbGVlcDc1JHNlbGZlKQ0Kc2xlZXA3NSRzb3V0aCA8LSBhcy5sb2dpY2FsKHNsZWVwNzUkc291dGgpDQpzbGVlcDc1JHNwd3JrNzUgPC0gYXMubG9naWNhbChzbGVlcDc1JHNwd3JrNzUpDQpzbGVlcDc1JHVuaW9uIDwtIGFzLmxvZ2ljYWwoc2xlZXA3NSR1bmlvbikNCnNsZWVwNzUkeW5na2lkIDwtIGFzLmxvZ2ljYWwoc2xlZXA3NSR5bmdraWQpDQoNCmdsaW1wc2Uoc2xlZXA3NSwgd2lkdGggPSAxMDApDQoNCmBgYA0KDQpDaGVja2luZyBmb3IgdmFyaWFibGVzIHRoYXQgYXJlIHRvbyBjb3JyZWxhdGVkIHdpdGggcmVzcG9uc2UgdmFyaWFibGUuDQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpnZ2NvcnIoc2xlZXA3NSxuYnJlYWtzID0gMTEsIHBhbGV0dGUgPSAiUmRHeSIsIGxhYmVsID0gVFJVRSwgbGFiZWxfc2l6ZSA9IDMsIGxhYmVsX2NvbG9yID0gIndoaXRlIikNCg0KYGBgDQoNClJlbW92aW5nIHZhcmlhYmxlcyB0aGF0IGFyZSBjb21wdXRlZCB1c2luZyBzbGVlcC4NCg0KYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1GQUxTRX0NCnRvX2Ryb3AgPC0gYygibGVpczEiLCAibGVpczIiLCAibGVpczMiLCAicmx4YWxsIiwgInNscG5hcHMiKQ0Kc2xlZXBfY2xlYW5lZCA8LSBzbGVlcDc1W25hbWVzKHNsZWVwNzUpICVpbiUgdG9fZHJvcCA9PSBGQUxTRV0NCmdnY29ycihzbGVlcF9jbGVhbmVkLG5icmVha3MgPSAxMSwgcGFsZXR0ZSA9ICJSZEd5IiwgbGFiZWwgPSBUUlVFLCBsYWJlbF9zaXplID0gMywgbGFiZWxfY29sb3IgPSAid2hpdGUiKQ0KDQpgYGANCg0KQWxsIHZhcmlhYmxlcyB0aGF0IGNvcnJlbGF0ZSB3aXRoIHNsZWVwIHRvIHdlbGwgd2VyZSByZW1vdmVkLg0KDQojIEV4cGxvcmF0b3J5IGFuYWxpc3lzIC0gTWljaGFsIFN6YWJsZXdza2kNCg0KDQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9VFJVRX0NCiMgQ3JlYXRlIHRoZSBtb3NhaWMgcGxvdCB3aXRoIGxhYmVscyBhbmQgY29sb3JzDQptb3NhaWNwbG90KHRhYmxlKGRhdGEuZnJhbWUoc2xlZXBfY2xlYW5lZCRzbXNhLCBzbGVlcF9jbGVhbmVkJGlubGYpKSwNCiAgICAgICAgICAgbWFpbiA9ICIiLA0KICAgICAgICAgICB4bGFiID0gIkxpdmVzIGluIFN0YW5kYXJkIE1ldHJvcG9saXRhbiBTdGF0aXN0aWNhbCBBcmVhIiwNCiAgICAgICAgICAgeWxhYiA9ICJJcyBpbiBMYWJvdXIgRm9yY2UiLA0KICAgICAgICAgICBjb2wgPSBjKCJsaWdodGdyZWVuIiwgImxpZ2h0eWVsbG93IikpICAjIFVzZSBibHVlIGFuZCByZWQgY29sb3JzDQpgYGANCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPVRSVUV9DQpnZ3Bsb3QoZGF0YSA9IHNsZWVwX2NsZWFuZWQsIGFlcyh4ID0gaHJ3YWdlKSkgKw0KICBnZW9tX2JveHBsb3QoYWVzKGZpbGwgPSBmYWN0b3IobWFsZSwgbGFiZWxzID0gYygiRmVtYWxlIiwgIk1hbGUiKSkpKSArDQogIGxhYnMoeCA9ICJIb3VybHkgV2FnZSIpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygicHVycGxlIiwgIm9yYW5nZSIpLCANCiAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiRmVtYWxlIiwgIk1hbGUiKSwNCiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICJHZW5kZXIiKQ0KDQoNCmBgYA0KDQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9VFJVRX0NCiMgQ3JlYXRlIHRoZSBoaXN0b2dyYW0gd2l0aCBsYWJlbHMgYW5kIGNvbG9ycw0KaGlzdChzbGVlcDc1JHNsZWVwLyg2MCo3KSwgYnJlYWtzID0gMTUsDQogICAgIGNvbCA9ICJza3libHVlIiwNCiAgICAgbWFpbiA9ICJBdmVyYWdlIHRpbWUgb2Ygc2xlZXAgaW4gaG91cnMvZGF5IiwNCiAgICAgeGxhYiA9ICJTbGVlcCBEdXJhdGlvbiAoaG91cnMpIiwNCiAgICAgeWxhYiA9ICJGcmVxdWVuY3kiKQ0KDQpgYGANCg0KDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPVRSVUV9DQojIENyZWF0ZSB0aGUgYmFycGxvdCB3aXRoIGxhYmVscyBhbmQgY29sb3JzDQpiYXJwbG90KHNsZWVwNzUkaHJ3YWdlLA0KICAgICAgICBtYWluID0gIkJhcnBsb3Qgb2YgSG91cmx5IFdhZ2UgYnkgRWR1Y2F0aW9uIiwNCiAgICAgICAgeGxhYiA9ICJFZHVjYXRpb24iLA0KICAgICAgICB5bGFiID0gIkhvdXJseSBXYWdlIiwNCiAgICAgICAgYm9yZGVyID0gImJsdWUiKQ0KDQoNCmBgYA0KDQojIFN0YXRpc3RpY2FsIG1vZGVsaW5nIC0gTWlsb3N6IEdydW53YWxkDQoNCiMjIyBSZWdzdWJzZXRzDQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQoNCg0KIyBQZXJmb3JtIHJlZ3Jlc3Npb24gc3Vic2V0IHNlbGVjdGlvbg0KbW9kZWxzIDwtIHJlZ3N1YnNldHMoc2xlZXAgfiAuLCBkYXRhID0gc2xlZXBfY2xlYW5lZCwgbmJlc3QgPSAxKQ0KcGxvdChtb2RlbHMsIG1haW4gPSAiUmVncmVzc2lvbiBTdWJzZXRzIiwpDQpgYGANCg0KIyMjIE1vZGVsIDENCkZpcnN0IG1vZGVsLCB1c2luZyBtYWxlLCBzb3V0aCBhbmQgdG90d3JrLg0KDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPVRSVUV9DQptb2RlbDEgPC0gbG0oc2xlZXB+bWFsZStzb3V0aCt0b3R3cmssIGRhdGE9c2xlZXBfY2xlYW5lZCkNCnBsb3QobW9kZWwxKQ0KDQpgYGANCg0KQXZlcmFnZSByZXNpZHVhbCBvdmVyIG1lYW46DQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9VFJVRX0NCg0KbWVhbihhYnMobW9kZWwxJHJlc2lkdWFscykpL21lYW4oc2xlZXBfY2xlYW5lZCRzbGVlcCkNCmBgYA0KDQpSZXNpZHVhbHMgYXZlcmFnZSBpcyBzbWFsbGVyIHRoYW4gXH4xMCUgb2YgdGhlIHJlc3BvbnNlIHZhcmlhYmxlLg0KDQojIyMgTW9kZWwgMg0KDQpTZWNvbmQgbW9kZWwsIHVzaW5nIGVhcm5zNzQsIGdkaGx0aCwgc21zYSwgbWFsZSwgbWFyciwgc291dGgsIHRvdHdyaywNCnlyc21hcnIsIGFnZXNxLg0KDQpgYGB7ciBlY2hvPUZBTFNFLCB3YXJuaW5nPVRSVUV9DQptb2RlbDIgPC0gbG0oc2xlZXB+ZWFybnM3NCtnZGhsdGgrc21zYSttYWxlK21hcnIrc291dGgrdG90d3JrK3lyc21hcnIrYWdlc3EsIGRhdGE9c2xlZXBfY2xlYW5lZCkNCnBsb3QobW9kZWwyKQ0KDQpgYGANCg0KQXZlcmFnZSByZXNpZHVhbCBvdmVyIG1lYW46DQoNCmBgYHtyIGVjaG89RkFMU0UsIHdhcm5pbmc9VFJVRX0NCg0KbWVhbihhYnMobW9kZWwyJHJlc2lkdWFscykpL21lYW4oc2xlZXBfY2xlYW5lZCRzbGVlcCkNCmBgYA0KDQpSZXNpZHVhbHMgYXZlcmFnZSBpcyBhZ2FpbiBzbWFsbGVyIHRoYW4gXH4xMCUgb2YgdGhlIHJlc3BvbnNlIHZhcmlhYmxlLg0KDQojIyMgTW9kZWwgMw0KVGhpcmQgbW9kZWwsIHVzaW5nIHRvdHdvcmsgYW5kIGV4cGVydC4NCg0KYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1UUlVFfQ0KbW9kZWwzIDwtIGxtKHNsZWVwfnRvdHdyaytleHBlciwgZGF0YT1zbGVlcF9jbGVhbmVkKQ0KcGxvdChtb2RlbDIpDQoNCmBgYA0KDQpBdmVyYWdlIHJlc2lkdWFsIG92ZXIgbWVhbjoNCg0KYGBge3IgZWNobz1GQUxTRSwgd2FybmluZz1UUlVFfQ0KDQptZWFuKGFicyhtb2RlbDMkcmVzaWR1YWxzKSkvbWVhbihzbGVlcF9jbGVhbmVkJHNsZWVwKQ0KYGBgDQoNClJlc2lkdWFscyBhdmVyYWdlIGlzIGFnYWluIHNtYWxsZXIgdGhhbiBcfjEwJSBvZiB0aGUgcmVzcG9uc2UgdmFyaWFibGUuDQo=