Literatura

Typy zmiennych

Rozkłady prawdopodobieństwa zmiennych dyskretnych

Bernouillego

\[\begin{array}{rll} P(Y=1)&=&\pi\\ P(Y=0)&=&1-\pi \end{array}\]

\[\begin{array}{rll} E(Y)&=&1*\pi+0*(1-\pi)=\pi\\ V(Y)&=&E(Y^2)-(E(Y))^2=\pi-\pi^2=\pi(1-\pi) \end{array}\]

Rozkład dwumianowy

\(Y_i\) są niezależne i mają rozkład Bernoulliego
\[\begin{array}{rll} Y&=&\sum_{i=1}^{n}Y_i\\ P(Y=k)&=&\left( \begin{array}{c} n \\ k \end{array} \right)\pi^{k}(1-\pi)^{n-k}\\ \mu&=&E(Y)=\sum_{i=1}^{n}E(Y_i)=n\pi\\ \sigma^2&=&V(Y)=\sum_{i=1}^{n}V(Y_i)=n\pi(1-\pi) \end{array}\]

Rozkład wielomianowy

Uogólnienie rozkładu dwumianowego \[\begin{array}{rll} P(Y_i=1)&=&\pi_1\\ P(Y_i=2)&=&\pi_2\\ &\dots&\\ P(Y_i=c)&=&\pi_c \end{array}\].. \(Y_i\) \((i=1,2,\dots,n)\) są niezależne \[Y=(n_1,n_2,\dots,n_c)\iff \#(i:Y_i=1)=n_1,\#(i:Y_i=2)=n_2,\dots,\#(i:Y_i=c)=n_c\]
\[P(Y=(n_1,n_2,\dots,n_c))=\frac{n!}{n_1!n_2!\dots n_c!}\pi_1^{n_1}\pi_2^{n_2}\dots \pi_c^{n_c}\]

Rozkład Poissona

Prawo małych liczb

Wyprowadzenie
Związek z rozkładem wielomianowym

Metoda największej wiarygodności

Funkcja wiarygodności

Rzucono 10 razy monetą. Wyoadło 7 orłóW.Jakie może być prawdopodobieństwo wypadnięcia orła?

Gdyby prawdopodobieństwo wypadnięcia orła było równe \(\pi\), to zaobserwowany wynik pojawiłby się z prawdopodobieństwem:
\[\left( \begin{array}{c} 10 \\ 7 \end{array} \right)\pi^{7}(1-\pi)^{3}\]..

pi=0.4 0.0425 
pi=0.5 0.1172 
pi=0.6 0.215 
pi=0.7 0.2668 
pi=0.8 0.2013 

Metoda największej wiarygodności

Niech \(L(\beta)\) - logarytm funkcji wiarygodności. Estymator największej wiarygodności: \[\widehat{\beta}: \frac{\partial}{\partial\beta}L(\beta)=0\] Błąd standardowy estymatora NW parametru \(\beta\) jest pierwiastkiem kwadratowym przekątnej macierzy \(\Im^{-1}\), obliczonym w punkcie \(\widehat{\beta}\), gdzie \[\Im=E\left[-\frac{\partial^2L(\beta)}{\partial\beta_j\partial\beta_k}\right]\]
SE dla rozkładu dwumianowego na dwa sposoby

Jednowymiarowe, asymptotyczne testy istotności

\[\begin{array}{rcl} H_0&:&\beta=\beta_0\\ H_1&:&\beta\neq\beta_0 \end{array}\]

Test Walda

\[z=\frac{\widehat{\beta}-\beta_0}{SE(\widehat{\beta})}\asymp\mathcal{N}(0,1)\]

Test ilorazu wiarygodności

\[\begin{array}{rcl} l_0&=&max\{\beta\in H_0:l(\beta)\}\\ l_1&=&max\{\beta\in H_0\cup H_1:l(\beta)\} \end{array}\]

Tw (Wilks 1935)
\[-2 \log\left(\frac{l_0}{l_1}\right)\asymp\chi^2_k\] \[k=\dim(H_0\cup H_1)-\dim(H_0)\]

Test punktowy (Fisher,Rao)

\[\begin{array}{rcl} u(\beta_0) &=& \left. \frac{\partial L(\beta)}{\partial \beta}\right|_{\beta=\beta_0}\\ i(\beta_0) &=& -\left.E\left[\frac{\partial^2L(\beta)}{\partial\beta^2}\right] \right|_{\beta=\beta_0} \end{array}\]

Statystyka punktowa

\[ \begin{array}{rcl} u(\beta_0)\sqrt{i(\beta_0)} & \asymp & \mathcal{N}(0,1)\\ u(\beta_0)^2i(\beta_0) & \asymp & \chi^2_1 \end{array} \]

Przykłady dla rozkładu dwumianowego

Przedziały ufności

Przedziały ufności (dwustronne) dla \(\beta_0\) na poziomie ufności \(1-\alpha\) można otrzymać, gdy znana jest statystyka testowa \(T\) do testowania na poziomie istotności \(\alpha\) hipotez \[\begin{array}{rcl} H_0&:&\beta=\beta_0\\ H_1&:&\beta\neq\beta_0 \end{array}\]

Wystarczy rozwiązać wzgledem \(\beta_0\) równanie \[ P_{H_0} \left( \left| T \right| < u(\alpha) \right) = 1-\alpha \]

Uwaga. Statystyka \(T\) jest funkcją \(\beta_0\)

W 50 rzutach kostką 20 razy wypadło więcej niż 4 oczka. Skonstruuj przedział ufności na poziomie 0.95 dla prawdopodobieństwa wypadnięcia 5 lub 6 oczek. Czy można uważać, że kostka jest rzetelna?

Test Walda

Testujemy hipotezę, że \(\pi\ne \frac{1}{3}\)

pihat <- 20/50
wald <- function(pi.0) {
  (se <- sqrt(pihat*(1-pihat)/50))
  (T <- (pihat-pi.0)/se)
  pv <- 2*(1-pnorm(T))
  list(se=se,T=T,pv=pv)
}
wald(1/3)
$se
[1] 0.06928203

$T
[1] 0.9622504

$pv
[1] 0.3359238
wald(0.2)
$se
[1] 0.06928203

$T
[1] 2.886751

$pv
[1] 0.003892417
wald(0.2642)
$se
[1] 0.06928203

$T
[1] 1.960104

$pv
[1] 0.04998362
wald(0.2643)
$se
[1] 0.06928203

$T
[1] 1.958661

$pv
[1] 0.05015253

Przedział Walda

n <- 50
pihat + c(-1, 1) * qnorm(p = 0.975) * sqrt((pihat * (1 - pihat))/n) 
[1] 0.2642097 0.5357903

Przedział z testu ilorazu wiarygodności \[ LR=2 \left[ y\log \left( \frac{\widehat{\pi}}{\pi_0} \right) + (n-y)\log \left( \frac{1-\widehat{\pi}}{1-\pi_0} \right) \right] \]

Trzeba rozwiązać równanie \[ LR=\text{qchisq}(1-\alpha,df=1) \]

LR <- function(pi.0, y, n, alpha) {
  phat <- y/n
   2*(y*log(phat/pi.0) + (n-y)*log((1-phat)/(1-pi.0)))
}
LR0 <- function(pi.0, y, n, alpha){
  LR(pi.0, y, n, alpha)- qchisq(1-alpha,df=1)
} 
LR(0.25,20,50,0.05)
[1] 5.411532
(q <- qchisq(1-0.05,df=1))
[1] 3.841459
LR0(0.25,20,50,0.05)
[1] 1.570073
uniroot(f=LR0, interval=c(0.2,0.3), n=50, y=20, alpha=.05)
$root
[1] 0.271764

$f.root
[1] -0.001969518

$iter
[1] 4

$init.it
[1] NA

$estim.prec
[1] 6.103516e-05
uniroot(f=LR0, interval=c(0.5,0.6), n=50, y=20, alpha=.05)
$root
[1] 0.5382601

$f.root
[1] -0.0008796044

$iter
[1] 4

$init.it
[1] NA

$estim.prec
[1] 6.103516e-05

Przedział; \((0.2248,0.5948)\)
Przedział z testu punktowego
Należy rozwiązać, względem \(\pi_0\) równanie
\[ \left| \frac{\widehat{\pi}-\pi_0}{\sqrt{\frac{\pi_0(1-\pi_0)}{n}}} \right | \]

pt <- function(pi.0,y,n,alpha) {
  pihat <- y/n
  (pihat-pi.0)^2-qchisq(1-alpha,df=1)*(pi.0*(1-pi.0))/n
}
pt(0.4,20,50,0.05)
[1] -0.018439
uniroot(f=pt, interval=c(0.2,0.3), n=50, y=20, alpha=.05)
$root
[1] 0.2760895

$f.root
[1] -1.577236e-06

$iter
[1] 4

$init.it
[1] NA

$estim.prec
[1] 6.103516e-05
uniroot(f=pt, interval=c(0.5,0.6), n=50, y=20, alpha=.05)
$root
[1] 0.5381681

$f.root
[1] -4.957657e-06

$iter
[1] 4

$init.it
[1] NA

$estim.prec
[1] 6.103516e-05

Przedział; \((0.2761,0.5382)\)

Przedział Wilsona

\[ \begin{array}{rcl} l & = &\frac{z(\alpha)^2}{n+z(\alpha)^2}\\ p & = & (1-l)\widehat{\pi}+l\frac{1}{2}\\ w & = & (1-l)\widehat{\pi}(1-\widehat{\pi})+l\frac{1}{4}\\ p & \pm & z(\alpha)\sqrt{\frac{w}{n+z(\alpha)^2}} \end{array} \] Przedział` Wilsona 95%

l <- 1.96^2/(50+1.96^2)
p <- (1-l)*0.4+l*0.5
w <- (1-l)*0.4*0.6+l*0.25
round(p+c(-1,1)*sqrt(w/(50+1.96^2)),digits=4)
[1] 0.3403 0.4740

Gdy \(y=0\) przedział Walda nie ma sensu.
Przedział punktowy dla \(y=0\) ma postać \[\left(0,\frac{z(\alpha)}{n+z(\alpha)}\right)\] Przedział największej wiarygodności
Logarytm funkcji wiarygodności wynosi \(l(\pi)=n\log(1-\pi)\), Stąd \(l_1=l(0)=0\), \(l_0=n\log(1-\pi_0)\) \[ LR=-2n\log \left( 1-\pi_0 \right) \] Przedział LR będzie miał postać \[ \left( 0, 1-\exp(-\frac{\text{qchisq}(1-\alpha,df=1)}{2n}) \right) \] Przedział Wilsona zaś będzie równy \[ \begin{array}{rcl} l & = &\frac{z(\alpha)^2}{n+z(\alpha)^2}\\ p & = & l\frac{1}{2}\\ w & = & l\frac{1}{4}\\ p & \pm & z(\alpha)\sqrt{\frac{w}{n+z(\alpha)^2}} \end{array} \]

Dla dla \(n=50\) 95% przedział ufności punktowy ma postać

round(c(0,1.96/(50+1.96)),digits = 4)
[1] 0.0000 0.0377

Przedział LR

round(c(0,1-exp(-qchisq(0.95,1)/100)),digits = 4)
[1] 0.0000 0.0377

Przedział Wilsona

l <- 1.96^2/(50+1.96^2)
p <- l*0.5
w <- l*0.25
round(p+c(-1,1)*sqrt(w/(50+1.96^2)),digits=4)
[1] 0.0175 0.0539
LS0tDQp0aXRsZTogIkFuYWxpemEgZGFueWNoIGpha2/Fm2Npb3d5Y2ggQSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjTGl0ZXJhdHVyYSAgDQoqIEFsYW4gQWdyZXN0aSwgKkNhdGVnb3JpY2FsIERhdGEgQW5hbHlzaXMqLCA8aHR0cHM6Ly9tYXRoZGVwdC5pdXQuYWMuaXIvc2l0ZXMvbWF0aGRlcHQuaXV0LmFjLmlyL2ZpbGVzL0FHUkVTVEkuUERGPiAgDQoqIExhdXJhIEEuIFRob21wc29uIFIgKGFuZCBTLVBMVVMpICpNYW51YWwgdG8gQWNjb21wYW55IEFncmVzdGnigJlzIENhdGVnb3JpY2FsIERhdGEgQW5hbHlzaXMgKDIwMDIpKiA8aHR0cHM6Ly9ob21lLmNvbWNhc3QubmV0L35sdGhvbXBzb24yMjEvU3BsdXNkaXNjcmV0ZTIucGRmPiAgDQoNCiMjVHlweSB6bWllbm55Y2ggIA0KKiBqYWtvxZtjaW93ZSAgIA0KICAgICsgbm9taW5hbG5lIChjenlubmlrb3dlICgqZmFjdG9yKiksKmNhdGVnb3JpY2FsKikNCiAgICArIHBvcnrEhWRrb3dlIChjenlubmlrb3dlIHBvcnrEhWRrb3dlICgqb3JkZXJlZCBmYWN0b3IqKSkNCiogaWxvxZtjaW93ZSAgDQoNCiMjUm96a8WCYWR5IHByYXdkb3BvZG9iaWXFhHN0d2Egem1pZW5ueWNoIGR5c2tyZXRueWNoICANCiMjI0Jlcm5vdWlsbGVnbw0KDQokJFxiZWdpbnthcnJheX17cmxsfQ0KICBQKFk9MSkmPSZccGlcXCANCiBQKFk9MCkmPSYxLVxwaQ0KIFxlbmR7YXJyYXl9JCQNCg0KIA0KJCRcYmVnaW57YXJyYXl9e3JsbH0NCiAgRShZKSY9JjEqXHBpKzAqKDEtXHBpKT1ccGlcXCANCiBWKFkpJj0mRShZXjIpLShFKFkpKV4yPVxwaS1ccGleMj1ccGkoMS1ccGkpDQogXGVuZHthcnJheX0kJA0KDQojIyNSb3prxYJhZCBkd3VtaWFub3d5ICANCiRZX2kkIHPEhSBuaWV6YWxlxbxuZSBpIG1hasSFIHJvemvFgmFkIEJlcm5vdWxsaWVnbyAgDQokJFxiZWdpbnthcnJheX17cmxsfQ0KICBZJj0mXHN1bV97aT0xfV57bn1ZX2lcXCANCiBQKFk9aykmPSZcbGVmdCgNCiAgICBcYmVnaW57YXJyYXl9e2N9DQogICAgICBuIFxcDQogICAgICBrDQogICAgXGVuZHthcnJheX0NCiAgXHJpZ2h0KVxwaV57a30oMS1ccGkpXntuLWt9XFwNCiAgXG11Jj0mRShZKT1cc3VtX3tpPTF9XntufUUoWV9pKT1uXHBpXFwNCiAgXHNpZ21hXjImPSZWKFkpPVxzdW1fe2k9MX1ee259VihZX2kpPW5ccGkoMS1ccGkpDQogXGVuZHthcnJheX0kJA0KDQojIyNSb3prxYJhZCB3aWVsb21pYW5vd3kgIA0KVW9nw7NsbmllbmllIHJvemvFgmFkdSBkd3VtaWFub3dlZ28NCiQkXGJlZ2lue2FycmF5fXtybGx9DQogIFAoWV9pPTEpJj0mXHBpXzFcXCANCiBQKFlfaT0yKSY9JlxwaV8yXFwNCiAmXGRvdHMmXFwNCiBQKFlfaT1jKSY9JlxwaV9jDQogXGVuZHthcnJheX0kJC4uDQogJFlfaSQgJChpPTEsMixcZG90cyxuKSQgc8SFIG5pZXphbGXFvG5lDQogJCRZPShuXzEsbl8yLFxkb3RzLG5fYylcaWZmIFwjKGk6WV9pPTEpPW5fMSxcIyhpOllfaT0yKT1uXzIsXGRvdHMsXCMoaTpZX2k9Yyk9bl9jJCQgIA0KICQkUChZPShuXzEsbl8yLFxkb3RzLG5fYykpPVxmcmFje24hfXtuXzEhbl8yIVxkb3RzIG5fYyF9XHBpXzFee25fMX1ccGlfMl57bl8yfVxkb3RzIFxwaV9jXntuX2N9JCQNCiANCiMjI1JvemvFgmFkIFBvaXNzb25hDQojIyMjUHJhd28gbWHFgnljaCBsaWN6YiAgDQpfV3lwcm93YWR6ZW5pZV8gIA0KX1p3acSFemVrIHogcm96a8WCYWRlbSB3aWVsb21pYW5vd3ltXw0KDQojI01ldG9kYSBuYWp3acSZa3N6ZWogd2lhcnlnb2Rub8WbY2kgIA0KIyMjRnVua2NqYSB3aWFyeWdvZG5vxZtjaSAgDQo+Unp1Y29ubyAxMCByYXp5IG1vbmV0xIUuIFd5b2FkxYJvIDcgb3LFgsOzVy5KYWtpZSBtb8W8ZSBiecSHIHByYXdkb3BvZG9iaWXFhHN0d28gd3lwYWRuacSZY2lhIG9yxYJhPyAgDQoNCkdkeWJ5IHByYXdkb3BvZG9iaWXFhHN0d28gd3lwYWRuacSZY2lhIG9yxYJhIGJ5xYJvIHLDs3duZSAkXHBpJCwgdG8gemFvYnNlcndvd2FueSB3eW5payBwb2phd2nFgmJ5IHNpxJkgeiBwcmF3ZG9wb2RvYmllxYRzdHdlbTogIA0KJCRcbGVmdCgNCiAgICBcYmVnaW57YXJyYXl9e2N9DQogICAgICAxMCBcXA0KICAgICAgNw0KICAgIFxlbmR7YXJyYXl9DQogIFxyaWdodClccGleezd9KDEtXHBpKV57M30kJC4uDQoNCmBgYHtyLGVjaG89RkFMU0V9DQp3aWFyIDwtIGZ1bmN0aW9uKHApIGNob29zZSgxMCw3KSpwXjcqKDEtcCleMw0KY2F0KCJwaT0wLjQiLHJvdW5kKHdpYXIoMC40KSxkaWdpdHM9NCksIlxuIikNCmNhdCgicGk9MC41Iixyb3VuZCh3aWFyKDAuNSksZGlnaXRzPTQpLCJcbiIpDQpjYXQoInBpPTAuNiIscm91bmQod2lhcigwLjYpLGRpZ2l0cz00KSwiXG4iKQ0KY2F0KCJwaT0wLjciLHJvdW5kKHdpYXIoMC43KSxkaWdpdHM9NCksIlxuIikNCmNhdCgicGk9MC44Iixyb3VuZCh3aWFyKDAuOCksZGlnaXRzPTQpLCJcbiIpDQpgYGANCg0KDQpgYGB7cixlY2hvPUZBTFNFLG1lc3NhZ2U9RkFMU0V9DQpyZXF1aXJlKGdncGxvdDIpDQpxIDwtIGdncGxvdChkYXRhID0gZGF0YS5mcmFtZSh4ID0gMCksIG1hcHBpbmcgPSBhZXMoeCA9IHgpKQ0KcSArIHN0YXRfZnVuY3Rpb24oZnVuID0gd2lhcikgKyB4bGltKDAsMSkrDQogIGxhYnMoeD0icCIsIHk9IndpYXJ5Z29kbm/Fm8SHIikgKw0KICAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gMC43LCBjb2xvciA9ICJibHVlIiwgc2l6ZT0xLjEpDQpgYGANCg0KIyMjTWV0b2RhIG5handpxJlrc3plaiB3aWFyeWdvZG5vxZtjaSAgDQpOaWVjaCAkTChcYmV0YSkkIC0gbG9nYXJ5dG0gZnVua2NqaSB3aWFyeWdvZG5vxZtjaS4gRXN0eW1hdG9yIG5handpxJlrc3plaiB3aWFyeWdvZG5vxZtjaToNCiQkXHdpZGVoYXR7XGJldGF9OiBcZnJhY3tccGFydGlhbH17XHBhcnRpYWxcYmV0YX1MKFxiZXRhKT0wJCQNCkLFgsSFZCBzdGFuZGFyZG93eSBlc3R5bWF0b3JhIE5XIHBhcmFtZXRydSAkXGJldGEkIGplc3QgcGllcndpYXN0a2llbSBrd2FkcmF0b3d5bSBwcnpla8SFdG5laiBtYWNpZXJ6eSAkXEltXnstMX0kLCBvYmxpY3pvbnltIHcgcHVua2NpZSAkXHdpZGVoYXR7XGJldGF9JCwgZ2R6aWUgDQokJFxJbT1FXGxlZnRbLVxmcmFje1xwYXJ0aWFsXjJMKFxiZXRhKX17XHBhcnRpYWxcYmV0YV9qXHBhcnRpYWxcYmV0YV9rfVxyaWdodF0kJCAgDQpfU0UgZGxhIHJvemvFgmFkdSBkd3VtaWFub3dlZ28gbmEgZHdhIHNwb3NvYnlfDQoNCiMjSmVkbm93eW1pYXJvd2UsIGFzeW1wdG90eWN6bmUgdGVzdHkgaXN0b3Rub8WbY2kNCiQkXGJlZ2lue2FycmF5fXtyY2x9DQogIEhfMCY6JlxiZXRhPVxiZXRhXzBcXCANCiBIXzEmOiZcYmV0YVxuZXFcYmV0YV8wDQogXGVuZHthcnJheX0kJA0KIA0KIyMjVGVzdCBXYWxkYQ0KJCR6PVxmcmFje1x3aWRlaGF0e1xiZXRhfS1cYmV0YV8wfXtTRShcd2lkZWhhdHtcYmV0YX0pfVxhc3ltcFxtYXRoY2Fse059KDAsMSkkJA0KDQojIyNUZXN0IGlsb3JhenUgd2lhcnlnb2Rub8WbY2kNCiQkXGJlZ2lue2FycmF5fXtyY2x9DQpsXzAmPSZtYXhce1xiZXRhXGluIEhfMDpsKFxiZXRhKVx9XFwNCmxfMSY9Jm1heFx7XGJldGFcaW4gSF8wXGN1cCBIXzE6bChcYmV0YSlcfQ0KXGVuZHthcnJheX0kJCAgDQoNCj5UdyAoV2lsa3MgMTkzNSkgIA0KJCQtMiBcbG9nXGxlZnQoXGZyYWN7bF8wfXtsXzF9XHJpZ2h0KVxhc3ltcFxjaGleMl9rJCQNCiQkaz1cZGltKEhfMFxjdXAgSF8xKS1cZGltKEhfMCkkJA0KDQojIyNUZXN0IHB1bmt0b3d5IChGaXNoZXIsUmFvKSAgDQokJFxiZWdpbnthcnJheX17cmNsfQ0KICB1KFxiZXRhXzApICY9JiANCiAgXGxlZnQuDQogICAgXGZyYWN7XHBhcnRpYWwgTChcYmV0YSl9e1xwYXJ0aWFsICAgICBcYmV0YX1ccmlnaHR8X3tcYmV0YT1cYmV0YV8wfVxcDQogICAgaShcYmV0YV8wKSAmPSYgDQogICAgLVxsZWZ0LkVcbGVmdFtcZnJhY3tccGFydGlhbF4yTChcYmV0YSl9e1xwYXJ0aWFsXGJldGFeMn1ccmlnaHRdDQogIFxyaWdodHxfe1xiZXRhPVxiZXRhXzB9DQogXGVuZHthcnJheX0kJA0KIA0KIyMjI1N0YXR5c3R5a2EgcHVua3Rvd2ENCiQkDQpcYmVnaW57YXJyYXl9e3JjbH0NCiAgdShcYmV0YV8wKVxzcXJ0e2koXGJldGFfMCl9ICYgXGFzeW1wICYgXG1hdGhjYWx7Tn0oMCwxKVxcDQogIHUoXGJldGFfMCleMmkoXGJldGFfMCkgJiBcYXN5bXAgJiBcY2hpXjJfMQ0KXGVuZHthcnJheX0NCiQkDQoNCl9Qcnp5a8WCYWR5IGRsYSByb3prxYJhZHUgZHd1bWlhbm93ZWdvXw0KDQojI1ByemVkemlhxYJ5IHVmbm/Fm2NpDQoNClByemVkemlhxYJ5IHVmbm/Fm2NpIChkd3VzdHJvbm5lKSBkbGEgJFxiZXRhXzAkIG5hIHBvemlvbWllIHVmbm/Fm2NpICQxLVxhbHBoYSQgbW/FvG5hIG90cnp5bWHEhywgZ2R5IHpuYW5hIGplc3Qgc3RhdHlzdHlrYSB0ZXN0b3dhICRUJCBkbyB0ZXN0b3dhbmlhIG5hIHBvemlvbWllIGlzdG90bm/Fm2NpICRcYWxwaGEkIGhpcG90ZXoNCiQkXGJlZ2lue2FycmF5fXtyY2x9DQogICAgSF8wJjomXGJldGE9XGJldGFfMFxcIA0KICAgIEhfMSY6JlxiZXRhXG5lcVxiZXRhXzANCiBcZW5ke2FycmF5fSQkDQogDQpXeXN0YXJjenkgcm96d2nEhXphxIcgd3pnbGVkZW0gJFxiZXRhXzAkIHLDs3duYW5pZQ0KJCQNCiAgUF97SF8wfQ0KICAgIFxsZWZ0KA0KICAgICAgXGxlZnR8IFQgXHJpZ2h0fCA8IHUoXGFscGhhKQ0KICAgIFxyaWdodCkgPSAxLVxhbHBoYQ0KJCQNCg0KX19Vd2FnYS4gU3RhdHlzdHlrYSAkVCQgamVzdCBmdW5rY2rEhSAkXGJldGFfMCRfXw0KDQo+VyA1MCByenV0YWNoIGtvc3RrxIUgMjAgcmF6eSB3eXBhZMWCbyB3acSZY2VqIG5pxbwgNCBvY3prYS4gU2tvbnN0cnV1aiBwcnplZHppYcWCIHVmbm/Fm2NpIG5hIHBvemlvbWllIDAuOTUgZGxhIHByYXdkb3BvZG9iaWXFhHN0d2Egd3lwYWRuacSZY2lhIDUgbHViIDYgb2N6ZWsuIEN6eSBtb8W8bmEgdXdhxbxhxIcsIMW8ZSBrb3N0a2EgamVzdCByemV0ZWxuYT8NCg0KIyMjI1Rlc3QgV2FsZGENCg0KVGVzdHVqZW15IGhpcG90ZXrEmSwgxbxlICRccGlcbmUgXGZyYWN7MX17M30kDQpgYGB7cn0NCnBpaGF0IDwtIDIwLzUwDQp3YWxkIDwtIGZ1bmN0aW9uKHBpLjApIHsNCiAgKHNlIDwtIHNxcnQocGloYXQqKDEtcGloYXQpLzUwKSkNCiAgKFQgPC0gKHBpaGF0LXBpLjApL3NlKQ0KICBwdiA8LSAyKigxLXBub3JtKFQpKQ0KICBsaXN0KHNlPXNlLFQ9VCxwdj1wdikNCn0NCmBgYA0KDQpgYGB7cn0NCndhbGQoMS8zKQ0Kd2FsZCgwLjIpDQp3YWxkKDAuMjY0MikNCndhbGQoMC4yNjQzKQ0KYGBgDQoNCl9fUHJ6ZWR6aWHFgiBXYWxkYV9fDQpgYGB7cn0NCm4gPC0gNTANCnBpaGF0ICsgYygtMSwgMSkgKiBxbm9ybShwID0gMC45NzUpICogc3FydCgocGloYXQgKiAoMSAtIHBpaGF0KSkvbikgDQoNCmBgYA0KDQpfX1ByemVkemlhxYIgeiB0ZXN0dSBpbG9yYXp1IHdpYXJ5Z29kbm/Fm2NpX18NCiQkDQogIExSPTINCiAgXGxlZnRbDQogICAgeVxsb2cNCiAgICBcbGVmdCgNCiAgICBcZnJhY3tcd2lkZWhhdHtccGl9fXtccGlfMH0NCiAgICBccmlnaHQpICsgKG4teSlcbG9nDQogICAgXGxlZnQoDQogICAgXGZyYWN7MS1cd2lkZWhhdHtccGl9fXsxLVxwaV8wfQ0KICAgIFxyaWdodCkNCiAgXHJpZ2h0XQ0KJCQNCg0KVHJ6ZWJhIHJvendpxIV6YcSHIHLDs3duYW5pZQ0KJCQNCiAgTFI9XHRleHR7cWNoaXNxfSgxLVxhbHBoYSxkZj0xKQ0KJCQNCmBgYHtyfQ0KTFIgPC0gZnVuY3Rpb24ocGkuMCwgeSwgbiwgYWxwaGEpIHsNCiAgcGhhdCA8LSB5L24NCiAgIDIqKHkqbG9nKHBoYXQvcGkuMCkgKyAobi15KSpsb2coKDEtcGhhdCkvKDEtcGkuMCkpKQ0KfQ0KTFIwIDwtIGZ1bmN0aW9uKHBpLjAsIHksIG4sIGFscGhhKXsNCiAgTFIocGkuMCwgeSwgbiwgYWxwaGEpLSBxY2hpc3EoMS1hbHBoYSxkZj0xKQ0KfSANCmBgYA0KDQpgYGB7ciB9DQpMUigwLjI1LDIwLDUwLDAuMDUpDQoocSA8LSBxY2hpc3EoMS0wLjA1LGRmPTEpKQ0KTFIwKDAuMjUsMjAsNTAsMC4wNSkNCnVuaXJvb3QoZj1MUjAsIGludGVydmFsPWMoMC4yLDAuMyksIG49NTAsIHk9MjAsIGFscGhhPS4wNSkNCnVuaXJvb3QoZj1MUjAsIGludGVydmFsPWMoMC41LDAuNiksIG49NTAsIHk9MjAsIGFscGhhPS4wNSkNCg0KYGBgDQoNClByemVkemlhxYI7ICQoMC4yMjQ4LDAuNTk0OCkkICANCl9fUHJ6ZWR6aWHFgiB6IHRlc3R1IHB1bmt0b3dlZ29fXyAgDQpOYWxlxbx5IHJvendpxIV6YcSHLCB3emdsxJlkZW0gJFxwaV8wJCByw7N3bmFuaWUgIA0KJCQNCiAgXGxlZnR8DQogICAgXGZyYWN7XHdpZGVoYXR7XHBpfS1ccGlfMH17XHNxcnR7XGZyYWN7XHBpXzAoMS1ccGlfMCl9e259fX0NCiAgXHJpZ2h0IHwNCiQkDQoNCmBgYHtyIH0NCnB0IDwtIGZ1bmN0aW9uKHBpLjAseSxuLGFscGhhKSB7DQogIHBpaGF0IDwtIHkvbg0KICAocGloYXQtcGkuMCleMi1xY2hpc3EoMS1hbHBoYSxkZj0xKSoocGkuMCooMS1waS4wKSkvbg0KfQ0KYGBgDQoNCmBgYHtyfQ0KcHQoMC40LDIwLDUwLDAuMDUpDQpgYGANCg0KYGBge3IgfQ0KdW5pcm9vdChmPXB0LCBpbnRlcnZhbD1jKDAuMiwwLjMpLCBuPTUwLCB5PTIwLCBhbHBoYT0uMDUpDQp1bmlyb290KGY9cHQsIGludGVydmFsPWMoMC41LDAuNiksIG49NTAsIHk9MjAsIGFscGhhPS4wNSkNCmBgYA0KDQpQcnplZHppYcWCOyAkKDAuMjc2MSwwLjUzODIpJCAgDQoNCiMjIyNQcnplZHppYcWCIFdpbHNvbmENCg0KJCQNClxiZWdpbnthcnJheX17cmNsfQ0KICBsICYgPSAmXGZyYWN7eihcYWxwaGEpXjJ9e24reihcYWxwaGEpXjJ9XFwNCiAgcCAmID0gJiAoMS1sKVx3aWRlaGF0e1xwaX0rbFxmcmFjezF9ezJ9XFwNCiAgdyAmID0gJiAoMS1sKVx3aWRlaGF0e1xwaX0oMS1cd2lkZWhhdHtccGl9KStsXGZyYWN7MX17NH1cXA0KICBwICYgXHBtICYgeihcYWxwaGEpXHNxcnR7XGZyYWN7d317bit6KFxhbHBoYSleMn19DQpcZW5ke2FycmF5fQ0KJCQNClByemVkemlhxYJgIFdpbHNvbmEgOTUlICANCmBgYHtyfQ0KbCA8LSAxLjk2XjIvKDUwKzEuOTZeMikNCnAgPC0gKDEtbCkqMC40K2wqMC41DQp3IDwtICgxLWwpKjAuNCowLjYrbCowLjI1DQpyb3VuZChwK2MoLTEsMSkqc3FydCh3Lyg1MCsxLjk2XjIpKSxkaWdpdHM9NCkNCmBgYA0KDQpHZHkgJHk9MCQgcHJ6ZWR6aWHFgiBXYWxkYSBuaWUgbWEgc2Vuc3UuICANClByemVkemlhxYIgcHVua3Rvd3kgZGxhICR5PTAkIG1hIHBvc3RhxIcNCiQkXGxlZnQoMCxcZnJhY3t6KFxhbHBoYSl9e24reihcYWxwaGEpfVxyaWdodCkkJA0KUHJ6ZWR6aWHFgiBuYWp3acSZa3N6ZWogd2lhcnlnb2Rub8WbY2kgIA0KTG9nYXJ5dG0gZnVua2NqaSB3aWFyeWdvZG5vxZtjaSB3eW5vc2kgJGwoXHBpKT1uXGxvZygxLVxwaSkkLCBTdMSFZCAkbF8xPWwoMCk9MCQsICRsXzA9blxsb2coMS1ccGlfMCkkDQokJA0KICBMUj0tMm5cbG9nDQogICAgXGxlZnQoDQogICAgMS1ccGlfMA0KICAgIFxyaWdodCkNCiQkDQpQcnplZHppYcWCIExSIGLEmWR6aWUgbWlhxYIgcG9zdGHEhw0KJCQNClxsZWZ0KA0KICAwLA0KICAxLVxleHAoLVxmcmFje1x0ZXh0e3FjaGlzcX0oMS1cYWxwaGEsZGY9MSl9ezJufSkNClxyaWdodCkNCiQkDQpQcnplZHppYcWCIFdpbHNvbmEgemHFmyBixJlkemllIHLDs3dueSANCiQkDQpcYmVnaW57YXJyYXl9e3JjbH0NCiAgbCAmID0gJlxmcmFje3ooXGFscGhhKV4yfXtuK3ooXGFscGhhKV4yfVxcDQogIHAgJiA9ICYgbFxmcmFjezF9ezJ9XFwNCiAgdyAmID0gJiBsXGZyYWN7MX17NH1cXA0KICBwICYgXHBtICYgeihcYWxwaGEpXHNxcnR7XGZyYWN7d317bit6KFxhbHBoYSleMn19DQpcZW5ke2FycmF5fQ0KJCQNCg0KRGxhIGRsYSAkbj01MCQgOTUlIHByemVkemlhxYIgdWZub8WbY2kgcHVua3Rvd3kgbWEgcG9zdGHEhw0KYGBge3J9DQpyb3VuZChjKDAsMS45Ni8oNTArMS45NikpLGRpZ2l0cyA9IDQpDQpgYGANCg0KUHJ6ZWR6aWHFgiBMUg0KYGBge3J9DQpyb3VuZChjKDAsMS1leHAoLXFjaGlzcSgwLjk1LDEpLzEwMCkpLGRpZ2l0cyA9IDQpDQpgYGANClByemVkemlhxYIgV2lsc29uYQ0KYGBge3J9DQpsIDwtIDEuOTZeMi8oNTArMS45Nl4yKQ0KcCA8LSBsKjAuNQ0KdyA8LSBsKjAuMjUNCnJvdW5kKHArYygtMSwxKSpzcXJ0KHcvKDUwKzEuOTZeMikpLGRpZ2l0cz00KQ0KYGBgDQoNCg==