Exercise 1. Polling - expected value of S
Suppose you poll a population in which a proportion p of voters are Democrats and 1-p are Republicans. Your sample size is N=25. Consider the random variable S, which is the total number of Democrats in your sample.
What is the expected value of this random variable S?
Answer:
\(\mbox{E}(S) = 25p\)
Exercise 2. Polling - standard error of S
Again, consider the random variable S, which is the total number of Democrats in your sample of 25 voters. The variable p describes the proportion of Democrats in the sample, whereas 1-p describes the proportion of Republicans.
What is the standard error of S?
Answer:
\(\mbox{SE}(S) = \sqrt{25 p (1-p)}\)
Exercise 3. Polling - expected value of \(\bar{X}\)
Consider the random variable S/N, which is equivalent to the sample average that we have been denoting as \(\bar{X}\). The variable N represents the sample size and p is the proportion of Democrats in the population.
What is the expected value of \(\bar{X}\)?
Answer:
\(\mbox{E}(\bar{X}) = p\)
Exercise 4. Polling - standard error of \(\bar{X}\)
What is the standard error of the sample average, \(\bar{X}\)?
The variable N represents the sample size and p is the proportion of Democrats in the population.
Answer:
\(\mbox{SE}(\bar{X}) = \sqrt{p (1-p) / N}\)
Exercise 5. se versus p
Write a line of code that calculates the standard error se of a sample average when you poll 25 people in the population. Generate a sequence of 100 proportions of Democrats p that vary from 0 (no Democrats) to 1 (all Democrats).
Plot se versus p for the 100 different proportions.
Instructions
- Use the
seq function to generate a vector of 100 values of p that range from 0 to 1.
- Use the
sqrt function to generate a vector of standard errors for all values of p.
- Use the plot function to generate a plot with
p on the x-axis and se on the y-axis.
Answer:
rr # N represents the number of people polled N <- 25 # Create a variable p that contains 100 proportions ranging from 0 to 1 using the seq function p <- seq(0, 1, length.out=100) # Create a variable se that contains the standard error of each sample average se <- sqrt(p * (1-p) / N) # Plot p on the x-axis and se on the y-axis plot(p, se)

Exercise 6. Multiple plots of se versus p
Using the same code as in the previous exercise, create a for-loop that generates three plots of p versus se when the sample sizes equal N=25, N=100, and N=1000.
Instructions
- Your for-loop should contain two lines of code to be repeated for three different values of N.
- The first line within the for-loop should use the
sqrt function to generate a vector of standard errors se for all values of p.
- The second line within the for-loop should use the plot function to generate a plot with
p on the x-axis and se on the y-axis.
- Use the
ylim argument to keep the y-axis limits constant across all three plots. The lower limit should be equal to 0 and the upper limit should equal the highest calculated standard error across all values of p and N.
Answer:
rr # The vector p contains 100 proportions of Democrats ranging from 0 to 1 using the seq function p <- seq(0, 1, length = 100) # The vector sample_sizes contains the three sample sizes sample_sizes <- c(25, 100, 1000) # Write a for-loop that calculates the standard error se for every value of p for each of the three samples sizes N in the vector sample_sizes. Plot the three graphs, using the ylim argument to standardize the y-axis across all three plots. for (val in sample_sizes) { se <- sqrt(p * (1-p) / val) plot(p, se, ylim=c(0,max(se))) }



Exercise 7. Expected value of d
Our estimate for the difference in proportions of Democrats and Republicans is \(d = \bar{X} - (1-\bar{X})\).
Which derivation correctly uses the rules we learned about sums of random variables and scaled random variables to derive the expected value of d?
Answer:
\(\begin{eqnarray} \mbox{E}[\bar{X} - (1-\bar{X})] &=& \mbox{E}[2\bar{X} - 1] \
&=& 2\mbox{E}[\bar{X}] - 1 \
&=& 2p - 1\
&=& p - (1-p) \end{eqnarray}\)
Exercise 8. Standard error of d
Our estimate for the difference in proportions of Democrats and Republicans is \(d = \bar{X} - (1-\bar{X})\).
Which derivation correctly uses the rules we learned about sums of random variables and scaled random variables to derive the standard error of d?
Answer:
\(\begin{eqnarray} \mbox{SE}[\bar{X} - (1-\bar{X})] &=& \mbox{SE}[2\bar{X} - 1] \
&=& 2\mbox{SE}[\bar{X}] \
&=& 2\sqrt{p(1-p)/N} \end{eqnarray}\)
Exercise 9. Standard error of the spread
Say the actual proportion of Democratic voters is \(p=0.45\). In this case, the Republican party is winning by a relatively large margin of \(d= -0.1\), or a 10% margin of victory. What is the standard error of the spread \(2\bar{X}-1\) in this case?
Instructions
- Use the
sqrt function to calculate the standard error of the spread \(2\bar{X}-1\).
Answer:
rr # N represents the number of people polled N <- 25 # p represents the proportion of Democratic voters p <- 0.45 # Calculate the standard error of the spread. Print this value to the console. 2 * sqrt(p * (1-p) / N)
[1] 0.1989975
Exercise 10. Sample size
So far we have said that the difference between the proportion of Democratic voters and Republican voters is about 10% and that the standard error of this spread is about 0.2 when N=25. Select the statement that explains why this sample size is sufficient or not.
Answer:
This sample size is too small because the standard error is larger than the spread.
END
LS0tDQp0aXRsZTogIkRhdGEgU2NpZW5jZTogSW5mZXJlbmNlIGFuZCBNb2RlbGxpbmcgcGFydCBJIChFWEVSQ0lTRSkiDQpzdWJ0aXRsZTogIkFuIEV4ZXJjaXNlcyBmcm9tIEhhcnZhcmRYOiBQSDEyNS40eCINCmF1dGhvcjogIlJhZmFlbCBJcml6YXJyeSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCi0tLQ0KDQo8aDM+RXhlcmNpc2UgMS4gUG9sbGluZyAtIGV4cGVjdGVkIHZhbHVlIG9mIGBTYDwvaDM+DQoNCg0KU3VwcG9zZSB5b3UgcG9sbCBhIHBvcHVsYXRpb24gaW4gd2hpY2ggYSBwcm9wb3J0aW9uICpwKiBvZiB2b3RlcnMgYXJlIERlbW9jcmF0cyBhbmQgKjEtcCogYXJlIFJlcHVibGljYW5zLiBZb3VyIHNhbXBsZSBzaXplIGlzICoqTj0yNSoqLiBDb25zaWRlciB0aGUgcmFuZG9tIHZhcmlhYmxlICpTKiwgd2hpY2ggaXMgdGhlIHRvdGFsIG51bWJlciBvZiBEZW1vY3JhdHMgaW4geW91ciBzYW1wbGUuDQoNCldoYXQgaXMgdGhlIGV4cGVjdGVkIHZhbHVlIG9mIHRoaXMgcmFuZG9tIHZhcmlhYmxlICpTKj8NCg0KPC9icj4NCg0KPGg0PkFuc3dlcjo8L2g0Pg0KDQokXG1ib3h7RX0oUykgPSAyNXAkDQoNCjwvYnI+DQoNCi0tLQ0KDQo8aDM+RXhlcmNpc2UgMi4gUG9sbGluZyAtIHN0YW5kYXJkIGVycm9yIG9mIGBTYDwvaDM+DQoNCg0KQWdhaW4sIGNvbnNpZGVyIHRoZSByYW5kb20gdmFyaWFibGUgKlMqLCB3aGljaCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIERlbW9jcmF0cyBpbiB5b3VyIHNhbXBsZSBvZiAyNSB2b3RlcnMuIFRoZSB2YXJpYWJsZSAqcCogZGVzY3JpYmVzIHRoZSBwcm9wb3J0aW9uIG9mIERlbW9jcmF0cyBpbiB0aGUgc2FtcGxlLCB3aGVyZWFzICoxLXAqIGRlc2NyaWJlcyB0aGUgcHJvcG9ydGlvbiBvZiBSZXB1YmxpY2Fucy4NCg0KV2hhdCBpcyB0aGUgc3RhbmRhcmQgZXJyb3Igb2YgKlMqPw0KDQo8L2JyPg0KDQo8aDQ+QW5zd2VyOjwvaDQ+DQoNCiRcbWJveHtTRX0oUykgPSBcc3FydHsyNSBwICgxLXApfSQNCg0KPC9icj4NCg0KLS0tDQoNCjxoMz5FeGVyY2lzZSAzLiBQb2xsaW5nIC0gZXhwZWN0ZWQgdmFsdWUgb2YgJFxiYXJ7WH0kPC9oMz4NCg0KDQpDb25zaWRlciB0aGUgcmFuZG9tIHZhcmlhYmxlICpTL04qLCB3aGljaCBpcyBlcXVpdmFsZW50IHRvIHRoZSBzYW1wbGUgYXZlcmFnZSB0aGF0IHdlIGhhdmUgYmVlbiBkZW5vdGluZyBhcyAkXGJhcntYfSQuIFRoZSB2YXJpYWJsZSAqTiogcmVwcmVzZW50cyB0aGUgc2FtcGxlIHNpemUgYW5kICpwKiBpcyB0aGUgcHJvcG9ydGlvbiBvZiBEZW1vY3JhdHMgaW4gdGhlIHBvcHVsYXRpb24uDQoNCldoYXQgaXMgdGhlIGV4cGVjdGVkIHZhbHVlIG9mICRcYmFye1h9JD8NCg0KPC9icj4NCg0KPGg0PkFuc3dlcjo8L2g0Pg0KDQokXG1ib3h7RX0oXGJhcntYfSkgPSBwJA0KDQo8L2JyPg0KDQotLS0NCg0KPGgzPkV4ZXJjaXNlIDQuIFBvbGxpbmcgLSBzdGFuZGFyZCBlcnJvciBvZiAkXGJhcntYfSQ8L2gzPg0KDQoNCldoYXQgaXMgdGhlIHN0YW5kYXJkIGVycm9yIG9mIHRoZSBzYW1wbGUgYXZlcmFnZSwgJFxiYXJ7WH0kPw0KDQpUaGUgdmFyaWFibGUgKk4qIHJlcHJlc2VudHMgdGhlIHNhbXBsZSBzaXplIGFuZCAqcCogaXMgdGhlIHByb3BvcnRpb24gb2YgRGVtb2NyYXRzIGluIHRoZSBwb3B1bGF0aW9uLg0KDQo8L2JyPg0KDQo8aDQ+QW5zd2VyOjwvaDQ+DQoNCiRcbWJveHtTRX0oXGJhcntYfSkgPSBcc3FydHtwICgxLXApIC8gTn0kDQoNCjwvYnI+DQoNCi0tLQ0KDQo8aDM+RXhlcmNpc2UgNS4gYHNlYCB2ZXJzdXMgYHBgPC9oMz4NCg0KDQpXcml0ZSBhIGxpbmUgb2YgY29kZSB0aGF0IGNhbGN1bGF0ZXMgdGhlIHN0YW5kYXJkIGVycm9yIGBzZWAgb2YgYSBzYW1wbGUgYXZlcmFnZSB3aGVuIHlvdSBwb2xsIDI1IHBlb3BsZSBpbiB0aGUgcG9wdWxhdGlvbi4gR2VuZXJhdGUgYSBzZXF1ZW5jZSBvZiAxMDAgcHJvcG9ydGlvbnMgb2YgRGVtb2NyYXRzIGBwYCB0aGF0IHZhcnkgZnJvbSAwIChubyBEZW1vY3JhdHMpIHRvIDEgKGFsbCBEZW1vY3JhdHMpLg0KDQpQbG90IGBzZWAgdmVyc3VzIGBwYCBmb3IgdGhlIDEwMCBkaWZmZXJlbnQgcHJvcG9ydGlvbnMuDQoNCg0KKipJbnN0cnVjdGlvbnMqKg0KDQoqIFVzZSB0aGUgYHNlcWAgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSB2ZWN0b3Igb2YgMTAwIHZhbHVlcyBvZiBgcGAgdGhhdCByYW5nZSBmcm9tIDAgdG8gMS4NCiogVXNlIHRoZSBgc3FydGAgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSB2ZWN0b3Igb2Ygc3RhbmRhcmQgZXJyb3JzIGZvciBhbGwgdmFsdWVzIG9mIGBwYC4NCiogVXNlIHRoZSBwbG90IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgcGxvdCB3aXRoIGBwYCBvbiB0aGUgeC1heGlzIGFuZCBgc2VgIG9uIHRoZSB5LWF4aXMuDQoNCjwvYnI+DQoNCjxoND5BbnN3ZXI6PC9oND4NCg0KYGBge3J9DQojIGBOYCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgcGVvcGxlIHBvbGxlZA0KTiA8LSAyNQ0KDQojIENyZWF0ZSBhIHZhcmlhYmxlIGBwYCB0aGF0IGNvbnRhaW5zIDEwMCBwcm9wb3J0aW9ucyByYW5naW5nIGZyb20gMCB0byAxIHVzaW5nIHRoZSBgc2VxYCBmdW5jdGlvbg0KcCA8LSBzZXEoMCwgMSwgbGVuZ3RoLm91dD0xMDApDQoNCiMgQ3JlYXRlIGEgdmFyaWFibGUgYHNlYCB0aGF0IGNvbnRhaW5zIHRoZSBzdGFuZGFyZCBlcnJvciBvZiBlYWNoIHNhbXBsZSBhdmVyYWdlDQpzZSA8LSBzcXJ0KHAgKiAoMS1wKSAvIE4pDQoNCiMgUGxvdCBgcGAgb24gdGhlIHgtYXhpcyBhbmQgYHNlYCBvbiB0aGUgeS1heGlzDQpwbG90KHAsIHNlKQ0KYGBgDQoNCg0KPC9icj4NCg0KLS0tDQoNCjxoMz5FeGVyY2lzZSA2LiBNdWx0aXBsZSBwbG90cyBvZiBgc2VgIHZlcnN1cyBgcGA8L2gzPg0KDQoNClVzaW5nIHRoZSBzYW1lIGNvZGUgYXMgaW4gdGhlIHByZXZpb3VzIGV4ZXJjaXNlLCBjcmVhdGUgYSBmb3ItbG9vcCB0aGF0IGdlbmVyYXRlcyB0aHJlZSBwbG90cyBvZiBgcGAgdmVyc3VzIGBzZWAgd2hlbiB0aGUgc2FtcGxlIHNpemVzIGVxdWFsICpOPTI1KiwgKk49MTAwKiwgYW5kICpOPTEwMDAqLg0KDQoNCioqSW5zdHJ1Y3Rpb25zKioNCg0KKiBZb3VyIGZvci1sb29wIHNob3VsZCBjb250YWluIHR3byBsaW5lcyBvZiBjb2RlIHRvIGJlIHJlcGVhdGVkIGZvciB0aHJlZSBkaWZmZXJlbnQgdmFsdWVzIG9mICpOKi4NCiogVGhlIGZpcnN0IGxpbmUgd2l0aGluIHRoZSBmb3ItbG9vcCBzaG91bGQgdXNlIHRoZSBgc3FydGAgZnVuY3Rpb24gdG8gZ2VuZXJhdGUgYSB2ZWN0b3Igb2Ygc3RhbmRhcmQgZXJyb3JzIGBzZWAgZm9yIGFsbCB2YWx1ZXMgb2YgYHBgLg0KKiBUaGUgc2Vjb25kIGxpbmUgd2l0aGluIHRoZSBmb3ItbG9vcCBzaG91bGQgdXNlIHRoZSBwbG90IGZ1bmN0aW9uIHRvIGdlbmVyYXRlIGEgcGxvdCB3aXRoIGBwYCBvbiB0aGUgeC1heGlzIGFuZCBgc2VgIG9uIHRoZSB5LWF4aXMuDQoqIFVzZSB0aGUgYHlsaW1gIGFyZ3VtZW50IHRvIGtlZXAgdGhlIHktYXhpcyBsaW1pdHMgY29uc3RhbnQgYWNyb3NzIGFsbCB0aHJlZSBwbG90cy4gVGhlIGxvd2VyIGxpbWl0IHNob3VsZCBiZSBlcXVhbCB0byAwIGFuZCB0aGUgdXBwZXIgbGltaXQgc2hvdWxkIGVxdWFsIHRoZSBoaWdoZXN0IGNhbGN1bGF0ZWQgc3RhbmRhcmQgZXJyb3IgYWNyb3NzIGFsbCB2YWx1ZXMgb2YgYHBgIGFuZCBgTmAuDQoNCjwvYnI+DQoNCjxoND5BbnN3ZXI6PC9oND4NCg0KYGBge3J9DQojIFRoZSB2ZWN0b3IgYHBgIGNvbnRhaW5zIDEwMCBwcm9wb3J0aW9ucyBvZiBEZW1vY3JhdHMgcmFuZ2luZyBmcm9tIDAgdG8gMSB1c2luZyB0aGUgYHNlcWAgZnVuY3Rpb24NCnAgPC0gc2VxKDAsIDEsIGxlbmd0aCA9IDEwMCkNCg0KIyBUaGUgdmVjdG9yIGBzYW1wbGVfc2l6ZXNgIGNvbnRhaW5zIHRoZSB0aHJlZSBzYW1wbGUgc2l6ZXMNCnNhbXBsZV9zaXplcyA8LSBjKDI1LCAxMDAsIDEwMDApDQoNCiMgV3JpdGUgYSBmb3ItbG9vcCB0aGF0IGNhbGN1bGF0ZXMgdGhlIHN0YW5kYXJkIGVycm9yIGBzZWAgZm9yIGV2ZXJ5IHZhbHVlIG9mIGBwYCBmb3IgZWFjaCBvZiB0aGUgdGhyZWUgc2FtcGxlcyBzaXplcyBgTmAgaW4gdGhlIHZlY3RvciBgc2FtcGxlX3NpemVzYC4gUGxvdCB0aGUgdGhyZWUgZ3JhcGhzLCB1c2luZyB0aGUgYHlsaW1gIGFyZ3VtZW50IHRvIHN0YW5kYXJkaXplIHRoZSB5LWF4aXMgYWNyb3NzIGFsbCB0aHJlZSBwbG90cy4NCmZvciAodmFsIGluIHNhbXBsZV9zaXplcykgew0KICAgIHNlIDwtIHNxcnQocCAqICgxLXApIC8gdmFsKQ0KICAgIHBsb3QocCwgc2UsIHlsaW09YygwLG1heChzZSkpKQ0KfQ0KYGBgDQoNCg0KDQo8L2JyPg0KDQotLS0NCg0KPGgzPkV4ZXJjaXNlIDcuIEV4cGVjdGVkIHZhbHVlIG9mIGBkYDwvaDM+DQoNCg0KT3VyIGVzdGltYXRlIGZvciB0aGUgZGlmZmVyZW5jZSBpbiBwcm9wb3J0aW9ucyBvZiBEZW1vY3JhdHMgYW5kIFJlcHVibGljYW5zIGlzICRkID0gXGJhcntYfSAtICgxLVxiYXJ7WH0pJC4NCg0KV2hpY2ggZGVyaXZhdGlvbiBjb3JyZWN0bHkgdXNlcyB0aGUgcnVsZXMgd2UgbGVhcm5lZCBhYm91dCBzdW1zIG9mIHJhbmRvbSB2YXJpYWJsZXMgYW5kIHNjYWxlZCByYW5kb20gdmFyaWFibGVzIHRvIGRlcml2ZSB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgYGRgPw0KDQo8L2JyPg0KDQo8aDQ+QW5zd2VyOjwvaDQ+DQoNCiRcYmVnaW57ZXFuYXJyYXl9DQpcbWJveHtFfVtcYmFye1h9IC0gKDEtXGJhcntYfSldICY9JiBcbWJveHtFfVsyXGJhcntYfSAtIDFdIFwNCiY9JiAyXG1ib3h7RX1bXGJhcntYfV0gLSAxICBcDQomPSYgMnAgLSAxXA0KJj0mIHAgLSAoMS1wKQ0KXGVuZHtlcW5hcnJheX0kDQoNCjwvYnI+DQoNCi0tLQ0KDQo8aDM+RXhlcmNpc2UgOC4gU3RhbmRhcmQgZXJyb3Igb2YgYGRgPC9oMz4NCg0KDQpPdXIgZXN0aW1hdGUgZm9yIHRoZSBkaWZmZXJlbmNlIGluIHByb3BvcnRpb25zIG9mIERlbW9jcmF0cyBhbmQgUmVwdWJsaWNhbnMgaXMgJGQgPSBcYmFye1h9IC0gKDEtXGJhcntYfSkkLg0KDQpXaGljaCBkZXJpdmF0aW9uIGNvcnJlY3RseSB1c2VzIHRoZSBydWxlcyB3ZSBsZWFybmVkIGFib3V0IHN1bXMgb2YgcmFuZG9tIHZhcmlhYmxlcyBhbmQgc2NhbGVkIHJhbmRvbSB2YXJpYWJsZXMgdG8gZGVyaXZlIHRoZSBzdGFuZGFyZCBlcnJvciBvZiBgZGA/DQoNCjwvYnI+DQoNCjxoND5BbnN3ZXI6PC9oND4NCg0KJFxiZWdpbntlcW5hcnJheX0NClxtYm94e1NFfVtcYmFye1h9IC0gKDEtXGJhcntYfSldICY9JiBcbWJveHtTRX1bMlxiYXJ7WH0gLSAxXSBcDQomPSYgMlxtYm94e1NFfVtcYmFye1h9XSAgIFwNCiY9JiAyXHNxcnR7cCgxLXApL059DQpcZW5ke2VxbmFycmF5fSQNCg0KPC9icj4NCg0KLS0tDQoNCjxoMz5FeGVyY2lzZSA5LiBTdGFuZGFyZCBlcnJvciBvZiB0aGUgc3ByZWFkPC9oMz4NCg0KDQpTYXkgdGhlIGFjdHVhbCBwcm9wb3J0aW9uIG9mIERlbW9jcmF0aWMgdm90ZXJzIGlzICRwPTAuNDUkLiBJbiB0aGlzIGNhc2UsIHRoZSBSZXB1YmxpY2FuIHBhcnR5IGlzIHdpbm5pbmcgYnkgYSByZWxhdGl2ZWx5IGxhcmdlIG1hcmdpbiBvZiAkZD0gLTAuMSQsIG9yIGEgMTAlIG1hcmdpbiBvZiB2aWN0b3J5LiBXaGF0IGlzIHRoZSBzdGFuZGFyZCBlcnJvciBvZiB0aGUgc3ByZWFkICQyXGJhcntYfS0xJCBpbiB0aGlzIGNhc2U/DQoNCg0KKipJbnN0cnVjdGlvbnMqKg0KDQoqIFVzZSB0aGUgYHNxcnRgIGZ1bmN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZXJyb3Igb2YgdGhlIHNwcmVhZCAkMlxiYXJ7WH0tMSQuDQoNCjwvYnI+DQoNCjxoND5BbnN3ZXI6PC9oND4NCg0KYGBge3J9DQojIGBOYCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgcGVvcGxlIHBvbGxlZA0KTiA8LSAyNQ0KDQojIGBwYCByZXByZXNlbnRzIHRoZSBwcm9wb3J0aW9uIG9mIERlbW9jcmF0aWMgdm90ZXJzDQpwIDwtIDAuNDUNCg0KIyBDYWxjdWxhdGUgdGhlIHN0YW5kYXJkIGVycm9yIG9mIHRoZSBzcHJlYWQuIFByaW50IHRoaXMgdmFsdWUgdG8gdGhlIGNvbnNvbGUuDQoyICogc3FydChwICogKDEtcCkgLyBOKQ0KYGBgDQoNCg0KPC9icj4NCg0KLS0tDQoNCjxoMz5FeGVyY2lzZSAxMC4gU2FtcGxlIHNpemU8L2gzPg0KDQpTbyBmYXIgd2UgaGF2ZSBzYWlkIHRoYXQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcHJvcG9ydGlvbiBvZiBEZW1vY3JhdGljIHZvdGVycyBhbmQgUmVwdWJsaWNhbiB2b3RlcnMgaXMgYWJvdXQgMTAlIGFuZCB0aGF0IHRoZSBzdGFuZGFyZCBlcnJvciBvZiB0aGlzIHNwcmVhZCBpcyBhYm91dCAwLjIgd2hlbiBOPTI1LiBTZWxlY3QgdGhlIHN0YXRlbWVudCB0aGF0IGV4cGxhaW5zIHdoeSB0aGlzIHNhbXBsZSBzaXplIGlzIHN1ZmZpY2llbnQgb3Igbm90Lg0KDQo8L2JyPg0KDQo8aDQ+QW5zd2VyOjwvaDQ+DQoNClRoaXMgc2FtcGxlIHNpemUgaXMgdG9vIHNtYWxsIGJlY2F1c2UgdGhlIHN0YW5kYXJkIGVycm9yIGlzIGxhcmdlciB0aGFuIHRoZSBzcHJlYWQuDQoNCjwvYnI+DQoNCi0tLQ0KDQo8Y2VudGVyPkVORDwvY2VudGVyPg==