dat <- na.omit(read.csv(file="https://github.com/chinwex/STA553/raw/main/w09/PresidentialElection2000To2020.csv"))
dat$county_fips <- sprintf("%05d", dat$county_fips)
votes = dat$candidatevotes
totalcountyvotes = dat$totalvotes
statedata <- dplyr::summarise(group_by(dat, year, state, state_po), sum.state = sum(candidatevotes))
totalstatevotes = statedata$sum.state

dat1 = dat
dat1$county_percent = (votes/totalcountyvotes)*100
dat1 = dat1[,-c(6,11,12)]

dat2 = dat %>%
  group_by(year, state, state_po, candidate, party) %>%
  dplyr::summarise(state_sum = sum(candidatevotes))

dat2 = dplyr::mutate(group_by(dat2, year, state, state_po), statetotal = sum(state_sum))
dat2$state_percent = ((dat2$state_sum)/dat2$statetotal)*100
dat1final <- dat1 %>%
  group_by(year,state, county_name)%>%
  filter(county_percent == max(county_percent))

dat2final <- dat2 %>%
  group_by(year,state)%>%
  filter(state_percent == max(state_percent))
write.csv(dat1final, file="C:\\Users\\echef\\Documents\\STA553\\week 9\\countysubset.csv")
write.csv(dat2final, file="C:\\Users\\echef\\Documents\\STA553\\week 9\\statesubset.csv")


LS0tDQp0aXRsZTogIkludGVyYWN0aXZlIFZpc3VhbGl6YXRpb24gd2l0aCBUYWJsZWF1Ig0KYXV0aG9yOiAiRWNoZWZ1IENoaW53ZW5kdSINCmRhdGU6ICIyMDI0LTA0LTAyIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgZmlnX3dpZHRoOiA0DQogICAgZmlnX2NhcHRpb246IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdG9jX2NvbGxhcHNlZDogeWVzDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgc21vb3RoX3Njcm9sbDogdHJ1ZQ0KICAgIHRoZW1lOiByZWFkYWJsZQ0KICAgIGZpZ19oZWlnaHQ6IDQNCiAgcGRmX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIGZpZ193aWR0aDogMw0KICAgIGZpZ19oZWlnaHQ6IDMNCiAgd29yZF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAga2VlcF9tZDogeWVzDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQpgYGB7PWh0bWx9DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KDQovKiBUYWJsZSBvZiBjb250ZW50IC0gbmF2aWdhdGlvbiAqLw0KZGl2I1RPQyBsaSB7DQogICAgbGlzdC1zdHlsZTpub25lOw0KICAgIGJhY2tncm91bmQtY29sb3I6bGlnaHRncmF5Ow0KICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOw0KICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsNCiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgICBjb2xvcjogIzc4MGMwYzsNCn0NCg0KDQovKiBUaXRsZSBmb250cyAqLw0KaDEudGl0bGUgew0KICBmb250LXNpemU6IDI0cHg7DQogIGNvbG9yOiBkYXJrYmx1ZTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCiAgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsNCn0NCmg0LmF1dGhvciB7IA0KICBmb250LXNpemU6IDE4cHg7DQogIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogbmF2eTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KaDQuZGF0ZSB7IA0KICBmb250LXNpemU6IDE4cHg7DQogIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogZGFya2JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KLyogU2VjdGlvbiBoZWFkZXJzICovDQpoMSB7DQogICAgZm9udC1zaXplOiAyMnB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgyIHsNCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDMgeyANCiAgICBmb250LXNpemU6IDE1cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDQgew0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQovKiBEZWNvcmF0aW9uIG9mIGh5cGVybGlua3MgICovDQoNCi8qIHVudmlzaXRlZCBsaW5rICovDQphOmxpbmsgew0KICBjb2xvcjogZ3JlZW47DQp9DQoNCi8qIHZpc2l0ZWQgbGluayAqLw0KYTp2aXNpdGVkIHsNCiAgY29sb3I6IHB1cnBsZTsNCn0NCg0KLyogbW91c2Ugb3ZlciBsaW5rICovDQphOmhvdmVyIHsNCiAgY29sb3I6IHJlZDsNCn0NCg0KLyogc2VsZWN0ZWQgbGluayAqLw0KYTphY3RpdmUgew0KICBjb2xvcjogeWVsbG93Ow0KfQ0KPC9zdHlsZT4NCmBgYA0KDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0KIyBjb2RlIGNodW5rIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBSIGNvZGUsIHdhcm5pbmdzLCBhbmQgb3V0cHV0IA0KIyB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQgZmlsZXMuDQpvcHRpb25zKHJlcG9zID0gbGlzdChDUkFOPSJodHRwOi8vY3Jhbi5yc3R1ZGlvLmNvbS8iKSkNCmlmICghcmVxdWlyZSgidGlkeXZlcnNlIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpDQogICBsaWJyYXJ5KHRpZHl2ZXJzZSkNCn0NCmlmICghcmVxdWlyZSgiZHBseXIiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygiZHBseXIiKQ0KICAgbGlicmFyeShkcGx5cikNCn0NCmlmICghcmVxdWlyZSgia25pdHIiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygia25pdHIiKQ0KICAgbGlicmFyeShrbml0cikNCn0NCmlmICghcmVxdWlyZSgiY293cGxvdCIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJjb3dwbG90IikNCiAgIGxpYnJhcnkoY293cGxvdCkNCn0NCmlmICghcmVxdWlyZSgibGF0ZXgyZXhwIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoImxhdGV4MmV4cCIpDQogICBsaWJyYXJ5KGxhdGV4MmV4cCkNCn0NCmlmICghcmVxdWlyZSgiZ2FwbWluZGVyIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoImdhcG1pbmRlciIpDQogICBsaWJyYXJ5KGdhcG1pbmRlcikNCn0NCmlmICghcmVxdWlyZSgicG5nIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJwbmciKSAgICAgICAgICAgICAjIEluc3RhbGwgcG5nIHBhY2thZ2UNCiAgICBsaWJyYXJ5KCJwbmciKQ0KfQ0KaWYgKCFyZXF1aXJlKCJSQ3VybCIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiUkN1cmwiKSAgICAgICAgICAgICAjIEluc3RhbGwgUkN1cmwgcGFja2FnZQ0KICAgIGxpYnJhcnkoIlJDdXJsIikNCn0NCmlmICghcmVxdWlyZSgiY29sb3VycGlja2VyIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJjb2xvdXJwaWNrZXIiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiY29sb3VycGlja2VyIikNCn0NCmlmICghcmVxdWlyZSgiZ2dhbmltYXRlIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnZ2FuaW1hdGUiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ2dhbmltYXRlIikNCn0NCmlmICghcmVxdWlyZSgiZ2lmc2tpIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnaWZza2kiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ2lmc2tpIikNCn0NCmlmICghcmVxdWlyZSgibWFnaWNrIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJtYWdpY2siKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgibWFnaWNrIikNCn0NCmlmICghcmVxdWlyZSgiZ3JEZXZpY2VzIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnckRldmljZXMiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ3JEZXZpY2VzIikNCn0NCmlmICghcmVxdWlyZSgianBlZyIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygianBlZyIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJqcGVnIikNCn0NCmlmICghcmVxdWlyZSgiVkdBTSIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiVkdBTSIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJWR0FNIikNCn0NCmlmICghcmVxdWlyZSgiTUFTUyIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiTUFTUyIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJNQVNTIikNCn0NCmlmICghcmVxdWlyZSgibm5ldCIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygibm5ldCIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJubmV0IikNCn0NCmlmICghcmVxdWlyZSgiY2x1c3RlciIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiY2x1c3RlciIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJjbHVzdGVyIikNCn0NCmlmICghcmVxdWlyZSgic3RyaW5nciIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJzdHJpbmdyIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgIGxpYnJhcnkoc3RyaW5ncikNCn0NCg0KaWYgKCFyZXF1aXJlKCJ0bSIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJ0bSIsIGRlcGVuZGVuY2llcyA9IFRSVUUpDQogICBsaWJyYXJ5KHRtKQ0KfQ0KDQppZiAoIXJlcXVpcmUoIndvcmRjbG91ZCIpKSB7DQogICBpbnN0YWxsLnBhY2thZ2VzKCJ3b3JkY2xvdWQiLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQ0KICAgbGlicmFyeSh3b3JkY2xvdWQpDQp9DQoNCmlmICghcmVxdWlyZSgiUkN1cmwiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygiUkN1cmwiLCBkZXBlbmRlbmNpZXMgPSBUUlVFKQ0KICAgbGlicmFyeShSQ3VybCkNCn0NCg0KaWYgKCFyZXF1aXJlKCJYTUwiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygiWE1MIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgIGxpYnJhcnkoWE1MKQ0KfQ0KaWYgKCFyZXF1aXJlKCJTbm93YmFsbEMiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygiU25vd2JhbGxDIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgIGxpYnJhcnkoU25vd2JhbGxDKQ0KfQ0KaWYgKCFyZXF1aXJlKCJSQ29sb3JCcmV3ZXIiKSkgew0KICAgaW5zdGFsbC5wYWNrYWdlcygiUkNvbG9yQnJld2VyIiwgZGVwZW5kZW5jaWVzID0gVFJVRSkNCiAgIGxpYnJhcnkoUkNvbG9yQnJld2VyKQ0KfQ0KaWYgKCFyZXF1aXJlKCJnZ3Bsb3QyIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImdncGxvdDIiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJnZ2FuaW1hdGUiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImdnYW5pbWF0ZSIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJnZ2FuaW1hdGUiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJncmFwaGljcyIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiZ3JhcGhpY3MiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ3JhcGhpY3MiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJnZ3JpZGdlcyIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiZ2dyaWRnZXMiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZ2dyaWRnZXMiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJwbHlyIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJwbHlyIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoInBseXIiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJnZ2lyYXBoIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJnZ2lyYXBoIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImdnaXJhcGgiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJoaWdoY2hhcnRlciIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiaGlnaGNoYXJ0ZXIiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiaGlnaGNoYXJ0ZXIiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJmb3JlY2FzdCIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiZm9yZWNhc3QiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiZm9yZWNhc3QiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJsZWFmbGV0IikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJsZWFmbGV0IikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImxlYWZsZXQiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJtYXBzIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJtYXBzIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoIm1hcHMiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJodG1sdG9vbHMiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImh0bWx0b29scyIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJodG1sdG9vbHMiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJodG1sd2lkZ2V0cyIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygiaHRtbHdpZGdldHMiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiaHRtbHdpZGdldHMiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJsZWFmbGVnZW5kIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJsZWFmbGVnZW5kIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImxlYWZsZWdlbmQiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJnZW9qc29uaW8iKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImdlb2pzb25pbyIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJnZW9qc29uaW8iKQ0KfQ0KaWYgKCFyZXF1aXJlKCJzdHJpbmdpIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJzdHJpbmdpIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoInN0cmluZ2kiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJSQ29sb3JCcmV3ZXIiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoIlJDb2xvckJyZXdlciIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJSQ29sb3JCcmV3ZXIiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJ0aWdyaXMiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoInRpZ3JpcyIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJ0aWdyaXMiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJsZWFmcG9wIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJsZWFmcG9wIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImxlYWZwb3AiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJsZWFmZW0iKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImxlYWZlbSIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJsZWFmZW0iKQ0KfQ0KaWYgKCFyZXF1aXJlKCJ0bWFwIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJ0bWFwIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoInRtYXAiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJ0bWFwdG9vbHMiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoInRtYXB0b29scyIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJ0bWFwdG9vbHMiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJ3ZWJzaG90MiIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygid2Vic2hvdDIiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgid2Vic2hvdDIiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJzZiIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygic2YiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgic2YiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJ0ZXJyYSIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygidGVycmEiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgidGVycmEiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJsZWFmcG9wIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJsZWFmcG9wIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoImxlYWZwb3AiKQ0KfQ0KaWYgKCFyZXF1aXJlKCJtYXB2aWV3IikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJtYXB2aWV3IikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoIm1hcHZpZXciKQ0KfQ0KaWYgKCFyZXF1aXJlKCJzcERhdGEiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoInNwRGF0YSIpICAgICAgICAgICAgICANCiAgICBsaWJyYXJ5KCJzcERhdGEiKQ0KfQ0KaWYoIXJlcXVpcmUoImFuaW1hdGlvbiIpKXsNCiAgaW5zdGFsbC5wYWNrYWdlcygiYW5pbWF0aW9uIikNCiAgbGlicmFyeShhbmltYXRpb24pDQp9DQppZighcmVxdWlyZSgiZ2dtYXAiKSl7DQogIGluc3RhbGwucGFja2FnZXMoImdnbWFwIikNCiAgbGlicmFyeShnZ21hcCkNCn0NCmlmKCFyZXF1aXJlKCJodG1sVGFibGUiKSl7DQogIGluc3RhbGwucGFja2FnZXMoImh0bWxUYWJsZSIpDQogIGxpYnJhcnkoaHRtbFRhYmxlKQ0KfQ0KaWYoIXJlcXVpcmUoIm1hZ3JpdHRyIikpew0KICBpbnN0YWxsLnBhY2thZ2VzKCJtYWdyaXR0ciIpDQogIGxpYnJhcnkobWFncml0dHIpDQp9DQppZighcmVxdWlyZSgid2Vic2hvdCIpKXsNCiAgaW5zdGFsbC5wYWNrYWdlcygid2Vic2hvdCIpDQogIGxpYnJhcnkod2Vic2hvdCkNCn0NCmlmKCFyZXF1aXJlKCJ2aXJpZGlzIikpew0KICBpbnN0YWxsLnBhY2thZ2VzKCJ2aXJpZGlzIikNCiAgbGlicmFyeSh2aXJpZGlzKQ0KfQ0KaWYgKCFyZXF1aXJlKCJsZWFmZW0iKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImxlYWZlbSIpDQpsaWJyYXJ5KCJsZWFmZW0iKQ0KfQ0KaWYgKCFyZXF1aXJlKCJzcERhdGFMYXJnZSIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygic3BEYXRhTGFyZ2UiLCByZXBvcyA9ICJodHRwczovL2dlb2NvbXByLnItdW5pdmVyc2UuZGV2IikNCmxpYnJhcnkoInNwRGF0YUxhcmdlIikNCn0NCmlmICghcmVxdWlyZSgibGVhZmxldC5leHRyYXMiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoImxlYWZsZXQuZXh0cmFzIikNCmxpYnJhcnkoImxlYWZsZXQuZXh0cmFzIikNCn0NCmlmICghcmVxdWlyZSgibGF0dGljZSIpKSB7DQogICAgaW5zdGFsbC5wYWNrYWdlcygibGF0dGljZSIpDQpsaWJyYXJ5KCJsYXR0aWNlIikNCn0NCmlmICghcmVxdWlyZSgic3AiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoInNwIikNCmxpYnJhcnkoInNwIikNCn0NCmlmICghcmVxdWlyZSgicGFuZGVyIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJwYW5kZXIiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgicGFuZGVyIikNCn0NCmlmICghcmVxdWlyZSgicmxpc3QiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoInJsaXN0IikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoInJsaXN0IikNCn0NCmlmICghcmVxdWlyZSgiRFQiKSkgew0KICAgIGluc3RhbGwucGFja2FnZXMoIkRUIikgICAgICAgICAgICAgIA0KICAgIGxpYnJhcnkoIkRUIikNCn0NCmlmICghcmVxdWlyZSgiY3Jvc3N0YWxrIikpIHsNCiAgICBpbnN0YWxsLnBhY2thZ2VzKCJjcm9zc3RhbGsiKSAgICAgICAgICAgICAgDQogICAgbGlicmFyeSgiY3Jvc3N0YWxrIikNCn0NCmlmICghcmVxdWlyZSgiU3RhdDJEYXRhIikpIHsNCiAgIGluc3RhbGwucGFja2FnZXMoIlN0YXQyRGF0YSIpDQogICBsaWJyYXJ5KFN0YXQyRGF0YSkNCn0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFLCAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UsICAgDQogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gVFJVRSwgICANCiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IE5BKQ0KYGBgDQoNCg0KYGBge3J9DQpkYXQgPC0gbmEub21pdChyZWFkLmNzdihmaWxlPSJodHRwczovL2dpdGh1Yi5jb20vY2hpbndleC9TVEE1NTMvcmF3L21haW4vdzA5L1ByZXNpZGVudGlhbEVsZWN0aW9uMjAwMFRvMjAyMC5jc3YiKSkNCmRhdCRjb3VudHlfZmlwcyA8LSBzcHJpbnRmKCIlMDVkIiwgZGF0JGNvdW50eV9maXBzKQ0KYGBgDQoNCmBgYHtyfQ0Kdm90ZXMgPSBkYXQkY2FuZGlkYXRldm90ZXMNCnRvdGFsY291bnR5dm90ZXMgPSBkYXQkdG90YWx2b3Rlcw0Kc3RhdGVkYXRhIDwtIGRwbHlyOjpzdW1tYXJpc2UoZ3JvdXBfYnkoZGF0LCB5ZWFyLCBzdGF0ZSwgc3RhdGVfcG8pLCBzdW0uc3RhdGUgPSBzdW0oY2FuZGlkYXRldm90ZXMpKQ0KdG90YWxzdGF0ZXZvdGVzID0gc3RhdGVkYXRhJHN1bS5zdGF0ZQ0KDQpkYXQxID0gZGF0DQpkYXQxJGNvdW50eV9wZXJjZW50ID0gKHZvdGVzL3RvdGFsY291bnR5dm90ZXMpKjEwMA0KZGF0MSA9IGRhdDFbLC1jKDYsMTEsMTIpXQ0KDQpkYXQyID0gZGF0ICU+JQ0KICBncm91cF9ieSh5ZWFyLCBzdGF0ZSwgc3RhdGVfcG8sIGNhbmRpZGF0ZSwgcGFydHkpICU+JQ0KICBkcGx5cjo6c3VtbWFyaXNlKHN0YXRlX3N1bSA9IHN1bShjYW5kaWRhdGV2b3RlcykpDQoNCmRhdDIgPSBkcGx5cjo6bXV0YXRlKGdyb3VwX2J5KGRhdDIsIHllYXIsIHN0YXRlLCBzdGF0ZV9wbyksIHN0YXRldG90YWwgPSBzdW0oc3RhdGVfc3VtKSkNCmRhdDIkc3RhdGVfcGVyY2VudCA9ICgoZGF0MiRzdGF0ZV9zdW0pL2RhdDIkc3RhdGV0b3RhbCkqMTAwDQpgYGANCg0KDQpgYGB7cn0NCg0KZGF0MWZpbmFsIDwtIGRhdDEgJT4lDQogIGdyb3VwX2J5KHllYXIsc3RhdGUsIGNvdW50eV9uYW1lKSU+JQ0KICBmaWx0ZXIoY291bnR5X3BlcmNlbnQgPT0gbWF4KGNvdW50eV9wZXJjZW50KSkNCg0KZGF0MmZpbmFsIDwtIGRhdDIgJT4lDQogIGdyb3VwX2J5KHllYXIsc3RhdGUpJT4lDQogIGZpbHRlcihzdGF0ZV9wZXJjZW50ID09IG1heChzdGF0ZV9wZXJjZW50KSkNCiAgDQoNCmBgYA0KDQoNCmBgYHtyfQ0Kd3JpdGUuY3N2KGRhdDFmaW5hbCwgZmlsZT0iQzpcXFVzZXJzXFxlY2hlZlxcRG9jdW1lbnRzXFxTVEE1NTNcXHdlZWsgOVxcY291bnR5c3Vic2V0LmNzdiIpDQp3cml0ZS5jc3YoZGF0MmZpbmFsLCBmaWxlPSJDOlxcVXNlcnNcXGVjaGVmXFxEb2N1bWVudHNcXFNUQTU1M1xcd2VlayA5XFxzdGF0ZXN1YnNldC5jc3YiKQ0KYGBgDQoNClwNCg0KPHRhYmxlIGJvcmRlciA9IDAgYm9yZGVyY29sb3I9ImRhcmtncmVlbiIgYmdjb2xvcj0nI2Y2ZjZmNicgIHdpZHRoPTEwMCUgIGFsaWduID0gY2VudGVyPg0KPHRyPg0KPHRkPg0KPGRpdiBjbGFzcz0ndGFibGVhdVBsYWNlaG9sZGVyJyBpZD0ndml6MTcxMjA0NTU0NjQ5NScgc3R5bGU9J3Bvc2l0aW9uOiByZWxhdGl2ZSc+DQo8bm9zY3JpcHQ+PGEgaHJlZj0nIyc+PGltZyBhbHQ9JzIwMDAgdG8gMjAyMCBQcmVzaWRlbnRpYWwgRWxlY3Rpb24gUmVzdWx0cyAgJyBzcmM9J2h0dHBzOiYjNDc7JiM0NztwdWJsaWMudGFibGVhdS5jb20mIzQ3O3N0YXRpYyYjNDc7aW1hZ2VzJiM0NztQSCYjNDc7UEhZUzJLRDZZJiM0NzsxX3Jzcy5wbmcnIHN0eWxlPSdib3JkZXI6IG5vbmUnIC8+DQo8L2E+DQo8L25vc2NyaXB0Pg0KPG9iamVjdCBjbGFzcz0ndGFibGVhdVZpeicgIHN0eWxlPSdkaXNwbGF5Om5vbmU7Jz4NCjxwYXJhbSBuYW1lPSdob3N0X3VybCcgdmFsdWU9J2h0dHBzJTNBJTJGJTJGcHVibGljLnRhYmxlYXUuY29tJTJGJyAvPiANCjxwYXJhbSBuYW1lPSdlbWJlZF9jb2RlX3ZlcnNpb24nIHZhbHVlPSczJyAvPiANCjxwYXJhbSBuYW1lPSdwYXRoJyB2YWx1ZT0nc2hhcmVkJiM0NztQSFlTMktENlknIC8+IA0KPHBhcmFtIG5hbWU9J3Rvb2xiYXInIHZhbHVlPSd5ZXMnIC8+DQo8cGFyYW0gbmFtZT0nc3RhdGljX2ltYWdlJyB2YWx1ZT0naHR0cHM6JiM0NzsmIzQ3O3B1YmxpYy50YWJsZWF1LmNvbSYjNDc7c3RhdGljJiM0NztpbWFnZXMmIzQ3O1BIJiM0NztQSFlTMktENlkmIzQ3OzEucG5nJyAvPiANCjxwYXJhbSBuYW1lPSdhbmltYXRlX3RyYW5zaXRpb24nIHZhbHVlPSd5ZXMnIC8+DQo8cGFyYW0gbmFtZT0nZGlzcGxheV9zdGF0aWNfaW1hZ2UnIHZhbHVlPSd5ZXMnIC8+DQo8cGFyYW0gbmFtZT0nZGlzcGxheV9zcGlubmVyJyB2YWx1ZT0neWVzJyAvPg0KPHBhcmFtIG5hbWU9J2Rpc3BsYXlfb3ZlcmxheScgdmFsdWU9J3llcycgLz4NCjxwYXJhbSBuYW1lPSdkaXNwbGF5X2NvdW50JyB2YWx1ZT0neWVzJyAvPg0KPHBhcmFtIG5hbWU9J2xhbmd1YWdlJyB2YWx1ZT0nZW4tR0InIC8+DQo8cGFyYW0gbmFtZT0nZmlsdGVyJyB2YWx1ZT0ncHVibGlzaD15ZXMnIC8+DQo8L29iamVjdD4NCjwvZGl2PiAgICAgICAgICAgICAgICANCjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4gICAgICAgICAgICAgICAgICAgIA0KdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndml6MTcxMjA0NTU0NjQ5NScpOyAgICAgICAgICAgICAgICAgICAgDQp2YXIgdml6RWxlbWVudCA9IGRpdkVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29iamVjdCcpWzBdOyAgICAgICAgICAgICAgICAgICAgDQp2aXpFbGVtZW50LnN0eWxlLndpZHRoPScxMDAlJzsNCnZpekVsZW1lbnQuc3R5bGUuaGVpZ2h0PShkaXZFbGVtZW50Lm9mZnNldFdpZHRoKjAuNzUpKydweCc7ICAgICAgICAgICAgICAgICAgICANCnZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7ICAgICAgICAgICAgICAgICAgICANCnNjcmlwdEVsZW1lbnQuc3JjID0gJ2h0dHBzOi8vcHVibGljLnRhYmxlYXUuY29tL2phdmFzY3JpcHRzL2FwaS92aXpfdjEuanMnOyAgICAgICAgICAgICAgICAgICAgdml6RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzY3JpcHRFbGVtZW50LCB2aXpFbGVtZW50KTsgICAgICAgICAgICAgICAgDQo8L3NjcmlwdD4NCjwvdGQ+DQo8L3RyPg0KPC90YWJsZT4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg==