1.Encontrar la funcion de autocorrelacíon para el proceso definido por
\[
Y_t=5+e_t -\frac{1}{2}e_{t-1}+\frac{1}{4}e_{t-2}
\] \[
var(Y_t)=Var(5+e_t -\frac{1}2 e_{t-1} +\frac{1}4 e_{t-2})=[1+(\frac{1}2^2 + \frac{1}4^2)\sigma^2 _e]
\] \[
Cov(Y_t,Y_{t-1})=cov(e_t-\frac{1}2 e_{t-1} +\frac{1}4 e_{t-2}, e_(t-1) - \frac{1}2 e_{t-2}+\frac{1}4 e_{t-3}= Cov(-\frac{1}2 e_{t-1}+\frac{1}4 e_{t-2},e{t-1} -\frac{1}2 e_{t-2})
\] \[
=Cov(-\frac{1}2 e_{t-1}, e_{t-1})+ Cov(\frac{1}4 e_{t-2}, -\frac{1}2 e_{t-2})=[-\frac{1}2(\frac{1}4)-\frac{1}2] \sigma^2_e = -\frac{5}8 \sigma^2_e
\] \[
Cov(Y_t, Y{t_2})=Cov(e_t -\frac{1}2e_{t-1}+\frac{1}4 e_{t-2},e_{t-2}-\frac{1}2 e_{t-3}+\frac{1}4 e_{t-4})= Cov(\frac{1}4 e_{t-2},e_{t-2})=\frac{1}4 \sigma^2_e, y
\] \[
Cov(Y_t, Y{t_3})= Cov(e_t - \frac{1}2 e_{t-1}+\frac{1}4 e_{t-2} , e_{t-3}-\frac{1}2 e_{t-4}+\frac{1}4 e_{t-5})=0
\]
2.Graficar la funcion de autocorrelacíon para los siguientes modelos MA(2) con los parametros especificado:
\[ a) \theta_1=-0.5, \theta_2-0.4 \]

\[ b) \theta_1=-1.2 , \theta_2=0.7 \]

\[ c) \theta_1=1, \theta_2=0.6 \]

3. Mostrar que la función de auto correlación de un MA(1) no cambia.
\[
\frac{-1}{\theta}/1+(1\theta) = \frac{-\theta}{1+\theta^2}
\]
4. Calcular y graficar las funciones de auto correlación para los siguientes modelos AR(1). Graficar con un numero suficientes de rezagos para que la función de auto correlación decrezca a casi cero.
\[
a) \phi=0.6
\]
\[
b) \phi=-0.6
\]
\[
c) \phi=0.95
\]
\[
d) \phi=0.3
\]
ARMAacf(ar=0.6,lag.max=12)
0 1 2 3 4 5 6 7
1.000000000 0.600000000 0.360000000 0.216000000 0.129600000 0.077760000 0.046656000 0.027993600
8 9 10 11 12
0.016796160 0.010077696 0.006046618 0.003627971 0.002176782

ARMAacf(ar=-0.6,lag.max=12)
0 1 2 3 4 5 6
1.000000000 -0.600000000 0.360000000 -0.216000000 0.129600000 -0.077760000 0.046656000
7 8 9 10 11 12
-0.027993600 0.016796160 -0.010077696 0.006046618 -0.003627971 0.002176782

ARMAacf(ar=0.6,lag.max=20)
0 1 2 3 4 5 6
1.000000e+00 6.000000e-01 3.600000e-01 2.160000e-01 1.296000e-01 7.776000e-02 4.665600e-02
7 8 9 10 11 12 13
2.799360e-02 1.679616e-02 1.007770e-02 6.046618e-03 3.627971e-03 2.176782e-03 1.306069e-03
14 15 16 17 18 19 20
7.836416e-04 4.701850e-04 2.821110e-04 1.692666e-04 1.015600e-04 6.093597e-05 3.656158e-05

ARMAacf(ar=0.3,lag.max=12)
0 1 2 3 4 5 6 7
1.00000e+00 3.00000e-01 9.00000e-02 2.70000e-02 8.10000e-03 2.43000e-03 7.29000e-04 2.18700e-04
8 9 10 11 12
6.56100e-05 1.96830e-05 5.90490e-06 1.77147e-06 5.31441e-07

5.Describa las características generales de la función de autocorrelación para los siguientes procesos: a) MA(1), b) MA(2), c) AR(1), d) AR(2) y e) ARMA(1,1)
Tiene una correlación distinta de cero solo en el retraso 1. Puede ser positivo o negativo, pero debe estar entre -0.5 y +0.5.
Tiene correlación distinta de cero solo en los retrasos 1 y 2.
Tiene autocorrelaciones en descomposición exponencial a partir del retraso 0. Si ??>0, todas las autocorrelaciones son positivas. Si ??<0, entonces las autocorrelaciones alternan entre negativo, positivo negativo, etc.
Las autocorrelaciones pueden tener varios patrones, pero si las raíces de la ecuación característica son números complejos, entonces el patrón será un coseno con una magnitud decadente.
Tiene autocorrelaciones en descomposición exponencial a partir del retardo 1, pero no desde el retardo cero.
6.Usar la fórmula recursiva \[{\phi_{k}=\rho_1\phi_{k-1} + \rho_2\phi_{k-2} } \] (ecuación Yule-Walker) para calcular y graficar las funciones de autocorrelación para los siguientes procesos AR(2) con los parámetros especificados. En cada caso especifique si las raíces de la ecuación característica son reales o complejas.
\[
\phi_1=0.6 y \phi_2=0.3
\]
rho
[1] -0.8000000 0.8200000 -0.7280000 0.7012000 -0.6444800 0.6083920 -0.5655968 0.5304347
[9] -0.4949723 0.4632063 -0.4327687 0.4047106 -0.3782686 0.3536627 -0.3305994 0.3090711
[17] -0.2889281 0.2701068 -0.2525068 0.2360561

polyroot(c(1, -phi1, -phi2))
[1] -1.069694+0i 1.869694-0i
Las raices son reales lo que indica que esta muy cerca del límite de estacionariedad (+1).

\[
\phi_1=-0.4 y \phi_2=0.5
\]
rho
[1] -0.8000000 0.8200000 -0.7280000 0.7012000 -0.6444800 0.6083920 -0.5655968 0.5304347
[9] -0.4949723 0.4632063 -0.4327687 0.4047106 -0.3782686 0.3536627 -0.3305994 0.3090711
[17] -0.2889281 0.2701068 -0.2525068 0.2360561

polyroot(c(1, -phi1, -phi2))
[1] -1.069694+0i 1.869694-0i
las raices tambien son reales

- \[
\phi_1=1.2 y \phi_2=-0.7
\]
rho
[1] -0.8000000 0.8200000 -0.7280000 0.7012000 -0.6444800 0.6083920 -0.5655968 0.5304347
[9] -0.4949723 0.4632063 -0.4327687 0.4047106 -0.3782686 0.3536627 -0.3305994 0.3090711
[17] -0.2889281 0.2701068 -0.2525068 0.2360561

polyroot(c(1, -phi1, -phi2))
[1] -1.069694+0i 1.869694-0i
En este caso las raices son complejas

Damp;Freq;Phase
[1] NaN
[1] NaN
[1] 0.3217506
- \[
\phi_1=-1 y \phi_2=-0.6
\]
rho
[1] -0.8000000 0.8200000 -0.7280000 0.7012000 -0.6444800 0.6083920 -0.5655968 0.5304347
[9] -0.4949723 0.4632063 -0.4327687 0.4047106 -0.3782686 0.3536627 -0.3305994 0.3090711
[17] -0.2889281 0.2701068 -0.2525068 0.2360561

polyroot(c(1, -phi1, -phi2))
[1] -1.069694+0i 1.869694-0i
polyroot(c(1, -phi1, -phi2))

Damp;Freq;Phase
[1] NaN
[1] NaN
[1] 0.3217506
- \[
\phi_1=0.5 y \phi_2=-0.9
\]
rho
[1] -0.8000000 0.8200000 -0.7280000 0.7012000 -0.6444800 0.6083920 -0.5655968 0.5304347
[9] -0.4949723 0.4632063 -0.4327687 0.4047106 -0.3782686 0.3536627 -0.3305994 0.3090711
[17] -0.2889281 0.2701068 -0.2525068 0.2360561

polyroot(c(1, -phi1, -phi2))
[1] -1.069694+0i 1.869694-0i
En este caso las raices tambien son complejas

Damp;Freq;Phase
[1] NaN
[1] NaN
[1] 0.3217506
7.Graficar las funciones de autocorrelación para cada uno de los siguientes procesos ARMA:
- ARMA(1,1) con \[\phi=0.7 y \theta=-0.4 \]

Se toma en cuenta que para graficar las betas, R usa valores negativos.
- ARMA(1,1) con \[ \phi=0.7 y \theta=0.4 \]

8.Considere dos procesos MA(2), uno con
\[
\theta_1 = \theta_2 =-1/6 y\theta_1=1 y \theta_2=6
\]
- Mostrar que estos procesos tienen la misma función de autocorrelación.
ARMAacf(ma=c(1,-6))
0 1 2 3
1.0000000 -0.1315789 -0.1578947 0.0000000
ARMAacf(ma=c(-1/6,-1/6))
0 1 2 3
1.0000000 -0.1315789 -0.1578947 0.0000000
Se observa como tienen la misma función de autocorrelación.
- ¿Cómo se comparan las raíces de los polinomios característicos?
Todas las raices de los polinomios son recíprocas entre sí. Sólo el MA(2)cuando \[ \theta_1=\theta_2=-\frac{1}{6} \] es invertible
9.Considere un proceso AR(1) \[{Y_{t}= Y_{t-1}+ e_t.}\] Mostrar que si \[{|\rho| = 1}\] el proceso no puede ser estacionario. (Pista: Tomar varianzas de ambos lados).
si \[ y_t \] es estacionario. Entonces \[ Var(Y_t)=\phi^2Var(Y_{t-1})+\sigma^2_e \] \[ Var(Y_t)=\sigma^2_e/(1/\phi^2) \] si \[ |\phi|=1\] esto seria imposible.
10.Considere un proceso MA(6) con
\[
\theta_1=-0.5, \theta_2=0.25, \theta_3=-0.125,
\]
\[
\theta_4=0.0625, \theta_5=-0.0325 y \theta_6=0.015625.
\] Encontrar un modelo más simple que tenga casi los mismos -pesos.
ARMAacf(ma=c(-0.5,0.25,-0.125,0.0625,-0.03125,0.015625))
0 1 2 3 4 5 6 7
1.00000000 -0.49990844 0.24977110 -0.12451932 0.06152719 -0.02929866 0.01171947 0.00000000
LS0tDQp0aXRsZTogImVqZXJjaWNpbyA1Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQphdXRob3I6IFJBVUwgTFVOQSBMT1BFWg0KLS0tDQojIDEuRW5jb250cmFyIGxhIGZ1bmNpb24gZGUgYXV0b2NvcnJlbGFj7W9uIHBhcmEgZWwgcHJvY2VzbyBkZWZpbmlkbyBwb3IgDQoNCg0KDQokJA0KWV90PTUrZV90IC1cZnJhY3sxfXsyfWVfe3QtMX0rXGZyYWN7MX17NH1lX3t0LTJ9DQokJA0KJCQNCnZhcihZX3QpPVZhcig1K2VfdCAtXGZyYWN7MX0yIGVfe3QtMX0gK1xmcmFjezF9NCBlX3t0LTJ9KT1bMSsoXGZyYWN7MX0yXjIgKyBcZnJhY3sxfTReMilcc2lnbWFeMiBfZV0NCiQkDQokJA0KQ292KFlfdCxZX3t0LTF9KT1jb3YoZV90LVxmcmFjezF9MiBlX3t0LTF9ICtcZnJhY3sxfTQgZV97dC0yfSwgZV8odC0xKSAtIFxmcmFjezF9MiBlX3t0LTJ9K1xmcmFjezF9NCBlX3t0LTN9PSBDb3YoLVxmcmFjezF9MiBlX3t0LTF9K1xmcmFjezF9NCBlX3t0LTJ9LGV7dC0xfSAtXGZyYWN7MX0yIGVfe3QtMn0pDQokJA0KJCQNCj1Db3YoLVxmcmFjezF9MiBlX3t0LTF9LCBlX3t0LTF9KSsgQ292KFxmcmFjezF9NCBlX3t0LTJ9LCAtXGZyYWN7MX0yIGVfe3QtMn0pPVstXGZyYWN7MX0yKFxmcmFjezF9NCktXGZyYWN7MX0yXSBcc2lnbWFeMl9lID0gLVxmcmFjezV9OCBcc2lnbWFeMl9lDQokJA0KJCQNCkNvdihZX3QsIFl7dF8yfSk9Q292KGVfdCAtXGZyYWN7MX0yZV97dC0xfStcZnJhY3sxfTQgZV97dC0yfSxlX3t0LTJ9LVxmcmFjezF9MiBlX3t0LTN9K1xmcmFjezF9NCBlX3t0LTR9KT0gQ292KFxmcmFjezF9NCBlX3t0LTJ9LGVfe3QtMn0pPVxmcmFjezF9NCBcc2lnbWFeMl9lLCB5DQokJA0KJCQNCkNvdihZX3QsIFl7dF8zfSk9IENvdihlX3QgLSBcZnJhY3sxfTIgZV97dC0xfStcZnJhY3sxfTQgZV97dC0yfSAsIGVfe3QtM30tXGZyYWN7MX0yIGVfe3QtNH0rXGZyYWN7MX00IGVfe3QtNX0pPTANCiQkDQoNCg0KDQoNCg0KDQoNCiMgMi5HcmFmaWNhciBsYSBmdW5jaW9uIGRlIGF1dG9jb3JyZWxhY+1vbiBwYXJhIGxvcyBzaWd1aWVudGVzIG1vZGVsb3MgTUEoMikgY29uIGxvcyBwYXJhbWV0cm9zIGVzcGVjaWZpY2FkbzoNCg0KDQoNCg0KDQoNCg0KJCQgYSkgXHRoZXRhXzE9LTAuNSwgICAgXHRoZXRhXzItMC40ICAgJCQNCg0KYGBge3J9DQptYTI8LWFyaW1hLnNpbShtb2RlbD1saXN0KG1hPWMoLTAuNSwtMC40KSksbj0xMDApDQpwbG90KG1hMix0eXBlPSdsJyxjb2w9ICJyZWQiLG1haW49J01BKDIpICB0aGV0YTE9LTAuNSwgIHRoZXRhMj0tMC40JykNCmBgYA0KDQoNCg0KJCQgIGIpIFx0aGV0YV8xPS0xLjIgICwgXHRoZXRhXzI9MC43ICAgICAgICAgICQkDQoNCg0KDQpgYGB7cn0NCm1hMjwtYXJpbWEuc2ltKG1vZGVsPWxpc3QobWE9YygtMS4yLDAuNykpLG49MTAwKQ0KcGxvdChtYTIsdHlwZT0nbycsY29sPSJyZWQiLCBtYWluPSdNQSgyKTsgIHRoZXRhMT0tMS4yLCAgdGhldGEyPTAuNycpDQpgYGANCg0KDQoNCg0KDQokJCBjKSBcdGhldGFfMT0xLCBcdGhldGFfMj0wLjYgJCQNCg0KDQpgYGB7cn0NCm1hMjwtYXJpbWEuc2ltKG1vZGVsPWxpc3QobWE9YygxLDAuNikpLG49MTAwKQ0KcGxvdChtYTIsdHlwZT0nbycsY29sPSJyZWQiLCAgbWFpbj0nTUEoMik7ICB0aGV0YTE9LTAuNSwgIHRoZXRhMj0tMC40JykNCmBgYA0KDQoNCiMgMy4gTW9zdHJhciBxdWUgbGEgZnVuY2nzbiBkZSBhdXRvIGNvcnJlbGFjafNuIGRlIHVuIE1BKDEpIG5vIGNhbWJpYS4NCg0KDQoNCg0KDQokJA0KXGZyYWN7LTF9e1x0aGV0YX0vMSsoMVx0aGV0YSkgPSBcZnJhY3stXHRoZXRhfXsxK1x0aGV0YV4yfQ0KJCQNCg0KDQoNCg0KDQoNCg0KDQoNCiMgNC4gQ2FsY3VsYXIgIHkgIGdyYWZpY2FyICBsYXMgIGZ1bmNpb25lcyAgZGUgIGF1dG8gY29ycmVsYWNp824gIHBhcmEgIGxvcyAgc2lndWllbnRlcyAgbW9kZWxvcyAgQVIoMSkuICBHcmFmaWNhciAgY29uICB1biAgbnVtZXJvICBzdWZpY2llbnRlcyAgZGUgIHJlemFnb3MgIHBhcmEgIHF1ZSAgbGEgIGZ1bmNp824gIGRlICBhdXRvIGNvcnJlbGFjafNuICBkZWNyZXpjYSBhICBjYXNpICBjZXJvLg0KDQoNCg0KDQoNCg0KJCQNCiBhKSBccGhpPTAuNg0KJCQNCg0KDQokJA0KYikgXHBoaT0tMC42DQokJA0KDQokJA0KYykgXHBoaT0wLjk1DQokJA0KDQokJA0KZCkgXHBoaT0wLjMNCiQkDQoNCmEpDQpgYGB7cn0NCkFSTUFhY2YoYXI9MC42LGxhZy5tYXg9MTIpDQpgYGANCg0KYGBge3J9DQpBQ0Y8LUFSTUFhY2YoYXI9MC42LGxhZy5tYXg9MTIpDQpwbG90KHk9QUNGWy0xXSx4PTE6MTIsbWFpbj0ncGhpPTAuNicseGxhYj0nTGFnJyx5bGFiPSdBQ0YnLHR5cGU9J2gnKTthYmxpbmUoaD0wKQ0KYGBgDQoNCg0KYikgDQpgYGB7cn0NCkFSTUFhY2YoYXI9LTAuNixsYWcubWF4PTEyKQ0KDQpgYGANCg0KYGBge3J9DQpBQ0YxPC1BUk1BYWNmKGFyPS0wLjYsbGFnLm1heD0xMikNCnBsb3QoeT1BQ0YxWy0xXSx4PTE6MTIsbWFpbj0ncGhpPS0wLjYnLHhsYWI9J0xhZycseWxhYj0nQUNGJyx0eXBlPSdoJyk7YWJsaW5lKGg9MCkNCmBgYA0KDQpjKQ0KYGBge3J9DQpBUk1BYWNmKGFyPTAuNixsYWcubWF4PTIwKQ0KYGBgDQoNCmBgYHtyfQ0KQUNGMjwtQVJNQWFjZihhcj0wLjk1LGxhZy5tYXg9MjApDQpwbG90KHk9QUNGMlstMV0seD0xOjIwLG1haW49J3BoaT0wLjk1Jyx4bGFiPSdMYWcnLHlsYWI9J0FDRicsdHlwZT0naCcpO2FibGluZShoPTApDQpgYGANCg0KZCkNCmBgYHtyfQ0KQVJNQWFjZihhcj0wLjMsbGFnLm1heD0xMikNCmBgYA0KDQpgYGB7cn0NCkFDRjM8LUFSTUFhY2YoYXI9LTAuMyxsYWcubWF4PTEyKQ0KcGxvdCh5PUFDRjNbLTFdLHg9MToxMixtYWluPSdwaGk9LTAuMycseGxhYj0nTGFnJyx5bGFiPSdBQ0YnLHR5cGU9J2gnKTthYmxpbmUoaD0wKQ0KYGBgDQoNCg0KDQoNCg0KIyA1LkRlc2NyaWJhIGxhcyBjYXJhY3Rlcu1zdGljYXMgZ2VuZXJhbGVzIGRlIGxhIGZ1bmNp824gZGUgYXV0b2NvcnJlbGFjafNuIHBhcmEgbG9zIHNpZ3VpZW50ZXMgcHJvY2Vzb3M6IGEpIE1BKDEpLCBiKSBNQSgyKSwgYykgQVIoMSksIGQpIEFSKDIpIHkgZSkgQVJNQSgxLDEpDQoNClRpZW5lIHVuYSBjb3JyZWxhY2nzbiBkaXN0aW50YSBkZSBjZXJvIHNvbG8gZW4gZWwgcmV0cmFzbyAxLiBQdWVkZSBzZXIgcG9zaXRpdm8gbyBuZWdhdGl2bywgcGVybyBkZWJlIGVzdGFyIGVudHJlIC0wLjUgeSArMC41Lg0KDQpUaWVuZSBjb3JyZWxhY2nzbiBkaXN0aW50YSBkZSBjZXJvIHNvbG8gZW4gbG9zIHJldHJhc29zIDEgeSAyLg0KDQpUaWVuZSBhdXRvY29ycmVsYWNpb25lcyBlbiBkZXNjb21wb3NpY2nzbiBleHBvbmVuY2lhbCBhIHBhcnRpciBkZWwgcmV0cmFzbyAwLiBTaSA/Pz4wLCB0b2RhcyBsYXMgYXV0b2NvcnJlbGFjaW9uZXMgc29uIHBvc2l0aXZhcy4gU2kgPz88MCwgZW50b25jZXMgbGFzIGF1dG9jb3JyZWxhY2lvbmVzIGFsdGVybmFuIGVudHJlIG5lZ2F0aXZvLCBwb3NpdGl2byBuZWdhdGl2bywgZXRjLg0KDQpMYXMgYXV0b2NvcnJlbGFjaW9uZXMgcHVlZGVuIHRlbmVyIHZhcmlvcyBwYXRyb25lcywgcGVybyBzaSBsYXMgcmHtY2VzIGRlIGxhIGVjdWFjafNuIGNhcmFjdGVy7XN0aWNhIHNvbiBu+m1lcm9zIGNvbXBsZWpvcywgZW50b25jZXMgZWwgcGF0cvNuIHNlcuEgdW4gY29zZW5vIGNvbiB1bmEgbWFnbml0dWQgZGVjYWRlbnRlLg0KDQpUaWVuZSBhdXRvY29ycmVsYWNpb25lcyBlbiBkZXNjb21wb3NpY2nzbiBleHBvbmVuY2lhbCBhIHBhcnRpciBkZWwgcmV0YXJkbyAxLCBwZXJvIG5vIGRlc2RlIGVsIHJldGFyZG8gY2Vyby4NCg0KDQoNCg0KDQoNCg0KDQojIDYuVXNhciBsYSBm83JtdWxhIHJlY3Vyc2l2YSAkJHtccGhpX3trfT1ccmhvXzFccGhpX3trLTF9ICsgXHJob18yXHBoaV97ay0yfSB9ICQkIChlY3VhY2nzbiBZdWxlLVdhbGtlcikgcGFyYSBjYWxjdWxhciB5IGdyYWZpY2FyIGxhcyBmdW5jaW9uZXMgZGUgYXV0b2NvcnJlbGFjafNuIHBhcmEgbG9zIHNpZ3VpZW50ZXMgcHJvY2Vzb3MgQVIoMikgY29uIGxvcyBwYXLhbWV0cm9zIGVzcGVjaWZpY2Fkb3MuIEVuIGNhZGEgY2FzbyBlc3BlY2lmaXF1ZSBzaSBsYXMgcmHtY2VzIGRlIGxhIGVjdWFjafNuIGNhcmFjdGVy7XN0aWNhIHNvbiByZWFsZXMgbyBjb21wbGVqYXMuDQoNCg0KDQokJA0KIFxwaGlfMT0wLjYgeSBccGhpXzI9MC4zDQokJA0KDQpgYGB7cn0NCnJobz1OVUxMOyBwaGkxPTAuNjsgcGhpMj0wLjM7IG1heC5sYWc9MjANCnJobzE9cGhpMS8gKDEtcGhpMik7IHJobzI9IChwaGkyKigxLXBoaTIpK3BoaTFeMikvKDEtcGhpMikNCnJob1sxXT1yaG8xOyByaG9bMl09cmhvMg0KZm9yIChrIGluIDM6bWF4LmxhZykgcmhvW2tdPXBoaTEqcmhvW2stMV0rcGhpMipyaG9bay0yXQ0KcmhvDQpgYGANCg0KYGBge3J9DQpwbG90KHk9cmhvLCB4PTE6bWF4LmxhZywgdHlwZT0iaCIsIHlsYWI9IkFDRiIsIHhsYWI9ImxhZyIsIHlsaW09IGMgKC0xLCsxKSk7IGFibGluZShoPTApDQoNCmBgYA0KDQoNCmBgYHtyfQ0KcG9seXJvb3QoYygxLCAtcGhpMSwgLXBoaTIpKQ0KDQpgYGANCkxhcyByYWljZXMgc29uIHJlYWxlcyBsbyBxdWUgaW5kaWNhIHF1ZSBlc3RhIG11eSBjZXJjYSBkZWwgbO1taXRlIGRlIGVzdGFjaW9uYXJpZWRhZCAoKzEpLg0KDQpgYGB7cn0NCmFyMi5yPC1hcmltYS5zaW0obW9kZWw9bGlzdChhcj1jKHBoaTEsIHBoaTIpKSwgbj0xMDApDQpmaXQ8LWFyaW1hKGFyMi5yLCBvcmRlcj1jKDIsMCwwKSkNCmF1dG9wbG90KGZpdCkNCmBgYA0KDQoNCg0KDQoNCg0KDQoNCiQkDQpccGhpXzE9LTAuNCB5IFxwaGlfMj0wLjUNCiQkDQpgYGB7cn0NCnJobz1OVUxMOyBwaGkxPS0wLjQ7IHBoaTI9MC41OyBtYXgubGFnPTIwDQpyaG8xPXBoaTEvICgxLXBoaTIpOyByaG8yPSAocGhpMiooMS1waGkyKStwaGkxXjIpLygxLXBoaTIpDQpyaG9bMV09cmhvMTsgcmhvWzJdPXJobzINCmZvciAoayBpbiAzOm1heC5sYWcpIHJob1trXT1waGkxKnJob1trLTFdK3BoaTIqcmhvW2stMl0NCnJobw0KYGBgDQoNCg0KDQpgYGB7cn0NCnBsb3QoeT1yaG8sIHg9MTptYXgubGFnLCB0eXBlPSJoIiwgeWxhYj0iQUNGIiwgeGxhYj0ibGFnIiwgeWxpbT0gYyAoLTEsKzEpKTsgYWJsaW5lKGg9MCkNCmBgYA0KDQpgYGB7cn0NCnBvbHlyb290KGMoMSwgLXBoaTEsIC1waGkyKSkNCmBgYA0KbGFzIHJhaWNlcyB0YW1iaWVuIHNvbiByZWFsZXMNCg0KDQoNCmBgYHtyfQ0KYXIyLnI8LWFyaW1hLnNpbShtb2RlbD1saXN0KGFyPWMocGhpMSwgcGhpMikpLCBuPTEwMCkNCmZpdDwtYXJpbWEoYXIyLnIsIG9yZGVyPWMoMiwwLDApKQ0KYXV0b3Bsb3QoZml0KQ0KYGBgDQoNCg0KDQpjKQ0KJCQNClxwaGlfMT0xLjIgeSBccGhpXzI9LTAuNw0KJCQNCmBgYHtyfQ0KcmhvPU5VTEw7IHBoaTE9MS4yOyBwaGkyPS0wLjc7IG1heC5sYWc9MjANCnJobzE9cGhpMS8gKDEtcGhpMik7IHJobzI9IChwaGkyKigxLXBoaTIpK3BoaTFeMikvKDEtcGhpMikNCnJob1sxXT1yaG8xOyByaG9bMl09cmhvMg0KZm9yIChrIGluIDM6bWF4LmxhZykgcmhvW2tdPXBoaTEqcmhvW2stMV0rcGhpMipyaG9bay0yXQ0KcmhvDQpgYGANCg0KDQpgYGB7cn0NCnBsb3QoeT1yaG8sIHg9MTptYXgubGFnLCB0eXBlPSJoIiwgeWxhYj0iQUNGIiwgeGxhYj0ibGFnIiwgeWxpbT0gYyAoLTEsKzEpKTsgYWJsaW5lKGg9MCkNCg0KYGBgDQoNCmBgYHtyfQ0KcG9seXJvb3QoYygxLCAtcGhpMSwgLXBoaTIpKQ0KDQpgYGANCkVuIGVzdGUgY2FzbyBsYXMgcmFpY2VzIHNvbiBjb21wbGVqYXMNCg0KDQpgYGB7cn0NCmFyMi5jPC1hcmltYS5zaW0obW9kZWw9bGlzdChhcj1jKHBoaTEsIHBoaTIpKSwgbj0xMDApDQpmaXQuYzwtYXJpbWEoYXIyLmMsIG9yZGVyPWMoMiwwLDApKQ0KYXV0b3Bsb3QoZml0LmMpDQpgYGANCg0KDQoNCg0KDQpgYGB7cn0NCkRhbXA9c3FydCgtcGhpMikNCkZyZXE9IGFjb3MocGhpMS8oMipEYW1wKSkNClBoYXNlPWF0YW4oKDEtcGhpMikvKDErcGhpMikpDQpEYW1wO0ZyZXE7UGhhc2UNCmBgYA0KDQoNCg0KDQoNCg0KZCkNCiQkDQpccGhpXzE9LTEgIHkgXHBoaV8yPS0wLjYNCiQkDQpgYGB7cn0NCnJobz1OVUxMOyBwaGkxPS0xOyBwaGkyPS0wLjY7IG1heC5sYWc9MjANCnJobzE9cGhpMS8gKDEtcGhpMik7IHJobzI9IChwaGkyKigxLXBoaTIpK3BoaTFeMikvKDEtcGhpMikNCnJob1sxXT1yaG8xOyByaG9bMl09cmhvMg0KZm9yIChrIGluIDM6bWF4LmxhZykgcmhvW2tdPXBoaTEqcmhvW2stMV0rcGhpMipyaG9bay0yXQ0KcmhvDQpgYGANCg0KYGBge3J9DQpwbG90KHk9cmhvLCB4PTE6bWF4LmxhZywgdHlwZT0iaCIsIHlsYWI9IkFDRiIsIHhsYWI9ImxhZyIsIHlsaW09IGMgKC0xLCsxKSk7IGFibGluZShoPTApDQoNCmBgYA0KDQpgYGB7cn0NCnBvbHlyb290KGMoMSwgLXBoaTEsIC1waGkyKSkNCmBgYA0KcG9seXJvb3QoYygxLCAtcGhpMSwgLXBoaTIpKQ0KDQpgYGB7cn0NCmFyMi5jPC1hcmltYS5zaW0obW9kZWw9bGlzdChhcj1jKHBoaTEsIHBoaTIpKSwgbj0xMDApDQpmaXQuYzwtYXJpbWEoYXIyLmMsIG9yZGVyPWMoMiwwLDApKQ0KYXV0b3Bsb3QoZml0LmMpDQpgYGANCg0KYGBge3J9DQpEYW1wPXNxcnQoLXBoaTIpDQpGcmVxPSBhY29zKHBoaTEvKDIqRGFtcCkpDQpQaGFzZT1hdGFuKCgxLXBoaTIpLygxK3BoaTIpKQ0KRGFtcDtGcmVxO1BoYXNlDQpgYGANCiANCiANCiANCiANCiANCg0KZSkNCiQkDQpccGhpXzE9MC41IHkgXHBoaV8yPS0wLjkNCiQkDQpgYGB7cn0NCnJobz1OVUxMOyBwaGkxPTAuNTsgcGhpMj0tMC45OyBtYXgubGFnPTIwDQpyaG8xPXBoaTEvICgxLXBoaTIpOyByaG8yPSAocGhpMiooMS1waGkyKStwaGkxXjIpLygxLXBoaTIpDQpyaG9bMV09cmhvMTsgcmhvWzJdPXJobzINCmZvciAoayBpbiAzOm1heC5sYWcpIHJob1trXT1waGkxKnJob1trLTFdK3BoaTIqcmhvW2stMl0NCnJobw0KYGBgDQoNCg0KYGBge3J9DQpwbG90KHk9cmhvLCB4PTE6bWF4LmxhZywgdHlwZT0iaCIsIHlsYWI9IkFDRiIsIHhsYWI9ImxhZyIsIHlsaW09IGMgKC0xLCsxKSk7IGFibGluZShoPTApDQpgYGANCg0KYGBge3J9DQpwb2x5cm9vdChjKDEsIC1waGkxLCAtcGhpMikpDQpgYGANCkVuIGVzdGUgY2FzbyBsYXMgcmFpY2VzIHRhbWJpZW4gc29uIGNvbXBsZWphcw0KDQoNCmBgYHtyfQ0KYXIyLmM8LWFyaW1hLnNpbShtb2RlbD1saXN0KGFyPWMocGhpMSwgcGhpMikpLCBuPTEwMCkNCmZpdC5jPC1hcmltYShhcjIuYywgb3JkZXI9YygyLDAsMCkpDQphdXRvcGxvdChmaXQuYykNCmBgYA0KDQpgYGB7cn0NCkRhbXA9c3FydCgtcGhpMikNCkZyZXE9IGFjb3MocGhpMS8oMipEYW1wKSkNClBoYXNlPWF0YW4oKDEtcGhpMikvKDErcGhpMikpDQpEYW1wO0ZyZXE7UGhhc2UNCmBgYA0KDQoNCg0KDQoNCg0KIyA3LkdyYWZpY2FyIGxhcyBmdW5jaW9uZXMgZGUgYXV0b2NvcnJlbGFjafNuIHBhcmEgY2FkYSB1bm8gZGUgbG9zIHNpZ3VpZW50ZXMgcHJvY2Vzb3MgQVJNQToNCg0KDQoNCg0KYSkgQVJNQSgxLDEpIGNvbiAkJFxwaGk9MC43IHkgXHRoZXRhPS0wLjQgJCQNCg0KDQoNCmBgYHtyfQ0KQUNGPUFSTUFhY2YoYXI9MC43LCBtYT0wLjQsIGxhZy5tYXggPSAyMCkNCnBsb3QoeT0gQUNGWy0xXSwgeD0xOjIwLCB4bGFiPSJsYWciLCB5bGFiPSJBQ0YiLCB0eXBlID0gImgiKTsgYWJsaW5lKGg9MCkNCmBgYA0KDQoNClNlIHRvbWEgZW4gY3VlbnRhIHF1ZSBwYXJhIGdyYWZpY2FyIGxhcyBiZXRhcywgUiB1c2EgdmFsb3JlcyBuZWdhdGl2b3MuDQoNCg0KDQoNCg0KYikgQVJNQSgxLDEpIGNvbiAkJCBccGhpPTAuNyB5IFx0aGV0YT0wLjQgJCQNCg0KDQoNCg0KDQoNCg0KDQpgYGB7cn0NCkFDRj1BUk1BYWNmKGFyPTAuNywgbWE9LTAuNCwgbGFnLm1heCA9IDIwKQ0KcGxvdCh5PSBBQ0ZbLTFdLCB4PTE6MjAsIHhsYWI9ImxhZyIsIHlsYWI9IkFDRiIsIHR5cGUgPSAiaCIpOyBhYmxpbmUoaD0wKQ0KYGBgDQoNCg0KDQoNCg0KDQojIDguQ29uc2lkZXJlIGRvcyBwcm9jZXNvcyBNQSgyKSwgdW5vIGNvbiANCg0KDQokJA0KXHRoZXRhXzEgPSBcdGhldGFfMiA9LTEvNiAgeVx0aGV0YV8xPTEgeSAgXHRoZXRhXzI9Ng0KJCQNCg0KDQoNCmEpIE1vc3RyYXIgcXVlIGVzdG9zIHByb2Nlc29zIHRpZW5lbiBsYSBtaXNtYSBmdW5jafNuIGRlIGF1dG9jb3JyZWxhY2nzbi4NCg0KYGBge3J9DQpBUk1BYWNmKG1hPWMoMSwtNikpDQoNCmBgYA0KDQpgYGB7cn0NCkFSTUFhY2YobWE9YygtMS82LC0xLzYpKQ0KYGBgDQpTZSBvYnNlcnZhIGNvbW8gdGllbmVuIGxhIG1pc21hIGZ1bmNp824gZGUgYXV0b2NvcnJlbGFjafNuLg0KDQoNCmIpIL9D821vIHNlIGNvbXBhcmFuIGxhcyByYe1jZXMgZGUgbG9zIHBvbGlub21pb3MgY2FyYWN0ZXLtc3RpY29zPw0KDQoNClRvZGFzIGxhcyByYWljZXMgZGUgbG9zIHBvbGlub21pb3Mgc29uIHJlY+1wcm9jYXMgZW50cmUgc+0uIFPzbG8gZWwgTUEoMiljdWFuZG8gJCQgXHRoZXRhXzE9XHRoZXRhXzI9LVxmcmFjezF9ezZ9ICQkIGVzIGludmVydGlibGUNCg0KDQoNCg0KDQoNCg0KOS5Db25zaWRlcmUgdW4gcHJvY2VzbyBBUigxKSAkJHtZX3t0fT0gWV97dC0xfSsgZV90Ln0kJCBNb3N0cmFyIHF1ZSBzaSAkJHt8XHJob3wgPSAxfSQkIGVsIHByb2Nlc28gbm8gcHVlZGUgc2VyIGVzdGFjaW9uYXJpby4gKFBpc3RhOiBUb21hciB2YXJpYW56YXMgZGUgYW1ib3MgbGFkb3MpLg0KDQoNCg0KDQpzaSAkJCB5X3QgJCQgZXMgZXN0YWNpb25hcmlvLiBFbnRvbmNlcyAkJCBWYXIoWV90KT1ccGhpXjJWYXIoWV97dC0xfSkrXHNpZ21hXjJfZSAkJCAkJCBWYXIoWV90KT1cc2lnbWFeMl9lLygxL1xwaGleMikgJCQgc2kgJCQgfFxwaGl8PTEkJCAgZXN0byBzZXJpYSBpbXBvc2libGUuDQoNCg0KDQoNCg0KDQoNCjEwLkNvbnNpZGVyZSB1biBwcm9jZXNvIE1BKDYpIGNvbiANCg0KDQokJA0KXHRoZXRhXzE9LTAuNSwgXHRoZXRhXzI9MC4yNSwgXHRoZXRhXzM9LTAuMTI1LA0KJCQNCg0KDQoNCg0KJCQNClx0aGV0YV80PTAuMDYyNSwgXHRoZXRhXzU9LTAuMDMyNSAgeSBcdGhldGFfNj0wLjAxNTYyNS4NCiQkDQpFbmNvbnRyYXIgdW4gbW9kZWxvIG3hcyBzaW1wbGUgcXVlIHRlbmdhIGNhc2kgbG9zIG1pc21vcyAtcGVzb3MuDQoNCg0KYGBge3J9DQpBUk1BYWNmKG1hPWMoLTAuNSwwLjI1LC0wLjEyNSwwLjA2MjUsLTAuMDMxMjUsMC4wMTU2MjUpKQ0KDQpgYGANCg0KDQo=