(This document is also available at: http://rpubs.com/oba2311/SS154Final for a better resolution)

Write a short summary (1 paragraph) of the research question the authors of the paper answer and how their approach/question relates to the existing literature. Comment on any flaws/challenges you see.

During the 1990’s, many states in the US had an increasing motivation to raise “sin taxes”; those are taxes on alchohol and cigarettes. This trend took place all the while medical awareness continuously increasing; Therefore it only made sense for most states to keep increasing taxation on cigarettes, but was it beneficial?
Will people stop smoking if the government increase taxes on cigarettes? What is the relatinoship between cigarette consumption and the changes in price of this commodity? Was the “Bootleging effect”, which include the smuggling of cigarettes across borders significant?

The authors pose the following questions for their research:

Those two questions are immensly important and pointing at an optimal plan which can increase state’s welfare dramatically through revenue generated by taxes and reduction of smokers which will lead to recudtion in health care costs as well (secondary effect, nevertheless could amount to large scale savings).

The authors tackle a tough problem: how to estimate elasticity of the price of cigarettes given the bootleging (smuggling) effect, which contaminates the data?

Previous studies have found price elasticity of around -50 percent; however, since those studies did not control for the bootlegging effect, the estimations suffer from an omited variable bias.

Using your own code, provide (2-3) relevant summary statistics and visuals of the data.

library(plm)
data("Cigar")
pCigar <- pdata.frame(Cigar)
summary(pCigar)
     state           year          price             pop            pop16              cpi       
 1      :  30   63     :  46   Min.   : 23.40   Min.   :  319   Min.   :  215.2   Min.   : 30.6  
 3      :  30   64     :  46   1st Qu.: 34.77   1st Qu.: 1053   1st Qu.:  781.2   1st Qu.: 38.8  
 4      :  30   65     :  46   Median : 52.30   Median : 3174   Median : 2315.3   Median : 62.9  
 5      :  30   66     :  46   Mean   : 68.70   Mean   : 4537   Mean   : 3366.6   Mean   : 73.6  
 7      :  30   67     :  46   3rd Qu.: 98.10   3rd Qu.: 5280   3rd Qu.: 3914.3   3rd Qu.:107.6  
 8      :  30   68     :  46   Max.   :201.90   Max.   :30703   Max.   :22920.0   Max.   :140.3  
 (Other):1200   (Other):1104                                                                     
      ndi            sales           pimin       
 Min.   : 1323   Min.   : 53.4   Min.   : 23.40  
 1st Qu.: 3328   1st Qu.:107.9   1st Qu.: 31.98  
 Median : 6281   Median :121.2   Median : 46.40  
 Mean   : 7525   Mean   :124.0   Mean   : 62.90  
 3rd Qu.:11024   3rd Qu.:133.2   3rd Qu.: 90.50  
 Max.   :23074   Max.   :297.9   Max.   :178.50  
                                                 

Let’s observe the general straightforward, over-simplistic relatinoship between sales and price, to gauge the big picture:

sales_by_price <- lm(pCigar$sales~pCigar$price)
plot(pCigar$sales~pCigar$price)
abline(sales_by_price, col="red")

We can see that the relationship is as we would expect, generally: higher prices drive lower demand. This confirms what the economic theory would predict. That said, we cannot infer what is the real nature of the relationship is from the plot. We will have to take a closer look at more variables since this model is very far from what could be the “true model”.

Comment (1 paragraph) on the most important variables and how they help answer the research question. Comment on any flaws/challenges you see.

Please see exact elaboration on the variables used under the next article.

Using precise mathematical notation describe (1 paragraph) the methodology the authors use to answer their question.

Authors model and specification
Model Specification:

The authors estimate the log of the real per capita sales, in terms of packs per head. \(ln_{C_i_t}\)

Predictors are: real price of a packate (\(P_i_t\)), real pre capita disposible income (\(Y_i_t\)), and the minimum real price in any neighboring state (\(Pn_i_t\)). This last explanatoru variable accounts for the bootleg effect, that has been omited from models in previous studies.

The error term is composed of two terms: state specific effects and time (year) specific effects:
Notice the compound error term
Error Term Specification (Equation 2):

\(µ_i\) denotes a state-specific effect, and \(λ_t\) denotes a year-specific effect. The time-period effects (the \(λ_t\)) are assumed fixed parameters to be estimated as coefficients of time dummies for each year in the sample.\(V_i_t\) would be the “idiosyncratic error”. It is usually assumed well-behaved, which means independent of both the regressors and the other error components (and assumed to be normaly distributed).

Discuss (1 paragraph) why this methodology is appropriate to estimate causal relationships and comment on any flaws/challenges you see.

The authors present a fair estimation of the causal relationship; however, some pitfalls exist:

  1. Predicted variable: the authors specify the target variable as consumption per capita (log); since many interventions took place during the times discussed, we can assume as the authors do that time dummies per each year should be used. However, this also points at high potential for lagged effects and those should be measured and factored into the target variable. The authors indeed include a one-year lagged Y later in the regression table; however, there might be policies whose implementation takes more than one year and therefore it is worth testing the same variables with a larger lag.

  2. Model assumptions: some assumptions are made that might over-simplify the model. For example, the authors mention that advertising is state-invariant since advertising is broadcasted nationwide.I tend to think that reality is more complicated with some portion of advertisment nationwide while some sorts of advertisment more localized. Especially so if we don’t include a variable for education - education vary across states and well might be an important factor.

  3. Bootleging Effect: the authors use \(Pn\) to measure prices between adjacent states to account for the bootleging effect; it is missing bootleging between non-adjacent states.

  4. Possible Multicollinearity: one simple example is the collinearity between price of cigarettes and income in a state. Economic theory suggests that there could be reverse causality between those two variables until some equillibrium is reached (i.e. the price is such that tabacco firms maximize profits).

Using your own code, replicate (as much as the data allows you to) the most important aspects of the results from the paper according to you (2-3 tables or visuals).

pCigar$sales16 <- (pCigar$sales*pCigar$pop)/pCigar$pop16
form <- formula(log(sales16) ~ lag(log(sales16), 1) 
                               + log(price/cpi*100)
                               + log(pimin/cpi*100)
                               + log(ndi/cpi*100))
summary(plm(form, data= pCigar, model="pooling"))
Pooling Model

Call:
plm(formula = form, data = pCigar, model = "pooling")

Balanced Panel: n = 46, T = 29, N = 1334

Residuals:
    Min.  1st Qu.   Median  3rd Qu.     Max. 
-0.20400 -0.02060  0.00129  0.02360  0.22400 

Coefficients:
                       Estimate Std. Error  t-value  Pr(>|t|)    
(Intercept)           0.7240693  0.0729962   9.9193 < 2.2e-16 ***
lag(log(sales16), 1)  0.9694942  0.0061489 157.6687 < 2.2e-16 ***
log(price/cpi * 100) -0.0901512  0.0145795  -6.1834 8.332e-10 ***
log(pimin/cpi * 100)  0.0240347  0.0131562   1.8269   0.06794 .  
log(ndi/cpi * 100)   -0.0306788  0.0060279  -5.0895 4.106e-07 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    66.746
Residual Sum of Squares: 2.3538
R-Squared:      0.96474
Adj. R-Squared: 0.96463
F-statistic: 9089.46 on 4 and 1329 DF, p-value: < 2.22e-16
summary(plm(form, data= pCigar, model="within", effect = "twoways"))
Twoways effects Within Model

Call:
plm(formula = form, data = pCigar, effect = "twoways", model = "within")

Balanced Panel: n = 46, T = 29, N = 1334

Residuals:
    Min.  1st Qu.   Median  3rd Qu.     Max. 
-0.18400 -0.01690  0.00134  0.01730  0.25800 

Coefficients:
                      Estimate Std. Error  t-value  Pr(>|t|)    
lag(log(sales16), 1)  0.833383   0.012562  66.3438 < 2.2e-16 ***
log(price/cpi * 100) -0.298598   0.023601 -12.6519 < 2.2e-16 ***
log(pimin/cpi * 100)  0.034045   0.027465   1.2396    0.2154    
log(ndi/cpi * 100)    0.100279   0.023850   4.2046 2.801e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Total Sum of Squares:    11.449
Residual Sum of Squares: 1.647
R-Squared:      0.85614
Adj. R-Squared: 0.84733
F-statistic: 1868.75 on 4 and 1256 DF, p-value: < 2.22e-16

Compare your estimates to the authors. If there are any differences, discuss why that might be the case (1 paragraph)

We can see both the “Pooled model”" as well as the “Within model”, the PLM produce relevant results. The target variable is predicted to be .969 and .83 while the authors conclude with .97 and .83. I think that it is fair to assume that the authors round up .969. Indeed the results are identical and this might come as a surprise for such a replication purpose; however, this is a case-study with publicly available data that is meant to be replicated and therefore it is simplistic and easier to replicate.

Can you think of a model/regression/question the authors didn’t consider? If so, perform your own analysis and present it. (1 paragraph and 2-3 tables or graphs max)

The dataset does not include a variable that would be a proxy to represent legislation. If a scholar wants to learn about bootlegging it seems plausible to include variables that would entail the legal practical difficulty that this activity would include. Clearly, such a variable does not include as is, but proxies have been used to solve for similar problems.

Discuss threats to internal and external validity of the authors and your extensions results. Be critical - can we rely on the results? Why? Why not? Conclude (1 paragraph)

As I had mentioned, the economic framework of the study could be pushed further in order to get closer to what would be the “real model”. A good start is to take into consideration the state-specific bootlegging legislation as a variable as well as the level of enforcement of those laws. This will include specification of the model per border (i.e. California-Utah, California-Oregon etc) which will lead to better estiamtion of the causal effect in my opinion. However, for this purpose a more granular dataset is needed.

In terms of external validity, perhaps the following framework could be used to consider consumption and smuggling of drugs;however, since as of now drugs are prohibited in some states bootlegging of drugs is a different activity that is not meant to save costs but rather to supply illegal drugs. The framewok will have to be modified to account for this variation.

References:

Baltagi, B. H., & Levin, D. (1992). Cigarette taxation: raising revenues and reducing consumption. Structural Change and Economic Dynamics, 3(2), 321-335.

Baltagi, B. H., Griffin, J. M., & Xiong, W. (2000). To pool or not to pool: Homogeneous versus heterogeneous estimators applied to cigarette demand. Review of Economics and Statistics, 82(1), 117-126.

John, R. M., Rao, R. K., Rao, M. G., Moore, J., Deshpande, R. S., Sengupta, J., … & Jha, P. (2010). The economics of tobacco and tobacco taxation in India. Paris: International Union Against Tuberculosis and Lung Disease, 1-52.

Appendix:

Consideration of other frameworks: RCT

Let’s consider other rigorous methods to estimate such causal effects: Perhaps and RCT can be used? well, the biggest threat to this experiment’s validity is inter-state spillover effects. Will an RCT suffer from those spillover effects? Well, perhaps a scholar can come up with the following framework: Since we acknowledge the adjacent states spillover, we will assign treatment only to states sorrounded by other states in which the price is already higher, and will remain at least the same or higher after the tax increase. This should in theory mitigate bootlegging; however it would only further push non-adjacent bootlegging effects which are not accounted for in the model.Therefore an RCT is not practical framework for this purpose, both because it is not feasible as well as problematic in terms of experimental design (i.e. not sovling the spill-over effects).

Applications to India:

Unfortunately, India’s Tabacco industry offers broad spectrum of products from regular cigarettes to special chewing tabacco to bidis (tendu leaf). A special task force designated to this problem published in 2010 their conclusions, suggesting drastic increase in sin taxes.

LS0tCnRpdGxlOiAiU1MxNTQgLSBGaW5hbCBQcm9qZWN0IgpvdXRwdXQ6CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KKFRoaXMgZG9jdW1lbnQgaXMgYWxzbyBhdmFpbGFibGUgYXQ6IGh0dHA6Ly9ycHVicy5jb20vb2JhMjMxMS9TUzE1NEZpbmFsIGZvciBhIGJldHRlciByZXNvbHV0aW9uKQoKPGNlbnRlcj4gPGg0PldyaXRlIGEgc2hvcnQgc3VtbWFyeSAoMSBwYXJhZ3JhcGgpIG9mIHRoZSByZXNlYXJjaCBxdWVzdGlvbiB0aGUgYXV0aG9ycyBvZiB0aGUgcGFwZXIgYW5zd2VyIGFuZCBob3cgdGhlaXIgYXBwcm9hY2gvcXVlc3Rpb24gcmVsYXRlcyB0byB0aGUgZXhpc3RpbmcgbGl0ZXJhdHVyZS4gQ29tbWVudCBvbiBhbnkgZmxhd3MvY2hhbGxlbmdlcyB5b3Ugc2VlLiA8L2g0PjwvY2VudGVyPgpEdXJpbmcgdGhlIDE5OTAncywgIG1hbnkgc3RhdGVzIGluIHRoZSBVUyBoYWQgYW4gaW5jcmVhc2luZyBtb3RpdmF0aW9uIHRvIHJhaXNlICJzaW4gdGF4ZXMiOyB0aG9zZSBhcmUgdGF4ZXMgb24gYWxjaG9ob2wgYW5kIGNpZ2FyZXR0ZXMuIFRoaXMgdHJlbmQgdG9vayBwbGFjZSBhbGwgdGhlIHdoaWxlIG1lZGljYWwgYXdhcmVuZXNzIGNvbnRpbnVvdXNseSBpbmNyZWFzaW5nOyBUaGVyZWZvcmUgaXQgb25seSBtYWRlIHNlbnNlIGZvciBtb3N0IHN0YXRlcyB0byBrZWVwIGluY3JlYXNpbmcgdGF4YXRpb24gb24gY2lnYXJldHRlcywgYnV0IHdhcyBpdCBiZW5lZmljaWFsPyAgCldpbGwgcGVvcGxlIHN0b3Agc21va2luZyBpZiB0aGUgZ292ZXJubWVudCBpbmNyZWFzZSB0YXhlcyBvbiBjaWdhcmV0dGVzPyAgV2hhdCBpcyB0aGUgcmVsYXRpbm9zaGlwIGJldHdlZW4gY2lnYXJldHRlIGNvbnN1bXB0aW9uIGFuZCB0aGUgY2hhbmdlcyBpbiBwcmljZSBvZiB0aGlzIGNvbW1vZGl0eT8gV2FzIHRoZSAiQm9vdGxlZ2luZyBlZmZlY3QiLCB3aGljaCBpbmNsdWRlIHRoZSBzbXVnZ2xpbmcgb2YgY2lnYXJldHRlcyBhY3Jvc3MgYm9yZGVycyBzaWduaWZpY2FudD8KCgpUaGUgYXV0aG9ycyBwb3NlIHRoZSBmb2xsb3dpbmcgcXVlc3Rpb25zIGZvciB0aGVpciByZXNlYXJjaDogCgoqICJUbyB3aGF0IGV4dGVudCBkb2VzIHRoZSBpbmNyZWFzZSBpbiBzdGF0ZSB0YXhlcyBsZWFkIHRvIGFuIGluY3JlYXNlIGluIHJldmVudWVzIGluIHRoYXQgc3RhdGUgYW5kIGEgcmVkdWN0aW9uIGluIGNvbnN1bXB0aW9uIGluIHRoYXQgc3RhdGU/CgoqICJUbyB3aGF0IGV4dGVudCBkb2VzIHRoaXMgdGF4IGluY3JlYXNlIGVuY291cmFnZSBjYXN1YWwgc211Z2dsaW5nIGFjcm9zcyBib3JkZXIgc3RhdGVzIHdpdGggbG93ZXIgdGF4ZXM/IgoKVGhvc2UgdHdvIHF1ZXN0aW9ucyBhcmUgaW1tZW5zbHkgaW1wb3J0YW50IGFuZCBwb2ludGluZyBhdCBhbiBvcHRpbWFsIHBsYW4gd2hpY2ggY2FuIGluY3JlYXNlIHN0YXRlJ3Mgd2VsZmFyZSBkcmFtYXRpY2FsbHkgdGhyb3VnaCByZXZlbnVlIGdlbmVyYXRlZCBieSB0YXhlcyBhbmQgcmVkdWN0aW9uIG9mIHNtb2tlcnMgd2hpY2ggd2lsbCBsZWFkIHRvIHJlY3VkdGlvbiBpbiBoZWFsdGggY2FyZSBjb3N0cyBhcyB3ZWxsIChzZWNvbmRhcnkgZWZmZWN0LCBuZXZlcnRoZWxlc3MgY291bGQgYW1vdW50IHRvIGxhcmdlIHNjYWxlIHNhdmluZ3MpLgoKVGhlIGF1dGhvcnMgdGFja2xlIGEgdG91Z2ggcHJvYmxlbTogaG93IHRvIGVzdGltYXRlIGVsYXN0aWNpdHkgb2YgdGhlIHByaWNlIG9mIGNpZ2FyZXR0ZXMgZ2l2ZW4gdGhlIGJvb3RsZWdpbmcgKHNtdWdnbGluZykgZWZmZWN0LCB3aGljaCBjb250YW1pbmF0ZXMgdGhlIGRhdGE/CgpQcmV2aW91cyBzdHVkaWVzIGhhdmUgZm91bmQgcHJpY2UgZWxhc3RpY2l0eSBvZiBhcm91bmQgLTUwIHBlcmNlbnQ7IGhvd2V2ZXIsIHNpbmNlIHRob3NlIHN0dWRpZXMgZGlkIG5vdCBjb250cm9sIGZvciB0aGUgYm9vdGxlZ2dpbmcgZWZmZWN0LCB0aGUgZXN0aW1hdGlvbnMgc3VmZmVyIGZyb20gYW4gb21pdGVkIHZhcmlhYmxlIGJpYXMuCgo8Y2VudGVyPiA8aDQ+IFVzaW5nIHlvdXIgb3duIGNvZGUsIHByb3ZpZGUgKDItMykgcmVsZXZhbnQgc3VtbWFyeSBzdGF0aXN0aWNzIGFuZCB2aXN1YWxzIG9mIHRoZSBkYXRhLjwvY2VudGVyPiA8L2g0PgpgYGB7cn0KbGlicmFyeShwbG0pCmRhdGEoIkNpZ2FyIikKcENpZ2FyIDwtIHBkYXRhLmZyYW1lKENpZ2FyKQpzdW1tYXJ5KHBDaWdhcikKYGBgCgpMZXQncyBvYnNlcnZlIHRoZSBnZW5lcmFsIHN0cmFpZ2h0Zm9yd2FyZCwgb3Zlci1zaW1wbGlzdGljIHJlbGF0aW5vc2hpcCBiZXR3ZWVuIHNhbGVzIGFuZCBwcmljZSwgdG8gZ2F1Z2UgdGhlIGJpZyBwaWN0dXJlOgpgYGB7cn0Kc2FsZXNfYnlfcHJpY2UgPC0gbG0ocENpZ2FyJHNhbGVzfnBDaWdhciRwcmljZSkKcGxvdChwQ2lnYXIkc2FsZXN+cENpZ2FyJHByaWNlKQphYmxpbmUoc2FsZXNfYnlfcHJpY2UsIGNvbD0icmVkIikKYGBgCldlIGNhbiBzZWUgdGhhdCB0aGUgcmVsYXRpb25zaGlwIGlzIGFzIHdlIHdvdWxkIGV4cGVjdCwgZ2VuZXJhbGx5OiBoaWdoZXIgcHJpY2VzIGRyaXZlIGxvd2VyIGRlbWFuZC4gVGhpcyBjb25maXJtcyB3aGF0IHRoZSBlY29ub21pYyB0aGVvcnkgd291bGQgcHJlZGljdC4gVGhhdCBzYWlkLCB3ZSBjYW5ub3QgaW5mZXIgd2hhdCBpcyB0aGUgcmVhbCBuYXR1cmUgb2YgdGhlIHJlbGF0aW9uc2hpcCBpcyBmcm9tIHRoZSBwbG90LiBXZSB3aWxsIGhhdmUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IG1vcmUgdmFyaWFibGVzIHNpbmNlIHRoaXMgbW9kZWwgaXMgdmVyeSBmYXIgZnJvbSB3aGF0IGNvdWxkIGJlIHRoZSAidHJ1ZSBtb2RlbCIuCgo8Y2VudGVyPiA8aDQ+IENvbW1lbnQgKDEgcGFyYWdyYXBoKSBvbiB0aGUgbW9zdCBpbXBvcnRhbnQgdmFyaWFibGVzIGFuZCBob3cgdGhleSBoZWxwIGFuc3dlciB0aGUgcmVzZWFyY2ggcXVlc3Rpb24uIENvbW1lbnQgb24gYW55IGZsYXdzL2NoYWxsZW5nZXMgeW91IHNlZS4gPC9jZW50ZXI+IDwvaDQ+ClBsZWFzZSBzZWUgZXhhY3QgZWxhYm9yYXRpb24gb24gdGhlIHZhcmlhYmxlcyB1c2VkIHVuZGVyIHRoZSBuZXh0IGFydGljbGUuCgo8Y2VudGVyPiA8aDQ+IFVzaW5nIHByZWNpc2UgbWF0aGVtYXRpY2FsIG5vdGF0aW9uIGRlc2NyaWJlICgxIHBhcmFncmFwaCkgdGhlIG1ldGhvZG9sb2d5IHRoZSBhdXRob3JzIHVzZSB0byBhbnN3ZXIgdGhlaXIgcXVlc3Rpb24uIDwvY2VudGVyPiA8L2g0PgoKPGNlbnRlcj4KIVtBdXRob3JzIG1vZGVsIGFuZCBzcGVjaWZpY2F0aW9uXShDaWdhcmV0dGUgZWxhc3RpY2l0eSBtb2RlbC5wbmcpCjwvY2VudGVyPgo8Y2VudGVyPiA8aDU+IF9Nb2RlbCBTcGVjaWZpY2F0aW9uOiBfIDwvY2VudGVyPiA8L2g1PgoKVGhlIGF1dGhvcnMgZXN0aW1hdGUgdGhlIGxvZyBvZiB0aGUgcmVhbCBwZXIgY2FwaXRhIHNhbGVzLCBpbiB0ZXJtcyBvZiBwYWNrcyBwZXIgaGVhZC4gJGxuX3tDX2lfdH0kCgpQcmVkaWN0b3JzIGFyZTogcmVhbCBwcmljZSBvZiBhIHBhY2thdGUgKCRQX2lfdCQpLCByZWFsIHByZSBjYXBpdGEgZGlzcG9zaWJsZSBpbmNvbWUgKCRZX2lfdCQpLCBhbmQgdGhlIG1pbmltdW0gcmVhbCBwcmljZSBpbiBhbnkgbmVpZ2hib3Jpbmcgc3RhdGUgKCRQbl9pX3QkKS4gVGhpcyBsYXN0IGV4cGxhbmF0b3J1IHZhcmlhYmxlIGFjY291bnRzIGZvciB0aGUgIGJvb3RsZWcgZWZmZWN0LCB0aGF0IGhhcyBiZWVuIG9taXRlZCBmcm9tIG1vZGVscyBpbiBwcmV2aW91cyBzdHVkaWVzLgoKVGhlIGVycm9yIHRlcm0gaXMgY29tcG9zZWQgb2YgdHdvIHRlcm1zOiBzdGF0ZSBzcGVjaWZpYyBlZmZlY3RzIGFuZCB0aW1lICh5ZWFyKSBzcGVjaWZpYyBlZmZlY3RzOgo8Y2VudGVyPgohW05vdGljZSB0aGUgY29tcG91bmQgZXJyb3IgdGVybV0oZXJyb3IgdGVybSBjaWdhcmV0dGVzLnBuZykKPC9jZW50ZXI+Cgo8Y2VudGVyPiA8aDU+IF9FcnJvciBUZXJtIFNwZWNpZmljYXRpb24gKEVxdWF0aW9uIDIpOiBfIDwvY2VudGVyPiA8L2g1PgokwrVfaSQgZGVub3RlcyBhIHN0YXRlLXNwZWNpZmljIGVmZmVjdCwgYW5kICTOu190JCBkZW5vdGVzIGEgeWVhci1zcGVjaWZpYyBlZmZlY3QuIFRoZSB0aW1lLXBlcmlvZCBlZmZlY3RzICh0aGUgJM67X3QkKSBhcmUgYXNzdW1lZCBmaXhlZCBwYXJhbWV0ZXJzIHRvIGJlIGVzdGltYXRlZCBhcyBjb2VmZmljaWVudHMgb2YgdGltZSBkdW1taWVzIGZvciBlYWNoIHllYXIgaW4gdGhlIHNhbXBsZS4kVl9pX3QkIHdvdWxkIGJlIHRoZSAiaWRpb3N5bmNyYXRpYyBlcnJvciIuIEl0IGlzIHVzdWFsbHkgYXNzdW1lZCB3ZWxsLWJlaGF2ZWQsIHdoaWNoIG1lYW5zICBpbmRlcGVuZGVudCBvZiBib3RoIHRoZSByZWdyZXNzb3JzIGFuZCB0aGUgb3RoZXIgZXJyb3IgY29tcG9uZW50cyAoYW5kIGFzc3VtZWQgdG8gYmUgbm9ybWFseSBkaXN0cmlidXRlZCkuCgoKPGNlbnRlcj4gPGg0PiBEaXNjdXNzICgxIHBhcmFncmFwaCkgd2h5IHRoaXMgbWV0aG9kb2xvZ3kgaXMgYXBwcm9wcmlhdGUgdG8gZXN0aW1hdGUgY2F1c2FsIHJlbGF0aW9uc2hpcHMgYW5kIGNvbW1lbnQgb24gYW55IGZsYXdzL2NoYWxsZW5nZXMgeW91IHNlZS4gPC9jZW50ZXI+IDwvaDQ+ClRoZSBhdXRob3JzIHByZXNlbnQgYSBmYWlyIGVzdGltYXRpb24gb2YgdGhlIGNhdXNhbCByZWxhdGlvbnNoaXA7IGhvd2V2ZXIsIHNvbWUgcGl0ZmFsbHMgZXhpc3Q6CgoxLiBQcmVkaWN0ZWQgdmFyaWFibGU6IHRoZSBhdXRob3JzIHNwZWNpZnkgdGhlIHRhcmdldCB2YXJpYWJsZSBhcyBjb25zdW1wdGlvbiBwZXIgY2FwaXRhIChsb2cpOyBzaW5jZSBtYW55IGludGVydmVudGlvbnMgdG9vayBwbGFjZSBkdXJpbmcgdGhlIHRpbWVzIGRpc2N1c3NlZCwgd2UgY2FuIGFzc3VtZSBhcyB0aGUgYXV0aG9ycyBkbyB0aGF0IHRpbWUgZHVtbWllcyBwZXIgZWFjaCB5ZWFyIHNob3VsZCBiZSB1c2VkLiBIb3dldmVyLCB0aGlzIGFsc28gcG9pbnRzIGF0IGhpZ2ggcG90ZW50aWFsIGZvciBsYWdnZWQgZWZmZWN0cyBhbmQgdGhvc2Ugc2hvdWxkIGJlIG1lYXN1cmVkIGFuZCBmYWN0b3JlZCBpbnRvIHRoZSB0YXJnZXQgdmFyaWFibGUuIFRoZSBhdXRob3JzIGluZGVlZCBpbmNsdWRlIGEgb25lLXllYXIgbGFnZ2VkIFkgbGF0ZXIgaW4gdGhlIHJlZ3Jlc3Npb24gdGFibGU7IGhvd2V2ZXIsIHRoZXJlIG1pZ2h0IGJlIHBvbGljaWVzIHdob3NlIGltcGxlbWVudGF0aW9uIHRha2VzIG1vcmUgdGhhbiBvbmUgeWVhciBhbmQgdGhlcmVmb3JlIGl0IGlzIHdvcnRoIHRlc3RpbmcgdGhlIHNhbWUgdmFyaWFibGVzIHdpdGggYSBsYXJnZXIgbGFnLgoKMi4gTW9kZWwgYXNzdW1wdGlvbnM6IHNvbWUgYXNzdW1wdGlvbnMgYXJlIG1hZGUgdGhhdCBtaWdodCBvdmVyLXNpbXBsaWZ5IHRoZSBtb2RlbC4gRm9yIGV4YW1wbGUsIHRoZSBhdXRob3JzIG1lbnRpb24gdGhhdCBhZHZlcnRpc2luZyBpcyBzdGF0ZS1pbnZhcmlhbnQgc2luY2UgYWR2ZXJ0aXNpbmcgaXMgYnJvYWRjYXN0ZWQgbmF0aW9ud2lkZS5JIHRlbmQgdG8gdGhpbmsgdGhhdCByZWFsaXR5IGlzIG1vcmUgY29tcGxpY2F0ZWQgd2l0aCBzb21lIHBvcnRpb24gb2YgYWR2ZXJ0aXNtZW50IG5hdGlvbndpZGUgd2hpbGUgc29tZSBzb3J0cyBvZiBhZHZlcnRpc21lbnQgbW9yZSBsb2NhbGl6ZWQuIEVzcGVjaWFsbHkgc28gaWYgd2UgZG9uJ3QgaW5jbHVkZSBhIHZhcmlhYmxlIGZvciBlZHVjYXRpb24gLSBlZHVjYXRpb24gdmFyeSBhY3Jvc3Mgc3RhdGVzIGFuZCB3ZWxsIG1pZ2h0IGJlIGFuIGltcG9ydGFudCBmYWN0b3IuCgozLiBCb290bGVnaW5nIEVmZmVjdDogdGhlIGF1dGhvcnMgdXNlICRQbiQgdG8gbWVhc3VyZSBwcmljZXMgYmV0d2VlbiBhZGphY2VudCBzdGF0ZXMgdG8gYWNjb3VudCBmb3IgdGhlIGJvb3RsZWdpbmcgZWZmZWN0OyBpdCBpcyBtaXNzaW5nIGJvb3RsZWdpbmcgYmV0d2VlbiBub24tYWRqYWNlbnQgc3RhdGVzLgoKNC4gUG9zc2libGUgTXVsdGljb2xsaW5lYXJpdHk6IG9uZSBzaW1wbGUgZXhhbXBsZSBpcyB0aGUgY29sbGluZWFyaXR5IGJldHdlZW4gcHJpY2Ugb2YgY2lnYXJldHRlcyBhbmQgaW5jb21lIGluIGEgc3RhdGUuIEVjb25vbWljIHRoZW9yeSBzdWdnZXN0cyB0aGF0IHRoZXJlIGNvdWxkIGJlIHJldmVyc2UgY2F1c2FsaXR5IGJldHdlZW4gdGhvc2UgdHdvIHZhcmlhYmxlcyB1bnRpbCBzb21lIGVxdWlsbGlicml1bSBpcyByZWFjaGVkIChpLmUuIHRoZSBwcmljZSBpcyBzdWNoIHRoYXQgdGFiYWNjbyBmaXJtcyBtYXhpbWl6ZSBwcm9maXRzKS4KCjxjZW50ZXI+IDxoND4gVXNpbmcgeW91ciBvd24gY29kZSwgcmVwbGljYXRlIChhcyBtdWNoIGFzIHRoZSBkYXRhIGFsbG93cyB5b3UgdG8pIHRoZSBtb3N0IGltcG9ydGFudCBhc3BlY3RzIG9mIHRoZSByZXN1bHRzIGZyb20gdGhlIHBhcGVyIGFjY29yZGluZyB0byB5b3UgKDItMyB0YWJsZXMgb3IgdmlzdWFscykuIDwvY2VudGVyPiA8L2g0PgpgYGB7cn0KcENpZ2FyJHNhbGVzMTYgPC0gKHBDaWdhciRzYWxlcypwQ2lnYXIkcG9wKS9wQ2lnYXIkcG9wMTYKCmZvcm0gPC0gZm9ybXVsYShsb2coc2FsZXMxNikgfiBsYWcobG9nKHNhbGVzMTYpLCAxKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbG9nKHByaWNlL2NwaSoxMDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxvZyhwaW1pbi9jcGkqMTAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsb2cobmRpL2NwaSoxMDApKQoKc3VtbWFyeShwbG0oZm9ybSwgZGF0YT0gcENpZ2FyLCBtb2RlbD0icG9vbGluZyIpKQpgYGAKCmBgYHtyfQpzdW1tYXJ5KHBsbShmb3JtLCBkYXRhPSBwQ2lnYXIsIG1vZGVsPSJ3aXRoaW4iLCBlZmZlY3QgPSAidHdvd2F5cyIpKQpgYGAKCjxjZW50ZXI+IDxoND4gQ29tcGFyZSB5b3VyIGVzdGltYXRlcyB0byB0aGUgYXV0aG9ycy4gSWYgdGhlcmUgYXJlIGFueSBkaWZmZXJlbmNlcywgZGlzY3VzcyB3aHkgdGhhdCBtaWdodCBiZSB0aGUgY2FzZSAoMSBwYXJhZ3JhcGgpIDwvY2VudGVyPiA8L2g0PgoKV2UgY2FuIHNlZSBib3RoIHRoZSAiUG9vbGVkIG1vZGVsIiIgYXMgd2VsbCBhcyB0aGUgIldpdGhpbiBtb2RlbCIsIHRoZSBQTE0gcHJvZHVjZSByZWxldmFudCByZXN1bHRzLiBUaGUgdGFyZ2V0IHZhcmlhYmxlIGlzIHByZWRpY3RlZCB0byBiZSAuOTY5IGFuZCAuODMgd2hpbGUgdGhlIGF1dGhvcnMgY29uY2x1ZGUgd2l0aCAuOTcgYW5kIC44My4gSSB0aGluayB0aGF0IGl0IGlzIGZhaXIgdG8gYXNzdW1lIHRoYXQgdGhlIGF1dGhvcnMgcm91bmQgdXAgLjk2OS4gSW5kZWVkIHRoZSByZXN1bHRzIGFyZSBpZGVudGljYWwgYW5kIHRoaXMgbWlnaHQgY29tZSBhcyBhIHN1cnByaXNlIGZvciBzdWNoIGEgcmVwbGljYXRpb24gcHVycG9zZTsgaG93ZXZlciwgdGhpcyBpcyBhIGNhc2Utc3R1ZHkgd2l0aCBwdWJsaWNseSBhdmFpbGFibGUgZGF0YSB0aGF0IGlzIG1lYW50IHRvIGJlIHJlcGxpY2F0ZWQgYW5kIHRoZXJlZm9yZSBpdCBpcyBzaW1wbGlzdGljIGFuZCBlYXNpZXIgdG8gcmVwbGljYXRlLgoKPGNlbnRlcj4gPGg0PiBDYW4geW91IHRoaW5rIG9mIGEgbW9kZWwvcmVncmVzc2lvbi9xdWVzdGlvbiB0aGUgYXV0aG9ycyBkaWRu4oCZdCBjb25zaWRlcj8gSWYgc28sIHBlcmZvcm0geW91ciBvd24gYW5hbHlzaXMgYW5kIHByZXNlbnQgaXQuICgxIHBhcmFncmFwaCBhbmQgMi0zIHRhYmxlcyBvciBncmFwaHMgbWF4KSA8L2NlbnRlcj4gPC9oND4KClRoZSBkYXRhc2V0IGRvZXMgbm90IGluY2x1ZGUgYSB2YXJpYWJsZSB0aGF0IHdvdWxkIGJlIGEgcHJveHkgdG8gcmVwcmVzZW50IGxlZ2lzbGF0aW9uLiBJZiBhIHNjaG9sYXIgd2FudHMgdG8gbGVhcm4gYWJvdXQgYm9vdGxlZ2dpbmcgaXQgc2VlbXMgcGxhdXNpYmxlIHRvIGluY2x1ZGUgdmFyaWFibGVzIHRoYXQgd291bGQgZW50YWlsIHRoZSBsZWdhbCBwcmFjdGljYWwgZGlmZmljdWx0eSB0aGF0IHRoaXMgYWN0aXZpdHkgd291bGQgaW5jbHVkZS4gQ2xlYXJseSwgc3VjaCBhIHZhcmlhYmxlIGRvZXMgbm90IGluY2x1ZGUgYXMgaXMsIGJ1dCBwcm94aWVzIGhhdmUgYmVlbiB1c2VkIHRvIHNvbHZlIGZvciBzaW1pbGFyIHByb2JsZW1zLgoKPGNlbnRlcj4gPGg0PiBEaXNjdXNzIHRocmVhdHMgdG8gaW50ZXJuYWwgYW5kIGV4dGVybmFsIHZhbGlkaXR5IG9mIHRoZSBhdXRob3JzIGFuZCB5b3VyIGV4dGVuc2lvbnMgcmVzdWx0cy4gQmUgY3JpdGljYWwgLSBjYW4gd2UgcmVseSBvbiB0aGUgcmVzdWx0cz8gV2h5PyBXaHkgbm90PyBDb25jbHVkZSAoMSBwYXJhZ3JhcGgpIDwvY2VudGVyPiA8L2g0PgpBcyBJIGhhZCBtZW50aW9uZWQsIHRoZSBlY29ub21pYyBmcmFtZXdvcmsgb2YgdGhlIHN0dWR5IGNvdWxkIGJlIHB1c2hlZCBmdXJ0aGVyIGluIG9yZGVyIHRvIGdldCBjbG9zZXIgdG8gd2hhdCB3b3VsZCBiZSB0aGUgInJlYWwgbW9kZWwiLiBBIGdvb2Qgc3RhcnQgaXMgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gdGhlIHN0YXRlLXNwZWNpZmljIGJvb3RsZWdnaW5nIGxlZ2lzbGF0aW9uIGFzIGEgdmFyaWFibGUgYXMgd2VsbCBhcyB0aGUgbGV2ZWwgb2YgZW5mb3JjZW1lbnQgb2YgdGhvc2UgbGF3cy4gVGhpcyB3aWxsIGluY2x1ZGUgc3BlY2lmaWNhdGlvbiBvZiB0aGUgbW9kZWwgcGVyIGJvcmRlciAoaS5lLiBDYWxpZm9ybmlhLVV0YWgsIENhbGlmb3JuaWEtT3JlZ29uIGV0Yykgd2hpY2ggd2lsbCBsZWFkIHRvIGJldHRlciBlc3RpYW10aW9uIG9mIHRoZSBjYXVzYWwgZWZmZWN0IGluIG15IG9waW5pb24uIEhvd2V2ZXIsIGZvciB0aGlzIHB1cnBvc2UgYSBtb3JlIGdyYW51bGFyIGRhdGFzZXQgaXMgbmVlZGVkLgoKSW4gdGVybXMgb2YgZXh0ZXJuYWwgdmFsaWRpdHksIHBlcmhhcHMgdGhlIGZvbGxvd2luZyBmcmFtZXdvcmsgY291bGQgYmUgdXNlZCB0byBjb25zaWRlciBjb25zdW1wdGlvbiBhbmQgc211Z2dsaW5nIG9mIGRydWdzO2hvd2V2ZXIsIHNpbmNlIGFzIG9mIG5vdyBkcnVncyBhcmUgcHJvaGliaXRlZCBpbiBzb21lIHN0YXRlcyBib290bGVnZ2luZyBvZiBkcnVncyBpcyBhIGRpZmZlcmVudCBhY3Rpdml0eSB0aGF0IGlzIG5vdCBtZWFudCB0byBzYXZlIGNvc3RzIGJ1dCByYXRoZXIgdG8gc3VwcGx5IGlsbGVnYWwgZHJ1Z3MuIFRoZSBmcmFtZXdvayB3aWxsIGhhdmUgdG8gYmUgbW9kaWZpZWQgdG8gYWNjb3VudCBmb3IgdGhpcyB2YXJpYXRpb24uCgo8Y2VudGVyPiA8aDQ+IFJlZmVyZW5jZXM6IDwvY2VudGVyPiA8L2g0PgpCYWx0YWdpLCBCLiBILiwgJiBMZXZpbiwgRC4gKDE5OTIpLiBDaWdhcmV0dGUgdGF4YXRpb246IHJhaXNpbmcgcmV2ZW51ZXMgYW5kIHJlZHVjaW5nIGNvbnN1bXB0aW9uLiBTdHJ1Y3R1cmFsIENoYW5nZSBhbmQgRWNvbm9taWMgRHluYW1pY3MsIDMoMiksIDMyMS0zMzUuCgpCYWx0YWdpLCBCLiBILiwgR3JpZmZpbiwgSi4gTS4sICYgWGlvbmcsIFcuICgyMDAwKS4gVG8gcG9vbCBvciBub3QgdG8gcG9vbDogSG9tb2dlbmVvdXMgdmVyc3VzIGhldGVyb2dlbmVvdXMgZXN0aW1hdG9ycyBhcHBsaWVkIHRvIGNpZ2FyZXR0ZSBkZW1hbmQuIFJldmlldyBvZiBFY29ub21pY3MgYW5kIFN0YXRpc3RpY3MsIDgyKDEpLCAxMTctMTI2LgoKSm9obiwgUi4gTS4sIFJhbywgUi4gSy4sIFJhbywgTS4gRy4sIE1vb3JlLCBKLiwgRGVzaHBhbmRlLCBSLiBTLiwgU2VuZ3VwdGEsIEouLCAuLi4gJiBKaGEsIFAuICgyMDEwKS4gVGhlIGVjb25vbWljcyBvZiB0b2JhY2NvIGFuZCB0b2JhY2NvIHRheGF0aW9uIGluIEluZGlhLiBQYXJpczogSW50ZXJuYXRpb25hbCBVbmlvbiBBZ2FpbnN0IFR1YmVyY3Vsb3NpcyBhbmQgTHVuZyBEaXNlYXNlLCAxLTUyLgoKPGNlbnRlcj4gPGg0PiBBcHBlbmRpeDogPC9jZW50ZXI+IDwvaDQ+CjxjZW50ZXI+IDxoNT4gQ29uc2lkZXJhdGlvbiBvZiBvdGhlciBmcmFtZXdvcmtzOiBSQ1QgPGNlbnRlcj4gPC9oNT4KTGV0J3MgY29uc2lkZXIgb3RoZXIgcmlnb3JvdXMgbWV0aG9kcyB0byBlc3RpbWF0ZSBzdWNoIGNhdXNhbCBlZmZlY3RzOiBQZXJoYXBzIGFuZCBSQ1QgY2FuIGJlIHVzZWQ/IHdlbGwsIHRoZSBiaWdnZXN0IHRocmVhdCB0byB0aGlzIGV4cGVyaW1lbnQncyB2YWxpZGl0eSBpcyBpbnRlci1zdGF0ZSBzcGlsbG92ZXIgZWZmZWN0cy4gV2lsbCBhbiBSQ1Qgc3VmZmVyIGZyb20gdGhvc2Ugc3BpbGxvdmVyIGVmZmVjdHM/IFdlbGwsIHBlcmhhcHMgYSBzY2hvbGFyIGNhbiBjb21lIHVwIHdpdGggdGhlIGZvbGxvd2luZyBmcmFtZXdvcms6ClNpbmNlIHdlIGFja25vd2xlZGdlIHRoZSBhZGphY2VudCBzdGF0ZXMgc3BpbGxvdmVyLCB3ZSB3aWxsIGFzc2lnbiB0cmVhdG1lbnQgb25seSB0byBzdGF0ZXMgc29ycm91bmRlZCBieSBvdGhlciBzdGF0ZXMgaW4gd2hpY2ggdGhlIHByaWNlIGlzIGFscmVhZHkgaGlnaGVyLCBhbmQgd2lsbCByZW1haW4gYXQgbGVhc3QgdGhlIHNhbWUgb3IgaGlnaGVyIGFmdGVyIHRoZSB0YXggaW5jcmVhc2UuIFRoaXMgc2hvdWxkIGluIHRoZW9yeSBtaXRpZ2F0ZSBib290bGVnZ2luZzsgaG93ZXZlciBpdCB3b3VsZCBvbmx5IGZ1cnRoZXIgcHVzaCBub24tYWRqYWNlbnQgYm9vdGxlZ2dpbmcgZWZmZWN0cyB3aGljaCBhcmUgbm90IGFjY291bnRlZCBmb3IgaW4gdGhlIG1vZGVsLlRoZXJlZm9yZSBhbiBSQ1QgaXMgbm90IHByYWN0aWNhbCBmcmFtZXdvcmsgZm9yIHRoaXMgcHVycG9zZSwgYm90aCBiZWNhdXNlIGl0IGlzIG5vdCBmZWFzaWJsZSBhcyB3ZWxsIGFzIHByb2JsZW1hdGljIGluIHRlcm1zIG9mIGV4cGVyaW1lbnRhbCBkZXNpZ24gKGkuZS4gbm90IHNvdmxpbmcgdGhlIHNwaWxsLW92ZXIgZWZmZWN0cykuIAoKPGNlbnRlcj4gPGg1PiBBcHBsaWNhdGlvbnMgdG8gSW5kaWE6IDxjZW50ZXI+IDwvaDU+ClVuZm9ydHVuYXRlbHksIEluZGlhJ3MgVGFiYWNjbyBpbmR1c3RyeSBvZmZlcnMgYnJvYWQgc3BlY3RydW0gb2YgcHJvZHVjdHMgZnJvbSByZWd1bGFyIGNpZ2FyZXR0ZXMgdG8gc3BlY2lhbCBjaGV3aW5nIHRhYmFjY28gdG8gYmlkaXMgKHRlbmR1IGxlYWYpLiBBIHNwZWNpYWwgdGFzayBmb3JjZSBkZXNpZ25hdGVkIHRvIHRoaXMgcHJvYmxlbSBwdWJsaXNoZWQgaW4gMjAxMCB0aGVpciBjb25jbHVzaW9ucywgc3VnZ2VzdGluZyBkcmFzdGljIGluY3JlYXNlIGluIHNpbiB0YXhlcy4=