Este material tem como objetivo introduzir os conceitos de séries temporais multivariadas. Neste sentido, vamos entender como as condições de estacionariedade e autocorrelação se alteram para o caso multivariado e estudar algumas propriedades de um vetor de séries temporais.

INTRODUÇÃO

Em função da globalização econômica e as facilidades de comunicação pela internet, a integração dos mercados financeiros mundiais tem se tornado cada vez maior nos últimos anos. Movimentos de preços em um mercado podem se espalhar facilmente e instantaneamente para outros mercados. Por esta razão, mercados financeiros são mais dependentes um dos outros e para entender melhor a estrutura dinâmica financeira global é preciso considerar os mercados em conjunto.

Um mercado pode conduzir outro mercado sobre algumas circunstâncias, mas ser conduzido em outros momentos. Assim, saber se os mercados estão inter-relacionados é de grande importância em finanças. Da mesma forma, para um investidor ou instituição financeira que mantém vários ativos, as relações entre os retornos dos ativos é crucial para a tomada de decisão.

SÉRIES TEMPORAIS MULTIVARIADAS

Uma série temporal multivariada consiste de várias séries únicas que podemos chamar de componentes. Para facilitar o entendimento, trabalhamos com vetores e matrizes na análise de séries temporais multivariadas. Assim, no decorrer deste texto, letras em negrito indicam vetores ou matrizes.

Deixe \(\boldsymbol{r_{t}}=(r_{1t},r_{2t},...,r_{kt})^{'}\) ser o logaritmo dos retornos de \(k\) ativos no tempo \(t\), onde \(\boldsymbol{a^{'}}\) denota a transposta de \(\boldsymbol{a}\). Estatisticamente falando, trata-se de um vetor aleatório com \(k\) variáveis aleatórias. Como tal, existe um espaço de probabilidades sobre o qual as variáveis aleatórias são definidas. O que observamos na prática é uma realização deste vetor aleatório. Além disso, vamos assumir que \(\boldsymbol{r_{t}}\) segue uma distribuição de probabilidade multivariada contínua.

Como exemplo, considere um investidor que tem ações da IBM, Microsoft, Exxon Mobil, General Motors e Wal-Mart. O logaritmo dos retornos diários dessas empresas pode ser visto no formato de um vetor de dimensão 5 (quantidade de ações mantidas). Assim:

Aprenderemos modelos econométricos que analisam o processo multivariado \(\boldsymbol{r_{t}}\) de forma que seja possível estudar a relação entre os componentes de \(\boldsymbol{r_{t}}\) e aumentar a acurácia na previsão \(\boldsymbol{r_{t+h}}\) para \(h>0\).

Muitos dos modelos e métodos discutidos anteriormente (AR, MA, ARMA) podem ser generalizados diretamente para o caso multivariado (VAR, VMA, VARMA). Mas existem situações onde é necessário novos modelos e métodos para lidar com relações complicadas entre retornos de vários ativos (Modelos de Volatilidade Multivariados). Além disso, existem métodos que buscam por fatores em comum que afetam os retornos de diferentes ativos (Análise de Componentes Principais, Análise Fatorial).

Porém, o nosso curso focará nos modelos de vetores autorregressivos (VAR) e sua versão para séries não estacionárias, modelos de vetores de correção de erros (VECM). Abaixo, exemplo de um cojunto de séries temporais que poderíamos tratar como multivariada em alguma análise de interesse.

ESTACIONARIEDADE

Como já estudamos para séries temporais univaridas, a hipótese de estacionariedade tem muita importância para que seja possível estimar os modelos estudados. No caso multivariado devemos ter o mesmo cuidado. Assim, apresentamos abaixo as definições de estacionariedade forte e fraca para séries temporais multivariadas.

Considere um inteiro positivo \(m\) e distintos inteiros \(t_{1},...,t_{m}\), ou seja, \(m\) ativos com retornos em \(t\) períodos. Se os vetores aleatórios \((r_{t1},...,r_{tm})^{'}\) e \((r_{t1+l},...,r_{tm+l})^{'}\), onde \(l \leq t\), têm a mesma distribuição de probabilidade conjunta, então \(\boldsymbol{r_{t}}\) é estritamente estacionária (estacionariedade forte)

Considere os dois primeiros momentos de \(\boldsymbol{r_{t}}\): \(\boldsymbol{\mu} = E(\boldsymbol{r_{t}})\) e \(\boldsymbol{\Gamma}_{t,l}=Cov(\boldsymbol{r_{t}},\boldsymbol{r_{t-l}})\), onde \(l\) é uma defasagem qualquer. Assumindo que \(\boldsymbol{\mu}_{t}=\boldsymbol{\mu}\) e \(\boldsymbol{\Gamma}_{t,l}=\boldsymbol{\Gamma}_{l}\), então \(\boldsymbol{r_{t}}\) é fracamente estacionária.

Assim, estacionariedade estrita significa que as distribuições são invariantes no tempo enquanto estacionariedade fraca implica que os dois primeiros momentos são invariantes no tempo.

PROPRIEDADES BÁSICAS DE UM VETOR DE SÉRIES TEMPORAIS ESTACIONÁRIAS

Considere uma série temporal k-dimensional \(\boldsymbol{r_{t}}=(r_{1t},r_{2t},...,r_{kt})^{'}\). Definimos seu vetor de médias e matriz de covariância como segue:

\[ \begin{aligned} & \boldsymbol{\mu} = E(\boldsymbol{r_{t}}) \\ & \boldsymbol{\Gamma_{0}} = Cov(\boldsymbol{r_{t}}) = E[(\boldsymbol{r_{t}}-\boldsymbol{\mu_{t}})(\boldsymbol{r_{t}}-\boldsymbol{\mu_{t}})^{'}] \end{aligned} \]

A média \(\boldsymbol{\mu}\) é um vetor k-dimensional consistindo das expectativas não condicionais dos componentes de \(\boldsymbol{r_{t}}\). A matriz de covariância \(\boldsymbol{\Gamma_{0}}\) é uma matriz \(k\times k\) positiva definida sendo o \(i-ésimo\) elemento da sua diagonal a variância de \(r_{it}\), enquanto o \((i,j)-ésimo\) elemento de \(\boldsymbol{\Gamma_{0}}\) é a covariância contemporânea (covariância entre observações no mesmo \(t\)) entre \(r_{it}\) e \(r_{jt}\). Considerando \(k=2\), temos o vetor bidimensional de expectativas:

\[ \begin{aligned} & \boldsymbol{r_{t}}=(r_{1t},r_{2t})^{'} \\ & \\ & \boldsymbol{\mu} = E(\boldsymbol{r_{t}}) = \left[ \begin{matrix} E\left( { r }_{ 1t } \right) \\ E\left( { r }_{ 2t } \right) \end{matrix} \right] \\ & \end{aligned} \] Já a matriz de covariância será:

\[ \boldsymbol{\Gamma}_{0} = \left[\begin{matrix} E\left[\left({r}_{1t}-{\mu}_{1}\right) \left({r}_{1t}-{\mu}_{1} \right)\right] & E\left[\left({r}_{1t}-{\mu}_{1} \right)\left({r}_{2t}-{\mu}_{2} \right) \right] \\ E\left[\left({r}_{2t}-{\mu}_{2} \right) \left({r}_{1t}-{\mu}_{1} \right)\right] & E\left[\left({r}_{2t}-{\mu}_{2} \right) \left({r}_{2t}-{\mu}_{2} \right)\right] \end{matrix} \right] = \left[\begin{matrix} Var\left({r}_{1t}\right) & Cov\left({r}_{1t},{r}_{2t}\right) \\ Cov\left({r}_{2t},{r}_{1t}\right) & Var\left({r}_{2t}\right) \end{matrix} \right] \]

Para qualquer inteiro \(l>0\), temos a matriz de autocovariância de defasagem \(l\) de \(\boldsymbol{r_{t}}\) definida por:

\[ \boldsymbol{\Gamma}_{l} = Cov(\boldsymbol{r}_{t},\boldsymbol{r}_{t-l}) = E[(\boldsymbol{r}_{t}-\boldsymbol{\mu}_{t})(\boldsymbol{r}_{t-l}-\boldsymbol{\mu}_{t})^{'}] \] que também é uma matriz \(k \times k\). É importante entender o significado de cada elemento em \(\boldsymbol{\Gamma}_{l}\). Para demonstração, considerando novamente \(k=2\) e \(l = 1, 2, .., l\) o que implica em:

\[ \boldsymbol{\Gamma}_{1} = \left[\begin{matrix} E\left[\left({r}_{1t}-{\mu}_{1} \right) \left({r}_{1,t-1}-{\mu}_{1} \right)\right] & E\left[\left({r}_{1t}-{\mu}_{1} \right) \left({r}_{2,t-1}-{\mu}_{2} \right) \right] \\ E\left[\left({r}_{2t}-{\mu}_{2} \right) \left({r}_{1,t-1}-{\mu }_{1} \right) \right] & E\left[\left({r}_{2t}-{\mu}_{2} \right) \left({r}_{2,t-1}-{\mu}_{2} \right) \right] \end{matrix} \right] = \left[\begin{matrix} Cov\left({r}_{1t}, r_{1,t-1}\right) & Cov\left({r}_{1t},{r}_{2,t-1}\right) \\ Cov\left({r}_{2t},{r}_{1,t-1}\right) & Cov\left({r}_{2t},{r}_{2,t-1}\right) \end{matrix} \right] \]

\[ \boldsymbol{\Gamma}_{2} = \left[\begin{matrix} E\left[\left({r}_{1t}-{\mu}_{1} \right) \left({r}_{1,t-2}-{\mu}_{1} \right)\right] & E\left[\left({r}_{1t}-{\mu}_{1} \right) \left({r}_{2,t-2}-{\mu}_{2} \right) \right] \\ E\left[\left({r}_{2t}-{\mu}_{2} \right) \left({r}_{1,t-2}-{\mu }_{1} \right) \right] & E\left[\left({r}_{2t}-{\mu}_{2} \right) \left({r}_{2,t-2}-{\mu}_{2} \right) \right] \end{matrix} \right] = \left[\begin{matrix} Cov\left({r}_{1t}, r_{1,t-2}\right) & Cov\left({r}_{1t},{r}_{2,t-2}\right) \\ Cov\left({r}_{2t},{r}_{1,t-2}\right) & Cov\left({r}_{2t},{r}_{2,t-2}\right) \end{matrix} \right] \] \[ \begin{matrix} . \\ . \\ . \end{matrix} \]

\[ \boldsymbol{\Gamma}_{l} = \left[ \begin{matrix} E\left[ \left({r}_{1t}-{\mu}_{1} \right) \left({r}_{1,t-l}-{\mu}_{1} \right) \right] & E\left[\left({r}_{1t}-{\mu}_{1} \right) \left({r}_{2,t-l}-{\mu}_{2} \right) \right] \\ E\left[\left({r}_{2t}-{\mu}_{2} \right)\left({r}_{1,t-l}-{\mu}_{1} \right)\right] & E\left[\left({r}_{2t}-{\mu}_{2} \right) \left({r}_{2,t-l}-{\mu}_{2} \right) \right] \end{matrix} \right] = \left[\begin{matrix} Cov\left({r}_{1t}, r_{1,t-l}\right) & Cov\left({r}_{1t},{r}_{2,t-l}\right) \\ Cov\left({r}_{2t},{r}_{1,t-l}\right) & Cov\left({r}_{2t},{r}_{2,t-l}\right) \end{matrix} \right] \] Portanto, para \(l=0,1,2,...,l\) e sendo \(i=1,..,k\) a linha da matriz e \(j=1,...,k\) sua coluna, temos:

OBSERVAÇÕES:
  1. Em geral \(\boldsymbol{\Gamma}_{l}\) não é simétrica, exceto para \(l=0\).
  2. \(\boldsymbol{\Gamma}_{l}=\boldsymbol{\Gamma}_{-l}^{'}\)
  • MATRIZ DE CORRELAÇÃO CRUZADA

Deixe \(\boldsymbol{D}\) ser uma matriz \(k \times k\) diagonal consistindo dos desvios-padrão de \(r_{it}\) para \(i=1,...,k\). Em outras palavras, \(\boldsymbol{D}=diag\left\{\sqrt{{\Gamma}_{11}\left(0 \right)}, ... , \sqrt{{\Gamma}_{kk}\left(0 \right)}\right\}\), onde \(\Gamma_{ii}\left(0 \right)\) denota o \((i,i)\)-ésimo elemento da diagonal de \(\boldsymbol{\Gamma_{0}}\). Para nosso exemplo de uma série temporal multivariada com 2 componentes, ou seja, \(k=2\), temos:

\[ \boldsymbol{D} = \left[\begin{matrix} \sqrt{\Gamma_{11}(0)} & 0 \\ 0 & \sqrt{\Gamma_{22}(0)} \end{matrix} \right] = \left[\begin{matrix} DP(r_{1t}) & 0 \\ 0 & DP(r_{2t}) \end{matrix} \right] \]

Assim, a matriz de correlação cruzada contemporânea (defasagem 0) de \(\boldsymbol{r_{t}}\) pode ser definida como:

\[ \boldsymbol{\rho_{0}} = [\rho_{ij}(0)] = \boldsymbol{D^{-1}}\boldsymbol{\Gamma_{0}}\boldsymbol{D^{-1}} = \left[\begin{matrix} Corr(r_{1t},r_{1t}) & Corr(r_{1t},r_{2t}) \\ Corr(r_{2t},r_{1t}) & Corr(r_{2t},r_{2t}) \end{matrix} \right] = \left[\begin{matrix} 1 & Corr(r_{1t},r_{2t}) \\ Corr(r_{2t},r_{1t}) & 1 \end{matrix} \right] \] Mais especificamente, o (i,j)-ésimo elemento de \(\boldsymbol{\rho_{0}}\) é:

\[ \rho_{ij}(0) = \frac{\Gamma_{ij}(0)}{\sqrt{{\Gamma}_{ii}\left(0 \right)}\sqrt{{\Gamma}_{jj}\left(0 \right)}} = \frac{Cov(r_{it},r_{jt})}{std(r_{it})std(r_{jt})} \] que é o coeficiente de correlação entre \(r_{it}\) e \(r_{jt}\). Em análise de séries temporais, tal coeficiente de correlação é referido como o coeficiente de correlação contemporânea porque ele é a correlação entre duas séries no tempo \(t\). É fácil ver que \(\rho_{ij}(0)=\rho_{ji}(0)\), \(-1 \leq \rho_{ij}(0) \leq 1\) e \(\rho_{ii}(0)=1\) para \(1 \leq i\), \(j \leq k\).

Assim, \(\boldsymbol{\rho_{0}}\) é uma matriz simétrica com \(1\) na diagonal. Já matriz de correlação na defasagem \(l\) de \(\boldsymbol{r_{t}}\) é definida como:

\[ \begin{aligned} & \boldsymbol{\rho_{1}} = \boldsymbol{D^{-1}}\boldsymbol{\Gamma_{1}}\boldsymbol{D^{-1}} = \left[\begin{matrix} Corr(r_{1t},r_{1,t-1}) & Corr(r_{1t},r_{2,t-1}) \\ Corr(r_{2t},r_{1,t-1}) & Corr(r_{2t},r_{2,t-1}) \end{matrix} \right] \\ & \\ & \boldsymbol{\rho_{2}} = \boldsymbol{D^{-1}}\boldsymbol{\Gamma_{2}}\boldsymbol{D^{-1}} = \left[\begin{matrix} Corr(r_{1t},r_{1,t-2}) & Corr(r_{1t},r_{2,t-2}) \\ Corr(r_{2t},r_{1,t-2}) & Corr(r_{2t},r_{2,t-2}) \end{matrix} \right] \\ & \\ & \begin{matrix} . \\ . \\ . \end{matrix} \\ & \\ & \boldsymbol{\rho_{l}} = \boldsymbol{D^{-1}}\boldsymbol{\Gamma_{l}}\boldsymbol{D^{-1}} = \left[\begin{matrix} Corr(r_{1t},r_{1,t-l}) & Corr(r_{1t},r_{2,t-l}) \\ Corr(r_{2t},r_{1,t-l}) & Corr(r_{2t},r_{2,t-l}) \end{matrix} \right] \\ \end{aligned} \]

onde, como antes, \(\boldsymbol{D}\) é a matriz diagonal dos desvios-padrão das séries individuais \(r_{it}\). Assim,

\[ \rho_{ij}(l) = \frac{\Gamma_{ij}(l)}{\sqrt{{\Gamma}_{ii}\left(0 \right)}\sqrt{{\Gamma}_{jj}\left(0 \right)}} = \frac{Cov(r_{it},r_{j,t-l})}{std(r_{it})std(r_{jt})} \] que é o coeficiente de correlação entre \(r_{it}\) e \(r_{j,t-l}\). Quando \(l>0\), este coeficiente de correlação significa a dependência linear de \(r_{it}\) sobre \(r_{j,t-l}\) que ocorreu antes de \(t\). Consequentemente, se \(\rho_{ij}(l) \neq 0\) e \(l>0\), dizemos que a série \(r_{jt}\) conduz a série \(r_{it}\) na defasagem \(l\).

Similarmente, \(\rho_{ji}(l)\) mede a dependência linear de \(r_{jt}\) e \(r_{i,t-l}\) e dizemos que série \(r_{it}\) conduz a série \(r_{jt}\) na defasagem \(l\) se \(\rho_{ji}(l) \neq 0\) e \(l>0\). Outro ponto importante é que os elementos da diagonal desta matriz (definidos como \(\rho_{ii}(l)\)) são os coeficiente de autocorrelação de \(r_{it}\).

  • DEPENDÊNCIA LINEAR

Considerada conjuntamente, as matrizes de correlação cruzada \(\left\{ \boldsymbol{\rho_{l}} | l=0,1,... \right\}\) de uma vetor fracamente estacionário de séries temporais contem a seguinte informação;

  1. Os elementos da diagonal \(\left\{\rho_{ii}(l) | l=0,1,... \right\}\) são a função de autocorrelação de \(r_{it}\)
  2. Para \(l=0\), os elementos fora da diagonal \(\rho_{ij}(0)\) medem a relação linear contemporânea entre \(r_{it}\) e \(r_{jt}\)
  3. Para \(l>0\), os elementos fora da diagonal \(\rho_{ij}(l)\) medem a dependência linear de \(r_{it}\) sobre valores passados de \(r_{j,t-l}\)

Portanto, se \(\rho_{ij}(l)=0\) para \(l>0\), então \(r_{it}\) não depende linearmente de qualquer valor passado de \(r_{j,t-l}\) da série \(r_{jt}\). Em geral, a relação linear entre duas séries temporais (\(r_{it}\) e \(r_{jt}\)) pode ser resumida da seguinte forma:

  1. \(r_{it}\) e \(r_{jt}\) não tem dependência linear se \(\rho_{ij}(l)=\rho_{ji}(l)=0\) para todo \(l \geq 0\).
  2. \(r_{it}\) e \(r_{jt}\) são correlacionados contemporâneamente se \(\rho_{ij}(0)\neq0\).
  3. \(r_{it}\) e \(r_{jt}\) não tem dependência em defasagens se \(\rho_{ij}(l)=0\) e \(\rho_{ji}(l)=0\) para todo \(l>0\). Neste caso dizemos que as duas séries são desacopladas.
  4. Existe relação unidirecional de \(r_{it}\) para \(r_{jt}\) se \(\rho_{ij}(l)=0\) para todo \(l>0\), mas \(\rho_{ji}(v)\neq0\) para algum \(v>0\). Neste caso, \(r_{it}\) não depende de qualquer valor passado de \(r_{jt}\), mas \(r_{jt}\) depende de algum valor passado de \(r_{it}\).
  5. Existe uma relação de feedback entre \(r_{it}\) para \(r_{jt}\) se \(\rho_{ij}(l)\neq0\) para algum \(l>0\) e \(\rho_{ji}(v)\neq0\) para algum \(v>0\).
  • MATRIZ DE CORRELAÇÃO CRUZADA AMOSTRAL

Suponha que temos os dados \(\left\{\boldsymbol{r}_{t} |t=1,...,T \right\}\). A matriz de covariância cruzada (\(\boldsymbol{\Gamma}_{l}\)) pode ser estimada por:

\[ {\hat{\boldsymbol{\Gamma}}_{l}} = \frac{1}{T}\sum_{t=l+1}^{T}{\left(\boldsymbol{r}_{t}-\overline{\boldsymbol{r}}\right)\left(\boldsymbol{r}_{t-l}-\overline{\boldsymbol{r}}\right)^{'}} \] onde \(l \geq 0\) e \(\overline{\boldsymbol{r}}=\frac{\sum_{t=1}^{T}{\overline{\boldsymbol{r}}}}{T}\) é o vetor de médias amostrais. A matriz de correlação cruzada \(\boldsymbol{\rho_{l}}\) é estimada por:

\[ \hat{\boldsymbol{\rho}}_{l} =\hat{\boldsymbol{D}}^{-1}\hat{\boldsymbol{\Gamma}}_{l}\hat{\boldsymbol{D}}^{-1} \] onde \(l \geq 0\) e \(\hat{\boldsymbol{D}}\) é a matriz diagonal \(k \times k\) dos desvios-padrão amostrais das séries.

MATRIZ DE CORRELAÇÕES CRUZADA - EXEMPLO

Empiricamente, sabemos que é dificil absorver simultaneamente muitas matrizes de correlação cruzada. Em função disso, para verificar a dependência linear entre séries temporais consideraremos um gráfico que é equivalente à matriz de correlação cruzada.

Para cada \((i,j)\)-ésima posição da matriz de correlação cruzada amostral, temos o gráfico de \(\hat{\rho}_{l,ij}\) contra \(l\) para \(l = \pm1, \pm2, ..., \pm m\), onde \(m\) é um inteiro. Este gráfico é uma generalização da função de autocorrelação (FAC) de uma série temporal univariada.

Para uma série multivariada de dimensão \(k\), teremos \(k^{2}\) gráficos. Assim como no caso da FAC, para facilitar o entendimento dos gráficos temos uma linha pontilhada indicando se a correlação cruzada na defasagem é estatisticamente significante ou não.

Usando como exemplo as ações PETR4, VALE3 e ITSA4, (ou seja, \(k=3\)), temos abaixo os gráficos da correlação cruzada amostral para cada uma das ações em relação a ela mesma e as demais. Assim, na diagonal principal temos a função de autocorrelação (FAC) da ação e nas demais posições as correlações cruzadas.

Uma vez que a FAC é simétrica, temos que para os gráficos da diagonal principal da “matriz de gráficos” as autocorrelações são iguais para a mesma defasagem positiva e negativa. Já para os demais gráficos, as defasagens positivas e estatisticamente significantes indicam a dependência da primeira variável em relação as defasagens da segunda variável. Os gráficos mostram que a relação dinâmica é fraca entre as três séries, mas suas correlações contemporâneas são estatisticamente significantes.

TESTE DE EXISTÊNCIA DE DEPENDÊNCIA LINEAR DINÂMICA

Um teste básico na análise de séries temporais multivariadas é detectar a existência de dependência linear dinâmica nos dados. Isto significa testar a hipótese nula \(H_0:\) \(\boldsymbol{\rho_{1}}=...=\boldsymbol{\rho_{m}}=\boldsymbol{0}\) contra a hipótese alternativa \(H_1:\) \(\boldsymbol{\rho_{i}}\neq\boldsymbol{0}\) para algum \(i\) satisfazendo \(1 \leq i \leq m\) onde \(m\) é um inteiro positivo.

Em particular, a estatística multivariada para o teste de Ljung-Box é definida como:

\[ Q_k \left(m\right) = T^{2}\sum_{l=1}^{m}{\frac{1}{T-l}tr\left(\hat{\boldsymbol{\Gamma}}_{l}^{'} \hat{\boldsymbol{\Gamma}}_{0}^{-1} \hat{\boldsymbol{\Gamma}}_{l} \hat{\boldsymbol{\Gamma}}_{0}^{-1} \right) } \]

onde \(tr(\boldsymbol{A})\) é o traço da matriz \(\boldsymbol{A}\) e \(T\) é o tamanho da amostra. Sobre a hipótese nula de que \(\boldsymbol{\Gamma_{1}}=\boldsymbol{0}\) para \(l>0\) e a condição de que \(\boldsymbol{r}_{t}\) é normalmente distribuído, \(Q_k \left(m\right)\) é assintoticamente distribuído como uma distribuição Qui-Quadrado com \(mk^{2}\) graus de liberdade.

Para demonstrar a estatística \(Q_k \left(m\right)\), consideramos as três ações estudadas. Obviamente, existem uma certa dependência linear dinâmica entre os dados de modo que esperamos que a estatística do teste rejeite a hipótese nula de não existência de correlação cruzada.

Observamos que há dependência linear dinâmica entre os dados em função do p-valor ser muito próximo de zero indicando que é possível rejeitar a hipótese nula ao nível de significância de 5%.

Ljung-Box Statistics:  
       m       Q(m)     df    p-value
[1,]   1.0      18.8     9.0     0.03
[2,]   2.0      34.9    18.0     0.01
[3,]   3.0      52.9    27.0     0.00
[4,]   4.0      76.6    36.0     0.00
[5,]   5.0      90.6    45.0     0.00

A estatística \(Q_k \left(m\right)\) é um teste conjunto para verificar as \(m\) matrizes de correlação cruzada de \(\boldsymbol{r}_{t}\). Se ele rejeita a hipótese nula, então devemos construir um modelo multivariado para as séries e estudar as relações entre elas. Em função disso, discutiremos nas próximas aulas um simples modelo vetorial para modelar a estrutura da dinâmica de uma série temporal financeira multivariada.

REFERÊNCIAS

Morettin, Pedro Alberto. 2008. Econometria Financeira Um Curso Em Séries Temporais Financeiras. Edgard Blucher.

Tiao, George C, and George EP Box. 1981. “Modeling Multiple Time Series with Applications” 76. Journal of the American Statistical Association: 802–16.

Tsay, Ruey S. 2010. Analysis of Financial Time Series. John Wiley & Sons.

———. 2013. Multivariate Time Series Analysis with R and Financial Application. John Wiley & Sons.

———. 2014. An Introduction to Analysis of Financial Data with R. John Wiley & Sons.

LS0tCnRpdGxlOiAiPGNlbnRlcj4gPGgyPiA8Yj4gU8OpcmllcyBUZW1wb3JhaXMgTXVsdGl2YXJpYWRhcyA8L2I+IDwvaDI+IDwvY2VudGVyPiIKYXV0aG9yOiAiPGNlbnRlcj4gRnJhbmsgTWFnYWxow6NlcyBkZSBQaW5obyAtIElCTUVDL01HIDwvY2VudGVyPiIKbGlua2NvbG9yOiBibHVlCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgZmlnX2NhcHRpb246IHllcwogICAgdGhlbWU6IGNlcnVsZWFuCm5vY2l0ZTogfAogIEB0c2F5MjAxNGludHJvZHVjdGlvbiwgQG1vcmV0dGluMjAwOGVjb25vbWV0cmlhLCBAdHNheTIwMTBhbmFseXNpcywgQHRzYXkyMDEzbXVsdGl2YXJpYXRlLCBAdGlhbzE5ODFtb2RlbGluZwpyZWZlcmVuY2VzOgotIGF1dGhvcjoKICAtIGZhbWlseTogVHNheQogICAgZ2l2ZW46IFJ1ZXkgUwogIGlkOiB0c2F5MjAxNGludHJvZHVjdGlvbgogIGlzc3VlZDoKICAgIHllYXI6IDIwMTQKICBwdWJsaXNoZXI6IEpvaG4gV2lsZXkgXCYgU29ucwogIHRpdGxlOiBBbiBpbnRyb2R1Y3Rpb24gdG8gYW5hbHlzaXMgb2YgZmluYW5jaWFsIGRhdGEgd2l0aCBSCiAgdHlwZTogYm9vawotIGF1dGhvcjoKICAtIGZhbWlseTogTW9yZXR0aW4KICAgIGdpdmVuOiBQZWRybyBBbGJlcnRvCiAgaWQ6IG1vcmV0dGluMjAwOGVjb25vbWV0cmlhCiAgaXNzdWVkOgogICAgeWVhcjogMjAwOAogIHB1Ymxpc2hlcjogRWRnYXJkIEJsdWNoZXIKICB0aXRsZTogRWNvbm9tZXRyaWEgZmluYW5jZWlyYSB1bSBjdXJzbyBlbSBzw6lyaWVzIHRlbXBvcmFpcyBmaW5hbmNlaXJhcwogIHR5cGU6IGJvb2sKLSBhdXRob3I6CiAgLSBmYW1pbHk6IFRzYXkKICAgIGdpdmVuOiBSdWV5IFMKICBpZDogdHNheTIwMTBhbmFseXNpcwogIGlzc3VlZDoKICAgIHllYXI6IDIwMTAKICBwdWJsaXNoZXI6IEpvaG4gV2lsZXkgXCYgU29ucwogIHRpdGxlOiBBbmFseXNpcyBvZiBmaW5hbmNpYWwgdGltZSBzZXJpZXMKICB0eXBlOiBib29rCi0gYXV0aG9yOgogIC0gZmFtaWx5OiBUc2F5CiAgICBnaXZlbjogUnVleSBTCiAgaWQ6IHRzYXkyMDEzbXVsdGl2YXJpYXRlCiAgaXNzdWVkOgogICAgeWVhcjogMjAxMwogIHB1Ymxpc2hlcjogSm9obiBXaWxleSBcJiBTb25zCiAgdGl0bGU6IE11bHRpdmFyaWF0ZSB0aW1lIHNlcmllcyBhbmFseXNpcyB3aXRoIFIgYW5kIGZpbmFuY2lhbCBhcHBsaWNhdGlvbgogIHR5cGU6IGJvb2sKLSBhdXRob3I6CiAgLSBmYW1pbHk6IFRpYW8KICAgIGdpdmVuOiBHZW9yZ2UgQwogIC0gZmFtaWx5OiBCb3gKICAgIGdpdmVuOiBHZW9yZ2UgRVAKICBpZDogdGlhbzE5ODFtb2RlbGluZwogIGlzc3VlZDoKICAgIHllYXI6IDE5ODEKICBwYWdlOiA4MDItODE2CiAgcHVibGlzaGVyOiBKb3VybmFsIG9mIHRoZSBBbWVyaWNhbiBTdGF0aXN0aWNhbCBBc3NvY2lhdGlvbgogIHRpdGxlOiBNb2RlbGluZyBtdWx0aXBsZSB0aW1lIHNlcmllcyB3aXRoIGFwcGxpY2F0aW9ucwogIHR5cGU6IGFydGljbGUtam91cm5hbAogIHZvbHVtZTogNzYKZ3JhcGhpY3M6IHllcwotLS0KCkVzdGUgbWF0ZXJpYWwgdGVtIGNvbW8gb2JqZXRpdm8gaW50cm9kdXppciBvcyBjb25jZWl0b3MgZGUgKipzw6lyaWVzIHRlbXBvcmFpcyBtdWx0aXZhcmlhZGFzKiouIE5lc3RlIHNlbnRpZG8sIHZhbW9zIGVudGVuZGVyIGNvbW8gYXMgY29uZGnDp8O1ZXMgZGUgZXN0YWNpb25hcmllZGFkZSBlIGF1dG9jb3JyZWxhw6fDo28gc2UgYWx0ZXJhbSBwYXJhIG8gY2FzbyBtdWx0aXZhcmlhZG8gZSBlc3R1ZGFyIGFsZ3VtYXMgcHJvcHJpZWRhZGVzIGRlIHVtIHZldG9yIGRlIHPDqXJpZXMgdGVtcG9yYWlzLiAKCiMjIyMjICoqSU5UUk9EVcOHw4NPKioKCkVtIGZ1bsOnw6NvIGRhIGdsb2JhbGl6YcOnw6NvIGVjb27DtG1pY2EgZSBhcyBmYWNpbGlkYWRlcyBkZSBjb211bmljYcOnw6NvIHBlbGEgaW50ZXJuZXQsIGEgaW50ZWdyYcOnw6NvIGRvcyBtZXJjYWRvcyBmaW5hbmNlaXJvcyBtdW5kaWFpcyB0ZW0gc2UgdG9ybmFkbyBjYWRhIHZleiBtYWlvciBub3Mgw7psdGltb3MgYW5vcy4gTW92aW1lbnRvcyBkZSBwcmXDp29zIGVtIHVtIG1lcmNhZG8gcG9kZW0gc2UgZXNwYWxoYXIgZmFjaWxtZW50ZSBlIGluc3RhbnRhbmVhbWVudGUgcGFyYSBvdXRyb3MgbWVyY2Fkb3MuIFBvciBlc3RhIHJhesOjbywgbWVyY2Fkb3MgZmluYW5jZWlyb3Mgc8OjbyBtYWlzIGRlcGVuZGVudGVzIHVtIGRvcyBvdXRyb3MgZSBwYXJhIGVudGVuZGVyIG1lbGhvciBhIGVzdHJ1dHVyYSBkaW7Dom1pY2EgZmluYW5jZWlyYSBnbG9iYWwgw6kgcHJlY2lzbyBjb25zaWRlcmFyIG9zIG1lcmNhZG9zIGVtIGNvbmp1bnRvLiAKClVtIG1lcmNhZG8gcG9kZSBjb25kdXppciBvdXRybyBtZXJjYWRvIHNvYnJlIGFsZ3VtYXMgY2lyY3Vuc3TDom5jaWFzLCBtYXMgc2VyIGNvbmR1emlkbyBlbSBvdXRyb3MgbW9tZW50b3MuIEFzc2ltLCBzYWJlciBzZSBvcyBtZXJjYWRvcyBlc3TDo28gaW50ZXItcmVsYWNpb25hZG9zIMOpIGRlIGdyYW5kZSBpbXBvcnTDom5jaWEgZW0gZmluYW7Dp2FzLiBEYSBtZXNtYSBmb3JtYSwgcGFyYSB1bSBpbnZlc3RpZG9yIG91IGluc3RpdHVpw6fDo28gZmluYW5jZWlyYSBxdWUgbWFudMOpbSB2w6FyaW9zIGF0aXZvcywgYXMgcmVsYcOnw7VlcyBlbnRyZSBvcyByZXRvcm5vcyBkb3MgYXRpdm9zIMOpIGNydWNpYWwgcGFyYSBhIHRvbWFkYSBkZSBkZWNpc8Ojby4gCgojIyMjIyAqKlPDiVJJRVMgVEVNUE9SQUlTIE1VTFRJVkFSSUFEQVMqKgoKVW1hIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhcmlhZGEgY29uc2lzdGUgZGUgdsOhcmlhcyBzw6lyaWVzIMO6bmljYXMgcXVlIHBvZGVtb3MgY2hhbWFyIGRlICoqY29tcG9uZW50ZXMqKi4gUGFyYSBmYWNpbGl0YXIgbyBlbnRlbmRpbWVudG8sIHRyYWJhbGhhbW9zIGNvbSB2ZXRvcmVzIGUgbWF0cml6ZXMgbmEgYW7DoWxpc2UgZGUgc8OpcmllcyB0ZW1wb3JhaXMgbXVsdGl2YXJpYWRhcy4gQXNzaW0sIG5vIGRlY29ycmVyIGRlc3RlIHRleHRvLCBsZXRyYXMgZW0gbmVncml0byBpbmRpY2FtIHZldG9yZXMgb3UgbWF0cml6ZXMuIAoKRGVpeGUgJFxib2xkc3ltYm9se3Jfe3R9fT0ocl97MXR9LHJfezJ0fSwuLi4scl97a3R9KV57J30kIHNlciBvIGxvZ2FyaXRtbyBkb3MgcmV0b3Jub3MgZGUgJGskIGF0aXZvcyBubyB0ZW1wbyAkdCQsIG9uZGUgJFxib2xkc3ltYm9se2Feeyd9fSQgZGVub3RhIGEgdHJhbnNwb3N0YSBkZSAkXGJvbGRzeW1ib2x7YX0kLiBFc3RhdGlzdGljYW1lbnRlIGZhbGFuZG8sIHRyYXRhLXNlIGRlIHVtIHZldG9yIGFsZWF0w7NyaW8gY29tICRrJCB2YXJpw6F2ZWlzIGFsZWF0w7NyaWFzLiBDb21vIHRhbCwgZXhpc3RlIHVtIGVzcGHDp28gZGUgcHJvYmFiaWxpZGFkZXMgc29icmUgbyBxdWFsIGFzIHZhcmnDoXZlaXMgYWxlYXTDs3JpYXMgc8OjbyBkZWZpbmlkYXMuIE8gcXVlIG9ic2VydmFtb3MgbmEgcHLDoXRpY2Egw6kgKip1bWEgcmVhbGl6YcOnw6NvIGRlc3RlIHZldG9yIGFsZWF0w7NyaW8qKi4gQWzDqW0gZGlzc28sIHZhbW9zIGFzc3VtaXIgcXVlICRcYm9sZHN5bWJvbHtyX3t0fX0kIHNlZ3VlIHVtYSAqKmRpc3RyaWJ1acOnw6NvIGRlIHByb2JhYmlsaWRhZGUgbXVsdGl2YXJpYWRhIGNvbnTDrW51YSoqLgoKQ29tbyBleGVtcGxvLCBjb25zaWRlcmUgdW0gaW52ZXN0aWRvciBxdWUgdGVtIGHDp8O1ZXMgZGEgSUJNLCBNaWNyb3NvZnQsIEV4eG9uIE1vYmlsLCBHZW5lcmFsIE1vdG9ycyBlIFdhbC1NYXJ0LiBPIGxvZ2FyaXRtbyBkb3MgcmV0b3Jub3MgZGnDoXJpb3MgZGVzc2FzIGVtcHJlc2FzIHBvZGUgc2VyIHZpc3RvIG5vIGZvcm1hdG8gZGUgdW0gdmV0b3IgZGUgZGltZW5zw6NvIDUgKHF1YW50aWRhZGUgZGUgYcOnw7VlcyBtYW50aWRhcykuIEFzc2ltOgoKKiAkcl97MXR9JCBkZW5vdGEgbyBsb2dhcml0bW8gZG8gcmV0b3JubyBkacOhcmlvIGRhIElCTQoqICRyX3sydH0kIGRlbm90YSBvIGxvZ2FyaXRtbyBkbyByZXRvcm5vIGRpw6FyaW8gZGEgTWljcm9zb2Z0CiogJHJfezN0fSQgZGVub3RhIG8gbG9nYXJpdG1vIGRvIHJldG9ybm8gZGnDoXJpbyBkYSBFeHhvbiBNb2JpbAoqICRyX3s0dH0kIGRlbm90YSBvIGxvZ2FyaXRtbyBkbyByZXRvcm5vIGRpw6FyaW8gZGEgR2VuZXJhbCBNb3RvcnMKKiAkcl97NXR9JCBkZW5vdGEgbyBsb2dhcml0bW8gZG8gcmV0b3JubyBkacOhcmlvIGRhIFdhbC1NYXJ0CgpBcHJlbmRlcmVtb3MgbW9kZWxvcyBlY29ub23DqXRyaWNvcyBxdWUgYW5hbGlzYW0gbyBwcm9jZXNzbyBtdWx0aXZhcmlhZG8gJFxib2xkc3ltYm9se3Jfe3R9fSQgZGUgZm9ybWEgcXVlIHNlamEgcG9zc8OtdmVsIGVzdHVkYXIgYSByZWxhw6fDo28gZW50cmUgb3MgY29tcG9uZW50ZXMgZGUgJFxib2xkc3ltYm9se3Jfe3R9fSQgZSBhdW1lbnRhciBhIGFjdXLDoWNpYSBuYSBwcmV2aXPDo28gJFxib2xkc3ltYm9se3Jfe3QraH19JCBwYXJhICRoPjAkLiAKCk11aXRvcyBkb3MgbW9kZWxvcyBlIG3DqXRvZG9zIGRpc2N1dGlkb3MgYW50ZXJpb3JtZW50ZSAqKihBUiwgTUEsIEFSTUEpKiogcG9kZW0gc2VyIGdlbmVyYWxpemFkb3MgZGlyZXRhbWVudGUgcGFyYSBvIGNhc28gbXVsdGl2YXJpYWRvICoqKFZBUiwgVk1BLCBWQVJNQSkqKi4gTWFzIGV4aXN0ZW0gc2l0dWHDp8O1ZXMgb25kZSDDqSBuZWNlc3PDoXJpbyBub3ZvcyBtb2RlbG9zIGUgbcOpdG9kb3MgcGFyYSBsaWRhciBjb20gcmVsYcOnw7VlcyBjb21wbGljYWRhcyBlbnRyZSByZXRvcm5vcyBkZSB2w6FyaW9zIGF0aXZvcyAqKihNb2RlbG9zIGRlIFZvbGF0aWxpZGFkZSBNdWx0aXZhcmlhZG9zKSoqLiBBbMOpbSBkaXNzbywgZXhpc3RlbSBtw6l0b2RvcyBxdWUgYnVzY2FtIHBvciBmYXRvcmVzIGVtIGNvbXVtIHF1ZSBhZmV0YW0gb3MgcmV0b3Jub3MgZGUgZGlmZXJlbnRlcyBhdGl2b3MgKiooQW7DoWxpc2UgZGUgQ29tcG9uZW50ZXMgUHJpbmNpcGFpcywgQW7DoWxpc2UgRmF0b3JpYWwpKiouIAoKUG9yw6ltLCBvIG5vc3NvIGN1cnNvIGZvY2Fyw6Egbm9zICoqbW9kZWxvcyBkZSB2ZXRvcmVzIGF1dG9ycmVncmVzc2l2b3MgKFZBUikqKiBlIHN1YSB2ZXJzw6NvIHBhcmEgc8OpcmllcyBuw6NvIGVzdGFjaW9uw6FyaWFzLCAqKm1vZGVsb3MgZGUgdmV0b3JlcyBkZSBjb3JyZcOnw6NvIGRlIGVycm9zIChWRUNNKSoqLiBBYmFpeG8sIGV4ZW1wbG8gZGUgdW0gY29qdW50byBkZSBzw6lyaWVzIHRlbXBvcmFpcyBxdWUgcG9kZXLDrWFtb3MgdHJhdGFyIGNvbW8gbXVsdGl2YXJpYWRhIGVtIGFsZ3VtYSBhbsOhbGlzZSBkZSBpbnRlcmVzc2UuCgpgYGB7ciwgd2FybmluZz1GQUxTRSwgZWNobz1GQUxTRSwgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9NCwgbWVzc2FnZT1GQUxTRX0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyAgICAgUEFDT1RFUyAgICAgIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgQ2FycmVnYXIgbm8gYW1iaWVudGUgb3MgcGFjb3RlcyBuZWNlc3PDoXJpb3MgcGFyYSByZXBsaWNhciBvcyBjw7NkaWdvcyBhYmFpeG8Kc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKHF1YW50bW9kKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKFF1YW5kbCkpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShmb3JlY2FzdCkpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShEVCkpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShkcGx5cikpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShtYWdyaXR0cikpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShoaWdoY2hhcnRlcikpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShkeWdyYXBocykpCnN1cHByZXNzTWVzc2FnZXMocmVxdWlyZShnZ3Bsb3QyKSkKc3VwcHJlc3NNZXNzYWdlcyhyZXF1aXJlKE1UUykpCm9wdGlvbnMoImdldFN5bWJvbHMueWFob28ud2FybmluZyI9RkFMU0UpCgojIENhc28gdm9jw6ogbsOjbyB0ZW5oYSBvcyBwYWNvdGVzIGluc3RhbGFkb3MgZW0gc2V1IGNvbXB1dGFkb3IsIAojIHJldGlyZSBvcyAjIGRhcyBsaW5oYXMgIGFiYWl4byBlIGluc3RhbGUgb3MgcGFjb3Rlcy4KCiNpbnN0YWxsLnBhY2thZ2VzKGMoInF1YW50bW9kIiwiUXVhbmRsIiwiZm9yZWNhc3QiLCJEVCIsImRwbHlyIiwibWFncml0dHIiLAojICAgICAgICAgICAgICAgICAgICJoaWdoY2hhcnRlciIsImR5Z3JhcGhzIiAiZ2dwbG90MiIsIk1UUyIpKQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyAgICAgIERBRE9TICAgICAgIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgQ29sZXRhbmRvIGRhZG9zIGFtb3N0cmFpcyBwYXJhIGV4ZW1wbG9zIGRlIGNvcnJlbGHDp8OjbyBjcnV6YWRhLiBBcXVpCiMgdXNhbW9zIGEgZnVuw6fDo28gZ2V0U3ltYm9scyBkbyBwYWNvdGUgcXVhbnRtb2QuCnBldHJvX2RheSA8LSBxdWFudG1vZDo6Z2V0U3ltYm9scygiUEVUUjQuU0EiLCBzcmMgPSAieWFob28iLCB3YXJuaW5ncyA9IEZBTFNFLCBhdXRvLmFzc2lnbj1GQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gIjIwMTAtMDEtMDEiLCByZXR1cm4uY2xhc3MgPSAieHRzIikKCnZhbGVfZGF5IDwtIHF1YW50bW9kOjpnZXRTeW1ib2xzKCJWQUxFMy5TQSIsIHNyYyA9ICJ5YWhvbyIsIHdhcm5pbmdzID0gRkFMU0UsIGF1dG8uYXNzaWduPUZBTFNFLCAKICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSAiMjAxMC0wMS0wMSIsIHJldHVybi5jbGFzcyA9ICJ4dHMiKQoKaXRhdV9kYXkgPC0gcXVhbnRtb2Q6OmdldFN5bWJvbHMoIklUVUI0LlNBIiwgc3JjID0gInlhaG9vIiwgd2FybmluZ3MgPSBGQUxTRSwgYXV0by5hc3NpZ249RkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSAiMjAxMC0wMS0wMSIsIHJldHVybi5jbGFzcyA9ICJ4dHMiKQoKIyBFbSBmdW7Dp8OjbyBkZSBjaXJjdWl0IGJyZWFrZXIgbm8gcGVyw61vZG8gZW0gYW7DoWxpc2UsIGjDoSBkYXRhcyBzZW0gcHJlw6dvcy4KIyBBc3NpbSwgcHJlY2lzYW1vcyBhbGltaW5hciB0YWlzIGRhZG9zIGRhIGFtb3N0cmEuIFBhcmEgdGFudG8sIHVzYW1vcyAKIyBhIGZ1bsOnw6NvICFpcy5uYSBxdWUgcmV0b3JuYXLDoSBUUlVFIHBhcmEgdmFsb3JlcyBxdWUgbsOjbyBzw6NvIE5BLiBBcMOzcyBpc3NvLAojIGZpbHRyYW1vcyBvcyBkYWRvcyBkZSBmZWNoYW1lbnRvIHBhcmEgcGVnYXIgYXBlbmFzIGFxdWVsZXMgcXVlIHJldG9ybmFtCiMgVFJVRSBwYXJhICFpcy5uYQpwZXRyb19kYXlfY2xlYW4gPC0gcGV0cm9fZGF5JFBFVFI0LlNBLkNsb3NlWyFpcy5uYShwZXRyb19kYXkkUEVUUjQuU0EuQ2xvc2UpXQp2YWxlX2RheV9jbGVhbiA8LSB2YWxlX2RheSRWQUxFMy5TQS5DbG9zZVshaXMubmEodmFsZV9kYXkkVkFMRTMuU0EuQ2xvc2UpXQppdGF1X2RheV9jbGVhbiA8LSBpdGF1X2RheSRJVFVCNC5TQS5DbG9zZVshaXMubmEoaXRhdV9kYXkkSVRVQjQuU0EuQ2xvc2UpXQoKIyBKdW50YXIgYXMgdHLDqnMgc8OpcmllcyB0ZW1wb3JhaXMgcGFyYSBnZXJhciBhIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhcmlhZGEKc3RvY2tzX21lcmdlIDwtIG1lcmdlLnh0cyhwZXRyb19kYXlfY2xlYW4sdmFsZV9kYXlfY2xlYW4saXRhdV9kYXlfY2xlYW4sIGFsbCA9IGMoRkFMU0UsRkFMU0UpKQpjb2xuYW1lcyhzdG9ja3NfbWVyZ2UpIDwtIGMoIlBFVFI0IiwiVkFMRTMiLCAiSVRVQjQiKQoKIyBWaXN1YWxpemFyIG9zIGRhZG9zLiBBcXVpIHVzYW1vcyBvIHBhY290ZSBkeWdyYXBocy4gbWFpcyBkZXRhbGhlcyBlbQojIGh0dHBzOi8vcnN0dWRpby5naXRodWIuaW8vZHlncmFwaHMvCmR5Z3JhcGgoc3RvY2tzX21lcmdlKSAlPiUgZHlSYW5nZVNlbGVjdG9yKCkKYGBgCgoKIyMjIyMgKipFU1RBQ0lPTkFSSUVEQURFKioKCkNvbW8gasOhIGVzdHVkYW1vcyBwYXJhIHPDqXJpZXMgdGVtcG9yYWlzIHVuaXZhcmlkYXMsIGEgaGlww7N0ZXNlIGRlIGVzdGFjaW9uYXJpZWRhZGUgdGVtIG11aXRhIGltcG9ydMOibmNpYSBwYXJhIHF1ZSBzZWphIHBvc3PDrXZlbCBlc3RpbWFyIG9zIG1vZGVsb3MgZXN0dWRhZG9zLiBObyBjYXNvIG11bHRpdmFyaWFkbyBkZXZlbW9zIHRlciBvIG1lc21vIGN1aWRhZG8uIEFzc2ltLCBhcHJlc2VudGFtb3MgYWJhaXhvIGFzIGRlZmluacOnw7VlcyBkZSBlc3RhY2lvbmFyaWVkYWRlIGZvcnRlIGUgZnJhY2EgcGFyYSBzw6lyaWVzIHRlbXBvcmFpcyBtdWx0aXZhcmlhZGFzLgoKKiAqKkVTVEFDSU9OQVJJRURBREUgRk9SVEUqKgoKQ29uc2lkZXJlIHVtIGludGVpcm8gcG9zaXRpdm8gJG0kIGUgZGlzdGludG9zIGludGVpcm9zICR0X3sxfSwuLi4sdF97bX0kLCBvdSBzZWphLCAkbSQgYXRpdm9zIGNvbSByZXRvcm5vcyBlbSAkdCQgcGVyw61vZG9zLiBTZSBvcyB2ZXRvcmVzIGFsZWF0w7NyaW9zICQocl97dDF9LC4uLixyX3t0bX0pXnsnfSQgZSAkKHJfe3QxK2x9LC4uLixyX3t0bStsfSleeyd9JCwgb25kZSAkbCBcbGVxIHQkLCB0w6ptIGEgbWVzbWEgZGlzdHJpYnVpw6fDo28gZGUgcHJvYmFiaWxpZGFkZSBjb25qdW50YSwgZW50w6NvICAkXGJvbGRzeW1ib2x7cl97dH19JCDDqSBlc3RyaXRhbWVudGUgZXN0YWNpb27DoXJpYSAoZXN0YWNpb25hcmllZGFkZSBmb3J0ZSkKCiogKipFU1RBQ0lPTkFSSUVEQURFIEZSQUNBKioKCkNvbnNpZGVyZSBvcyBkb2lzIHByaW1laXJvcyBtb21lbnRvcyBkZSAkXGJvbGRzeW1ib2x7cl97dH19JDogJFxib2xkc3ltYm9se1xtdX0gPSBFKFxib2xkc3ltYm9se3Jfe3R9fSkkIGUgJFxib2xkc3ltYm9se1xHYW1tYX1fe3QsbH09Q292KFxib2xkc3ltYm9se3Jfe3R9fSxcYm9sZHN5bWJvbHtyX3t0LWx9fSkkLCBvbmRlICRsJCDDqSB1bWEgZGVmYXNhZ2VtIHF1YWxxdWVyLiBBc3N1bWluZG8gcXVlICRcYm9sZHN5bWJvbHtcbXV9X3t0fT1cYm9sZHN5bWJvbHtcbXV9JCBlICRcYm9sZHN5bWJvbHtcR2FtbWF9X3t0LGx9PVxib2xkc3ltYm9se1xHYW1tYX1fe2x9JCwgZW50w6NvICRcYm9sZHN5bWJvbHtyX3t0fX0kIMOpIGZyYWNhbWVudGUgZXN0YWNpb27DoXJpYS4KCkFzc2ltLCBlc3RhY2lvbmFyaWVkYWRlIGVzdHJpdGEgc2lnbmlmaWNhIHF1ZSBhcyBkaXN0cmlidWnDp8O1ZXMgc8OjbyBpbnZhcmlhbnRlcyBubyB0ZW1wbyBlbnF1YW50byBlc3RhY2lvbmFyaWVkYWRlIGZyYWNhIGltcGxpY2EgcXVlIG9zIGRvaXMgcHJpbWVpcm9zIG1vbWVudG9zIHPDo28gaW52YXJpYW50ZXMgbm8gdGVtcG8uIAoKIyMjIyMgKipQUk9QUklFREFERVMgQsOBU0lDQVMgREUgVU0gVkVUT1IgREUgU8OJUklFUyBURU1QT1JBSVMgRVNUQUNJT07DgVJJQVMqKgoKQ29uc2lkZXJlIHVtYSBzw6lyaWUgdGVtcG9yYWwgay1kaW1lbnNpb25hbCAkXGJvbGRzeW1ib2x7cl97dH19PShyX3sxdH0scl97MnR9LC4uLixyX3trdH0pXnsnfSQuIERlZmluaW1vcyBzZXUgdmV0b3IgZGUgbcOpZGlhcyBlIG1hdHJpeiBkZSBjb3ZhcmnDom5jaWEgY29tbyBzZWd1ZToKCiQkClxiZWdpbnthbGlnbmVkfQomIFxib2xkc3ltYm9se1xtdX0gPSBFKFxib2xkc3ltYm9se3Jfe3R9fSkgXFwKJiBcYm9sZHN5bWJvbHtcR2FtbWFfezB9fSA9IENvdihcYm9sZHN5bWJvbHtyX3t0fX0pID0gRVsoXGJvbGRzeW1ib2x7cl97dH19LVxib2xkc3ltYm9se1xtdV97dH19KShcYm9sZHN5bWJvbHtyX3t0fX0tXGJvbGRzeW1ib2x7XG11X3t0fX0pXnsnfV0KXGVuZHthbGlnbmVkfQokJAoKQSBtw6lkaWEgJFxib2xkc3ltYm9se1xtdX0kIMOpIHVtIHZldG9yIGstZGltZW5zaW9uYWwgY29uc2lzdGluZG8gZGFzIGV4cGVjdGF0aXZhcyBuw6NvIGNvbmRpY2lvbmFpcyBkb3MgY29tcG9uZW50ZXMgZGUgJFxib2xkc3ltYm9se3Jfe3R9fSQuIEEgbWF0cml6IGRlIGNvdmFyacOibmNpYSAkXGJvbGRzeW1ib2x7XEdhbW1hX3swfX0kIMOpIHVtYSBtYXRyaXogJGtcdGltZXMgayQgcG9zaXRpdmEgZGVmaW5pZGEgc2VuZG8gbyAkaS3DqXNpbW8kIGVsZW1lbnRvIGRhIHN1YSBkaWFnb25hbCBhIHZhcmnDom5jaWEgZGUgJHJfe2l0fSQsIGVucXVhbnRvIG8gJChpLGopLcOpc2ltbyQgZWxlbWVudG8gZGUgJFxib2xkc3ltYm9se1xHYW1tYV97MH19JCDDqSBhIGNvdmFyacOibmNpYSBjb250ZW1wb3LDom5lYSAoY292YXJpw6JuY2lhIGVudHJlIG9ic2VydmHDp8O1ZXMgbm8gbWVzbW8gJHQkKSBlbnRyZSAkcl97aXR9JCBlICRyX3tqdH0kLiBDb25zaWRlcmFuZG8gJGs9MiQsIHRlbW9zIG8gdmV0b3IgYmlkaW1lbnNpb25hbCBkZSBleHBlY3RhdGl2YXM6CgokJApcYmVnaW57YWxpZ25lZH0KJiBcYm9sZHN5bWJvbHtyX3t0fX09KHJfezF0fSxyX3sydH0pXnsnfSBcXAomIFxcCiYgXGJvbGRzeW1ib2x7XG11fSA9IEUoXGJvbGRzeW1ib2x7cl97dH19KSA9IFxsZWZ0WyBcYmVnaW57bWF0cml4fSBFXGxlZnQoIHsgciB9X3sgMXQgfSBccmlnaHQpICBcXCBFXGxlZnQoIHsgciB9X3sgMnQgfSBccmlnaHQpICBcZW5ke21hdHJpeH0gXHJpZ2h0XSAgXFwKJgpcZW5ke2FsaWduZWR9CiQkCkrDoSBhIG1hdHJpeiBkZSBjb3ZhcmnDom5jaWEgc2Vyw6E6CgokJApcYm9sZHN5bWJvbHtcR2FtbWF9X3swfSA9IFxsZWZ0W1xiZWdpbnttYXRyaXh9IEVcbGVmdFtcbGVmdCh7cn1fezF0fS17XG11fV97MX1ccmlnaHQpIFxsZWZ0KHtyfV97MXR9LXtcbXV9X3sxfSBccmlnaHQpXHJpZ2h0XSAmIEVcbGVmdFtcbGVmdCh7cn1fezF0fS17XG11fV97MX0gXHJpZ2h0KVxsZWZ0KHtyfV97MnR9LXtcbXV9X3syfSBccmlnaHQpIFxyaWdodF0gXFwgRVxsZWZ0W1xsZWZ0KHtyfV97MnR9LXtcbXV9X3syfSBccmlnaHQpIFxsZWZ0KHtyfV97MXR9LXtcbXV9X3sxfSBccmlnaHQpXHJpZ2h0XSAmIEVcbGVmdFtcbGVmdCh7cn1fezJ0fS17XG11fV97Mn0gXHJpZ2h0KSBcbGVmdCh7cn1fezJ0fS17XG11fV97Mn0gXHJpZ2h0KVxyaWdodF0gXGVuZHttYXRyaXh9IFxyaWdodF0gPSBcbGVmdFtcYmVnaW57bWF0cml4fSBWYXJcbGVmdCh7cn1fezF0fVxyaWdodCkgJiBDb3ZcbGVmdCh7cn1fezF0fSx7cn1fezJ0fVxyaWdodCkgXFwgQ292XGxlZnQoe3J9X3sydH0se3J9X3sxdH1ccmlnaHQpICYgVmFyXGxlZnQoe3J9X3sydH1ccmlnaHQpIFxlbmR7bWF0cml4fSBccmlnaHRdCiQkCgpQYXJhIHF1YWxxdWVyIGludGVpcm8gJGw+MCQsIHRlbW9zIGEgbWF0cml6IGRlIGF1dG9jb3ZhcmnDom5jaWEgZGUgZGVmYXNhZ2VtICRsJCBkZSAkXGJvbGRzeW1ib2x7cl97dH19JCBkZWZpbmlkYSBwb3I6CgokJApcYm9sZHN5bWJvbHtcR2FtbWF9X3tsfSA9IENvdihcYm9sZHN5bWJvbHtyfV97dH0sXGJvbGRzeW1ib2x7cn1fe3QtbH0pID0gRVsoXGJvbGRzeW1ib2x7cn1fe3R9LVxib2xkc3ltYm9se1xtdX1fe3R9KShcYm9sZHN5bWJvbHtyfV97dC1sfS1cYm9sZHN5bWJvbHtcbXV9X3t0fSleeyd9XQokJApxdWUgdGFtYsOpbSDDqSB1bWEgbWF0cml6ICRrIFx0aW1lcyBrJC4gw4kgaW1wb3J0YW50ZSBlbnRlbmRlciBvIHNpZ25pZmljYWRvIGRlIGNhZGEgZWxlbWVudG8gZW0gJFxib2xkc3ltYm9se1xHYW1tYX1fe2x9JC4gUGFyYSBkZW1vbnN0cmHDp8OjbywgY29uc2lkZXJhbmRvIG5vdmFtZW50ZSAkaz0yJCBlICRsID0gMSwgMiwgLi4sIGwkIG8gcXVlIGltcGxpY2EgZW06CgokJApcYm9sZHN5bWJvbHtcR2FtbWF9X3sxfSA9IFxsZWZ0W1xiZWdpbnttYXRyaXh9IEVcbGVmdFtcbGVmdCh7cn1fezF0fS17XG11fV97MX0gXHJpZ2h0KSBcbGVmdCh7cn1fezEsdC0xfS17XG11fV97MX0gXHJpZ2h0KVxyaWdodF0gJiBFXGxlZnRbXGxlZnQoe3J9X3sxdH0te1xtdX1fezF9IFxyaWdodCkgXGxlZnQoe3J9X3syLHQtMX0te1xtdX1fezJ9IFxyaWdodCkgXHJpZ2h0XSBcXCBFXGxlZnRbXGxlZnQoe3J9X3sydH0te1xtdX1fezJ9IFxyaWdodCkgXGxlZnQoe3J9X3sxLHQtMX0te1xtdSB9X3sxfSBccmlnaHQpIFxyaWdodF0gJiBFXGxlZnRbXGxlZnQoe3J9X3sydH0te1xtdX1fezJ9IFxyaWdodCkgXGxlZnQoe3J9X3syLHQtMX0te1xtdX1fezJ9IFxyaWdodCkgXHJpZ2h0XSAgXGVuZHttYXRyaXh9IFxyaWdodF0gPSBcbGVmdFtcYmVnaW57bWF0cml4fSBDb3ZcbGVmdCh7cn1fezF0fSwgcl97MSx0LTF9XHJpZ2h0KSAmIENvdlxsZWZ0KHtyfV97MXR9LHtyfV97Mix0LTF9XHJpZ2h0KSBcXCBDb3ZcbGVmdCh7cn1fezJ0fSx7cn1fezEsdC0xfVxyaWdodCkgJiBDb3ZcbGVmdCh7cn1fezJ0fSx7cn1fezIsdC0xfVxyaWdodCkgXGVuZHttYXRyaXh9IFxyaWdodF0KJCQKCiQkClxib2xkc3ltYm9se1xHYW1tYX1fezJ9ID0gXGxlZnRbXGJlZ2lue21hdHJpeH0gRVxsZWZ0W1xsZWZ0KHtyfV97MXR9LXtcbXV9X3sxfSBccmlnaHQpIFxsZWZ0KHtyfV97MSx0LTJ9LXtcbXV9X3sxfSBccmlnaHQpXHJpZ2h0XSAmIEVcbGVmdFtcbGVmdCh7cn1fezF0fS17XG11fV97MX0gXHJpZ2h0KSBcbGVmdCh7cn1fezIsdC0yfS17XG11fV97Mn0gXHJpZ2h0KSBccmlnaHRdIFxcIEVcbGVmdFtcbGVmdCh7cn1fezJ0fS17XG11fV97Mn0gXHJpZ2h0KSBcbGVmdCh7cn1fezEsdC0yfS17XG11IH1fezF9IFxyaWdodCkgXHJpZ2h0XSAmIEVcbGVmdFtcbGVmdCh7cn1fezJ0fS17XG11fV97Mn0gXHJpZ2h0KSBcbGVmdCh7cn1fezIsdC0yfS17XG11fV97Mn0gXHJpZ2h0KSBccmlnaHRdICBcZW5ke21hdHJpeH0gXHJpZ2h0XSA9IFxsZWZ0W1xiZWdpbnttYXRyaXh9IENvdlxsZWZ0KHtyfV97MXR9LCByX3sxLHQtMn1ccmlnaHQpICYgQ292XGxlZnQoe3J9X3sxdH0se3J9X3syLHQtMn1ccmlnaHQpIFxcIENvdlxsZWZ0KHtyfV97MnR9LHtyfV97MSx0LTJ9XHJpZ2h0KSAmIENvdlxsZWZ0KHtyfV97MnR9LHtyfV97Mix0LTJ9XHJpZ2h0KSBcZW5ke21hdHJpeH0gXHJpZ2h0XQokJAokJApcYmVnaW57bWF0cml4fSAuIFxcIC4gXFwgLiBcZW5ke21hdHJpeH0KJCQKCgokJApcYm9sZHN5bWJvbHtcR2FtbWF9X3tsfSA9IFxsZWZ0WyBcYmVnaW57bWF0cml4fSBFXGxlZnRbIFxsZWZ0KHtyfV97MXR9LXtcbXV9X3sxfSBccmlnaHQpIFxsZWZ0KHtyfV97MSx0LWx9LXtcbXV9X3sxfSBccmlnaHQpICBccmlnaHRdICAmIEVcbGVmdFtcbGVmdCh7cn1fezF0fS17XG11fV97MX0gXHJpZ2h0KSBcbGVmdCh7cn1fezIsdC1sfS17XG11fV97Mn0gXHJpZ2h0KSAgXHJpZ2h0XSAgXFwgRVxsZWZ0W1xsZWZ0KHtyfV97MnR9LXtcbXV9X3syfSBccmlnaHQpXGxlZnQoe3J9X3sxLHQtbH0te1xtdX1fezF9IFxyaWdodClccmlnaHRdICAmIEVcbGVmdFtcbGVmdCh7cn1fezJ0fS17XG11fV97Mn0gXHJpZ2h0KSBcbGVmdCh7cn1fezIsdC1sfS17XG11fV97Mn0gXHJpZ2h0KSAgXHJpZ2h0XSAgXGVuZHttYXRyaXh9IFxyaWdodF0gPSBcbGVmdFtcYmVnaW57bWF0cml4fSBDb3ZcbGVmdCh7cn1fezF0fSwgcl97MSx0LWx9XHJpZ2h0KSAmIENvdlxsZWZ0KHtyfV97MXR9LHtyfV97Mix0LWx9XHJpZ2h0KSBcXCBDb3ZcbGVmdCh7cn1fezJ0fSx7cn1fezEsdC1sfVxyaWdodCkgJiBDb3ZcbGVmdCh7cn1fezJ0fSx7cn1fezIsdC1sfVxyaWdodCkgXGVuZHttYXRyaXh9IFxyaWdodF0KJCQKUG9ydGFudG8sIHBhcmEgJGw9MCwxLDIsLi4uLGwkIGUgc2VuZG8gJGk9MSwuLixrJCBhIGxpbmhhIGRhIG1hdHJpeiBlICRqPTEsLi4uLGskIHN1YSBjb2x1bmEsIHRlbW9zOgoKKiAkXEdhbW1hX3tsLGlpfSQgw6kgYSBhdXRvY292YXJpw6JuY2lhIGRlIGNhZGEgYXRpdm8KKiAkXEdhbW1hX3tsLGlqfSQgw6kgYSBjb3ZhcmnDom5jaWEgZW50cmUgJHJfe2l0fSQgZSAkcl97aix0LWx9JCBxdWUgcXVhbnRpZmljYSBhIGRlcGVuZMOqbmNpYSBsaW5lYXIgZGUgJHJfe2l0fSQgZSAkcl97aix0LWx9JC4KCiMjIyMjIyBPQlNFUlZBw4fDlUVTOgoKMS4gRW0gZ2VyYWwgJFxib2xkc3ltYm9se1xHYW1tYX1fe2x9JCBuw6NvIMOpIHNpbcOpdHJpY2EsIGV4Y2V0byBwYXJhICRsPTAkLiAKMi4gJFxib2xkc3ltYm9se1xHYW1tYX1fe2x9PVxib2xkc3ltYm9se1xHYW1tYX1fey1sfV57J30kCgoqICoqTUFUUklaIERFIENPUlJFTEHDh8ODTyBDUlVaQURBKioKCkRlaXhlICRcYm9sZHN5bWJvbHtEfSQgc2VyIHVtYSBtYXRyaXogJGsgXHRpbWVzIGskIGRpYWdvbmFsIGNvbnNpc3RpbmRvIGRvcyBkZXN2aW9zLXBhZHLDo28gZGUgJHJfe2l0fSQgcGFyYSAkaT0xLC4uLixrJC4gRW0gb3V0cmFzIHBhbGF2cmFzLCAkXGJvbGRzeW1ib2x7RH09ZGlhZ1xsZWZ0XHtcc3FydHt7XEdhbW1hfV97MTF9XGxlZnQoMCBccmlnaHQpfSwgLi4uICwgXHNxcnR7e1xHYW1tYX1fe2trfVxsZWZ0KDAgXHJpZ2h0KX1ccmlnaHRcfSQsIG9uZGUgJFxHYW1tYV97aWl9XGxlZnQoMCBccmlnaHQpJCBkZW5vdGEgbyAkKGksaSkkLcOpc2ltbyBlbGVtZW50byBkYSBkaWFnb25hbCBkZSAkXGJvbGRzeW1ib2x7XEdhbW1hX3swfX0kLiBQYXJhIG5vc3NvIGV4ZW1wbG8gZGUgdW1hIHPDqXJpZSB0ZW1wb3JhbCBtdWx0aXZhcmlhZGEgY29tIDIgY29tcG9uZW50ZXMsIG91IHNlamEsICRrPTIkLCB0ZW1vczoKCiQkClxib2xkc3ltYm9se0R9ID0gXGxlZnRbXGJlZ2lue21hdHJpeH0gXHNxcnR7XEdhbW1hX3sxMX0oMCl9ICYgMCBcXCAwICYgXHNxcnR7XEdhbW1hX3syMn0oMCl9IFxlbmR7bWF0cml4fSBccmlnaHRdID0gXGxlZnRbXGJlZ2lue21hdHJpeH0gRFAocl97MXR9KSAmIDAgXFwgMCAmIERQKHJfezJ0fSkgXGVuZHttYXRyaXh9IFxyaWdodF0KJCQKCkFzc2ltLCBhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gY3J1emFkYSBjb250ZW1wb3LDom5lYSAoZGVmYXNhZ2VtIDApIGRlICRcYm9sZHN5bWJvbHtyX3t0fX0kIHBvZGUgc2VyIGRlZmluaWRhIGNvbW86CgokJApcYm9sZHN5bWJvbHtccmhvX3swfX0gPSBbXHJob197aWp9KDApXSA9IFxib2xkc3ltYm9se0Reey0xfX1cYm9sZHN5bWJvbHtcR2FtbWFfezB9fVxib2xkc3ltYm9se0Reey0xfX0gPSBcbGVmdFtcYmVnaW57bWF0cml4fSBDb3JyKHJfezF0fSxyX3sxdH0pICYgQ29ycihyX3sxdH0scl97MnR9KSBcXCBDb3JyKHJfezJ0fSxyX3sxdH0pICYgQ29ycihyX3sydH0scl97MnR9KSBcZW5ke21hdHJpeH0gXHJpZ2h0XSA9IFxsZWZ0W1xiZWdpbnttYXRyaXh9IDEgJiBDb3JyKHJfezF0fSxyX3sydH0pIFxcIENvcnIocl97MnR9LHJfezF0fSkgJiAxIFxlbmR7bWF0cml4fSBccmlnaHRdCiQkCk1haXMgZXNwZWNpZmljYW1lbnRlLCBvICooaSxqKS3DqXNpbW8qIGVsZW1lbnRvIGRlICRcYm9sZHN5bWJvbHtccmhvX3swfX0kIMOpOgoKJCQKXHJob197aWp9KDApID0gXGZyYWN7XEdhbW1hX3tpan0oMCl9e1xzcXJ0e3tcR2FtbWF9X3tpaX1cbGVmdCgwIFxyaWdodCl9XHNxcnR7e1xHYW1tYX1fe2pqfVxsZWZ0KDAgXHJpZ2h0KX19ID0gXGZyYWN7Q292KHJfe2l0fSxyX3tqdH0pfXtzdGQocl97aXR9KXN0ZChyX3tqdH0pfQokJApxdWUgw6kgbyBjb2VmaWNpZW50ZSBkZSBjb3JyZWxhw6fDo28gZW50cmUgJHJfe2l0fSQgZSAkcl97anR9JC4gRW0gYW7DoWxpc2UgZGUgc8OpcmllcyB0ZW1wb3JhaXMsIHRhbCBjb2VmaWNpZW50ZSBkZSBjb3JyZWxhw6fDo28gw6kgcmVmZXJpZG8gY29tbyBvIGNvZWZpY2llbnRlIGRlIGNvcnJlbGHDp8OjbyBjb250ZW1wb3LDom5lYSBwb3JxdWUgZWxlIMOpIGEgY29ycmVsYcOnw6NvIGVudHJlIGR1YXMgc8OpcmllcyBubyB0ZW1wbyAkdCQuIMOJIGbDoWNpbCB2ZXIgcXVlICRccmhvX3tpan0oMCk9XHJob197aml9KDApJCwgJC0xIFxsZXEgXHJob197aWp9KDApIFxsZXEgMSQgZSAkXHJob197aWl9KDApPTEkIHBhcmEgJDEgXGxlcSBpJCwgJGogXGxlcSBrJC4gCgpBc3NpbSwgJFxib2xkc3ltYm9se1xyaG9fezB9fSQgw6kgdW1hIG1hdHJpeiBzaW3DqXRyaWNhIGNvbSAkMSQgbmEgZGlhZ29uYWwuIErDoSBtYXRyaXogZGUgY29ycmVsYcOnw6NvIG5hIGRlZmFzYWdlbSAkbCQgZGUgJFxib2xkc3ltYm9se3Jfe3R9fSQgw6kgZGVmaW5pZGEgY29tbzoKCiQkClxiZWdpbnthbGlnbmVkfQomIFxib2xkc3ltYm9se1xyaG9fezF9fSA9IFxib2xkc3ltYm9se0Reey0xfX1cYm9sZHN5bWJvbHtcR2FtbWFfezF9fVxib2xkc3ltYm9se0Reey0xfX0gPSBcbGVmdFtcYmVnaW57bWF0cml4fSBDb3JyKHJfezF0fSxyX3sxLHQtMX0pICYgQ29ycihyX3sxdH0scl97Mix0LTF9KSBcXCBDb3JyKHJfezJ0fSxyX3sxLHQtMX0pICYgQ29ycihyX3sydH0scl97Mix0LTF9KSBcZW5ke21hdHJpeH0gXHJpZ2h0XSBcXAomIFxcCiYgXGJvbGRzeW1ib2x7XHJob197Mn19ID0gXGJvbGRzeW1ib2x7RF57LTF9fVxib2xkc3ltYm9se1xHYW1tYV97Mn19XGJvbGRzeW1ib2x7RF57LTF9fSA9IFxsZWZ0W1xiZWdpbnttYXRyaXh9IENvcnIocl97MXR9LHJfezEsdC0yfSkgJiBDb3JyKHJfezF0fSxyX3syLHQtMn0pIFxcIENvcnIocl97MnR9LHJfezEsdC0yfSkgJiBDb3JyKHJfezJ0fSxyX3syLHQtMn0pIFxlbmR7bWF0cml4fSBccmlnaHRdIFxcCiYgXFwKJiBcYmVnaW57bWF0cml4fSAuIFxcIC4gXFwgLiBcZW5ke21hdHJpeH0gXFwKJiBcXAomIFxib2xkc3ltYm9se1xyaG9fe2x9fSA9IFxib2xkc3ltYm9se0Reey0xfX1cYm9sZHN5bWJvbHtcR2FtbWFfe2x9fVxib2xkc3ltYm9se0Reey0xfX0gPSBcbGVmdFtcYmVnaW57bWF0cml4fSBDb3JyKHJfezF0fSxyX3sxLHQtbH0pICYgQ29ycihyX3sxdH0scl97Mix0LWx9KSBcXCBDb3JyKHJfezJ0fSxyX3sxLHQtbH0pICYgQ29ycihyX3sydH0scl97Mix0LWx9KSBcZW5ke21hdHJpeH0gXHJpZ2h0XSBcXApcZW5ke2FsaWduZWR9IAokJAoKCm9uZGUsIGNvbW8gYW50ZXMsICRcYm9sZHN5bWJvbHtEfSQgw6kgYSBtYXRyaXogZGlhZ29uYWwgZG9zIGRlc3Zpb3MtcGFkcsOjbyBkYXMgc8OpcmllcyBpbmRpdmlkdWFpcyAkcl97aXR9JC4gQXNzaW0sIAoKJCQKXHJob197aWp9KGwpID0gXGZyYWN7XEdhbW1hX3tpan0obCl9e1xzcXJ0e3tcR2FtbWF9X3tpaX1cbGVmdCgwIFxyaWdodCl9XHNxcnR7e1xHYW1tYX1fe2pqfVxsZWZ0KDAgXHJpZ2h0KX19ID0gXGZyYWN7Q292KHJfe2l0fSxyX3tqLHQtbH0pfXtzdGQocl97aXR9KXN0ZChyX3tqdH0pfQokJApxdWUgw6kgbyBjb2VmaWNpZW50ZSBkZSBjb3JyZWxhw6fDo28gZW50cmUgJHJfe2l0fSQgZSAkcl97aix0LWx9JC4gUXVhbmRvICRsPjAkLCBlc3RlIGNvZWZpY2llbnRlIGRlIGNvcnJlbGHDp8OjbyBzaWduaWZpY2EgYSBkZXBlbmTDqm5jaWEgbGluZWFyIGRlICRyX3tpdH0kIHNvYnJlICRyX3tqLHQtbH0kIHF1ZSBvY29ycmV1IGFudGVzIGRlICR0JC4gQ29uc2VxdWVudGVtZW50ZSwgc2UgJFxyaG9fe2lqfShsKSBcbmVxIDAkIGUgJGw+MCQsIGRpemVtb3MgcXVlIGEgc8OpcmllICRyX3tqdH0kIGNvbmR1eiBhIHPDqXJpZSAkcl97aXR9JCBuYSBkZWZhc2FnZW0gJGwkLiAKClNpbWlsYXJtZW50ZSwgJFxyaG9fe2ppfShsKSQgbWVkZSBhIGRlcGVuZMOqbmNpYSBsaW5lYXIgZGUgJHJfe2p0fSQgZSAkcl97aSx0LWx9JCBlIGRpemVtb3MgcXVlIHPDqXJpZSAkcl97aXR9JCBjb25kdXogYSBzw6lyaWUgJHJfe2p0fSQgbmEgZGVmYXNhZ2VtICRsJCBzZSAkXHJob197aml9KGwpIFxuZXEgMCQgZSAkbD4wJC4gT3V0cm8gcG9udG8gaW1wb3J0YW50ZSDDqSBxdWUgb3MgZWxlbWVudG9zIGRhIGRpYWdvbmFsIGRlc3RhIG1hdHJpeiAoZGVmaW5pZG9zIGNvbW8gJFxyaG9fe2lpfShsKSQpIHPDo28gb3MgY29lZmljaWVudGUgZGUgYXV0b2NvcnJlbGHDp8OjbyBkZSAkcl97aXR9JC4KCiogKipERVBFTkTDik5DSUEgTElORUFSKioKCkNvbnNpZGVyYWRhIGNvbmp1bnRhbWVudGUsIGFzIG1hdHJpemVzIGRlIGNvcnJlbGHDp8OjbyBjcnV6YWRhICRcbGVmdFx7IFxib2xkc3ltYm9se1xyaG9fe2x9fSB8IGw9MCwxLC4uLiBccmlnaHRcfSQgZGUgdW1hIHZldG9yIGZyYWNhbWVudGUgZXN0YWNpb27DoXJpbyBkZSBzw6lyaWVzIHRlbXBvcmFpcyBjb250ZW0gYSBzZWd1aW50ZSBpbmZvcm1hw6fDo287CgoxLiBPcyBlbGVtZW50b3MgZGEgZGlhZ29uYWwgJFxsZWZ0XHtccmhvX3tpaX0obCkgfCBsPTAsMSwuLi4gXHJpZ2h0XH0kICBzw6NvIGEgZnVuw6fDo28gZGUgYXV0b2NvcnJlbGHDp8OjbyBkZSAkcl97aXR9JAoyLiBQYXJhICRsPTAkLCBvcyBlbGVtZW50b3MgZm9yYSBkYSBkaWFnb25hbCAkXHJob197aWp9KDApJCBtZWRlbSBhIHJlbGHDp8OjbyBsaW5lYXIgY29udGVtcG9yw6JuZWEgZW50cmUgJHJfe2l0fSQgZSAkcl97anR9JAozLiBQYXJhICRsPjAkLCBvcyBlbGVtZW50b3MgZm9yYSBkYSBkaWFnb25hbCAkXHJob197aWp9KGwpJCBtZWRlbSBhIGRlcGVuZMOqbmNpYSBsaW5lYXIgZGUgJHJfe2l0fSQgc29icmUgdmFsb3JlcyBwYXNzYWRvcyBkZSAkcl97aix0LWx9JAoKUG9ydGFudG8sIHNlICRccmhvX3tpan0obCk9MCQgcGFyYSAkbD4wJCwgZW50w6NvICRyX3tpdH0kIG7Do28gZGVwZW5kZSBsaW5lYXJtZW50ZSBkZSBxdWFscXVlciB2YWxvciBwYXNzYWRvIGRlICRyX3tqLHQtbH0kIGRhIHPDqXJpZSAkcl97anR9JC4gRW0gZ2VyYWwsIGEgcmVsYcOnw6NvIGxpbmVhciBlbnRyZSBkdWFzIHPDqXJpZXMgdGVtcG9yYWlzICgkcl97aXR9JCBlICRyX3tqdH0kKSBwb2RlIHNlciByZXN1bWlkYSBkYSBzZWd1aW50ZSBmb3JtYToKCjEuICRyX3tpdH0kIGUgJHJfe2p0fSQgbsOjbyB0ZW0gZGVwZW5kw6puY2lhIGxpbmVhciBzZSAkXHJob197aWp9KGwpPVxyaG9fe2ppfShsKT0wJCBwYXJhIHRvZG8gJGwgXGdlcSAwJC4KMi4gJHJfe2l0fSQgZSAkcl97anR9JCBzw6NvIGNvcnJlbGFjaW9uYWRvcyBjb250ZW1wb3LDom5lYW1lbnRlIHNlICRccmhvX3tpan0oMClcbmVxMCQuCjMuICRyX3tpdH0kIGUgJHJfe2p0fSQgbsOjbyB0ZW0gZGVwZW5kw6puY2lhIGVtIGRlZmFzYWdlbnMgc2UgJFxyaG9fe2lqfShsKT0wJCBlICRccmhvX3tqaX0obCk9MCQgcGFyYSB0b2RvICRsPjAkLiBOZXN0ZSBjYXNvIGRpemVtb3MgcXVlIGFzIGR1YXMgc8OpcmllcyBzw6NvIGRlc2Fjb3BsYWRhcy4KNC4gRXhpc3RlIHJlbGHDp8OjbyB1bmlkaXJlY2lvbmFsIGRlICRyX3tpdH0kIHBhcmEgJHJfe2p0fSQgc2UgJFxyaG9fe2lqfShsKT0wJCBwYXJhIHRvZG8gJGw+MCQsIG1hcyAkXHJob197aml9KHYpXG5lcTAkIHBhcmEgYWxndW0gJHY+MCQuIE5lc3RlIGNhc28sICRyX3tpdH0kIG7Do28gZGVwZW5kZSBkZSBxdWFscXVlciB2YWxvciBwYXNzYWRvIGRlICRyX3tqdH0kLCBtYXMgJHJfe2p0fSQgZGVwZW5kZSBkZSBhbGd1bSB2YWxvciBwYXNzYWRvIGRlICRyX3tpdH0kLgo1LiBFeGlzdGUgdW1hIHJlbGHDp8OjbyBkZSAqZmVlZGJhY2sqIGVudHJlICRyX3tpdH0kIHBhcmEgJHJfe2p0fSQgc2UgJFxyaG9fe2lqfShsKVxuZXEwJCBwYXJhIGFsZ3VtICRsPjAkIGUgJFxyaG9fe2ppfSh2KVxuZXEwJCBwYXJhIGFsZ3VtICR2PjAkLgoKKiAqKk1BVFJJWiBERSBDT1JSRUxBw4fDg08gQ1JVWkFEQSBBTU9TVFJBTCoqCgpTdXBvbmhhIHF1ZSB0ZW1vcyBvcyBkYWRvcyAkXGxlZnRce1xib2xkc3ltYm9se3J9X3t0fSB8dD0xLC4uLixUIFxyaWdodFx9JC4gQSBtYXRyaXogZGUgY292YXJpw6JuY2lhIGNydXphZGEgKCRcYm9sZHN5bWJvbHtcR2FtbWF9X3tsfSQpIHBvZGUgc2VyIGVzdGltYWRhIHBvcjoKCiQkCntcaGF0e1xib2xkc3ltYm9se1xHYW1tYX19X3tsfX0gPSBcZnJhY3sxfXtUfVxzdW1fe3Q9bCsxfV57VH17XGxlZnQoXGJvbGRzeW1ib2x7cn1fe3R9LVxvdmVybGluZXtcYm9sZHN5bWJvbHtyfX1ccmlnaHQpXGxlZnQoXGJvbGRzeW1ib2x7cn1fe3QtbH0tXG92ZXJsaW5le1xib2xkc3ltYm9se3J9fVxyaWdodCleeyd9fQokJCAKb25kZSAkbCBcZ2VxIDAkIGUgJFxvdmVybGluZXtcYm9sZHN5bWJvbHtyfX09XGZyYWN7XHN1bV97dD0xfV57VH17XG92ZXJsaW5le1xib2xkc3ltYm9se3J9fX19e1R9JCDDqSBvIHZldG9yIGRlIG3DqWRpYXMgYW1vc3RyYWlzLiBBIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gY3J1emFkYSAkXGJvbGRzeW1ib2x7XHJob197bH19JCDDqSBlc3RpbWFkYSBwb3I6CgokJApcaGF0e1xib2xkc3ltYm9se1xyaG99fV97bH0gPVxoYXR7XGJvbGRzeW1ib2x7RH19XnstMX1caGF0e1xib2xkc3ltYm9se1xHYW1tYX19X3tsfVxoYXR7XGJvbGRzeW1ib2x7RH19XnstMX0KJCQKb25kZSAkbCBcZ2VxIDAkIGUgJFxoYXR7XGJvbGRzeW1ib2x7RH19JCDDqSBhIG1hdHJpeiBkaWFnb25hbCAkayBcdGltZXMgayQgZG9zIGRlc3Zpb3MtcGFkcsOjbyBhbW9zdHJhaXMgZGFzIHPDqXJpZXMuIAoKIyMjIyMgKipNQVRSSVogREUgQ09SUkVMQcOHw5VFUyBDUlVaQURBIC0gRVhFTVBMTyoqCgpFbXBpcmljYW1lbnRlLCBzYWJlbW9zIHF1ZSDDqSBkaWZpY2lsIGFic29ydmVyIHNpbXVsdGFuZWFtZW50ZSBtdWl0YXMgbWF0cml6ZXMgZGUgY29ycmVsYcOnw6NvIGNydXphZGEuIEVtIGZ1bsOnw6NvIGRpc3NvLCBwYXJhIHZlcmlmaWNhciBhIGRlcGVuZMOqbmNpYSBsaW5lYXIgZW50cmUgc8OpcmllcyB0ZW1wb3JhaXMgY29uc2lkZXJhcmVtb3MgdW0gZ3LDoWZpY28gcXVlIMOpIGVxdWl2YWxlbnRlIMOgIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gY3J1emFkYS4gCgpQYXJhIGNhZGEgJChpLGopJC3DqXNpbWEgcG9zacOnw6NvIGRhIG1hdHJpeiBkZSBjb3JyZWxhw6fDo28gY3J1emFkYSBhbW9zdHJhbCwgdGVtb3MgbyBncsOhZmljbyBkZSAkXGhhdHtccmhvfV97bCxpan0kIGNvbnRyYSAkbCQgcGFyYSAkbCA9IFxwbTEsIFxwbTIsIC4uLiwgXHBtIG0kLCBvbmRlICRtJCDDqSB1bSBpbnRlaXJvLiBFc3RlIGdyw6FmaWNvIMOpIHVtYSBnZW5lcmFsaXphw6fDo28gZGEgZnVuw6fDo28gZGUgYXV0b2NvcnJlbGHDp8OjbyAoRkFDKSBkZSB1bWEgc8OpcmllIHRlbXBvcmFsIHVuaXZhcmlhZGEuIAoKUGFyYSB1bWEgc8OpcmllIG11bHRpdmFyaWFkYSBkZSBkaW1lbnPDo28gJGskLCB0ZXJlbW9zICRrXnsyfSQgZ3LDoWZpY29zLiBBc3NpbSBjb21vIG5vIGNhc28gZGEgRkFDLCBwYXJhIGZhY2lsaXRhciBvIGVudGVuZGltZW50byBkb3MgZ3LDoWZpY29zIHRlbW9zIHVtYSBsaW5oYSBwb250aWxoYWRhIGluZGljYW5kbyBzZSBhIGNvcnJlbGHDp8OjbyBjcnV6YWRhIG5hIGRlZmFzYWdlbSDDqSBlc3RhdGlzdGljYW1lbnRlIHNpZ25pZmljYW50ZSBvdSBuw6NvLiAKClVzYW5kbyBjb21vIGV4ZW1wbG8gYXMgYcOnw7VlcyAqKlBFVFI0KiosICoqVkFMRTMqKiBlICoqSVRTQTQqKiwgKG91IHNlamEsICRrPTMkKSwgdGVtb3MgYWJhaXhvIG9zIGdyw6FmaWNvcyBkYSBjb3JyZWxhw6fDo28gY3J1emFkYSBhbW9zdHJhbCBwYXJhIGNhZGEgdW1hIGRhcyBhw6fDtWVzIGVtIHJlbGHDp8OjbyBhIGVsYSBtZXNtYSBlIGFzIGRlbWFpcy4gQXNzaW0sIG5hIGRpYWdvbmFsIHByaW5jaXBhbCB0ZW1vcyBhIGZ1bsOnw6NvIGRlIGF1dG9jb3JyZWxhw6fDo28gKEZBQykgZGEgYcOnw6NvIGUgbmFzIGRlbWFpcyBwb3Npw6fDtWVzIGFzIGNvcnJlbGHDp8O1ZXMgY3J1emFkYXMuIAoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy53aWR0aD0xMiwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyAgICBSRVRPUk5PUyAgICAgIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiMgU8OpcmllIGRlIHJldG9ybm9zLiBBcXVpLCB1c2Ftb3MgYSBmdW7Dp8OjbyBST0MgZG8gcGFjb3RlCiMgVFRSIHF1ZSBjYWxjdWxhIG8gcmV0b3JubyBkZSB1bWEgc8OpcmllIHRlbXBvcmFsIG11bHRpdmFyaWFkYQojIFJldGlyYW1vcyBhIHByaW1laXJhIGxpbmhhIFstMSxdIGVtIGZ1bsOnw6NvIGRlIG7Do28gc2VyIHBvc3PDrXZlbAojIGNhbGN1bGFyIG8gcmV0b3JubyBwYXJhIGEgcHJpbWVpcmEgb2JzZXJ2YcOnw6NvIChuw6NvIHRlbW9zIGRhZG9zCiMgYW50ZXMgZGVzdGEgZGF0YSkKc3RvY2tzX3JldHVybnMgPSBST0MoeCA9IHN0b2Nrc19tZXJnZSwgdHlwZSA9ICJjb250aW51b3VzIilbLTEsXQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMgIENPUlJFTEHDh8ODTyBDUlVaQURBICAjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBEZWZhc2FnZW5zIG3DoXhpbWFzCmRlZmFzYWdlbnMgPC0gMTAKCiMgTW9udGFyIHVtYSAibWF0cml6IiBkZSBncsOhZmljb3MgKGt4aykKcGFyKG1mcm93ID0gYyhuY29sKHN0b2Nrc19yZXR1cm5zKSwgbmNvbChzdG9ja3NfcmV0dXJucykpKQoKIyBBZGljaW9uYXIgbmEgIm1hdHJpeiIgZGUgZ3LDoWZpY29zIGEgQ0NGIGRlIGNhZGEgc8OpcmllCiMgY29udHJhIGVsYSBtZXNtYSBlIGFzIGRlbWFpcwpmb3IgKGkgaW4gMTpuY29sKHN0b2Nrc19yZXR1cm5zKSkgewogIGZvciAoaiBpbiAxOm5jb2woc3RvY2tzX3JldHVybnMpKSB7CiAgICBjY2YoZHJvcChzdG9ja3NfcmV0dXJuc1ssaV0pLCBkcm9wKHN0b2Nrc19yZXR1cm5zWyxqXSksIGxhZy5tYXggPSBkZWZhc2FnZW5zLCAKICAgICAgICBtYWluID0gIiIsIHlsYWIgPSAiRkNDIiwgeGxhYiA9ICJEZWZhc2FnZW5zIikKICAgIHRpdGxlKHBhc3RlMChjb2xuYW1lcyhzdG9ja3NfcmV0dXJucylbaV0sICItIiwgY29sbmFtZXMoc3RvY2tzX3JldHVybnMpW2pdKSwgYWRqID0gMC41LCBsaW5lID0gMSkKICB9Cn0KYGBgCgpVbWEgdmV6IHF1ZSBhIEZBQyDDqSBzaW3DqXRyaWNhLCB0ZW1vcyBxdWUgcGFyYSBvcyBncsOhZmljb3MgZGEgZGlhZ29uYWwgcHJpbmNpcGFsIGRhICJtYXRyaXogZGUgZ3LDoWZpY29zIiBhcyBhdXRvY29ycmVsYcOnw7VlcyBzw6NvIGlndWFpcyBwYXJhIGEgbWVzbWEgZGVmYXNhZ2VtIHBvc2l0aXZhIGUgbmVnYXRpdmEuIErDoSBwYXJhIG9zIGRlbWFpcyBncsOhZmljb3MsIGFzIGRlZmFzYWdlbnMgcG9zaXRpdmFzIGUgZXN0YXRpc3RpY2FtZW50ZSBzaWduaWZpY2FudGVzIGluZGljYW0gYSBkZXBlbmTDqm5jaWEgZGEgcHJpbWVpcmEgdmFyacOhdmVsIGVtIHJlbGHDp8OjbyBhcyBkZWZhc2FnZW5zIGRhIHNlZ3VuZGEgdmFyacOhdmVsLiBPcyBncsOhZmljb3MgbW9zdHJhbSBxdWUgYSByZWxhw6fDo28gZGluw6JtaWNhIMOpIGZyYWNhIGVudHJlIGFzIHRyw6pzIHPDqXJpZXMsIG1hcyBzdWFzIGNvcnJlbGHDp8O1ZXMgY29udGVtcG9yw6JuZWFzIHPDo28gZXN0YXRpc3RpY2FtZW50ZSBzaWduaWZpY2FudGVzLiAKCgojIyMjIyAqKlRFU1RFIERFIEVYSVNUw4pOQ0lBIERFIERFUEVORMOKTkNJQSBMSU5FQVIgRElOw4JNSUNBKioKClVtIHRlc3RlIGLDoXNpY28gbmEgYW7DoWxpc2UgZGUgc8OpcmllcyB0ZW1wb3JhaXMgbXVsdGl2YXJpYWRhcyDDqSBkZXRlY3RhciBhIGV4aXN0w6puY2lhIGRlIGRlcGVuZMOqbmNpYSBsaW5lYXIgZGluw6JtaWNhIG5vcyBkYWRvcy4gSXN0byBzaWduaWZpY2EgdGVzdGFyIGEgaGlww7N0ZXNlIG51bGEgJEhfMDokICRcYm9sZHN5bWJvbHtccmhvX3sxfX09Li4uPVxib2xkc3ltYm9se1xyaG9fe219fT1cYm9sZHN5bWJvbHswfSQgY29udHJhIGEgaGlww7N0ZXNlIGFsdGVybmF0aXZhICRIXzE6JCAkXGJvbGRzeW1ib2x7XHJob197aX19XG5lcVxib2xkc3ltYm9sezB9JCBwYXJhIGFsZ3VtICRpJCBzYXRpc2ZhemVuZG8gJDEgXGxlcSBpIFxsZXEgbSQgb25kZSAkbSQgw6kgdW0gaW50ZWlybyBwb3NpdGl2by4gCgpFbSBwYXJ0aWN1bGFyLCBhIGVzdGF0w61zdGljYSBtdWx0aXZhcmlhZGEgcGFyYSBvIHRlc3RlIGRlIExqdW5nLUJveCDDqSBkZWZpbmlkYSBjb21vOgoKJCQKUV9rIFxsZWZ0KG1ccmlnaHQpID0gVF57Mn1cc3VtX3tsPTF9XnttfXtcZnJhY3sxfXtULWx9dHJcbGVmdChcaGF0e1xib2xkc3ltYm9se1xHYW1tYX19X3tsfV57J30gXGhhdHtcYm9sZHN5bWJvbHtcR2FtbWF9fV97MH1eey0xfSBcaGF0e1xib2xkc3ltYm9se1xHYW1tYX19X3tsfSBcaGF0e1xib2xkc3ltYm9se1xHYW1tYX19X3swfV57LTF9IFxyaWdodCkgIH0gCiQkCgpvbmRlICR0cihcYm9sZHN5bWJvbHtBfSkkIMOpIG8gdHJhw6dvIGRhIG1hdHJpeiAkXGJvbGRzeW1ib2x7QX0kIGUgJFQkIMOpIG8gdGFtYW5obyBkYSBhbW9zdHJhLiBTb2JyZSBhIGhpcMOzdGVzZSBudWxhIGRlIHF1ZSAkXGJvbGRzeW1ib2x7XEdhbW1hX3sxfX09XGJvbGRzeW1ib2x7MH0kIHBhcmEgJGw+MCQgZSBhIGNvbmRpw6fDo28gZGUgcXVlICRcYm9sZHN5bWJvbHtyfV97dH0kIMOpIG5vcm1hbG1lbnRlIGRpc3RyaWJ1w61kbywgJFFfayBcbGVmdChtXHJpZ2h0KSQgw6kgYXNzaW50b3RpY2FtZW50ZSBkaXN0cmlidcOtZG8gY29tbyB1bWEgZGlzdHJpYnVpw6fDo28gUXVpLVF1YWRyYWRvIGNvbSAkbWteezJ9JCBncmF1cyBkZSBsaWJlcmRhZGUuIAoKUGFyYSBkZW1vbnN0cmFyIGEgZXN0YXTDrXN0aWNhICRRX2sgXGxlZnQobVxyaWdodCkkLCBjb25zaWRlcmFtb3MgYXMgdHLDqnMgYcOnw7VlcyBlc3R1ZGFkYXMuIE9idmlhbWVudGUsIGV4aXN0ZW0gdW1hIGNlcnRhIGRlcGVuZMOqbmNpYSBsaW5lYXIgZGluw6JtaWNhIGVudHJlIG9zIGRhZG9zIGRlIG1vZG8gcXVlIGVzcGVyYW1vcyBxdWUgYSBlc3RhdMOtc3RpY2EgZG8gdGVzdGUgcmVqZWl0ZSBhIGhpcMOzdGVzZSBudWxhIGRlIG7Do28gZXhpc3TDqm5jaWEgZGUgY29ycmVsYcOnw6NvIGNydXphZGEuIAoKT2JzZXJ2YW1vcyBxdWUgaMOhIGRlcGVuZMOqbmNpYSBsaW5lYXIgZGluw6JtaWNhIGVudHJlIG9zIGRhZG9zIGVtIGZ1bsOnw6NvIGRvIHAtdmFsb3Igc2VyIG11aXRvIHByw7N4aW1vIGRlIHplcm8gaW5kaWNhbmRvIHF1ZSDDqSBwb3Nzw612ZWwgcmVqZWl0YXIgYSBoaXDDs3Rlc2UgbnVsYSBhbyBuw612ZWwgZGUgc2lnbmlmaWPDom5jaWEgZGUgNVwlLgoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy53aWR0aD05LjUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjICBDT1JSRUxBw4fDg08gQ1JVWkFEQSAgIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBBcXVpLCBleGVjdXRhbW9zIG8gdGVzdGUgZGUgTGp1bmctQm94IHBhcmEgdmVyaWZpY2FyIGEgZXhpc3TDqm5jaWEKIyBkZSBkZXBlbmTDqm5jaWEgbGluZWFyIGRpbsOibWljYSBlbnRyZSBuYSBzw6lyaWUgdGVtcG9yYWwgbXVsdGl2YXJpYWRhLgojIFBhcmEgdGFudG8sIHVzYW1vcyBhIGZ1bsOnw6NvIG1xIGRvIHBhY290ZSBNVFMuIEFsw6ltIGRlIHVtYSB0YWJlbGEgY29tCiMgb3MgcmVzdWx0YWRvcyBkbyB0ZXN0ZSwgdGVtb3MgbyBncsOhZmljbyBjb20gbyBwLXZhbG9yIGRvIHRlc3RlIHBhcmEKIyBkaWZlcmVudGVzIGRlZmFzYWdlbnMgZGEgc8OpcmllIHRlbXBvcmFsIG11bHRpdmFyaWFkYS4gVGFsIGZ1bsOnw6NvIHRlbQojIG9zIHNlZ3VpbnRlcyBwYXLDom1ldHJvczoKIyAtIHg6IGEgc8OpcmllIHRlbXBvcmFsIG11bHRpdmFyaWFkYQojIC0gbGFnOiBxdWF0YXMgZGVmYXNhZ2VucyBzZXLDo28gdGVzdGFkYXMKTVRTOjptcSh4ID0gc3RvY2tzX3JldHVybnMsIGxhZyA9IDUpCmBgYAoKQSBlc3RhdMOtc3RpY2EgJFFfayBcbGVmdChtXHJpZ2h0KSQgw6kgdW0gdGVzdGUgY29uanVudG8gcGFyYSB2ZXJpZmljYXIgYXMgJG0kIG1hdHJpemVzIGRlIGNvcnJlbGHDp8OjbyBjcnV6YWRhIGRlICRcYm9sZHN5bWJvbHtyfV97dH0kLiBTZSBlbGUgcmVqZWl0YSBhIGhpcMOzdGVzZSBudWxhLCBlbnTDo28gZGV2ZW1vcyBjb25zdHJ1aXIgdW0gbW9kZWxvIG11bHRpdmFyaWFkbyBwYXJhIGFzIHPDqXJpZXMgZSBlc3R1ZGFyIGFzIHJlbGHDp8O1ZXMgZW50cmUgZWxhcy4gRW0gZnVuw6fDo28gZGlzc28sIGRpc2N1dGlyZW1vcyBuYXMgcHLDs3hpbWFzIGF1bGFzIHVtIHNpbXBsZXMgbW9kZWxvIHZldG9yaWFsIHBhcmEgbW9kZWxhciBhIGVzdHJ1dHVyYSBkYSBkaW7Dom1pY2EgZGUgdW1hIHPDqXJpZSB0ZW1wb3JhbCBmaW5hbmNlaXJhIG11bHRpdmFyaWFkYS4gCgojIyMjIyAqKlJFRkVSw4pOQ0lBUyoqCg==