By: Maria Isabel Olivera

I. Introduction

While policymakers around the country argue over the validity of climate change, municipalities of varying sizes and wealth are attempting to promote sustainable practices within their communities. Policies which emphasis sustainability, however, are often time expensive, which creates challenges for smaller and less affluent municipalities. This paper aims to see if municipalities can encourage individual residents to adopt sustainable practices through less expensive policies which promote education.

II. Methodology

I created my dataset by compiling data from various datasets available on Open Data NY. The dependent variable I have selected is the number of electric car owners in a county (ElectC), which is a countinuous variable. Using the zelig count model I first looked at the effects of county per capita income (Income) and population density (Pop) on the number of electric car owners in a county. Income is also a countinous variable in which income is measured by the 1,000’s while Pop is an ordinal variable in which “1” represents counties with less than 250,000 residents and “5” represents counties with over a million residents. The results of the estimation will serve as my baseline. I expect to see that wealthier and larger counties will have a greater number of electric cars.

Once establishing my baseline values, I will then add my “education” variables and run simulations to see how these variables influence electric car ownership in smaller and less affluent counties.The two educational variables I have selected are:

  1. Edu = The percentage of county residents who are college graduates

  2. FMarket = Number of Farmers Market in a county

    Edu is a categorical variable in which counties were determined to have either “Low”, “Med”, or “High” education level determined by what percentage of residents had a college degree. Less than 20 percent was considered “Low” and more than 35 percent was considered “High”. Since education and income go hand in hand I’ve paired this variable with population instead and analyzed the different in electric car ownership amongst different sized county at different educational levels. The number of farmers markets in a county was considered an “educational” variable since farmers markets serve as centers of sustainable education. They provide information on sustainable agricultural practices and offer services such as local composting and textile recycling which may not be readily available in many counties. Farmers markets also have the added benefit that they are extremely affordable for municipalities to adopt and I therefore decided to pair this variable with income and measured the first differences at varying quantiles of income and markets.

III. Results

A. Establishing the Baseline:

Income, Population Density and Electric Car Ownership
library(Zelig)
NY_Climate1$Pop <- as.factor(NY_Climate1$Pop)
NY_Climate1$Edu <- as.factor(NY_Climate1$Edu)
z.es <- zelig(ElecC ~ Income + Pop, model = "poisson", data = NY_Climate1, cite = F) 
summary(z.es)
Model: 

Call:
z5$zelig(formula = ElecC ~ Income + Pop, data = NY_Climate1)

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-12.918   -5.563   -2.563    1.530   16.273  

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.4636702  0.0245372  141.16   <2e-16
Income      0.0083260  0.0003124   26.65   <2e-16
Pop2        1.7130944  0.0357485   47.92   <2e-16
Pop4        2.8413714  0.0318472   89.22   <2e-16
Pop5        3.1178336  0.0279206  111.67   <2e-16

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 26715.2  on 61  degrees of freedom
Residual deviance:  2844.9  on 57  degrees of freedom
AIC: 3211.6

Number of Fisher Scoring iterations: 5

Next step: Use 'setx' method

i. Electric Car Ownership and Income

i.range = min(NY_Climate1$Income):max(NY_Climate1$Income)
z.es$setrange(Income = i.range)
z.es$sim()
z.es$graph()

ii. Electric Car Ownership and Population Density

library(Zelig)
NY_Climate1$Pop <- as.factor(NY_Climate1$Pop)
NY_Climate1$Edu <- as.factor(NY_Climate1$Edu)
z.ep <-zelig(ElecC ~ Pop + Edu, model = "poisson", data = NY_Climate,cite = F)
z.ep$setx(Pop = "1")
z.ep$setx1(Pop = "5")
z.ep$sim()
plot(z.ep)

fd <- z.ep$get_qi(xvalue="x1", qi="fd")
summary(fd)
       V1       
 Min.   :764.7  
 1st Qu.:805.2  
 Median :814.4  
 Mean   :814.7  
 3rd Qu.:824.2  
 Max.   :861.3  

As expected wealthier and larger counties are more likely to have higher rates of electric car ownership. There is a very strong positive correlation between income and electric car ownership. As the graph indicates, as income doubles, electric car ownership also nearly doubles. Considering the price difference between conventional cars and electric cars, this does not come as a surprise. With regards to population, we once again see a storng positive correlation with the simulation revealing a mean difference of over 800 electric cars between the lowest population level and the highest population level.

B. Introducing Education

i. Difference in Electric car ownership by Population Density and Education Level

library(Zelig)
NY_Climate1$Pop <- as.factor(NY_Climate1$Pop)
NY_Climate1$Edu <- as.factor(NY_Climate1$Edu)
z.epl <-zelig(ElecC ~ Pop + Edu, model = "poisson", data = NY_Climate1, cite = F)
z.epl$setx(Pop = "1", Edu = "Low")
z.epl$setx1(Pop = "1", Edu = "High")
z.epl$sim()
fd <- z.epl$get_qi(xvalue="x1", qi="fd")
z.epm <-zelig(ElecC ~ Pop + Edu, model = "poisson", data = NY_Climate1,
             cite = F)
z.epm$setx(Pop = "2", Edu = "Low")
z.epm$setx1(Pop = "2", Edu = "High")
z.epm$sim()
fd <- z.epm$get_qi(xvalue="x1", qi="fd")
z.eph <-zelig(ElecC ~ Pop + Edu, model = "poisson", data = NY_Climate,
             cite = F)
z.eph$setx(Pop = "5", Edu = "Low")
z.eph$setx1(Pop = "5", Edu = "High")
z.eph$sim()
fd <- z.eph$get_qi(xvalue="x1", qi="fd")
d1 <- z.epl$get_qi(xvalue="x1", qi="fd")
d2 <- z.epm$get_qi(xvalue="x1", qi="fd")
d3 <- z.eph$get_qi(xvalue="x1", qi="fd")
dfd <- as.data.frame(cbind(d1, d2, d3))
head(dfd)
library(tidyr)
z.epa<- dfd %>% 
  gather(Edu, simv, 1:3)
library(dplyr)
z.epa %>% 
  group_by(Edu) %>% 
  summarise(mean = mean(simv), sd = sd(simv))
library(ggplot2)
ggplot(z.epa, aes(simv)) + geom_histogram() + facet_grid(~Edu)

The following simulations indicates that education has a significant effect on electric car ownership at all population levels. In Smaller communities with more highly educated residents the mean difference in car ownership is around 40. While this may seem unimpressive considering that some of NY state’s smaller counties have as little as 5,000 residents, this is a considerable difference. The significance of this difference is more clearly evident in the 3 plot graphs.

C. Difference in Electric Car Ownership by Income and Farmers Market

library(Zelig)
z.efl <- zelig(ElecC ~ Income + FMarket, model = "poisson", data = NY_Climate1, cite = F) 
z.efl$setx(Income = quantile(NY_Climate1$Income, .25), 
           FMarket = quantile(NY_Climate1$FMarket, .25))
z.efl$setx1(Income = quantile(NY_Climate1$Income, .25), 
           FMarket = quantile(NY_Climate1$FMarket, .75))
z.efl$sim()
fd <- z.efl$get_qi(xvalue="x1", qi="fd")
z.efm <- zelig(ElecC ~ Income + FMarket, model = "poisson", data = NY_Climate1, cite = F) 
z.efm$setx(Income = quantile(NY_Climate1$Income, .50), 
           FMarket = quantile(NY_Climate1$FMarket, .25))
z.efm$setx1(Income = quantile(NY_Climate1$Income, .50), 
           FMarket = quantile(NY_Climate1$FMarket, .75))
z.efm$sim()
fd <- z.efm$get_qi(xvalue="x1", qi="fd")
z.efh <- zelig(ElecC ~ Income + FMarket, model = "poisson", data = NY_Climate1, cite = F) 
z.efh$setx(Income = quantile(NY_Climate1$Income, .75), 
           FMarket = quantile(NY_Climate1$FMarket, .25))
z.efh$setx1(Income = quantile(NY_Climate1$Income, .75), 
           FMarket = quantile(NY_Climate1$FMarket, .75))
z.efh$sim()
fd <- z.efh$get_qi(xvalue="x1", qi="fd")
f1 <- z.efl$get_qi(xvalue="x1", qi="fd")
f2 <- z.efm$get_qi(xvalue="x1", qi="fd")
f3 <- z.efh$get_qi(xvalue="x1", qi="fd")
ffd <- as.data.frame(cbind(f1, f2, f3))
head(ffd)

These plot graph clearly show the effect that farmers market have on car ownership levels in counties of varying income levels. While factoring in differences in the number of farmer’s markets in a county, the mean difference in car ownership levels in those counties who make up the lowest income quantile is slightly over 25. This compared to a mean difference of slightly over 28 in the highest income quantile. Considering the results of the first simulation which looked at the relationship between income and electric car ownership, the presence of farmers markets appears to encourage higher levels of car ownership in less affluent counties.

IV. Conclusion

Farmers market and higher education are essential and effective tools at encouraging sustainable practices and behaviors in all communities regardless of size or wealth. Promoting these policies are within the fiscal means of even the least affluent of communities. Small investments in education can have a large impact on the sustainability of communities throught that state and country.

LS0tDQp0aXRsZTogIkVkdWNhdGlvbiBhbmQgU3VzdGFpbmFiaWxpdHkiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KQnk6IE1hcmlhIElzYWJlbCBPbGl2ZXJhDQoNCg0KIyMgSS4gSW50cm9kdWN0aW9uIA0KDQogIFdoaWxlIHBvbGljeW1ha2VycyBhcm91bmQgdGhlIGNvdW50cnkgYXJndWUgb3ZlciB0aGUgdmFsaWRpdHkgb2YgY2xpbWF0ZSBjaGFuZ2UsIG11bmljaXBhbGl0aWVzIG9mIHZhcnlpbmcgc2l6ZXMgYW5kIHdlYWx0aCBhcmUgYXR0ZW1wdGluZyB0byBwcm9tb3RlIHN1c3RhaW5hYmxlIHByYWN0aWNlcyB3aXRoaW4gdGhlaXIgY29tbXVuaXRpZXMuIFBvbGljaWVzIHdoaWNoIGVtcGhhc2lzIHN1c3RhaW5hYmlsaXR5LCBob3dldmVyLCBhcmUgb2Z0ZW4gdGltZSBleHBlbnNpdmUsIHdoaWNoIGNyZWF0ZXMgY2hhbGxlbmdlcyBmb3Igc21hbGxlciBhbmQgbGVzcyBhZmZsdWVudCBtdW5pY2lwYWxpdGllcy4gVGhpcyBwYXBlciBhaW1zIHRvIHNlZSBpZiBtdW5pY2lwYWxpdGllcyBjYW4gZW5jb3VyYWdlIGluZGl2aWR1YWwgcmVzaWRlbnRzIHRvIGFkb3B0IHN1c3RhaW5hYmxlIHByYWN0aWNlcyB0aHJvdWdoIGxlc3MgZXhwZW5zaXZlIHBvbGljaWVzIHdoaWNoIHByb21vdGUgZWR1Y2F0aW9uLg0KICANCiMjIElJLiBNZXRob2RvbG9neQ0KDQogIEkgY3JlYXRlZCBteSBkYXRhc2V0IGJ5IGNvbXBpbGluZyBkYXRhIGZyb20gdmFyaW91cyBkYXRhc2V0cyBhdmFpbGFibGUgb24gT3BlbiBEYXRhIE5ZLiBUaGUgZGVwZW5kZW50IHZhcmlhYmxlIEkgaGF2ZSBzZWxlY3RlZCBpcyB0aGUgbnVtYmVyIG9mIGVsZWN0cmljIGNhciBvd25lcnMgaW4gYSBjb3VudHkgKEVsZWN0QyksIHdoaWNoIGlzIGEgY291bnRpbnVvdXMgdmFyaWFibGUuIFVzaW5nIHRoZSB6ZWxpZyBjb3VudCBtb2RlbCBJIGZpcnN0IGxvb2tlZCBhdCB0aGUgZWZmZWN0cyBvZiBjb3VudHkgcGVyIGNhcGl0YSBpbmNvbWUgKEluY29tZSkgYW5kIHBvcHVsYXRpb24gZGVuc2l0eSAoUG9wKSBvbiB0aGUgbnVtYmVyIG9mIGVsZWN0cmljIGNhciBvd25lcnMgaW4gYSBjb3VudHkuIEluY29tZSBpcyBhbHNvIGEgY291bnRpbm91cyB2YXJpYWJsZSBpbiB3aGljaCBpbmNvbWUgaXMgbWVhc3VyZWQgYnkgdGhlIDEsMDAwJ3Mgd2hpbGUgUG9wIGlzIGFuIG9yZGluYWwgdmFyaWFibGUgaW4gd2hpY2ggIjEiIHJlcHJlc2VudHMgY291bnRpZXMgd2l0aCBsZXNzIHRoYW4gMjUwLDAwMCByZXNpZGVudHMgYW5kICI1IiByZXByZXNlbnRzIGNvdW50aWVzIHdpdGggb3ZlciBhIG1pbGxpb24gcmVzaWRlbnRzLiBUaGUgcmVzdWx0cyBvZiB0aGUgZXN0aW1hdGlvbiB3aWxsIHNlcnZlIGFzIG15ICBiYXNlbGluZS4gSSBleHBlY3QgdG8gc2VlIHRoYXQgd2VhbHRoaWVyIGFuZCBsYXJnZXIgY291bnRpZXMgd2lsbCBoYXZlIGEgZ3JlYXRlciBudW1iZXIgb2YgZWxlY3RyaWMgY2Fycy4gDQogIA0KICBPbmNlIGVzdGFibGlzaGluZyBteSBiYXNlbGluZSB2YWx1ZXMsIEkgd2lsbCB0aGVuIGFkZCBteSAiZWR1Y2F0aW9uIiB2YXJpYWJsZXMgYW5kIHJ1biBzaW11bGF0aW9ucyB0byBzZWUgaG93IHRoZXNlIHZhcmlhYmxlcyBpbmZsdWVuY2UgZWxlY3RyaWMgY2FyIG93bmVyc2hpcCBpbiBzbWFsbGVyIGFuZCBsZXNzIGFmZmx1ZW50IGNvdW50aWVzLlRoZSB0d28gZWR1Y2F0aW9uYWwgdmFyaWFibGVzIEkgaGF2ZSBzZWxlY3RlZCBhcmU6DQogIA0KIDEuIEVkdSA9IFRoZSBwZXJjZW50YWdlIG9mIGNvdW50eSByZXNpZGVudHMgd2hvIGFyZSBjb2xsZWdlICAgICBncmFkdWF0ZXMNCiANCiAyLiBGTWFya2V0ID0gTnVtYmVyIG9mIEZhcm1lcnMgTWFya2V0IGluIGEgY291bnR5DQogICAgDQogICAgRWR1IGlzIGEgY2F0ZWdvcmljYWwgdmFyaWFibGUgaW4gd2hpY2ggY291bnRpZXMgd2VyZSBkZXRlcm1pbmVkIHRvIGhhdmUgZWl0aGVyICJMb3ciLCAiTWVkIiwgb3IgIkhpZ2giIGVkdWNhdGlvbiBsZXZlbCBkZXRlcm1pbmVkIGJ5IHdoYXQgcGVyY2VudGFnZSBvZiByZXNpZGVudHMgaGFkIGEgY29sbGVnZSBkZWdyZWUuIExlc3MgdGhhbiAyMCBwZXJjZW50IHdhcyBjb25zaWRlcmVkICJMb3ciIGFuZCBtb3JlIHRoYW4gMzUgcGVyY2VudCB3YXMgY29uc2lkZXJlZCAiSGlnaCIuIFNpbmNlIGVkdWNhdGlvbiBhbmQgaW5jb21lIGdvIGhhbmQgaW4gaGFuZCBJJ3ZlIHBhaXJlZCB0aGlzIHZhcmlhYmxlIHdpdGggcG9wdWxhdGlvbiBpbnN0ZWFkIGFuZCBhbmFseXplZCB0aGUgZGlmZmVyZW50IGluIGVsZWN0cmljIGNhciBvd25lcnNoaXAgYW1vbmdzdCBkaWZmZXJlbnQgc2l6ZWQgY291bnR5IGF0IGRpZmZlcmVudCBlZHVjYXRpb25hbCBsZXZlbHMuDQogICAgVGhlIG51bWJlciBvZiBmYXJtZXJzIG1hcmtldHMgaW4gYSBjb3VudHkgd2FzIGNvbnNpZGVyZWQgYW4gImVkdWNhdGlvbmFsIiB2YXJpYWJsZSBzaW5jZSBmYXJtZXJzIG1hcmtldHMgc2VydmUgYXMgY2VudGVycyBvZiBzdXN0YWluYWJsZSBlZHVjYXRpb24uIFRoZXkgcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBzdXN0YWluYWJsZSBhZ3JpY3VsdHVyYWwgcHJhY3RpY2VzIGFuZCBvZmZlciBzZXJ2aWNlcyBzdWNoIGFzIGxvY2FsIGNvbXBvc3RpbmcgYW5kIHRleHRpbGUgcmVjeWNsaW5nIHdoaWNoIG1heSBub3QgYmUgcmVhZGlseSBhdmFpbGFibGUgaW4gbWFueSBjb3VudGllcy4gRmFybWVycyBtYXJrZXRzIGFsc28gaGF2ZSB0aGUgYWRkZWQgYmVuZWZpdCB0aGF0IHRoZXkgYXJlIGV4dHJlbWVseSBhZmZvcmRhYmxlIGZvciBtdW5pY2lwYWxpdGllcyB0byBhZG9wdCBhbmQgSSB0aGVyZWZvcmUgZGVjaWRlZCB0byBwYWlyIHRoaXMgdmFyaWFibGUgd2l0aCBpbmNvbWUgYW5kIG1lYXN1cmVkIHRoZSBmaXJzdCBkaWZmZXJlbmNlcyBhdCB2YXJ5aW5nIHF1YW50aWxlcyBvZiBpbmNvbWUgYW5kIG1hcmtldHMuDQogICAgDQojIyBJSUkuIFJlc3VsdHMNCg0KIyMjICBBLiBFc3RhYmxpc2hpbmcgdGhlIEJhc2VsaW5lOg0KIyMjIyMgSW5jb21lLCBQb3B1bGF0aW9uIERlbnNpdHkgYW5kIEVsZWN0cmljIENhciBPd25lcnNoaXANCg0KDQpgYGB7cn0NCmxpYnJhcnkoWmVsaWcpDQoNCk5ZX0NsaW1hdGUxJFBvcCA8LSBhcy5mYWN0b3IoTllfQ2xpbWF0ZTEkUG9wKQ0KTllfQ2xpbWF0ZTEkRWR1IDwtIGFzLmZhY3RvcihOWV9DbGltYXRlMSRFZHUpDQp6LmVzIDwtIHplbGlnKEVsZWNDIH4gSW5jb21lICsgUG9wLCBtb2RlbCA9ICJwb2lzc29uIiwgZGF0YSA9IE5ZX0NsaW1hdGUxLCBjaXRlID0gRikgDQpzdW1tYXJ5KHouZXMpDQpgYGANCiMjIyMgICBpLiBFbGVjdHJpYyBDYXIgT3duZXJzaGlwIGFuZCBJbmNvbWUNCmBgYHtyIGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTV9DQppLnJhbmdlID0gbWluKE5ZX0NsaW1hdGUxJEluY29tZSk6bWF4KE5ZX0NsaW1hdGUxJEluY29tZSkNCnouZXMkc2V0cmFuZ2UoSW5jb21lID0gaS5yYW5nZSkNCnouZXMkc2ltKCkNCnouZXMkZ3JhcGgoKQ0KYGBgDQojIyMjICAgaWkuICBFbGVjdHJpYyBDYXIgT3duZXJzaGlwIGFuZCBQb3B1bGF0aW9uIERlbnNpdHkNCmBgYHtyIGZpZy5oZWlnaHQ9NSwgZmlnLndpZHRoPTV9DQpsaWJyYXJ5KFplbGlnKQ0KTllfQ2xpbWF0ZTEkUG9wIDwtIGFzLmZhY3RvcihOWV9DbGltYXRlMSRQb3ApDQpOWV9DbGltYXRlMSRFZHUgPC0gYXMuZmFjdG9yKE5ZX0NsaW1hdGUxJEVkdSkNCnouZXAgPC16ZWxpZyhFbGVjQyB+IFBvcCArIEVkdSwgbW9kZWwgPSAicG9pc3NvbiIsIGRhdGEgPSBOWV9DbGltYXRlLGNpdGUgPSBGKQ0Kei5lcCRzZXR4KFBvcCA9ICIxIikNCnouZXAkc2V0eDEoUG9wID0gIjUiKQ0Kei5lcCRzaW0oKQ0KcGxvdCh6LmVwKQ0KDQpmZCA8LSB6LmVwJGdldF9xaSh4dmFsdWU9IngxIiwgcWk9ImZkIikNCnN1bW1hcnkoZmQpDQoNCmBgYA0KICBBcyBleHBlY3RlZCB3ZWFsdGhpZXIgYW5kIGxhcmdlciBjb3VudGllcyBhcmUgbW9yZSBsaWtlbHkgdG8gaGF2ZSBoaWdoZXIgcmF0ZXMgb2YgZWxlY3RyaWMgY2FyIG93bmVyc2hpcC4gVGhlcmUgaXMgYSB2ZXJ5IHN0cm9uZyBwb3NpdGl2ZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIGluY29tZSBhbmQgZWxlY3RyaWMgY2FyIG93bmVyc2hpcC4gQXMgdGhlIGdyYXBoIGluZGljYXRlcywgYXMgaW5jb21lIGRvdWJsZXMsIGVsZWN0cmljIGNhciBvd25lcnNoaXAgYWxzbyBuZWFybHkgZG91Ymxlcy4gQ29uc2lkZXJpbmcgdGhlIHByaWNlIGRpZmZlcmVuY2UgYmV0d2VlbiBjb252ZW50aW9uYWwgY2FycyBhbmQgZWxlY3RyaWMgY2FycywgdGhpcyBkb2VzIG5vdCBjb21lIGFzIGEgc3VycHJpc2UuDQogIFdpdGggcmVnYXJkcyB0byBwb3B1bGF0aW9uLCB3ZSBvbmNlIGFnYWluIHNlZSBhIHN0b3JuZyBwb3NpdGl2ZSBjb3JyZWxhdGlvbiB3aXRoIHRoZSBzaW11bGF0aW9uIHJldmVhbGluZyBhIG1lYW4gZGlmZmVyZW5jZSBvZiBvdmVyIDgwMCBlbGVjdHJpYyBjYXJzIGJldHdlZW4gdGhlIGxvd2VzdCBwb3B1bGF0aW9uIGxldmVsIGFuZCB0aGUgaGlnaGVzdCBwb3B1bGF0aW9uIGxldmVsLiANCg0KIyMjIEIuIEludHJvZHVjaW5nIEVkdWNhdGlvbiANCg0KIyMjIyBpLiBEaWZmZXJlbmNlIGluIEVsZWN0cmljIGNhciBvd25lcnNoaXAgYnkgUG9wdWxhdGlvbiBEZW5zaXR5IGFuZCBFZHVjYXRpb24gTGV2ZWwgDQpgYGB7ciBmaWcuaGVpZ2h0PTEwLCBmaWcud2lkdGg9MTB9DQpsaWJyYXJ5KFplbGlnKQ0KDQpOWV9DbGltYXRlMSRQb3AgPC0gYXMuZmFjdG9yKE5ZX0NsaW1hdGUxJFBvcCkNCk5ZX0NsaW1hdGUxJEVkdSA8LSBhcy5mYWN0b3IoTllfQ2xpbWF0ZTEkRWR1KQ0KDQp6LmVwbCA8LXplbGlnKEVsZWNDIH4gUG9wICsgRWR1LCBtb2RlbCA9ICJwb2lzc29uIiwgZGF0YSA9IE5ZX0NsaW1hdGUxLCBjaXRlID0gRikNCg0Kei5lcGwkc2V0eChQb3AgPSAiMSIsIEVkdSA9ICJMb3ciKQ0Kei5lcGwkc2V0eDEoUG9wID0gIjEiLCBFZHUgPSAiSGlnaCIpDQp6LmVwbCRzaW0oKQ0KZmQgPC0gei5lcGwkZ2V0X3FpKHh2YWx1ZT0ieDEiLCBxaT0iZmQiKQ0KDQp6LmVwbSA8LXplbGlnKEVsZWNDIH4gUG9wICsgRWR1LCBtb2RlbCA9ICJwb2lzc29uIiwgZGF0YSA9IE5ZX0NsaW1hdGUxLA0KICAgICAgICAgICAgIGNpdGUgPSBGKQ0KDQp6LmVwbSRzZXR4KFBvcCA9ICIyIiwgRWR1ID0gIkxvdyIpDQp6LmVwbSRzZXR4MShQb3AgPSAiMiIsIEVkdSA9ICJIaWdoIikNCnouZXBtJHNpbSgpDQpmZCA8LSB6LmVwbSRnZXRfcWkoeHZhbHVlPSJ4MSIsIHFpPSJmZCIpDQoNCnouZXBoIDwtemVsaWcoRWxlY0MgfiBQb3AgKyBFZHUsIG1vZGVsID0gInBvaXNzb24iLCBkYXRhID0gTllfQ2xpbWF0ZSwNCiAgICAgICAgICAgICBjaXRlID0gRikNCg0Kei5lcGgkc2V0eChQb3AgPSAiNSIsIEVkdSA9ICJMb3ciKQ0Kei5lcGgkc2V0eDEoUG9wID0gIjUiLCBFZHUgPSAiSGlnaCIpDQp6LmVwaCRzaW0oKQ0KZmQgPC0gei5lcGgkZ2V0X3FpKHh2YWx1ZT0ieDEiLCBxaT0iZmQiKQ0KDQpkMSA8LSB6LmVwbCRnZXRfcWkoeHZhbHVlPSJ4MSIsIHFpPSJmZCIpDQpkMiA8LSB6LmVwbSRnZXRfcWkoeHZhbHVlPSJ4MSIsIHFpPSJmZCIpDQpkMyA8LSB6LmVwaCRnZXRfcWkoeHZhbHVlPSJ4MSIsIHFpPSJmZCIpDQoNCmRmZCA8LSBhcy5kYXRhLmZyYW1lKGNiaW5kKGQxLCBkMiwgZDMpKQ0KaGVhZChkZmQpDQoNCmBgYA0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXIpDQoNCnouZXBhPC0gZGZkICU+JSANCiAgZ2F0aGVyKEVkdSwgc2ltdiwgMTozKQ0KDQpsaWJyYXJ5KGRwbHlyKQ0KDQp6LmVwYSAlPiUgDQogIGdyb3VwX2J5KEVkdSkgJT4lIA0KICBzdW1tYXJpc2UobWVhbiA9IG1lYW4oc2ltdiksIHNkID0gc2Qoc2ltdikpDQoNCmxpYnJhcnkoZ2dwbG90MikNCg0KZ2dwbG90KHouZXBhLCBhZXMoc2ltdikpICsgZ2VvbV9oaXN0b2dyYW0oKSArIGZhY2V0X2dyaWQofkVkdSkNCg0KYGBgDQogIFRoZSBmb2xsb3dpbmcgc2ltdWxhdGlvbnMgaW5kaWNhdGVzIHRoYXQgZWR1Y2F0aW9uIGhhcyBhIHNpZ25pZmljYW50IGVmZmVjdCBvbiBlbGVjdHJpYyBjYXIgb3duZXJzaGlwIGF0IGFsbCBwb3B1bGF0aW9uIGxldmVscy4gSW4gU21hbGxlciBjb21tdW5pdGllcyB3aXRoIG1vcmUgaGlnaGx5IGVkdWNhdGVkIHJlc2lkZW50cyB0aGUgbWVhbiBkaWZmZXJlbmNlIGluIGNhciBvd25lcnNoaXAgaXMgYXJvdW5kIDQwLiBXaGlsZSB0aGlzIG1heSBzZWVtIHVuaW1wcmVzc2l2ZSBjb25zaWRlcmluZyB0aGF0IHNvbWUgb2YgTlkgc3RhdGUncyBzbWFsbGVyIGNvdW50aWVzIGhhdmUgYXMgbGl0dGxlIGFzIDUsMDAwIHJlc2lkZW50cywgdGhpcyBpcyBhIGNvbnNpZGVyYWJsZSBkaWZmZXJlbmNlLiBUaGUgc2lnbmlmaWNhbmNlIG9mIHRoaXMgZGlmZmVyZW5jZSBpcyBtb3JlIGNsZWFybHkgZXZpZGVudCBpbiB0aGUgMyBwbG90IGdyYXBocy4gDQoNCiMjIyBDLiBEaWZmZXJlbmNlIGluIEVsZWN0cmljIENhciBPd25lcnNoaXAgYnkgSW5jb21lIGFuZCBGYXJtZXJzIE1hcmtldA0KYGBge3J9DQpsaWJyYXJ5KFplbGlnKQ0KDQp6LmVmbCA8LSB6ZWxpZyhFbGVjQyB+IEluY29tZSArIEZNYXJrZXQsIG1vZGVsID0gInBvaXNzb24iLCBkYXRhID0gTllfQ2xpbWF0ZTEsIGNpdGUgPSBGKSANCg0Kei5lZmwkc2V0eChJbmNvbWUgPSBxdWFudGlsZShOWV9DbGltYXRlMSRJbmNvbWUsIC4yNSksIA0KICAgICAgICAgICBGTWFya2V0ID0gcXVhbnRpbGUoTllfQ2xpbWF0ZTEkRk1hcmtldCwgLjI1KSkNCnouZWZsJHNldHgxKEluY29tZSA9IHF1YW50aWxlKE5ZX0NsaW1hdGUxJEluY29tZSwgLjI1KSwgDQogICAgICAgICAgIEZNYXJrZXQgPSBxdWFudGlsZShOWV9DbGltYXRlMSRGTWFya2V0LCAuNzUpKQ0Kei5lZmwkc2ltKCkNCmZkIDwtIHouZWZsJGdldF9xaSh4dmFsdWU9IngxIiwgcWk9ImZkIikNCg0Kei5lZm0gPC0gemVsaWcoRWxlY0MgfiBJbmNvbWUgKyBGTWFya2V0LCBtb2RlbCA9ICJwb2lzc29uIiwgZGF0YSA9IE5ZX0NsaW1hdGUxLCBjaXRlID0gRikgDQoNCnouZWZtJHNldHgoSW5jb21lID0gcXVhbnRpbGUoTllfQ2xpbWF0ZTEkSW5jb21lLCAuNTApLCANCiAgICAgICAgICAgRk1hcmtldCA9IHF1YW50aWxlKE5ZX0NsaW1hdGUxJEZNYXJrZXQsIC4yNSkpDQp6LmVmbSRzZXR4MShJbmNvbWUgPSBxdWFudGlsZShOWV9DbGltYXRlMSRJbmNvbWUsIC41MCksIA0KICAgICAgICAgICBGTWFya2V0ID0gcXVhbnRpbGUoTllfQ2xpbWF0ZTEkRk1hcmtldCwgLjc1KSkNCnouZWZtJHNpbSgpDQpmZCA8LSB6LmVmbSRnZXRfcWkoeHZhbHVlPSJ4MSIsIHFpPSJmZCIpDQoNCnouZWZoIDwtIHplbGlnKEVsZWNDIH4gSW5jb21lICsgRk1hcmtldCwgbW9kZWwgPSAicG9pc3NvbiIsIGRhdGEgPSBOWV9DbGltYXRlMSwgY2l0ZSA9IEYpIA0KDQp6LmVmaCRzZXR4KEluY29tZSA9IHF1YW50aWxlKE5ZX0NsaW1hdGUxJEluY29tZSwgLjc1KSwgDQogICAgICAgICAgIEZNYXJrZXQgPSBxdWFudGlsZShOWV9DbGltYXRlMSRGTWFya2V0LCAuMjUpKQ0Kei5lZmgkc2V0eDEoSW5jb21lID0gcXVhbnRpbGUoTllfQ2xpbWF0ZTEkSW5jb21lLCAuNzUpLCANCiAgICAgICAgICAgRk1hcmtldCA9IHF1YW50aWxlKE5ZX0NsaW1hdGUxJEZNYXJrZXQsIC43NSkpDQoNCnouZWZoJHNpbSgpDQpmZCA8LSB6LmVmaCRnZXRfcWkoeHZhbHVlPSJ4MSIsIHFpPSJmZCIpDQoNCmYxIDwtIHouZWZsJGdldF9xaSh4dmFsdWU9IngxIiwgcWk9ImZkIikNCmYyIDwtIHouZWZtJGdldF9xaSh4dmFsdWU9IngxIiwgcWk9ImZkIikNCmYzIDwtIHouZWZoJGdldF9xaSh4dmFsdWU9IngxIiwgcWk9ImZkIikNCg0KZmZkIDwtIGFzLmRhdGEuZnJhbWUoY2JpbmQoZjEsIGYyLCBmMykpDQpoZWFkKGZmZCkNCg0KDQpgYGANCiAgDQpgYGB7ciwgZWNobz1GQUxTRX0NCmxpYnJhcnkodGlkeXIpDQoNCnouZWZhPC0gZmZkICU+JSANCiAgZ2F0aGVyKEZNYXJrZXQsIHNpbXYsIDE6MykNCg0KbGlicmFyeShkcGx5cikNCg0Kei5lZmEgJT4lIA0KICBncm91cF9ieShGTWFya2V0KSAlPiUgDQogIHN1bW1hcmlzZShtZWFuID0gbWVhbihzaW12KSwgc2QgPSBzZChzaW12KSkNCg0KbGlicmFyeShnZ3Bsb3QyKQ0KDQpnZ3Bsb3Qoei5lZmEsIGFlcyhzaW12KSkgKyBnZW9tX2hpc3RvZ3JhbSgpICsgZmFjZXRfZ3JpZCh+Rk1hcmtldCkNCmBgYA0KICBUaGVzZSBwbG90IGdyYXBoIGNsZWFybHkgc2hvdyB0aGUgZWZmZWN0IHRoYXQgZmFybWVycyBtYXJrZXQgaGF2ZSBvbiBjYXIgb3duZXJzaGlwIGxldmVscyBpbiBjb3VudGllcyBvZiB2YXJ5aW5nIGluY29tZSBsZXZlbHMuIFdoaWxlIGZhY3RvcmluZyBpbiBkaWZmZXJlbmNlcyBpbiB0aGUgbnVtYmVyIG9mIGZhcm1lcidzIG1hcmtldHMgaW4gYSBjb3VudHksIHRoZSBtZWFuIGRpZmZlcmVuY2UgaW4gY2FyIG93bmVyc2hpcCBsZXZlbHMgaW4gdGhvc2UgY291bnRpZXMgd2hvIG1ha2UgdXAgdGhlIGxvd2VzdCBpbmNvbWUgcXVhbnRpbGUgaXMgc2xpZ2h0bHkgb3ZlciAyNS4gVGhpcyBjb21wYXJlZCB0byBhIG1lYW4gZGlmZmVyZW5jZSBvZiBzbGlnaHRseSBvdmVyIDI4IGluIHRoZSBoaWdoZXN0IGluY29tZSBxdWFudGlsZS4gQ29uc2lkZXJpbmcgdGhlIHJlc3VsdHMgb2YgdGhlIGZpcnN0IHNpbXVsYXRpb24gd2hpY2ggbG9va2VkIGF0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBpbmNvbWUgYW5kIGVsZWN0cmljIGNhciBvd25lcnNoaXAsIHRoZSBwcmVzZW5jZSBvZiBmYXJtZXJzIG1hcmtldHMgYXBwZWFycyB0byBlbmNvdXJhZ2UgaGlnaGVyIGxldmVscyBvZiBjYXIgb3duZXJzaGlwIGluIGxlc3MgYWZmbHVlbnQgY291bnRpZXMuICAgDQogIA0KIyMgSVYuIENvbmNsdXNpb24NCg0KICBGYXJtZXJzIG1hcmtldCBhbmQgaGlnaGVyIGVkdWNhdGlvbiBhcmUgZXNzZW50aWFsIGFuZCBlZmZlY3RpdmUgdG9vbHMgYXQgZW5jb3VyYWdpbmcgc3VzdGFpbmFibGUgcHJhY3RpY2VzIGFuZCBiZWhhdmlvcnMgaW4gYWxsIGNvbW11bml0aWVzIHJlZ2FyZGxlc3Mgb2Ygc2l6ZSBvciB3ZWFsdGguIFByb21vdGluZyB0aGVzZSBwb2xpY2llcyBhcmUgd2l0aGluIHRoZSBmaXNjYWwgbWVhbnMgb2YgZXZlbiB0aGUgbGVhc3QgYWZmbHVlbnQgb2YgY29tbXVuaXRpZXMuIFNtYWxsIGludmVzdG1lbnRzIGluIGVkdWNhdGlvbiBjYW4gaGF2ZSBhIGxhcmdlIGltcGFjdCBvbiB0aGUgc3VzdGFpbmFiaWxpdHkgb2YgY29tbXVuaXRpZXMgdGhyb3VnaHQgdGhhdCBzdGF0ZSBhbmQgY291bnRyeS4=