On the fourth day of the “Practical Statistics for the Life Sciences”
course, we will have 6 tutorials on multiple linear regression, based on
different datasets:
The poison dataset
In this experiment, 96 fish (dojofish, goldfish and zebrafish)
were placed separately in a tank with two liters of water and
a certain dose (in mg) of the poison EI-43,064. The resistance
of the fish against the poison was measured as the amount of
minutes the fish survived after being exposed to the poison (Surv_time
, in
minutes). Additionally, the weight of each fish was measured.
In this tutorial session we will focus on Dojofish, and we will model the
survival time in function of the poison dose while correcting for the weight of
the fish.
We will first analyse the survival data by only considering the dose as an
explanatory variable for survival time
Next we will model the survival data with and additive model for dose and
weight
The poison dataset (2)
Again, we will work with the poison dataset. In contrast to the exercise
above, we here we will model the survival time in function of the dose and the
weight of the fish, and including an interaction between dose and weight.
The puromycin dataset
Data on the velocity of an enzymatic reaction were obtained by Treloar (1974).
The number of counts per minute of radioactive product from the reaction was
measured as a function of substrate concentration in parts per million (ppm) and
from these counts the initial rate (or velocity) of the reaction was calculated (counts/min/min). The experiment was conducted once with the enzyme treated
with Puromycin, and once with the enzyme untreated.
Assess if there is an association between the substrate concentration and rate
for both the treated and untreated enzymes. To do this, fit a model that
includes a main effect for concentration, a main effect for enzyme state, and
an interaction term between these two variables.
The KPNA2 dataset
Histologic grade in breast cancer provides clinically important prognostic
information. Researchers examined whether histologic grade was associated with
gene expression profiles of breast cancers and whether such profiles could be
used to improve histologic grading.
In this tutorial we will assess the association between histologic grade and
the expression of the KPNA2 gene that is known to be associated with poor breast
cancer prognosis. The patients, however, do not only differ in the histologic
grade, but also on their lymph node status. The lymph nodes were
not affected (0) or surgically removed (1).
Blocking: the rats dataset (1)
Researchers are studying the impact of protein sources and protein levels in
the diet on the weight of rats. They feed the rats with diets of beef, cereal
and pork and use a low and high protein level for each diet type.
The researchers can include 60 rats in the experiment. Prior to the experiment,
the rats were divided in 10 homogeneous groups of 6 rats based on
characteristics such as initial weight, appetite, etc.
Within each group a rat is randomly assigned to a diet. The rats are fed during
a month and the weight gain in grams is recorded for each rat.
The researchers want to assess the effect of the type of diet and the protein
level on the weight of the rats.
In this exercise we will perform the data exploration using all diets, but,
to keep the data analysis simple we will only assess the beef and cereal diets.
Blocking: the rats dataset (2)
Again, we make use of the rats dataset defined above. In contrast to the
previous exercise, we perform the analysis for all three diets in the dataset.
Power analysis: the rodents dataset
A biologist examined the effect of a fungal infection on the eating behavior
of rodents. Infected apples were offered to a group of eight rodents,
and sterile apples were offered to a group of 4 rodents. The amount of grams
of apples consumed per kg body weight are given in the dataset.
We will answer four research questions:
What is the power of the experiment if the effect size and standard deviation
in the population would be equal to the ones you observed in the experiment?
What would the power by if number of rodents would balanced in both groups?
How many observations would you need to pick up the treatment effect with
a power of 90%?
Suppose that we would like to pick up an effect size of \(\beta_1 = 60 g/kg\).
How many samples would be required in each group to obtain a power of 90%?
Exercise: Exercise7
Data path: Not required
Power analysis: the Puromycin dataset
Data on the velocity of an enzymatic reaction were obtained by Treloar (1974).
The number of counts per minute of radioactive product from the reaction was
measured as a function of substrate concentration in parts per million (ppm)
and from these counts the initial rate (or velocity) of the reaction was c
alculated (counts/min/min). The experiment was conducted once with
the enzyme treated with Puromycin, and once with the enzyme untreated.
We will answer four research questions:
Use the data to calculate the power to pick up an association that is as
least as strong as the association you observed in the dataset when using
an experiment with the same design.
Use the data to calculate the power to pick up an association where
the reaction rate increases on average with 10 counts/min when the substrate
concentration is 10 times higher (\(\beta_1=10\)).
Use the data to calculate the number of repeats you need for each
concentration to pick up an association where the reaction rate increases
on average with 10 counts/min when the substrate concentration is 10 times
higher with a power of at least 90%. (\(\beta_1=10\))
Suppose that you would setup an experiment with a design similar with the
same concentrations as in the puromycin dataset and you have the following
restriction: you need to use each concentration at least once and can setup
at most 12 reactions, how would you choose your design points? Calculate
the power for this design when the effect size is 10 counts/min per 10 times
increase in the substrate concentration (\(\beta_1=10\)).
Exercise: Exercise8
Data path: Not required
Power analysis: the KPNA2 dataset
Histologic grade in breast cancer provides clinically important prognostic
information. Researchers examined whether histologic grade was associated with
gene expression profiles of breast cancers and whether such profiles could be
used to improve histologic grading.
In this tutorial we will assess the association between histologic grade and
the expression of the KPNA2 gene that is known to be associated with poor breast
cancer prognosis. The patients, however, do not only differ in the histologic
grade, but also on their lymph node status. The lymph nodes were
not affected (0) or surgically removed (1).
We will answer three research questions:
What is the power to pick up each of the contrasts when their real effect
sizes would be equal to the effect sizes we observed in the study?
How does the power evolves if we have 2 upto 10 repeats for each factor
combination of grade and node when their real effect sizes would be equal to
the ones we observed in the study?
What is the power to pick up each of the contrasts when the FC for grade for patients with unaffected lymph nodes equals 1.5 (\(\beta_g = log2(1.5)\))?
Data path:
https://raw.githubusercontent.com/statOmics/SGA21/master/data/kpna2.txt
LS0tCnRpdGxlOiAiRXhlcmNpc2VzIG9uIGNoYXB0ZXIgODogTXVsdGlwbGUgbGluZWFyIHJlZ3Jlc3Npb24iCmF1dGhvcjogIkxpZXZlbiBDbGVtZW50LCBKZXJvZW4gR2lsaXMgYW5kIE1pbGFuIE1hbGZhaXQiCmRhdGU6ICJzdGF0T21pY3MsIEdoZW50IFVuaXZlcnNpdHkgKGh0dHBzOi8vc3RhdG9taWNzLmdpdGh1Yi5pbykiCm91dHB1dDoKICBib29rZG93bjo6cGRmX2RvY3VtZW50MjoKICAgIHRvYzogdHJ1ZQogICAgbnVtYmVyX3NlY3Rpb25zOiB0cnVlCiAgICBsYXRleF9lbmdpbmU6IHhlbGF0ZXgKYWx3YXlzX2FsbG93X2h0bWw6IHRydWUKLS0tCgpPbiB0aGUgZm91cnRoIGRheSBvZiB0aGUgIlByYWN0aWNhbCBTdGF0aXN0aWNzIGZvciB0aGUgTGlmZSBTY2llbmNlcyIKY291cnNlLCB3ZSB3aWxsIGhhdmUgNiB0dXRvcmlhbHMgb24gbXVsdGlwbGUgbGluZWFyIHJlZ3Jlc3Npb24sIGJhc2VkIG9uCmRpZmZlcmVudCBkYXRhc2V0czoKCi0gW1RoZSBwb2lzb24gZGF0YXNldF0KLSBbVGhlIHBvaXNvbiBkYXRhc2V0ICgyKV0KLSBbVGhlIHB1cm9teWNpbiBkYXRhc2V0XQotIFtUaGUgS1BOQTIgZGF0YXNldF0KLSBbQmxvY2tpbmc6IHRoZSByYXRzIGRhdGFzZXQgKDEpXQotIFtCbG9ja2luZzogdGhlIHJhdHMgZGF0YXNldCAoMildCgoKCiMgVGhlIHBvaXNvbiBkYXRhc2V0CgpJbiB0aGlzIGV4cGVyaW1lbnQsIDk2IGZpc2ggKGRvam9maXNoLCBnb2xkZmlzaCBhbmQgemVicmFmaXNoKQp3ZXJlIHBsYWNlZCBzZXBhcmF0ZWx5IGluIGEgdGFuayB3aXRoIHR3byBsaXRlcnMgb2Ygd2F0ZXIgYW5kCmEgY2VydGFpbiBkb3NlIChpbiBtZykgb2YgdGhlIHBvaXNvbiBFSS00MywwNjQuIFRoZSByZXNpc3RhbmNlCm9mIHRoZSBmaXNoIGFnYWluc3QgdGhlIHBvaXNvbiB3YXMgbWVhc3VyZWQgYXMgdGhlIGFtb3VudCBvZgptaW51dGVzIHRoZSBmaXNoIHN1cnZpdmVkIGFmdGVyIGJlaW5nIGV4cG9zZWQgdG8gdGhlIHBvaXNvbiAoYFN1cnZfdGltZWAsIGluCm1pbnV0ZXMpLiBBZGRpdGlvbmFsbHksIHRoZSB3ZWlnaHQgb2YgZWFjaCBmaXNoIHdhcyBtZWFzdXJlZC4KCkluIHRoaXMgdHV0b3JpYWwgc2Vzc2lvbiB3ZSB3aWxsIGZvY3VzIG9uIERvam9maXNoLCBhbmQgd2Ugd2lsbCBtb2RlbCB0aGUKc3Vydml2YWwgdGltZSBpbiBmdW5jdGlvbiBvZiB0aGUgcG9pc29uIGRvc2Ugd2hpbGUgY29ycmVjdGluZyBmb3IgdGhlIHdlaWdodCBvZgp0aGUgZmlzaC4KCjEuIFdlIHdpbGwgZmlyc3QgYW5hbHlzZSB0aGUgc3Vydml2YWwgZGF0YSBieSBvbmx5IGNvbnNpZGVyaW5nIHRoZSBkb3NlIGFzIGFuCmV4cGxhbmF0b3J5IHZhcmlhYmxlIGZvciBzdXJ2aXZhbCB0aW1lCgoyLiBOZXh0IHdlIHdpbGwgbW9kZWwgdGhlIHN1cnZpdmFsIGRhdGEgd2l0aCBhbmQgKiphZGRpdGl2ZSBtb2RlbCoqIGZvciBkb3NlIGFuZAp3ZWlnaHQKCi0gRXhlcmNpc2U6IFtFeGVyY2lzZTFdKC4vMDhfMV9wb2lzb24xLmh0bWwpCi0gRGF0YSBwYXRoOiAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0YXRPbWljcy9QU0xTRGF0YS9tYWluL3BvaXNvbi5jc3YiCgotIFNvbHV0aW9uMTogW1NvbHV0aW9uMV0oLi8wOF8xX3BvaXNvbjFfc29sLmh0bWwpCjwhLS0tLT4KCi0tLQoKIyBUaGUgcG9pc29uIGRhdGFzZXQgKDIpCgpBZ2Fpbiwgd2Ugd2lsbCB3b3JrIHdpdGggdGhlIHBvaXNvbiBkYXRhc2V0LiBJbiBjb250cmFzdCB0byB0aGUgZXhlcmNpc2UKYWJvdmUsIHdlIGhlcmUgd2Ugd2lsbCBtb2RlbCB0aGUgc3Vydml2YWwgdGltZSBpbiBmdW5jdGlvbiBvZiB0aGUgZG9zZSBhbmQgdGhlCndlaWdodCBvZiB0aGUgZmlzaCwgKiphbmQgaW5jbHVkaW5nIGFuIGludGVyYWN0aW9uIGJldHdlZW4gZG9zZSBhbmQgd2VpZ2h0LioqCgotIEV4ZXJjaXNlOiBbRXhlcmNpc2UyXSguLzA4XzJfcG9pc29uMi5odG1sKQotIERhdGEgcGF0aDoKCiAgYGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zdGF0T21pY3MvUFNMU0RhdGEvbWFpbi9wb2lzb24uY3N2YAogIAoKLSBTb2x1dGlvbjI6IFtTb2x1dGlvbjJdKC4vMDhfMl9wb2lzb24yX3NvbC5odG1sKQo8IS0tLS0+CgotLS0KCiMgVGhlIHB1cm9teWNpbiBkYXRhc2V0CgpEYXRhIG9uIHRoZSB2ZWxvY2l0eSBvZiBhbiBlbnp5bWF0aWMgcmVhY3Rpb24gd2VyZSBvYnRhaW5lZCBieSBUcmVsb2FyICgxOTc0KS4KVGhlIG51bWJlciBvZiBjb3VudHMgcGVyIG1pbnV0ZSBvZiByYWRpb2FjdGl2ZSBwcm9kdWN0IGZyb20gdGhlIHJlYWN0aW9uIHdhcwptZWFzdXJlZCBhcyBhIGZ1bmN0aW9uIG9mIHN1YnN0cmF0ZSBjb25jZW50cmF0aW9uIGluIHBhcnRzIHBlciBtaWxsaW9uIChwcG0pIGFuZApmcm9tIHRoZXNlIGNvdW50cyB0aGUgaW5pdGlhbCByYXRlIChvciB2ZWxvY2l0eSkgb2YgdGhlIHJlYWN0aW9uIHdhcyBjYWxjdWxhdGVkIChjb3VudHMvbWluL21pbikuIFRoZSBleHBlcmltZW50IHdhcyBjb25kdWN0ZWQgb25jZSB3aXRoIHRoZSBlbnp5bWUgdHJlYXRlZAp3aXRoIFB1cm9teWNpbiwgYW5kIG9uY2Ugd2l0aCB0aGUgZW56eW1lIHVudHJlYXRlZC4KCkFzc2VzcyBpZiB0aGVyZSBpcyBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIHRoZSBzdWJzdHJhdGUgY29uY2VudHJhdGlvbiBhbmQgcmF0ZQoqKmZvciBib3RoIHRoZSB0cmVhdGVkIGFuZCB1bnRyZWF0ZWQgZW56eW1lcy4qKiBUbyBkbyB0aGlzLCBmaXQgYSBtb2RlbCB0aGF0CmluY2x1ZGVzIGEgbWFpbiBlZmZlY3QgZm9yIGNvbmNlbnRyYXRpb24sIGEgbWFpbiBlZmZlY3QgZm9yIGVuenltZSBzdGF0ZSwgYW5kCmFuIGludGVyYWN0aW9uIHRlcm0gYmV0d2VlbiB0aGVzZSB0d28gdmFyaWFibGVzLgoKLSBFeGVyY2lzZTogW0V4ZXJjaXNlM10oLi8wOF8zX3B1cm9teWNpbi5odG1sKQotIERhdGEgcGF0aDogTm90IHJlcXVpcmVkCgotIFNvbHV0aW9uOiBbU29sdXRpb24zXSguLzA4XzNfcHVyb215Y2luX3NvbC5odG1sKQotIFtXcmFwdXAgc3VtbWFyeV0oLi8wOC13cmFwdXAtcHVyb215Y2luLmh0bWwpCjwhLS0tLT4KCi0tLQoKIyBUaGUgS1BOQTIgZGF0YXNldAoKSGlzdG9sb2dpYyBncmFkZSBpbiBicmVhc3QgY2FuY2VyIHByb3ZpZGVzIGNsaW5pY2FsbHkgaW1wb3J0YW50IHByb2dub3N0aWMKaW5mb3JtYXRpb24uIFJlc2VhcmNoZXJzIGV4YW1pbmVkIHdoZXRoZXIgaGlzdG9sb2dpYyBncmFkZSB3YXMgYXNzb2NpYXRlZCB3aXRoCmdlbmUgZXhwcmVzc2lvbiBwcm9maWxlcyBvZiBicmVhc3QgY2FuY2VycyBhbmQgd2hldGhlciBzdWNoIHByb2ZpbGVzIGNvdWxkIGJlCnVzZWQgdG8gaW1wcm92ZSBoaXN0b2xvZ2ljIGdyYWRpbmcuCgpJbiB0aGlzIHR1dG9yaWFsIHdlIHdpbGwgYXNzZXNzIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGhpc3RvbG9naWMgZ3JhZGUgYW5kCnRoZSBleHByZXNzaW9uIG9mIHRoZSBLUE5BMiBnZW5lIHRoYXQgaXMga25vd24gdG8gYmUgYXNzb2NpYXRlZCB3aXRoIHBvb3IgYnJlYXN0CmNhbmNlciBwcm9nbm9zaXMuIFRoZSBwYXRpZW50cywgaG93ZXZlciwgZG8gbm90IG9ubHkgZGlmZmVyIGluIHRoZSBoaXN0b2xvZ2ljCmdyYWRlLCBidXQgYWxzbyBvbiB0aGVpciBseW1waCBub2RlIHN0YXR1cy4gVGhlIGx5bXBoIG5vZGVzIHdlcmUKbm90IGFmZmVjdGVkICgwKSBvciBzdXJnaWNhbGx5IHJlbW92ZWQgKDEpLgoKLSBFeGVyY2lzZTogW0V4ZXJjaXNlNF0oLi8wOF80X2twbmEyLmh0bWwpCi0gRGF0YSBwYXRoOgoKICBgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0YXRPbWljcy9TR0EyMS9tYXN0ZXIvZGF0YS9rcG5hMi50eHRgCgoKLSBTb2x1dGlvbjogW1NvbHV0aW9uNF0oLi8wOF80X2twbmEyX3NvbC5odG1sKQo8IS0tLS0+CgotLS0KCiMgQmxvY2tpbmc6IHRoZSByYXRzIGRhdGFzZXQgKDEpCgpSZXNlYXJjaGVycyBhcmUgc3R1ZHlpbmcgdGhlIGltcGFjdCBvZiBwcm90ZWluIHNvdXJjZXMgYW5kIHByb3RlaW4gbGV2ZWxzIGluCnRoZSBkaWV0IG9uIHRoZSB3ZWlnaHQgb2YgcmF0cy4gVGhleSBmZWVkIHRoZSByYXRzIHdpdGggZGlldHMgb2YgYmVlZiwgY2VyZWFsCmFuZCBwb3JrIGFuZCB1c2UgYSBsb3cgYW5kIGhpZ2ggcHJvdGVpbiBsZXZlbCBmb3IgZWFjaCBkaWV0IHR5cGUuClRoZSByZXNlYXJjaGVycyBjYW4gaW5jbHVkZSA2MCByYXRzIGluIHRoZSBleHBlcmltZW50LiBQcmlvciB0byB0aGUgZXhwZXJpbWVudCwKdGhlIHJhdHMgd2VyZSBkaXZpZGVkIGluIDEwIGhvbW9nZW5lb3VzIGdyb3VwcyBvZiA2IHJhdHMgYmFzZWQgb24KY2hhcmFjdGVyaXN0aWNzIHN1Y2ggYXMgaW5pdGlhbCB3ZWlnaHQsIGFwcGV0aXRlLCBldGMuCgpXaXRoaW4gZWFjaCBncm91cCBhIHJhdCBpcyByYW5kb21seSBhc3NpZ25lZCB0byBhIGRpZXQuIFRoZSByYXRzIGFyZSBmZWQgZHVyaW5nCmEgbW9udGggYW5kIHRoZSB3ZWlnaHQgZ2FpbiBpbiBncmFtcyBpcyByZWNvcmRlZCBmb3IgZWFjaCByYXQuCgpUaGUgcmVzZWFyY2hlcnMgd2FudCB0byBhc3Nlc3MgdGhlIGVmZmVjdCBvZiB0aGUgdHlwZSBvZiBkaWV0IGFuZCB0aGUgcHJvdGVpbgpsZXZlbCBvbiB0aGUgd2VpZ2h0IG9mIHRoZSByYXRzLgoKSW4gdGhpcyBleGVyY2lzZSB3ZSB3aWxsIHBlcmZvcm0gdGhlIGRhdGEgZXhwbG9yYXRpb24gdXNpbmcgYWxsIGRpZXRzLCBidXQsCnRvIGtlZXAgdGhlIGRhdGEgYW5hbHlzaXMgc2ltcGxlIHdlIHdpbGwgb25seSBhc3Nlc3MgdGhlIGJlZWYgYW5kIGNlcmVhbCBkaWV0cy4KCi0gRXhlcmNpc2U6IFtFeGVyY2lzZTVdKC4vMDhfNV9yYXRzLmh0bWwpCi0gRGF0YSBwYXRoOgoKICBgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0YXRPbWljcy9QU0xTRGF0YS9tYWluL2RpZXRSYXRzLnR4dGAKCjwhLS0tLT4KLSBFeGVyY2lzZTogW1NvbHV0aW9uNV0oLi8wOF81X3JhdHNfc29sLmh0bWwpIAo8IS0tLS0+CgotLS0KCiMgQmxvY2tpbmc6IHRoZSByYXRzIGRhdGFzZXQgKDIpCgpBZ2Fpbiwgd2UgbWFrZSB1c2Ugb2YgdGhlICpyYXRzKiBkYXRhc2V0IGRlZmluZWQgYWJvdmUuIEluIGNvbnRyYXN0IHRvIHRoZQpwcmV2aW91cyBleGVyY2lzZSwgd2UgcGVyZm9ybSB0aGUgYW5hbHlzaXMgZm9yIGFsbCB0aHJlZSBkaWV0cyBpbiB0aGUgZGF0YXNldC4KCi0gRXhlcmNpc2U6IFtFeGVyY2lzZTZdKC4vMDhfNl9yYXRzLmh0bWwpCi0gRGF0YSBwYXRoOgoKICBgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0YXRPbWljcy9QU0xTRGF0YS9tYWluL2RpZXRSYXRzLnR4dGAKCjwhLS0tLT4KLSBFeGVyY2lzZTogW1NvbHV0aW9uNl0oLi8wOF82X3JhdHNfc29sLmh0bWwpIAo8IS0tLS0+CgoKLS0tCgojIFBvd2VyIGFuYWx5c2lzOiB0aGUgcm9kZW50cyBkYXRhc2V0CgpBIGJpb2xvZ2lzdCBleGFtaW5lZCB0aGUgZWZmZWN0IG9mIGEgZnVuZ2FsIGluZmVjdGlvbiBvbiB0aGUgZWF0aW5nIGJlaGF2aW9yCm9mIHJvZGVudHMuIEluZmVjdGVkIGFwcGxlcyB3ZXJlIG9mZmVyZWQgdG8gYSBncm91cCBvZiBlaWdodCByb2RlbnRzLAphbmQgc3RlcmlsZSBhcHBsZXMgd2VyZSBvZmZlcmVkIHRvIGEgZ3JvdXAgb2YgNCByb2RlbnRzLiBUaGUgYW1vdW50IG9mIGdyYW1zCm9mIGFwcGxlcyBjb25zdW1lZCBwZXIga2cgYm9keSB3ZWlnaHQgYXJlIGdpdmVuIGluIHRoZSBkYXRhc2V0LgoKV2Ugd2lsbCBhbnN3ZXIgZm91ciByZXNlYXJjaCBxdWVzdGlvbnM6CgotIFdoYXQgaXMgdGhlIHBvd2VyIG9mIHRoZSBleHBlcmltZW50IGlmIHRoZSBlZmZlY3Qgc2l6ZSBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uCmluIHRoZSBwb3B1bGF0aW9uIHdvdWxkIGJlIGVxdWFsIHRvIHRoZSBvbmVzIHlvdSBvYnNlcnZlZCBpbiB0aGUgZXhwZXJpbWVudD8KCi0gV2hhdCB3b3VsZCB0aGUgcG93ZXIgYnkgaWYgbnVtYmVyIG9mIHJvZGVudHMgd291bGQgIGJhbGFuY2VkIGluIGJvdGggZ3JvdXBzPwoKLSBIb3cgbWFueSBvYnNlcnZhdGlvbnMgd291bGQgeW91IG5lZWQgdG8gcGljayB1cCB0aGUgdHJlYXRtZW50IGVmZmVjdCB3aXRoCmEgcG93ZXIgb2YgOTAlPwoKLSBTdXBwb3NlIHRoYXQgd2Ugd291bGQgbGlrZSB0byBwaWNrIHVwIGFuIGVmZmVjdCBzaXplIG9mICRcYmV0YV8xID0gNjAgZy9rZyQuCkhvdyBtYW55IHNhbXBsZXMgd291bGQgYmUgcmVxdWlyZWQgaW4gZWFjaCBncm91cCB0byBvYnRhaW4gYSBwb3dlciBvZiA5MCU/CgotIEV4ZXJjaXNlOiBbRXhlcmNpc2U3XSguLzA4X0V4cGVyaW1lbnRhbERlc2lnbklJXzFfcm9kZW50cy5odG1sKQotIERhdGEgcGF0aDogTm90IHJlcXVpcmVkCjwhLS0gCi0gU29sdXRpb246IFtTb2x1dGlvbjddKC4vMDhfRXhwZXJpbWVudGFsRGVzaWduSUlfMV9yb2RlbnRzX3NvbC5odG1sKSAKPCEtLS0tPgoKLS0tCgojIFBvd2VyIGFuYWx5c2lzOiB0aGUgUHVyb215Y2luIGRhdGFzZXQKCkRhdGEgb24gdGhlIHZlbG9jaXR5IG9mIGFuIGVuenltYXRpYyByZWFjdGlvbiB3ZXJlIG9idGFpbmVkIGJ5IFRyZWxvYXIgKDE5NzQpLgpUaGUgbnVtYmVyIG9mIGNvdW50cyBwZXIgbWludXRlIG9mIHJhZGlvYWN0aXZlIHByb2R1Y3QgZnJvbSB0aGUgcmVhY3Rpb24gd2FzCm1lYXN1cmVkIGFzIGEgZnVuY3Rpb24gb2Ygc3Vic3RyYXRlIGNvbmNlbnRyYXRpb24gaW4gcGFydHMgcGVyIG1pbGxpb24gKHBwbSkKYW5kIGZyb20gdGhlc2UgY291bnRzIHRoZSBpbml0aWFsIHJhdGUgKG9yIHZlbG9jaXR5KSBvZiB0aGUgcmVhY3Rpb24gd2FzIGMKYWxjdWxhdGVkIChjb3VudHMvbWluL21pbikuIFRoZSBleHBlcmltZW50IHdhcyBjb25kdWN0ZWQgb25jZSB3aXRoCnRoZSBlbnp5bWUgdHJlYXRlZCB3aXRoIFB1cm9teWNpbiwgYW5kIG9uY2Ugd2l0aCB0aGUgZW56eW1lIHVudHJlYXRlZC4KCldlIHdpbGwgYW5zd2VyIGZvdXIgcmVzZWFyY2ggcXVlc3Rpb25zOgoKLSBVc2UgdGhlIGRhdGEgdG8gY2FsY3VsYXRlIHRoZSBwb3dlciB0byBwaWNrIHVwIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgYXMKbGVhc3QgYXMgc3Ryb25nIGFzIHRoZSBhc3NvY2lhdGlvbiB5b3Ugb2JzZXJ2ZWQgaW4gdGhlIGRhdGFzZXQgd2hlbiB1c2luZwphbiBleHBlcmltZW50IHdpdGggdGhlIHNhbWUgZGVzaWduLgoKLSBVc2UgdGhlIGRhdGEgdG8gY2FsY3VsYXRlIHRoZSBwb3dlciB0byBwaWNrIHVwIGFuIGFzc29jaWF0aW9uIHdoZXJlCnRoZSByZWFjdGlvbiByYXRlIGluY3JlYXNlcyBvbiBhdmVyYWdlIHdpdGggMTAgY291bnRzL21pbiB3aGVuIHRoZSBzdWJzdHJhdGUKY29uY2VudHJhdGlvbiBpcyAxMCB0aW1lcyBoaWdoZXIgKCRcYmV0YV8xPTEwJCkuCgotIFVzZSB0aGUgZGF0YSB0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiByZXBlYXRzIHlvdSBuZWVkIGZvciBlYWNoCmNvbmNlbnRyYXRpb24gdG8gcGljayB1cCBhbiBhc3NvY2lhdGlvbiB3aGVyZSB0aGUgcmVhY3Rpb24gcmF0ZSBpbmNyZWFzZXMKb24gYXZlcmFnZSB3aXRoIDEwIGNvdW50cy9taW4gd2hlbiB0aGUgc3Vic3RyYXRlIGNvbmNlbnRyYXRpb24gaXMgMTAgdGltZXMKaGlnaGVyIHdpdGggYSBwb3dlciBvZiBhdCBsZWFzdCA5MCUuICgkXGJldGFfMT0xMCQpCgotIFN1cHBvc2UgdGhhdCB5b3Ugd291bGQgc2V0dXAgYW4gZXhwZXJpbWVudCB3aXRoIGEgZGVzaWduIHNpbWlsYXIgd2l0aCB0aGUKc2FtZSBjb25jZW50cmF0aW9ucyBhcyBpbiB0aGUgcHVyb215Y2luIGRhdGFzZXQgYW5kIHlvdSBoYXZlIHRoZSBmb2xsb3dpbmcKcmVzdHJpY3Rpb246IHlvdSBuZWVkIHRvIHVzZSBlYWNoIGNvbmNlbnRyYXRpb24gYXQgbGVhc3Qgb25jZSBhbmQgY2FuIHNldHVwCmF0IG1vc3QgMTIgcmVhY3Rpb25zLCBob3cgd291bGQgeW91IGNob29zZSB5b3VyIGRlc2lnbiBwb2ludHM/IENhbGN1bGF0ZQp0aGUgcG93ZXIgZm9yIHRoaXMgZGVzaWduIHdoZW4gdGhlIGVmZmVjdCBzaXplIGlzIDEwIGNvdW50cy9taW4gcGVyIDEwIHRpbWVzCmluY3JlYXNlIGluIHRoZSBzdWJzdHJhdGUgY29uY2VudHJhdGlvbiAoJFxiZXRhXzE9MTAkKS4KCi0gRXhlcmNpc2U6IFtFeGVyY2lzZThdKC4vMDhfRXhwZXJpbWVudGFsRGVzaWduSUlfMl9wdXJvbXljaW4uaHRtbCkKLSBEYXRhIHBhdGg6IE5vdCByZXF1aXJlZAo8IS0tIC0gU29sdXRpb246IFtTb2x1dGlvbjhdKC4vMDhfRXhwZXJpbWVudGFsRGVzaWduSUlfMl9wdXJvbXljaW5fc29sLmh0bWwpIDwhLS0tLT4KCi0tLQoKCiMgUG93ZXIgYW5hbHlzaXM6IHRoZSBLUE5BMiBkYXRhc2V0CgpIaXN0b2xvZ2ljIGdyYWRlIGluIGJyZWFzdCBjYW5jZXIgcHJvdmlkZXMgY2xpbmljYWxseSBpbXBvcnRhbnQgcHJvZ25vc3RpYwppbmZvcm1hdGlvbi4gUmVzZWFyY2hlcnMgZXhhbWluZWQgd2hldGhlciBoaXN0b2xvZ2ljIGdyYWRlIHdhcyBhc3NvY2lhdGVkIHdpdGgKZ2VuZSBleHByZXNzaW9uIHByb2ZpbGVzIG9mIGJyZWFzdCBjYW5jZXJzIGFuZCB3aGV0aGVyIHN1Y2ggcHJvZmlsZXMgY291bGQgYmUKdXNlZCB0byBpbXByb3ZlIGhpc3RvbG9naWMgZ3JhZGluZy4KCkluIHRoaXMgdHV0b3JpYWwgd2Ugd2lsbCBhc3Nlc3MgdGhlIGFzc29jaWF0aW9uIGJldHdlZW4gaGlzdG9sb2dpYyBncmFkZSBhbmQKdGhlIGV4cHJlc3Npb24gb2YgdGhlIEtQTkEyIGdlbmUgdGhhdCBpcyBrbm93biB0byBiZSBhc3NvY2lhdGVkIHdpdGggcG9vciBicmVhc3QKY2FuY2VyIHByb2dub3Npcy4gVGhlIHBhdGllbnRzLCBob3dldmVyLCBkbyBub3Qgb25seSBkaWZmZXIgaW4gdGhlIGhpc3RvbG9naWMKZ3JhZGUsIGJ1dCBhbHNvIG9uIHRoZWlyIGx5bXBoIG5vZGUgc3RhdHVzLiBUaGUgbHltcGggbm9kZXMgd2VyZQpub3QgYWZmZWN0ZWQgKDApIG9yIHN1cmdpY2FsbHkgcmVtb3ZlZCAoMSkuCgpXZSB3aWxsIGFuc3dlciB0aHJlZSByZXNlYXJjaCBxdWVzdGlvbnM6CgotIFdoYXQgaXMgdGhlIHBvd2VyIHRvIHBpY2sgdXAgZWFjaCBvZiB0aGUgY29udHJhc3RzIHdoZW4gdGhlaXIgcmVhbCBlZmZlY3QKc2l6ZXMgd291bGQgYmUgZXF1YWwgdG8gdGhlIGVmZmVjdCBzaXplcyB3ZSBvYnNlcnZlZCBpbiB0aGUgc3R1ZHk/CgotIEhvdyBkb2VzIHRoZSBwb3dlciBldm9sdmVzIGlmIHdlIGhhdmUgMiB1cHRvIDEwIHJlcGVhdHMgZm9yIGVhY2ggZmFjdG9yCmNvbWJpbmF0aW9uIG9mIGdyYWRlIGFuZCBub2RlIHdoZW4gdGhlaXIgcmVhbCBlZmZlY3Qgc2l6ZXMgd291bGQgYmUgZXF1YWwgdG8KdGhlIG9uZXMgd2Ugb2JzZXJ2ZWQgaW4gdGhlIHN0dWR5PwoKLSBXaGF0IGlzIHRoZSBwb3dlciB0byBwaWNrIHVwIGVhY2ggb2YgdGhlIGNvbnRyYXN0cyB3aGVuIHRoZSBGQyBmb3IgZ3JhZGUgZm9yIHBhdGllbnRzIHdpdGggdW5hZmZlY3RlZCBseW1waCBub2RlcyBlcXVhbHMgMS41ICgkXGJldGFfZyA9IGxvZzIoMS41KSQpPwoKLSBEYXRhIHBhdGg6CgogIGBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3RhdE9taWNzL1NHQTIxL21hc3Rlci9kYXRhL2twbmEyLnR4dGAKCjwhLS0gLSBTb2x1dGlvbjogW1NvbHV0aW9uOV0oLi8wOF9FeHBlcmltZW50YWxEZXNpZ25JSV8zX2twbmEyX3NvbC5SbWQuaHRtbCkgPCEtLS0tPgo=