library(tidyverse)
library(openintro)

Exercise 1

Let X1, X2, . . . , Xn be n mutually independent random variables, each of which is uniformly distributed on the integers from 1 to k. Let Y denote the minimum of the Xi’s. Find the distribution of Y.

Let \(X_1, X_2, \ldots, X_n\) be \(n\) mutually independent random variables, each of which is uniformly distributed on the integers from 1 to \(k\). Let \(Y\) denote the minimum of the \(X_i\)’s.

The probability that \(Y\) is greater than or equal to \(y\), denoted as \(P(Y \geq y)\), is the probability that all of the \(X_i\)’s are greater than or equal to \(y\). Since the random variables are independent and uniformly distributed, we can calculate this probability.

\[ P(Y \geq y) = P(X_1 \geq y) \cdot P(X_2 \geq y) \cdot \ldots \cdot P(X_n \geq y) \]

Given that each \(X_i\) is uniformly distributed on the integers from 1 to \(k\), the probability \(P(X_i \geq y)\) is equal to \(\frac{{k - y + 1}}{k}\), as there are \(k - y + 1\) integers greater than or equal to \(y\) in the range [1, \(k\)].

Now, we can express the distribution function of \(Y\):

\[ P(Y \geq y) = \left( \frac{{k - y + 1}}{k} \right)^n \]

The probability mass function (PMF) of \(Y\), denoted as \(P(Y = y)\), is then given by:

\[ P(Y = y) = P(Y \geq y) - P(Y \geq y + 1) \]

\[ P(Y = y) = \left( \frac{{k - y + 1}}{k} \right)^n - \left( \frac{{k - y}}{k} \right)^n \]

This formula provides the distribution of \(Y\) for each value of \(y\) in the range [1, \(k\)].

Exercise 2

Your organization owns a copier (future lawyers, etc.) or MRI (future doctors). This machine has a manufacturer’s expected lifetime of 10 years. This means that we expect one failure every ten years. (Include the probability statements and R Code for each part.).

Let X be the number of failures in a 10-year period. If failures occur with an average rate of one failure every ten years, we can model X with a Poisson distribution.

X∼Poisson(λ), where λ is the average rate of failures per 10 years.

The probability of having no failures in a 10-year period is given by the Poisson probability mass function.

P(X=0)=e −λ, where e is the base of the natural logarithm.

#Average rate of failures per 10 years
lambda <- 1

#Probability of no failures
prob_no_failures <- exp(-lambda)
prob_no_failures
## [1] 0.3678794
  1. What is the probability that the machine will fail after 8 years?. Provide also the expected value and standard deviation. Model as a geometric. (Hint: the probability is equivalent to not failing during the first 8 years..)

Probability Statements:

  1. Geometric Distribution: Let \(X\) be the number of trials until the first success (failure in this case) in a sequence of independent Bernoulli trials, where the probability of success (failure) on each trial is \(p\). The probability mass function for a geometric distribution is given by: \[ P(X = k) = (1 - p)^{k-1} \cdot p \]

  2. Probability of Failing after 8 Years: The probability of the machine failing after 8 years is equivalent to the probability of not failing during the first 8 years. Thus, \[ P(X > 8) = 1 - P(X \leq 8) = 1 - \sum_{k=1}^{8} P(X = k) \]

R Code for Calculations:

Assuming \(p = \frac{1}{10}\) (one failure every ten years), the R code would be:

#Probability of failure in a given year
p_failure <- 1 / 10

#Probability of not failing during the first 8 years
prob_not_failing_8_years <- sum((1 - p_failure)^(1:8 - 1) * p_failure)

#Probability of failing after 8 years
prob_failing_after_8_years <- 1 - prob_not_failing_8_years
prob_failing_after_8_years
## [1] 0.4304672
  1. What is the probability that the machine will fail after 8 years?. Provide also the expected value and standard deviation. Model as an exponential.

Statements:

  1. Exponential Distribution: Let \(X\) be the time until the first failure of the machine, modeled as an exponential distribution with a rate parameter \(\lambda\). The probability density function (PDF) is: \[ f(t) = \lambda e^{-\lambda t} \] The cumulative distribution function (CDF) is: \[ F(t) = 1 - e^{-\lambda t} \]

  2. Probability of Failing after 8 Years: The probability that the machine fails after 8 years is \(1 - F(8)\).

R Code for Calculations:

Assuming \(\lambda = \frac{1}{10}\) (one failure every ten years), the R code would be:

#Rating parameter for the exponential distribution
lambda <- 1 / 10

#Probability of failing after 8 years
prob_failing_after_8_years <- 1 - exp(-lambda * 8)
prob_failing_after_8_years
## [1] 0.550671
  1. What is the probability that the machine will fail after 8 years?. Provide also the expected value and standard deviation. Model as a binomial. (Hint: 0 success in 8 years)

Statements:

  1. Binomial Distribution: Let \(X\) be the number of failures in a fixed number of trials (8 years), where each year is a Bernoulli trial with a probability of failure (\(p\)). The probability mass function (PMF) is: \[ P(X = k) = \binom{n}{k} p^k (1-p)^{n-k} \] where \(n\) is the number of trials and \(k\) is the number of successes.

  2. Probability of Failing after 8 Years: The probability of the machine failing after 8 years is \(P(X = 0)\).

R Code for Calculations:

Assuming \(p = \frac{1}{10}\) (one failure every ten years), the R code would be:

#Probability of failure in a given year
p_failure <- 1 / 10

#Number of trials (years)
n_trials <- 8

#Probability of failing after 8 years
prob_failing_after_8_years <- dbinom(0, n_trials, p_failure)
prob_failing_after_8_years
## [1] 0.4304672
  1. What is the probability that the machine will fail after 8 years?. Provide also the expected value and standard deviation. Model as a Poisson.
#Average rate of failures in a given year
lambda <- 1 / 10

#Number of years
n_years <- 8

#Probability of failing after 8 years
prob_failing_after_8_years <- 1 - ppois(0, lambda * n_years)
prob_failing_after_8_years
## [1] 0.550671
#Expected value and standard deviation
expected_value <- lambda
standard_deviation <- sqrt(lambda)

expected_value
## [1] 0.1
standard_deviation
## [1] 0.3162278
LS0tDQp0aXRsZTogIkRhdGEgNjA1IEhvbWV3b3JrIDciDQphdXRob3I6ICJMYXVyYSBQIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0OiBvcGVuaW50cm86OmxhYl9yZXBvcnQNCi0tLQ0KDQpgYGB7ciBsb2FkLXBhY2thZ2VzLCBtZXNzYWdlPUZBTFNFfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KG9wZW5pbnRybykNCmBgYA0KDQojIyMgRXhlcmNpc2UgMQ0KDQpMZXQgWDEsIFgyLCAuIC4gLiAsIFhuIGJlIG4gbXV0dWFsbHkgaW5kZXBlbmRlbnQgcmFuZG9tIHZhcmlhYmxlcywgZWFjaCBvZiB3aGljaCBpcyB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgb24gdGhlIGludGVnZXJzIGZyb20gMSB0byBrLiBMZXQgWSBkZW5vdGUgdGhlIG1pbmltdW0gb2YgdGhlIFhp4oCZcy4gRmluZCB0aGUgZGlzdHJpYnV0aW9uIG9mIFkuDQoNCg0KTGV0IFwoWF8xLCBYXzIsIFxsZG90cywgWF9uXCkgYmUgXChuXCkgbXV0dWFsbHkgaW5kZXBlbmRlbnQgcmFuZG9tIHZhcmlhYmxlcywgZWFjaCBvZiB3aGljaCBpcyB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgb24gdGhlIGludGVnZXJzIGZyb20gMSB0byBcKGtcKS4gTGV0IFwoWVwpIGRlbm90ZSB0aGUgbWluaW11bSBvZiB0aGUgXChYX2lcKSdzLg0KDQpUaGUgcHJvYmFiaWxpdHkgdGhhdCBcKFlcKSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gXCh5XCksIGRlbm90ZWQgYXMgXChQKFkgXGdlcSB5KVwpLCBpcyB0aGUgcHJvYmFiaWxpdHkgdGhhdCBhbGwgb2YgdGhlIFwoWF9pXCkncyBhcmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIFwoeVwpLiBTaW5jZSB0aGUgcmFuZG9tIHZhcmlhYmxlcyBhcmUgaW5kZXBlbmRlbnQgYW5kIHVuaWZvcm1seSBkaXN0cmlidXRlZCwgd2UgY2FuIGNhbGN1bGF0ZSB0aGlzIHByb2JhYmlsaXR5Lg0KDQpcWyBQKFkgXGdlcSB5KSA9IFAoWF8xIFxnZXEgeSkgXGNkb3QgUChYXzIgXGdlcSB5KSBcY2RvdCBcbGRvdHMgXGNkb3QgUChYX24gXGdlcSB5KSBcXQ0KDQpHaXZlbiB0aGF0IGVhY2ggXChYX2lcKSBpcyB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgb24gdGhlIGludGVnZXJzIGZyb20gMSB0byBcKGtcKSwgdGhlIHByb2JhYmlsaXR5IFwoUChYX2kgXGdlcSB5KVwpIGlzIGVxdWFsIHRvIFwoXGZyYWN7e2sgLSB5ICsgMX19e2t9XCksIGFzIHRoZXJlIGFyZSBcKGsgLSB5ICsgMVwpIGludGVnZXJzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBcKHlcKSBpbiB0aGUgcmFuZ2UgWzEsIFwoa1wpXS4NCg0KTm93LCB3ZSBjYW4gZXhwcmVzcyB0aGUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIG9mIFwoWVwpOg0KDQpcWyBQKFkgXGdlcSB5KSA9IFxsZWZ0KCBcZnJhY3t7ayAtIHkgKyAxfX17a30gXHJpZ2h0KV5uIFxdDQoNClRoZSBwcm9iYWJpbGl0eSBtYXNzIGZ1bmN0aW9uIChQTUYpIG9mIFwoWVwpLCBkZW5vdGVkIGFzIFwoUChZID0geSlcKSwgaXMgdGhlbiBnaXZlbiBieToNCg0KXFsgUChZID0geSkgPSBQKFkgXGdlcSB5KSAtIFAoWSBcZ2VxIHkgKyAxKSBcXQ0KDQpcWyBQKFkgPSB5KSA9IFxsZWZ0KCBcZnJhY3t7ayAtIHkgKyAxfX17a30gXHJpZ2h0KV5uIC0gXGxlZnQoIFxmcmFje3trIC0geX19e2t9IFxyaWdodClebiBcXQ0KDQpUaGlzIGZvcm11bGEgcHJvdmlkZXMgdGhlIGRpc3RyaWJ1dGlvbiBvZiBcKFlcKSBmb3IgZWFjaCB2YWx1ZSBvZiBcKHlcKSBpbiB0aGUgcmFuZ2UgWzEsIFwoa1wpXS4NCg0KDQoNCiMjIyBFeGVyY2lzZSAyDQoNCllvdXIgb3JnYW5pemF0aW9uIG93bnMgYSBjb3BpZXIgKGZ1dHVyZSBsYXd5ZXJzLCBldGMuKSBvciBNUkkgKGZ1dHVyZSBkb2N0b3JzKS4gVGhpcyBtYWNoaW5lIGhhcyBhIG1hbnVmYWN0dXJlcuKAmXMgZXhwZWN0ZWQgbGlmZXRpbWUgb2YgMTAgeWVhcnMuIFRoaXMgbWVhbnMgdGhhdCB3ZSBleHBlY3Qgb25lIGZhaWx1cmUgZXZlcnkgdGVuIHllYXJzLiAoSW5jbHVkZSB0aGUgcHJvYmFiaWxpdHkgc3RhdGVtZW50cyBhbmQgUiBDb2RlIGZvciBlYWNoIHBhcnQuKS4NCg0KDQpMZXQgWCBiZSB0aGUgbnVtYmVyIG9mIGZhaWx1cmVzIGluIGEgMTAteWVhciBwZXJpb2QuIElmIGZhaWx1cmVzIG9jY3VyIHdpdGggYW4gYXZlcmFnZSByYXRlIG9mIG9uZSBmYWlsdXJlIGV2ZXJ5IHRlbiB5ZWFycywgd2UgY2FuIG1vZGVsIFggd2l0aCBhIFBvaXNzb24gZGlzdHJpYnV0aW9uLg0KDQpY4oi8UG9pc3NvbijOuyksDQp3aGVyZSDOuyBpcyB0aGUgYXZlcmFnZSByYXRlIG9mIGZhaWx1cmVzIHBlciAxMCB5ZWFycy4NCg0KVGhlIHByb2JhYmlsaXR5IG9mIGhhdmluZyBubyBmYWlsdXJlcyBpbiBhIDEwLXllYXIgcGVyaW9kIGlzIGdpdmVuIGJ5IHRoZSBQb2lzc29uIHByb2JhYmlsaXR5IG1hc3MgZnVuY3Rpb24uDQoNClAoWD0wKT1lIOKIks67LCB3aGVyZSBlIGlzIHRoZSBiYXNlIG9mIHRoZSBuYXR1cmFsIGxvZ2FyaXRobS4NCg0KYGBge3J9DQojQXZlcmFnZSByYXRlIG9mIGZhaWx1cmVzIHBlciAxMCB5ZWFycw0KbGFtYmRhIDwtIDENCg0KI1Byb2JhYmlsaXR5IG9mIG5vIGZhaWx1cmVzDQpwcm9iX25vX2ZhaWx1cmVzIDwtIGV4cCgtbGFtYmRhKQ0KcHJvYl9ub19mYWlsdXJlcw0KDQpgYGANCg0KDQphLiBXaGF0IGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IHRoZSBtYWNoaW5lIHdpbGwgZmFpbCBhZnRlciA4IHllYXJzPy4gUHJvdmlkZSBhbHNvIHRoZQ0KZXhwZWN0ZWQgdmFsdWUgYW5kIHN0YW5kYXJkIGRldmlhdGlvbi4gTW9kZWwgYXMgYSBnZW9tZXRyaWMuIChIaW50OiB0aGUgcHJvYmFiaWxpdHkgaXMNCmVxdWl2YWxlbnQgdG8gbm90IGZhaWxpbmcgZHVyaW5nIHRoZSBmaXJzdCA4IHllYXJzLi4pDQoNCg0KUHJvYmFiaWxpdHkgU3RhdGVtZW50czoNCg0KMS4gKipHZW9tZXRyaWMgRGlzdHJpYnV0aW9uOioqDQogICBMZXQgXChYXCkgYmUgdGhlIG51bWJlciBvZiB0cmlhbHMgdW50aWwgdGhlIGZpcnN0IHN1Y2Nlc3MgKGZhaWx1cmUgaW4gdGhpcyBjYXNlKSBpbiBhIHNlcXVlbmNlIG9mIGluZGVwZW5kZW50IEJlcm5vdWxsaSB0cmlhbHMsIHdoZXJlIHRoZSBwcm9iYWJpbGl0eSBvZiBzdWNjZXNzIChmYWlsdXJlKSBvbiBlYWNoIHRyaWFsIGlzIFwocFwpLiBUaGUgcHJvYmFiaWxpdHkgbWFzcyBmdW5jdGlvbiBmb3IgYSBnZW9tZXRyaWMgZGlzdHJpYnV0aW9uIGlzIGdpdmVuIGJ5Og0KICAgXFsgUChYID0gaykgPSAoMSAtIHApXntrLTF9IFxjZG90IHAgXF0NCg0KMi4gKipQcm9iYWJpbGl0eSBvZiBGYWlsaW5nIGFmdGVyIDggWWVhcnM6KioNCiAgIFRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgbWFjaGluZSBmYWlsaW5nIGFmdGVyIDggeWVhcnMgaXMgZXF1aXZhbGVudCB0byB0aGUgcHJvYmFiaWxpdHkgb2Ygbm90IGZhaWxpbmcgZHVyaW5nIHRoZSBmaXJzdCA4IHllYXJzLiBUaHVzLA0KICAgXFsgUChYID4gOCkgPSAxIC0gUChYIFxsZXEgOCkgPSAxIC0gXHN1bV97az0xfV57OH0gUChYID0gaykgXF0NCg0KUiBDb2RlIGZvciBDYWxjdWxhdGlvbnM6DQoNCkFzc3VtaW5nIFwocCA9IFxmcmFjezF9ezEwfVwpIChvbmUgZmFpbHVyZSBldmVyeSB0ZW4geWVhcnMpLCB0aGUgUiBjb2RlIHdvdWxkIGJlOg0KDQoNCg0KYGBge3J9DQojUHJvYmFiaWxpdHkgb2YgZmFpbHVyZSBpbiBhIGdpdmVuIHllYXINCnBfZmFpbHVyZSA8LSAxIC8gMTANCg0KI1Byb2JhYmlsaXR5IG9mIG5vdCBmYWlsaW5nIGR1cmluZyB0aGUgZmlyc3QgOCB5ZWFycw0KcHJvYl9ub3RfZmFpbGluZ184X3llYXJzIDwtIHN1bSgoMSAtIHBfZmFpbHVyZSleKDE6OCAtIDEpICogcF9mYWlsdXJlKQ0KDQojUHJvYmFiaWxpdHkgb2YgZmFpbGluZyBhZnRlciA4IHllYXJzDQpwcm9iX2ZhaWxpbmdfYWZ0ZXJfOF95ZWFycyA8LSAxIC0gcHJvYl9ub3RfZmFpbGluZ184X3llYXJzDQpwcm9iX2ZhaWxpbmdfYWZ0ZXJfOF95ZWFycw0KYGBgDQoNCg0KYi4gV2hhdCBpcyB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgbWFjaGluZSB3aWxsIGZhaWwgYWZ0ZXIgOCB5ZWFycz8uIFByb3ZpZGUgYWxzbyB0aGUNCmV4cGVjdGVkIHZhbHVlIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24uIE1vZGVsIGFzIGFuIGV4cG9uZW50aWFsLiANCg0KU3RhdGVtZW50czoNCg0KMS4gKipFeHBvbmVudGlhbCBEaXN0cmlidXRpb246KioNCiAgIExldCBcKFhcKSBiZSB0aGUgdGltZSB1bnRpbCB0aGUgZmlyc3QgZmFpbHVyZSBvZiB0aGUgbWFjaGluZSwgbW9kZWxlZCBhcyBhbiBleHBvbmVudGlhbCBkaXN0cmlidXRpb24gd2l0aCBhIHJhdGUgcGFyYW1ldGVyIFwoXGxhbWJkYVwpLiBUaGUgcHJvYmFiaWxpdHkgZGVuc2l0eSBmdW5jdGlvbiAoUERGKSBpczoNCiAgIFxbIGYodCkgPSBcbGFtYmRhIGVeey1cbGFtYmRhIHR9IFxdDQogICBUaGUgY3VtdWxhdGl2ZSBkaXN0cmlidXRpb24gZnVuY3Rpb24gKENERikgaXM6DQogICBcWyBGKHQpID0gMSAtIGVeey1cbGFtYmRhIHR9IFxdDQoNCjIuICoqUHJvYmFiaWxpdHkgb2YgRmFpbGluZyBhZnRlciA4IFllYXJzOioqDQogICBUaGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgbWFjaGluZSBmYWlscyBhZnRlciA4IHllYXJzIGlzIFwoMSAtIEYoOClcKS4NCg0KUiBDb2RlIGZvciBDYWxjdWxhdGlvbnM6DQoNCkFzc3VtaW5nIFwoXGxhbWJkYSA9IFxmcmFjezF9ezEwfVwpIChvbmUgZmFpbHVyZSBldmVyeSB0ZW4geWVhcnMpLCB0aGUgUiBjb2RlIHdvdWxkIGJlOg0KDQoNCmBgYHtyfQ0KI1JhdGluZyBwYXJhbWV0ZXIgZm9yIHRoZSBleHBvbmVudGlhbCBkaXN0cmlidXRpb24NCmxhbWJkYSA8LSAxIC8gMTANCg0KI1Byb2JhYmlsaXR5IG9mIGZhaWxpbmcgYWZ0ZXIgOCB5ZWFycw0KcHJvYl9mYWlsaW5nX2FmdGVyXzhfeWVhcnMgPC0gMSAtIGV4cCgtbGFtYmRhICogOCkNCnByb2JfZmFpbGluZ19hZnRlcl84X3llYXJzDQpgYGANCg0KDQpjLiBXaGF0IGlzIHRoZSBwcm9iYWJpbGl0eSB0aGF0IHRoZSBtYWNoaW5lIHdpbGwgZmFpbCBhZnRlciA4IHllYXJzPy4gUHJvdmlkZSBhbHNvIHRoZQ0KZXhwZWN0ZWQgdmFsdWUgYW5kIHN0YW5kYXJkIGRldmlhdGlvbi4gTW9kZWwgYXMgYSBiaW5vbWlhbC4gKEhpbnQ6IDAgc3VjY2VzcyBpbiA4DQp5ZWFycykgDQoNClN0YXRlbWVudHM6DQoNCjEuICoqQmlub21pYWwgRGlzdHJpYnV0aW9uOioqDQogICBMZXQgXChYXCkgYmUgdGhlIG51bWJlciBvZiBmYWlsdXJlcyBpbiBhIGZpeGVkIG51bWJlciBvZiB0cmlhbHMgKDggeWVhcnMpLCB3aGVyZSBlYWNoIHllYXIgaXMgYSBCZXJub3VsbGkgdHJpYWwgd2l0aCBhIHByb2JhYmlsaXR5IG9mIGZhaWx1cmUgKFwocFwpKS4gVGhlIHByb2JhYmlsaXR5IG1hc3MgZnVuY3Rpb24gKFBNRikgaXM6DQogICBcWyBQKFggPSBrKSA9IFxiaW5vbXtufXtrfSBwXmsgKDEtcClee24ta30gXF0NCiAgIHdoZXJlIFwoblwpIGlzIHRoZSBudW1iZXIgb2YgdHJpYWxzIGFuZCBcKGtcKSBpcyB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3Nlcy4NCg0KMi4gKipQcm9iYWJpbGl0eSBvZiBGYWlsaW5nIGFmdGVyIDggWWVhcnM6KioNCiAgIFRoZSBwcm9iYWJpbGl0eSBvZiB0aGUgbWFjaGluZSBmYWlsaW5nIGFmdGVyIDggeWVhcnMgaXMgXChQKFggPSAwKVwpLg0KDQpSIENvZGUgZm9yIENhbGN1bGF0aW9uczoNCg0KQXNzdW1pbmcgXChwID0gXGZyYWN7MX17MTB9XCkgKG9uZSBmYWlsdXJlIGV2ZXJ5IHRlbiB5ZWFycyksIHRoZSBSIGNvZGUgd291bGQgYmU6DQoNCg0KDQpgYGB7cn0NCiNQcm9iYWJpbGl0eSBvZiBmYWlsdXJlIGluIGEgZ2l2ZW4geWVhcg0KcF9mYWlsdXJlIDwtIDEgLyAxMA0KDQojTnVtYmVyIG9mIHRyaWFscyAoeWVhcnMpDQpuX3RyaWFscyA8LSA4DQoNCiNQcm9iYWJpbGl0eSBvZiBmYWlsaW5nIGFmdGVyIDggeWVhcnMNCnByb2JfZmFpbGluZ19hZnRlcl84X3llYXJzIDwtIGRiaW5vbSgwLCBuX3RyaWFscywgcF9mYWlsdXJlKQ0KcHJvYl9mYWlsaW5nX2FmdGVyXzhfeWVhcnMNCmBgYA0KDQoNCmQuIFdoYXQgaXMgdGhlIHByb2JhYmlsaXR5IHRoYXQgdGhlIG1hY2hpbmUgd2lsbCBmYWlsIGFmdGVyIDggeWVhcnM/LiBQcm92aWRlIGFsc28gdGhlDQpleHBlY3RlZCB2YWx1ZSBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uLiBNb2RlbCBhcyBhIFBvaXNzb24uIA0KDQpgYGB7cn0NCiNBdmVyYWdlIHJhdGUgb2YgZmFpbHVyZXMgaW4gYSBnaXZlbiB5ZWFyDQpsYW1iZGEgPC0gMSAvIDEwDQoNCiNOdW1iZXIgb2YgeWVhcnMNCm5feWVhcnMgPC0gOA0KDQojUHJvYmFiaWxpdHkgb2YgZmFpbGluZyBhZnRlciA4IHllYXJzDQpwcm9iX2ZhaWxpbmdfYWZ0ZXJfOF95ZWFycyA8LSAxIC0gcHBvaXMoMCwgbGFtYmRhICogbl95ZWFycykNCnByb2JfZmFpbGluZ19hZnRlcl84X3llYXJzDQoNCmBgYA0KDQoNCmBgYHtyfQ0KI0V4cGVjdGVkIHZhbHVlIGFuZCBzdGFuZGFyZCBkZXZpYXRpb24NCmV4cGVjdGVkX3ZhbHVlIDwtIGxhbWJkYQ0Kc3RhbmRhcmRfZGV2aWF0aW9uIDwtIHNxcnQobGFtYmRhKQ0KDQpleHBlY3RlZF92YWx1ZQ0Kc3RhbmRhcmRfZGV2aWF0aW9uDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg==