1. A Expansão Pós-Crise (2008–2014)
1.1 O colchão externo: como o Brasil saiu da crise
Contextualizando historicamente, a crise de 2008 foi marcada por uma
extrema desconfiança no mercado. Com a quebra de instituições como o
Lehman Brothers - um dos maiores bancos de investimento do mundo -,
surgiu uma preocupação generalizada: o que poderia acontecer com o
sistema financeiro global? Em momentos de medo, ocorre o chamado
flight-to-quality, a corrida por ativos mais seguros, como o dólar. Com
isso, a demanda pela moeda americana aumenta abruptamente, pressionando
seu preço para cima.
No Gráfico 1, observa-se que o Brasil havia acumulado reservas
internacionais ao longo dos anos anteriores à crise. No momento do
choque, essas reservas recuaram, evidenciando seu uso como amortecedor.
A linha do câmbio em seu ponto mais alto corresponde exatamente ao
período em que as reservas estavam sendo consumidas, ilustrando a
relação entre os dois movimentos.
Gráfico 1:
A intervenção do Banco Central foi focada em resolver a escassez de
dólares no mercado. A principal tática foi o uso de vendas com
compromisso de recompra: o BC ofereceu dólares aos bancos com a garantia
de recomprá-los em data futura, sanando a falta de liquidez sem
comprometer permanentemente o estoque de reservas. De forma
complementar, o BC utilizou as reservas para suprir a escassez de
crédito externo no financiamento do comércio exterior - as chamadas
linhas de trade finance - que haviam sido cortadas pelos bancos
internacionais com a eclosão da crise. Sem esse suporte, os exportadores
brasileiros não teriam como financiar o intervalo entre a produção e o
recebimento das vendas ao exterior. Além disso, o BC utilizou o swap
cambial - um contrato que oferece proteção cambial sem desembolso
imediato de dólar físico -, instrumento essencial para ancorar
expectativas e estabilizar o câmbio no mercado futuro.
A atuação do Banco Central permitiu que o país mitigasse os efeitos
da crise de forma relativamente rápida, contendo o contágio. O vale do
ciclo foi datado no quarto trimestre de 2008, a partir do qual o Brasil
iniciou uma nova trajetória de expansão. Vale destacar que as datas do
CODACE são confirmadas com uma certa defasagem - em dezembro de 2008, a
população não tinha como saber que se iniciava uma trajetória de
expansão.
1.2 Os motores da expansão
A expansão brasileira não foi fruto de um único fator, mas de um
conjunto de variáveis agindo de forma articulada. Com o colchão externo
garantindo estabilidade, o crescimento de 2008–2014 foi puxado
internamente - consumo das famílias, expansão do crédito, formalização
do trabalho, e gasto público - impulsionaram conjuntamente a demanda
agregada.
1.2.1 Renda e consumo das famílias
Durante o período de expansão, o consumo das famílias cresceu de
forma sustentada e se firmou como um componente estável da demanda
agregada. Esse movimento é, ao mesmo tempo, causa e consequência do
ciclo: causa, porque a expansão do consumo elevou a demanda, estimulando
produção e contratações; consequência, porque o aumento do emprego e da
renda alimentou de volta a capacidade de consumir. O que destravou esse
ciclo, porém, não foi aleatório - esteve ligado à política de
valorização do salário mínimo.
A regra, negociada em 2007, fixou dois componentes para o reajuste
anual: (i) o INPC[^1] do período, que apenas repõe a inflação e,
portanto, não implica ganho real; e (ii) a variação do PIB defasada em
dois anos, que constitui o ganho real propriamente dito. Assim, o
reajuste de 2008 incorporou o PIB de 2006; o de 2009, o de 2007; o de
2010, o de 2008. A trajetória conjunta do salário mínimo real e do
consumo das famílias pode ser vista no gráfico 2.
[^1] Nota: Índice Nacional de Preços ao Consumidor, calculado pelo
IBGE. Mede a inflação da cesta de consumo das famílias com pessoa de
referência assalariada e rendimento entre 1 e 5 salários mínimos, em
áreas urbanas. É, portanto, o índice que reflete a inflação enfrentada
pela própria população afetada pelo reajuste do SM, daí sua escolha como
componente de reposição na regra.
Gráfico 2:
Vale destacar, ainda, que o salário mínimo não impacta apenas os
trabalhadores que recebem diretamente o piso. Seus efeitos se espalham
pela estrutura salarial de forma mais ampla. Categorias profissionais
com pisos definidos em múltiplos do SM, como engenheiros, médicos e
agrônomos, também têm seus rendimentos reajustados quando o piso
aumenta. Além disso, mesmo trabalhadores sem vínculo formal com o SM
tendem a reivindicar reajustes quando ele sobe em termos reais, já que o
valor relativo de seus próprios salários diminui em comparação ao
restante da estrutura salarial.
Dessa forma, ele funciona como uma referência importante para os
salários no Brasil, produzindo efeitos que vão muito além do grupo que
efetivamente recebe o piso. Porém, o aumento do consumo não pode ser
atribuído integralmente ao salário mínimo. Como se observa no gráfico 2,
a despesa do consumo cresce mais que o SM, sinal de que outro motor está
operando em paralelo.
Esse motor é a expansão do crédito, observada no gráfico 3.
Gráfico 3:
Como evidenciado no gráfico 3, a relação crédito/PIB total (linha
azul escuro) passou de 35,5% em 2008 para 56,5% em dezembro de 2013.
Como evidenciado no gráfico 3, a relação crédito/PIB total (linha
azul-escura) passou de 35,5% em 2008 para 56,5% em dezembro de 2013. A
expansão do crédito a pessoas físicas operou por meio de instrumentos
específicos: o crédito consignado com desconto direto em folha, o
financiamento de veículos com prazo alongado, o financiamento
imobiliário, o crédito pessoal e o cartão de crédito com parcelamento
sem juros. O efeito dessas medidas foi facilitar o acesso a bens
duráveis, eletrodomésticos, automóveis, e serviços antes restritos a
faixas mais altas de renda.
A linha de crédito a pessoas jurídicas (linha amarela) também avança
no período, de cerca de 19,1% para 30,5% do PIB. Parte dessa expansão se
deveu à atuação anticíclica dos bancos públicos após 2008, quando os
bancos privados se tornaram mais cautelosos diante da crise
internacional.
O resultado conjunto desses motores - salário mínimo em valorização
real e crédito ao consumidor em forte expansão - foi a consolidação de
um mercado de consumo no Brasil. Famílias de menor renda passaram a
acessar bens e serviços antes restritos, fenômeno também chamado de
“nova classe média”. Mais do que o aumento do consumo agregado, o que
ocorre é uma percepção generalizada de melhora, a sensação que sustenta
o ciclo e reforça a visão, na época, de que o Brasil vivia um período de
prosperidade. Do ponto de vista macroeconômico, contudo, cabe uma
ressalva: um crescimento sustentado por crédito e consumo funciona no
curto prazo, mas tem limites.
1.2.2 Mercado de trabalho
Outro motor relevante da expansão foi o mercado de trabalho. Como
mostra o gráfico 4, a taxa de desocupação medida pela PME[^2] caiu de
forma consistente ao longo do período. Em termos teóricos, uma população
mais empregada amplia a massa de renda disponível e, portanto, o espaço
para consumo - reforçando a tese de que a demanda doméstica foi o
principal vetor da expansão.
Gráfico 4:
A série bruta (linha amarela), no entanto, apresenta um padrão
sazonal independente do ciclo: queda no fim do ano, puxada por
contratações temporárias e pagamento do 13º, seguida de alta em janeiro.
Para analisar a tendência, utilizou-se a média móvel de 12 meses (linha
azul).
A média móvel evidencia duas fases. Nos primeiros meses de 2009, o
desemprego ainda sobe, refletindo as demissões puxadas pela crise
financeira internacional em 2008. A partir do início de 2010, a queda é
praticamente ininterrupta até o fim da expansão. No dado bruto, a PME
parte de 8,2% em janeiro de 2009, atinge o pico de 9% em março do mesmo
ano e chega a 5% em março de 2014.
[^2] Nota: Pesquisa Mensal de Emprego (PME), realizada pelo IBGE em
seis regiões metropolitanas (Belo Horizonte, São Paulo, Rio de Janeiro,
Recife, Salvador, e Porto Alegre). A PNAD Contínua (Pesquisa Nacional
por Amostra de Domicílios Contínua), hoje fonte de referência para a
taxa de desocupação, só foi iniciada em 2012, razão pela qual se optou
pela PME para cobrir o período analisado nesta seção.
A queda da desocupação, contudo, conta apenas parte da história. A
formalização do emprego também teve um papel importante na ampliação do
consumo.
Gráfico 5:
Como observado no gráfico 5, a parcela de trabalhadores com carteira
assinada inicia trajetória de expansão em 2004, saindo de 41% e
atingindo 52,6% em 2014. No mesmo período, o trabalho sem carteira recua
de 17,4% para 9,9%.
Além de garantir maior estabilidade de renda, a formalização do
trabalho amplia o acesso a benefícios - como crédito consignado, FGTS
que viabiliza o financiamento habitacional, 13º salário, e férias
remuneradas. Esse conjunto reduz a insegurança das famílias, aumentando
a propensão marginal a consumir.
Em outras palavras, a maior estabilidade da renda e das condições de
vida contribuiu para sustentar a expansão da demanda interna ao longo do
período.
1.2.3 Desempenho setorial
A análise do PIB funciona, aqui, como uma forma de consolidar os
movimentos observados até então. O Produto Interno Bruto cresceu de
forma sustentada ao longo de todo o ciclo, mas é necessário analisar o
que cresceu. O gráfico 6 desagrega o produto por setor.
Gráfico 6:
Serviços já respondiam pela maior fatia do PIB em 2009
(aproximadamente R$453 bilhões) e quase dobraram até o início de 2014
(R$831 bilhões). A indústria saiu de R$152 bilhões para R$282 bilhões,
enquanto a agropecuária passou de R$41 bilhões para R$74 bilhões. Em
termos absolutos, todos os setores cresceram. O ponto, porém, está nas
participações relativas. Em 2009, os serviços representavam
aproximadamente 70% do PIB, a indústria cerca de 23% e a agropecuária
aproximadamente 6%. Em 2014, esses números permaneceram praticamente
inalterados. A estrutura produtiva brasileira não se transformou ao
longo de cinco anos de expansão econômica.
Mesmo em um período de crescimento, já era possível identificar
fragilidades estruturais importantes. O ciclo de expansão sustentado por
crédito, consumo e formalização do trabalho não foi acompanhado por
mudanças relevantes na composição da economia.
1.3 As fragilidades ocultas
Mesmo em períodos de expansão, é possível identificar fragilidades
que eventualmente podem contribuir para uma crise futura. A teoria dos
ciclos econômicos parte a ideia de que recessões e expansões são
recorrentes, ainda que não periódicas - ou seja, não é possível saber
quando cada fase irá começar ou terminar, mas sabe-se que ambas tendem a
se alternar ao longo do tempo. Nesse sentido, períodos de prosperidade
não devem ser analisados apenas pelos seus resultados positivos de curto
prazo. O crescimento econômico pode ocultar desequilíbrios que só se
tornam plenamente visíveis quando o país entra em recessão. Assim,
analisar as fragilidades construídas durante a expansão ajuda a
compreender não apenas os fatores que contribuíram para a recessão
posterior, mas os próprios limites do crescimento do país.
1.3.1 Investimento produtivo
Um indicador extremamente relevante para analisar a sustentabilidade
do crescimento econômico é a Formação Bruta de Capital Fixo (FBCF), que
mede os investimentos realizados em ativos produtivos, como máquinas,
equipamentos, construção, e infraestrutura. Em geral, esse indicador
funciona como uma sinalização da capacidade futura de expansão da
produção e do aumento da produtividade da economia, podendo ser
observado no gráfico 7.
Gráfico 7:
O gráfico 7 apresenta a variação percentual anual da FBCF ao longo do
período. Após a crise internacional de 2008, observa-se uma forte
recuperação do investimento. A taxa, que estava próxima de -3,9% em
julho de 2009, saltou para valores positivos, atingindo cerca de 29% em
janeiro de 2010. Parte desse movimento é esperada, já que períodos
pós-crise costumam apresentar recuperações percentuais mais fortes,
especialmente porque o investimento tende a se retrair durante momentos
de instabilidade econômica.
O principal ponto de análise, porém, está no comportamento posterior.
Embora o ciclo de expansão brasileiro tenha se encerrado oficialmente em
2014, o pico do investimento ocorreu ainda no início de 2010. A partir
desse ponto, a trajetória da FBCF passa a apresentar desaceleração e
oscilações - atingindo inclusive crescimento negativo de -1,49% em julho
de 2012, mesmo dentro do período de expansão.
Isso sugere a ausência de um padrão de investimento produtivo: mesmo
em um cenário de crescimento econômico, o investimento não conseguiu
manter uma trajetória contínua de fortalecimento. Esse movimento é
relevante, porque o investimento produtivo é um dos principais
mecanismos capazes de ampliar a capacidade produtiva e elevar a
produtividade da economia no longo prazo. Assim, a desaceleração da
Formação Bruta de Capital Fixo antes mesmo do encerramento oficial do
ciclo de expansão já sinalizava limitações estruturais importantes da
economia brasileira.
1.3.2 Produtividade
Depois da análise do PIB, do emprego, do consumo, e do investimento
produtivo, cabe observar se o crescimento do período foi acompanhado por
ganhos de eficiência. Para isso, o gráfico 8 apresenta a Produtividade
Total dos Fatores (PTF) desde 1995, com o período de expansão em
destaque.
Gráfico 8:
A PTF é derivada de uma função de produção, que relaciona o produto
com os fatores utilizados na produção, que pode ser visto na equação
1.
Equação 1: \[
Y_t = A_t (u_t K_t)^{\alpha} L_t^{1-\alpha}
\]
Em que, - \(Y_t\) representa o
produto; - \(A_t\) representa a
Produtividade Total dos Fatores; - \(u_t
K_t\) representa o capital ajustado pela utilização da capacidade
instalada; - \(L_t\) representa o fator
trabalho; - \(\alpha\) representa a
participação do capital na produção; - \(1-\alpha\) representa a participação do
trabalho na produção.
Isolando A, obtém-se a PTF, na equação 2.
Equação 2: \[
A_t = \frac{Y_t}{(u_t K_t)^{\alpha} L_t^{1-\alpha}}
\]
No entanto, a interpretação da PTF muda quando se incorpora o ajuste
de capital humano. Sem esse ajuste, parte do ganho associado à maior
escolaridade ou qualificação da força de trabalho pode aparecer
indevidamente como aumento de produtividade. Para corrigir isso, o fator
trabalho passa a ser ajustado pelo Índice de Capital Humano (ICH),
evidenciado na equação 3.
Equação 3: \[
L_t = H_t \times \left(\frac{ICH_t}{100}\right)
\]
Em que: - \(H_t\) representa as
horas trabalhadas; - \(ICH_t\)
representa o Índice de Capital Humano. Voltando ao gráfico 8, a PTF sem
ajuste de capital humano (linha amarela) apresenta uma trajetória de
crescimento praticamente contínua desde 1995. Durante o período de
expansão econômica iniciado em 2008, esse crescimento se intensifica,
mantendo-se elevado até aproximadamente 2011, quando a série passa a
apresentar certa estagnação e, posteriormente, queda. Observando apenas
essa série, seria possível concluir que o período foi acompanhado por
ganhos relevantes de produtividade. No entanto, essa interpretação se
altera quando se analisa a PTF com ajuste de capital humano (linha
azul). Ao incorporar o ICH ao fator trabalho, parte do crescimento
anteriormente atribuído à produtividade passa a ser explicada pela maior
qualificação da mão de obra. Durante todo o período de expansão, a série
com ajuste permaneceu abaixo da série sem ajuste, indicando que os
ganhos efetivos de produtividade foram limitados. Isso significa que
parte importante do crescimento observado no período esteve associada ao
aumento da qualificação dos trabalhadores, e não a ganhos estruturais de
eficiência produtiva. Assim, a análise da PTF reforça que o ciclo de
expansão brasileiro não foi sustentado por aumentos consistentes de
produtividade no longo prazo. O crescimento ocorreu, mas sem
transformação suficiente na capacidade da economia de produzir mais
utilizando os mesmos fatores de produção. Esse resultado é coerente com
os demais indicadores analisados anteriormente. A desaceleração do
investimento produtivo e a limitação dos ganhos de produtividade sugerem
que o modelo de crescimento do período possuía fragilidades estruturais
importantes, sendo sustentado principalmente pela expansão do consumo e
do mercado interno.
1.4 O esgotamento do ciclo
Tendo em vista os fatores analisados anteriormente - tanto os motores
da expansão quanto as fragilidades estruturais acumuladas ao longo do
período -, torna-se possível observar o início do esgotamento do ciclo
econômico brasileiro. O crescimento sustentado principalmente pela
expansão da demanda interna e do consumo passou a encontrar limites em
um contexto de desaceleração do investimento produtivo e de ganhos
restritos de produtividade. Nesse contexto, o gráfico 9 apresenta a
evolução da Necessidade de Financiamento do Setor Público (NFSP) e da
Dívida Bruta do Governo Geral entre 2008 e 2014.
Gráfico 9:
A NFSP permaneceu negativa durante grande parte do período analisado,
indicando a presença de superávits primários. Ao longo do ciclo, porém,
observa-se uma redução desses superávits. Isso significa que, embora o
setor público ainda apresentasse resultado positivo, sua capacidade de
poupança fiscal vinha diminuindo. A dívida bruta do governo geral
apresentou oscilações ao longo do período posterior à crise de 2008,
alternando momentos de redução e aumento. No entanto, a partir de março
de 2014 - marco que sinaliza o encerramento oficial do ciclo de expansão
-, a trajetória da dívida passa a apresentar crescimento contínuo. Nesse
momento, a dívida bruta correspondia a aproximadamente 51,79%,
alcançando cerca de 56,28% em dezembro de 2014. O comportamento da NFSP
acompanha esse movimento. Em abril de 2014, o indicador ainda se
encontrava em aproximadamente -1,68% do PIB, indicando superávit
primário. No entanto, ao longo dos meses seguintes, a necessidade de
financiamento passa a aumentar continuamente, até atingir 0,56% do PIB
em dezembro de 2014 - primeiro valor positivo observado em todo o
período analisado. Esses movimentos reforçam a percepção de esgotamento
do ciclo econômico brasileiro. O crescimento sustentado ao longo dos
anos anteriores passou a encontrar limites em um contexto marcado pela
desaceleração do investimento produtivo, pela limitação dos ganhos de
produtividade e pela deterioração gradual das contas públicas. Assim, os
indicadores fiscais reforçam a ideia de que o modelo de crescimento do
período possuía fragilidades estruturais importantes, sustentando-se
principalmente pela expansão do consumo e da demanda interna, sem
avanços suficientes em produtividade e investimento capazes de garantir
sua sustentação no longo prazo.
2. A Grande Recessão (2014–2016)
2.1 Contexto e datação oficial da recessão
Conforme já apresentado na introdução, a recessão brasileira recente
foi datada pelo CODACE entre o segundo trimestre de 2014 (pico) e o
quarto trimestre de 2016 (vale), totalizando onze trimestres
consecutivos de contração da atividade. Em datação mensal, divulgada
posteriormente pelo Comitê, o pico ocorreu em março de 2014 e o vale em
dezembro de 2016. A queda acumulada do PIB no período, medida pela série
dessazonalizada, foi da ordem de 7 a 8%, magnitude que se aproxima de
11% quando avaliada em termos per capita.
Em termos de comparação histórica, trata-se de uma das recessões mais
severas já registradas no Brasil. Foi a mais longa desde o início da
datação trimestral do CODACE em 1980, uma das mais profundas dos últimos
150 anos de história econômica do país, e foi seguida pela recuperação
mais lenta já documentada — o nível pré-crise do PIB per capita só seria
recuperado anos depois.
No Gráfico 10, é possível visualizar a interação entre o PIB, a Selic
e o IPCA ao longo do ciclo recessivo: a área sombreada delimita o
período datado pelo CODACE (2T/2014 a 4T/2016), durante o qual o PIB
registrou variações negativas sucessivas enquanto a inflação atingia
10,67% em 2015 e a Selic era elevada até 14,25% ao ano.
Gráfico 10
2.2 Os fatores que levaram à recessão
A recessão de 2014–2016 não foi resultado de um único choque, mas da
convergência de três vetores que se reforçaram mutuamente: o esgotamento
do ciclo expansivo anterior, um choque externo desfavorável e uma crise
de credibilidade da política econômica.
O primeiro vetor foi a herança do ciclo 2008–2014, discutida na seção
anterior. O modelo de crescimento baseado em consumo, crédito
subsidiado, desonerações setoriais e expansão do gasto público —
consolidado a partir de 2011–2012 sob o rótulo de Nova Matriz Econômica
— deixou o país com déficits primários crescentes, inflação represada
por preços administrados e margens de lucro deprimidas no setor privado.
Quando o ciclo começou a desacelerar, esses desequilíbrios estreitaram o
espaço de manobra da política econômica.
O segundo vetor foi externo. A partir de 2011, e com mais intensidade
em 2014–2015, encerrou-se o superciclo das commodities que havia
sustentado parte do crescimento dos anos 2000. A desaceleração da
economia chinesa derrubou os preços internacionais e deteriorou os
termos de troca brasileiros, comprimindo a receita de exportações e
reduzindo o investimento no setor extrativo. O choque externo não
explica isoladamente a profundidade da recessão — países
latino-americanos igualmente expostos ao ciclo de commodities, como
Chile e Peru, sofreram desacelerações muito mais brandas — mas atuou
como amplificador das vulnerabilidades já presentes.
O terceiro vetor foi a perda de credibilidade da política econômica
em 2015. A descoberta das pedaladas fiscais minou a confiança nos
números oficiais; o ajuste fiscal anunciado por Joaquim Levy em uma
economia já em queda combinou-se com o realinhamento dos preços
administrados, o que levou o IPCA a 10,67% em 2015 e forçou a Selic a
subir até 14,25%. A perda do grau de investimento pela Standard &
Poor’s em setembro de 2015, seguida pelas demais agências, encareceu o
financiamento e elevou o risco-país. Sobreposto a tudo isso, o avanço da
Operação Lava Jato paralisou investimentos no setor de óleo e gás e na
construção, e o processo de impeachment iniciado em dezembro de 2015
paralisou a agenda econômica.
A combinação desses três vetores produziu o que a literatura costuma
chamar de balance sheet recession: uma contração em que famílias,
empresas e setor público precisam reduzir endividamento simultaneamente,
o que ajuda a entender tanto a profundidade quanto a lentidão da
recuperação posterior.
2.3 Mercado de trabalho, investimento e produtividade
2.3.1 O colapso do investimento
Embora o desemprego seja a face mais visível de uma recessão, foi o
investimento que liderou a queda da atividade entre 2014 e 2016, em
sintonia com o que sugere a teoria dos ciclos: a Formação Bruta de
Capital Fixo (FBCF) é tipicamente o componente mais volátil do PIB e o
primeiro a reagir à deterioração das expectativas.
Na variação anual, a FBCF começou a desacelerar ainda em 2014,
registrando contração de 4,4% no ano. A queda aprofundou-se para -13,9%
em 2015 e mais -12,1% em 2016. Olhando para a dinâmica trimestral,
conforme mostra o Gráfico 11, o componente acumulou onze trimestres
consecutivos de queda, com recuos que chegaram a -7,0% em um único
trimestre (2T/2015). No acumulado do pico ao vale, o investimento recuou
cerca de 27%, e a taxa de investimento (FBCF/PIB) caiu de 20,9% em 2013
para 16,4% em 2016 — um dos níveis mais baixos da série histórica do
indicador, que continuaria caindo até 14,6% em 2017.
A lógica econômica por trás desse colapso conecta-se diretamente aos
problemas acumulados no ciclo anterior. A redução das margens de lucro
das empresas, num contexto de elevação do custo unitário do trabalho e
câmbio apreciado, já vinha desestimulando novos projetos desde
2012–2013. Quando a esses fatores se somaram a alta da Selic, a elevação
do risco-país, a paralisação dos projetos da Petrobras pela Operação
Lava Jato e o congelamento dos desembolsos do BNDES — que havia sido
peça central do financiamento do investimento durante a expansão —, o
investimento entrou em queda livre. Os indicadores de utilização da
capacidade instalada da indústria, apresentados no Gráfico 12, caíram
para mínimos históricos, sinalizando que não havia razão econômica para
ampliar o estoque de capital.
Gráfico 11
Gráfico 12
2.3.2 O ajuste do mercado de trabalho
O mercado de trabalho confirmou na recessão um padrão clássico do
ciclo econômico: foi a última variável a entrar e a última a sair da
crise. No primeiro trimestre de 2014, a taxa de desocupação medida pela
PNAD Contínua estava em 7,2%, próxima do mínimo histórico da série. A
partir de meados de 2014, com a queda do investimento e a desaceleração
da indústria, o desemprego começou a subir, mas inicialmente de forma
lenta.
Essa lentidão inicial reflete o que a literatura chama de labor
hoarding: as empresas seguraram suas equipes na expectativa de uma
recuperação rápida, absorvendo no curto prazo a queda da demanda como
redução de produtividade e horas trabalhadas. Quando ficou claro que a
recessão seria longa, os ajustes vieram de forma abrupta. Como mostra o
Gráfico 13, a taxa de desocupação saltou para 9,1% no último trimestre
de 2015, atingiu 12,1% no quarto trimestre de 2016 e alcançou o pico de
13,9% no primeiro trimestre de 2017 — já fora do período recessivo
oficial, confirmando justamente a defasagem do mercado de trabalho em
relação ao ciclo do PIB.
Dois aspectos do ajuste merecem destaque, pois ajudam a entender
legados duradouros da crise. O primeiro é o aumento da informalidade:
parte significativa da recuperação posterior do emprego se deu por
vínculos sem carteira ou por conta própria, com remuneração mais baixa e
produtividade média menor. O segundo é a queda da massa de rendimentos
reais — resultado combinado de menor ocupação e da inflação elevada de
2015–2016, que comprimiu o poder de compra dos salários e alimentou um
ciclo recessivo no consumo, tema da próxima seção.
Gráfico 13
2.3.3 Produtividade: o problema estrutural revelado pela
recessão
A recessão expôs uma fragilidade que estava parcialmente mascarada
pela expansão anterior: a estagnação da produtividade. Os indicadores
construídos pelo Observatório da Produtividade Regis Bonelli (FGV/IBRE)
mostram que, entre 2010 e 2014, enquanto a produtividade por hora
trabalhada crescia a um ritmo modesto de cerca de 1,5% ao ano, a
Produtividade Total dos Fatores (PTF) avançava apenas 0,5% ao ano —
sinal de que o crescimento estava sendo sustentado mais por acumulação
de fatores (capital e trabalho) do que por ganhos de eficiência.
Durante a recessão, a PTF teve queda expressiva, visível no Gráfico
14 pela inflexão do índice a partir de 2014 e pelo ponto particularmente
severo no quarto trimestre de 2015. A produtividade por hora também
recuou. O ponto analiticamente mais relevante, porém, é o que veio
depois: pela primeira vez em sua história recente, o Brasil saiu de uma
recessão profunda sem registrar ganhos significativos de produtividade
na recuperação. Em ciclos anteriores, a saída da crise costumava vir
acompanhada de aumento da eficiência, à medida que as empresas
reorganizavam processos e o capital se realocava para usos mais
produtivos. Dessa vez, isso não ocorreu.
Esse comportamento ajuda a explicar a frustração com o ritmo do
crescimento pós-2017 e dialoga diretamente com a discussão do momento
atual: sem ganhos consistentes de produtividade, a economia brasileira
passa a depender cada vez mais da acumulação de fatores para crescer, o
que reforça os limites estruturais ao ciclo de expansão.
Gráfico 14
2.4 Consumo, crédito e confiança
2.4.1 A reversão do consumo das famílias
O consumo das famílias, que havia sido o motor do ciclo expansivo de
2008–2014, sofreu uma reversão expressiva durante a recessão. Como
evidencia o Gráfico 15, pela série trimestral dessazonalizada, o
agregado registrou sete quedas consecutivas entre o 1º trimestre de 2015
e o 3º trimestre de 2016. Os recuos chegaram a 1,9% em um único
trimestre, no 2º trimestre de 2015, e a queda acumulada no período foi
de aproximadamente 6%, configurando a contração mais longa e intensa do
consumo das famílias na série histórica recente.
A magnitude desse movimento é macroeconomicamente decisiva porque o
consumo das famílias responde por aproximadamente dois terços do PIB
pela ótica da despesa. Quando esse componente entra em queda,
dificilmente outros agregados conseguem compensar, e a contração se
generaliza.
A reversão foi resultado da combinação de fatores discutidos nas
seções anteriores. A queda da renda real do trabalho, decorrente do
aumento do desemprego e da inflação de dois dígitos em 2015, comprimiu o
poder de compra. A elevação da Selic encareceu o crédito ao consumidor,
que será analisado na próxima subseção. E o endividamento elevado das
famílias — herança do ciclo de crédito da década anterior — limitou a
capacidade de absorção do choque por meio de novos empréstimos. O
resultado foi um ciclo recessivo no consumo que se retroalimentou: queda
do emprego comprime a renda, que comprime o consumo, que comprime a
produção e o emprego novamente.
Gráfico 15
2.4.2 A retração do crédito
O crédito, que havia funcionado como combustível da expansão
anterior, comportou-se na recessão como amplificador da queda. Conforme
se observa no Gráfico 16, o estoque total de crédito do Sistema
Financeiro Nacional, que vinha crescendo continuamente desde meados dos
anos 2000, recuou em termos reais e caiu como proporção do PIB — de
cerca de 53,7% no fim de 2015 para 49,3% no fim de 2016.
Três fatores explicam essa reversão. O primeiro é a alta da Selic,
que elevou as taxas de juros ao tomador final a patamares proibitivos:
os juros médios do crédito livre para pessoa física chegaram a cerca de
71,5% ao ano em 2016. O segundo é a deterioração da percepção de risco
do sistema financeiro diante da queda da atividade e do aumento da
inadimplência, sobretudo entre empresas. O terceiro é a retração do
crédito direcionado, particularmente do BNDES, que reverteu o forte
crescimento dos desembolsos observado no ciclo anterior — movimento
associado tanto ao ajuste fiscal quanto à reorientação da política de
crédito a partir de 2015.
O efeito combinado foi um processo de desalavancagem simultânea de
famílias e empresas, que se prolongou pelos anos seguintes ao fim da
recessão e ajuda a explicar a lentidão da retomada. Em uma economia em
que o crédito havia sido um componente central do crescimento, a sua
reversão eliminou um dos principais canais de financiamento da demanda
agregada.
Gráfico 16
2.4.3 Confiança e incerteza
Um aspecto distintivo da recessão de 2014–2016, em comparação com
episódios anteriores, é o papel central das expectativas e da incerteza.
Como ilustra o Gráfico 17, os indicadores de confiança da FGV/IBRE — em
particular o Índice de Confiança Empresarial (ICE) e o Índice de
Confiança do Consumidor (ICC) — atingiram mínimos históricos entre o
final de 2015 e o início de 2016, em níveis inferiores aos observados no
auge da crise internacional de 2008–2009. Indicadores de incerteza, como
o Indicador de Incerteza da Economia (IIE-Br) da FGV, também registraram
níveis recordes no mesmo período, com pico em setembro de 2015.
A deterioração das expectativas é macroeconomicamente relevante
porque cria um canal próprio de transmissão da crise. Diante de cenários
incertos, empresas postergam decisões de investimento e famílias
aumentam a poupança precaucionária, comprimindo simultaneamente a FBCF e
o consumo — ou seja, ampliando o efeito recessivo dos demais choques
pela via expectacional.
A perda de credibilidade da política econômica em 2015 alimentou
diretamente esses indicadores. A revisão da meta de superávit primário
para déficit, a sucessão de trocas no comando do Ministério da Fazenda
(Levy → Nelson Barbosa → Henrique Meirelles) e as incertezas do processo
de impeachment funcionaram como ruídos contínuos que dificultavam a
formação de expectativas estáveis. Assim, a crise política não atuou
apenas como um pano de fundo da recessão, mas como um vetor concreto de
transmissão dos problemas para a atividade econômica real.
Gráfico 17
2.5 PIB e a profundidade da queda da atividade
A síntese de todos os movimentos analisados nas seções anteriores
aparece nas Contas Nacionais. O PIB brasileiro registrou variações
anuais de +0,5% em 2014, -3,5% em 2015 e -3,6% em 2016, com a economia
encolhendo por onze trimestres consecutivos quando se examina a série
dessazonalizada. O Gráfico 18 torna visível essa sequência: as colunas
escuras delimitam exatamente os onze trimestres consecutivos de
contração entre o 2T/2014 e o 4T/2016 datados pelo CODACE.
Pela ótica da despesa, a contração foi liderada pela FBCF — cuja
contribuição negativa para o PIB chegou a cerca de -2,7 pontos
percentuais em 2015 — e pelo consumo das famílias. Apenas as exportações
líquidas e o consumo do governo apresentaram contribuições não negativas
em alguns trimestres, sendo as exportações beneficiadas pela depreciação
cambial e o consumo do governo limitado pelo aperto fiscal de 2015. Pela
ótica da oferta, a queda foi puxada pela indústria, com destaque para a
indústria de transformação e a construção civil — esta última
especialmente afetada pela paralisação de obras vinculadas à Operação
Lava Jato.
Em termos per capita, a queda foi ainda mais severa, aproximando-se
de 11% acumulados quando descontado o crescimento populacional. O choque
foi suficiente para fazer o PIB per capita brasileiro retroceder ao
nível observado por volta de 2008 — ou seja, a recessão anulou quase
todo o avanço de bem-estar agregado conquistado durante o ciclo
expansivo discutido na seção anterior.
Gráfico 18
2.6 Transição para a recuperação lenta
Tecnicamente, a recessão terminou no quarto trimestre de 2016, com o
vale identificado pelo CODACE em dezembro daquele ano. Mas, como ocorre
em recessões profundas e de natureza estrutural, o fim da contração não
significou o fim da crise. A recuperação que se iniciou em 2017
mostrou-se a mais lenta da história econômica brasileira recente: o
crescimento médio do PIB nos anos seguintes ficou em torno de 1,3% ao
ano, ritmo claramente insuficiente para recompor as perdas.
Quatro fatores ajudam a explicar essa lentidão. O primeiro é o
caráter de balance sheet recession: como visto nas seções anteriores,
famílias, empresas e setor público entraram simultaneamente em processo
de redução de endividamento, o que prolongou o ciclo de desalavancagem
por anos e limitou a reação da demanda agregada. O segundo é a
fragilidade fiscal, que restringiu o uso de estímulos via gasto público
e, ao contrário, exigiu reformas como a Emenda Constitucional do Teto de
Gastos (EC 95/2016) e a Reforma Trabalhista (2017) apenas para conter a
deterioração estrutural. O terceiro são as cicatrizes (scars) deixadas
pela recessão sobre o capital humano e o estoque de capital físico:
trabalhadores desocupados por longos períodos perdem produtividade e
empregabilidade, e investimentos não realizados não são facilmente
recuperados em ciclos subsequentes — ponto que dialoga diretamente com a
estagnação da produtividade discutida em 2.3.3. O quarto são as
instabilidades posteriores que interromperam a retomada antes que ela se
consolidasse: a greve dos caminhoneiros em 2018, a transição política
daquele ano e, mais à frente, o choque da pandemia em 2020.
A recessão de 2014–2016 deixa, assim, lições importantes para a
leitura dos ciclos econômicos brasileiros. A primeira é que expansões
puxadas por consumo e crédito, sustentadas por estímulos fiscais e
parafiscais, tendem a esgotar-se quando os fundamentos de produtividade
não acompanham o ritmo da demanda. A segunda é que choques externos não
são, sozinhos, determinantes — eles amplificam vulnerabilidades internas
pré-existentes. A terceira é que a credibilidade da política econômica é
um insumo macroeconômico relevante: sua perda eleva a incerteza, deprime
expectativas e transforma o que seria uma desaceleração em recessão
profunda.
Essas lições servem de pano de fundo para a próxima seção, em que
será examinado o momento atual da economia brasileira — buscando avaliar
em que medida os arranjos institucionais e os fundamentos
macroeconômicos pós-recessão alteraram a dinâmica cíclica do país, e
quais dos legados de 2014–2016 ainda condicionam o ciclo presente.
3. Brasil atual
De acordo com as datas oficiais do CODACE, o último ciclo econômico
brasileiro - caracterizado como uma recessão - foi encerrado no segundo
trimestre de 2020. Até o momento da publicação deste relatório, não
houve divulgação oficial sobre o período subsequente, de modo que não se
sabe formalmente se a economia brasileira se encontra em uma fase de
expansão ou recessão. No entanto, como discutido anteriormente,
independentemente da fase do ciclo econômico, é possível identificar
padrões, pontos fortes e desequilíbrios estruturais na economia. Assim,
esta seção busca analisar alguns indicadores do Brasil atual à luz do
histórico apresentado ao longo do relatório, observando quais
fragilidades persistem e quais transformações podem ser percebidas na
economia brasileira.
3.1 Estrutura produtiva e investimento
A análise do ciclo atual começa pela composição setorial do produto.
O ritmo da expansão importa, mas o que define se ela é sustentável no
longo prazo é a estrutura por trás: quais setores estão puxando o
crescimento, em que proporção, e se essa proporção se altera ao longo do
tempo. Assim, a questão central é observar se a economia brasileira está
passando por uma transformação estrutural ou se continua crescendo
dentro do mesmo padrão observado em ciclos anteriores.
Gráfico 19:
Como observado no gráfico X, no terceiro trimestre de 2020, o setor
de serviços (linha azul escura) respondia por aproximadamente R$ 1,15
trilhão do PIB brasileiro, enquanto a indústria (linha amarela)
representava cerca de R$ 405 bilhões e a agropecuária (linha azul clara)
aproximadamente R$ 100 bilhões. No período mais recente da série,
correspondente ao quarto trimestre de 2025, os serviços passaram para
aproximadamente R$2,04 trilhões, enquanto a indústria atingiu cerca de
R$648 bilhões. A agropecuária, por sua vez, permaneceu próxima de R$100
bilhões, embora essa comparação deve considerar os efeitos de
sazonalidade característicos do setor.
Em termos absolutos, todos os setores cresceram ao longo do período
analisado. O mais relevante, porém, está na composição relativa do PIB.
O setor de serviços continua concentrando mais de 60% da atividade
econômica brasileira e ampliou ainda mais sua participação ao longo da
série, enquanto a indústria permanece relativamente estagnada em termos
percentuais. O problema brasileiro, então, não é simplesmente a
predominância do setor de serviços - característica comum também a
várias economias, inclusive desenvolvidas. O problema está na ausência
de avanço relativo da indústria e na limitada transformação estrutural
da economia. Assim como observado no ciclo de expansão de 2008–2014, o
crescimento recente da economia brasileira continua concentrado em
setores que já eram predominantes anteriormente, sem mudanças
significativas na composição produtiva do país.
A composição setorial da economia ajuda a entender como o país
cresce. O investimento, por outro lado, ajuda a entender se esse
crescimento possui capacidade de sustentação no longo prazo. Nesse
sentido, o gráfico X apresenta a evolução da Formação Bruta de Capital
Fixo (FBCF) em conjunto com a taxa Selic entre 2020 e 2025.
Gráfico 20:
Como observado no gráfico X, a FBCF continua apresentando forte
oscilação ao longo do período, sem estabelecer uma trajetória
consistente de crescimento. Mesmo nos momentos de recuperação do
investimento, o movimento não se sustenta por longos períodos,
reproduzindo um padrão já observado em ciclos anteriores da economia
brasileira.
O pico da série ocorreu em abril de 2021, quando a variação anual da
FBCF atingiu aproximadamente 26,25%. No entanto, o movimento perdeu
força rapidamente, chegando a -6,84% em junho de 2023. Mesmo nos dados
mais recentes, a instabilidade permanece evidente: em julho de 2025, a
FBCF registrava crescimento de aproximadamente 2,32%, mas voltou para
-3,12% em outubro do mesmo ano. Assim, a principal característica
observada na série é justamente a ausência de uma trajetória sustentada
de investimento. A FBCF apresenta momentos pontuais de recuperação, mas
sem continuidade suficiente para consolidar um ciclo consistente de
expansão do investimento produtivo no país.
Parte dessa dinâmica pode ser associada ao patamar elevado da taxa
Selic no Brasil. Em alguns momentos do gráfico, é possível observar que
a redução dos juros é acompanhada por melhora da Formação Bruta de
Capital Fixo. No entanto, mesmo durante esses períodos de queda, a taxa
básica de juros permanece em níveis elevados. Em outras palavras, muitas
vezes a Selic reduz de 15% para 14%, mas continua representando um custo
alto para decisões de investimento produtivo.
Somado a isso, o ambiente de incerteza fiscal e econômica reduz ainda
mais os incentivos ao investimento. O resultado é uma trajetória de
investimento instável e marcada por fortes oscilações, reproduzindo um
padrão semelhante ao observado no ciclo de expansão de 2008–2014.
3.2 Mercado de trabalho e produtividade
A análise do mercado de trabalho no ciclo atual exige um olhar para
além da taxa de desocupação. Embora essa seja a métrica mais conhecida e
utilizada, sua queda isoladamente não é suficiente para indicar, por si
só, um mercado de trabalho saudável ou sustentável. Por isso, é
importante analisá-la em conjunto com a taxa de subutilização, que
oferece uma leitura mais ampla das condições efetivas da economia.
A taxa de subutilização engloba não apenas as pessoas desocupadas,
mas também aquelas que trabalham menos horas do que gostariam - a
chamada subocupação por insuficiência de horas - e a força de trabalho
potencial, composta por pessoas que gostariam de trabalhar, mas não
procuraram emprego por diferentes motivos, como dificuldades de
deslocamento, ausência de creche para os filhos ou incompatibilidade de
horários com a faculdade. Por reunir essas três dimensões, a taxa de
subutilização funciona como um termômetro mais sensível das condições do
mercado de trabalho.
A análise conjunta dos dois indicadores é importante porque
diferentes combinações entre eles revelam estados distintos da economia.
Em alguns períodos de recessão, por exemplo, a taxa de desocupação pode
permanecer relativamente baixa, transmitindo a impressão de um mercado
de trabalho aquecido. Entretanto, se a subutilização permanecer elevada,
o quadro real ainda indica a existência de trabalhadores subocupados ou
fora da força de trabalho, mas ainda disponíveis para trabalhar.
Gráfico 21:
No caso brasileiro recente, porém, o movimento observado foi de queda
simultânea tanto da taxa de desocupação quanto da taxa de subutilização.
Em julho de 2020, a taxa de desocupação encontrava-se em 14,9%, enquanto
a taxa de subutilização atingia 30,4%. Em outubro de 2025, ambos os
indicadores haviam recuado de forma expressiva: a desocupação chegou a
5,1% e a subutilização a 13,4%.
A trajetória de queda é evidente nas duas séries, refletindo uma
redução consistente do desemprego e da força de trabalho subutilizada ao
longo do período. Entretanto, no caso brasileiro atual, essa
configuração não é necessariamente positiva. As duas taxas encontram-se
simultaneamente em níveis muito baixos, indicando que há pouca folga
disponível no mercado de trabalho. Em outras palavras, grande parte das
pessoas que poderiam ser incorporadas ao mercado já se encontra ocupada
ou procurando emprego ativamente.
Esse cenário tende a gerar pressões salariais, que posteriormente
podem se traduzir em pressões inflacionárias, dificultando a condução da
política monetária e impondo limites adicionais ao crescimento
econômico. Em economias com ganhos robustos de produtividade, um mercado
de trabalho aquecido pode ser sustentado por aumentos da capacidade
produtiva. No caso brasileiro, contudo, essa preocupação se torna mais
relevante justamente porque o desempenho da produtividade permanece
limitado.
Nesse sentido, o gráfico 22 apresenta a evolução recente da
Produtividade Total dos Fatores (PTF).
Gráfico 22:
Como observado no gráfico 22, a PTF apresentada já incorpora o ajuste
por capital humano - cuja importância foi discutida anteriormente -,
garantindo que os movimentos observados reflitam ganhos efetivos de
eficiência produtiva, e não simplesmente o aumento da escolaridade ou da
qualificação da força de trabalho. Além disso, adicionou-se uma média
móvel de quatro trimestres (linha amarela), que permite visualizar a
tendência da série ao suavizar oscilações pontuais.
A série inicia em julho de 2020 em um patamar elevado, de
aproximadamente 92 pontos, valor que pode ser associado ao contexto
pós-pandêmico, marcado pelo retorno gradual da atividade econômica e por
padrões atípicos de trabalho. A partir desse ponto, a PTF apresenta uma
queda significativa, atingindo 87,3 já em abril de 2021, sinalizando que
o nível elevado observado no início da série não se sustentou.
Ao longo do período, observam-se algumas recuperações pontuais, como
entre julho de 2022 e janeiro de 2023, e entre outubro de 2023 e janeiro
de 2024. Entretanto, tanto a média móvel quanto a própria série
evidenciam que, apesar desses movimentos intermediários, a tendência
geral da PTF ao longo do período foi de queda. O dado mais recente,
referente ao quarto trimestre de 2025, registra a PTF em 83,9, patamar
significativamente inferior aos 92 observados no início da série
analisada.
Esse resultado é particularmente preocupante quando combinado com o
quadro do mercado de trabalho discutido anteriormente. A economia
brasileira encontra-se em uma situação em que praticamente todas as
pessoas que poderiam estar trabalhando já se encontram ocupadas, mas, ao
mesmo tempo, essas pessoas não estão se tornando mais produtivas ao
longo do tempo. Em outras palavras, o país atingiu o limite da
acumulação de fatores no mercado de trabalho sem que isso fosse
acompanhado por ganhos de eficiência produtiva. Esse cenário impõe
restrições importantes ao crescimento de longo prazo. Sem aumentos
consistentes de produtividade, a economia perde a capacidade de produzir
mais utilizando os mesmos recursos, reproduzindo, e agravando, uma das
principais fragilidades estruturais já identificadas no ciclo de
expansão de 2008–2014.
3.3 Confiança, incerteza e limites do crescimento
Para além dos indicadores de atividade, mercado de trabalho e
produtividade, a análise do ciclo atual se beneficia da observação de
indicadores qualitativos que captam a percepção de empresários e
consumidores sobre o estado da economia. O gráfico 23 apresenta o Índice
de Confiança Empresarial (ICE) e o Índice de Confiança do Consumidor
(ICC), ambos calculados pela FGV/IBRE, em conjunto com o Nível de
Utilização da Capacidade Instalada (NUCI), que mede o quanto a indústria
está efetivamente operando em relação ao seu potencial de produção.
Gráfico 23:
Como observado no gráfico 23, o NUCI (linha azul clara) mantém-se em
patamares relativamente elevados ao longo de todo o período, o que
indica baixa ociosidade na indústria. Esse comportamento pode parecer
positivo à primeira vista, mas deve ser lido com cautela: uma indústria
operando próxima do seu limite de capacidade pode gerar pressão de
preços pelo lado da demanda, dado que qualquer aumento do consumo
encontra dificuldades de ser absorvido pela produção corrente. Em outras
palavras, o NUCI elevado não significa, automaticamente, uma indústria
em expansão - significa apenas que não há folga produtiva para absorver
choques de demanda.
O ICE (linha amarela), que mede a confiança empresarial, segue em
níveis fracos, principalmente no que diz respeito às expectativas
futuras dos empresários. Esse comportamento é macroeconomicamente
relevante porque a confiança empresarial é um dos principais
determinantes das decisões de investimento e contratação. Quando os
empresários não enxergam um horizonte claro de expansão da demanda, eles
tendem a postergar projetos, limitar a expansão da produção e manter
quadros de pessoal mais enxutos - reforçando, na prática, a fragilidade
do investimento já observada anteriormente.
O ICC (linha azul escura), por sua vez, apresenta trajetória de
recuperação ao longo do período. O movimento é consistente com a melhora
do mercado de trabalho discutida em 3.2, que ampliou tanto a ocupação
quanto a renda das famílias. Apesar dessa recuperação, contudo, o índice
permanece abaixo de 100 pontos - patamar considerado neutro -,
sinalizando que o consumidor brasileiro segue cauteloso quanto às
perspectivas futuras, mesmo diante de uma situação corrente mais
favorável.
A leitura conjunta dos três indicadores revela uma contradição
importante do ciclo atual: a economia mostra resiliência no presente,
refletida na utilização da capacidade instalada e na melhora do consumo,
mas opera com baixa confiança em relação ao futuro. Esse descompasso
entre o desempenho corrente e as expectativas futuras impõe um limite
adicional ao crescimento, pois reduz os incentivos para que empresas
ampliem seus investimentos e para que famílias aumentem o consumo de
bens duráveis - perpetuando, assim, as fragilidades estruturais já
identificadas ao longo desta seção.
3.4 Situação fiscal e dívida pública
Atualmente, não é possível analisar a situação econômica brasileira
sem passar pela questão da dívida pública. O endividamento do governo
geral encontra-se em um patamar elevado, próximo de 80% do PIB, e a
trajetória dos indicadores fiscais nos últimos anos reforça a
preocupação com a sustentabilidade das contas públicas. O gráfico 24
apresenta a evolução da Necessidade de Financiamento do Setor Público
(NFSP) e da Dívida Bruta do Governo Geral entre 2020 e 2025.
Gráfico 24:
Como observado no gráfico 24, as barras amarelas representam a NFSP -
sendo que valores positivos correspondem a déficits primários do
governo, e valores negativos a superávits. A linha azul escura, por sua
vez, mostra a evolução da dívida bruta do governo geral como percentual
do PIB. Desde julho de 2023, o Brasil tem registrado déficits primários
praticamente contínuos, o que significa que as receitas do governo não
têm sido suficientes para cobrir seus gastos correntes, excluídos os
juros da dívida. Entre novembro e dezembro de 2024, observa-se uma
redução do tamanho desses déficits, e ao longo de 2025 os déficits têm
se mantido em níveis mais baixos. Ainda assim, a situação fiscal
brasileira permanece preocupante.
A redução do déficit é, sem dúvida, um movimento positivo. No
entanto, é importante notar que a dívida pública brasileira já se
encontra em patamar elevado - chegando em quase 80% do PIB como pode ser
visto na linha azul -, e isso faz com que ela apresente uma dinâmica de
crescimento praticamente autônoma. Mesmo que o governo conseguisse zerar
completamente seus gastos discricionários, a dívida continuaria a
crescer, impulsionada pela combinação entre um crescimento econômico
baixo e juros estruturalmente elevados. Em outras palavras, o resultado
primário deixa de ser suficiente, isoladamente, para estabilizar a
trajetória da dívida quando o diferencial entre a taxa de juros e a taxa
de crescimento da economia é amplo e persistente.
Esse quadro fiscal precisa ser lido em conjunto com os indicadores
discutidos nas seções anteriores. A economia brasileira encontra-se em
uma situação na qual a estrutura produtiva não se transformou, o
investimento permanece instável, o mercado de trabalho está aquecido sem
reservas de mão de obra disponível, e a produtividade segue em
trajetória de queda. Esse conjunto de fragilidades estruturais limita a
capacidade de crescimento do país no longo prazo - e, justamente por
isso, retroalimenta a deterioração fiscal: sem crescimento robusto, a
relação dívida/PIB tende a se elevar mesmo na ausência de novos déficits
expressivos.
O resultado é um cenário em que as contas públicas se deterioram não
apenas pelo lado do gasto, mas também pela própria fragilidade
estrutural da economia brasileira em gerar crescimento sustentado.
Conclusão
A análise histórica dos ciclos econômicos brasileiros se mostra
fundamental para a compreensão do momento atual da economia. Ao longo
deste relatório, foram examinados o ciclo de expansão de 2008–2014, a
recessão de 2014–2016 e a fase iniciada após o segundo trimestre de
2020, buscando identificar não apenas os movimentos de cada período,
mas, sobretudo, os padrões estruturais que se repetem ao longo do tempo.
Essa abordagem permite observar que muitas das fragilidades
identificadas na economia brasileira atual têm raízes em ciclos
anteriores, e que sua persistência impõe limites importantes ao
crescimento de longo prazo.
A situação atual da economia brasileira é preocupante. O crescimento
permanece em ritmo baixo, a indústria opera próxima do limite da
capacidade instalada, o mercado de trabalho encontra-se aquecido, com
taxas de desocupação e subutilização em níveis mínimos, e a
produtividade total dos fatores segue em trajetória de queda. Esse
conjunto de indicadores aponta para uma economia que, embora apresente
resiliência no curto prazo, encontra-se estagnada em termos estruturais
— com pouca folga de capacidade produtiva, sem ganhos consistentes de
eficiência e com fragilidades fiscais persistentes. O Brasil precisa,
portanto, encontrar mecanismos para crescer de forma sustentável, o que
exige, necessariamente, uma perspectiva de longo prazo voltada ao
aumento da produtividade, à transformação estrutural da economia e à
ampliação do investimento produtivo.
Quanto à fase em que a economia brasileira efetivamente se encontra,
ainda não há definição oficial. O último ciclo datado pelo CODACE foi
encerrado no segundo trimestre de 2020 e, até o momento da publicação
deste relatório, em maio de 2026, não houve divulgação de novas datas -
de modo que não é possível afirmar formalmente se o país segue em
expansão ou se já transitou para uma nova fase recessiva.
Independentemente da datação, contudo, o ponto central da análise
permanece o mesmo. Se o Brasil ainda se encontra em expansão, as
fragilidades observadas são exatamente as mesmas que precederam a
recessão de 2014–2016: baixa produtividade, investimento instável,
estrutura produtiva pouco alterada e contas públicas fragilizadas. Se
uma nova recessão já estiver em curso, essas mesmas fragilidades estão
entre suas principais causas.
Em qualquer das hipóteses, a conclusão é a mesma. Os problemas
estruturais que limitam o crescimento da economia brasileira não são
novos: foram identificados no ciclo de expansão de 2008–2014, expostos
com nitidez pela recessão de 2014–2016 e seguem presentes no ciclo
atual. Enquanto essas questões estruturais não forem efetivamente
enfrentadas - sobretudo no que diz respeito à produtividade e ao
investimento produtivo - a economia brasileira tende a permanecer presa
em ciclos curtos de crescimento moderado seguidos por recessões
profundas, sem conseguir consolidar uma trajetória de expansão
sustentável no longo prazo.
Referências
ABEL, Andrew B.; BERNANKE, Ben S.; CROUSHORE, Dean. Macroeconomia. 6.
ed. São Paulo: Pearson Addison Wesley, 2008.AGÊNCIA BRASIL. Fitch
rebaixa nota e Brasil perde grau de investimento. Brasília: EBC, 2015.
Disponível em: https://agenciabrasil.ebc.com.br/economia/noticia/2015-12/fitch-rebaixa-brasil-e-pais-perde-grau-de-investimento.
Acesso em: 25 maio 2026.BALASSIANO, Marcel. Recessão brasileira
(2014-2016): uma análise por meio do método do controle sintético do
PIB, PIB per capita, taxa de investimento e taxa de desemprego. Blog do
IBRE, 2018. Disponível em: https://blogdoibre.fgv.br/posts/recessao-brasileira-2014-2016-uma-analise-por-meio-do-metodo-do-controle-sintetico-do-pib-pib.
Acesso em: 25 maio 2026.BANCO CENTRAL DO BRASIL. Sistema Gerenciador de
Séries Temporais (SGS): séries de crédito, Selic e indicadores
monetários. Brasília: BCB, 2024. Disponível em: https://www3.bcb.gov.br/sgspub/. Acesso em: 25 maio
2026.BARRETO, Flávio Ataliba; AVELINO, Pedro; FRANÇA, João Mário Santos
de. Novas evidências sobre o peso do crédito nas famílias brasileiras.
Blog do IBRE, 2026. Disponível em: https://blogdoibre.fgv.br/posts/novas-evidencias-sobre-o-peso-do-credito-nas-familias-brasileiras.
Acesso em: 25 maio 2026.COMITÊ DE DATAÇÃO DE CICLOS ECONÔMICOS (CODACE).
Cronologia de Ciclos da Economia Brasileira. Rio de Janeiro: FGV IBRE,
2024. Disponível em: https://portalibre.fgv.br/codace-cronologia. Acesso em:
25 maio 2026.CRISE econômica brasileira de 2014. In: WIKIPÉDIA: a
enciclopédia livre. [S. l.], 2025. Disponível em: https://pt.wikipedia.org/wiki/Crise_econ%C3%B4mica_brasileira_de_2014.
Acesso em: 25 maio 2026.DEPARTAMENTO INTERSINDICAL DE ESTATÍSTICA E
ESTUDOS SOCIOECONÔMICOS. Nota técnica nº 79: política de valorização do
salário mínimo — valor para 2009. São Paulo: DIEESE, 2009. Disponível
em: https://www.dieese.org.br/notatecnica/2009/notatec79SalMin2009.html.
Acesso em: 25 maio 2026.DEPARTAMENTO INTERSINDICAL DE ESTATÍSTICA E
ESTUDOS SOCIOECONÔMICOS. Nota técnica nº 135: a evolução do crédito na
economia brasileira 2008–2014. São Paulo: DIEESE, 2014. Disponível em:
https://www.dieese.org.br/notatecnica/2014/notaTec135Credito.pdf.
Acesso em: 25 maio 2026.E-CÁLCULOS. Histórico do salário mínimo. [s.l.:
s.n., s.d.]. Disponível em: https://www.ecalculos.com.br/utilitarios/historico-salario-minimo.php.
Acesso em: 25 maio 2026.FUNDAÇÃO GETULIO VARGAS. Instituto Brasileiro de
Economia (FGV IBRE). Indicadores trimestrais de PTF: 4º trimestre de
2025. Rio de Janeiro: FGV IBRE, 2026. Disponível em: https://ibre.fgv.br/sites/ibre.fgv.br/files/arquivos/u65/indicadores_trimestrais_de_ptf_-_4t2025.pdf.
Acesso em: 25 maio 2026.FUNDAÇÃO GETULIO VARGAS. Instituto Brasileiro de
Economia (FGV IBRE). Observatório da Produtividade Regis Bonelli. Rio de
Janeiro: FGV IBRE, 2024. Disponível em: https://ibre.fgv.br/observatorio-produtividade. Acesso
em: 25 maio 2026.FUNDAÇÃO GETULIO VARGAS. Instituto Brasileiro de
Economia (FGV IBRE). Portal do Ciclo Econômico. Rio de Janeiro: FGV
IBRE, 2024. Disponível em: https://ciclo-economico-ibre.fgv.br/. Acesso em: 25 maio
2026.FUNDAÇÃO GETULIO VARGAS. Instituto Brasileiro de Economia (FGV
IBRE). Resultados dos indicadores de produtividade do trabalho no quarto
trimestre de 2025. Blog do IBRE, 2026. Disponível em: https://blogdoibre.fgv.br/posts/resultados-dos-indicadores-de-produtividade-do-trabalho-no-quarto-trimestre-de-2025.
Acesso em: 25 maio 2026.FUNDAÇÃO GETULIO VARGAS. Instituto Brasileiro de
Economia (FGV IBRE). Sobre ciclos econômicos. Rio de Janeiro: FGV IBRE,
2024. Disponível em: https://portalibre.fgv.br/sobre-ciclos-economicos.
Acesso em: 25 maio 2026.FUNDAÇÃO GETULIO VARGAS. Instituto Brasileiro de
Economia (FGV IBRE). Sondagens, Índices de Confiança e Indicadores de
Atividade. Rio de Janeiro: FGV IBRE, [2026]. Disponível em: https://portalibre.fgv.br. Acesso em: 25 maio
2026.INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA. Contas Nacionais
Trimestrais. Rio de Janeiro: IBGE, 2024. Disponível em: https://www.ibge.gov.br/estatisticas/economicas/contas-nacionais/9300-contas-nacionais-trimestrais.html.
Acesso em: 25 maio 2026.INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA.
Evolução do Mercado de Trabalho: retrospectiva 2003–2014. Rio de
Janeiro: IBGE, 2015. Disponível em: https://ftp.ibge.gov.br/Trabalho_e_Rendimento/Pesquisa_Mensal_de_Emprego/Evolucao_Mercado_Trabalho/retrospectiva2003_2014.pdf.
Acesso em: 25 maio 2026.INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA.
Índice Nacional de Preços ao Consumidor (INPC). Rio de Janeiro: IBGE,
[2026]. Disponível em: https://www.ibge.gov.br/estatisticas/economicas/precos-e-custos/9258-indice-nacional-de-precos-ao-consumidor.html.
Acesso em: 25 maio 2026.INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA.
Pesquisa Mensal de Emprego (PME). Rio de Janeiro: IBGE, [2026].
Disponível em: https://www.ibge.gov.br/estatisticas/sociais/trabalho/9180-pesquisa-mensal-de-emprego.html.
Acesso em: 25 maio 2026.INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA.
Pesquisa Nacional por Amostra de Domicílios Contínua (PNAD Contínua).
Rio de Janeiro: IBGE, [2026]. Disponível em: https://sidra.ibge.gov.br/Tabela/1846. Acesso em: 25
maio 2026.INSTITUTO BRASILEIRO DE GEOGRAFIA E ESTATÍSTICA. Sistema IBGE
de Recuperação Automática (SIDRA): Tabelas 5932 (Contas Nacionais
Trimestrais) e 4099 (PNAD Contínua). Rio de Janeiro: IBGE, 2024.
Disponível em: https://sidra.ibge.gov.br/. Acesso em: 25 maio
2026.RANDO, Imira Taira. O Brasil e a crise financeira: políticas
econômicas (2008–2014). Trabalho de conclusão de curso — Faculdade de
Ciências e Letras, Universidade Estadual Paulista “Júlio de Mesquita
Filho”, Campus de Araraquara, [s.d.]. Disponível em: https://repositorio.unesp.br/server/api/core/bitstreams/bf788161-c4c8-4db3-905e-0791ec8e4e55/content.
Acesso em: 25 maio 2026.VELOSO, Fernando; FEIJÓ, Janaína; BARBOSA FILHO,
Fernando de Holanda; RUHE, Ana Paula. Índice de Capital Humano (ICH)
Anual. Rio de Janeiro: FGV IBRE, jun. 2023. Disponível em: https://ibre.fgv.br/sites/ibre.fgv.br/files/arquivos/u65/ich_anual_final.pdf.
Acesso em: 25 maio 2026.
LS0tDQp0aXRsZTogIkJyYXNpbDogZW0gZXhwYW5zw6NvIG91IHJlY2Vzc8Ojbz8gVW1hIGFuw6FsaXNlIGhpc3TDs3JpY2EgZG9zIGNpY2xvcyBlY29uw7RtaWNvcyBicmFzaWxlaXJvcyINCmF1dGhvcjogIlJvYmVydGEgTG9iYXRvIGUgVGhpYWdvIEZyYWdvc28iDQpkYXRlOiAiMjAyNi0wNS0yNSINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IHRydWUNCiAgICB0b2NfZmxvYXQ6IHRydWUNCiAgICB0aGVtZTogbHVtZW4NCiAgICBoaWdobGlnaHQ6IHRhbmdvDQogICAgY29kZV9mb2xkaW5nOiBzaG93DQogICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICBwZGZfZG9jdW1lbnQ6DQogICAgdG9jOiB0cnVlDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KLS0tDQpgYGBgYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSkNCmxpYnJhcnkoZmxleHRhYmxlKQ0KbGlicmFyeShvZmZpY2VyKQ0KbGlicmFyeShHZXRCQ0JEYXRhKQ0KbGlicmFyeShodG1sd2lkZ2V0cykNCmxpYnJhcnkod2Vic2hvdDIpDQpsaWJyYXJ5KHpvbykNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeShwbG90bHkpDQpsaWJyYXJ5KHNpZHJhcikNCmxpYnJhcnkoaXBlYWRhdGFyKQ0KbGlicmFyeShxdWFudG1vZCkNCmxpYnJhcnkoc2NhbGVzKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KHJiY2IpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkod3JpdGV4bCkNCmxpYnJhcnkoaHR0cikNCmxpYnJhcnkodGlkeXIpDQpsaWJyYXJ5KGZyZWRyKQ0KZGFkb3NfZGlyIDwtICJDOi9Vc2Vycy9yb2Jlci9Eb3dubG9hZHMiDQpgYGBgYGBgDQoNCiMgSW50cm9kdcOnw6NvIA0KQ2ljbG9zIGVjb27DtG1pY29zIHPDo28gZmx1dHVhw6fDtWVzIGPDrWNsaWNhcyBkYSBhdGl2aWRhZGUgZWNvbsO0bWljYSBtYXJjYWRhcyBwZWxhIGFsdGVybsOibmNpYSBlbnRyZSBmYXNlcyBkZSBleHBhbnPDo28gZSByZWNlc3PDo28uIFN1YSBjYXJhY3RlcsOtc3RpY2EgY2VudHJhbCDDqSBxdWUsIGVtYm9yYSByZWNvcnJlbnRlcywgZXNzYXMgZmx1dHVhw6fDtWVzIG7Do28gc8OjbyBwZXJpw7NkaWNhczogbsOjbyBow6EgcmVndWxhcmlkYWRlIHF1ZSBwZXJtaXRhIHByZXZlciBjb20gcHJlY2lzw6NvIHF1YW5kbyB1bWEgZmFzZSBjb21lw6dhIG91IHRlcm1pbmEuIEFpbmRhIGFzc2ltLCBhIGFuw6FsaXNlIGRvcyBjaWNsb3MgcGFzc2Fkb3MgcGVybWl0ZSBpZGVudGlmaWNhciBwYWRyw7VlcywgcmVjb25oZWNlciBmcmFnaWxpZGFkZXMgcXVlIHNlIHJlcGV0ZW0gZSBjb21wcmVlbmRlciBtZWxob3IgYSBkaW7Dom1pY2EgZGEgZWNvbm9taWEgYnJhc2lsZWlyYSBhbyBsb25nbyBkbyB0ZW1wby4NCg0KQSBUYWJlbGEgMSBhcHJlc2VudGEgYXMgZGF0YXMgb2ZpY2lhaXMgZG9zIGNpY2xvcyBlY29uw7RtaWNvcyBicmFzaWxlaXJvcywgY29uZm9ybWUgYSBkYXRhw6fDo28gZG8gQ29taXTDqiBkZSBEYXRhw6fDo28gZGUgQ2ljbG9zIEVjb27DtG1pY29zIChDT0RBQ0UpLCBkYSBGR1Y6DQoNCioqVGFiZWxhIDE6KioNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KY29kYWNlX3JlbCA8LSBkYXRhLmZyYW1lKA0KICBwaWNvID0gYygiTm92ZW1icm8gMTk4MCAoSVYpIiwgIk1hcsOnbyAxOTg3IChJKSIsICJKdWxobyAxOTg5IChJSUkpIiwNCiAgICAgICAgICAgIkphbmVpcm8gMTk5NSAoSSkiLCAiTm92ZW1icm8gMTk5NyAoSVYpIiwgIkphbmVpcm8gMjAwMSAoSSkiLA0KICAgICAgICAgICAiTm92ZW1icm8gMjAwMiAoSVYpIiwgIkFnb3N0byAyMDA4IChJSUkpIiwgIk1hcsOnbyAyMDE0IChJKSIsDQogICAgICAgICAgICI0wrogVHJpbS4gZGUgMjAxOSIpLA0KICB2YWxlID0gYygiRmV2ZXJlaXJvIDE5ODMgKEkpIiwgIk91dHVicm8gMTk4OCAoSVYpIiwgIkRlemVtYnJvIDE5OTEgKElWKSIsDQogICAgICAgICAgICJTZXRlbWJybyAxOTk1IChJSUkpIiwgIkZldmVyZWlybyAxOTk5IChJKSIsICJTZXRlbWJybyAyMDAxIChJSUkpIiwNCiAgICAgICAgICAgIkp1bmhvIDIwMDMgKElJKSIsICJEZXplbWJybyAyMDA4IChJVikiLCAiRGV6ZW1icm8gMjAxNiAoSVYpIiwNCiAgICAgICAgICAgIjLCuiBUcmltLiBkZSAyMDIwIiksDQogIHBpY29fdmFsZSA9IGMoIjI4IiwgIjIwIiwgIjMwIiwgIjkiLCAiMTYiLCAiOSIsICI4IiwgIjUiLCAiMzQiLCAi4oCTIiksDQogIG1lc2VzX2VudHJlID0gYygi4oCTIiwgIjQ4IiwgIjgiLCAiMzYiLCAiMjUiLCAiMjIiLCAiMTMiLCAiNjEiLCAiNjIiLCAi4oCTIiksDQogIHZhbGVfYW50ZXJpb3IgPSBjKCLigJMiLCAiNjgiLCAiMzgiLCAiNDUiLCAiNDEiLCAiMzEiLCAiMjEiLCAiNjYiLCAiMTE0IiwgIuKAkyIpLA0KICBwaWNvX2FudGVyaW9yID0gYygi4oCTIiwgIjc2IiwgIjI4IiwgIjY2IiwgIjM0IiwgIjM4IiwgIjIyIiwgIjY5IiwgIjY3IiwgIuKAkyIpDQopDQoNCm1lZGlhX3JvdyA8LSBkYXRhLmZyYW1lKA0KICBwaWNvID0gIkR1cmHDp8OjbyBtw6lkaWEgKGVtIG1lc2VzKSIsDQogIHZhbGUgPSAiIiwNCiAgcGljb192YWxlID0gIjE3LDciLA0KICBtZXNlc19lbnRyZSA9ICIzNCw0IiwNCiAgdmFsZV9hbnRlcmlvciA9ICI1MywwIiwNCiAgcGljb19hbnRlcmlvciA9ICI1MCwwIg0KKQ0KDQp0YWJlbGFfcmVsIDwtIGJpbmRfcm93cyhjb2RhY2VfcmVsLCBtZWRpYV9yb3cpDQoNCmZ0X3JlbCA8LSBmbGV4dGFibGUodGFiZWxhX3JlbCkgJT4lDQogIHNldF9oZWFkZXJfbGFiZWxzKA0KICAgIHBpY28gPSAiUGljbyIsDQogICAgdmFsZSA9ICJWYWxlIiwNCiAgICBwaWNvX3ZhbGUgPSAiTWVzZXMgZG9cbnBpY28gYW8gdmFsZSIsDQogICAgbWVzZXNfZW50cmUgPSAiTWVzZXMgZW50cmUgbyB2YWxlXG5hbnRlcmlvciBlIGVzdGUgcGljbyIsDQogICAgdmFsZV9hbnRlcmlvciA9ICJEbyB2YWxlIGFudGVyaW9yXG5hdMOpIGVzdGUgdmFsZSIsDQogICAgcGljb19hbnRlcmlvciA9ICJEbyBwaWNvIGFudGVyaW9yXG5hdMOpIGVzdGUgcGljbyINCiAgKSAlPiUNCiAgIyBGdW5kbyBicmFuY28gZ2VyYWwNCiAgYmcoYmcgPSAiI0ZGRkZGRiIsIHBhcnQgPSAiYWxsIikgJT4lDQogIGNvbG9yKGNvbG9yID0gIiM0NDQ0NDQiLCBwYXJ0ID0gImJvZHkiKSAlPiUNCiAgIyBIZWFkZXIgbWluaW1hbGlzdGENCiAgYmcoYmcgPSAiI0ZGRkZGRiIsIHBhcnQgPSAiaGVhZGVyIikgJT4lDQogIGNvbG9yKGNvbG9yID0gIiMwMjAyM0MiLCBwYXJ0ID0gImhlYWRlciIpICU+JQ0KICBib2xkKHBhcnQgPSAiaGVhZGVyIikgJT4lDQogICMgRGVzdGFxdWUgZXhwYW5zw6NvIDIwMDgNCiAgYmcoaSA9IDgsIGJnID0gIiNGRkY4RTciKSAlPiUNCiAgY29sb3IoaSA9IDgsIGNvbG9yID0gIiMwMjAyM0MiKSAlPiUNCiAgYm9sZChpID0gOCkgJT4lDQogICMgRGVzdGFxdWUgcmVjZXNzw6NvIDIwMTQNCiAgYmcoaSA9IDksIGJnID0gIiNFOEVBRjAiKSAlPiUNCiAgY29sb3IoaSA9IDksIGNvbG9yID0gIiMwMjAyM0MiKSAlPiUNCiAgYm9sZChpID0gOSkgJT4lDQogICMgTGluaGEgbcOpZGlhDQogIGJnKGkgPSBucm93KHRhYmVsYV9yZWwpLCBiZyA9ICIjRjVGNUY1IikgJT4lDQogIGNvbG9yKGkgPSBucm93KHRhYmVsYV9yZWwpLCBjb2xvciA9ICIjNDQ0NDQ0IikgJT4lDQogIGJvbGQoaSA9IG5yb3codGFiZWxhX3JlbCkpICU+JQ0KICBpdGFsaWMoaSA9IG5yb3codGFiZWxhX3JlbCkpICU+JQ0KICAjIEJvcmRhcyBtaW5pbWFsaXN0YXMNCiAgYm9yZGVyX3JlbW92ZSgpICU+JQ0KICBobGluZShpID0gMSwgYm9yZGVyID0gZnBfYm9yZGVyKGNvbG9yID0gIiMwMjAyM0MiLCB3aWR0aCA9IDEuNSksIHBhcnQgPSAiaGVhZGVyIikgJT4lDQogIGhsaW5lX3RvcChib3JkZXIgPSBmcF9ib3JkZXIoY29sb3IgPSAiIzAyMDIzQyIsIHdpZHRoID0gMS41KSwgcGFydCA9ICJoZWFkZXIiKSAlPiUNCiAgaGxpbmVfYm90dG9tKGJvcmRlciA9IGZwX2JvcmRlcihjb2xvciA9ICIjQ0NDQ0NDIiwgd2lkdGggPSAwLjUpLCBwYXJ0ID0gImJvZHkiKSAlPiUNCiAgIyBMaW5oYXMgc2VwYXJhZG9yYXMgc3VhdmVzDQogIGhsaW5lKGkgPSBjKDE6MTApLCBib3JkZXIgPSBmcF9ib3JkZXIoY29sb3IgPSAiI0VFRUVFRSIsIHdpZHRoID0gMC41KSwgcGFydCA9ICJib2R5IikgJT4lDQogICMgQWxpbmhhbWVudG8NCiAgYWxpZ24oYWxpZ24gPSAiY2VudGVyIiwgcGFydCA9ICJhbGwiKSAlPiUNCiAgYWxpZ24oaiA9IDE6MiwgYWxpZ24gPSAibGVmdCIsIHBhcnQgPSAiYWxsIikgJT4lDQogICMgRm9udGUNCiAgZm9udChmb250bmFtZSA9ICJBcmlhbCIsIHBhcnQgPSAiYWxsIikgJT4lDQogIGZvbnRzaXplKHNpemUgPSAxMCwgcGFydCA9ICJib2R5IikgJT4lDQogIGZvbnRzaXplKHNpemUgPSAxMCwgcGFydCA9ICJoZWFkZXIiKSAlPiUNCiAgcGFkZGluZyhwYWRkaW5nLnRvcCA9IDYsIHBhZGRpbmcuYm90dG9tID0gNiwgcGFydCA9ICJhbGwiKSAlPiUNCiAgIyBGb250ZS9jYXB0aW9uDQogIGFkZF9mb290ZXJfbGluZXMoIkZvbnRlOiBDT0RBQ0UvRkdWLUlCUkUuIikgJT4lDQogIGNvbG9yKGNvbG9yID0gIiM4ODg4ODgiLCBwYXJ0ID0gImZvb3RlciIpICU+JQ0KICBmb250c2l6ZShzaXplID0gOSwgcGFydCA9ICJmb290ZXIiKSAlPiUNCiAgaXRhbGljKHBhcnQgPSAiZm9vdGVyIikgJT4lDQogIGF1dG9maXQoKQ0KDQpmdF9yZWwNCmBgYA0KDQpFc3RlIHJlbGF0w7NyaW8gYWRvdGEgdW1hIGFib3JkYWdlbSBoaXN0w7NyaWNhLiBBbmFsaXNhLXNlLCBpbmljaWFsbWVudGUsIG8gY2ljbG8gZGUgZXhwYW5zw6NvIGRlIDIwMDjigJMyMDE0IGUgYSByZWNlc3PDo28gZGUgMjAxNOKAkzIwMTYsIGJ1c2NhbmRvIGlkZW50aWZpY2FyIG9zIG1vdG9yZXMgZGUgY3Jlc2NpbWVudG8gZSBhcyBmcmFnaWxpZGFkZXMgZXN0cnV0dXJhaXMgZGUgY2FkYSBwZXLDrW9kby4gRW0gc2VndWlkYSwgb2JzZXJ2YS1zZSBxdWFpcyBkZXNzZXMgcGFkcsO1ZXMgcGVyc2lzdGVtLCBzZSB0cmFuc2Zvcm1hcmFtIG91IGZvcmFtIHN1cGVyYWRvcyBubyBCcmFzaWwgYXR1YWwuIA0KDQpBIGVzY29saGEgcG9yIHVtYSBhbsOhbGlzZSBoaXN0w7NyaWNhIG1haXMgYXByb2Z1bmRhZGEgcGFydGUgZGEgcHJlbWlzc2EgZGUgcXVlIG11aXRhcyBkYXMgcXVlc3TDtWVzIGVzdHJ1dHVyYWlzIHF1ZSBhZmV0YW0gYSBhdGl2aWRhZGUgZWNvbsO0bWljYSBicmFzaWxlaXJhIGhvamUgdMOqbSByYcOtemVzIGVtIGNpY2xvcyBhbnRlcmlvcmVzLiBDb21wcmVlbmTDqi1sYXMgZXhpZ2UsIHBvcnRhbnRvLCBvbGhhciBwYXJhIHRyw6FzIGFudGVzIGRlIGludGVycHJldGFyIG8gcHJlc2VudGUuDQoNCiMgMS4gQSBFeHBhbnPDo28gUMOzcy1DcmlzZSAoMjAwOOKAkzIwMTQpDQojIyAxLjEgTyBjb2xjaMOjbyBleHRlcm5vOiBjb21vIG8gQnJhc2lsIHNhaXUgZGEgY3Jpc2UNCg0KQ29udGV4dHVhbGl6YW5kbyBoaXN0b3JpY2FtZW50ZSwgYSBjcmlzZSBkZSAyMDA4IGZvaSBtYXJjYWRhIHBvciB1bWEgZXh0cmVtYSBkZXNjb25maWFuw6dhIG5vIG1lcmNhZG8uIENvbSBhIHF1ZWJyYSBkZSBpbnN0aXR1acOnw7VlcyBjb21vIG8gTGVobWFuIEJyb3RoZXJzIC0gdW0gZG9zIG1haW9yZXMgYmFuY29zIGRlIGludmVzdGltZW50byBkbyBtdW5kbyAtLCBzdXJnaXUgdW1hIHByZW9jdXBhw6fDo28gZ2VuZXJhbGl6YWRhOiBvIHF1ZSBwb2RlcmlhIGFjb250ZWNlciBjb20gbyBzaXN0ZW1hIGZpbmFuY2Vpcm8gZ2xvYmFsPyBFbSBtb21lbnRvcyBkZSBtZWRvLCBvY29ycmUgbyBjaGFtYWRvIGZsaWdodC10by1xdWFsaXR5LCBhIGNvcnJpZGEgcG9yIGF0aXZvcyBtYWlzIHNlZ3Vyb3MsIGNvbW8gbyBkw7NsYXIuIENvbSBpc3NvLCBhIGRlbWFuZGEgcGVsYSBtb2VkYSBhbWVyaWNhbmEgYXVtZW50YSBhYnJ1cHRhbWVudGUsIHByZXNzaW9uYW5kbyBzZXUgcHJlw6dvIHBhcmEgY2ltYS4gDQoNCk5vIEdyw6FmaWNvIDEsIG9ic2VydmEtc2UgcXVlIG8gQnJhc2lsIGhhdmlhIGFjdW11bGFkbyByZXNlcnZhcyBpbnRlcm5hY2lvbmFpcyBhbyBsb25nbyBkb3MgYW5vcyBhbnRlcmlvcmVzIMOgIGNyaXNlLiBObyBtb21lbnRvIGRvIGNob3F1ZSwgZXNzYXMgcmVzZXJ2YXMgcmVjdWFyYW0sIGV2aWRlbmNpYW5kbyBzZXUgdXNvIGNvbW8gYW1vcnRlY2Vkb3IuIEEgbGluaGEgZG8gY8OibWJpbyBlbSBzZXUgcG9udG8gbWFpcyBhbHRvIGNvcnJlc3BvbmRlIGV4YXRhbWVudGUgYW8gcGVyw61vZG8gZW0gcXVlIGFzIHJlc2VydmFzIGVzdGF2YW0gc2VuZG8gY29uc3VtaWRhcywgaWx1c3RyYW5kbyBhIHJlbGHDp8OjbyBlbnRyZSBvcyBkb2lzIG1vdmltZW50b3MuDQoNCioqR3LDoWZpY28gMToqKg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCg0Kc3RhcnRfZGF0ZSA8LSBhcy5EYXRlKCIyMDA0LTAxLTAxIikNCmVuZF9kYXRlICAgPC0gYXMuRGF0ZSgiMjAxNC0wMy0zMSIpDQoNCmNvbF9yZXNlcnZhcyA8LSAiI0ZFQjAxNSINCmNvbF9kb2xhciAgICA8LSAiIzAyMDIzQyINCg0KIyBSZXNlcnZhczogU0dTIDM1NDYg4oCUIG1lbnNhbCwgVVMkIG1pbGjDtWVzDQpyZXNlcnZhcyA8LSBnYmNiZF9nZXRfc2VyaWVzKA0KICBpZCA9IDM1NDYsDQogIGZpcnN0LmRhdGUgPSBzdGFydF9kYXRlLA0KICBsYXN0LmRhdGUgID0gZW5kX2RhdGUsDQogIHVzZS5tZW1vaXNlID0gRkFMU0UNCikgfD4NCiAgc2VsZWN0KGRhdGUgPSByZWYuZGF0ZSwgcmVzZXJ2YXMgPSB2YWx1ZSkNCg0KIyBEw7NsYXI6IFNHUyAxMDgxMyDigJQgZGnDoXJpbzsgY29sYXBzYSBwYXJhIGZpbmFsIGRlIG3DqnMgKG3DqWRpYSBtZW5zYWwpDQpkb2xhciA8LSBnYmNiZF9nZXRfc2VyaWVzKA0KICBpZCA9IDEwODEzLA0KICBmaXJzdC5kYXRlID0gc3RhcnRfZGF0ZSwNCiAgbGFzdC5kYXRlICA9IGVuZF9kYXRlLA0KICB1c2UubWVtb2lzZSA9IEZBTFNFDQopIHw+DQogIHNlbGVjdChkYXRlID0gcmVmLmRhdGUsIHVzZCA9IHZhbHVlKSB8Pg0KICBtdXRhdGUobWVzID0gZmxvb3JfZGF0ZShkYXRlLCAibW9udGgiKSkgfD4NCiAgZ3JvdXBfYnkobWVzKSB8Pg0KICBzdW1tYXJpc2UodXNkID0gbWVhbih1c2QsIG5hLnJtID0gVFJVRSksIC5ncm91cHMgPSAiZHJvcCIpIHw+DQogIHJlbmFtZShkYXRlID0gbWVzKQ0KDQpoYyA8LSBoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpIHw+DQogIGhjX3RpdGxlKHRleHQgPSAiVmFyaWHDp8OjbyBkYXMgUmVzZXJ2YXMgSW50ZXJuYWNpb25haXMgZSBkYSBUYXhhIGRlIEPDom1iaW88YnI+MjAwNC0yMDE0IiwNCiAgICAgICAgICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiMwMjAyM0MiLCBmb250V2VpZ2h0ID0gImJvbGQiKSkgfD4NCiAgaGNfc3VidGl0bGUodGV4dCA9ICJTw6lyaWVzIG1lbnNhaXMg4oCUIGphbi8yMDA0IGEgbWFyLzIwMTQiLA0KICAgICAgICAgICAgICBhbGlnbiA9ICJjZW50ZXIiKSB8Pg0KICBoY195QXhpc19tdWx0aXBsZXMoDQogICAgbGlzdCh0aXRsZSA9IGxpc3QodGV4dCA9ICJSZXNlcnZhcyBpbnRlcm5hY2lvbmFpczxicj4oVVMkIG1pbGjDtWVzKSIsDQogICAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gY29sX3Jlc2VydmFzKSksDQogICAgICAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IGNvbF9yZXNlcnZhcykpLA0KICAgICAgICAgb3Bwb3NpdGUgPSBGQUxTRSksDQogICAgbGlzdCh0aXRsZSA9IGxpc3QodGV4dCA9ICJUYXhhIGRlIGPDom1iaW88YnI+KFIkL1VTJCkiLA0KICAgICAgICAgICAgICAgICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IGNvbF9kb2xhcikpLA0KICAgICAgICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSBjb2xfZG9sYXIpKSwNCiAgICAgICAgIG9wcG9zaXRlID0gVFJVRSkNCiAgKSB8Pg0KICBoY19hZGRfc2VyaWVzKGRhdGEgPSByZXNlcnZhcywgdHlwZSA9ICJsaW5lIiwNCiAgICAgICAgICAgICAgICBoY2Flcyh4ID0gZGF0ZSwgeSA9IHJlc2VydmFzKSwNCiAgICAgICAgICAgICAgICBuYW1lID0gIlJlc2VydmFzIGludGVybmFjaW9uYWlzIiwNCiAgICAgICAgICAgICAgICBjb2xvciA9IGNvbF9yZXNlcnZhcywgeUF4aXMgPSAwKSB8Pg0KICBoY19hZGRfc2VyaWVzKGRhdGEgPSBkb2xhciwgdHlwZSA9ICJsaW5lIiwNCiAgICAgICAgICAgICAgICBoY2Flcyh4ID0gZGF0ZSwgeSA9IHVzZCksDQogICAgICAgICAgICAgICAgbmFtZSA9ICJVU0QvQlJMIiwNCiAgICAgICAgICAgICAgICBjb2xvciA9IGNvbF9kb2xhciwgeUF4aXMgPSAxKSB8Pg0KICBoY190b29sdGlwKHNoYXJlZCA9IFRSVUUsIHZhbHVlRGVjaW1hbHMgPSAyKSB8Pg0KICBoY19sZWdlbmQoZW5hYmxlZCA9IFRSVUUpIHw+DQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsDQogICAgICAgICAgICAgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwgKFNHUyAzNTQ2IGUgMTA4MTMpLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNyb0JILiIsDQogICAgICAgICAgICAgaHJlZiA9ICIiKQ0KDQpoYw0KYGBgDQoNCkEgaW50ZXJ2ZW7Dp8OjbyBkbyBCYW5jbyBDZW50cmFsIGZvaSBmb2NhZGEgZW0gcmVzb2x2ZXIgYSBlc2Nhc3NleiBkZSBkw7NsYXJlcyBubyBtZXJjYWRvLiBBIHByaW5jaXBhbCB0w6F0aWNhIGZvaSBvIHVzbyBkZSB2ZW5kYXMgY29tIGNvbXByb21pc3NvIGRlIHJlY29tcHJhOiBvIEJDIG9mZXJlY2V1IGTDs2xhcmVzIGFvcyBiYW5jb3MgY29tIGEgZ2FyYW50aWEgZGUgcmVjb21wcsOhLWxvcyBlbSBkYXRhIGZ1dHVyYSwgc2FuYW5kbyBhIGZhbHRhIGRlIGxpcXVpZGV6IHNlbSBjb21wcm9tZXRlciBwZXJtYW5lbnRlbWVudGUgbyBlc3RvcXVlIGRlIHJlc2VydmFzLiBEZSBmb3JtYSBjb21wbGVtZW50YXIsIG8gQkMgdXRpbGl6b3UgYXMgcmVzZXJ2YXMgcGFyYSBzdXByaXIgYSBlc2Nhc3NleiBkZSBjcsOpZGl0byBleHRlcm5vIG5vIGZpbmFuY2lhbWVudG8gZG8gY29tw6lyY2lvIGV4dGVyaW9yIC0gYXMgY2hhbWFkYXMgbGluaGFzIGRlIHRyYWRlIGZpbmFuY2UgLSBxdWUgaGF2aWFtIHNpZG8gY29ydGFkYXMgcGVsb3MgYmFuY29zIGludGVybmFjaW9uYWlzIGNvbSBhIGVjbG9zw6NvIGRhIGNyaXNlLiBTZW0gZXNzZSBzdXBvcnRlLCBvcyBleHBvcnRhZG9yZXMgYnJhc2lsZWlyb3MgbsOjbyB0ZXJpYW0gY29tbyBmaW5hbmNpYXIgbyBpbnRlcnZhbG8gZW50cmUgYSBwcm9kdcOnw6NvIGUgbyByZWNlYmltZW50byBkYXMgdmVuZGFzIGFvIGV4dGVyaW9yLiAgQWzDqW0gZGlzc28sIG8gQkMgdXRpbGl6b3UgbyBzd2FwIGNhbWJpYWwgLSB1bSBjb250cmF0byBxdWUgb2ZlcmVjZSBwcm90ZcOnw6NvIGNhbWJpYWwgc2VtIGRlc2VtYm9sc28gaW1lZGlhdG8gZGUgZMOzbGFyIGbDrXNpY28gLSwgaW5zdHJ1bWVudG8gZXNzZW5jaWFsIHBhcmEgYW5jb3JhciBleHBlY3RhdGl2YXMgZSBlc3RhYmlsaXphciBvIGPDom1iaW8gbm8gbWVyY2FkbyBmdXR1cm8uDQoNCkEgYXR1YcOnw6NvIGRvIEJhbmNvIENlbnRyYWwgcGVybWl0aXUgcXVlIG8gcGHDrXMgbWl0aWdhc3NlIG9zIGVmZWl0b3MgZGEgY3Jpc2UgZGUgZm9ybWEgcmVsYXRpdmFtZW50ZSByw6FwaWRhLCBjb250ZW5kbyBvIGNvbnTDoWdpby4gTyB2YWxlIGRvIGNpY2xvIGZvaSBkYXRhZG8gbm8gcXVhcnRvIHRyaW1lc3RyZSBkZSAyMDA4LCBhIHBhcnRpciBkbyBxdWFsIG8gQnJhc2lsIGluaWNpb3UgdW1hIG5vdmEgdHJhamV0w7NyaWEgZGUgZXhwYW5zw6NvLiBWYWxlIGRlc3RhY2FyIHF1ZSBhcyBkYXRhcyBkbyBDT0RBQ0Ugc8OjbyBjb25maXJtYWRhcyBjb20gdW1hIGNlcnRhIGRlZmFzYWdlbSAtIGVtIGRlemVtYnJvIGRlIDIwMDgsIGEgcG9wdWxhw6fDo28gbsOjbyB0aW5oYSBjb21vIHNhYmVyIHF1ZSBzZSBpbmljaWF2YSB1bWEgdHJhamV0w7NyaWEgZGUgZXhwYW5zw6NvLg0KDQojIyAxLjIgT3MgbW90b3JlcyBkYSBleHBhbnPDo28NCg0KQSBleHBhbnPDo28gYnJhc2lsZWlyYSBuw6NvIGZvaSBmcnV0byBkZSB1bSDDum5pY28gZmF0b3IsIG1hcyBkZSB1bSBjb25qdW50byBkZSB2YXJpw6F2ZWlzIGFnaW5kbyBkZSBmb3JtYSBhcnRpY3VsYWRhLiBDb20gbyBjb2xjaMOjbyBleHRlcm5vIGdhcmFudGluZG8gZXN0YWJpbGlkYWRlLCBvIGNyZXNjaW1lbnRvIGRlIDIwMDjigJMyMDE0IGZvaSBwdXhhZG8gaW50ZXJuYW1lbnRlIC0gY29uc3VtbyBkYXMgZmFtw61saWFzLCBleHBhbnPDo28gZG8gY3LDqWRpdG8sIGZvcm1hbGl6YcOnw6NvIGRvIHRyYWJhbGhvLCBlIGdhc3RvIHDDumJsaWNvIC0gaW1wdWxzaW9uYXJhbSBjb25qdW50YW1lbnRlIGEgZGVtYW5kYSBhZ3JlZ2FkYS4gDQoNCiMjIyAxLjIuMSBSZW5kYSBlIGNvbnN1bW8gZGFzIGZhbcOtbGlhcw0KRHVyYW50ZSBvIHBlcsOtb2RvIGRlIGV4cGFuc8OjbywgbyBjb25zdW1vIGRhcyBmYW3DrWxpYXMgY3Jlc2NldSBkZSBmb3JtYSBzdXN0ZW50YWRhIGUgc2UgZmlybW91IGNvbW8gdW0gY29tcG9uZW50ZSBlc3TDoXZlbCBkYSBkZW1hbmRhIGFncmVnYWRhLiBFc3NlIG1vdmltZW50byDDqSwgYW8gbWVzbW8gdGVtcG8sIGNhdXNhIGUgY29uc2VxdcOqbmNpYSBkbyBjaWNsbzogY2F1c2EsIHBvcnF1ZSBhIGV4cGFuc8OjbyBkbyBjb25zdW1vIGVsZXZvdSBhIGRlbWFuZGEsIGVzdGltdWxhbmRvIHByb2R1w6fDo28gZSBjb250cmF0YcOnw7VlczsgY29uc2VxdcOqbmNpYSwgcG9ycXVlIG8gYXVtZW50byBkbyBlbXByZWdvIGUgZGEgcmVuZGEgYWxpbWVudG91IGRlIHZvbHRhIGEgY2FwYWNpZGFkZSBkZSBjb25zdW1pci4gTyBxdWUgZGVzdHJhdm91IGVzc2UgY2ljbG8sIHBvcsOpbSwgbsOjbyBmb2kgYWxlYXTDs3JpbyAtIGVzdGV2ZSBsaWdhZG8gw6AgcG9sw610aWNhIGRlIHZhbG9yaXphw6fDo28gZG8gc2Fsw6FyaW8gbcOtbmltby4NCg0KQSByZWdyYSwgbmVnb2NpYWRhIGVtIDIwMDcsIGZpeG91IGRvaXMgY29tcG9uZW50ZXMgcGFyYSBvIHJlYWp1c3RlIGFudWFsOiAoaSkgbyBJTlBDW14xXSBkbyBwZXLDrW9kbywgcXVlIGFwZW5hcyByZXDDtWUgYSBpbmZsYcOnw6NvIGUsIHBvcnRhbnRvLCBuw6NvIGltcGxpY2EgZ2FuaG8gcmVhbDsgZSAoaWkpIGEgdmFyaWHDp8OjbyBkbyBQSUIgZGVmYXNhZGEgZW0gZG9pcyBhbm9zLCBxdWUgY29uc3RpdHVpIG8gZ2FuaG8gcmVhbCBwcm9wcmlhbWVudGUgZGl0by4gQXNzaW0sIG8gcmVhanVzdGUgZGUgMjAwOCBpbmNvcnBvcm91IG8gUElCIGRlIDIwMDY7IG8gZGUgMjAwOSwgbyBkZSAyMDA3OyBvIGRlIDIwMTAsIG8gZGUgMjAwOC4gQSB0cmFqZXTDs3JpYSBjb25qdW50YSBkbyBzYWzDoXJpbyBtw61uaW1vIHJlYWwgZSBkbyBjb25zdW1vIGRhcyBmYW3DrWxpYXMgcG9kZSBzZXIgdmlzdGEgbm8gZ3LDoWZpY28gMi4NCg0KW14xXSBOb3RhOiDDjW5kaWNlIE5hY2lvbmFsIGRlIFByZcOnb3MgYW8gQ29uc3VtaWRvciwgY2FsY3VsYWRvIHBlbG8gSUJHRS4gTWVkZSBhIGluZmxhw6fDo28gZGEgY2VzdGEgZGUgY29uc3VtbyBkYXMgZmFtw61saWFzIGNvbSBwZXNzb2EgZGUgcmVmZXLDqm5jaWEgYXNzYWxhcmlhZGEgZSByZW5kaW1lbnRvIGVudHJlIDEgZSA1IHNhbMOhcmlvcyBtw61uaW1vcywgZW0gw6FyZWFzIHVyYmFuYXMuIMOJLCBwb3J0YW50bywgbyDDrW5kaWNlIHF1ZSByZWZsZXRlIGEgaW5mbGHDp8OjbyBlbmZyZW50YWRhIHBlbGEgcHLDs3ByaWEgcG9wdWxhw6fDo28gYWZldGFkYSBwZWxvIHJlYWp1c3RlIGRvIFNNLCBkYcOtIHN1YSBlc2NvbGhhIGNvbW8gY29tcG9uZW50ZSBkZSByZXBvc2nDp8OjbyBuYSByZWdyYS4NCg0KKipHcsOhZmljbyAyOioqIA0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpjb25zdW1vZmFtIDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL3JvYmVyL09uZURyaXZlL0liTWFjcm8vY29uc3Vtb2ZhbTEueGxzeCIpDQp0cmltZXN0cmVzIDwtIGFzLmNoYXJhY3Rlcihjb25zdW1vZmFtWzMsIC0xXSkNCnZhbG9yZXMgPC0gYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoY29uc3Vtb2ZhbVs1LCAtMV0pKQ0KY29uc3VtbyA8LSBkYXRhLmZyYW1lKA0KICB0cmltZXN0cmUgPSB0cmltZXN0cmVzLA0KICB2YWxvciA9IHZhbG9yZXMNCikgJT4lDQogIG11dGF0ZSgNCiAgICBhbm8gPSBhcy5pbnRlZ2VyKHN1YnN0cih0cmltZXN0cmUsIG5jaGFyKHRyaW1lc3RyZSktMywgbmNoYXIodHJpbWVzdHJlKSkpLA0KICAgIHRyaW0gPSBjYXNlX3doZW4oDQogICAgICBncmVwbCgiMcK6IiwgdHJpbWVzdHJlKSB+IDEsDQogICAgICBncmVwbCgiMsK6IiwgdHJpbWVzdHJlKSB+IDIsDQogICAgICBncmVwbCgiM8K6IiwgdHJpbWVzdHJlKSB+IDMsDQogICAgICBncmVwbCgiNMK6IiwgdHJpbWVzdHJlKSB+IDQNCiAgICApLA0KICAgIGRhdGEgPSBhcy5EYXRlKHBhc3RlMChhbm8sICItIiwgZm9ybWF0Qyh0cmltICogMyAtIDIsIHdpZHRoID0gMiwgZmxhZyA9ICIwIiksICItMTUiKSksDQogICAgZGF0YV9tcyA9IGFzLm51bWVyaWMoYXMuUE9TSVhjdChkYXRhLCB0eiA9ICJVVEMiKSkgKiAxMDAwDQogICkNCmRhZG9zIDwtIGNvbnN1bW8gJT4lIHNlbGVjdCh0aW1lc3RhbXAgPSBkYXRhX21zLCB2YWxvcikNCg0KIyA9PT0gREFET1MgREUgU0FMw4FSSU8gTcONTklNTyA9PT0NCnNhbGFyaW9fdHJpbSA8LSBkYXRhLmZyYW1lKA0KICBkYXRhID0gYXMuRGF0ZShjKA0KICAgICIyMDA5LTAxLTE1IiwgIjIwMDktMDQtMTUiLCAiMjAwOS0wNy0xNSIsICIyMDA5LTEwLTE1IiwNCiAgICAiMjAxMC0wMS0xNSIsICIyMDEwLTA0LTE1IiwgIjIwMTAtMDctMTUiLCAiMjAxMC0xMC0xNSIsDQogICAgIjIwMTEtMDEtMTUiLCAiMjAxMS0wNC0xNSIsICIyMDExLTA3LTE1IiwgIjIwMTEtMTAtMTUiLA0KICAgICIyMDEyLTAxLTE1IiwgIjIwMTItMDQtMTUiLCAiMjAxMi0wNy0xNSIsICIyMDEyLTEwLTE1IiwNCiAgICAiMjAxMy0wMS0xNSIsICIyMDEzLTA0LTE1IiwgIjIwMTMtMDctMTUiLCAiMjAxMy0xMC0xNSIsDQogICAgIjIwMTQtMDEtMTUiDQogICkpLA0KICB2YWxvciA9IGMoDQogICAgNDE1LCA0NjUsIDQ2NSwgNDY1LA0KICAgIDUxMCwgNTEwLCA1MTAsIDUxMCwNCiAgICA1NDAsIDU0NSwgNTQ1LCA1NDUsDQogICAgNjIyLCA2MjIsIDYyMiwgNjIyLA0KICAgIDY3OCwgNjc4LCA2NzgsIDY3OCwNCiAgICA3MjQNCiAgKQ0KKSAlPiUNCiAgbXV0YXRlKGRhdGFfbXMgPSBhcy5udW1lcmljKGFzLlBPU0lYY3QoZGF0YSwgdHogPSAiVVRDIikpICogMTAwMCkNCmRhZG9zX3NhbGFyaW8gPC0gc2FsYXJpb190cmltICU+JSBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgdmFsb3IpDQoNCiMgPT09IEdSw4FGSUNPID09PQ0KZ3JhZmljbyA8LSBoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19jaGFydCgNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgc3BhY2luZ1RvcCA9IDIwLCBzcGFjaW5nUmlnaHQgPSAyMCwNCiAgICBzcGFjaW5nQm90dG9tID0gMjAsIHNwYWNpbmdMZWZ0ID0gMjAsDQogICAgbWFyZ2luUmlnaHQgPSA4MCAgIyBldml0YSBjb3J0ZSBkbyBlaXhvIGRpcmVpdG8gbmEgZXhwb3J0YcOnw6NvDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zKSwNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIG5hbWUgPSAiRGVzcGVzYSBkZSBDb25zdW1vIGRhcyBGYW3DrWxpYXMiLA0KICAgIGNvbG9yID0gIiMwMjAyM0MiLA0KICAgIGxpbmVXaWR0aCA9IDMsDQogICAgeUF4aXMgPSAwLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMCwgdmFsdWVTdWZmaXggPSAiIFIkIG1pIikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3Nfc2FsYXJpbyksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIlNhbMOhcmlvIE3DrW5pbW8iLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLA0KICAgIGxpbmVXaWR0aCA9IDIsDQogICAgeUF4aXMgPSAxLA0KICAgIGRhc2hTdHlsZSA9ICJTb2xpZCIsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gRkFMU0UpLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAwLCB2YWx1ZVByZWZpeCA9ICJSJCAiKQ0KICApICU+JQ0KICBoY195QXhpc19tdWx0aXBsZXMoDQogICAgbGlzdCgNCiAgICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIlIkIG1pbGjDtWVzIChwcmXDp29zIGNvcnJlbnRlcykiLA0KICAgICAgICAgICAgICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTJweCIpKSwNCiAgICAgIGdyaWRMaW5lQ29sb3IgPSAiI0U2RTZFNiIsDQogICAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IikpDQogICAgKSwNCiAgICBsaXN0KA0KICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiU2Fsw6FyaW8gTcOtbmltbyAoUiQpIiwNCiAgICAgICAgICAgICAgICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSAiI0M5QTg0QyIsIGZvbnRTaXplID0gIjEycHgiKSksDQogICAgICBvcHBvc2l0ZSA9IFRSVUUsDQogICAgICBncmlkTGluZVdpZHRoID0gMCwNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiNDOUE4NEMiKSkNCiAgICApDQogICkgJT4lDQogIGhjX3hBeGlzKA0KICAgIGxpbmVDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICB0aWNrQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpKQ0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBzZXJpZXMgPSBsaXN0KA0KICAgICAgYW5pbWF0aW9uID0gRkFMU0UsDQogICAgICBzdGF0ZXMgPSBsaXN0KGluYWN0aXZlID0gbGlzdChvcGFjaXR5ID0gMSkpDQogICAgKQ0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIkRlc3Blc2EgZGUgQ29uc3VtbyBkYXMgRmFtw61saWFzIGUgU2Fsw6FyaW8gTcOtbmltbyDigJQgQnJhc2lsIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIkNvbnN1bW8gZW0gUiQgbWlsaMO1ZXMgKHByZcOnb3MgY29ycmVudGVzKSB8IFNhbMOhcmlvIG3DrW5pbW8gZW0gUiQg4oCUIDFUMjAwOSBhIDRUMjAxNCIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEzcHgiLCBjb2xvciA9ICIjNjY2NjY2IikNCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiwNCiAgICBib3JkZXJDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICBib3JkZXJSYWRpdXMgPSA4LA0KICAgIHNoYWRvdyA9IEZBTFNFLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBUUlVFKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogSUJHRS9Db250YXMgTmFjaW9uYWlzOyBNVEUuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvQkguIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTBweCIsIGNvbG9yID0gIiM3Nzc3NzciKQ0KICApDQpncmFmaWNvDQpgYGANCg0KVmFsZSBkZXN0YWNhciwgYWluZGEsIHF1ZSBvIHNhbMOhcmlvIG3DrW5pbW8gbsOjbyBpbXBhY3RhIGFwZW5hcyBvcyB0cmFiYWxoYWRvcmVzIHF1ZSByZWNlYmVtIGRpcmV0YW1lbnRlIG8gcGlzby4gU2V1cyBlZmVpdG9zIHNlIGVzcGFsaGFtIHBlbGEgZXN0cnV0dXJhIHNhbGFyaWFsIGRlIGZvcm1hIG1haXMgYW1wbGEuIENhdGVnb3JpYXMgcHJvZmlzc2lvbmFpcyBjb20gcGlzb3MgZGVmaW5pZG9zIGVtIG3Dumx0aXBsb3MgZG8gU00sIGNvbW8gZW5nZW5oZWlyb3MsIG3DqWRpY29zIGUgYWdyw7Rub21vcywgdGFtYsOpbSB0w6ptIHNldXMgcmVuZGltZW50b3MgcmVhanVzdGFkb3MgcXVhbmRvIG8gcGlzbyBhdW1lbnRhLiBBbMOpbSBkaXNzbywgbWVzbW8gdHJhYmFsaGFkb3JlcyBzZW0gdsOtbmN1bG8gZm9ybWFsIGNvbSBvIFNNIHRlbmRlbSBhIHJlaXZpbmRpY2FyIHJlYWp1c3RlcyBxdWFuZG8gZWxlIHNvYmUgZW0gdGVybW9zIHJlYWlzLCBqw6EgcXVlIG8gdmFsb3IgcmVsYXRpdm8gZGUgc2V1cyBwcsOzcHJpb3Mgc2Fsw6FyaW9zIGRpbWludWkgZW0gY29tcGFyYcOnw6NvIGFvIHJlc3RhbnRlIGRhIGVzdHJ1dHVyYSBzYWxhcmlhbC4gDQoNCkRlc3NhIGZvcm1hLCBlbGUgZnVuY2lvbmEgY29tbyB1bWEgcmVmZXLDqm5jaWEgaW1wb3J0YW50ZSBwYXJhIG9zIHNhbMOhcmlvcyBubyBCcmFzaWwsIHByb2R1emluZG8gZWZlaXRvcyBxdWUgdsOjbyBtdWl0byBhbMOpbSBkbyBncnVwbyBxdWUgZWZldGl2YW1lbnRlIHJlY2ViZSBvIHBpc28uDQpQb3LDqW0sIG8gYXVtZW50byBkbyBjb25zdW1vIG7Do28gcG9kZSBzZXIgYXRyaWJ1w61kbyBpbnRlZ3JhbG1lbnRlIGFvIHNhbMOhcmlvIG3DrW5pbW8uIENvbW8gc2Ugb2JzZXJ2YSBubyBncsOhZmljbyAyLCBhIGRlc3Blc2EgZG8gY29uc3VtbyBjcmVzY2UgbWFpcyBxdWUgbyBTTSwgc2luYWwgZGUgcXVlIG91dHJvIG1vdG9yIGVzdMOhIG9wZXJhbmRvIGVtIHBhcmFsZWxvLiANCg0KRXNzZSBtb3RvciDDqSBhIGV4cGFuc8OjbyBkbyBjcsOpZGl0bywgb2JzZXJ2YWRhIG5vIGdyw6FmaWNvIDMuDQoNCioqR3LDoWZpY28gMzoqKg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpjcmVkaXRvX3BpYiA8LSBkYXRhLmZyYW1lKA0KICBkYXRhID0gYXMuRGF0ZShjKA0KICAgICIyMDA4LTAxLTE1IiwNCiAgICAiMjAwOC0xMi0xNSIsDQogICAgIjIwMDktMTItMTUiLA0KICAgICIyMDEwLTEyLTE1IiwNCiAgICAiMjAxMS0xMi0xNSIsDQogICAgIjIwMTItMTItMTUiLA0KICAgICIyMDEzLTEyLTE1Ig0KICApKSwNCiAgdG90YWwgPSBjKDM1LjQ3LCA0MC43MCwgNDMuODUsIDQ1LjQzLCA0OS4xMCwgNTMuODAsIDU2LjUwKSwNCiAgcGogICAgPSBjKDE5LjA4LCAyMy4wNiwgMjQuNDksIDI0Ljg0LCAyNi45MCwgMjkuNDAsIDMwLjUwKSwNCiAgcGYgICAgPSBjKDE2LjM5LCAxNy42MywgMTkuMzYsIDIwLjU5LCAyMi4yMCwgMjQuNDAsIDI2LjAwKQ0KKSAlPiUNCiAgbXV0YXRlKGRhdGFfbXMgPSBhcy5udW1lcmljKGFzLlBPU0lYY3QoZGF0YSwgdHogPSAiVVRDIikpICogMTAwMCkNCg0KZGFkb3NfdG90YWwgPC0gY3JlZGl0b19waWIgJT4lIHNlbGVjdCh0aW1lc3RhbXAgPSBkYXRhX21zLCB2YWxvciA9IHRvdGFsKQ0KZGFkb3NfcGogICAgPC0gY3JlZGl0b19waWIgJT4lIHNlbGVjdCh0aW1lc3RhbXAgPSBkYXRhX21zLCB2YWxvciA9IHBqKQ0KZGFkb3NfcGYgICAgPC0gY3JlZGl0b19waWIgJT4lIHNlbGVjdCh0aW1lc3RhbXAgPSBkYXRhX21zLCB2YWxvciA9IHBmKQ0KDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19jaGFydCgNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgc3BhY2luZ1RvcCA9IDIwLCBzcGFjaW5nUmlnaHQgPSAyMCwNCiAgICBzcGFjaW5nQm90dG9tID0gMjAsIHNwYWNpbmdMZWZ0ID0gMjANCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfdG90YWwpLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgbmFtZSA9ICJUb3RhbCIsDQogICAgY29sb3IgPSAiIzAyMDIzQyIsDQogICAgbGluZVdpZHRoID0gMywNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSA0KSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSBkbyBQSUIiKQ0KICApICU+JQ0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19waiksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIlBlc3NvYSBKdXLDrWRpY2EiLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLA0KICAgIGxpbmVXaWR0aCA9IDIsDQogICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gVFJVRSwgcmFkaXVzID0gNCksDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDEsIHZhbHVlU3VmZml4ID0gIiUgZG8gUElCIikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfcGYpLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgbmFtZSA9ICJQZXNzb2EgRsOtc2ljYSIsDQogICAgY29sb3IgPSAiIzQ2QjFFMSIsDQogICAgbGluZVdpZHRoID0gMiwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSA0KSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSBkbyBQSUIiKQ0KICApICU+JQ0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ID0gIkNyw6lkaXRvL1BJQiAoJSkiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgICApLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0U2RTZFNiIsDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiksDQogICAgICBmb3JtYXQgPSAie3ZhbHVlfSUiDQogICAgKSwNCiAgICBtaW4gPSAwDQogICkgJT4lDQogIGhjX3hBeGlzKA0KICAgIGxpbmVDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICB0aWNrQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpKQ0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBzZXJpZXMgPSBsaXN0KA0KICAgICAgYW5pbWF0aW9uID0gRkFMU0UsDQogICAgICBzdGF0ZXMgPSBsaXN0KGluYWN0aXZlID0gbGlzdChvcGFjaXR5ID0gMSkpDQogICAgKQ0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIkV4cGFuc8OjbyBkbyBDcsOpZGl0byBubyBCcmFzaWwiLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIyMHB4IiwgZm9udFdlaWdodCA9ICJib2xkIiwgY29sb3IgPSAiIzExMTExMSIpDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiU2FsZG8gZGFzIG9wZXJhw6fDtWVzIGRlIGNyw6lkaXRvIGVtIHJlbGHDp8OjbyBhbyBQSUIgKCUpIC0gamFuLzIwMDggYSBkZXovMjAxMyIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEzcHgiLCBjb2xvciA9ICIjNjY2NjY2IikNCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiwNCiAgICBib3JkZXJDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICBib3JkZXJSYWRpdXMgPSA4LA0KICAgIHNoYWRvdyA9IEZBTFNFLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGFsaWduID0gImNlbnRlciIsDQogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLA0KICAgIGxheW91dCA9ICJob3Jpem9udGFsIg0KICApICU+JQ0KICBoY19yYW5nZVNlbGVjdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX25hdmlnYXRvcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19zY3JvbGxiYXIoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfZXhwb3J0aW5nKGVuYWJsZWQgPSBUUlVFKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBESUVFU0UvQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvQkguIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTBweCIsIGNvbG9yID0gIiM3Nzc3NzciKQ0KICApDQpgYGANCg0KQ29tbyBldmlkZW5jaWFkbyBubyBncsOhZmljbyAzLCBhIHJlbGHDp8OjbyBjcsOpZGl0by9QSUIgdG90YWwgKGxpbmhhIGF6dWwgZXNjdXJvKSBwYXNzb3UgZGUgMzUsNSUgZW0gMjAwOCBwYXJhIDU2LDUlIGVtIGRlemVtYnJvIGRlIDIwMTMuDQpDb21vIGV2aWRlbmNpYWRvIG5vIGdyw6FmaWNvIDMsIGEgcmVsYcOnw6NvIGNyw6lkaXRvL1BJQiB0b3RhbCAobGluaGEgYXp1bC1lc2N1cmEpIHBhc3NvdSBkZSAzNSw1JSBlbSAyMDA4IHBhcmEgNTYsNSUgZW0gZGV6ZW1icm8gZGUgMjAxMy4gQSBleHBhbnPDo28gZG8gY3LDqWRpdG8gYSBwZXNzb2FzIGbDrXNpY2FzIG9wZXJvdSBwb3IgbWVpbyBkZSBpbnN0cnVtZW50b3MgZXNwZWPDrWZpY29zOiBvIGNyw6lkaXRvIGNvbnNpZ25hZG8gY29tIGRlc2NvbnRvIGRpcmV0byBlbSBmb2xoYSwgbyBmaW5hbmNpYW1lbnRvIGRlIHZlw61jdWxvcyBjb20gcHJhem8gYWxvbmdhZG8sIG8gZmluYW5jaWFtZW50byBpbW9iaWxpw6FyaW8sIG8gY3LDqWRpdG8gcGVzc29hbCBlIG8gY2FydMOjbyBkZSBjcsOpZGl0byBjb20gcGFyY2VsYW1lbnRvIHNlbSBqdXJvcy4gTyBlZmVpdG8gZGVzc2FzIG1lZGlkYXMgZm9pIGZhY2lsaXRhciBvIGFjZXNzbyBhIGJlbnMgZHVyw6F2ZWlzLCBlbGV0cm9kb23DqXN0aWNvcywgYXV0b23Ds3ZlaXMsIGUgc2VydmnDp29zIGFudGVzIHJlc3RyaXRvcyBhIGZhaXhhcyBtYWlzIGFsdGFzIGRlIHJlbmRhLg0KDQpBIGxpbmhhIGRlIGNyw6lkaXRvIGEgcGVzc29hcyBqdXLDrWRpY2FzIChsaW5oYSBhbWFyZWxhKSB0YW1iw6ltIGF2YW7Dp2Egbm8gcGVyw61vZG8sIGRlIGNlcmNhIGRlIDE5LDElIHBhcmEgMzAsNSUgZG8gUElCLiBQYXJ0ZSBkZXNzYSBleHBhbnPDo28gc2UgZGV2ZXUgw6AgYXR1YcOnw6NvIGFudGljw61jbGljYSBkb3MgYmFuY29zIHDDumJsaWNvcyBhcMOzcyAyMDA4LCBxdWFuZG8gb3MgYmFuY29zIHByaXZhZG9zIHNlIHRvcm5hcmFtIG1haXMgY2F1dGVsb3NvcyBkaWFudGUgZGEgY3Jpc2UgaW50ZXJuYWNpb25hbC4NCg0KTyByZXN1bHRhZG8gY29uanVudG8gZGVzc2VzIG1vdG9yZXMgLSBzYWzDoXJpbyBtw61uaW1vIGVtIHZhbG9yaXphw6fDo28gcmVhbCBlIGNyw6lkaXRvIGFvIGNvbnN1bWlkb3IgZW0gZm9ydGUgZXhwYW5zw6NvIC0gZm9pIGEgY29uc29saWRhw6fDo28gZGUgdW0gbWVyY2FkbyBkZSBjb25zdW1vIG5vIEJyYXNpbC4gRmFtw61saWFzIGRlIG1lbm9yIHJlbmRhIHBhc3NhcmFtIGEgYWNlc3NhciBiZW5zIGUgc2VydmnDp29zIGFudGVzIHJlc3RyaXRvcywgZmVuw7RtZW5vIHRhbWLDqW0gY2hhbWFkbyBkZSAibm92YSBjbGFzc2UgbcOpZGlhIi4gTWFpcyBkbyBxdWUgbyBhdW1lbnRvIGRvIGNvbnN1bW8gYWdyZWdhZG8sIG8gcXVlIG9jb3JyZSDDqSB1bWEgcGVyY2Vww6fDo28gZ2VuZXJhbGl6YWRhIGRlIG1lbGhvcmEsIGEgc2Vuc2HDp8OjbyBxdWUgc3VzdGVudGEgbyBjaWNsbyBlIHJlZm9yw6dhIGEgdmlzw6NvLCBuYSDDqXBvY2EsIGRlIHF1ZSBvIEJyYXNpbCB2aXZpYSB1bSBwZXLDrW9kbyBkZSBwcm9zcGVyaWRhZGUuIERvIHBvbnRvIGRlIHZpc3RhIG1hY3JvZWNvbsO0bWljbywgY29udHVkbywgY2FiZSB1bWEgcmVzc2FsdmE6IHVtIGNyZXNjaW1lbnRvIHN1c3RlbnRhZG8gcG9yIGNyw6lkaXRvIGUgY29uc3VtbyBmdW5jaW9uYSBubyBjdXJ0byBwcmF6bywgbWFzIHRlbSBsaW1pdGVzLg0KDQojIyMgMS4yLjIgTWVyY2FkbyBkZSB0cmFiYWxobw0KDQpPdXRybyBtb3RvciByZWxldmFudGUgZGEgZXhwYW5zw6NvIGZvaSBvIG1lcmNhZG8gZGUgdHJhYmFsaG8uIENvbW8gbW9zdHJhIG8gZ3LDoWZpY28gNCwgYSB0YXhhIGRlIGRlc29jdXBhw6fDo28gbWVkaWRhIHBlbGEgUE1FW14yXSBjYWl1IGRlIGZvcm1hIGNvbnNpc3RlbnRlIGFvIGxvbmdvIGRvIHBlcsOtb2RvLiBFbSB0ZXJtb3MgdGXDs3JpY29zLCB1bWEgcG9wdWxhw6fDo28gbWFpcyBlbXByZWdhZGEgYW1wbGlhIGEgbWFzc2EgZGUgcmVuZGEgZGlzcG9uw612ZWwgZSwgcG9ydGFudG8sIG8gZXNwYcOnbyBwYXJhIGNvbnN1bW8gLSByZWZvcsOnYW5kbyBhIHRlc2UgZGUgcXVlIGEgZGVtYW5kYSBkb23DqXN0aWNhIGZvaSBvIHByaW5jaXBhbCB2ZXRvciBkYSBleHBhbnPDo28uIA0KDQoqKkdyw6FmaWNvIDQ6KioNCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpwbWVfcmF3IDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL3JvYmVyL09uZURyaXZlL0liTWFjcm8vdGF4YWRlc29jdXBhw6fDo28ueGxzeCIpDQoNCm1lc2VzIDwtIGFzLmNoYXJhY3RlcihwbWVfcmF3WzEsIC1jKDEsMiwzKV0pDQp2YWxvcmVzIDwtIGFzLm51bWVyaWMoZ3N1YigiLCIsICIuIiwgYXMuY2hhcmFjdGVyKHBtZV9yYXdbNSwgLWMoMSwyLDMpXSkpKQ0KDQpwbWUgPC0gZGF0YS5mcmFtZSgNCiAgbWVzID0gbWVzZXMsDQogIGRlc29jdXBhY2FvID0gdmFsb3Jlcw0KKSAlPiUNCiAgbXV0YXRlKA0KICAgIG1lc19udW0gPSBjYXNlX3doZW4oDQogICAgICBncmVwbCgiamFuZWlybyIsICAgbWVzKSB+IDEsDQogICAgICBncmVwbCgiZmV2ZXJlaXJvIiwgbWVzKSB+IDIsDQogICAgICBncmVwbCgibWFyw6dvIiwgICAgIG1lcykgfiAzLA0KICAgICAgZ3JlcGwoImFicmlsIiwgICAgIG1lcykgfiA0LA0KICAgICAgZ3JlcGwoIm1haW8iLCAgICAgIG1lcykgfiA1LA0KICAgICAgZ3JlcGwoImp1bmhvIiwgICAgIG1lcykgfiA2LA0KICAgICAgZ3JlcGwoImp1bGhvIiwgICAgIG1lcykgfiA3LA0KICAgICAgZ3JlcGwoImFnb3N0byIsICAgIG1lcykgfiA4LA0KICAgICAgZ3JlcGwoInNldGVtYnJvIiwgIG1lcykgfiA5LA0KICAgICAgZ3JlcGwoIm91dHVicm8iLCAgIG1lcykgfiAxMCwNCiAgICAgIGdyZXBsKCJub3ZlbWJybyIsICBtZXMpIH4gMTEsDQogICAgICBncmVwbCgiZGV6ZW1icm8iLCAgbWVzKSB+IDEyDQogICAgKSwNCiAgICBhbm8gPSBhcy5pbnRlZ2VyKHN1YnN0cihtZXMsIG5jaGFyKG1lcyktMywgbmNoYXIobWVzKSkpLA0KICAgIGRhdGEgPSBhcy5EYXRlKHBhc3RlMChhbm8sICItIiwgZm9ybWF0QyhtZXNfbnVtLCB3aWR0aD0yLCBmbGFnPSIwIiksICItMTUiKSksDQogICAgZGF0YV9tcyA9IGFzLm51bWVyaWMoYXMuUE9TSVhjdChkYXRhLCB0eiA9ICJVVEMiKSkgKiAxMDAwDQogICkgJT4lDQogIGZpbHRlcihkYXRhID49IGFzLkRhdGUoIjIwMDgtMDEtMTUiKSAmIGRhdGEgPD0gYXMuRGF0ZSgiMjAxNC0wMy0xNSIpKSAlPiUNCiAgYXJyYW5nZShkYXRhKSAlPiUNCiAgbXV0YXRlKG1tMTIgPSByb2xsbWVhbihkZXNvY3VwYWNhbywgayA9IDEyLCBmaWxsID0gTkEsIGFsaWduID0gInJpZ2h0IikpDQoNCmRhZG9zX3JlYWwgPC0gcG1lICU+JQ0KICBmaWx0ZXIoZGF0YSA+PSBhcy5EYXRlKCIyMDA5LTAxLTE1IikpICU+JQ0KICBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgZGVzb2N1cGFjYW8pDQoNCmRhZG9zX21tMTIgPC0gcG1lICU+JQ0KICBmaWx0ZXIoIWlzLm5hKG1tMTIpICYgZGF0YSA+PSBhcy5EYXRlKCIyMDA5LTAxLTE1IikpICU+JQ0KICBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgZGVzb2N1cGFjYW8gPSBtbTEyKQ0KDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19jaGFydChiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsIHNwYWNpbmdUb3AgPSAyMCwgc3BhY2luZ1JpZ2h0ID0gMjAsDQogICAgICAgICAgIHNwYWNpbmdCb3R0b20gPSAyMCwgc3BhY2luZ0xlZnQgPSAyMCkgJT4lDQogIGhjX2FkZF9zZXJpZXMoZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX3JlYWwpLCB0eXBlID0gImxpbmUiLCBuYW1lID0gIkRhZG8gb3JpZ2luYWwiLA0KICAgICAgICAgICAgICAgIGNvbG9yID0gIiNGRUIwMTUiLCBsaW5lV2lkdGggPSAxLjUsDQogICAgICAgICAgICAgICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gRkFMU0UpLA0KICAgICAgICAgICAgICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAxLCB2YWx1ZVN1ZmZpeCA9ICIlIikpICU+JQ0KICBoY19hZGRfc2VyaWVzKGRhdGEgPSBsaXN0X3BhcnNlMihkYWRvc19tbTEyKSwgdHlwZSA9ICJsaW5lIiwgbmFtZSA9ICJNw6lkaWEgbcOzdmVsIDEyIG1lc2VzIiwNCiAgICAgICAgICAgICAgICBjb2xvciA9ICIjMDIwMjNDIiwgbGluZVdpZHRoID0gMywNCiAgICAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSksDQogICAgICAgICAgICAgICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDEsIHZhbHVlU3VmZml4ID0gIiUiKSkgJT4lDQogIGhjX3lBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIlRheGEgZGUgZGVzb2N1cGHDp8OjbyAoJSkiLA0KICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMnB4IikpLA0KICAgICAgICAgICBncmlkTGluZUNvbG9yID0gIiNFNkU2RTYiLA0KICAgICAgICAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiksIGZvcm1hdCA9ICJ7dmFsdWV9JSIpKSAlPiUNCiAgaGNfeEF4aXMobGluZUNvbG9yID0gIiNEOUQ5RDkiLCB0aWNrQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgICAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSkpICU+JQ0KICBoY19wbG90T3B0aW9ucyhzZXJpZXMgPSBsaXN0KGFuaW1hdGlvbiA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlcyA9IGxpc3QoaW5hY3RpdmUgPSBsaXN0KG9wYWNpdHkgPSAxKSkpKSAlPiUNCiAgaGNfdGl0bGUodGV4dCA9ICJUYXhhIGRlIERlc29jdXBhw6fDo28gLSBCcmFzaWwiLA0KICAgICAgICAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKSkgJT4lDQogIGhjX3N1YnRpdGxlKHRleHQgPSAiUmVnacO1ZXMgbWV0cm9wb2xpdGFuYXMg4oCUIGphbi8yMDA5IGEgbWFyLzIwMTQiLA0KICAgICAgICAgICAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTNweCIsIGNvbG9yID0gIiM2NjY2NjYiKSkgJT4lDQogIGhjX3Rvb2x0aXAoc2hhcmVkID0gVFJVRSwgY3Jvc3NoYWlycyA9IFRSVUUsIGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiwNCiAgICAgICAgICAgICBib3JkZXJDb2xvciA9ICIjRDlEOUQ5IiwgYm9yZGVyUmFkaXVzID0gOCwgc2hhZG93ID0gRkFMU0UsDQogICAgICAgICAgICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiKSkgJT4lDQogIGhjX2xlZ2VuZChlbmFibGVkID0gVFJVRSwgYWxpZ24gPSAiY2VudGVyIiwgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLA0KICAgICAgICAgICAgbGF5b3V0ID0gImhvcml6b250YWwiKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX2NyZWRpdHMoZW5hYmxlZCA9IFRSVUUsIHRleHQgPSAiRm9udGU6IElCR0UvUE1FLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNyb0JILiIsDQogICAgICAgICAgICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEwcHgiLCBjb2xvciA9ICIjNzc3Nzc3IikpDQpgYGANCg0KQSBzw6lyaWUgYnJ1dGEgKGxpbmhhIGFtYXJlbGEpLCBubyBlbnRhbnRvLCBhcHJlc2VudGEgdW0gcGFkcsOjbyBzYXpvbmFsIGluZGVwZW5kZW50ZSBkbyBjaWNsbzogcXVlZGEgbm8gZmltIGRvIGFubywgcHV4YWRhIHBvciBjb250cmF0YcOnw7VlcyB0ZW1wb3LDoXJpYXMgZSBwYWdhbWVudG8gZG8gMTPCuiwgc2VndWlkYSBkZSBhbHRhIGVtIGphbmVpcm8uIFBhcmEgYW5hbGlzYXIgYSB0ZW5kw6puY2lhLCB1dGlsaXpvdS1zZSBhIG3DqWRpYSBtw7N2ZWwgZGUgMTIgbWVzZXMgKGxpbmhhIGF6dWwpLg0KDQpBIG3DqWRpYSBtw7N2ZWwgZXZpZGVuY2lhIGR1YXMgZmFzZXMuIE5vcyBwcmltZWlyb3MgbWVzZXMgZGUgMjAwOSwgbyBkZXNlbXByZWdvIGFpbmRhIHNvYmUsIHJlZmxldGluZG8gYXMgZGVtaXNzw7VlcyBwdXhhZGFzIHBlbGEgY3Jpc2UgZmluYW5jZWlyYSBpbnRlcm5hY2lvbmFsIGVtIDIwMDguIEEgcGFydGlyIGRvIGluw61jaW8gZGUgMjAxMCwgYSBxdWVkYSDDqSBwcmF0aWNhbWVudGUgaW5pbnRlcnJ1cHRhIGF0w6kgbyBmaW0gZGEgZXhwYW5zw6NvLiBObyBkYWRvIGJydXRvLCBhIFBNRSBwYXJ0ZSBkZSA4LDIlIGVtIGphbmVpcm8gZGUgMjAwOSwgYXRpbmdlIG8gcGljbyBkZSA5JSBlbSBtYXLDp28gZG8gbWVzbW8gYW5vIGUgY2hlZ2EgYSA1JSBlbSBtYXLDp28gZGUgMjAxNC4NCg0KW14yXSBOb3RhOiBQZXNxdWlzYSBNZW5zYWwgZGUgRW1wcmVnbyAoUE1FKSwgcmVhbGl6YWRhIHBlbG8gSUJHRSBlbSBzZWlzIHJlZ2nDtWVzIG1ldHJvcG9saXRhbmFzIChCZWxvIEhvcml6b250ZSwgU8OjbyBQYXVsbywgUmlvIGRlIEphbmVpcm8sIFJlY2lmZSwgU2FsdmFkb3IsIGUgUG9ydG8gQWxlZ3JlKS4gQSBQTkFEIENvbnTDrW51YSAoUGVzcXVpc2EgTmFjaW9uYWwgcG9yIEFtb3N0cmEgZGUgRG9taWPDrWxpb3MgQ29udMOtbnVhKSwgaG9qZSBmb250ZSBkZSByZWZlcsOqbmNpYSBwYXJhIGEgdGF4YSBkZSBkZXNvY3VwYcOnw6NvLCBzw7MgZm9pIGluaWNpYWRhIGVtIDIwMTIsIHJhesOjbyBwZWxhIHF1YWwgc2Ugb3B0b3UgcGVsYSBQTUUgcGFyYSBjb2JyaXIgbyBwZXLDrW9kbyBhbmFsaXNhZG8gbmVzdGEgc2XDp8Ojby4NCg0KQSBxdWVkYSBkYSBkZXNvY3VwYcOnw6NvLCBjb250dWRvLCBjb250YSBhcGVuYXMgcGFydGUgZGEgaGlzdMOzcmlhLiBBIGZvcm1hbGl6YcOnw6NvIGRvIGVtcHJlZ28gdGFtYsOpbSB0ZXZlIHVtIHBhcGVsIGltcG9ydGFudGUgbmEgYW1wbGlhw6fDo28gZG8gY29uc3Vtby4NCg0KKipHcsOhZmljbyA1OioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbWVyY2Fkb190cmFiYWxobyA8LSBkYXRhLmZyYW1lKA0KICBhbm8gPSAyMDAzOjIwMTQsDQogIGNvbV9jYXJ0ZWlyYSA9IGMoNDEuNiwgNDEuMCwgNDIuMCwgNDMuMiwgNDQuMiwgNDYuMCwgNDYuNSwgNDguMiwgNTAuNCwgNTEuMSwgNTIuMSwgNTIuNiksDQogIHNlbV9jYXJ0ZWlyYSA9IGMoMTcuMCwgMTcuNCwgMTcuMCwgMTYuMiwgMTUuNCwgMTQuOCwgMTQuMSwgMTMuNCwgMTIuNCwgMTEuOSwgMTEuMCwgOS44OCkNCikNCg0KaGlnaGNoYXJ0KCkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgc3BhY2luZ1RvcCA9IDIwLCBzcGFjaW5nUmlnaHQgPSAyMCwNCiAgICBzcGFjaW5nQm90dG9tID0gMjAsIHNwYWNpbmdMZWZ0ID0gMjANCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBuYW1lID0gIkNvbSBjYXJ0ZWlyYSBhc3NpbmFkYSIsDQogICAgZGF0YSA9IG1lcmNhZG9fdHJhYmFsaG8kY29tX2NhcnRlaXJhLA0KICAgIGNvbG9yID0gIiMwMjAyM0MiDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgbmFtZSA9ICJTZW0gY2FydGVpcmEgYXNzaW5hZGEiLA0KICAgIGRhdGEgPSBtZXJjYWRvX3RyYWJhbGhvJHNlbV9jYXJ0ZWlyYSwNCiAgICBjb2xvciA9ICIjRkVCMDE1Ig0KICApICU+JQ0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gYXMuY2hhcmFjdGVyKG1lcmNhZG9fdHJhYmFsaG8kYW5vKSwNCiAgICBsaW5lQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgdGlja0NvbG9yID0gIiNEOUQ5RDkiLA0KICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSkNCiAgKSAlPiUNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KA0KICAgICAgdGV4dCA9ICIlIGRvIHRvdGFsIGRlIG9jdXBhZG9zIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTJweCIpDQogICAgKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNFNkU2RTYiLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpLA0KICAgICAgZm9ybWF0ID0gInt2YWx1ZX0lIg0KICAgICkNCiAgKSAlPiUNCiAgaGNfcGxvdE9wdGlvbnMoDQogICAgY29sdW1uID0gbGlzdCgNCiAgICAgIGJvcmRlcldpZHRoID0gMCwNCiAgICAgIGdyb3VwUGFkZGluZyA9IDAuMSwNCiAgICAgIHBvaW50UGFkZGluZyA9IDAuMDUNCiAgICApLA0KICAgIHNlcmllcyA9IGxpc3QoDQogICAgICBhbmltYXRpb24gPSBGQUxTRSwNCiAgICAgIHN0YXRlcyA9IGxpc3QoaW5hY3RpdmUgPSBsaXN0KG9wYWNpdHkgPSAxKSkNCiAgICApDQogICkgJT4lDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiRm9ybWFsaXphw6fDo28gZG8gTWVyY2FkbyBkZSBUcmFiYWxobyDigJQgQnJhc2lsIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIkRpc3RyaWJ1acOnw6NvIHBlcmNlbnR1YWwgZG9zIG9jdXBhZG9zIOKAlCByZWdpw7VlcyBtZXRyb3BvbGl0YW5hcyDigJQgMjAwMyBhIDIwMTQiLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxM3B4IiwgY29sb3IgPSAiIzY2NjY2NiIpDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgYm9yZGVyQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgYm9yZGVyUmFkaXVzID0gOCwNCiAgICBzaGFkb3cgPSBGQUxTRSwNCiAgICB2YWx1ZVN1ZmZpeCA9ICIlIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCINCiAgKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBJQkdFL1BNRSDigJQgUmV0cm9zcGVjdGl2YSAyMDAzLTIwMTQuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvQkguIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTBweCIsIGNvbG9yID0gIiM3Nzc3NzciKQ0KICApDQpgYGANCg0KQ29tbyBvYnNlcnZhZG8gbm8gZ3LDoWZpY28gNSwgYSBwYXJjZWxhIGRlIHRyYWJhbGhhZG9yZXMgY29tIGNhcnRlaXJhIGFzc2luYWRhIGluaWNpYSB0cmFqZXTDs3JpYSBkZSBleHBhbnPDo28gZW0gMjAwNCwgc2FpbmRvIGRlIDQxJSBlIGF0aW5naW5kbyA1Miw2JSBlbSAyMDE0LiBObyBtZXNtbyBwZXLDrW9kbywgbyB0cmFiYWxobyBzZW0gY2FydGVpcmEgcmVjdWEgZGUgMTcsNCUgcGFyYSA5LDklLg0KDQpBbMOpbSBkZSBnYXJhbnRpciBtYWlvciBlc3RhYmlsaWRhZGUgZGUgcmVuZGEsIGEgZm9ybWFsaXphw6fDo28gZG8gdHJhYmFsaG8gYW1wbGlhIG8gYWNlc3NvIGEgYmVuZWbDrWNpb3MgLSBjb21vIGNyw6lkaXRvIGNvbnNpZ25hZG8sIEZHVFMgcXVlIHZpYWJpbGl6YSBvIGZpbmFuY2lhbWVudG8gaGFiaXRhY2lvbmFsLCAxM8K6IHNhbMOhcmlvLCBlIGbDqXJpYXMgcmVtdW5lcmFkYXMuIEVzc2UgY29uanVudG8gcmVkdXogYSBpbnNlZ3VyYW7Dp2EgZGFzIGZhbcOtbGlhcywgYXVtZW50YW5kbyBhIHByb3BlbnPDo28gbWFyZ2luYWwgYSBjb25zdW1pci4NCg0KRW0gb3V0cmFzIHBhbGF2cmFzLCBhIG1haW9yIGVzdGFiaWxpZGFkZSBkYSByZW5kYSBlIGRhcyBjb25kacOnw7VlcyBkZSB2aWRhIGNvbnRyaWJ1aXUgcGFyYSBzdXN0ZW50YXIgYSBleHBhbnPDo28gZGEgZGVtYW5kYSBpbnRlcm5hIGFvIGxvbmdvIGRvIHBlcsOtb2RvLiANCg0KIyMjIDEuMi4zIERlc2VtcGVuaG8gc2V0b3JpYWwNCg0KQSBhbsOhbGlzZSBkbyBQSUIgZnVuY2lvbmEsIGFxdWksIGNvbW8gdW1hIGZvcm1hIGRlIGNvbnNvbGlkYXIgb3MgbW92aW1lbnRvcyBvYnNlcnZhZG9zIGF0w6kgZW50w6NvLiBPIFByb2R1dG8gSW50ZXJubyBCcnV0byBjcmVzY2V1IGRlIGZvcm1hIHN1c3RlbnRhZGEgYW8gbG9uZ28gZGUgdG9kbyBvIGNpY2xvLCBtYXMgw6kgbmVjZXNzw6FyaW8gYW5hbGlzYXIgbyBxdWUgY3Jlc2NldS4gTyBncsOhZmljbyA2IGRlc2FncmVnYSBvIHByb2R1dG8gcG9yIHNldG9yLiANCg0KKipHcsOhZmljbyA2OioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KcGliX3BsYW5pbGhhIDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL3JvYmVyL09uZURyaXZlL0liTWFjcm8vUElCYXJlYS54bHN4Iiwgc2tpcCA9IDEpDQoNCnBpYiA8LSBwaWJfcGxhbmlsaGEgJT4lDQogIHNsaWNlKC0xLCAtMikgJT4lDQogIHJlbmFtZSh0cmltZXN0cmUgPSBCcmFzaWwsIHNldG9yID0gLi4uMiwgdmFsb3IgPSAuLi4zKSAlPiUNCiAgZmlsbCh0cmltZXN0cmUsIC5kaXJlY3Rpb24gPSAiZG93biIpICU+JSANCiAgZmlsdGVyKHNldG9yICVpbiUgYygiQWdyb3BlY3XDoXJpYSAtIHRvdGFsIiwgDQogICAgICAgICAgICAgICAgICAgICAgIkluZMO6c3RyaWEgLSB0b3RhbCIsIA0KICAgICAgICAgICAgICAgICAgICAgICJTZXJ2acOnb3MgLSB0b3RhbCIpKSAlPiUNCiAgbXV0YXRlKA0KICAgIGFubyA9IGFzLmludGVnZXIoc3Vic3RyKHRyaW1lc3RyZSwgbmNoYXIodHJpbWVzdHJlKS0zLCBuY2hhcih0cmltZXN0cmUpKSksDQogICAgdHJpbSA9IGNhc2Vfd2hlbigNCiAgICAgIGdyZXBsKCIxwroiLCB0cmltZXN0cmUpIH4gMSwNCiAgICAgIGdyZXBsKCIywroiLCB0cmltZXN0cmUpIH4gMiwNCiAgICAgIGdyZXBsKCIzwroiLCB0cmltZXN0cmUpIH4gMywNCiAgICAgIGdyZXBsKCI0wroiLCB0cmltZXN0cmUpIH4gNA0KICAgICksDQogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0iLCB0cmltICogMyAtIDIsICItMDEiKSksDQogICAgZGF0YV9tcyA9IGFzLmRvdWJsZShkaWZmdGltZShkYXRhLCBhcy5EYXRlKCIxOTcwLTAxLTAxIiksIHVuaXRzID0gInNlY3MiKSkgKiAxMDAwLA0KICAgIHNldG9yID0gY2FzZV93aGVuKA0KICAgICAgZ3JlcGwoIkFncm8iLCBzZXRvcikgfiAiQWdyb3BlY3XDoXJpYSIsDQogICAgICBncmVwbCgiSW5kIiwgc2V0b3IpIH4gIkluZMO6c3RyaWEiLA0KICAgICAgZ3JlcGwoIlNlcnYiLCBzZXRvcikgfiAiU2VydmnDp29zIg0KICAgICkNCiAgKSAlPiUNCiAgZmlsdGVyKGRhdGEgPj0gYXMuRGF0ZSgiMjAwOS0wMS0wMSIpICYgZGF0YSA8PSBhcy5EYXRlKCIyMDE0LTAzLTAxIikpDQoNCmFncm8gPC0gcGliIHw+IGZpbHRlcihzZXRvciA9PSAiQWdyb3BlY3XDoXJpYSIpDQppbmQgIDwtIHBpYiB8PiBmaWx0ZXIoc2V0b3IgPT0gIkluZMO6c3RyaWEiKQ0Kc2VydiA8LSBwaWIgfD4gZmlsdGVyKHNldG9yID09ICJTZXJ2acOnb3MiKQ0KDQpncmFmaWNvX3BpYl9zZXRvciA8LSBoaWdoY2hhcnQoKSAlPiUNCiAgaGNfdGl0bGUodGV4dCA9ICJQSUIgcG9yIFNldG9yIC0gQnJhc2lsIiwgYWxpZ24gPSAiY2VudGVyIikgJT4lDQogIGhjX3N1YnRpdGxlKHRleHQgPSAiVmFsb3JlcyBhIHByZcOnb3MgY29ycmVudGVzIChSJCBtaWxow7VlcykgLSAxVDIwMDkgYSAxVDIwMTQiLCBhbGlnbiA9ICJjZW50ZXIiKSAlPiUNCiAgaGNfYWRkX3NlcmllcyhkYXRhID0gYWdybywgdHlwZSA9ICJsaW5lIiwgaGNhZXMoeCA9IGRhdGFfbXMsIHkgPSB2YWxvciksDQogICAgICAgICAgICAgICAgbmFtZSA9ICJBZ3JvcGVjdcOhcmlhIiwgY29sb3IgPSAiIzQ2QjFFMSIpICU+JQ0KICBoY19hZGRfc2VyaWVzKGRhdGEgPSBpbmQsIHR5cGUgPSAibGluZSIsIGhjYWVzKHggPSBkYXRhX21zLCB5ID0gdmFsb3IpLA0KICAgICAgICAgICAgICAgIG5hbWUgPSAiSW5kw7pzdHJpYSIsIGNvbG9yID0gIiNGRUIwMTUiKSAlPiUNCiAgaGNfYWRkX3NlcmllcyhkYXRhID0gc2VydiwgdHlwZSA9ICJsaW5lIiwgaGNhZXMoeCA9IGRhdGFfbXMsIHkgPSB2YWxvciksDQogICAgICAgICAgICAgICAgbmFtZSA9ICJTZXJ2acOnb3MiLCBjb2xvciA9ICIjMDIwMjNDIikgJT4lDQogIGhjX3hBeGlzKA0KICAgIHR5cGUgPSAiZGF0ZXRpbWUiLA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIlBlcsOtb2RvIiksDQogICAgbGFiZWxzID0gbGlzdCgNCiAgICAgIGZvcm1hdHRlciA9IEpTKCJmdW5jdGlvbigpIHsNCiAgICAgICAgdmFyIG1lc2VzID0gWydKYW4nLCAnRmV2JywgJ01hcicsICdBYnInLCAnTWFpJywgJ0p1bicsDQogICAgICAgICAgICAgICAgICAgICAnSnVsJywgJ0FnbycsICdTZXQnLCAnT3V0JywgJ05vdicsICdEZXonXTsNCiAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZSh0aGlzLnZhbHVlKTsNCiAgICAgICAgcmV0dXJuIG1lc2VzW2QuZ2V0TW9udGgoKV0gKyAnIFxcJycgKyANCiAgICAgICAgICAgICAgIFN0cmluZyhkLmdldEZ1bGxZZWFyKCkpLnNsaWNlKDIpOw0KICAgICAgfSIpDQogICAgKQ0KICApICU+JQ0KICBoY19yYW5nZVNlbGVjdG9yKA0KICAgIHNlbGVjdGVkID0gNSwNCiAgICBidXR0b25zID0gbGlzdCgNCiAgICAgIGxpc3QodHlwZSA9ICJ5ZWFyIiwgY291bnQgPSAxLCB0ZXh0ID0gIjFhIiksDQogICAgICBsaXN0KHR5cGUgPSAieWVhciIsIGNvdW50ID0gMywgdGV4dCA9ICIzYSIpLA0KICAgICAgbGlzdCh0eXBlID0gInllYXIiLCBjb3VudCA9IDUsIHRleHQgPSAiNWEiKSwNCiAgICAgIGxpc3QodHlwZSA9ICJhbGwiLCB0ZXh0ID0gIlR1ZG8iKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSAlPiUNCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX3lBeGlzKHRpdGxlID0gbGlzdCh0ZXh0ID0gIlIkIG1pbGjDtWVzIikpICU+JQ0KICBoY190b29sdGlwKHZhbHVlU3VmZml4ID0gIiBtaSIsIHNoYXJlZCA9IFRSVUUpICU+JQ0KICBoY19jcmVkaXRzKGVuYWJsZWQgPSBUUlVFLA0KICAgICAgICAgICAgIHRleHQgPSAiRm9udGU6IElCR0UvQ29udGFzIE5hY2lvbmFpcy4gRWxhYm9yYcOnw6NvIHByw7NwcmlhIEliTWFjcm9CSC4iKQ0KDQpncmFmaWNvX3BpYl9zZXRvcg0KDQpgYGANCg0KU2VydmnDp29zIGrDoSByZXNwb25kaWFtIHBlbGEgbWFpb3IgZmF0aWEgZG8gUElCIGVtIDIwMDkgKGFwcm94aW1hZGFtZW50ZSBSXCQ0NTMgYmlsaMO1ZXMpIGUgcXVhc2UgZG9icmFyYW0gYXTDqSBvIGluw61jaW8gZGUgMjAxNCAoUlwkODMxIGJpbGjDtWVzKS4gQSBpbmTDunN0cmlhIHNhaXUgZGUgUlwkMTUyIGJpbGjDtWVzIHBhcmEgUlwkMjgyIGJpbGjDtWVzLCBlbnF1YW50byBhIGFncm9wZWN1w6FyaWEgcGFzc291IGRlIFJcJDQxIGJpbGjDtWVzIHBhcmEgUiQ3NCBiaWxow7Vlcy4gRW0gdGVybW9zIGFic29sdXRvcywgdG9kb3Mgb3Mgc2V0b3JlcyBjcmVzY2VyYW0uDQpPIHBvbnRvLCBwb3LDqW0sIGVzdMOhIG5hcyBwYXJ0aWNpcGHDp8O1ZXMgcmVsYXRpdmFzLiBFbSAyMDA5LCBvcyBzZXJ2acOnb3MgcmVwcmVzZW50YXZhbSBhcHJveGltYWRhbWVudGUgNzAlIGRvIFBJQiwgYSBpbmTDunN0cmlhIGNlcmNhIGRlIDIzJSBlIGEgYWdyb3BlY3XDoXJpYSBhcHJveGltYWRhbWVudGUgNiUuIEVtIDIwMTQsIGVzc2VzIG7Dum1lcm9zIHBlcm1hbmVjZXJhbSBwcmF0aWNhbWVudGUgaW5hbHRlcmFkb3MuIEEgZXN0cnV0dXJhIHByb2R1dGl2YSBicmFzaWxlaXJhIG7Do28gc2UgdHJhbnNmb3Jtb3UgYW8gbG9uZ28gZGUgY2luY28gYW5vcyBkZSBleHBhbnPDo28gZWNvbsO0bWljYS4NCg0KTWVzbW8gZW0gdW0gcGVyw61vZG8gZGUgY3Jlc2NpbWVudG8sIGrDoSBlcmEgcG9zc8OtdmVsIGlkZW50aWZpY2FyIGZyYWdpbGlkYWRlcyBlc3RydXR1cmFpcyBpbXBvcnRhbnRlcy4gTyBjaWNsbyBkZSBleHBhbnPDo28gc3VzdGVudGFkbyBwb3IgY3LDqWRpdG8sIGNvbnN1bW8gZSBmb3JtYWxpemHDp8OjbyBkbyB0cmFiYWxobyBuw6NvIGZvaSBhY29tcGFuaGFkbyBwb3IgbXVkYW7Dp2FzIHJlbGV2YW50ZXMgbmEgY29tcG9zacOnw6NvIGRhIGVjb25vbWlhLiANCg0KIyMgMS4zIEFzIGZyYWdpbGlkYWRlcyBvY3VsdGFzDQoNCk1lc21vIGVtIHBlcsOtb2RvcyBkZSBleHBhbnPDo28sIMOpIHBvc3PDrXZlbCBpZGVudGlmaWNhciBmcmFnaWxpZGFkZXMgcXVlIGV2ZW50dWFsbWVudGUgcG9kZW0gY29udHJpYnVpciBwYXJhIHVtYSBjcmlzZSBmdXR1cmEuIEEgdGVvcmlhIGRvcyBjaWNsb3MgZWNvbsO0bWljb3MgcGFydGUgYSBpZGVpYSBkZSBxdWUgcmVjZXNzw7VlcyBlIGV4cGFuc8O1ZXMgc8OjbyByZWNvcnJlbnRlcywgYWluZGEgcXVlIG7Do28gcGVyacOzZGljYXMgLSBvdSBzZWphLCBuw6NvIMOpIHBvc3PDrXZlbCBzYWJlciBxdWFuZG8gY2FkYSBmYXNlIGlyw6EgY29tZcOnYXIgb3UgdGVybWluYXIsIG1hcyBzYWJlLXNlIHF1ZSBhbWJhcyB0ZW5kZW0gYSBzZSBhbHRlcm5hciBhbyBsb25nbyBkbyB0ZW1wby4NCk5lc3NlIHNlbnRpZG8sIHBlcsOtb2RvcyBkZSBwcm9zcGVyaWRhZGUgbsOjbyBkZXZlbSBzZXIgYW5hbGlzYWRvcyBhcGVuYXMgcGVsb3Mgc2V1cyByZXN1bHRhZG9zIHBvc2l0aXZvcyBkZSBjdXJ0byBwcmF6by4gTyBjcmVzY2ltZW50byBlY29uw7RtaWNvIHBvZGUgb2N1bHRhciBkZXNlcXVpbMOtYnJpb3MgcXVlIHPDsyBzZSB0b3JuYW0gcGxlbmFtZW50ZSB2aXPDrXZlaXMgcXVhbmRvIG8gcGHDrXMgZW50cmEgZW0gcmVjZXNzw6NvLiBBc3NpbSwgYW5hbGlzYXIgYXMgZnJhZ2lsaWRhZGVzIGNvbnN0cnXDrWRhcyBkdXJhbnRlIGEgZXhwYW5zw6NvIGFqdWRhIGEgY29tcHJlZW5kZXIgbsOjbyBhcGVuYXMgb3MgZmF0b3JlcyBxdWUgY29udHJpYnXDrXJhbSBwYXJhIGEgcmVjZXNzw6NvIHBvc3RlcmlvciwgbWFzIG9zIHByw7NwcmlvcyBsaW1pdGVzIGRvIGNyZXNjaW1lbnRvIGRvIHBhw61zLg0KDQojIyMgMS4zLjEgSW52ZXN0aW1lbnRvIHByb2R1dGl2bw0KDQpVbSBpbmRpY2Fkb3IgZXh0cmVtYW1lbnRlIHJlbGV2YW50ZSBwYXJhIGFuYWxpc2FyIGEgc3VzdGVudGFiaWxpZGFkZSBkbyBjcmVzY2ltZW50byBlY29uw7RtaWNvIMOpIGEgRm9ybWHDp8OjbyBCcnV0YSBkZSBDYXBpdGFsIEZpeG8gKEZCQ0YpLCBxdWUgbWVkZSBvcyBpbnZlc3RpbWVudG9zIHJlYWxpemFkb3MgZW0gYXRpdm9zIHByb2R1dGl2b3MsIGNvbW8gbcOhcXVpbmFzLCBlcXVpcGFtZW50b3MsIGNvbnN0cnXDp8OjbywgZSBpbmZyYWVzdHJ1dHVyYS4gRW0gZ2VyYWwsIGVzc2UgaW5kaWNhZG9yIGZ1bmNpb25hIGNvbW8gdW1hIHNpbmFsaXphw6fDo28gZGEgY2FwYWNpZGFkZSBmdXR1cmEgZGUgZXhwYW5zw6NvIGRhIHByb2R1w6fDo28gZSBkbyBhdW1lbnRvIGRhIHByb2R1dGl2aWRhZGUgZGEgZWNvbm9taWEsIHBvZGVuZG8gc2VyIG9ic2VydmFkbyBubyBncsOhZmljbyA3LiANCg0KKipHcsOhZmljbyA3OioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KZmJjZiA8LSBkYXRhLmZyYW1lKA0KICBwZXJpb2RvID0gYygiMjAwOSBUMSIsICIyMDA5IFQyIiwgIjIwMDkgVDMiLCAiMjAwOSBUNCIsDQogICAgICAgICAgICAgICIyMDEwIFQxIiwgIjIwMTAgVDIiLCAiMjAxMCBUMyIsICIyMDEwIFQ0IiwNCiAgICAgICAgICAgICAgIjIwMTEgVDEiLCAiMjAxMSBUMiIsICIyMDExIFQzIiwgIjIwMTEgVDQiLA0KICAgICAgICAgICAgICAiMjAxMiBUMSIsICIyMDEyIFQyIiwgIjIwMTIgVDMiLCAiMjAxMiBUNCIsDQogICAgICAgICAgICAgICIyMDEzIFQxIiwgIjIwMTMgVDIiLCAiMjAxMyBUMyIsICIyMDEzIFQ0IiwNCiAgICAgICAgICAgICAgIjIwMTQgVDEiKSwNCiAgdmFyaWFjYW8gPSBjKC05LjQ5LCAtOC4yOSwgLTMuODYsIDEyLjk1LA0KICAgICAgICAgICAgICAgMjkuMDAsIDIyLjkyLCAxNS4yNiwgNy43OSwNCiAgICAgICAgICAgICAgIDguMjMsIDguMTMsIDUuNzYsIDUuNDYsDQogICAgICAgICAgICAgICAzLjE0LCAxLjExLCAtMS40OSwgMC42MSwNCiAgICAgICAgICAgICAgIDIuOTUsIDguNDksIDcuMzUsIDQuNDMsDQogICAgICAgICAgICAgICA0LjE2KQ0KKSAlPiUNCiAgbXV0YXRlKA0KICAgIGFubyA9IGFzLmludGVnZXIoc3Vic3RyKHBlcmlvZG8sIDEsIDQpKSwNCiAgICB0cmltID0gYXMuaW50ZWdlcihzdWJzdHIocGVyaW9kbywgNywgNykpLA0KICAgIGRhdGEgPSBhcy5EYXRlKHBhc3RlMChhbm8sICItIiwgZm9ybWF0Qyh0cmltICogMyAtIDIsIHdpZHRoID0gMiwgZmxhZyA9ICIwIiksICItMTUiKSksDQogICAgZGF0YV9tcyA9IGFzLm51bWVyaWMoYXMuUE9TSVhjdChkYXRhLCB0eiA9ICJVVEMiKSkgKiAxMDAwDQogICkNCg0KZGFkb3MgPC0gZmJjZiAlPiUNCiAgc2VsZWN0KHRpbWVzdGFtcCA9IGRhdGFfbXMsIHZhcmlhY2FvKQ0KDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19jaGFydCgNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgc3BhY2luZ1RvcCA9IDIwLA0KICAgIHNwYWNpbmdSaWdodCA9IDIwLA0KICAgIHNwYWNpbmdCb3R0b20gPSAyMCwNCiAgICBzcGFjaW5nTGVmdCA9IDIwDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zKSwNCiAgICB0eXBlID0gImNvbHVtbiIsDQogICAgbmFtZSA9ICJGQkNGIC0gVmFyaWHDp8OjbyBhbnVhbCAoJSkuIiwNCiAgICBjb2xvciA9ICIjRkVCMDE1IiwNCiAgICBib3JkZXJDb2xvciA9ICIjRkVCMDE1IiwNCiAgICBwb2ludFBhZGRpbmcgPSAwLjA4LA0KICAgIGdyb3VwUGFkZGluZyA9IDAuMTAsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIsIHZhbHVlU3VmZml4ID0gIiUiKQ0KICApICU+JQ0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ID0gIlZhcmlhw6fDo28gYW51YWwgKCUpIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTJweCIpDQogICAgKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNFNkU2RTYiLA0KICAgIGdyaWRMaW5lV2lkdGggPSAxLA0KICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSksDQogICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHZhbHVlID0gMCwNCiAgICAgICAgd2lkdGggPSAxLjUsDQogICAgICAgIGNvbG9yID0gIiM5RTlFOUUiLA0KICAgICAgICBkYXNoU3R5bGUgPSAiU2hvcnREYXNoIiwNCiAgICAgICAgekluZGV4ID0gNQ0KICAgICAgKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgbGluZUNvbG9yID0gIiNEOUQ5RDkiLA0KICAgIHRpY2tDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IikpDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIHNlcmllcyA9IGxpc3QoDQogICAgICBhbmltYXRpb24gPSBGQUxTRSwNCiAgICAgIHN0YXRlcyA9IGxpc3QoaW5hY3RpdmUgPSBsaXN0KG9wYWNpdHkgPSAxKSkNCiAgICApLA0KICAgIGNvbHVtbiA9IGxpc3QoYm9yZGVyV2lkdGggPSAwKQ0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIkZvcm1hw6fDo28gQnJ1dGEgZGUgQ2FwaXRhbCBGaXhvIG5vIEJyYXNpbCIsDQogICAgc3R5bGUgPSBsaXN0KA0KICAgICAgZm9udFNpemUgPSAiMjBweCIsDQogICAgICBmb250V2VpZ2h0ID0gImJvbGQiLA0KICAgICAgY29sb3IgPSAiIzExMTExMSINCiAgICApDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiVmFyaWHDp8OjbyBhbnVhbCAoJSkgLSAxVDIwMDkgYSAxVDIwMTQgLSBtw6lkaWEgMTk5NSA9IDEwMCIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEzcHgiLCBjb2xvciA9ICIjNjY2NjY2IikNCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiwNCiAgICBib3JkZXJDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICBib3JkZXJSYWRpdXMgPSA4LA0KICAgIHNoYWRvdyA9IEZBTFNFLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBGQUxTRSkgfD4NCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gRkFMU0UpIHw+DQogIGhjX25hdmlnYXRvcihlbmFibGVkID0gRkFMU0UpIHw+DQogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gRkFMU0UpIHw+DQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogSUJHRS9Db250YXMgTmFjaW9uYWlzLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNyb0JILiIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEwcHgiLCBjb2xvciA9ICIjNzc3Nzc3IikNCiAgKQ0KYGBgDQoNCk8gZ3LDoWZpY28gNyBhcHJlc2VudGEgYSB2YXJpYcOnw6NvIHBlcmNlbnR1YWwgYW51YWwgZGEgRkJDRiBhbyBsb25nbyBkbyBwZXLDrW9kby4gQXDDs3MgYSBjcmlzZSBpbnRlcm5hY2lvbmFsIGRlIDIwMDgsIG9ic2VydmEtc2UgdW1hIGZvcnRlIHJlY3VwZXJhw6fDo28gZG8gaW52ZXN0aW1lbnRvLiBBIHRheGEsIHF1ZSBlc3RhdmEgcHLDs3hpbWEgZGUgLTMsOSUgZW0ganVsaG8gZGUgMjAwOSwgc2FsdG91IHBhcmEgdmFsb3JlcyBwb3NpdGl2b3MsIGF0aW5naW5kbyBjZXJjYSBkZSAyOSUgZW0gamFuZWlybyBkZSAyMDEwLiBQYXJ0ZSBkZXNzZSBtb3ZpbWVudG8gw6kgZXNwZXJhZGEsIGrDoSBxdWUgcGVyw61vZG9zIHDDs3MtY3Jpc2UgY29zdHVtYW0gYXByZXNlbnRhciByZWN1cGVyYcOnw7VlcyBwZXJjZW50dWFpcyBtYWlzIGZvcnRlcywgZXNwZWNpYWxtZW50ZSBwb3JxdWUgbyBpbnZlc3RpbWVudG8gdGVuZGUgYSBzZSByZXRyYWlyIGR1cmFudGUgbW9tZW50b3MgZGUgaW5zdGFiaWxpZGFkZSBlY29uw7RtaWNhLg0KDQpPIHByaW5jaXBhbCBwb250byBkZSBhbsOhbGlzZSwgcG9yw6ltLCBlc3TDoSBubyBjb21wb3J0YW1lbnRvIHBvc3Rlcmlvci4gRW1ib3JhIG8gY2ljbG8gZGUgZXhwYW5zw6NvIGJyYXNpbGVpcm8gdGVuaGEgc2UgZW5jZXJyYWRvIG9maWNpYWxtZW50ZSBlbSAyMDE0LCBvIHBpY28gZG8gaW52ZXN0aW1lbnRvIG9jb3JyZXUgYWluZGEgbm8gaW7DrWNpbyBkZSAyMDEwLiBBIHBhcnRpciBkZXNzZSBwb250bywgYSB0cmFqZXTDs3JpYSBkYSBGQkNGIHBhc3NhIGEgYXByZXNlbnRhciBkZXNhY2VsZXJhw6fDo28gZSBvc2NpbGHDp8O1ZXMgLSBhdGluZ2luZG8gaW5jbHVzaXZlIGNyZXNjaW1lbnRvIG5lZ2F0aXZvIGRlIC0xLDQ5JSAgZW0ganVsaG8gZGUgMjAxMiwgbWVzbW8gZGVudHJvIGRvIHBlcsOtb2RvIGRlIGV4cGFuc8Ojby4NCg0KSXNzbyBzdWdlcmUgYSBhdXPDqm5jaWEgZGUgdW0gcGFkcsOjbyBkZSBpbnZlc3RpbWVudG8gcHJvZHV0aXZvOiBtZXNtbyBlbSB1bSBjZW7DoXJpbyBkZSBjcmVzY2ltZW50byBlY29uw7RtaWNvLCBvIGludmVzdGltZW50byBuw6NvIGNvbnNlZ3VpdSBtYW50ZXIgdW1hIHRyYWpldMOzcmlhIGNvbnTDrW51YSBkZSBmb3J0YWxlY2ltZW50by4gRXNzZSBtb3ZpbWVudG8gw6kgcmVsZXZhbnRlLCBwb3JxdWUgbyBpbnZlc3RpbWVudG8gcHJvZHV0aXZvIMOpIHVtIGRvcyBwcmluY2lwYWlzIG1lY2FuaXNtb3MgY2FwYXplcyBkZSBhbXBsaWFyIGEgY2FwYWNpZGFkZSBwcm9kdXRpdmEgZSBlbGV2YXIgYSBwcm9kdXRpdmlkYWRlIGRhIGVjb25vbWlhIG5vIGxvbmdvIHByYXpvLg0KQXNzaW0sIGEgZGVzYWNlbGVyYcOnw6NvIGRhIEZvcm1hw6fDo28gQnJ1dGEgZGUgQ2FwaXRhbCBGaXhvIGFudGVzIG1lc21vIGRvIGVuY2VycmFtZW50byBvZmljaWFsIGRvIGNpY2xvIGRlIGV4cGFuc8OjbyBqw6Egc2luYWxpemF2YSBsaW1pdGHDp8O1ZXMgZXN0cnV0dXJhaXMgaW1wb3J0YW50ZXMgZGEgZWNvbm9taWEgYnJhc2lsZWlyYS4NCg0KDQojIyMgMS4zLjIgUHJvZHV0aXZpZGFkZQ0KDQpEZXBvaXMgZGEgYW7DoWxpc2UgZG8gUElCLCBkbyBlbXByZWdvLCBkbyBjb25zdW1vLCBlIGRvIGludmVzdGltZW50byBwcm9kdXRpdm8sIGNhYmUgb2JzZXJ2YXIgc2UgbyBjcmVzY2ltZW50byBkbyBwZXLDrW9kbyBmb2kgYWNvbXBhbmhhZG8gcG9yIGdhbmhvcyBkZSBlZmljacOqbmNpYS4gUGFyYSBpc3NvLCBvIGdyw6FmaWNvIDggYXByZXNlbnRhIGEgUHJvZHV0aXZpZGFkZSBUb3RhbCBkb3MgRmF0b3JlcyAoUFRGKSBkZXNkZSAxOTk1LCBjb20gbyBwZXLDrW9kbyBkZSBleHBhbnPDo28gZW0gZGVzdGFxdWUuDQoNCioqR3LDoWZpY28gODoqKiANCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpwdGYgPC0gZGF0YS5mcmFtZSgNCiAgYW5vID0gMTk5NToyMDE0LA0KICBjb21fY2ggPSBjKDEwMC4wLCA5OS4yLCA5OC42LCA5Ni40LCA5NS44LCA5NC41LCA5Mi42LCA5Mi45LCA5MC44LCA5Mi43LA0KICAgICAgICAgICAgIDkzLjEsIDkyLjMsIDkzLjgsIDk0LjEsIDkzLjIsIDk0LjksIDk2LjEsIDk0LjIsIDkzLjMsIDkxLjIpLA0KICBzZW1fY2ggPSBjKDk2LjQsIDk3LjMsIDk4LjMsIDk4LjQsIDk4LjQsIDk4LjEsIDk3LjMsIDk5LjMsIDk4LjcsIDEwMS4xLA0KICAgICAgICAgICAgIDEwMi42LCAxMDQuNSwgMTA3LjYsIDEwOS41LCAxMTAuNCwgMTEzLjMsIDExNS44LCAxMTUuOCwgMTE2LjEsIDExNS4xKQ0KKSAlPiUNCiAgbXV0YXRlKA0KICAgIGNvbV9jaF9pZHggPSBjb21fY2ggLyBjb21fY2hbYW5vID09IDIwMDhdICogMTAwLA0KICAgIHNlbV9jaF9pZHggPSBzZW1fY2ggLyBzZW1fY2hbYW5vID09IDIwMDhdICogMTAwLA0KICAgIGRhdGEgPSBhcy5EYXRlKHBhc3RlMChhbm8sICItMDEtMDEiKSksDQogICAgZGF0YV9tcyA9IGFzLm51bWVyaWMoYXMuUE9TSVhjdChkYXRhLCB0eiA9ICJVVEMiKSkgKiAxMDAwDQogICkNCg0KZGFkb3NfY29tIDwtIHB0ZiAlPiUgc2VsZWN0KHRpbWVzdGFtcCA9IGRhdGFfbXMsIHZhbG9yID0gY29tX2NoX2lkeCkNCmRhZG9zX3NlbSA8LSBwdGYgJT4lIHNlbGVjdCh0aW1lc3RhbXAgPSBkYXRhX21zLCB2YWxvciA9IHNlbV9jaF9pZHgpDQoNCiMgVGltZXN0YW1wcyBwYXJhIGEgYmFuZGEgMjAwOC0yMDE0DQp0c18yMDA4IDwtIGFzLm51bWVyaWMoYXMuUE9TSVhjdCgiMjAwOC0wMS0wMSIsIHR6ID0gIlVUQyIpKSAqIDEwMDANCnRzXzIwMTQgPC0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KCIyMDE0LTAxLTAxIiwgdHogPSAiVVRDIikpICogMTAwMA0KDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19jaGFydCgNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgc3BhY2luZ1RvcCA9IDIwLCBzcGFjaW5nUmlnaHQgPSAyMCwNCiAgICBzcGFjaW5nQm90dG9tID0gMjAsIHNwYWNpbmdMZWZ0ID0gMjANCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3Nfc2VtKSwNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIG5hbWUgPSAiUFRGIHNlbSBhanVzdGUgZGUgY2FwaXRhbCBodW1hbm8iLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSAzKSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSkNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfY29tKSwNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIG5hbWUgPSAiUFRGIGNvbSBhanVzdGUgZGUgY2FwaXRhbCBodW1hbm8iLA0KICAgIGNvbG9yID0gIiMwMjAyM0MiLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBUUlVFLCByYWRpdXMgPSAzKSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSkNCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgbGluZUNvbG9yID0gIiNEOUQ5RDkiLA0KICAgIHRpY2tDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IikpLA0KICAgIHBsb3RCYW5kcyA9IGxpc3QoDQogICAgICBsaXN0KA0KICAgICAgICBmcm9tID0gdHNfMjAwOCwNCiAgICAgICAgdG8gPSB0c18yMDE0LA0KICAgICAgICBjb2xvciA9ICJyZ2JhKDIsIDIsIDYwLCAwLjA2KSIsDQogICAgICAgIGxhYmVsID0gbGlzdCgNCiAgICAgICAgICB0ZXh0ID0gIlBlcsOtb2RvIGRlIGV4cGFuc8OjbyIsDQogICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMXB4IiwgZm9udFN0eWxlID0gIml0YWxpYyIpLA0KICAgICAgICAgIGFsaWduID0gImNlbnRlciIsDQogICAgICAgICAgdmVydGljYWxBbGlnbiA9ICJ0b3AiLA0KICAgICAgICAgIHkgPSAxNQ0KICAgICAgICApDQogICAgICApDQogICAgKQ0KICApICU+JQ0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QoDQogICAgICB0ZXh0ID0gIsONbmRpY2UgKDIwMDggPSAxMDApIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTJweCIpDQogICAgKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNFNkU2RTYiLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpLA0KICAgICAgZm9ybWF0ID0gInt2YWx1ZX0iDQogICAgKSwNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgPSAxMDAsDQogICAgICAgIHdpZHRoID0gMS41LA0KICAgICAgICBjb2xvciA9ICIjOUU5RTlFIiwNCiAgICAgICAgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIsDQogICAgICAgIHpJbmRleCA9IDUNCiAgICAgICkNCiAgICApDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIHNlcmllcyA9IGxpc3QoDQogICAgICBhbmltYXRpb24gPSBGQUxTRSwNCiAgICAgIHN0YXRlcyA9IGxpc3QoaW5hY3RpdmUgPSBsaXN0KG9wYWNpdHkgPSAxKSkNCiAgICApDQogICkgJT4lDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiUHJvZHV0aXZpZGFkZSBUb3RhbCBkb3MgRmF0b3JlcyDigJQgQnJhc2lsIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIsONbmRpY2UgcmViYXNlYWRvIGVtIDIwMDggPSAxMDAg4oCUIDE5OTUgYSAyMDE0IiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTNweCIsIGNvbG9yID0gIiM2NjY2NjYiKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsDQogICAgY3Jvc3NoYWlycyA9IFRSVUUsDQogICAgYmFja2dyb3VuZENvbG9yID0gIiNGRkZGRkYiLA0KICAgIGJvcmRlckNvbG9yID0gIiNEOUQ5RDkiLA0KICAgIGJvcmRlclJhZGl1cyA9IDgsDQogICAgc2hhZG93ID0gRkFMU0UsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiKQ0KICApICU+JQ0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiDQogICkgJT4lDQogIGhjX3JhbmdlU2VsZWN0b3IoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIHRleHQgPSAiRm9udGU6IEZHVi9JQlJFIOKAlCBPYnNlcnZhdMOzcmlvIGRhIFByb2R1dGl2aWRhZGUgUmVnaXMgQm9uZWxsaS4gRWxhYm9yYcOnw6NvIHByw7NwcmlhIEliTWFjcm9CSC4iLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMHB4IiwgY29sb3IgPSAiIzc3Nzc3NyIpDQogICkNCmBgYA0KDQpBIFBURiDDqSBkZXJpdmFkYSBkZSB1bWEgZnVuw6fDo28gZGUgcHJvZHXDp8OjbywgcXVlIHJlbGFjaW9uYSBvIHByb2R1dG8gY29tIG9zIGZhdG9yZXMgdXRpbGl6YWRvcyBuYSBwcm9kdcOnw6NvLCBxdWUgcG9kZSBzZXIgdmlzdG8gbmEgZXF1YcOnw6NvIDEuDQoNCioqRXF1YcOnw6NvIDE6KioNCiQkDQpZX3QgPSBBX3QgKHVfdCBLX3QpXntcYWxwaGF9IExfdF57MS1cYWxwaGF9DQokJA0KDQpFbSBxdWUsIA0KLSAkWV90JCByZXByZXNlbnRhIG8gcHJvZHV0bzsNCi0gJEFfdCQgcmVwcmVzZW50YSBhIFByb2R1dGl2aWRhZGUgVG90YWwgZG9zIEZhdG9yZXM7DQotICR1X3QgS190JCByZXByZXNlbnRhIG8gY2FwaXRhbCBhanVzdGFkbyBwZWxhIHV0aWxpemHDp8OjbyBkYSBjYXBhY2lkYWRlIGluc3RhbGFkYTsNCi0gJExfdCQgcmVwcmVzZW50YSBvIGZhdG9yIHRyYWJhbGhvOw0KLSAkXGFscGhhJCByZXByZXNlbnRhIGEgcGFydGljaXBhw6fDo28gZG8gY2FwaXRhbCBuYSBwcm9kdcOnw6NvOw0KLSAkMS1cYWxwaGEkIHJlcHJlc2VudGEgYSBwYXJ0aWNpcGHDp8OjbyBkbyB0cmFiYWxobyBuYSBwcm9kdcOnw6NvLg0KDQpJc29sYW5kbyBBLCBvYnTDqW0tc2UgYSBQVEYsIG5hIGVxdWHDp8OjbyAyLg0KDQoqKkVxdWHDp8OjbyAyOioqDQokJA0KQV90ID0gXGZyYWN7WV90fXsodV90IEtfdClee1xhbHBoYX0gTF90XnsxLVxhbHBoYX19DQokJA0KDQpObyBlbnRhbnRvLCBhIGludGVycHJldGHDp8OjbyBkYSBQVEYgbXVkYSBxdWFuZG8gc2UgaW5jb3Jwb3JhIG8gYWp1c3RlIGRlIGNhcGl0YWwgaHVtYW5vLiBTZW0gZXNzZSBhanVzdGUsIHBhcnRlIGRvIGdhbmhvIGFzc29jaWFkbyDDoCBtYWlvciBlc2NvbGFyaWRhZGUgb3UgcXVhbGlmaWNhw6fDo28gZGEgZm9yw6dhIGRlIHRyYWJhbGhvIHBvZGUgYXBhcmVjZXIgaW5kZXZpZGFtZW50ZSBjb21vIGF1bWVudG8gZGUgcHJvZHV0aXZpZGFkZS4gUGFyYSBjb3JyaWdpciBpc3NvLCBvIGZhdG9yIHRyYWJhbGhvIHBhc3NhIGEgc2VyIGFqdXN0YWRvIHBlbG8gw41uZGljZSBkZSBDYXBpdGFsIEh1bWFubyAoSUNIKSwgZXZpZGVuY2lhZG8gbmEgZXF1YcOnw6NvIDMuDQoNCioqRXF1YcOnw6NvIDM6KioNCiQkDQpMX3QgPSBIX3QgXHRpbWVzIFxsZWZ0KFxmcmFje0lDSF90fXsxMDB9XHJpZ2h0KQ0KJCQNCg0KRW0gcXVlOiAtICRIX3QkIHJlcHJlc2VudGEgYXMgaG9yYXMgdHJhYmFsaGFkYXM7DQotICRJQ0hfdCQgcmVwcmVzZW50YSBvIMONbmRpY2UgZGUgQ2FwaXRhbCBIdW1hbm8uDQpWb2x0YW5kbyBhbyBncsOhZmljbyA4LCBhIFBURiBzZW0gYWp1c3RlIGRlIGNhcGl0YWwgaHVtYW5vIChsaW5oYSBhbWFyZWxhKSBhcHJlc2VudGEgdW1hIHRyYWpldMOzcmlhIGRlIGNyZXNjaW1lbnRvIHByYXRpY2FtZW50ZSBjb250w61udWEgZGVzZGUgMTk5NS4gRHVyYW50ZSBvIHBlcsOtb2RvIGRlIGV4cGFuc8OjbyBlY29uw7RtaWNhIGluaWNpYWRvIGVtIDIwMDgsIGVzc2UgY3Jlc2NpbWVudG8gc2UgaW50ZW5zaWZpY2EsIG1hbnRlbmRvLXNlIGVsZXZhZG8gYXTDqSBhcHJveGltYWRhbWVudGUgMjAxMSwgcXVhbmRvIGEgc8OpcmllIHBhc3NhIGEgYXByZXNlbnRhciBjZXJ0YSBlc3RhZ25hw6fDo28gZSwgcG9zdGVyaW9ybWVudGUsIHF1ZWRhLiBPYnNlcnZhbmRvIGFwZW5hcyBlc3NhIHPDqXJpZSwgc2VyaWEgcG9zc8OtdmVsIGNvbmNsdWlyIHF1ZSBvIHBlcsOtb2RvIGZvaSBhY29tcGFuaGFkbyBwb3IgZ2FuaG9zIHJlbGV2YW50ZXMgZGUgcHJvZHV0aXZpZGFkZS4NCk5vIGVudGFudG8sIGVzc2EgaW50ZXJwcmV0YcOnw6NvIHNlIGFsdGVyYSBxdWFuZG8gc2UgYW5hbGlzYSBhIFBURiBjb20gYWp1c3RlIGRlIGNhcGl0YWwgaHVtYW5vIChsaW5oYSBhenVsKS4gQW8gaW5jb3Jwb3JhciBvIElDSCBhbyBmYXRvciB0cmFiYWxobywgcGFydGUgZG8gY3Jlc2NpbWVudG8gYW50ZXJpb3JtZW50ZSBhdHJpYnXDrWRvIMOgIHByb2R1dGl2aWRhZGUgcGFzc2EgYSBzZXIgZXhwbGljYWRhIHBlbGEgbWFpb3IgcXVhbGlmaWNhw6fDo28gZGEgbcOjbyBkZSBvYnJhLiBEdXJhbnRlIHRvZG8gbyBwZXLDrW9kbyBkZSBleHBhbnPDo28sIGEgc8OpcmllIGNvbSBhanVzdGUgcGVybWFuZWNldSBhYmFpeG8gZGEgc8OpcmllIHNlbSBhanVzdGUsIGluZGljYW5kbyBxdWUgb3MgZ2FuaG9zIGVmZXRpdm9zIGRlIHByb2R1dGl2aWRhZGUgZm9yYW0gbGltaXRhZG9zLiBJc3NvIHNpZ25pZmljYSBxdWUgcGFydGUgaW1wb3J0YW50ZSBkbyBjcmVzY2ltZW50byBvYnNlcnZhZG8gbm8gcGVyw61vZG8gZXN0ZXZlIGFzc29jaWFkYSBhbyBhdW1lbnRvIGRhIHF1YWxpZmljYcOnw6NvIGRvcyB0cmFiYWxoYWRvcmVzLCBlIG7Do28gYSBnYW5ob3MgZXN0cnV0dXJhaXMgZGUgZWZpY2nDqm5jaWEgcHJvZHV0aXZhLiBBc3NpbSwgYSBhbsOhbGlzZSBkYSBQVEYgcmVmb3LDp2EgcXVlIG8gY2ljbG8gZGUgZXhwYW5zw6NvIGJyYXNpbGVpcm8gbsOjbyBmb2kgc3VzdGVudGFkbyBwb3IgYXVtZW50b3MgY29uc2lzdGVudGVzIGRlIHByb2R1dGl2aWRhZGUgbm8gbG9uZ28gcHJhem8uIE8gY3Jlc2NpbWVudG8gb2NvcnJldSwgbWFzIHNlbSB0cmFuc2Zvcm1hw6fDo28gc3VmaWNpZW50ZSBuYSBjYXBhY2lkYWRlIGRhIGVjb25vbWlhIGRlIHByb2R1emlyIG1haXMgdXRpbGl6YW5kbyBvcyBtZXNtb3MgZmF0b3JlcyBkZSBwcm9kdcOnw6NvLg0KRXNzZSByZXN1bHRhZG8gw6kgY29lcmVudGUgY29tIG9zIGRlbWFpcyBpbmRpY2Fkb3JlcyBhbmFsaXNhZG9zIGFudGVyaW9ybWVudGUuIEEgZGVzYWNlbGVyYcOnw6NvIGRvIGludmVzdGltZW50byBwcm9kdXRpdm8gZSBhIGxpbWl0YcOnw6NvIGRvcyBnYW5ob3MgZGUgcHJvZHV0aXZpZGFkZSBzdWdlcmVtIHF1ZSBvIG1vZGVsbyBkZSBjcmVzY2ltZW50byBkbyBwZXLDrW9kbyBwb3NzdcOtYSBmcmFnaWxpZGFkZXMgZXN0cnV0dXJhaXMgaW1wb3J0YW50ZXMsIHNlbmRvIHN1c3RlbnRhZG8gcHJpbmNpcGFsbWVudGUgcGVsYSBleHBhbnPDo28gZG8gY29uc3VtbyBlIGRvIG1lcmNhZG8gaW50ZXJuby4NCg0KIyMgMS40IE8gZXNnb3RhbWVudG8gZG8gY2ljbG8NCg0KVGVuZG8gZW0gdmlzdGEgb3MgZmF0b3JlcyBhbmFsaXNhZG9zIGFudGVyaW9ybWVudGUgLSB0YW50byBvcyBtb3RvcmVzIGRhIGV4cGFuc8OjbyBxdWFudG8gYXMgZnJhZ2lsaWRhZGVzIGVzdHJ1dHVyYWlzIGFjdW11bGFkYXMgYW8gbG9uZ28gZG8gcGVyw61vZG8gLSwgdG9ybmEtc2UgcG9zc8OtdmVsIG9ic2VydmFyIG8gaW7DrWNpbyBkbyBlc2dvdGFtZW50byBkbyBjaWNsbyBlY29uw7RtaWNvIGJyYXNpbGVpcm8uIE8gY3Jlc2NpbWVudG8gc3VzdGVudGFkbyBwcmluY2lwYWxtZW50ZSBwZWxhIGV4cGFuc8OjbyBkYSBkZW1hbmRhIGludGVybmEgZSBkbyBjb25zdW1vIHBhc3NvdSBhIGVuY29udHJhciBsaW1pdGVzIGVtIHVtIGNvbnRleHRvIGRlIGRlc2FjZWxlcmHDp8OjbyBkbyBpbnZlc3RpbWVudG8gcHJvZHV0aXZvIGUgZGUgZ2FuaG9zIHJlc3RyaXRvcyBkZSBwcm9kdXRpdmlkYWRlLg0KTmVzc2UgY29udGV4dG8sIG8gZ3LDoWZpY28gOSBhcHJlc2VudGEgYSBldm9sdcOnw6NvIGRhIE5lY2Vzc2lkYWRlIGRlIEZpbmFuY2lhbWVudG8gZG8gU2V0b3IgUMO6YmxpY28gKE5GU1ApIGUgZGEgRMOtdmlkYSBCcnV0YSBkbyBHb3Zlcm5vIEdlcmFsIGVudHJlIDIwMDggZSAyMDE0Lg0KDQoqKkdyw6FmaWNvIDk6KioNCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpkYXRhX2luaWNpbyA8LSBhcy5EYXRlKCIyMDA4LTAxLTAxIikNCmRhdGFfZmltIDwtIGFzLkRhdGUoIjIwMTQtMTItMzEiKQ0KDQpyZXN1bHRhZG9fcHJpbWFyaW8gPC0gZ2JjYmRfZ2V0X3NlcmllcygNCiAgaWQgPSBjKCJyZXN1bHRhZG9fcHJpbWFyaW8iID0gNTc5MyksDQogIGZpcnN0LmRhdGUgPSBkYXRhX2luaWNpbywNCiAgbGFzdC5kYXRlID0gZGF0YV9maW0sDQogIGZvcm1hdC5kYXRhID0gIndpZGUiDQopICU+JQ0KICBtdXRhdGUoRGF0YSA9IGFzLkRhdGUocmVmLmRhdGUpKQ0KDQpkaXZpZGFfYnJ1dGEgPC0gZ2JjYmRfZ2V0X3NlcmllcygNCiAgaWQgPSBjKCJkaXZpZGFfYnJ1dGEiID0gMTM3NjIpLA0KICBmaXJzdC5kYXRlID0gZGF0YV9pbmljaW8sDQogIGxhc3QuZGF0ZSA9IGRhdGFfZmltLA0KICBmb3JtYXQuZGF0YSA9ICJ3aWRlIg0KKSAlPiUNCiAgbXV0YXRlKERhdGEgPSBhcy5EYXRlKHJlZi5kYXRlKSkNCg0KZGFkb3MgPC0gcmVzdWx0YWRvX3ByaW1hcmlvICU+JQ0KICBzZWxlY3QoRGF0YSwgcmVzdWx0YWRvX3ByaW1hcmlvKSAlPiUNCiAgZnVsbF9qb2luKA0KICAgIGRpdmlkYV9icnV0YSAlPiUgc2VsZWN0KERhdGEsIGRpdmlkYV9icnV0YSksDQogICAgYnkgPSAiRGF0YSINCiAgKSAlPiUNCiAgYXJyYW5nZShEYXRhKSAlPiUNCiAgbmEub21pdCgpICU+JQ0KICBtdXRhdGUodGltZXN0YW1wID0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KERhdGEsIHR6ID0gIlVUQyIpKSAqIDEwMDApDQoNCmdyYWZpY28gPC0gaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgYmFja2dyb3VuZENvbG9yID0gIiNGRkZGRkYiLA0KICAgIHNwYWNpbmdUb3AgPSAyMCwgc3BhY2luZ1JpZ2h0ID0gMjAsDQogICAgc3BhY2luZ0JvdHRvbSA9IDIwLCBzcGFjaW5nTGVmdCA9IDIwDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxhcHBseShzZXFfbGVuKG5yb3coZGFkb3MpKSwgZnVuY3Rpb24oaSkgbGlzdChkYWRvcyR0aW1lc3RhbXBbaV0sIGRhZG9zJHJlc3VsdGFkb19wcmltYXJpb1tpXSkpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBuYW1lID0gIk5GU1AiLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLA0KICAgIGJvcmRlckNvbG9yID0gIiNGRUIwMTUiLA0KICAgIHBvaW50UGFkZGluZyA9IDAuMDgsDQogICAgZ3JvdXBQYWRkaW5nID0gMC4xMCwNCiAgICB5QXhpcyA9IDAsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIsIHZhbHVlU3VmZml4ID0gIiBwLnAuIikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGFwcGx5KHNlcV9sZW4obnJvdyhkYWRvcykpLCBmdW5jdGlvbihpKSBsaXN0KGRhZG9zJHRpbWVzdGFtcFtpXSwgZGFkb3MkZGl2aWRhX2JydXRhW2ldKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIkTDrXZpZGEgQnJ1dGEgKCUgZG8gUElCKSIsDQogICAgY29sb3IgPSAiIzAyMDIzQyIsDQogICAgbGluZVdpZHRoID0gMywNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSksDQogICAgeUF4aXMgPSAxLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAyLCB2YWx1ZVN1ZmZpeCA9ICIlIikNCiAgKSAlPiUNCiAgaGNfeUF4aXNfbXVsdGlwbGVzKA0KICAgIGxpc3QoDQogICAgICB0aXRsZSA9IGxpc3QoDQogICAgICAgIHRleHQgPSAiTkZTUCAtIFJlc3VsdGFkbyBQcmltw6FyaW8gKCUgZG8gUElCKSIsDQogICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTJweCIpDQogICAgICApLA0KICAgICAgb3Bwb3NpdGUgPSBGQUxTRSwNCiAgICAgIGdyaWRMaW5lQ29sb3IgPSAiI0U2RTZFNiIsDQogICAgICBncmlkTGluZVdpZHRoID0gMSwNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSksDQogICAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgICBsaXN0KA0KICAgICAgICAgIHZhbHVlID0gMCwNCiAgICAgICAgICB3aWR0aCA9IDEuNSwNCiAgICAgICAgICBjb2xvciA9ICIjOUU5RTlFIiwNCiAgICAgICAgICBkYXNoU3R5bGUgPSAiU2hvcnREYXNoIiwNCiAgICAgICAgICB6SW5kZXggPSA1DQogICAgICAgICkNCiAgICAgICkNCiAgICApLA0KICAgIGxpc3QoDQogICAgICB0aXRsZSA9IGxpc3QoDQogICAgICAgIHRleHQgPSAiRMOtdmlkYSBCcnV0YSAoJSBkbyBQSUIpIiwNCiAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgICAgICksDQogICAgICBvcHBvc2l0ZSA9IFRSVUUsDQogICAgICBncmlkTGluZVdpZHRoID0gMCwNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSkNCiAgICApDQogICkgJT4lDQogIGhjX3hBeGlzKA0KICAgIGxpbmVDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICB0aWNrQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpKQ0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBzZXJpZXMgPSBsaXN0KA0KICAgICAgYW5pbWF0aW9uID0gRkFMU0UsDQogICAgICBzdGF0ZXMgPSBsaXN0KGluYWN0aXZlID0gbGlzdChvcGFjaXR5ID0gMSkpDQogICAgKSwNCiAgICBjb2x1bW4gPSBsaXN0KGJvcmRlcldpZHRoID0gMCkNCiAgKSAlPiUNCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJOZWNlc3NpZGFkZSBkZSBGaW5hbmNpYW1lbnRvIGRvIFNldG9yIFDDumJsaWNvIGUgRMOtdmlkYSBCcnV0YSBkbyBHb3Zlcm5vIEdlcmFsIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIkV2b2x1w6fDo28gZGEgTkZTUCBlIGRvIGVuZGl2aWRhbWVudG8gcMO6YmxpY28gbm8gQnJhc2lsICgyMDA44oCTMjAxNCkiLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxM3B4IiwgY29sb3IgPSAiIzY2NjY2NiIpDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgYm9yZGVyQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgYm9yZGVyUmFkaXVzID0gOCwNCiAgICBzaGFkb3cgPSBGQUxTRSwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsDQogICAgaXRlbVN0eWxlID0gbGlzdCgNCiAgICAgIGNvbG9yID0gIiMyMjIyMjIiLA0KICAgICAgZm9udFdlaWdodCA9ICJub3JtYWwiLA0KICAgICAgZm9udFNpemUgPSAiMTJweCINCiAgICApDQogICkgJT4lDQogIGhjX3JhbmdlU2VsZWN0b3IoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgaW5wdXRFbmFibGVkID0gRkFMU0UsDQogICAgc2VsZWN0ZWQgPSA0LA0KICAgIGJ1dHRvbnMgPSBsaXN0KA0KICAgICAgbGlzdCh0eXBlID0gInllYXIiLCBjb3VudCA9IDEsIHRleHQgPSAiMUEiKSwNCiAgICAgIGxpc3QodHlwZSA9ICJ5ZWFyIiwgY291bnQgPSAyLCB0ZXh0ID0gIjJBIiksDQogICAgICBsaXN0KHR5cGUgPSAieWVhciIsIGNvdW50ID0gMywgdGV4dCA9ICIzQSIpLA0KICAgICAgbGlzdCh0eXBlID0gImFsbCIsIHRleHQgPSAiVHVkbyIpDQogICAgKQ0KICApICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IFRSVUUpICU+JQ0KICBoY19zY3JvbGxiYXIoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbC4gRWxhYm9yYcOnw6NvIHByw7NwcmlhIEliTWFjcm9CSC4iLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMHB4IiwgY29sb3IgPSAiIzc3Nzc3NyIpDQogICkNCg0KZ3JhZmljbw0KYGBgDQoNCkEgTkZTUCBwZXJtYW5lY2V1IG5lZ2F0aXZhIGR1cmFudGUgZ3JhbmRlIHBhcnRlIGRvIHBlcsOtb2RvIGFuYWxpc2FkbywgaW5kaWNhbmRvIGEgcHJlc2Vuw6dhIGRlIHN1cGVyw6F2aXRzIHByaW3DoXJpb3MuIEFvIGxvbmdvIGRvIGNpY2xvLCBwb3LDqW0sIG9ic2VydmEtc2UgdW1hIHJlZHXDp8OjbyBkZXNzZXMgc3VwZXLDoXZpdHMuIElzc28gc2lnbmlmaWNhIHF1ZSwgZW1ib3JhIG8gc2V0b3IgcMO6YmxpY28gYWluZGEgYXByZXNlbnRhc3NlIHJlc3VsdGFkbyBwb3NpdGl2bywgc3VhIGNhcGFjaWRhZGUgZGUgcG91cGFuw6dhIGZpc2NhbCB2aW5oYSBkaW1pbnVpbmRvLg0KQSBkw612aWRhIGJydXRhIGRvIGdvdmVybm8gZ2VyYWwgYXByZXNlbnRvdSBvc2NpbGHDp8O1ZXMgYW8gbG9uZ28gZG8gcGVyw61vZG8gcG9zdGVyaW9yIMOgIGNyaXNlIGRlIDIwMDgsIGFsdGVybmFuZG8gbW9tZW50b3MgZGUgcmVkdcOnw6NvIGUgYXVtZW50by4gTm8gZW50YW50bywgYSBwYXJ0aXIgZGUgbWFyw6dvIGRlIDIwMTQgLSBtYXJjbyBxdWUgc2luYWxpemEgbyBlbmNlcnJhbWVudG8gb2ZpY2lhbCBkbyBjaWNsbyBkZSBleHBhbnPDo28gLSwgYSB0cmFqZXTDs3JpYSBkYSBkw612aWRhIHBhc3NhIGEgYXByZXNlbnRhciBjcmVzY2ltZW50byBjb250w61udW8uIE5lc3NlIG1vbWVudG8sIGEgZMOtdmlkYSBicnV0YSBjb3JyZXNwb25kaWEgYSBhcHJveGltYWRhbWVudGUgNTEsNzklLCBhbGNhbsOnYW5kbyBjZXJjYSBkZSA1NiwyOCUgZW0gZGV6ZW1icm8gZGUgMjAxNC4NCk8gY29tcG9ydGFtZW50byBkYSBORlNQIGFjb21wYW5oYSBlc3NlIG1vdmltZW50by4gRW0gYWJyaWwgZGUgMjAxNCwgbyBpbmRpY2Fkb3IgYWluZGEgc2UgZW5jb250cmF2YSBlbSBhcHJveGltYWRhbWVudGUgLTEsNjglIGRvIFBJQiwgaW5kaWNhbmRvIHN1cGVyw6F2aXQgcHJpbcOhcmlvLiBObyBlbnRhbnRvLCBhbyBsb25nbyBkb3MgbWVzZXMgc2VndWludGVzLCBhIG5lY2Vzc2lkYWRlIGRlIGZpbmFuY2lhbWVudG8gcGFzc2EgYSBhdW1lbnRhciBjb250aW51YW1lbnRlLCBhdMOpIGF0aW5naXIgMCw1NiUgZG8gUElCIGVtIGRlemVtYnJvIGRlIDIwMTQgLSBwcmltZWlybyB2YWxvciBwb3NpdGl2byBvYnNlcnZhZG8gZW0gdG9kbyBvIHBlcsOtb2RvIGFuYWxpc2Fkby4NCkVzc2VzIG1vdmltZW50b3MgcmVmb3LDp2FtIGEgcGVyY2Vww6fDo28gZGUgZXNnb3RhbWVudG8gZG8gY2ljbG8gZWNvbsO0bWljbyBicmFzaWxlaXJvLiBPIGNyZXNjaW1lbnRvIHN1c3RlbnRhZG8gYW8gbG9uZ28gZG9zIGFub3MgYW50ZXJpb3JlcyBwYXNzb3UgYSBlbmNvbnRyYXIgbGltaXRlcyBlbSB1bSBjb250ZXh0byBtYXJjYWRvIHBlbGEgZGVzYWNlbGVyYcOnw6NvIGRvIGludmVzdGltZW50byBwcm9kdXRpdm8sIHBlbGEgbGltaXRhw6fDo28gZG9zIGdhbmhvcyBkZSBwcm9kdXRpdmlkYWRlIGUgcGVsYSBkZXRlcmlvcmHDp8OjbyBncmFkdWFsIGRhcyBjb250YXMgcMO6YmxpY2FzLiBBc3NpbSwgb3MgaW5kaWNhZG9yZXMgZmlzY2FpcyByZWZvcsOnYW0gYSBpZGVpYSBkZSBxdWUgbyBtb2RlbG8gZGUgY3Jlc2NpbWVudG8gZG8gcGVyw61vZG8gcG9zc3XDrWEgZnJhZ2lsaWRhZGVzIGVzdHJ1dHVyYWlzIGltcG9ydGFudGVzLCBzdXN0ZW50YW5kby1zZSBwcmluY2lwYWxtZW50ZSBwZWxhIGV4cGFuc8OjbyBkbyBjb25zdW1vIGUgZGEgZGVtYW5kYSBpbnRlcm5hLCBzZW0gYXZhbsOnb3Mgc3VmaWNpZW50ZXMgZW0gcHJvZHV0aXZpZGFkZSBlIGludmVzdGltZW50byBjYXBhemVzIGRlIGdhcmFudGlyIHN1YSBzdXN0ZW50YcOnw6NvIG5vIGxvbmdvIHByYXpvLg0KDQojIDIuIEEgR3JhbmRlIFJlY2Vzc8OjbyAoMjAxNOKAkzIwMTYpDQoNCiMjIDIuMSBDb250ZXh0byBlIGRhdGHDp8OjbyBvZmljaWFsIGRhIHJlY2Vzc8Ojbw0KDQpDb25mb3JtZSBqw6EgYXByZXNlbnRhZG8gbmEgaW50cm9kdcOnw6NvLCBhIHJlY2Vzc8OjbyBicmFzaWxlaXJhIHJlY2VudGUgZm9pIGRhdGFkYSBwZWxvIENPREFDRSBlbnRyZSBvIHNlZ3VuZG8gdHJpbWVzdHJlIGRlIDIwMTQgKHBpY28pIGUgbyBxdWFydG8gdHJpbWVzdHJlIGRlIDIwMTYgKHZhbGUpLCB0b3RhbGl6YW5kbyBvbnplIHRyaW1lc3RyZXMgY29uc2VjdXRpdm9zIGRlIGNvbnRyYcOnw6NvIGRhIGF0aXZpZGFkZS4gRW0gZGF0YcOnw6NvIG1lbnNhbCwgZGl2dWxnYWRhIHBvc3Rlcmlvcm1lbnRlIHBlbG8gQ29taXTDqiwgbyBwaWNvIG9jb3JyZXUgZW0gbWFyw6dvIGRlIDIwMTQgZSBvIHZhbGUgZW0gZGV6ZW1icm8gZGUgMjAxNi4gQSBxdWVkYSBhY3VtdWxhZGEgZG8gUElCIG5vIHBlcsOtb2RvLCBtZWRpZGEgcGVsYSBzw6lyaWUgZGVzc2F6b25hbGl6YWRhLCBmb2kgZGEgb3JkZW0gZGUgNyBhIDglLCBtYWduaXR1ZGUgcXVlIHNlIGFwcm94aW1hIGRlIDExJSBxdWFuZG8gYXZhbGlhZGEgZW0gdGVybW9zIHBlciBjYXBpdGEuDQoNCkVtIHRlcm1vcyBkZSBjb21wYXJhw6fDo28gaGlzdMOzcmljYSwgdHJhdGEtc2UgZGUgdW1hIGRhcyByZWNlc3PDtWVzIG1haXMgc2V2ZXJhcyBqw6EgcmVnaXN0cmFkYXMgbm8gQnJhc2lsLiBGb2kgYSBtYWlzIGxvbmdhIGRlc2RlIG8gaW7DrWNpbyBkYSBkYXRhw6fDo28gdHJpbWVzdHJhbCBkbyBDT0RBQ0UgZW0gMTk4MCwgdW1hIGRhcyBtYWlzIHByb2Z1bmRhcyBkb3Mgw7psdGltb3MgMTUwIGFub3MgZGUgaGlzdMOzcmlhIGVjb27DtG1pY2EgZG8gcGHDrXMsIGUgZm9pIHNlZ3VpZGEgcGVsYSByZWN1cGVyYcOnw6NvIG1haXMgbGVudGEgasOhIGRvY3VtZW50YWRhIOKAlCBvIG7DrXZlbCBwcsOpLWNyaXNlIGRvIFBJQiBwZXIgY2FwaXRhIHPDsyBzZXJpYSByZWN1cGVyYWRvIGFub3MgZGVwb2lzLg0KDQpObyBHcsOhZmljbyAxMCwgw6kgcG9zc8OtdmVsIHZpc3VhbGl6YXIgYSBpbnRlcmHDp8OjbyBlbnRyZSBvIFBJQiwgYSBTZWxpYyBlIG8gSVBDQSBhbyBsb25nbyBkbyBjaWNsbyByZWNlc3Npdm86IGEgw6FyZWEgc29tYnJlYWRhIGRlbGltaXRhIG8gcGVyw61vZG8gZGF0YWRvIHBlbG8gQ09EQUNFICgyVC8yMDE0IGEgNFQvMjAxNiksIGR1cmFudGUgbyBxdWFsIG8gUElCIHJlZ2lzdHJvdSB2YXJpYcOnw7VlcyBuZWdhdGl2YXMgc3VjZXNzaXZhcyBlbnF1YW50byBhIGluZmxhw6fDo28gYXRpbmdpYSAxMCw2NyUgZW0gMjAxNSBlIGEgU2VsaWMgZXJhIGVsZXZhZGEgYXTDqSAxNCwyNSUgYW8gYW5vLg0KDQoqKkdyw6FmaWNvIDEwKioNCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShyYmNiKQ0KbGlicmFyeShHZXRCQ0JEYXRhKQ0KDQojIFBhbGV0YSBkYSBMaWdhDQpBTUFSRUxPICAgICA8LSAiI2ZlYjcxMiINCkFaVUxfRVNDVVJPIDwtICIjMDIwMjNDIg0KQVpVTF9NRURJTyAgPC0gIiMwMDJjNWUiDQpDSU5aQSAgICAgICA8LSAiI2E2YTZhNiINClRFWFRPICAgICAgIDwtICIjM2EzYTNhIg0KQVpVTF9DTEFSTyAgPC0gIiM0NmIxZTEiDQoNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIDEpIFBJQiBUUklNRVNUUkFMDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQpicnV0byA8LSByZWFkX2V4Y2VsKGZpbGUucGF0aChkYWRvc19kaXIsICJ0YWJlbGE1OTMyLTMueGxzeCIpLCBzaGVldCA9ICJUYWJlbGEiLCBjb2xfbmFtZXMgPSBGQUxTRSkNCg0KdHJpbWVzdHJlcyA8LSBhcy5jaGFyYWN0ZXIodW5saXN0KGJydXRvWzQsIC0xXSkpDQp2YWxvcmVzICAgIDwtIGFzLm51bWVyaWModW5saXN0KGJydXRvWzYsIC0xXSkpDQoNCnBhcnNlX3RyaW1lc3RyZSA8LSBmdW5jdGlvbih4KSB7DQogIHEgPC0gYXMuaW50ZWdlcihzdWJzdHIoeCwgMSwgMSkpDQogIHkgPC0gYXMuaW50ZWdlcihzdWJzdHIoeCwgbmNoYXIoeCkgLSAzLCBuY2hhcih4KSkpDQogIGFzLkRhdGUoc3ByaW50ZigiJWQtJTAyZC0wMSIsIHksIChxIC0gMSkgKiAzICsgMSkpDQp9DQoNCnJvdHVsb19jdXJ0byA8LSBmdW5jdGlvbih4KSB7DQogIHEgPC0gc3Vic3RyKHgsIDEsIDEpDQogIHkgPC0gc3Vic3RyKHgsIG5jaGFyKHgpIC0gMywgbmNoYXIoeCkpDQogIHNwcmludGYoIlQlcy8lcyIsIHEsIHkpDQp9DQoNCnBpYiA8LSB0aWJibGUoDQogIHRyaW1lc3RyZSA9IHRyaW1lc3RyZXMsDQogIHJvdHVsbyAgICA9IHNhcHBseSh0cmltZXN0cmVzLCByb3R1bG9fY3VydG8pLA0KICBkYXRhICAgICAgPSBzYXBwbHkodHJpbWVzdHJlcywgcGFyc2VfdHJpbWVzdHJlKSAlPiUgYXMuRGF0ZShvcmlnaW4gPSAiMTk3MC0wMS0wMSIpLA0KICBwaWIgICAgICAgPSB2YWxvcmVzDQopICU+JQ0KICBmaWx0ZXIoZGF0YSA+PSBhcy5EYXRlKCIyMDEwLTAxLTAxIiksDQogICAgICAgICBkYXRhIDw9IGFzLkRhdGUoIjIwMTctMTItMzEiKSkgJT4lDQogIG11dGF0ZSgNCiAgICBlbV9yZWNlc3NhbyA9IGRhdGEgPj0gYXMuRGF0ZSgiMjAxNC0wNC0wMSIpICYgZGF0YSA8PSBhcy5EYXRlKCIyMDE2LTEwLTAxIiksDQogICAgY29yX3BpYiAgICAgPSBpZl9lbHNlKGVtX3JlY2Vzc2FvLCBBWlVMX0VTQ1VSTywgQVpVTF9DTEFSTykNCiAgKQ0KDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyAyKSBJUENBIDEyTSBNRU5TQUwNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCmlwY2EgPC0gZ2V0X3NlcmllcygNCiAgMTM1MjIsDQogIHN0YXJ0X2RhdGUgPSAiMjAxMC0wMS0wMSIsDQogIGVuZF9kYXRlICAgPSAiMjAxNy0xMi0zMSINCikgJT4lDQogIHJlbmFtZShpcGNhID0gYDEzNTIyYCkgJT4lDQogIG11dGF0ZSgNCiAgICBkYXRlID0gYXMuRGF0ZShkYXRlKSwNCiAgICB0cmltZXN0cmVfZGF0YSA9IGZsb29yX2RhdGUoZGF0ZSwgInF1YXJ0ZXIiKQ0KICApDQoNCmlwY2FfdHJpIDwtIGlwY2EgJT4lDQogIGFycmFuZ2UoZGF0ZSkgJT4lDQogIGdyb3VwX2J5KHRyaW1lc3RyZV9kYXRhKSAlPiUNCiAgc3VtbWFyaXNlKA0KICAgIGlwY2EgPSBsYXN0KG5hLm9taXQoaXBjYSkpLA0KICAgIC5ncm91cHMgPSAiZHJvcCINCiAgKQ0KDQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIyAzKSBTRUxJQyBNRU5TQUwNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCmluaWNpbyA8LSBhcy5EYXRlKCIyMDEwLTAxLTAxIikNCmZpbSAgICA8LSBhcy5EYXRlKCIyMDE3LTEyLTMxIikNCg0Kc2VyaWVzX2lkcyA8LSBjKA0KICBTZWxpYyA9IDQzMg0KKQ0KDQpkYWRvc19iY2IgPC0gZ2JjYmRfZ2V0X3NlcmllcygNCiAgaWQgPSBzZXJpZXNfaWRzLA0KICBmaXJzdC5kYXRlID0gaW5pY2lvLA0KICBsYXN0LmRhdGUgID0gZmltLA0KICBmb3JtYXQuZGF0YSA9ICJ3aWRlIg0KKQ0KDQpzZWxpYyA8LSBkYWRvc19iY2IgJT4lDQogIHJlbmFtZSgNCiAgICBkYXRlID0gcmVmLmRhdGUsDQogICAgc2VsaWMgPSBTZWxpYw0KICApICU+JQ0KICBtdXRhdGUoDQogICAgZGF0ZSA9IGFzLkRhdGUoZGF0ZSksDQogICAgdHJpbWVzdHJlX2RhdGEgPSBmbG9vcl9kYXRlKGRhdGUsICJxdWFydGVyIikNCiAgKSAlPiUNCiAgYXJyYW5nZShkYXRlKQ0KDQpzZWxpY190cmkgPC0gc2VsaWMgJT4lDQogIGdyb3VwX2J5KHRyaW1lc3RyZV9kYXRhKSAlPiUNCiAgc3VtbWFyaXNlKA0KICAgIHNlbGljID0gbGFzdChuYS5vbWl0KHNlbGljKSksDQogICAgLmdyb3VwcyA9ICJkcm9wIg0KICApDQoNCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQojIDQpIEpVTlRBUiBQSUIsIElQQ0EgRSBTRUxJQw0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCg0KZGYgPC0gcGliICU+JQ0KICBsZWZ0X2pvaW4oaXBjYV90cmksIGJ5ID0gYygiZGF0YSIgPSAidHJpbWVzdHJlX2RhdGEiKSkgJT4lDQogIGxlZnRfam9pbihzZWxpY190cmksIGJ5ID0gYygiZGF0YSIgPSAidHJpbWVzdHJlX2RhdGEiKSkNCg0KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiMgNSkgR1LDgUZJQ08NCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCmhpZ2hjaGFydCgpICU+JQ0KICANCiAgaGNfY2hhcnQoDQogICAgem9vbVR5cGUgPSAieCIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIHNhbnMtc2VyaWYiKQ0KICApICU+JQ0KICANCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJQSUIsIFNlbGljIGUgSVBDQSBubyBjaWNsbyByZWNlc3Npdm8gYnJhc2lsZWlybyIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gQVpVTF9FU0NVUk8sIGZvbnRXZWlnaHQgPSAiYm9sZCIpDQogICkgJT4lDQogIA0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIlBJQiBlbSB2YXJpYcOnw6NvIHJlYWwgdHJpbWVzdHJhbCBjb250cmEgbyBtZXNtbyB0cmltZXN0cmUgYW50ZXJpb3I7IElQQ0EgYWN1bXVsYWRvIGVtIDEyIG1lc2VzOyBTZWxpYyBtZXRhIGFvIGZpbSBkbyB0cmltZXN0cmUiLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICApICU+JQ0KICANCiAgaGNfeEF4aXMoDQogICAgY2F0ZWdvcmllcyA9IGRmJHJvdHVsbywNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9IE5VTEwpLA0KICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gVEVYVE8pKSwNCiAgICBwbG90QmFuZHMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgZnJvbSAgPSB3aGljaChkZiRyb3R1bG8gPT0gIlQyLzIwMTQiKSAtIDEuNSwNCiAgICAgICAgdG8gICAgPSB3aGljaChkZiRyb3R1bG8gPT0gIlQ0LzIwMTYiKSAtIDAuNSwNCiAgICAgICAgY29sb3IgPSAicmdiYSgxNjYsIDE2NiwgMTY2LCAwLjE1KSINCiAgICAgICkNCiAgICApDQogICkgJT4lDQogIA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJWYXJpYcOnw6NvIGUgdGF4YSAoJSkiKSwNCiAgICBsYWJlbHMgPSBsaXN0KGZvcm1hdCA9ICJ7dmFsdWV9JSIsIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSksDQogICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgIGxpc3QodmFsdWUgPSAwLCBjb2xvciA9IFRFWFRPLCB3aWR0aCA9IDEsIHpJbmRleCA9IDQpDQogICAgKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNlZWVlZWUiDQogICkgJT4lDQogIA0KICBoY19hZGRfc2VyaWVzKA0KICAgIGRhdGEgPSBkZiwNCiAgICB0eXBlID0gImNvbHVtbiIsDQogICAgaGNhZXMoeCA9IHJvdHVsbywgeSA9IHBpYiwgY29sb3IgPSBjb3JfcGliKSwNCiAgICBuYW1lID0gIlBJQiIsDQogICAgY29sb3JCeVBvaW50ID0gVFJVRSwNCiAgICBib3JkZXJXaWR0aCA9IDAsDQogICAgekluZGV4ID0gMg0KICApICU+JQ0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gZGYsDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gcm90dWxvLCB5ID0gaXBjYSksDQogICAgbmFtZSA9ICJJUENBIDEybSIsDQogICAgY29sb3IgPSBBTUFSRUxPLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSksDQogICAgekluZGV4ID0gNQ0KICApICU+JQ0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gZGYsDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gcm90dWxvLCB5ID0gc2VsaWMpLA0KICAgIG5hbWUgPSAiU2VsaWMiLA0KICAgIGNvbG9yID0gQVpVTF9FU0NVUk8sDQogICAgbGluZVdpZHRoID0gMi41LA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB6SW5kZXggPSA2DQogICkgJT4lDQogIA0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsDQogICAgYmFja2dyb3VuZENvbG9yID0gIndoaXRlIiwNCiAgICBib3JkZXJDb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSwNCiAgICB2YWx1ZURlY2ltYWxzID0gMiwNCiAgICB2YWx1ZVN1ZmZpeCA9ICIlIg0KICApICU+JQ0KICANCiAgaGNfcGxvdE9wdGlvbnMoDQogICAgY29sdW1uID0gbGlzdCgNCiAgICAgIGJvcmRlcldpZHRoID0gMCwNCiAgICAgIGdyb3VwUGFkZGluZyA9IDAuMDUNCiAgICApLA0KICAgIHNlcmllcyA9IGxpc3QoDQogICAgICBjb25uZWN0TnVsbHMgPSBGQUxTRQ0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIg0KICApICU+JQ0KICANCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBJQkdFLCBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbCBlIENPREFDRS9GR1YgSUJSRS4iDQogICkNCmBgYA0KDQojIyAyLjIgT3MgZmF0b3JlcyBxdWUgbGV2YXJhbSDDoCByZWNlc3PDo28NCg0KQSByZWNlc3PDo28gZGUgMjAxNOKAkzIwMTYgbsOjbyBmb2kgcmVzdWx0YWRvIGRlIHVtIMO6bmljbyBjaG9xdWUsIG1hcyBkYSBjb252ZXJnw6puY2lhIGRlIHRyw6pzIHZldG9yZXMgcXVlIHNlIHJlZm9yw6dhcmFtIG11dHVhbWVudGU6IG8gZXNnb3RhbWVudG8gZG8gY2ljbG8gZXhwYW5zaXZvIGFudGVyaW9yLCB1bSBjaG9xdWUgZXh0ZXJubyBkZXNmYXZvcsOhdmVsIGUgdW1hIGNyaXNlIGRlIGNyZWRpYmlsaWRhZGUgZGEgcG9sw610aWNhIGVjb27DtG1pY2EuDQoNCk8gcHJpbWVpcm8gdmV0b3IgZm9pIGEgaGVyYW7Dp2EgZG8gY2ljbG8gMjAwOOKAkzIwMTQsIGRpc2N1dGlkYSBuYSBzZcOnw6NvIGFudGVyaW9yLiBPIG1vZGVsbyBkZSBjcmVzY2ltZW50byBiYXNlYWRvIGVtIGNvbnN1bW8sIGNyw6lkaXRvIHN1YnNpZGlhZG8sIGRlc29uZXJhw6fDtWVzIHNldG9yaWFpcyBlIGV4cGFuc8OjbyBkbyBnYXN0byBww7pibGljbyDigJQgY29uc29saWRhZG8gYSBwYXJ0aXIgZGUgMjAxMeKAkzIwMTIgc29iIG8gcsOzdHVsbyBkZSBOb3ZhIE1hdHJpeiBFY29uw7RtaWNhIOKAlCBkZWl4b3UgbyBwYcOtcyBjb20gZMOpZmljaXRzIHByaW3DoXJpb3MgY3Jlc2NlbnRlcywgaW5mbGHDp8OjbyByZXByZXNhZGEgcG9yIHByZcOnb3MgYWRtaW5pc3RyYWRvcyBlIG1hcmdlbnMgZGUgbHVjcm8gZGVwcmltaWRhcyBubyBzZXRvciBwcml2YWRvLiBRdWFuZG8gbyBjaWNsbyBjb21lw6dvdSBhIGRlc2FjZWxlcmFyLCBlc3NlcyBkZXNlcXVpbMOtYnJpb3MgZXN0cmVpdGFyYW0gbyBlc3Bhw6dvIGRlIG1hbm9icmEgZGEgcG9sw610aWNhIGVjb27DtG1pY2EuDQoNCk8gc2VndW5kbyB2ZXRvciBmb2kgZXh0ZXJuby4gQSBwYXJ0aXIgZGUgMjAxMSwgZSBjb20gbWFpcyBpbnRlbnNpZGFkZSBlbSAyMDE04oCTMjAxNSwgZW5jZXJyb3Utc2UgbyBzdXBlcmNpY2xvIGRhcyBjb21tb2RpdGllcyBxdWUgaGF2aWEgc3VzdGVudGFkbyBwYXJ0ZSBkbyBjcmVzY2ltZW50byBkb3MgYW5vcyAyMDAwLiBBIGRlc2FjZWxlcmHDp8OjbyBkYSBlY29ub21pYSBjaGluZXNhIGRlcnJ1Ym91IG9zIHByZcOnb3MgaW50ZXJuYWNpb25haXMgZSBkZXRlcmlvcm91IG9zIHRlcm1vcyBkZSB0cm9jYSBicmFzaWxlaXJvcywgY29tcHJpbWluZG8gYSByZWNlaXRhIGRlIGV4cG9ydGHDp8O1ZXMgZSByZWR1emluZG8gbyBpbnZlc3RpbWVudG8gbm8gc2V0b3IgZXh0cmF0aXZvLiBPIGNob3F1ZSBleHRlcm5vIG7Do28gZXhwbGljYSBpc29sYWRhbWVudGUgYSBwcm9mdW5kaWRhZGUgZGEgcmVjZXNzw6NvIOKAlCBwYcOtc2VzIGxhdGluby1hbWVyaWNhbm9zIGlndWFsbWVudGUgZXhwb3N0b3MgYW8gY2ljbG8gZGUgY29tbW9kaXRpZXMsIGNvbW8gQ2hpbGUgZSBQZXJ1LCBzb2ZyZXJhbSBkZXNhY2VsZXJhw6fDtWVzIG11aXRvIG1haXMgYnJhbmRhcyDigJQgbWFzIGF0dW91IGNvbW8gYW1wbGlmaWNhZG9yIGRhcyB2dWxuZXJhYmlsaWRhZGVzIGrDoSBwcmVzZW50ZXMuDQoNCk8gdGVyY2Vpcm8gdmV0b3IgZm9pIGEgcGVyZGEgZGUgY3JlZGliaWxpZGFkZSBkYSBwb2zDrXRpY2EgZWNvbsO0bWljYSBlbSAyMDE1LiBBIGRlc2NvYmVydGEgZGFzIHBlZGFsYWRhcyBmaXNjYWlzIG1pbm91IGEgY29uZmlhbsOnYSBub3MgbsO6bWVyb3Mgb2ZpY2lhaXM7IG8gYWp1c3RlIGZpc2NhbCBhbnVuY2lhZG8gcG9yIEpvYXF1aW0gTGV2eSBlbSB1bWEgZWNvbm9taWEgasOhIGVtIHF1ZWRhIGNvbWJpbm91LXNlIGNvbSBvIHJlYWxpbmhhbWVudG8gZG9zIHByZcOnb3MgYWRtaW5pc3RyYWRvcywgbyBxdWUgbGV2b3UgbyBJUENBIGEgMTAsNjclIGVtIDIwMTUgZSBmb3LDp291IGEgU2VsaWMgYSBzdWJpciBhdMOpIDE0LDI1JS4gQSBwZXJkYSBkbyBncmF1IGRlIGludmVzdGltZW50byBwZWxhIFN0YW5kYXJkICYgUG9vcidzIGVtIHNldGVtYnJvIGRlIDIwMTUsIHNlZ3VpZGEgcGVsYXMgZGVtYWlzIGFnw6puY2lhcywgZW5jYXJlY2V1IG8gZmluYW5jaWFtZW50byBlIGVsZXZvdSBvIHJpc2NvLXBhw61zLiBTb2JyZXBvc3RvIGEgdHVkbyBpc3NvLCBvIGF2YW7Dp28gZGEgT3BlcmHDp8OjbyBMYXZhIEphdG8gcGFyYWxpc291IGludmVzdGltZW50b3Mgbm8gc2V0b3IgZGUgw7NsZW8gZSBnw6FzIGUgbmEgY29uc3RydcOnw6NvLCBlIG8gcHJvY2Vzc28gZGUgaW1wZWFjaG1lbnQgaW5pY2lhZG8gZW0gZGV6ZW1icm8gZGUgMjAxNSBwYXJhbGlzb3UgYSBhZ2VuZGEgZWNvbsO0bWljYS4NCg0KQSBjb21iaW5hw6fDo28gZGVzc2VzIHRyw6pzIHZldG9yZXMgcHJvZHV6aXUgbyBxdWUgYSBsaXRlcmF0dXJhIGNvc3R1bWEgY2hhbWFyIGRlIGJhbGFuY2Ugc2hlZXQgcmVjZXNzaW9uOiB1bWEgY29udHJhw6fDo28gZW0gcXVlIGZhbcOtbGlhcywgZW1wcmVzYXMgZSBzZXRvciBww7pibGljbyBwcmVjaXNhbSByZWR1emlyIGVuZGl2aWRhbWVudG8gc2ltdWx0YW5lYW1lbnRlLCBvIHF1ZSBhanVkYSBhIGVudGVuZGVyIHRhbnRvIGEgcHJvZnVuZGlkYWRlIHF1YW50byBhIGxlbnRpZMOjbyBkYSByZWN1cGVyYcOnw6NvIHBvc3Rlcmlvci4NCg0KIyMgMi4zIE1lcmNhZG8gZGUgdHJhYmFsaG8sIGludmVzdGltZW50byBlIHByb2R1dGl2aWRhZGUNCg0KIyMjIDIuMy4xIE8gY29sYXBzbyBkbyBpbnZlc3RpbWVudG8NCg0KRW1ib3JhIG8gZGVzZW1wcmVnbyBzZWphIGEgZmFjZSBtYWlzIHZpc8OtdmVsIGRlIHVtYSByZWNlc3PDo28sIGZvaSBvIGludmVzdGltZW50byBxdWUgbGlkZXJvdSBhIHF1ZWRhIGRhIGF0aXZpZGFkZSBlbnRyZSAyMDE0IGUgMjAxNiwgZW0gc2ludG9uaWEgY29tIG8gcXVlIHN1Z2VyZSBhIHRlb3JpYSBkb3MgY2ljbG9zOiBhIEZvcm1hw6fDo28gQnJ1dGEgZGUgQ2FwaXRhbCBGaXhvIChGQkNGKSDDqSB0aXBpY2FtZW50ZSBvIGNvbXBvbmVudGUgbWFpcyB2b2zDoXRpbCBkbyBQSUIgZSBvIHByaW1laXJvIGEgcmVhZ2lyIMOgIGRldGVyaW9yYcOnw6NvIGRhcyBleHBlY3RhdGl2YXMuDQoNCk5hIHZhcmlhw6fDo28gYW51YWwsIGEgRkJDRiBjb21lw6dvdSBhIGRlc2FjZWxlcmFyIGFpbmRhIGVtIDIwMTQsIHJlZ2lzdHJhbmRvIGNvbnRyYcOnw6NvIGRlIDQsNCUgbm8gYW5vLiBBIHF1ZWRhIGFwcm9mdW5kb3Utc2UgcGFyYSAtMTMsOSUgZW0gMjAxNSBlIG1haXMgLTEyLDElIGVtIDIwMTYuIE9saGFuZG8gcGFyYSBhIGRpbsOibWljYSB0cmltZXN0cmFsLCBjb25mb3JtZSBtb3N0cmEgbyBHcsOhZmljbyAxMSwgbyBjb21wb25lbnRlIGFjdW11bG91IG9uemUgdHJpbWVzdHJlcyBjb25zZWN1dGl2b3MgZGUgcXVlZGEsIGNvbSByZWN1b3MgcXVlIGNoZWdhcmFtIGEgLTcsMCUgZW0gdW0gw7puaWNvIHRyaW1lc3RyZSAoMlQvMjAxNSkuIE5vIGFjdW11bGFkbyBkbyBwaWNvIGFvIHZhbGUsIG8gaW52ZXN0aW1lbnRvIHJlY3VvdSBjZXJjYSBkZSAyNyUsIGUgYSB0YXhhIGRlIGludmVzdGltZW50byAoRkJDRi9QSUIpIGNhaXUgZGUgMjAsOSUgZW0gMjAxMyBwYXJhIDE2LDQlIGVtIDIwMTYg4oCUIHVtIGRvcyBuw612ZWlzIG1haXMgYmFpeG9zIGRhIHPDqXJpZSBoaXN0w7NyaWNhIGRvIGluZGljYWRvciwgcXVlIGNvbnRpbnVhcmlhIGNhaW5kbyBhdMOpIDE0LDYlIGVtIDIwMTcuDQoNCkEgbMOzZ2ljYSBlY29uw7RtaWNhIHBvciB0csOhcyBkZXNzZSBjb2xhcHNvIGNvbmVjdGEtc2UgZGlyZXRhbWVudGUgYW9zIHByb2JsZW1hcyBhY3VtdWxhZG9zIG5vIGNpY2xvIGFudGVyaW9yLiBBIHJlZHXDp8OjbyBkYXMgbWFyZ2VucyBkZSBsdWNybyBkYXMgZW1wcmVzYXMsIG51bSBjb250ZXh0byBkZSBlbGV2YcOnw6NvIGRvIGN1c3RvIHVuaXTDoXJpbyBkbyB0cmFiYWxobyBlIGPDom1iaW8gYXByZWNpYWRvLCBqw6EgdmluaGEgZGVzZXN0aW11bGFuZG8gbm92b3MgcHJvamV0b3MgZGVzZGUgMjAxMuKAkzIwMTMuIFF1YW5kbyBhIGVzc2VzIGZhdG9yZXMgc2Ugc29tYXJhbSBhIGFsdGEgZGEgU2VsaWMsIGEgZWxldmHDp8OjbyBkbyByaXNjby1wYcOtcywgYSBwYXJhbGlzYcOnw6NvIGRvcyBwcm9qZXRvcyBkYSBQZXRyb2JyYXMgcGVsYSBPcGVyYcOnw6NvIExhdmEgSmF0byBlIG8gY29uZ2VsYW1lbnRvIGRvcyBkZXNlbWJvbHNvcyBkbyBCTkRFUyDigJQgcXVlIGhhdmlhIHNpZG8gcGXDp2EgY2VudHJhbCBkbyBmaW5hbmNpYW1lbnRvIGRvIGludmVzdGltZW50byBkdXJhbnRlIGEgZXhwYW5zw6NvIOKAlCwgbyBpbnZlc3RpbWVudG8gZW50cm91IGVtIHF1ZWRhIGxpdnJlLiBPcyBpbmRpY2Fkb3JlcyBkZSB1dGlsaXphw6fDo28gZGEgY2FwYWNpZGFkZSBpbnN0YWxhZGEgZGEgaW5kw7pzdHJpYSwgYXByZXNlbnRhZG9zIG5vIEdyw6FmaWNvIDEyLCBjYcOtcmFtIHBhcmEgbcOtbmltb3MgaGlzdMOzcmljb3MsIHNpbmFsaXphbmRvIHF1ZSBuw6NvIGhhdmlhIHJhesOjbyBlY29uw7RtaWNhIHBhcmEgYW1wbGlhciBvIGVzdG9xdWUgZGUgY2FwaXRhbC4NCg0KKipHcsOhZmljbyAxMSoqDQoNCmBgYHtyfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSBQQUNPVEVTIC0tLS0tLS0tLS0tLS0tLS0tLQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShzdHJpbmdyKQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSBQQUxFVEEgREEgTElHQSAtLS0tLS0tLS0tLS0tLS0tLS0NCkFNQVJFTE8gICAgIDwtICIjZmViNzEyIg0KQVpVTF9FU0NVUk8gPC0gIiMwMjAyM0MiDQpBWlVMX01FRElPICA8LSAiIzAwMmM1ZSINCkNJTlpBICAgICAgIDwtICIjYTZhNmE2Ig0KVEVYVE8gICAgICAgPC0gIiMzYTNhM2EiDQpBWlVMX0NMQVJPICA8LSAiIzQ2YjFlMSINCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gMSkgTEVSIEEgQkFTRSAtLS0tLS0tLS0tLS0tLS0tLS0NCmZiY2ZfcmF3IDwtIHJlYWRfZXhjZWwoDQogIGZpbGUucGF0aChkYWRvc19kaXIsICJ4bHN4Lnhsc3giKSwNCiAgc2hlZXQgPSAiVGFiZWxhIiwNCiAgY29sX25hbWVzID0gRkFMU0UNCikNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gMikgRVhUUkFJUiBUUklNRVNUUkVTIEUgVkFMT1JFUyAtLS0tLS0tLS0tLS0tLS0tLS0NCnRyaW1lc3RyZXMgPC0gYXMuY2hhcmFjdGVyKHVubGlzdChmYmNmX3Jhd1s0LCAyOm5jb2woZmJjZl9yYXcpXSkpDQp2YWxvcmVzIDwtIGFzLm51bWVyaWModW5saXN0KGZiY2ZfcmF3WzYsIDI6bmNvbChmYmNmX3JhdyldKSkNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gMykgRlVOw4fDlUVTIFBBUkEgVFJBVEFSIFRSSU1FU1RSRVMgLS0tLS0tLS0tLS0tLS0tLS0tDQpwYXJzZV90cmltZXN0cmUgPC0gZnVuY3Rpb24oeCkgew0KICB0cmltIDwtIGFzLmludGVnZXIoc3RyX2V4dHJhY3QoeCwgIl5bMS00XSIpKQ0KICBhbm8gPC0gYXMuaW50ZWdlcihzdHJfZXh0cmFjdCh4LCAiXFxkezR9JCIpKQ0KICBtZXMgPC0gKHRyaW0gLSAxKSAqIDMgKyAxDQogIA0KICBhcy5EYXRlKHBhc3RlMChhbm8sICItIiwgc3ByaW50ZigiJTAyZCIsIG1lcyksICItMDEiKSkNCn0NCg0Kcm90dWxvX3RyaW1lc3RyZSA8LSBmdW5jdGlvbih4KSB7DQogIHRyaW0gPC0gc3RyX2V4dHJhY3QoeCwgIl5bMS00XSIpDQogIGFubyA8LSBzdHJfZXh0cmFjdCh4LCAiXFxkezR9JCIpDQogIA0KICBwYXN0ZTAodHJpbSwgIlQvIiwgYW5vKQ0KfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSA0KSBNT05UQVIgQkFTRSBGSU5BTCAtLS0tLS0tLS0tLS0tLS0tLS0NCmZiY2YgPC0gdGliYmxlKA0KICB0cmltZXN0cmUgPSB0cmltZXN0cmVzLA0KICBkYXRhID0gcGFyc2VfdHJpbWVzdHJlKHRyaW1lc3RyZXMpLA0KICByb3R1bG8gPSByb3R1bG9fdHJpbWVzdHJlKHRyaW1lc3RyZXMpLA0KICB2YXJpYWNhbyA9IHZhbG9yZXMNCikgJT4lDQogIGZpbHRlcigNCiAgICBkYXRhID49IGFzLkRhdGUoIjIwMTQtMDEtMDEiKSwNCiAgICBkYXRhIDw9IGFzLkRhdGUoIjIwMTctMDEtMDEiKQ0KICApICU+JQ0KICBtdXRhdGUoDQogICAgY29yID0gaWZfZWxzZSgNCiAgICAgIHZhcmlhY2FvIDwgMCwNCiAgICAgIEFaVUxfRVNDVVJPLA0KICAgICAgQVpVTF9DTEFSTw0KICAgICkNCiAgKQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSA1KSBHUsOBRklDTyAtLS0tLS0tLS0tLS0tLS0tLS0NCmhjaGFydCgNCiAgZmJjZiwNCiAgdHlwZSA9ICJjb2x1bW4iLA0KICBoY2Flcyh4ID0gcm90dWxvLCB5ID0gdmFyaWFjYW8sIGNvbG9yID0gY29yKSwNCiAgbmFtZSA9ICJGQkNGIg0KKSAlPiUNCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJGb3JtYcOnw6NvIEJydXRhIGRlIENhcGl0YWwgRml4byIsDQogICAgc3R5bGUgPSBsaXN0KA0KICAgICAgY29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgICAgIGZvbnRXZWlnaHQgPSAiYm9sZCINCiAgICApDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiVmFyaWHDp8OjbyBjb250cmEgbyB0cmltZXN0cmUgaW1lZGlhdGFtZW50ZSBhbnRlcmlvciwgMlQvMjAxNCBhIDFULzIwMTciLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICApICU+JQ0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gZmJjZiRyb3R1bG8sDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSkNCiAgKSAlPiUNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiVmFyaWHDp8OjbyB0cmltZXN0cmFsICglKSIpLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlfSUiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gVEVYVE8pDQogICAgKSwNCiAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgbGlzdCgNCiAgICAgICAgdmFsdWUgPSAwLA0KICAgICAgICBjb2xvciA9IFRFWFRPLA0KICAgICAgICB3aWR0aCA9IDEsDQogICAgICAgIHpJbmRleCA9IDQNCiAgICAgICkNCiAgICApLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI2VlZWVlZSINCiAgKSAlPiUNCiAgaGNfdG9vbHRpcCgNCiAgICBoZWFkZXJGb3JtYXQgPSAiPGI+e3BvaW50LmtleX08L2I+PGJyLz4iLA0KICAgIHBvaW50Rm9ybWF0ID0gIlZhcmlhw6fDo286IDxiPntwb2ludC55Oi4xZn0lPC9iPiIsDQogICAgYmFja2dyb3VuZENvbG9yID0gIndoaXRlIiwNCiAgICBib3JkZXJDb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBjb2x1bW4gPSBsaXN0KA0KICAgICAgY29sb3JCeVBvaW50ID0gVFJVRSwNCiAgICAgIGJvcmRlcldpZHRoID0gMCwNCiAgICAgIGdyb3VwUGFkZGluZyA9IDAuMDgsDQogICAgICBwb2ludFBhZGRpbmcgPSAwLjA0DQogICAgKQ0KICApICU+JQ0KICBoY19sZWdlbmQoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBJQkdFLCBDb250YXMgTmFjaW9uYWlzIFRyaW1lc3RyYWlzLCBUYWJlbGEgNTkzMiBTSURSQS4iDQogICkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIHN0eWxlID0gbGlzdChmb250RmFtaWx5ID0gIkFyaWFsLCBzYW5zLXNlcmlmIikNCiAgKQ0KYGBgDQoNCioqR3LDoWZpY28gMTIqKg0KDQpgYGB7cn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gUEFDT1RFUyAtLS0tLS0tLS0tLS0tLS0tLS0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gUEFMRVRBIERBIExJR0EgLS0tLS0tLS0tLS0tLS0tLS0tDQpBTUFSRUxPICAgICA8LSAiI2ZlYjcxMiINCkFaVUxfRVNDVVJPIDwtICIjMDIwMjNDIg0KQVpVTF9NRURJTyAgPC0gIiMwMDJjNWUiDQpDSU5aQSAgICAgICA8LSAiI2E2YTZhNiINClRFWFRPICAgICAgIDwtICIjM2EzYTNhIg0KQVpVTF9DTEFSTyAgPC0gIiM0NmIxZTEiDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDEpIExFUiBBIEJBU0UgLS0tLS0tLS0tLS0tLS0tLS0tDQpudWNpX3JhdyA8LSByZWFkX2V4Y2VsKA0KICBmaWxlLnBhdGgoZGFkb3NfZGlyLCAiY2ljbG8tZGUtY3Jlc2NpbWVudG8gKDIpLnhsc3giKSwNCiAgc2hlZXQgPSAiYmFzZV92YXJpYXZlaXMiDQopDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDIpIFRSQVRBUiBBIEJBU0UgLS0tLS0tLS0tLS0tLS0tLS0tDQpudWNpIDwtIG51Y2lfcmF3ICU+JQ0KICBtdXRhdGUoDQogICAgZGF0YSA9IGFzLkRhdGUoZGF0YSksDQogICAgTlVDSSA9IGFzLm51bWVyaWMoTlVDSSkNCiAgKSAlPiUNCiAgZmlsdGVyKA0KICAgIGRhdGEgPj0gYXMuRGF0ZSgiMjAxNC0xMC0wMSIpLA0KICAgIGRhdGEgPD0gYXMuRGF0ZSgiMjAxNy0xMi0wMSIpDQogICkgJT4lDQogIGFycmFuZ2UoZGF0YSkNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gMykgR1LDgUZJQ08gLS0tLS0tLS0tLS0tLS0tLS0tDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBudWNpLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgaGNhZXMoeCA9IGRhdGEsIHkgPSBOVUNJKSwNCiAgICBuYW1lID0gIk5VQ0kiLA0KICAgIGNvbG9yID0gQVpVTF9FU0NVUk8sDQogICAgbGluZVdpZHRoID0gMi40LA0KICAgIHpJbmRleCA9IDUNCiAgKSAlPiUNCiAgDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiTsOtdmVsIGRlIFV0aWxpemHDp8OjbyBkYSBDYXBhY2lkYWRlIEluc3RhbGFkYSIsDQogICAgc3R5bGUgPSBsaXN0KA0KICAgICAgY29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgICAgIGZvbnRXZWlnaHQgPSAiYm9sZCINCiAgICApDQogICkgJT4lDQogIA0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIkluZMO6c3RyaWEgZGUgdHJhbnNmb3JtYcOnw6NvLCBvdXQvMjAxNCBhIGRlei8yMDE3IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykNCiAgKSAlPiUNCiAgDQogIGhjX3hBeGlzKA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gTlVMTCksDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykpDQogICkgJT4lDQogIA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJOVUNJICglKSIpLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlfSUiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gVEVYVE8pDQogICAgKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNlZWVlZWUiDQogICkgJT4lDQogIA0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsDQogICAgY3Jvc3NoYWlycyA9IFRSVUUsDQogICAgdmFsdWVEZWNpbWFscyA9IDEsDQogICAgdmFsdWVTdWZmaXggPSAiJSIsDQogICAgYmFja2dyb3VuZENvbG9yID0gIndoaXRlIiwNCiAgICBib3JkZXJDb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICApICU+JQ0KICANCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIA0KICBoY19yYW5nZVNlbGVjdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogRkdWL0lCUkUsIFNvbmRhZ2VtIGRhIEluZMO6c3RyaWEuIg0KICApICU+JQ0KICANCiAgaGNfY2hhcnQoDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIHNhbnMtc2VyaWYiKQ0KICApDQpgYGANCg0KIyMjIDIuMy4yIE8gYWp1c3RlIGRvIG1lcmNhZG8gZGUgdHJhYmFsaG8NCg0KTyBtZXJjYWRvIGRlIHRyYWJhbGhvIGNvbmZpcm1vdSBuYSByZWNlc3PDo28gdW0gcGFkcsOjbyBjbMOhc3NpY28gZG8gY2ljbG8gZWNvbsO0bWljbzogZm9pIGEgw7psdGltYSB2YXJpw6F2ZWwgYSBlbnRyYXIgZSBhIMO6bHRpbWEgYSBzYWlyIGRhIGNyaXNlLiBObyBwcmltZWlybyB0cmltZXN0cmUgZGUgMjAxNCwgYSB0YXhhIGRlIGRlc29jdXBhw6fDo28gbWVkaWRhIHBlbGEgUE5BRCBDb250w61udWEgZXN0YXZhIGVtIDcsMiUsIHByw7N4aW1hIGRvIG3DrW5pbW8gaGlzdMOzcmljbyBkYSBzw6lyaWUuIEEgcGFydGlyIGRlIG1lYWRvcyBkZSAyMDE0LCBjb20gYSBxdWVkYSBkbyBpbnZlc3RpbWVudG8gZSBhIGRlc2FjZWxlcmHDp8OjbyBkYSBpbmTDunN0cmlhLCBvIGRlc2VtcHJlZ28gY29tZcOnb3UgYSBzdWJpciwgbWFzIGluaWNpYWxtZW50ZSBkZSBmb3JtYSBsZW50YS4NCg0KRXNzYSBsZW50aWTDo28gaW5pY2lhbCByZWZsZXRlIG8gcXVlIGEgbGl0ZXJhdHVyYSBjaGFtYSBkZSBsYWJvciBob2FyZGluZzogYXMgZW1wcmVzYXMgc2VndXJhcmFtIHN1YXMgZXF1aXBlcyBuYSBleHBlY3RhdGl2YSBkZSB1bWEgcmVjdXBlcmHDp8OjbyByw6FwaWRhLCBhYnNvcnZlbmRvIG5vIGN1cnRvIHByYXpvIGEgcXVlZGEgZGEgZGVtYW5kYSBjb21vIHJlZHXDp8OjbyBkZSBwcm9kdXRpdmlkYWRlIGUgaG9yYXMgdHJhYmFsaGFkYXMuIFF1YW5kbyBmaWNvdSBjbGFybyBxdWUgYSByZWNlc3PDo28gc2VyaWEgbG9uZ2EsIG9zIGFqdXN0ZXMgdmllcmFtIGRlIGZvcm1hIGFicnVwdGEuIENvbW8gbW9zdHJhIG8gR3LDoWZpY28gMTMsIGEgdGF4YSBkZSBkZXNvY3VwYcOnw6NvIHNhbHRvdSBwYXJhIDksMSUgbm8gw7psdGltbyB0cmltZXN0cmUgZGUgMjAxNSwgYXRpbmdpdSAxMiwxJSBubyBxdWFydG8gdHJpbWVzdHJlIGRlIDIwMTYgZSBhbGNhbsOnb3UgbyBwaWNvIGRlIDEzLDklIG5vIHByaW1laXJvIHRyaW1lc3RyZSBkZSAyMDE3IOKAlCBqw6EgZm9yYSBkbyBwZXLDrW9kbyByZWNlc3Npdm8gb2ZpY2lhbCwgY29uZmlybWFuZG8ganVzdGFtZW50ZSBhIGRlZmFzYWdlbSBkbyBtZXJjYWRvIGRlIHRyYWJhbGhvIGVtIHJlbGHDp8OjbyBhbyBjaWNsbyBkbyBQSUIuDQoNCkRvaXMgYXNwZWN0b3MgZG8gYWp1c3RlIG1lcmVjZW0gZGVzdGFxdWUsIHBvaXMgYWp1ZGFtIGEgZW50ZW5kZXIgbGVnYWRvcyBkdXJhZG91cm9zIGRhIGNyaXNlLiBPIHByaW1laXJvIMOpIG8gYXVtZW50byBkYSBpbmZvcm1hbGlkYWRlOiBwYXJ0ZSBzaWduaWZpY2F0aXZhIGRhIHJlY3VwZXJhw6fDo28gcG9zdGVyaW9yIGRvIGVtcHJlZ28gc2UgZGV1IHBvciB2w61uY3Vsb3Mgc2VtIGNhcnRlaXJhIG91IHBvciBjb250YSBwcsOzcHJpYSwgY29tIHJlbXVuZXJhw6fDo28gbWFpcyBiYWl4YSBlIHByb2R1dGl2aWRhZGUgbcOpZGlhIG1lbm9yLiBPIHNlZ3VuZG8gw6kgYSBxdWVkYSBkYSBtYXNzYSBkZSByZW5kaW1lbnRvcyByZWFpcyDigJQgcmVzdWx0YWRvIGNvbWJpbmFkbyBkZSBtZW5vciBvY3VwYcOnw6NvIGUgZGEgaW5mbGHDp8OjbyBlbGV2YWRhIGRlIDIwMTXigJMyMDE2LCBxdWUgY29tcHJpbWl1IG8gcG9kZXIgZGUgY29tcHJhIGRvcyBzYWzDoXJpb3MgZSBhbGltZW50b3UgdW0gY2ljbG8gcmVjZXNzaXZvIG5vIGNvbnN1bW8sIHRlbWEgZGEgcHLDs3hpbWEgc2XDp8Ojby4NCg0KKipHcsOhZmljbyAxMyoqDQoNCmBgYHtyfQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSBQQUNPVEVTIC0tLS0tLS0tLS0tLS0tLS0tLQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShzdHJpbmdyKQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSBQQUxFVEEgREEgTElHQSAtLS0tLS0tLS0tLS0tLS0tLS0NCkFNQVJFTE8gICAgIDwtICIjZmViNzEyIg0KQVpVTF9FU0NVUk8gPC0gIiMwMjAyM0MiDQpBWlVMX01FRElPICA8LSAiIzAwMmM1ZSINCkNJTlpBICAgICAgIDwtICIjYTZhNmE2Ig0KVEVYVE8gICAgICAgPC0gIiMzYTNhM2EiDQpBWlVMX0NMQVJPICA8LSAiIzQ2YjFlMSINCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gMSkgTEVSIEEgQkFTRSAtLS0tLS0tLS0tLS0tLS0tLS0NCmRlc2VtcHJlZ29fcmF3IDwtIHJlYWRfZXhjZWwoDQogIGZpbGUucGF0aChkYWRvc19kaXIsICJUYXhhZGVkZXNvY3VwYWNhby54bHN4IiksDQogIHNoZWV0ID0gIlRhYmVsYSIsDQogIGNvbF9uYW1lcyA9IEZBTFNFDQopDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDIpIEVYVFJBSVIgVFJJTUVTVFJFUyBFIFZBTE9SRVMgLS0tLS0tLS0tLS0tLS0tLS0tDQp0cmltZXN0cmVzIDwtIGFzLmNoYXJhY3Rlcih1bmxpc3QoZGVzZW1wcmVnb19yYXdbNCwgMjpuY29sKGRlc2VtcHJlZ29fcmF3KV0pKQ0KdmFsb3JlcyAgICA8LSBhcy5udW1lcmljKHVubGlzdChkZXNlbXByZWdvX3Jhd1s1LCAyOm5jb2woZGVzZW1wcmVnb19yYXcpXSkpDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDMpIEZVTsOHw5VFUyBQQVJBIFRSQVRBUiBUUklNRVNUUkVTIC0tLS0tLS0tLS0tLS0tLS0tLQ0KcGFyc2VfdHJpbWVzdHJlIDwtIGZ1bmN0aW9uKHgpIHsNCiAgdHJpbSA8LSBhcy5pbnRlZ2VyKHN0cl9leHRyYWN0KHgsICJeWzEtNF0iKSkNCiAgYW5vICA8LSBhcy5pbnRlZ2VyKHN0cl9leHRyYWN0KHgsICJcXGR7NH0kIikpDQogIG1lcyAgPC0gKHRyaW0gLSAxKSAqIDMgKyAxDQogIA0KICBhcy5EYXRlKHBhc3RlMChhbm8sICItIiwgc3ByaW50ZigiJTAyZCIsIG1lcyksICItMDEiKSkNCn0NCg0Kcm90dWxvX3RyaW1lc3RyZSA8LSBmdW5jdGlvbih4KSB7DQogIHRyaW0gPC0gc3RyX2V4dHJhY3QoeCwgIl5bMS00XSIpDQogIGFubyAgPC0gc3RyX2V4dHJhY3QoeCwgIlxcZHs0fSQiKQ0KICANCiAgcGFzdGUwKHRyaW0sICJULyIsIGFubykNCn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gNCkgTU9OVEFSIEJBU0UgRklOQUwgLS0tLS0tLS0tLS0tLS0tLS0tDQpkZXNlbXByZWdvIDwtIHRpYmJsZSgNCiAgdHJpbWVzdHJlID0gdHJpbWVzdHJlcywNCiAgZGF0YSA9IHBhcnNlX3RyaW1lc3RyZSh0cmltZXN0cmVzKSwNCiAgcm90dWxvID0gcm90dWxvX3RyaW1lc3RyZSh0cmltZXN0cmVzKSwNCiAgdGF4YSA9IHZhbG9yZXMNCikgJT4lDQogIGZpbHRlcigNCiAgICBkYXRhID49IGFzLkRhdGUoIjIwMTQtMTAtMDEiKSwNCiAgICBkYXRhIDw9IGFzLkRhdGUoIjIwMTctMTAtMDEiKQ0KICApICU+JQ0KICBhcnJhbmdlKGRhdGEpDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDUpIEdSw4FGSUNPIC0tLS0tLS0tLS0tLS0tLS0tLQ0KaGNoYXJ0KA0KICBkZXNlbXByZWdvLA0KICB0eXBlID0gImxpbmUiLA0KICBoY2Flcyh4ID0gcm90dWxvLCB5ID0gdGF4YSksDQogIG5hbWUgPSAiVGF4YSBkZSBkZXNvY3VwYcOnw6NvIiwNCiAgY29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgbGluZVdpZHRoID0gMi42DQopICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIlRheGEgZGUgZGVzb2N1cGHDp8OjbyIsDQogICAgc3R5bGUgPSBsaXN0KA0KICAgICAgY29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgICAgIGZvbnRXZWlnaHQgPSAiYm9sZCINCiAgICApDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiUE5BRCBDb250w61udWEgdHJpbWVzdHJhbCwgNFQvMjAxNCBhIDRULzIwMTciLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICApICU+JQ0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gZGVzZW1wcmVnbyRyb3R1bG8sDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSkNCiAgKSAlPiUNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiVGF4YSBkZSBkZXNvY3VwYcOnw6NvICglKSIpLA0KICAgIGxhYmVscyA9IGxpc3QoDQogICAgICBmb3JtYXQgPSAie3ZhbHVlfSUiLA0KICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gVEVYVE8pDQogICAgKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNlZWVlZWUiDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgaGVhZGVyRm9ybWF0ID0gIjxiPntwb2ludC5rZXl9PC9iPjxici8+IiwNCiAgICBwb2ludEZvcm1hdCA9ICJUYXhhIGRlIGRlc29jdXBhw6fDo286IDxiPntwb2ludC55Oi4xZn0lPC9iPiIsDQogICAgYmFja2dyb3VuZENvbG9yID0gIndoaXRlIiwNCiAgICBib3JkZXJDb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBsaW5lID0gbGlzdCgNCiAgICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfbGVnZW5kKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogSUJHRSwgUE5BRCBDb250w61udWEsIFRhYmVsYSA0MDk5IFNJRFJBLiINCiAgKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIHNhbnMtc2VyaWYiKQ0KICApDQpgYGANCg0KIyMjIDIuMy4zIFByb2R1dGl2aWRhZGU6IG8gcHJvYmxlbWEgZXN0cnV0dXJhbCByZXZlbGFkbyBwZWxhIHJlY2Vzc8Ojbw0KDQpBIHJlY2Vzc8OjbyBleHDDtHMgdW1hIGZyYWdpbGlkYWRlIHF1ZSBlc3RhdmEgcGFyY2lhbG1lbnRlIG1hc2NhcmFkYSBwZWxhIGV4cGFuc8OjbyBhbnRlcmlvcjogYSBlc3RhZ25hw6fDo28gZGEgcHJvZHV0aXZpZGFkZS4gT3MgaW5kaWNhZG9yZXMgY29uc3RydcOtZG9zIHBlbG8gT2JzZXJ2YXTDs3JpbyBkYSBQcm9kdXRpdmlkYWRlIFJlZ2lzIEJvbmVsbGkgKEZHVi9JQlJFKSBtb3N0cmFtIHF1ZSwgZW50cmUgMjAxMCBlIDIwMTQsIGVucXVhbnRvIGEgcHJvZHV0aXZpZGFkZSBwb3IgaG9yYSB0cmFiYWxoYWRhIGNyZXNjaWEgYSB1bSByaXRtbyBtb2Rlc3RvIGRlIGNlcmNhIGRlIDEsNSUgYW8gYW5vLCBhIFByb2R1dGl2aWRhZGUgVG90YWwgZG9zIEZhdG9yZXMgKFBURikgYXZhbsOnYXZhIGFwZW5hcyAwLDUlIGFvIGFubyDigJQgc2luYWwgZGUgcXVlIG8gY3Jlc2NpbWVudG8gZXN0YXZhIHNlbmRvIHN1c3RlbnRhZG8gbWFpcyBwb3IgYWN1bXVsYcOnw6NvIGRlIGZhdG9yZXMgKGNhcGl0YWwgZSB0cmFiYWxobykgZG8gcXVlIHBvciBnYW5ob3MgZGUgZWZpY2nDqm5jaWEuDQoNCkR1cmFudGUgYSByZWNlc3PDo28sIGEgUFRGIHRldmUgcXVlZGEgZXhwcmVzc2l2YSwgdmlzw612ZWwgbm8gR3LDoWZpY28gMTQgcGVsYSBpbmZsZXjDo28gZG8gw61uZGljZSBhIHBhcnRpciBkZSAyMDE0IGUgcGVsbyBwb250byBwYXJ0aWN1bGFybWVudGUgc2V2ZXJvIG5vIHF1YXJ0byB0cmltZXN0cmUgZGUgMjAxNS4gQSBwcm9kdXRpdmlkYWRlIHBvciBob3JhIHRhbWLDqW0gcmVjdW91LiBPIHBvbnRvIGFuYWxpdGljYW1lbnRlIG1haXMgcmVsZXZhbnRlLCBwb3LDqW0sIMOpIG8gcXVlIHZlaW8gZGVwb2lzOiBwZWxhIHByaW1laXJhIHZleiBlbSBzdWEgaGlzdMOzcmlhIHJlY2VudGUsIG8gQnJhc2lsIHNhaXUgZGUgdW1hIHJlY2Vzc8OjbyBwcm9mdW5kYSBzZW0gcmVnaXN0cmFyIGdhbmhvcyBzaWduaWZpY2F0aXZvcyBkZSBwcm9kdXRpdmlkYWRlIG5hIHJlY3VwZXJhw6fDo28uIEVtIGNpY2xvcyBhbnRlcmlvcmVzLCBhIHNhw61kYSBkYSBjcmlzZSBjb3N0dW1hdmEgdmlyIGFjb21wYW5oYWRhIGRlIGF1bWVudG8gZGEgZWZpY2nDqm5jaWEsIMOgIG1lZGlkYSBxdWUgYXMgZW1wcmVzYXMgcmVvcmdhbml6YXZhbSBwcm9jZXNzb3MgZSBvIGNhcGl0YWwgc2UgcmVhbG9jYXZhIHBhcmEgdXNvcyBtYWlzIHByb2R1dGl2b3MuIERlc3NhIHZleiwgaXNzbyBuw6NvIG9jb3JyZXUuDQoNCkVzc2UgY29tcG9ydGFtZW50byBhanVkYSBhIGV4cGxpY2FyIGEgZnJ1c3RyYcOnw6NvIGNvbSBvIHJpdG1vIGRvIGNyZXNjaW1lbnRvIHDDs3MtMjAxNyBlIGRpYWxvZ2EgZGlyZXRhbWVudGUgY29tIGEgZGlzY3Vzc8OjbyBkbyBtb21lbnRvIGF0dWFsOiBzZW0gZ2FuaG9zIGNvbnNpc3RlbnRlcyBkZSBwcm9kdXRpdmlkYWRlLCBhIGVjb25vbWlhIGJyYXNpbGVpcmEgcGFzc2EgYSBkZXBlbmRlciBjYWRhIHZleiBtYWlzIGRhIGFjdW11bGHDp8OjbyBkZSBmYXRvcmVzIHBhcmEgY3Jlc2NlciwgbyBxdWUgcmVmb3LDp2Egb3MgbGltaXRlcyBlc3RydXR1cmFpcyBhbyBjaWNsbyBkZSBleHBhbnPDo28uDQoNCioqR3LDoWZpY28gMTQqKg0KDQpgYGB7cn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gUEFDT1RFUyAtLS0tLS0tLS0tLS0tLS0tLS0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQpsaWJyYXJ5KHN0cmluZ3IpDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIFBBTEVUQSBEQSBMSUdBIC0tLS0tLS0tLS0tLS0tLS0tLQ0KQU1BUkVMTyAgICAgPC0gIiNmZWI3MTIiDQpBWlVMX0VTQ1VSTyA8LSAiIzAyMDIzQyINCkFaVUxfTUVESU8gIDwtICIjMDAyYzVlIg0KQ0lOWkEgICAgICAgPC0gIiNhNmE2YTYiDQpURVhUTyAgICAgICA8LSAiIzNhM2EzYSINCkFaVUxfQ0xBUk8gIDwtICIjNDZiMWUxIg0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSAxKSBMRVIgQSBCQVNFIC0tLS0tLS0tLS0tLS0tLS0tLQ0KcHRmX3JhdyA8LSByZWFkX2V4Y2VsKA0KICBmaWxlLnBhdGgoZGFkb3NfZGlyLCAiYmFzZV9kZV9kYWRvc18tX3B0Zl90cmltZXN0cmFsX3Bvcl9ob3JhX3RyYWJhbGhhZGFfNHQyMDI1Lnhsc3giKSwNCiAgc2hlZXQgPSAiUFRGIGNvbSBhanVzdGUgc2F6b25hbCIsDQogIHNraXAgPSA4DQopDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDIpIFRSQVRBUiBBIEJBU0UgLS0tLS0tLS0tLS0tLS0tLS0tDQpwdGYgPC0gcHRmX3JhdyAlPiUNCiAgcmVuYW1lKA0KICAgIHRyaW1lc3RyZSA9IERhdGEsDQogICAgcHRmX2hhYml0dWFpcyA9IGBQVEYgKEhvcmFzIEhhYml0dWFpcylgLA0KICAgIHB0Zl9lZmV0aXZhcyAgPSBgUFRGIChIb3JhcyBFZmV0aXZhcylgDQogICkgJT4lDQogIGZpbHRlcighaXMubmEodHJpbWVzdHJlKSkgJT4lDQogIG11dGF0ZSgNCiAgICB0cmltZXN0cmUgPSBhcy5jaGFyYWN0ZXIodHJpbWVzdHJlKSwNCiAgICBhbm8gPSBhcy5pbnRlZ2VyKHN0cl9leHRyYWN0KHRyaW1lc3RyZSwgIl5cXGR7NH0iKSksDQogICAgdHJpbSA9IGFzLmludGVnZXIoc3RyX2V4dHJhY3QodHJpbWVzdHJlLCAiKD88PXEpWzEtNF0iKSksDQogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0iLCBzcHJpbnRmKCIlMDJkIiwgKHRyaW0gLSAxKSAqIDMgKyAxKSwgIi0wMSIpKSwNCiAgICByb3R1bG8gPSBwYXN0ZTAodHJpbSwgIlQvIiwgYW5vKSwNCiAgICBwdGZfZWZldGl2YXMgPSBhcy5udW1lcmljKHB0Zl9lZmV0aXZhcykNCiAgKSAlPiUNCiAgZmlsdGVyKA0KICAgIGRhdGEgPj0gYXMuRGF0ZSgiMjAxNC0wMS0wMSIpLA0KICAgIGRhdGEgPD0gYXMuRGF0ZSgiMjAxOC0xMC0wMSIpDQogICkgJT4lDQogIGFycmFuZ2UoZGF0YSkNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gMykgR1LDgUZJQ08gLS0tLS0tLS0tLS0tLS0tLS0tDQpoY2hhcnQoDQogIHB0ZiwNCiAgdHlwZSA9ICJsaW5lIiwNCiAgaGNhZXMoeCA9IHJvdHVsbywgeSA9IHB0Zl9lZmV0aXZhcyksDQogIG5hbWUgPSAiUFRGIHBvciBob3JhcyBlZmV0aXZhcyIsDQogIGNvbG9yID0gQVpVTF9FU0NVUk8sDQogIGxpbmVXaWR0aCA9IDIuNg0KKSAlPiUNCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJQcm9kdXRpdmlkYWRlIFRvdGFsIGRvcyBGYXRvcmVzIiwNCiAgICBzdHlsZSA9IGxpc3QoDQogICAgICBjb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgICAgZm9udFdlaWdodCA9ICJib2xkIg0KICAgICkNCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICJQVEYgcG9yIGhvcmFzIGVmZXRpdmFzLCBjb20gYWp1c3RlIHNhem9uYWwsIDIwMTQgYSAyMDE4IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykNCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgY2F0ZWdvcmllcyA9IHB0ZiRyb3R1bG8sDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSkNCiAgKSAlPiUNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiw41uZGljZSwgMlQvMjAxMiA9IDEwMCIpLA0KICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gVEVYVE8pKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNlZWVlZWUiDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgaGVhZGVyRm9ybWF0ID0gIjxiPntwb2ludC5rZXl9PC9iPjxici8+IiwNCiAgICBwb2ludEZvcm1hdCA9ICJQVEY6IDxiPntwb2ludC55Oi4xZn08L2I+IiwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAid2hpdGUiLA0KICAgIGJvcmRlckNvbG9yID0gQVpVTF9FU0NVUk8sDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gVEVYVE8pDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGxpbmUgPSBsaXN0KA0KICAgICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gRkFMU0UpDQogICAgKQ0KICApICU+JQ0KICBoY19sZWdlbmQoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBGR1YvSUJSRSwgT2JzZXJ2YXTDs3JpbyBkYSBQcm9kdXRpdmlkYWRlIFJlZ2lzIEJvbmVsbGkuIg0KICApICU+JQ0KICBoY19jaGFydCgNCiAgICBzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgc2Fucy1zZXJpZiIpDQogICkNCmBgYA0KDQojIyAyLjQgQ29uc3VtbywgY3LDqWRpdG8gZSBjb25maWFuw6dhDQoNCiMjIyAyLjQuMSBBIHJldmVyc8OjbyBkbyBjb25zdW1vIGRhcyBmYW3DrWxpYXMNCg0KTyBjb25zdW1vIGRhcyBmYW3DrWxpYXMsIHF1ZSBoYXZpYSBzaWRvIG8gbW90b3IgZG8gY2ljbG8gZXhwYW5zaXZvIGRlIDIwMDjigJMyMDE0LCBzb2ZyZXUgdW1hIHJldmVyc8OjbyBleHByZXNzaXZhIGR1cmFudGUgYSByZWNlc3PDo28uIENvbW8gZXZpZGVuY2lhIG8gR3LDoWZpY28gMTUsIHBlbGEgc8OpcmllIHRyaW1lc3RyYWwgZGVzc2F6b25hbGl6YWRhLCBvIGFncmVnYWRvIHJlZ2lzdHJvdSBzZXRlIHF1ZWRhcyBjb25zZWN1dGl2YXMgZW50cmUgbyAxwrogdHJpbWVzdHJlIGRlIDIwMTUgZSBvIDPCuiB0cmltZXN0cmUgZGUgMjAxNi4gT3MgcmVjdW9zIGNoZWdhcmFtIGEgMSw5JSBlbSB1bSDDum5pY28gdHJpbWVzdHJlLCBubyAywrogdHJpbWVzdHJlIGRlIDIwMTUsIGUgYSBxdWVkYSBhY3VtdWxhZGEgbm8gcGVyw61vZG8gZm9pIGRlIGFwcm94aW1hZGFtZW50ZSA2JSwgY29uZmlndXJhbmRvIGEgY29udHJhw6fDo28gbWFpcyBsb25nYSBlIGludGVuc2EgZG8gY29uc3VtbyBkYXMgZmFtw61saWFzIG5hIHPDqXJpZSBoaXN0w7NyaWNhIHJlY2VudGUuDQoNCkEgbWFnbml0dWRlIGRlc3NlIG1vdmltZW50byDDqSBtYWNyb2Vjb25vbWljYW1lbnRlIGRlY2lzaXZhIHBvcnF1ZSBvIGNvbnN1bW8gZGFzIGZhbcOtbGlhcyByZXNwb25kZSBwb3IgYXByb3hpbWFkYW1lbnRlIGRvaXMgdGVyw6dvcyBkbyBQSUIgcGVsYSDDs3RpY2EgZGEgZGVzcGVzYS4gUXVhbmRvIGVzc2UgY29tcG9uZW50ZSBlbnRyYSBlbSBxdWVkYSwgZGlmaWNpbG1lbnRlIG91dHJvcyBhZ3JlZ2Fkb3MgY29uc2VndWVtIGNvbXBlbnNhciwgZSBhIGNvbnRyYcOnw6NvIHNlIGdlbmVyYWxpemEuDQoNCkEgcmV2ZXJzw6NvIGZvaSByZXN1bHRhZG8gZGEgY29tYmluYcOnw6NvIGRlIGZhdG9yZXMgZGlzY3V0aWRvcyBuYXMgc2XDp8O1ZXMgYW50ZXJpb3Jlcy4gQSBxdWVkYSBkYSByZW5kYSByZWFsIGRvIHRyYWJhbGhvLCBkZWNvcnJlbnRlIGRvIGF1bWVudG8gZG8gZGVzZW1wcmVnbyBlIGRhIGluZmxhw6fDo28gZGUgZG9pcyBkw61naXRvcyBlbSAyMDE1LCBjb21wcmltaXUgbyBwb2RlciBkZSBjb21wcmEuIEEgZWxldmHDp8OjbyBkYSBTZWxpYyBlbmNhcmVjZXUgbyBjcsOpZGl0byBhbyBjb25zdW1pZG9yLCBxdWUgc2Vyw6EgYW5hbGlzYWRvIG5hIHByw7N4aW1hIHN1YnNlw6fDo28uIEUgbyBlbmRpdmlkYW1lbnRvIGVsZXZhZG8gZGFzIGZhbcOtbGlhcyDigJQgaGVyYW7Dp2EgZG8gY2ljbG8gZGUgY3LDqWRpdG8gZGEgZMOpY2FkYSBhbnRlcmlvciDigJQgbGltaXRvdSBhIGNhcGFjaWRhZGUgZGUgYWJzb3LDp8OjbyBkbyBjaG9xdWUgcG9yIG1laW8gZGUgbm92b3MgZW1wcsOpc3RpbW9zLiBPIHJlc3VsdGFkbyBmb2kgdW0gY2ljbG8gcmVjZXNzaXZvIG5vIGNvbnN1bW8gcXVlIHNlIHJldHJvYWxpbWVudG91OiBxdWVkYSBkbyBlbXByZWdvIGNvbXByaW1lIGEgcmVuZGEsIHF1ZSBjb21wcmltZSBvIGNvbnN1bW8sIHF1ZSBjb21wcmltZSBhIHByb2R1w6fDo28gZSBvIGVtcHJlZ28gbm92YW1lbnRlLg0KDQoqKkdyw6FmaWNvIDE1KioNCg0KYGBge3J9DQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KHN0cmluZ3IpDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIFBBTEVUQSBEQSBMSUdBIC0tLS0tLS0tLS0tLS0tLS0tLQ0KQU1BUkVMTyAgICAgPC0gIiNmZWI3MTIiDQpBWlVMX0VTQ1VSTyA8LSAiIzAyMDIzQyINCkFaVUxfTUVESU8gIDwtICIjMDAyYzVlIg0KQ0lOWkEgICAgICAgPC0gIiNhNmE2YTYiDQpURVhUTyAgICAgICA8LSAiIzNhM2EzYSINCkFaVUxfQ0xBUk8gIDwtICIjNDZiMWUxIg0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSAxKSBMRVIgQSBCQVNFIC0tLS0tLS0tLS0tLS0tLS0tLQ0KY29uc3Vtb19yYXcgPC0gcmVhZF9leGNlbCgNCiAgZmlsZS5wYXRoKGRhZG9zX2RpciwgIlZhcmlhY2FvY29uc2ZhbS54bHN4IiksDQogIHNoZWV0ID0gIlRhYmVsYSIsDQogIGNvbF9uYW1lcyA9IEZBTFNFDQopDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDIpIEVYVFJBSVIgVFJJTUVTVFJFUyBFIFZBTE9SRVMgLS0tLS0tLS0tLS0tLS0tLS0tDQp0cmltZXN0cmVzIDwtIGFzLmNoYXJhY3Rlcih1bmxpc3QoY29uc3Vtb19yYXdbNCwgMjpuY29sKGNvbnN1bW9fcmF3KV0pKQ0KdmFsb3JlcyAgICA8LSBhcy5udW1lcmljKHVubGlzdChjb25zdW1vX3Jhd1s2LCAyOm5jb2woY29uc3Vtb19yYXcpXSkpDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDMpIEZVTsOHw5VFUyBQQVJBIFRSQVRBUiBUUklNRVNUUkVTIC0tLS0tLS0tLS0tLS0tLS0tLQ0KcGFyc2VfdHJpbWVzdHJlIDwtIGZ1bmN0aW9uKHgpIHsNCiAgdHJpbSA8LSBhcy5pbnRlZ2VyKHN0cl9leHRyYWN0KHgsICJeWzEtNF0iKSkNCiAgYW5vICA8LSBhcy5pbnRlZ2VyKHN0cl9leHRyYWN0KHgsICJcXGR7NH0kIikpDQogIG1lcyAgPC0gKHRyaW0gLSAxKSAqIDMgKyAxDQogIA0KICBhcy5EYXRlKHBhc3RlMChhbm8sICItIiwgc3ByaW50ZigiJTAyZCIsIG1lcyksICItMDEiKSkNCn0NCg0Kcm90dWxvX3RyaW1lc3RyZSA8LSBmdW5jdGlvbih4KSB7DQogIHRyaW0gPC0gc3RyX2V4dHJhY3QoeCwgIl5bMS00XSIpDQogIGFubyAgPC0gc3RyX2V4dHJhY3QoeCwgIlxcZHs0fSQiKQ0KICANCiAgcGFzdGUwKHRyaW0sICJULyIsIGFubykNCn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gNCkgTU9OVEFSIEJBU0UgRklOQUwgLS0tLS0tLS0tLS0tLS0tLS0tDQpjb25zdW1vIDwtIHRpYmJsZSgNCiAgdHJpbWVzdHJlID0gdHJpbWVzdHJlcywNCiAgZGF0YSA9IHBhcnNlX3RyaW1lc3RyZSh0cmltZXN0cmVzKSwNCiAgcm90dWxvID0gcm90dWxvX3RyaW1lc3RyZSh0cmltZXN0cmVzKSwNCiAgdmFyaWFjYW8gPSB2YWxvcmVzDQopICU+JQ0KICBmaWx0ZXIoDQogICAgZGF0YSA+PSBhcy5EYXRlKCIyMDE0LTAxLTAxIiksDQogICAgZGF0YSA8PSBhcy5EYXRlKCIyMDE3LTEwLTAxIikNCiAgKSAlPiUNCiAgYXJyYW5nZShkYXRhKSAlPiUNCiAgbXV0YXRlKA0KICAgIGNvciA9IGlmX2Vsc2UodmFyaWFjYW8gPCAwLCBBWlVMX0VTQ1VSTywgQVpVTF9DTEFSTykNCiAgKQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSA1KSBHUsOBRklDTyAtLS0tLS0tLS0tLS0tLS0tLS0NCmhpZ2hjaGFydCgpICU+JQ0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBjb25zdW1vLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBoY2Flcyh4ID0gcm90dWxvLCB5ID0gdmFyaWFjYW8sIGNvbG9yID0gY29yKSwNCiAgICBuYW1lID0gIlZhcmlhw6fDo28gdHJpbWVzdHJhbCINCiAgKSAlPiUNCiAgDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiQ29uc3VtbyBkYXMgZmFtw61saWFzIiwNCiAgICBzdHlsZSA9IGxpc3QoDQogICAgICBjb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgICAgZm9udFdlaWdodCA9ICJib2xkIg0KICAgICkNCiAgKSAlPiUNCiAgDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiVmFyaWHDp8OjbyB0cmltZXN0cmFsLCAyMDE0IGEgMjAxNyIsDQogICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gVEVYVE8pDQogICkgJT4lDQogIA0KICBoY194QXhpcygNCiAgICBjYXRlZ29yaWVzID0gY29uc3VtbyRyb3R1bG8sDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSkNCiAgKSAlPiUNCiAgDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIlZhcmlhw6fDo28gdHJpbWVzdHJhbCAoJSkiKSwNCiAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgZm9ybWF0ID0gInt2YWx1ZX0lIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICAgICksDQogICAgcGxvdExpbmVzID0gbGlzdCgNCiAgICAgIGxpc3QoDQogICAgICAgIHZhbHVlID0gMCwNCiAgICAgICAgY29sb3IgPSBURVhUTywNCiAgICAgICAgd2lkdGggPSAxLA0KICAgICAgICB6SW5kZXggPSA0DQogICAgICApDQogICAgKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNlZWVlZWUiDQogICkgJT4lDQogIA0KICBoY190b29sdGlwKA0KICAgIGhlYWRlckZvcm1hdCA9ICI8Yj57cG9pbnQua2V5fTwvYj48YnIvPiIsDQogICAgcG9pbnRGb3JtYXQgPSAiVmFyaWHDp8OjbyB0cmltZXN0cmFsOiA8Yj57cG9pbnQueTouMWZ9JTwvYj4iLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICJ3aGl0ZSIsDQogICAgYm9yZGVyQ29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykNCiAgKSAlPiUNCiAgDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGNvbHVtbiA9IGxpc3QoDQogICAgICBjb2xvckJ5UG9pbnQgPSBUUlVFLA0KICAgICAgYm9yZGVyV2lkdGggPSAwLA0KICAgICAgZ3JvdXBQYWRkaW5nID0gMC4wOCwNCiAgICAgIHBvaW50UGFkZGluZyA9IDAuMDQNCiAgICApDQogICkgJT4lDQogIA0KICBoY19sZWdlbmQoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogSUJHRSwgQ29udGFzIE5hY2lvbmFpcyBUcmltZXN0cmFpcywgVGFiZWxhIDU5MzIgU0lEUkEuIg0KICApICU+JQ0KICANCiAgaGNfY2hhcnQoDQogICAgc3R5bGUgPSBsaXN0KGZvbnRGYW1pbHkgPSAiQXJpYWwsIHNhbnMtc2VyaWYiKQ0KICApDQpgYGANCg0KIyMjIDIuNC4yIEEgcmV0cmHDp8OjbyBkbyBjcsOpZGl0bw0KDQpPIGNyw6lkaXRvLCBxdWUgaGF2aWEgZnVuY2lvbmFkbyBjb21vIGNvbWJ1c3TDrXZlbCBkYSBleHBhbnPDo28gYW50ZXJpb3IsIGNvbXBvcnRvdS1zZSBuYSByZWNlc3PDo28gY29tbyBhbXBsaWZpY2Fkb3IgZGEgcXVlZGEuIENvbmZvcm1lIHNlIG9ic2VydmEgbm8gR3LDoWZpY28gMTYsIG8gZXN0b3F1ZSB0b3RhbCBkZSBjcsOpZGl0byBkbyBTaXN0ZW1hIEZpbmFuY2Vpcm8gTmFjaW9uYWwsIHF1ZSB2aW5oYSBjcmVzY2VuZG8gY29udGludWFtZW50ZSBkZXNkZSBtZWFkb3MgZG9zIGFub3MgMjAwMCwgcmVjdW91IGVtIHRlcm1vcyByZWFpcyBlIGNhaXUgY29tbyBwcm9wb3LDp8OjbyBkbyBQSUIg4oCUIGRlIGNlcmNhIGRlIDUzLDclIG5vIGZpbSBkZSAyMDE1IHBhcmEgNDksMyUgbm8gZmltIGRlIDIwMTYuDQoNClRyw6pzIGZhdG9yZXMgZXhwbGljYW0gZXNzYSByZXZlcnPDo28uIE8gcHJpbWVpcm8gw6kgYSBhbHRhIGRhIFNlbGljLCBxdWUgZWxldm91IGFzIHRheGFzIGRlIGp1cm9zIGFvIHRvbWFkb3IgZmluYWwgYSBwYXRhbWFyZXMgcHJvaWJpdGl2b3M6IG9zIGp1cm9zIG3DqWRpb3MgZG8gY3LDqWRpdG8gbGl2cmUgcGFyYSBwZXNzb2EgZsOtc2ljYSBjaGVnYXJhbSBhIGNlcmNhIGRlIDcxLDUlIGFvIGFubyBlbSAyMDE2LiBPIHNlZ3VuZG8gw6kgYSBkZXRlcmlvcmHDp8OjbyBkYSBwZXJjZXDDp8OjbyBkZSByaXNjbyBkbyBzaXN0ZW1hIGZpbmFuY2Vpcm8gZGlhbnRlIGRhIHF1ZWRhIGRhIGF0aXZpZGFkZSBlIGRvIGF1bWVudG8gZGEgaW5hZGltcGzDqm5jaWEsIHNvYnJldHVkbyBlbnRyZSBlbXByZXNhcy4gTyB0ZXJjZWlybyDDqSBhIHJldHJhw6fDo28gZG8gY3LDqWRpdG8gZGlyZWNpb25hZG8sIHBhcnRpY3VsYXJtZW50ZSBkbyBCTkRFUywgcXVlIHJldmVydGV1IG8gZm9ydGUgY3Jlc2NpbWVudG8gZG9zIGRlc2VtYm9sc29zIG9ic2VydmFkbyBubyBjaWNsbyBhbnRlcmlvciDigJQgbW92aW1lbnRvIGFzc29jaWFkbyB0YW50byBhbyBhanVzdGUgZmlzY2FsIHF1YW50byDDoCByZW9yaWVudGHDp8OjbyBkYSBwb2zDrXRpY2EgZGUgY3LDqWRpdG8gYSBwYXJ0aXIgZGUgMjAxNS4NCg0KTyBlZmVpdG8gY29tYmluYWRvIGZvaSB1bSBwcm9jZXNzbyBkZSBkZXNhbGF2YW5jYWdlbSBzaW11bHTDom5lYSBkZSBmYW3DrWxpYXMgZSBlbXByZXNhcywgcXVlIHNlIHByb2xvbmdvdSBwZWxvcyBhbm9zIHNlZ3VpbnRlcyBhbyBmaW0gZGEgcmVjZXNzw6NvIGUgYWp1ZGEgYSBleHBsaWNhciBhIGxlbnRpZMOjbyBkYSByZXRvbWFkYS4gRW0gdW1hIGVjb25vbWlhIGVtIHF1ZSBvIGNyw6lkaXRvIGhhdmlhIHNpZG8gdW0gY29tcG9uZW50ZSBjZW50cmFsIGRvIGNyZXNjaW1lbnRvLCBhIHN1YSByZXZlcnPDo28gZWxpbWlub3UgdW0gZG9zIHByaW5jaXBhaXMgY2FuYWlzIGRlIGZpbmFuY2lhbWVudG8gZGEgZGVtYW5kYSBhZ3JlZ2FkYS4NCg0KKipHcsOhZmljbyAxNioqDQoNCmBgYHtyfQ0KDQojIFBBQ09URVMNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQpsaWJyYXJ5KEdldEJDQkRhdGEpDQpsaWJyYXJ5KHRpZHlyKQ0KDQojIFBBTEVUQSBEQSBMSUdBDQpBTUFSRUxPICAgICA8LSAiI2ZlYjcxMiINCkFaVUxfRVNDVVJPIDwtICIjMDIwMjNDIg0KQVpVTF9NRURJTyAgPC0gIiMwMDJjNWUiDQpDSU5aQSAgICAgICA8LSAiI2E2YTZhNiINClRFWFRPICAgICAgIDwtICIjM2EzYTNhIg0KQVpVTF9DTEFSTyAgPC0gIiM0NmIxZTEiDQoNCiMgUEVSw41PRE8NCmluaWNpbyA8LSBhcy5EYXRlKCIyMDA4LTAxLTAxIikNCmZpbSAgICA8LSBhcy5EYXRlKCIyMDE3LTEyLTMxIikNCg0KIyBTw4lSSUVTIFNHUw0Kc2VyaWVzX2lkcyA8LSBjKA0KICBDcmVkaXRvX1RvdGFsICAgICAgID0gMjA2MjIsDQogIENyZWRpdG9fTGl2cmUgICAgICAgPSAyMDYyNSwNCiAgQ3JlZGl0b19EaXJlY2lvbmFkbyA9IDIwNjI4DQopDQoNCmRhZG9zX2JjYiA8LSBnYmNiZF9nZXRfc2VyaWVzKA0KICBpZCA9IHNlcmllc19pZHMsDQogIGZpcnN0LmRhdGUgPSBpbmljaW8sDQogIGxhc3QuZGF0ZSAgPSBmaW0sDQogIGZvcm1hdC5kYXRhID0gIndpZGUiDQopDQoNCiMgVFJBVEFSIEJBU0UNCmNyZWRpdG8gPC0gZGFkb3NfYmNiICU+JQ0KICByZW5hbWUoDQogICAgZGF0YSA9IHJlZi5kYXRlLA0KICAgIHRvdGFsID0gQ3JlZGl0b19Ub3RhbCwNCiAgICBsaXZyZSA9IENyZWRpdG9fTGl2cmUsDQogICAgZGlyZWNpb25hZG8gPSBDcmVkaXRvX0RpcmVjaW9uYWRvDQogICkgJT4lDQogIG11dGF0ZSgNCiAgICBkYXRhID0gYXMuRGF0ZShkYXRhKSwNCiAgICBkYXRhID0gZmxvb3JfZGF0ZShkYXRhLCAibW9udGgiKQ0KICApICU+JQ0KICBhcnJhbmdlKGRhdGEpDQoNCiMgR1LDgUZJQ08NCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogIA0KICBoY19hZGRfc2VyaWVzKA0KICAgIGNyZWRpdG8sDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gZGF0YSwgeSA9IHRvdGFsKSwNCiAgICBuYW1lID0gIkNyw6lkaXRvIHRvdGFsIiwNCiAgICBjb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgIGxpbmVXaWR0aCA9IDIuOCwNCiAgICB6SW5kZXggPSA1DQogICkgJT4lDQogIA0KICBoY19hZGRfc2VyaWVzKA0KICAgIGNyZWRpdG8sDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gZGF0YSwgeSA9IGxpdnJlKSwNCiAgICBuYW1lID0gIkNyw6lkaXRvIGxpdnJlIiwNCiAgICBjb2xvciA9IEFaVUxfQ0xBUk8sDQogICAgbGluZVdpZHRoID0gMi4yLA0KICAgIHpJbmRleCA9IDQNCiAgKSAlPiUNCiAgDQogIGhjX2FkZF9zZXJpZXMoDQogICAgY3JlZGl0bywNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIGhjYWVzKHggPSBkYXRhLCB5ID0gZGlyZWNpb25hZG8pLA0KICAgIG5hbWUgPSAiQ3LDqWRpdG8gZGlyZWNpb25hZG8iLA0KICAgIGNvbG9yID0gQU1BUkVMTywNCiAgICBsaW5lV2lkdGggPSAyLjIsDQogICAgekluZGV4ID0gNA0KICApICU+JQ0KICANCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJFc3RvcXVlIGRlIGNyw6lkaXRvIGRvIFNGTiIsDQogICAgc3R5bGUgPSBsaXN0KA0KICAgICAgY29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgICAgIGZvbnRXZWlnaHQgPSAiYm9sZCINCiAgICApDQogICkgJT4lDQogIA0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIkNyw6lkaXRvIHRvdGFsLCBsaXZyZSBlIGRpcmVjaW9uYWRvIGNvbW8gcGVyY2VudHVhbCBkbyBQSUIsIDIwMDggYSAyMDE3IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykNCiAgKSAlPiUNCiAgDQogIGhjX3hBeGlzKA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gTlVMTCksDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykpDQogICkgJT4lDQogIA0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJQZXJjZW50dWFsIGRvIFBJQiAoJSkiKSwNCiAgICBsYWJlbHMgPSBsaXN0KA0KICAgICAgZm9ybWF0ID0gInt2YWx1ZX0lIiwNCiAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICAgICksDQogICAgZ3JpZExpbmVDb2xvciA9ICIjZWVlZWVlIg0KICApICU+JQ0KICANCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIHZhbHVlRGVjaW1hbHMgPSAxLA0KICAgIHZhbHVlU3VmZml4ID0gIiUiLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICJ3aGl0ZSIsDQogICAgYm9yZGVyQ29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykNCiAgKSAlPiUNCiAgDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIg0KICApICU+JQ0KICANCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19zY3JvbGxiYXIoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBUUlVFKSAlPiUNCiAgDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogQmFuY28gQ2VudHJhbCBkbyBCcmFzaWwsIFNHUy4iDQogICkgJT4lDQogIA0KICBoY19jaGFydCgNCiAgICBzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgc2Fucy1zZXJpZiIpDQogICkNCmBgYA0KDQojIyMgMi40LjMgQ29uZmlhbsOnYSBlIGluY2VydGV6YQ0KDQpVbSBhc3BlY3RvIGRpc3RpbnRpdm8gZGEgcmVjZXNzw6NvIGRlIDIwMTTigJMyMDE2LCBlbSBjb21wYXJhw6fDo28gY29tIGVwaXPDs2Rpb3MgYW50ZXJpb3Jlcywgw6kgbyBwYXBlbCBjZW50cmFsIGRhcyBleHBlY3RhdGl2YXMgZSBkYSBpbmNlcnRlemEuIENvbW8gaWx1c3RyYSBvIEdyw6FmaWNvIDE3LCBvcyBpbmRpY2Fkb3JlcyBkZSBjb25maWFuw6dhIGRhIEZHVi9JQlJFIOKAlCBlbSBwYXJ0aWN1bGFyIG8gw41uZGljZSBkZSBDb25maWFuw6dhIEVtcHJlc2FyaWFsIChJQ0UpIGUgbyDDjW5kaWNlIGRlIENvbmZpYW7Dp2EgZG8gQ29uc3VtaWRvciAoSUNDKSDigJQgYXRpbmdpcmFtIG3DrW5pbW9zIGhpc3TDs3JpY29zIGVudHJlIG8gZmluYWwgZGUgMjAxNSBlIG8gaW7DrWNpbyBkZSAyMDE2LCBlbSBuw612ZWlzIGluZmVyaW9yZXMgYW9zIG9ic2VydmFkb3Mgbm8gYXVnZSBkYSBjcmlzZSBpbnRlcm5hY2lvbmFsIGRlIDIwMDjigJMyMDA5LiBJbmRpY2Fkb3JlcyBkZSBpbmNlcnRlemEsIGNvbW8gbyBJbmRpY2Fkb3IgZGUgSW5jZXJ0ZXphIGRhIEVjb25vbWlhIChJSUUtQnIpIGRhIEZHViwgdGFtYsOpbSByZWdpc3RyYXJhbSBuw612ZWlzIHJlY29yZGVzIG5vIG1lc21vIHBlcsOtb2RvLCBjb20gcGljbyBlbSBzZXRlbWJybyBkZSAyMDE1Lg0KDQpBIGRldGVyaW9yYcOnw6NvIGRhcyBleHBlY3RhdGl2YXMgw6kgbWFjcm9lY29ub21pY2FtZW50ZSByZWxldmFudGUgcG9ycXVlIGNyaWEgdW0gY2FuYWwgcHLDs3ByaW8gZGUgdHJhbnNtaXNzw6NvIGRhIGNyaXNlLiBEaWFudGUgZGUgY2Vuw6FyaW9zIGluY2VydG9zLCBlbXByZXNhcyBwb3N0ZXJnYW0gZGVjaXPDtWVzIGRlIGludmVzdGltZW50byBlIGZhbcOtbGlhcyBhdW1lbnRhbSBhIHBvdXBhbsOnYSBwcmVjYXVjaW9uw6FyaWEsIGNvbXByaW1pbmRvIHNpbXVsdGFuZWFtZW50ZSBhIEZCQ0YgZSBvIGNvbnN1bW8g4oCUIG91IHNlamEsIGFtcGxpYW5kbyBvIGVmZWl0byByZWNlc3Npdm8gZG9zIGRlbWFpcyBjaG9xdWVzIHBlbGEgdmlhIGV4cGVjdGFjaW9uYWwuDQoNCkEgcGVyZGEgZGUgY3JlZGliaWxpZGFkZSBkYSBwb2zDrXRpY2EgZWNvbsO0bWljYSBlbSAyMDE1IGFsaW1lbnRvdSBkaXJldGFtZW50ZSBlc3NlcyBpbmRpY2Fkb3Jlcy4gQSByZXZpc8OjbyBkYSBtZXRhIGRlIHN1cGVyw6F2aXQgcHJpbcOhcmlvIHBhcmEgZMOpZmljaXQsIGEgc3VjZXNzw6NvIGRlIHRyb2NhcyBubyBjb21hbmRvIGRvIE1pbmlzdMOpcmlvIGRhIEZhemVuZGEgKExldnkg4oaSIE5lbHNvbiBCYXJib3NhIOKGkiBIZW5yaXF1ZSBNZWlyZWxsZXMpIGUgYXMgaW5jZXJ0ZXphcyBkbyBwcm9jZXNzbyBkZSBpbXBlYWNobWVudCBmdW5jaW9uYXJhbSBjb21vIHJ1w61kb3MgY29udMOtbnVvcyBxdWUgZGlmaWN1bHRhdmFtIGEgZm9ybWHDp8OjbyBkZSBleHBlY3RhdGl2YXMgZXN0w6F2ZWlzLiBBc3NpbSwgYSBjcmlzZSBwb2zDrXRpY2EgbsOjbyBhdHVvdSBhcGVuYXMgY29tbyB1bSBwYW5vIGRlIGZ1bmRvIGRhIHJlY2Vzc8OjbywgbWFzIGNvbW8gdW0gdmV0b3IgY29uY3JldG8gZGUgdHJhbnNtaXNzw6NvIGRvcyBwcm9ibGVtYXMgcGFyYSBhIGF0aXZpZGFkZSBlY29uw7RtaWNhIHJlYWwuDQoNCioqR3LDoWZpY28gMTcqKg0KDQpgYGB7cn0NCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gUEFDT1RFUyAtLS0tLS0tLS0tLS0tLS0tLS0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQpsaWJyYXJ5KGx1YnJpZGF0ZSkNCg0KIyAtLS0tLS0tLS0tLS0tLS0tLS0gUEFMRVRBIERBIExJR0EgLS0tLS0tLS0tLS0tLS0tLS0tDQpBTUFSRUxPICAgICA8LSAiI2ZlYjcxMiINCkFaVUxfRVNDVVJPIDwtICIjMDIwMjNDIg0KQVpVTF9NRURJTyAgPC0gIiMwMDJjNWUiDQpDSU5aQSAgICAgICA8LSAiI2E2YTZhNiINClRFWFRPICAgICAgIDwtICIjM2EzYTNhIg0KQVpVTF9DTEFSTyAgPC0gIiM0NmIxZTEiDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDEpIExFUiBBIEJBU0UgLS0tLS0tLS0tLS0tLS0tLS0tDQpjb25mX3JhdyA8LSByZWFkX2V4Y2VsKA0KICBmaWxlLnBhdGgoZGFkb3NfZGlyLCAiY2ljbG8tZGUtY3Jlc2NpbWVudG8gKDIpLnhsc3giKSwNCiAgc2hlZXQgPSAiYmFzZV92YXJpYXZlaXMiDQopDQoNCiMgLS0tLS0tLS0tLS0tLS0tLS0tIDIpIFRSQVRBUiBBIEJBU0UgLS0tLS0tLS0tLS0tLS0tLS0tDQpjb25mIDwtIGNvbmZfcmF3ICU+JQ0KICBtdXRhdGUoDQogICAgZGF0YSA9IGFzLkRhdGUoZGF0YSksDQogICAgSUNDID0gYXMubnVtZXJpYyhJQ0MpLA0KICAgIElDRSA9IGFzLm51bWVyaWMoSUNFKQ0KICApICU+JQ0KICBmaWx0ZXIoDQogICAgZGF0YSA+PSBhcy5EYXRlKCIyMDE0LTAxLTAxIiksDQogICAgZGF0YSA8PSBhcy5EYXRlKCIyMDE3LTEyLTMxIikNCiAgKSAlPiUNCiAgYXJyYW5nZShkYXRhKQ0KDQojIC0tLS0tLS0tLS0tLS0tLS0tLSAzKSBHUsOBRklDTyAtLS0tLS0tLS0tLS0tLS0tLS0NCmhpZ2hjaGFydCh0eXBlID0gInN0b2NrIikgJT4lDQogIA0KICBoY19hZGRfc2VyaWVzKA0KICAgIGNvbmYsDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gZGF0YSwgeSA9IElDQyksDQogICAgbmFtZSA9ICJJQ0MiLA0KICAgIGNvbG9yID0gQU1BUkVMTywNCiAgICBsaW5lV2lkdGggPSAyLjQsDQogICAgekluZGV4ID0gNQ0KICApICU+JQ0KICANCiAgaGNfYWRkX3NlcmllcygNCiAgICBjb25mLA0KICAgIHR5cGUgPSAibGluZSIsDQogICAgaGNhZXMoeCA9IGRhdGEsIHkgPSBJQ0UpLA0KICAgIG5hbWUgPSAiSUNFIiwNCiAgICBjb2xvciA9IEFaVUxfRVNDVVJPLA0KICAgIGxpbmVXaWR0aCA9IDIuNCwNCiAgICB6SW5kZXggPSA1DQogICkgJT4lDQogIA0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIkluZGljYWRvcmVzIGRlIGNvbmZpYW7Dp2EiLA0KICAgIHN0eWxlID0gbGlzdCgNCiAgICAgIGNvbG9yID0gQVpVTF9FU0NVUk8sDQogICAgICBmb250V2VpZ2h0ID0gImJvbGQiDQogICAgKQ0KICApICU+JQ0KICANCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICLDjW5kaWNlIGRlIENvbmZpYW7Dp2EgZG8gQ29uc3VtaWRvciBlIMONbmRpY2UgZGUgQ29uZmlhbsOnYSBFbXByZXNhcmlhbCwgMjAxNCBhIDIwMTciLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKQ0KICApICU+JQ0KICANCiAgaGNfeEF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSkNCiAgKSAlPiUNCiAgDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIsONbmRpY2UiKSwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSksDQogICAgZ3JpZExpbmVDb2xvciA9ICIjZWVlZWVlIg0KICApICU+JQ0KICANCiAgaGNfdG9vbHRpcCgNCiAgICBzaGFyZWQgPSBUUlVFLA0KICAgIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIHZhbHVlRGVjaW1hbHMgPSAxLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICJ3aGl0ZSIsDQogICAgYm9yZGVyQ29sb3IgPSBBWlVMX0VTQ1VSTywNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykNCiAgKSAlPiUNCiAgDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGxpbmUgPSBsaXN0KA0KICAgICAgbWFya2VyID0gbGlzdChlbmFibGVkID0gRkFMU0UpDQogICAgKQ0KICApICU+JQ0KICANCiAgaGNfbGVnZW5kKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIGFsaWduID0gImNlbnRlciIsDQogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iDQogICkgJT4lDQogIA0KICBoY19yYW5nZVNlbGVjdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogRkdWL0lCUkUsIFNvbmRhZ2VtIGRvIENvbnN1bWlkb3IgZSBTb25kYWdlbSBFbXByZXNhcmlhbC4iDQogICkgJT4lDQogIA0KICBoY19jaGFydCgNCiAgICBzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgc2Fucy1zZXJpZiIpDQogICkNCmBgYA0KDQojIyAyLjUgUElCIGUgYSBwcm9mdW5kaWRhZGUgZGEgcXVlZGEgZGEgYXRpdmlkYWRlDQoNCkEgc8OtbnRlc2UgZGUgdG9kb3Mgb3MgbW92aW1lbnRvcyBhbmFsaXNhZG9zIG5hcyBzZcOnw7VlcyBhbnRlcmlvcmVzIGFwYXJlY2UgbmFzIENvbnRhcyBOYWNpb25haXMuIE8gUElCIGJyYXNpbGVpcm8gcmVnaXN0cm91IHZhcmlhw6fDtWVzIGFudWFpcyBkZSArMCw1JSBlbSAyMDE0LCAtMyw1JSBlbSAyMDE1IGUgLTMsNiUgZW0gMjAxNiwgY29tIGEgZWNvbm9taWEgZW5jb2xoZW5kbyBwb3Igb256ZSB0cmltZXN0cmVzIGNvbnNlY3V0aXZvcyBxdWFuZG8gc2UgZXhhbWluYSBhIHPDqXJpZSBkZXNzYXpvbmFsaXphZGEuIE8gR3LDoWZpY28gMTggdG9ybmEgdmlzw612ZWwgZXNzYSBzZXF1w6puY2lhOiBhcyBjb2x1bmFzIGVzY3VyYXMgZGVsaW1pdGFtIGV4YXRhbWVudGUgb3Mgb256ZSB0cmltZXN0cmVzIGNvbnNlY3V0aXZvcyBkZSBjb250cmHDp8OjbyBlbnRyZSBvIDJULzIwMTQgZSBvIDRULzIwMTYgZGF0YWRvcyBwZWxvIENPREFDRS4NCg0KUGVsYSDDs3RpY2EgZGEgZGVzcGVzYSwgYSBjb250cmHDp8OjbyBmb2kgbGlkZXJhZGEgcGVsYSBGQkNGIOKAlCBjdWphIGNvbnRyaWJ1acOnw6NvIG5lZ2F0aXZhIHBhcmEgbyBQSUIgY2hlZ291IGEgY2VyY2EgZGUgLTIsNyBwb250b3MgcGVyY2VudHVhaXMgZW0gMjAxNSDigJQgZSBwZWxvIGNvbnN1bW8gZGFzIGZhbcOtbGlhcy4gQXBlbmFzIGFzIGV4cG9ydGHDp8O1ZXMgbMOtcXVpZGFzIGUgbyBjb25zdW1vIGRvIGdvdmVybm8gYXByZXNlbnRhcmFtIGNvbnRyaWJ1acOnw7VlcyBuw6NvIG5lZ2F0aXZhcyBlbSBhbGd1bnMgdHJpbWVzdHJlcywgc2VuZG8gYXMgZXhwb3J0YcOnw7VlcyBiZW5lZmljaWFkYXMgcGVsYSBkZXByZWNpYcOnw6NvIGNhbWJpYWwgZSBvIGNvbnN1bW8gZG8gZ292ZXJubyBsaW1pdGFkbyBwZWxvIGFwZXJ0byBmaXNjYWwgZGUgMjAxNS4gUGVsYSDDs3RpY2EgZGEgb2ZlcnRhLCBhIHF1ZWRhIGZvaSBwdXhhZGEgcGVsYSBpbmTDunN0cmlhLCBjb20gZGVzdGFxdWUgcGFyYSBhIGluZMO6c3RyaWEgZGUgdHJhbnNmb3JtYcOnw6NvIGUgYSBjb25zdHJ1w6fDo28gY2l2aWwg4oCUIGVzdGEgw7psdGltYSBlc3BlY2lhbG1lbnRlIGFmZXRhZGEgcGVsYSBwYXJhbGlzYcOnw6NvIGRlIG9icmFzIHZpbmN1bGFkYXMgw6AgT3BlcmHDp8OjbyBMYXZhIEphdG8uDQoNCkVtIHRlcm1vcyBwZXIgY2FwaXRhLCBhIHF1ZWRhIGZvaSBhaW5kYSBtYWlzIHNldmVyYSwgYXByb3hpbWFuZG8tc2UgZGUgMTElIGFjdW11bGFkb3MgcXVhbmRvIGRlc2NvbnRhZG8gbyBjcmVzY2ltZW50byBwb3B1bGFjaW9uYWwuIE8gY2hvcXVlIGZvaSBzdWZpY2llbnRlIHBhcmEgZmF6ZXIgbyBQSUIgcGVyIGNhcGl0YSBicmFzaWxlaXJvIHJldHJvY2VkZXIgYW8gbsOtdmVsIG9ic2VydmFkbyBwb3Igdm9sdGEgZGUgMjAwOCDigJQgb3Ugc2VqYSwgYSByZWNlc3PDo28gYW51bG91IHF1YXNlIHRvZG8gbyBhdmFuw6dvIGRlIGJlbS1lc3RhciBhZ3JlZ2FkbyBjb25xdWlzdGFkbyBkdXJhbnRlIG8gY2ljbG8gZXhwYW5zaXZvIGRpc2N1dGlkbyBuYSBzZcOnw6NvIGFudGVyaW9yLg0KDQoqKkdyw6FmaWNvIDE4KioNCg0KYGBge3J9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkocmVhZHhsKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KIyBQYWxldGEgZGEgTGlnYQ0KQU1BUkVMTyAgICAgPC0gIiNmZWI3MTIiDQpBWlVMX0VTQ1VSTyA8LSAiIzAyMDIzQyINCkFaVUxfTUVESU8gIDwtICIjMDAyYzVlIg0KQ0lOWkEgICAgICAgPC0gIiNhNmE2YTYiDQpURVhUTyAgICAgICA8LSAiIzNhM2EzYSINCkFaVUxfQ0xBUk8gIDwtICIjNDZiMWUxIg0KDQojIFRhYmVsYSA1OTMyIC0gU0lEUkEvSUJHRTogdmFyaWHDp8OjbyByZWFsIGRvIFBJQiB0cmltZXN0cmFsDQojIChlbSByZWxhw6fDo28gYW8gbWVzbW8gcGVyw61vZG8gZG8gYW5vIGFudGVyaW9yLCBlbSAlKQ0KYnJ1dG8gPC0gcmVhZF9leGNlbChmaWxlLnBhdGgoZGFkb3NfZGlyLCAidGFiZWxhNTkzMi0zLnhsc3giKSwgc2hlZXQgPSAiVGFiZWxhIiwgY29sX25hbWVzID0gRkFMU0UpDQoNCiMgVHJpbWVzdHJlcyBuYSBsaW5oYSA0LCB2YWxvcmVzIG5hIGxpbmhhIDYNCnRyaW1lc3RyZXMgPC0gYXMuY2hhcmFjdGVyKHVubGlzdChicnV0b1s0LCAtMV0pKQ0KdmFsb3JlcyAgICA8LSBhcy5udW1lcmljKHVubGlzdChicnV0b1s2LCAtMV0pKQ0KDQojIENvbnZlcnRlciAiMcK6IHRyaW1lc3RyZSAyMDE0IiAtPiBkYXRhIGRvIHByaW1laXJvIG3DqnMgZG8gdHJpbWVzdHJlDQpwYXJzZV90cmltZXN0cmUgPC0gZnVuY3Rpb24oeCkgew0KICBxIDwtIGFzLmludGVnZXIoc3Vic3RyKHgsIDEsIDEpKQ0KICB5IDwtIGFzLmludGVnZXIoc3Vic3RyKHgsIG5jaGFyKHgpIC0gMywgbmNoYXIoeCkpKQ0KICBhcy5EYXRlKHNwcmludGYoIiVkLSUwMmQtMDEiLCB5LCAocSAtIDEpICogMyArIDEpKQ0KfQ0KDQojIFLDs3R1bG8gY3VydG8gcGFyYSBvIGVpeG8gWCAoZXguOiAiVDEvMjAxNCIpDQpyb3R1bG9fY3VydG8gPC0gZnVuY3Rpb24oeCkgew0KICBxIDwtIHN1YnN0cih4LCAxLCAxKQ0KICB5IDwtIHN1YnN0cih4LCBuY2hhcih4KSAtIDMsIG5jaGFyKHgpKQ0KICBzcHJpbnRmKCJUJXMvJXMiLCBxLCB5KQ0KfQ0KDQpwaWIgPC0gdGliYmxlKA0KICB0cmltZXN0cmUgICA9IHRyaW1lc3RyZXMsDQogIHJvdHVsbyAgICAgID0gc2FwcGx5KHRyaW1lc3RyZXMsIHJvdHVsb19jdXJ0byksDQogIGRhdGEgICAgICAgID0gc2FwcGx5KHRyaW1lc3RyZXMsIHBhcnNlX3RyaW1lc3RyZSkgJT4lIGFzLkRhdGUob3JpZ2luID0gIjE5NzAtMDEtMDEiKSwNCiAgdmFyaWFjYW8gICAgPSB2YWxvcmVzDQopICU+JQ0KICBtdXRhdGUoDQogICAgZW1fcmVjZXNzYW8gPSBkYXRhID49IGFzLkRhdGUoIjIwMTQtMDQtMDEiKSAmIGRhdGEgPD0gYXMuRGF0ZSgiMjAxNi0xMC0wMSIpLA0KICAgIGNvciAgICAgICAgID0gaWZfZWxzZShlbV9yZWNlc3NhbywgQVpVTF9FU0NVUk8sIEFaVUxfQ0xBUk8pDQogICkNCg0KIyBDb25zdHJ1aXIgbyBncsOhZmljbyBkZSBjb2x1bmFzIGNvbSBoaWdoY2hhcnRlcg0KaGNoYXJ0KA0KICBwaWIsDQogIHR5cGUgICA9ICJjb2x1bW4iLA0KICBoY2Flcyh4ID0gcm90dWxvLCB5ID0gdmFyaWFjYW8sIGNvbG9yID0gY29yKSwNCiAgbmFtZSAgID0gIlBJQiBicmFzaWxlaXJvOiB2YXJpYcOnw6NvIHJlYWwgdHJpbWVzdHJhbCAiDQopICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ICA9ICJQSUIgYnJhc2lsZWlybzogdmFyaWHDp8OjbyByZWFsIHRyaW1lc3RyYWwiLA0KICAgIHN0eWxlID0gbGlzdChjb2xvciA9IEFaVUxfRVNDVVJPLCBmb250V2VpZ2h0ID0gImJvbGQiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ICA9ICJPbnplIHRyaW1lc3RyZXMgY29uc2VjdXRpdm9zIGRlIGNvbnRyYcOnw6NvIGVudHJlIDJULzIwMTQgZSA0VC8yMDE2IiwNCiAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykNCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgY2F0ZWdvcmllcyA9IHBpYiRyb3R1bG8sDQogICAgdGl0bGUgICAgICA9IGxpc3QodGV4dCA9IE5VTEwpLA0KICAgIGxhYmVscyAgICAgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9IFRFWFRPKSksDQpwbG90QmFuZHMgID0gbGlzdCgNCg0KICBsaXN0KA0KDQogICAgZnJvbSAgPSB3aGljaChwaWIkcm90dWxvID09ICJUMi8yMDE0IikgLSAxLjUsDQoNCiAgICB0byAgICA9IHdoaWNoKHBpYiRyb3R1bG8gPT0gIlQ0LzIwMTYiKSAtIDAuNSwNCg0KICAgIGNvbG9yID0gInJnYmEoMTY2LCAxNjYsIDE2NiwgMC4xNSkiDQoNCiAgKQ0KDQopDQogICkgJT4lDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlICAgICAgICAgPSBsaXN0KHRleHQgPSBOVUxMKSwNCiAgICBsYWJlbHMgICAgICAgID0gbGlzdChmb3JtYXQgPSAie3ZhbHVlfSUiLCBzdHlsZSA9IGxpc3QoY29sb3IgPSBURVhUTykpLA0KICAgIHBsb3RMaW5lcyAgICAgPSBsaXN0KGxpc3QodmFsdWUgPSAwLCBjb2xvciA9IFRFWFRPLCB3aWR0aCA9IDEsIHpJbmRleCA9IDQpKSwNCiAgICBncmlkTGluZUNvbG9yID0gIiNlZWVlZWUiDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgaGVhZGVyRm9ybWF0ICAgID0gIjxiPntwb2ludC5rZXl9PC9iPjxici8+IiwNCiAgICBwb2ludEZvcm1hdCAgICAgPSAiVmFyaWHDp8OjbzogPGI+e3BvaW50Lnk6Ky4xZn0lPC9iPiIsDQogICAgYmFja2dyb3VuZENvbG9yID0gIndoaXRlIiwNCiAgICBib3JkZXJDb2xvciAgICAgPSBBWlVMX0VTQ1VSTywNCiAgICBzdHlsZSAgICAgICAgICAgPSBsaXN0KGNvbG9yID0gVEVYVE8pDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIGNvbHVtbiA9IGxpc3QoDQogICAgICBjb2xvckJ5UG9pbnQgPSBUUlVFLA0KICAgICAgYm9yZGVyV2lkdGggID0gMCwNCiAgICAgIGdyb3VwUGFkZGluZyA9IDAuMDUNCiAgICApDQogICkgJT4lDQogIGhjX2xlZ2VuZChlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19jcmVkaXRzKA0KICAgIGVuYWJsZWQgPSBUUlVFLA0KICAgIHRleHQgICAgPSAiRm9udGU6IElCR0Ug4oCUIENvbnRhcyBOYWNpb25haXMgVHJpbWVzdHJhaXMgKFRhYmVsYSA1OTMyL1NJRFJBKS4gRGF0YcOnw6NvOiBDT0RBQ0UvRkdWLUlCUkUuIg0KICApICU+JQ0KICBoY19jaGFydChzdHlsZSA9IGxpc3QoZm9udEZhbWlseSA9ICJBcmlhbCwgc2Fucy1zZXJpZiIpKQ0KYGBgDQoNCiMjIDIuNiBUcmFuc2nDp8OjbyBwYXJhIGEgcmVjdXBlcmHDp8OjbyBsZW50YQ0KDQpUZWNuaWNhbWVudGUsIGEgcmVjZXNzw6NvIHRlcm1pbm91IG5vIHF1YXJ0byB0cmltZXN0cmUgZGUgMjAxNiwgY29tIG8gdmFsZSBpZGVudGlmaWNhZG8gcGVsbyBDT0RBQ0UgZW0gZGV6ZW1icm8gZGFxdWVsZSBhbm8uIE1hcywgY29tbyBvY29ycmUgZW0gcmVjZXNzw7VlcyBwcm9mdW5kYXMgZSBkZSBuYXR1cmV6YSBlc3RydXR1cmFsLCBvIGZpbSBkYSBjb250cmHDp8OjbyBuw6NvIHNpZ25pZmljb3UgbyBmaW0gZGEgY3Jpc2UuIEEgcmVjdXBlcmHDp8OjbyBxdWUgc2UgaW5pY2lvdSBlbSAyMDE3IG1vc3Ryb3Utc2UgYSBtYWlzIGxlbnRhIGRhIGhpc3TDs3JpYSBlY29uw7RtaWNhIGJyYXNpbGVpcmEgcmVjZW50ZTogbyBjcmVzY2ltZW50byBtw6lkaW8gZG8gUElCIG5vcyBhbm9zIHNlZ3VpbnRlcyBmaWNvdSBlbSB0b3JubyBkZSAxLDMlIGFvIGFubywgcml0bW8gY2xhcmFtZW50ZSBpbnN1ZmljaWVudGUgcGFyYSByZWNvbXBvciBhcyBwZXJkYXMuDQoNClF1YXRybyBmYXRvcmVzIGFqdWRhbSBhIGV4cGxpY2FyIGVzc2EgbGVudGlkw6NvLiBPIHByaW1laXJvIMOpIG8gY2Fyw6F0ZXIgZGUgYmFsYW5jZSBzaGVldCByZWNlc3Npb246IGNvbW8gdmlzdG8gbmFzIHNlw6fDtWVzIGFudGVyaW9yZXMsIGZhbcOtbGlhcywgZW1wcmVzYXMgZSBzZXRvciBww7pibGljbyBlbnRyYXJhbSBzaW11bHRhbmVhbWVudGUgZW0gcHJvY2Vzc28gZGUgcmVkdcOnw6NvIGRlIGVuZGl2aWRhbWVudG8sIG8gcXVlIHByb2xvbmdvdSBvIGNpY2xvIGRlIGRlc2FsYXZhbmNhZ2VtIHBvciBhbm9zIGUgbGltaXRvdSBhIHJlYcOnw6NvIGRhIGRlbWFuZGEgYWdyZWdhZGEuIE8gc2VndW5kbyDDqSBhIGZyYWdpbGlkYWRlIGZpc2NhbCwgcXVlIHJlc3RyaW5naXUgbyB1c28gZGUgZXN0w61tdWxvcyB2aWEgZ2FzdG8gcMO6YmxpY28gZSwgYW8gY29udHLDoXJpbywgZXhpZ2l1IHJlZm9ybWFzIGNvbW8gYSBFbWVuZGEgQ29uc3RpdHVjaW9uYWwgZG8gVGV0byBkZSBHYXN0b3MgKEVDIDk1LzIwMTYpIGUgYSBSZWZvcm1hIFRyYWJhbGhpc3RhICgyMDE3KSBhcGVuYXMgcGFyYSBjb250ZXIgYSBkZXRlcmlvcmHDp8OjbyBlc3RydXR1cmFsLiBPIHRlcmNlaXJvIHPDo28gYXMgY2ljYXRyaXplcyAoc2NhcnMpIGRlaXhhZGFzIHBlbGEgcmVjZXNzw6NvIHNvYnJlIG8gY2FwaXRhbCBodW1hbm8gZSBvIGVzdG9xdWUgZGUgY2FwaXRhbCBmw61zaWNvOiB0cmFiYWxoYWRvcmVzIGRlc29jdXBhZG9zIHBvciBsb25nb3MgcGVyw61vZG9zIHBlcmRlbSBwcm9kdXRpdmlkYWRlIGUgZW1wcmVnYWJpbGlkYWRlLCBlIGludmVzdGltZW50b3MgbsOjbyByZWFsaXphZG9zIG7Do28gc8OjbyBmYWNpbG1lbnRlIHJlY3VwZXJhZG9zIGVtIGNpY2xvcyBzdWJzZXF1ZW50ZXMg4oCUIHBvbnRvIHF1ZSBkaWFsb2dhIGRpcmV0YW1lbnRlIGNvbSBhIGVzdGFnbmHDp8OjbyBkYSBwcm9kdXRpdmlkYWRlIGRpc2N1dGlkYSBlbSAyLjMuMy4gTyBxdWFydG8gc8OjbyBhcyBpbnN0YWJpbGlkYWRlcyBwb3N0ZXJpb3JlcyBxdWUgaW50ZXJyb21wZXJhbSBhIHJldG9tYWRhIGFudGVzIHF1ZSBlbGEgc2UgY29uc29saWRhc3NlOiBhIGdyZXZlIGRvcyBjYW1pbmhvbmVpcm9zIGVtIDIwMTgsIGEgdHJhbnNpw6fDo28gcG9sw610aWNhIGRhcXVlbGUgYW5vIGUsIG1haXMgw6AgZnJlbnRlLCBvIGNob3F1ZSBkYSBwYW5kZW1pYSBlbSAyMDIwLg0KDQpBIHJlY2Vzc8OjbyBkZSAyMDE04oCTMjAxNiBkZWl4YSwgYXNzaW0sIGxpw6fDtWVzIGltcG9ydGFudGVzIHBhcmEgYSBsZWl0dXJhIGRvcyBjaWNsb3MgZWNvbsO0bWljb3MgYnJhc2lsZWlyb3MuIEEgcHJpbWVpcmEgw6kgcXVlIGV4cGFuc8O1ZXMgcHV4YWRhcyBwb3IgY29uc3VtbyBlIGNyw6lkaXRvLCBzdXN0ZW50YWRhcyBwb3IgZXN0w61tdWxvcyBmaXNjYWlzIGUgcGFyYWZpc2NhaXMsIHRlbmRlbSBhIGVzZ290YXItc2UgcXVhbmRvIG9zIGZ1bmRhbWVudG9zIGRlIHByb2R1dGl2aWRhZGUgbsOjbyBhY29tcGFuaGFtIG8gcml0bW8gZGEgZGVtYW5kYS4gQSBzZWd1bmRhIMOpIHF1ZSBjaG9xdWVzIGV4dGVybm9zIG7Do28gc8Ojbywgc296aW5ob3MsIGRldGVybWluYW50ZXMg4oCUIGVsZXMgYW1wbGlmaWNhbSB2dWxuZXJhYmlsaWRhZGVzIGludGVybmFzIHByw6ktZXhpc3RlbnRlcy4gQSB0ZXJjZWlyYSDDqSBxdWUgYSBjcmVkaWJpbGlkYWRlIGRhIHBvbMOtdGljYSBlY29uw7RtaWNhIMOpIHVtIGluc3VtbyBtYWNyb2Vjb27DtG1pY28gcmVsZXZhbnRlOiBzdWEgcGVyZGEgZWxldmEgYSBpbmNlcnRlemEsIGRlcHJpbWUgZXhwZWN0YXRpdmFzIGUgdHJhbnNmb3JtYSBvIHF1ZSBzZXJpYSB1bWEgZGVzYWNlbGVyYcOnw6NvIGVtIHJlY2Vzc8OjbyBwcm9mdW5kYS4NCg0KRXNzYXMgbGnDp8O1ZXMgc2VydmVtIGRlIHBhbm8gZGUgZnVuZG8gcGFyYSBhIHByw7N4aW1hIHNlw6fDo28sIGVtIHF1ZSBzZXLDoSBleGFtaW5hZG8gbyBtb21lbnRvIGF0dWFsIGRhIGVjb25vbWlhIGJyYXNpbGVpcmEg4oCUIGJ1c2NhbmRvIGF2YWxpYXIgZW0gcXVlIG1lZGlkYSBvcyBhcnJhbmpvcyBpbnN0aXR1Y2lvbmFpcyBlIG9zIGZ1bmRhbWVudG9zIG1hY3JvZWNvbsO0bWljb3MgcMOzcy1yZWNlc3PDo28gYWx0ZXJhcmFtIGEgZGluw6JtaWNhIGPDrWNsaWNhIGRvIHBhw61zLCBlIHF1YWlzIGRvcyBsZWdhZG9zIGRlIDIwMTTigJMyMDE2IGFpbmRhIGNvbmRpY2lvbmFtIG8gY2ljbG8gcHJlc2VudGUuDQoNCiMgMy4gQnJhc2lsIGF0dWFsDQoNCkRlIGFjb3JkbyBjb20gYXMgZGF0YXMgb2ZpY2lhaXMgZG8gQ09EQUNFLCBvIMO6bHRpbW8gY2ljbG8gZWNvbsO0bWljbyBicmFzaWxlaXJvIC0gY2FyYWN0ZXJpemFkbyBjb21vIHVtYSByZWNlc3PDo28gLSBmb2kgZW5jZXJyYWRvIG5vIHNlZ3VuZG8gdHJpbWVzdHJlIGRlIDIwMjAuIEF0w6kgbyBtb21lbnRvIGRhIHB1YmxpY2HDp8OjbyBkZXN0ZSByZWxhdMOzcmlvLCBuw6NvIGhvdXZlIGRpdnVsZ2HDp8OjbyBvZmljaWFsIHNvYnJlIG8gcGVyw61vZG8gc3Vic2VxdWVudGUsIGRlIG1vZG8gcXVlIG7Do28gc2Ugc2FiZSBmb3JtYWxtZW50ZSBzZSBhIGVjb25vbWlhIGJyYXNpbGVpcmEgc2UgZW5jb250cmEgZW0gdW1hIGZhc2UgZGUgZXhwYW5zw6NvIG91IHJlY2Vzc8Ojby4NCk5vIGVudGFudG8sIGNvbW8gZGlzY3V0aWRvIGFudGVyaW9ybWVudGUsIGluZGVwZW5kZW50ZW1lbnRlIGRhIGZhc2UgZG8gY2ljbG8gZWNvbsO0bWljbywgw6kgcG9zc8OtdmVsIGlkZW50aWZpY2FyIHBhZHLDtWVzLCBwb250b3MgZm9ydGVzIGUgZGVzZXF1aWzDrWJyaW9zIGVzdHJ1dHVyYWlzIG5hIGVjb25vbWlhLiBBc3NpbSwgZXN0YSBzZcOnw6NvIGJ1c2NhIGFuYWxpc2FyIGFsZ3VucyBpbmRpY2Fkb3JlcyBkbyBCcmFzaWwgYXR1YWwgw6AgbHV6IGRvIGhpc3TDs3JpY28gYXByZXNlbnRhZG8gYW8gbG9uZ28gZG8gcmVsYXTDs3Jpbywgb2JzZXJ2YW5kbyBxdWFpcyBmcmFnaWxpZGFkZXMgcGVyc2lzdGVtIGUgcXVhaXMgdHJhbnNmb3JtYcOnw7VlcyBwb2RlbSBzZXIgcGVyY2ViaWRhcyBuYSBlY29ub21pYSBicmFzaWxlaXJhLg0KDQojIyAzLjEgRXN0cnV0dXJhIHByb2R1dGl2YSBlIGludmVzdGltZW50bw0KDQpBIGFuw6FsaXNlIGRvIGNpY2xvIGF0dWFsIGNvbWXDp2EgcGVsYSBjb21wb3Npw6fDo28gc2V0b3JpYWwgZG8gcHJvZHV0by4gTyByaXRtbyBkYSBleHBhbnPDo28gaW1wb3J0YSwgbWFzIG8gcXVlIGRlZmluZSBzZSBlbGEgw6kgc3VzdGVudMOhdmVsIG5vIGxvbmdvIHByYXpvIMOpIGEgZXN0cnV0dXJhIHBvciB0csOhczogcXVhaXMgc2V0b3JlcyBlc3TDo28gcHV4YW5kbyBvIGNyZXNjaW1lbnRvLCBlbSBxdWUgcHJvcG9yw6fDo28sIGUgc2UgZXNzYSBwcm9wb3LDp8OjbyBzZSBhbHRlcmEgYW8gbG9uZ28gZG8gdGVtcG8uIEFzc2ltLCBhIHF1ZXN0w6NvIGNlbnRyYWwgw6kgb2JzZXJ2YXIgc2UgYSBlY29ub21pYSBicmFzaWxlaXJhIGVzdMOhIHBhc3NhbmRvIHBvciB1bWEgdHJhbnNmb3JtYcOnw6NvIGVzdHJ1dHVyYWwgb3Ugc2UgY29udGludWEgY3Jlc2NlbmRvIGRlbnRybyBkbyBtZXNtbyBwYWRyw6NvIG9ic2VydmFkbyBlbSBjaWNsb3MgYW50ZXJpb3Jlcy4NCg0KKipHcsOhZmljbyAxOToqKg0KDQpgYGB7ciwgZWNobz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0NCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHN0cmluZ3IpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQptYXRyaXpfcGliIDwtIG1hdHJpeCgNCiAgYygNCiAgICAiM8K6IHRyaW1lc3RyZSAyMDIwIiwgIkFncm9wZWN1w6FyaWEiLCAiMTAwNDgzIiwNCiAgICAiM8K6IHRyaW1lc3RyZSAyMDIwIiwgIkluZMO6c3RyaWEiLCAiNDA1MjQ4IiwNCiAgICAiM8K6IHRyaW1lc3RyZSAyMDIwIiwgIlNlcnZpw6dvcyIsICIxMTU1MzA2IiwNCiAgICAiNMK6IHRyaW1lc3RyZSAyMDIwIiwgIkFncm9wZWN1w6FyaWEiLCAiNzY5NjUiLA0KICAgICI0wrogdHJpbWVzdHJlIDIwMjAiLCAiSW5kw7pzdHJpYSIsICIzOTk0MDMiLA0KICAgICI0wrogdHJpbWVzdHJlIDIwMjAiLCAiU2VydmnDp29zIiwgIjEyNzMwNzUiLA0KICAgICIxwrogdHJpbWVzdHJlIDIwMjEiLCAiQWdyb3BlY3XDoXJpYSIsICIyNDQwNjgiLA0KICAgICIxwrogdHJpbWVzdHJlIDIwMjEiLCAiSW5kw7pzdHJpYSIsICI0MjY4MjIiLA0KICAgICIxwrogdHJpbWVzdHJlIDIwMjEiLCAiU2VydmnDp29zIiwgIjExODQzMDMiLA0KICAgICIywrogdHJpbWVzdHJlIDIwMjEiLCAiQWdyb3BlY3XDoXJpYSIsICIxNjkwNjQiLA0KICAgICIywrogdHJpbWVzdHJlIDIwMjEiLCAiSW5kw7pzdHJpYSIsICI0OTMwNDAiLA0KICAgICIywrogdHJpbWVzdHJlIDIwMjEiLCAiU2VydmnDp29zIiwgIjEyNDM5NDkiLA0KICAgICIzwrogdHJpbWVzdHJlIDIwMjEiLCAiQWdyb3BlY3XDoXJpYSIsICIxMDY4ODYiLA0KICAgICIzwrogdHJpbWVzdHJlIDIwMjEiLCAiSW5kw7pzdHJpYSIsICI1NTU3NjkiLA0KICAgICIzwrogdHJpbWVzdHJlIDIwMjEiLCAiU2VydmnDp29zIiwgIjEyOTM2ODIiLA0KICAgICI0wrogdHJpbWVzdHJlIDIwMjEiLCAiQWdyb3BlY3XDoXJpYSIsICI3MTA2NyIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMSIsICJJbmTDunN0cmlhIiwgIjUxODE2OCIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMSIsICJTZXJ2acOnb3MiLCAiMTQwNzE4MCIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyMiIsICJBZ3JvcGVjdcOhcmlhIiwgIjE3MDQwOCIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyMiIsICJJbmTDunN0cmlhIiwgIjQ5NDE3MCIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyMiIsICJTZXJ2acOnb3MiLCAiMTMxODYwMyIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyMiIsICJBZ3JvcGVjdcOhcmlhIiwgIjE2MjQ4NSIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyMiIsICJJbmTDunN0cmlhIiwgIjU5NDk3MCIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyMiIsICJTZXJ2acOnb3MiLCAiMTQyODAyMiIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyMiIsICJBZ3JvcGVjdcOhcmlhIiwgIjE0NTcwNSIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyMiIsICJJbmTDunN0cmlhIiwgIjYxNzA5OCIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyMiIsICJTZXJ2acOnb3MiLCAiMTQ5NjcxNyIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMiIsICJBZ3JvcGVjdcOhcmlhIiwgIjEwMjc0NSIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMiIsICJJbmTDunN0cmlhIiwgIjU5Mzg4OSIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMiIsICJTZXJ2acOnb3MiLCAiMTYxMTY2MyIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyMyIsICJBZ3JvcGVjdcOhcmlhIiwgIjE5NjQ4NiIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyMyIsICJJbmTDunN0cmlhIiwgIjU2Mjk3NyIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyMyIsICJTZXJ2acOnb3MiLCAiMTUwMTI0MCIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyMyIsICJBZ3JvcGVjdcOhcmlhIiwgIjE5NDMyNyIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyMyIsICJJbmTDunN0cmlhIiwgIjYwMzE0NCIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyMyIsICJTZXJ2acOnb3MiLCAiMTU5MjczNyIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyMyIsICJBZ3JvcGVjdcOhcmlhIiwgIjE1NzE0OSIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyMyIsICJJbmTDunN0cmlhIiwgIjYyMDIyNiIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyMyIsICJTZXJ2acOnb3MiLCAiMTYyOTA2MCIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMyIsICJBZ3JvcGVjdcOhcmlhIiwgIjExMTE2MiIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMyIsICJJbmTDunN0cmlhIiwgIjYzNjk2NiIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyMyIsICJTZXJ2acOnb3MiLCAiMTc1MzExOCIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyNCIsICJBZ3JvcGVjdcOhcmlhIiwgIjE5MDc0OSIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyNCIsICJJbmTDunN0cmlhIiwgIjU3MjMxNSIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyNCIsICJTZXJ2acOnb3MiLCAiMTYxOTE3NSIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyNCIsICJBZ3JvcGVjdcOhcmlhIiwgIjIwMzY4NCIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyNCIsICJJbmTDunN0cmlhIiwgIjYxOTA1NyIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyNCIsICJTZXJ2acOnb3MiLCAiMTcwODExNyIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyNCIsICJBZ3JvcGVjdcOhcmlhIiwgIjE3MDg3NCIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyNCIsICJJbmTDunN0cmlhIiwgIjY0Mzk3MSIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyNCIsICJTZXJ2acOnb3MiLCAiMTc2NzIxMSIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyNCIsICJBZ3JvcGVjdcOhcmlhIiwgIjExMjI2OCIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyNCIsICJJbmTDunN0cmlhIiwgIjYzMTMxMyIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyNCIsICJTZXJ2acOnb3MiLCAiMTg3NTM2OCIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyNSIsICJBZ3JvcGVjdcOhcmlhIiwgIjI0NTU4MiIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyNSIsICJJbmTDunN0cmlhIiwgIjU5MjYyNCIsDQogICAgIjHCuiB0cmltZXN0cmUgMjAyNSIsICJTZXJ2acOnb3MiLCAiMTc2MTM1MSIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyNSIsICJBZ3JvcGVjdcOhcmlhIiwgIjI1MTk3NiIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyNSIsICJJbmTDunN0cmlhIiwgIjY0MzYwNCIsDQogICAgIjLCuiB0cmltZXN0cmUgMjAyNSIsICJTZXJ2acOnb3MiLCAiMTg3NjEzNyIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyNSIsICJBZ3JvcGVjdcOhcmlhIiwgIjE3NjE5MSIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyNSIsICJJbmTDunN0cmlhIiwgIjY4MjE1NSIsDQogICAgIjPCuiB0cmltZXN0cmUgMjAyNSIsICJTZXJ2acOnb3MiLCAiMTkyODAxMiIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyNSIsICJBZ3JvcGVjdcOhcmlhIiwgIjEwMTU0OCIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyNSIsICJJbmTDunN0cmlhIiwgIjY0ODQzMSIsDQogICAgIjTCuiB0cmltZXN0cmUgMjAyNSIsICJTZXJ2acOnb3MiLCAiMjA0NDM3MCINCiAgKSwNCiAgbmNvbCA9IDMsDQogIGJ5cm93ID0gVFJVRQ0KKQ0KDQpjb2xuYW1lcyhtYXRyaXpfcGliKSA8LSBjKCJ0cmltZXN0cmUiLCAic2V0b3IiLCAidmFsb3IiKQ0KDQpwaWIyIDwtIGFzLmRhdGEuZnJhbWUobWF0cml6X3BpYikgJT4lDQogIG11dGF0ZSgNCiAgICB2YWxvciA9IGFzLm51bWVyaWModmFsb3IpLA0KICAgIGFubyA9IGFzLmludGVnZXIoc3RyX2V4dHJhY3QodHJpbWVzdHJlLCAiXFxkezR9IikpLA0KICAgIHRyaW0gPSBhcy5pbnRlZ2VyKHN0cl9leHRyYWN0KHRyaW1lc3RyZSwgIl5cXGQiKSksDQogICAgbWVzID0gY2FzZV93aGVuKA0KICAgICAgdHJpbSA9PSAxIH4gIjAxIiwNCiAgICAgIHRyaW0gPT0gMiB+ICIwNCIsDQogICAgICB0cmltID09IDMgfiAiMDciLA0KICAgICAgdHJpbSA9PSA0IH4gIjEwIg0KICAgICksDQogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0iLCBtZXMsICItMDEiKSksDQogICAgZGF0YV9tcyA9IGRhdGV0aW1lX3RvX3RpbWVzdGFtcChkYXRhKQ0KICApDQoNCmdyYWZpY29fcGliX3NldG9yIDwtIGhpZ2hjaGFydCgpICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIlBJQiBwb3IgU2V0b3Ig4oCUIEJyYXNpbCIsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIlZhbG9yZXMgYSBwcmXDp29zIGNvcnJlbnRlcyAoUiQgbWlsaMO1ZXMpIOKAlCAzVDIwMjAgYSA0VDIwMjUiLA0KICAgIGFsaWduID0gImNlbnRlciIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEzcHgiLCBjb2xvciA9ICIjNjY2NjY2IikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gcGliMiAlPiUgZmlsdGVyKHNldG9yID09ICJBZ3JvcGVjdcOhcmlhIiksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gZGF0YV9tcywgeSA9IHZhbG9yKSwNCiAgICBuYW1lID0gIkFncm9wZWN1w6FyaWEiLA0KICAgIGNvbG9yID0gIiM0NkIxRTEiLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSkNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gcGliMiAlPiUgZmlsdGVyKHNldG9yID09ICJJbmTDunN0cmlhIiksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBoY2Flcyh4ID0gZGF0YV9tcywgeSA9IHZhbG9yKSwNCiAgICBuYW1lID0gIkluZMO6c3RyaWEiLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSkNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gcGliMiAlPiUgZmlsdGVyKHNldG9yID09ICJTZXJ2acOnb3MiKSwNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIGhjYWVzKHggPSBkYXRhX21zLCB5ID0gdmFsb3IpLA0KICAgIG5hbWUgPSAiU2VydmnDp29zIiwNCiAgICBjb2xvciA9ICIjMDIwMjNDIiwNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKQ0KICApICU+JQ0KICBoY194QXhpcygNCiAgICB0eXBlID0gImRhdGV0aW1lIiwNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9IE5VTEwpLA0KICAgIGxpbmVDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICB0aWNrQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpKQ0KICApICU+JQ0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJSJCBtaWxow7VlcyIsIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IikpLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0U2RTZFNiIsDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsDQogICAgY3Jvc3NoYWlycyA9IFRSVUUsDQogICAgdmFsdWVTdWZmaXggPSAiIG1pIiwNCiAgICB2YWx1ZURlY2ltYWxzID0gMCwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgYm9yZGVyQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgYm9yZGVyUmFkaXVzID0gOCwNCiAgICBzaGFkb3cgPSBGQUxTRQ0KICApICU+JQ0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIHNlcmllcyA9IGxpc3QoDQogICAgICBhbmltYXRpb24gPSBGQUxTRSwNCiAgICAgIHN0YXRlcyA9IGxpc3QoaW5hY3RpdmUgPSBsaXN0KG9wYWNpdHkgPSAxKSkNCiAgICApDQogICkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiwNCiAgICBzcGFjaW5nVG9wID0gMjAsDQogICAgc3BhY2luZ1JpZ2h0ID0gMjAsDQogICAgc3BhY2luZ0JvdHRvbSA9IDIwLA0KICAgIHNwYWNpbmdMZWZ0ID0gMjANCiAgKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBJQkdFL0NvbnRhcyBOYWNpb25haXMuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvQkguIg0KICApDQoNCmdyYWZpY29fcGliX3NldG9yDQpgYGANCg0KDQpDb21vIG9ic2VydmFkbyBubyBncsOhZmljbyBYLCBubyB0ZXJjZWlybyB0cmltZXN0cmUgZGUgMjAyMCwgbyBzZXRvciBkZSBzZXJ2acOnb3MgKGxpbmhhIGF6dWwgZXNjdXJhKSByZXNwb25kaWEgcG9yIGFwcm94aW1hZGFtZW50ZSBSXCQgMSwxNSB0cmlsaMOjbyBkbyBQSUIgYnJhc2lsZWlybywgZW5xdWFudG8gYSBpbmTDunN0cmlhIChsaW5oYSBhbWFyZWxhKSByZXByZXNlbnRhdmEgY2VyY2EgZGUgUlwkIDQwNSBiaWxow7VlcyBlIGEgYWdyb3BlY3XDoXJpYSAobGluaGEgYXp1bCBjbGFyYSkgYXByb3hpbWFkYW1lbnRlIFJcJCAxMDAgYmlsaMO1ZXMuIE5vIHBlcsOtb2RvIG1haXMgcmVjZW50ZSBkYSBzw6lyaWUsIGNvcnJlc3BvbmRlbnRlIGFvIHF1YXJ0byB0cmltZXN0cmUgZGUgMjAyNSwgb3Mgc2VydmnDp29zIHBhc3NhcmFtIHBhcmEgYXByb3hpbWFkYW1lbnRlIFJcJDIsMDQgdHJpbGjDtWVzLCBlbnF1YW50byBhIGluZMO6c3RyaWEgYXRpbmdpdSBjZXJjYSBkZSBSXCQ2NDggYmlsaMO1ZXMuIEEgYWdyb3BlY3XDoXJpYSwgcG9yIHN1YSB2ZXosIHBlcm1hbmVjZXUgcHLDs3hpbWEgZGUgUiQxMDAgYmlsaMO1ZXMsIGVtYm9yYSBlc3NhIGNvbXBhcmHDp8OjbyBkZXZlIGNvbnNpZGVyYXIgb3MgZWZlaXRvcyBkZSBzYXpvbmFsaWRhZGUgY2FyYWN0ZXLDrXN0aWNvcyBkbyBzZXRvci4NCg0KRW0gdGVybW9zIGFic29sdXRvcywgdG9kb3Mgb3Mgc2V0b3JlcyBjcmVzY2VyYW0gYW8gbG9uZ28gZG8gcGVyw61vZG8gYW5hbGlzYWRvLiBPIG1haXMgcmVsZXZhbnRlLCBwb3LDqW0sIGVzdMOhIG5hIGNvbXBvc2nDp8OjbyByZWxhdGl2YSBkbyBQSUIuIE8gc2V0b3IgZGUgc2VydmnDp29zIGNvbnRpbnVhIGNvbmNlbnRyYW5kbyBtYWlzIGRlIDYwJSBkYSBhdGl2aWRhZGUgZWNvbsO0bWljYSBicmFzaWxlaXJhIGUgYW1wbGlvdSBhaW5kYSBtYWlzIHN1YSBwYXJ0aWNpcGHDp8OjbyBhbyBsb25nbyBkYSBzw6lyaWUsIGVucXVhbnRvIGEgaW5kw7pzdHJpYSBwZXJtYW5lY2UgcmVsYXRpdmFtZW50ZSBlc3RhZ25hZGEgZW0gdGVybW9zIHBlcmNlbnR1YWlzLg0KTyBwcm9ibGVtYSBicmFzaWxlaXJvLCBlbnTDo28sIG7Do28gw6kgc2ltcGxlc21lbnRlIGEgcHJlZG9taW7Dom5jaWEgZG8gc2V0b3IgZGUgc2VydmnDp29zIC0gY2FyYWN0ZXLDrXN0aWNhIGNvbXVtIHRhbWLDqW0gYSB2w6FyaWFzIGVjb25vbWlhcywgaW5jbHVzaXZlIGRlc2Vudm9sdmlkYXMuIE8gcHJvYmxlbWEgZXN0w6EgbmEgYXVzw6puY2lhIGRlIGF2YW7Dp28gcmVsYXRpdm8gZGEgaW5kw7pzdHJpYSBlIG5hIGxpbWl0YWRhIHRyYW5zZm9ybWHDp8OjbyBlc3RydXR1cmFsIGRhIGVjb25vbWlhLiBBc3NpbSBjb21vIG9ic2VydmFkbyBubyBjaWNsbyBkZSBleHBhbnPDo28gZGUgMjAwOOKAkzIwMTQsIG8gY3Jlc2NpbWVudG8gcmVjZW50ZSBkYSBlY29ub21pYSBicmFzaWxlaXJhIGNvbnRpbnVhIGNvbmNlbnRyYWRvIGVtIHNldG9yZXMgcXVlIGrDoSBlcmFtIHByZWRvbWluYW50ZXMgYW50ZXJpb3JtZW50ZSwgc2VtIG11ZGFuw6dhcyBzaWduaWZpY2F0aXZhcyBuYSBjb21wb3Npw6fDo28gcHJvZHV0aXZhIGRvIHBhw61zLg0KDQpBIGNvbXBvc2nDp8OjbyBzZXRvcmlhbCBkYSBlY29ub21pYSBhanVkYSBhIGVudGVuZGVyIGNvbW8gbyBwYcOtcyBjcmVzY2UuIE8gaW52ZXN0aW1lbnRvLCBwb3Igb3V0cm8gbGFkbywgYWp1ZGEgYSBlbnRlbmRlciBzZSBlc3NlIGNyZXNjaW1lbnRvIHBvc3N1aSBjYXBhY2lkYWRlIGRlIHN1c3RlbnRhw6fDo28gbm8gbG9uZ28gcHJhem8uIE5lc3NlIHNlbnRpZG8sIG8gZ3LDoWZpY28gWCBhcHJlc2VudGEgYSBldm9sdcOnw6NvIGRhIEZvcm1hw6fDo28gQnJ1dGEgZGUgQ2FwaXRhbCBGaXhvIChGQkNGKSBlbSBjb25qdW50byBjb20gYSB0YXhhIFNlbGljIGVudHJlIDIwMjAgZSAyMDI1Lg0KDQoqKkdyw6FmaWNvIDIwOioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShHZXRCQ0JEYXRhKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KZmJjZjIgPC0gZGF0YS5mcmFtZSgNCiAgcGVyaW9kbyA9IGMoDQogICAgIjIwMjAgVDMiLCAiMjAyMCBUNCIsDQogICAgIjIwMjEgVDEiLCAiMjAyMSBUMiIsICIyMDIxIFQzIiwgIjIwMjEgVDQiLA0KICAgICIyMDIyIFQxIiwgIjIwMjIgVDIiLCAiMjAyMiBUMyIsICIyMDIyIFQ0IiwNCiAgICAiMjAyMyBUMSIsICIyMDIzIFQyIiwgIjIwMjMgVDMiLCAiMjAyMyBUNCIsDQogICAgIjIwMjQgVDEiLCAiMjAyNCBUMiIsICIyMDI0IFQzIiwgIjIwMjQgVDQiLA0KICAgICIyMDI1IFQxIiwgIjIwMjUgVDIiLCAiMjAyNSBUMyIsICIyMDI1IFQ0Ig0KICApLA0KICB2YXJpYWNhbyA9IGMoDQogICAgLTguODIsIDEwLjQzLA0KICAgIDExLjY4LCAyNi42NSwgMTQuODAsIDEuNzEsDQogICAgLTUuOTEsIDEuOTksIDUuMDcsIDMuMjMsDQogICAgMS40NSwgLTEuNTUsIC02Ljg0LCAtNC40MiwNCiAgICAyLjU3LCA1LjIzLCAxMC4yNywgOS4yMSwNCiAgICA5LjAxLCA0LjExLCAyLjMyLCAtMy4xMg0KICApDQopICU+JQ0KICBtdXRhdGUoDQogICAgYW5vID0gYXMuaW50ZWdlcihzdWJzdHIocGVyaW9kbywgMSwgNCkpLA0KICAgIHRyaW0gPSBhcy5pbnRlZ2VyKHN1YnN0cihwZXJpb2RvLCA3LCA3KSksDQogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0iLCBmb3JtYXRDKHRyaW0gKiAzIC0gMiwgd2lkdGggPSAyLCBmbGFnID0gIjAiKSwgIi0xNSIpKSwNCiAgICBkYXRhX21zID0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KGRhdGEsIHR6ID0gIlVUQyIpKSAqIDEwMDANCiAgKQ0KDQpzZWxpY19yYXcgPC0gZ2JjYmRfZ2V0X3NlcmllcygNCiAgaWQgPSBjKFNlbGljID0gNDMyKSwNCiAgZmlyc3QuZGF0ZSA9ICIyMDIwLTA3LTAxIiwNCiAgbGFzdC5kYXRlICA9ICIyMDI1LTEyLTMxIiwNCiAgZm9ybWF0LmRhdGEgPSAid2lkZSINCikgJT4lDQogIHJlbmFtZShkYXRlID0gcmVmLmRhdGUsIHNlbGljID0gU2VsaWMpICU+JQ0KICBtdXRhdGUodHJpbWVzdHJlID0gZmxvb3JfZGF0ZShhcy5EYXRlKGRhdGUpLCAicXVhcnRlciIpKSAlPiUNCiAgZ3JvdXBfYnkodHJpbWVzdHJlKSAlPiUNCiAgc3VtbWFyaXNlKHNlbGljID0gbGFzdChuYS5vbWl0KHNlbGljKSksIC5ncm91cHMgPSAiZHJvcCIpICU+JQ0KICBtdXRhdGUoZGF0YV9tcyA9IGFzLm51bWVyaWMoYXMuUE9TSVhjdCh0cmltZXN0cmUsIHR6ID0gIlVUQyIpKSAqIDEwMDApDQoNCmRhZG9zX2ZiY2YgIDwtIGZiY2YyICU+JSBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgdmFyaWFjYW8pDQpkYWRvc19zZWxpYyA8LSBzZWxpY19yYXcgJT4lIHNlbGVjdCh0aW1lc3RhbXAgPSBkYXRhX21zLCBzZWxpYykNCg0KZ3JhZmljb19mYmNmX3NlbGljIDwtIGhpZ2hjaGFydCgpICU+JQ0KICBoY19jaGFydCgNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgc3BhY2luZ1RvcCA9IDIwLA0KICAgIHNwYWNpbmdSaWdodCA9IDIwLA0KICAgIHNwYWNpbmdCb3R0b20gPSAyMCwNCiAgICBzcGFjaW5nTGVmdCA9IDIwDQogICkgJT4lDQogIGhjX3RpdGxlKA0KICAgIHRleHQgPSAiRm9ybWHDp8OjbyBCcnV0YSBkZSBDYXBpdGFsIEZpeG8gZSBUYXhhIFNlbGljIC0gQnJhc2lsIiwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxOHB4IiwgZm9udFdlaWdodCA9ICJib2xkIiwgY29sb3IgPSAiIzAyMDIzQyIpDQogICkgJT4lDQogIGhjX3N1YnRpdGxlKA0KICAgIHRleHQgPSAiRkJDRjogdmFyaWHDp8OjbyBhbnVhbCAoJSkgfCBTZWxpYzogJSBhLmEuLSAzVDIwMjAgYSA0VDIwMjUiLA0KICAgIGFsaWduID0gImNlbnRlciIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiLCBjb2xvciA9ICIjNjY2NjY2IikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfZmJjZiksDQogICAgdHlwZSA9ICJjb2x1bW4iLA0KICAgIG5hbWUgPSAiRkJDRiBWYXJpYcOnw6NvIGFudWFsICglKSIsDQogICAgY29sb3IgPSAiI0ZFQjAxNSIsDQogICAgeUF4aXMgPSAwLA0KICAgIHBvaW50UGFkZGluZyA9IDAuMDUsDQogICAgZ3JvdXBQYWRkaW5nID0gMC4wOCwNCiAgICBib3JkZXJXaWR0aCA9IDANCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3Nfc2VsaWMpLA0KICAgIHR5cGUgPSAic3BsaW5lIiwNCiAgICBuYW1lID0gIlNlbGljICglIGEuYS4pIiwNCiAgICBjb2xvciA9ICIjMDIwMjNDIiwNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB5QXhpcyA9IDENCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgdHlwZSA9ICJkYXRldGltZSIsDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSBOVUxMKSwNCiAgICBsaW5lQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgdGlja0NvbG9yID0gIiNEOUQ5RDkiLA0KICAgIHRpY2tMZW5ndGggPSAwLA0KICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMXB4IikpDQogICkgJT4lDQogIGhjX3lBeGlzX211bHRpcGxlcygNCiAgICBsaXN0KA0KICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiRkJDRiBWYXJpYcOnw6NvIGFudWFsICglKSIsDQogICAgICAgICAgICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMXB4IikpLA0KICAgICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpLCBmb3JtYXQgPSAie3ZhbHVlfSIpLA0KICAgICAgb3Bwb3NpdGUgPSBGQUxTRSwNCiAgICAgIGdyaWRMaW5lQ29sb3IgPSAiI0VFRUVFRSIsDQogICAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgICBsaXN0KHZhbHVlID0gMCwgY29sb3IgPSAiIzlFOUU5RSIsIHdpZHRoID0gMSwgekluZGV4ID0gNSwgZGFzaFN0eWxlID0gIlNob3J0RGFzaCIpDQogICAgICApDQogICAgKSwNCiAgICBsaXN0KA0KICAgICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiU2VsaWMgKCUgYS5hLikiLA0KICAgICAgICAgICAgICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTFweCIpKSwNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSwgZm9ybWF0ID0gInt2YWx1ZX0iKSwNCiAgICAgIG9wcG9zaXRlID0gVFJVRSwNCiAgICAgIGdyaWRMaW5lV2lkdGggPSAwLA0KICAgICAgbWluID0gMCwNCiAgICAgIG1heCA9IDE4DQogICAgKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsDQogICAgdmFsdWVEZWNpbWFscyA9IDIsDQogICAgdmFsdWVTdWZmaXggPSAiJSIsDQogICAgYmFja2dyb3VuZENvbG9yID0gIiNGRkZGRkYiLA0KICAgIGJvcmRlckNvbG9yID0gIiNEOUQ5RDkiLA0KICAgIGJvcmRlclJhZGl1cyA9IDgsDQogICAgc2hhZG93ID0gRkFMU0UsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiKQ0KICApICU+JQ0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSIsDQogICAgbGF5b3V0ID0gImhvcml6b250YWwiLA0KICAgIGl0ZW1TdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIsIGZvbnRXZWlnaHQgPSAibm9ybWFsIiwgZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIHNlcmllcyA9IGxpc3QoDQogICAgICBhbmltYXRpb24gPSBGQUxTRSwNCiAgICAgIHN0YXRlcyA9IGxpc3QoaW5hY3RpdmUgPSBsaXN0KG9wYWNpdHkgPSAxKSkNCiAgICApDQogICkgJT4lDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogSUJHRS9Db250YXMgTmFjaW9uYWlzOyBCQ0IgKFNHUyA0MzIpLiBFbGFib3Jhw6dvIHByw7NwcmlhIEliTWFjcm9CSC4iLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMHB4IiwgY29sb3IgPSAiIzc3Nzc3NyIpDQogICkNCg0KZ3JhZmljb19mYmNmX3NlbGljDQpgYGANCg0KQ29tbyBvYnNlcnZhZG8gbm8gZ3LDoWZpY28gWCwgYSBGQkNGIGNvbnRpbnVhIGFwcmVzZW50YW5kbyBmb3J0ZSBvc2NpbGHDp8OjbyBhbyBsb25nbyBkbyBwZXLDrW9kbywgc2VtIGVzdGFiZWxlY2VyIHVtYSB0cmFqZXTDs3JpYSBjb25zaXN0ZW50ZSBkZSBjcmVzY2ltZW50by4gTWVzbW8gbm9zIG1vbWVudG9zIGRlIHJlY3VwZXJhw6fDo28gZG8gaW52ZXN0aW1lbnRvLCBvIG1vdmltZW50byBuw6NvIHNlIHN1c3RlbnRhIHBvciBsb25nb3MgcGVyw61vZG9zLCByZXByb2R1emluZG8gdW0gcGFkcsOjbyBqw6Egb2JzZXJ2YWRvIGVtIGNpY2xvcyBhbnRlcmlvcmVzIGRhIGVjb25vbWlhIGJyYXNpbGVpcmEuDQoNCk8gcGljbyBkYSBzw6lyaWUgb2NvcnJldSBlbSBhYnJpbCBkZSAyMDIxLCBxdWFuZG8gYSB2YXJpYcOnw6NvIGFudWFsIGRhIEZCQ0YgYXRpbmdpdSBhcHJveGltYWRhbWVudGUgMjYsMjUlLiBObyBlbnRhbnRvLCBvIG1vdmltZW50byBwZXJkZXUgZm9yw6dhIHJhcGlkYW1lbnRlLCBjaGVnYW5kbyBhIC02LDg0JSBlbSBqdW5obyBkZSAyMDIzLiBNZXNtbyBub3MgZGFkb3MgbWFpcyByZWNlbnRlcywgYSBpbnN0YWJpbGlkYWRlIHBlcm1hbmVjZSBldmlkZW50ZTogZW0ganVsaG8gZGUgMjAyNSwgYSBGQkNGIHJlZ2lzdHJhdmEgY3Jlc2NpbWVudG8gZGUgYXByb3hpbWFkYW1lbnRlIDIsMzIlLCBtYXMgdm9sdG91IHBhcmEgLTMsMTIlIGVtIG91dHVicm8gZG8gbWVzbW8gYW5vLiBBc3NpbSwgYSBwcmluY2lwYWwgY2FyYWN0ZXLDrXN0aWNhIG9ic2VydmFkYSBuYSBzw6lyaWUgw6kganVzdGFtZW50ZSBhIGF1c8OqbmNpYSBkZSB1bWEgdHJhamV0w7NyaWEgc3VzdGVudGFkYSBkZSBpbnZlc3RpbWVudG8uIEEgRkJDRiBhcHJlc2VudGEgbW9tZW50b3MgcG9udHVhaXMgZGUgcmVjdXBlcmHDp8OjbywgbWFzIHNlbSBjb250aW51aWRhZGUgc3VmaWNpZW50ZSBwYXJhIGNvbnNvbGlkYXIgdW0gY2ljbG8gY29uc2lzdGVudGUgZGUgZXhwYW5zw6NvIGRvIGludmVzdGltZW50byBwcm9kdXRpdm8gbm8gcGHDrXMuDQoNClBhcnRlIGRlc3NhIGRpbsOibWljYSBwb2RlIHNlciBhc3NvY2lhZGEgYW8gcGF0YW1hciBlbGV2YWRvIGRhIHRheGEgU2VsaWMgbm8gQnJhc2lsLiBFbSBhbGd1bnMgbW9tZW50b3MgZG8gZ3LDoWZpY28sIMOpIHBvc3PDrXZlbCBvYnNlcnZhciBxdWUgYSByZWR1w6fDo28gZG9zIGp1cm9zIMOpIGFjb21wYW5oYWRhIHBvciBtZWxob3JhIGRhIEZvcm1hw6fDo28gQnJ1dGEgZGUgQ2FwaXRhbCBGaXhvLiBObyBlbnRhbnRvLCBtZXNtbyBkdXJhbnRlIGVzc2VzIHBlcsOtb2RvcyBkZSBxdWVkYSwgYSB0YXhhIGLDoXNpY2EgZGUganVyb3MgcGVybWFuZWNlIGVtIG7DrXZlaXMgZWxldmFkb3MuIEVtIG91dHJhcyBwYWxhdnJhcywgbXVpdGFzIHZlemVzIGEgU2VsaWMgcmVkdXogZGUgMTUlIHBhcmEgMTQlLCBtYXMgY29udGludWEgcmVwcmVzZW50YW5kbyB1bSBjdXN0byBhbHRvIHBhcmEgZGVjaXPDtWVzIGRlIGludmVzdGltZW50byBwcm9kdXRpdm8uDQoNClNvbWFkbyBhIGlzc28sIG8gYW1iaWVudGUgZGUgaW5jZXJ0ZXphIGZpc2NhbCBlIGVjb27DtG1pY2EgcmVkdXogYWluZGEgbWFpcyBvcyBpbmNlbnRpdm9zIGFvIGludmVzdGltZW50by4gTyByZXN1bHRhZG8gw6kgdW1hIHRyYWpldMOzcmlhIGRlIGludmVzdGltZW50byBpbnN0w6F2ZWwgZSBtYXJjYWRhIHBvciBmb3J0ZXMgb3NjaWxhw6fDtWVzLCByZXByb2R1emluZG8gdW0gcGFkcsOjbyBzZW1lbGhhbnRlIGFvIG9ic2VydmFkbyBubyBjaWNsbyBkZSBleHBhbnPDo28gZGUgMjAwOOKAkzIwMTQuDQoNCiMjIDMuMiBNZXJjYWRvIGRlIHRyYWJhbGhvIGUgcHJvZHV0aXZpZGFkZQ0KDQpBIGFuw6FsaXNlIGRvIG1lcmNhZG8gZGUgdHJhYmFsaG8gbm8gY2ljbG8gYXR1YWwgZXhpZ2UgdW0gb2xoYXIgcGFyYSBhbMOpbSBkYSB0YXhhIGRlIGRlc29jdXBhw6fDo28uIEVtYm9yYSBlc3NhIHNlamEgYSBtw6l0cmljYSBtYWlzIGNvbmhlY2lkYSBlIHV0aWxpemFkYSwgc3VhIHF1ZWRhIGlzb2xhZGFtZW50ZSBuw6NvIMOpIHN1ZmljaWVudGUgcGFyYSBpbmRpY2FyLCBwb3Igc2kgc8OzLCB1bSBtZXJjYWRvIGRlIHRyYWJhbGhvIHNhdWTDoXZlbCBvdSBzdXN0ZW50w6F2ZWwuIFBvciBpc3NvLCDDqSBpbXBvcnRhbnRlIGFuYWxpc8OhLWxhIGVtIGNvbmp1bnRvIGNvbSBhIHRheGEgZGUgc3VidXRpbGl6YcOnw6NvLCBxdWUgb2ZlcmVjZSB1bWEgbGVpdHVyYSBtYWlzIGFtcGxhIGRhcyBjb25kacOnw7VlcyBlZmV0aXZhcyBkYSBlY29ub21pYS4gDQoNCkEgdGF4YSBkZSBzdWJ1dGlsaXphw6fDo28gZW5nbG9iYSBuw6NvIGFwZW5hcyBhcyBwZXNzb2FzIGRlc29jdXBhZGFzLCBtYXMgdGFtYsOpbSBhcXVlbGFzIHF1ZSB0cmFiYWxoYW0gbWVub3MgaG9yYXMgZG8gcXVlIGdvc3RhcmlhbSAtIGEgY2hhbWFkYSBzdWJvY3VwYcOnw6NvIHBvciBpbnN1ZmljacOqbmNpYSBkZSBob3JhcyAtIGUgYSBmb3LDp2EgZGUgdHJhYmFsaG8gcG90ZW5jaWFsLCBjb21wb3N0YSBwb3IgcGVzc29hcyBxdWUgZ29zdGFyaWFtIGRlIHRyYWJhbGhhciwgbWFzIG7Do28gcHJvY3VyYXJhbSBlbXByZWdvIHBvciBkaWZlcmVudGVzIG1vdGl2b3MsIGNvbW8gZGlmaWN1bGRhZGVzIGRlIGRlc2xvY2FtZW50bywgYXVzw6puY2lhIGRlIGNyZWNoZSBwYXJhIG9zIGZpbGhvcyBvdSBpbmNvbXBhdGliaWxpZGFkZSBkZSBob3LDoXJpb3MgY29tIGEgZmFjdWxkYWRlLiBQb3IgcmV1bmlyIGVzc2FzIHRyw6pzIGRpbWVuc8O1ZXMsIGEgdGF4YSBkZSBzdWJ1dGlsaXphw6fDo28gZnVuY2lvbmEgY29tbyB1bSB0ZXJtw7RtZXRybyBtYWlzIHNlbnPDrXZlbCBkYXMgY29uZGnDp8O1ZXMgZG8gbWVyY2FkbyBkZSB0cmFiYWxoby4NCg0KQSBhbsOhbGlzZSBjb25qdW50YSBkb3MgZG9pcyBpbmRpY2Fkb3JlcyDDqSBpbXBvcnRhbnRlIHBvcnF1ZSBkaWZlcmVudGVzIGNvbWJpbmHDp8O1ZXMgZW50cmUgZWxlcyByZXZlbGFtIGVzdGFkb3MgZGlzdGludG9zIGRhIGVjb25vbWlhLiBFbSBhbGd1bnMgcGVyw61vZG9zIGRlIHJlY2Vzc8OjbywgcG9yIGV4ZW1wbG8sIGEgdGF4YSBkZSBkZXNvY3VwYcOnw6NvIHBvZGUgcGVybWFuZWNlciByZWxhdGl2YW1lbnRlIGJhaXhhLCB0cmFuc21pdGluZG8gYSBpbXByZXNzw6NvIGRlIHVtIG1lcmNhZG8gZGUgdHJhYmFsaG8gYXF1ZWNpZG8uIEVudHJldGFudG8sIHNlIGEgc3VidXRpbGl6YcOnw6NvIHBlcm1hbmVjZXIgZWxldmFkYSwgbyBxdWFkcm8gcmVhbCBhaW5kYSBpbmRpY2EgYSBleGlzdMOqbmNpYSBkZSB0cmFiYWxoYWRvcmVzIHN1Ym9jdXBhZG9zIG91IGZvcmEgZGEgZm9yw6dhIGRlIHRyYWJhbGhvLCBtYXMgYWluZGEgZGlzcG9uw612ZWlzIHBhcmEgdHJhYmFsaGFyLg0KDQoqKkdyw6FmaWNvIDIxOioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShzdHJpbmdyKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KcmF3X2Rlc29jIDwtIHJlYWRfZXhjZWwoIkM6L1VzZXJzL3JvYmVyL09uZURyaXZlL0liTWFjcm8vdGFiZWxhNDA5OS54bHN4IikNCnRyaW1lc3RyZXNfZGVzb2MgPC0gYXMuY2hhcmFjdGVyKHJhd19kZXNvY1szLCAtMV0pDQp2YWxvcmVzX2Rlc29jIDwtIGFzLm51bWVyaWMoZ3N1YigiLCIsICIuIiwgYXMuY2hhcmFjdGVyKHJhd19kZXNvY1s0LCAtMV0pKSkNCg0KZGVzb2MgPC0gZGF0YS5mcmFtZSgNCiAgdHJpbWVzdHJlID0gdHJpbWVzdHJlc19kZXNvYywNCiAgdmFsb3IgPSB2YWxvcmVzX2Rlc29jDQopICU+JQ0KICBmaWx0ZXIoIWlzLm5hKHZhbG9yKSkgJT4lDQogIG11dGF0ZSgNCiAgICBhbm8gID0gYXMuaW50ZWdlcihzdHJfZXh0cmFjdCh0cmltZXN0cmUsICJcXGR7NH0iKSksDQogICAgdHJpbSA9IGFzLmludGVnZXIoc3RyX2V4dHJhY3QodHJpbWVzdHJlLCAiXlxcZCIpKQ0KICApICU+JQ0KICBmaWx0ZXIoIWlzLm5hKGFubyksICFpcy5uYSh0cmltKSwgdHJpbSA+PSAxLCB0cmltIDw9IDQpICU+JQ0KICBtdXRhdGUoDQogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0iLCBmb3JtYXRDKHRyaW0gKiAzIC0gMiwgd2lkdGggPSAyLCBmbGFnID0gIjAiKSwgIi0xNSIpKSwNCiAgICBkYXRhX21zID0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KGRhdGEsIHR6ID0gIlVUQyIpKSAqIDEwMDANCiAgKSAlPiUNCiAgYXJyYW5nZShkYXRhKQ0KDQpyYXdfc3VidXRpbCA8LSByZWFkX2V4Y2VsKCJDOi9Vc2Vycy9yb2Jlci9PbmVEcml2ZS9JYk1hY3JvL2Rlc29jdXAueGxzeCIpDQp0cmltZXN0cmVzX3N1YiA8LSBhcy5jaGFyYWN0ZXIocmF3X3N1YnV0aWxbMywgLTFdKQ0KdmFsb3Jlc19zdWIgPC0gYXMubnVtZXJpYyhnc3ViKCIsIiwgIi4iLCBhcy5jaGFyYWN0ZXIocmF3X3N1YnV0aWxbNCwgLTFdKSkpDQoNCnN1YnV0aWwgPC0gZGF0YS5mcmFtZSgNCiAgdHJpbWVzdHJlID0gdHJpbWVzdHJlc19zdWIsDQogIHZhbG9yID0gdmFsb3Jlc19zdWINCikgJT4lDQogIGZpbHRlcighaXMubmEodmFsb3IpKSAlPiUNCiAgbXV0YXRlKA0KICAgIGFubyAgPSBhcy5pbnRlZ2VyKHN0cl9leHRyYWN0KHRyaW1lc3RyZSwgIlxcZHs0fSIpKSwNCiAgICB0cmltID0gYXMuaW50ZWdlcihzdHJfZXh0cmFjdCh0cmltZXN0cmUsICJeXFxkIikpDQogICkgJT4lDQogIGZpbHRlcighaXMubmEoYW5vKSwgIWlzLm5hKHRyaW0pLCB0cmltID49IDEsIHRyaW0gPD0gNCkgJT4lDQogIG11dGF0ZSgNCiAgICBkYXRhID0gYXMuRGF0ZShwYXN0ZTAoYW5vLCAiLSIsIGZvcm1hdEModHJpbSAqIDMgLSAyLCB3aWR0aCA9IDIsIGZsYWcgPSAiMCIpLCAiLTE1IikpLA0KICAgIGRhdGFfbXMgPSBhcy5udW1lcmljKGFzLlBPU0lYY3QoZGF0YSwgdHogPSAiVVRDIikpICogMTAwMA0KICApICU+JQ0KICBhcnJhbmdlKGRhdGEpDQoNCmRhZG9zX2Rlc29jIDwtIGRlc29jICU+JSBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgdmFsb3IpDQpkYWRvc19zdWIgICA8LSBzdWJ1dGlsICU+JSBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgdmFsb3IpDQoNCmdyYWZpY29fdHJhYmFsaG8gPC0gaGlnaGNoYXJ0KCkgJT4lDQogIGhjX2NoYXJ0KA0KICAgIGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiwNCiAgICBzcGFjaW5nVG9wID0gMjAsIHNwYWNpbmdSaWdodCA9IDIwLA0KICAgIHNwYWNpbmdCb3R0b20gPSAyMCwgc3BhY2luZ0xlZnQgPSAyMA0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIk1lcmNhZG8gZGUgVHJhYmFsaG8g4oCUIEJyYXNpbCIsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMThweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMwMjAyM0MiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIlRheGEgZGUgZGVzb2N1cGHDp8OjbyBlIHRheGEgZGUgc3VidXRpbGl6YcOnw6NvIOKAlCBQTkFEIENvbnTDrW51YSB0cmltZXN0cmFsIiwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMnB4IiwgY29sb3IgPSAiIzY2NjY2NiIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX2Rlc29jKSwNCiAgICB0eXBlID0gImxpbmUiLA0KICAgIG5hbWUgPSAiVGF4YSBkZSBkZXNvY3VwYcOnw6NvIiwNCiAgICBjb2xvciA9ICIjMDIwMjNDIiwNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX3N1YiksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIlRheGEgZGUgc3VidXRpbGl6YcOnw6NvIiwNCiAgICBjb2xvciA9ICIjRkVCMDE1IiwNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX3hBeGlzKA0KICAgIHR5cGUgPSAiZGF0ZXRpbWUiLA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gTlVMTCksDQogICAgbGluZUNvbG9yID0gIiNEOUQ5RDkiLA0KICAgIHRpY2tDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICB0aWNrTGVuZ3RoID0gMCwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTFweCIpKQ0KICApICU+JQ0KICBoY195QXhpcygNCiAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICIoJSkiLA0KICAgICAgICAgICAgICAgICBzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIsIGZvbnRTaXplID0gIjExcHgiKSksDQogICAgZ3JpZExpbmVDb2xvciA9ICIjRUVFRUVFIiwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiksIGZvcm1hdCA9ICJ7dmFsdWV9JSIpDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgYm9yZGVyQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgYm9yZGVyUmFkaXVzID0gOCwNCiAgICBzaGFkb3cgPSBGQUxTRSwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsDQogICAgaXRlbVN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFdlaWdodCA9ICJub3JtYWwiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgKSAlPiUNCiAgaGNfcGxvdE9wdGlvbnMoDQogICAgc2VyaWVzID0gbGlzdCgNCiAgICAgIGFuaW1hdGlvbiA9IEZBTFNFLA0KICAgICAgc3RhdGVzID0gbGlzdChpbmFjdGl2ZSA9IGxpc3Qob3BhY2l0eSA9IDEpKQ0KICAgICkNCiAgKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBJQkdFL1BOQUQgQ29udMOtbnVhLiBFbGFib3Jhw6fDo28gcHLDs3ByaWEgSWJNYWNyb0JILiIsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEwcHgiLCBjb2xvciA9ICIjNzc3Nzc3IikNCiAgKQ0KDQpncmFmaWNvX3RyYWJhbGhvDQpgYGANCg0KDQpObyBjYXNvIGJyYXNpbGVpcm8gcmVjZW50ZSwgcG9yw6ltLCBvIG1vdmltZW50byBvYnNlcnZhZG8gZm9pIGRlIHF1ZWRhIHNpbXVsdMOibmVhIHRhbnRvIGRhIHRheGEgZGUgZGVzb2N1cGHDp8OjbyBxdWFudG8gZGEgdGF4YSBkZSBzdWJ1dGlsaXphw6fDo28uIEVtIGp1bGhvIGRlIDIwMjAsIGEgdGF4YSBkZSBkZXNvY3VwYcOnw6NvIGVuY29udHJhdmEtc2UgZW0gMTQsOSUsIGVucXVhbnRvIGEgdGF4YSBkZSBzdWJ1dGlsaXphw6fDo28gYXRpbmdpYSAzMCw0JS4gRW0gb3V0dWJybyBkZSAyMDI1LCBhbWJvcyBvcyBpbmRpY2Fkb3JlcyBoYXZpYW0gcmVjdWFkbyBkZSBmb3JtYSBleHByZXNzaXZhOiBhIGRlc29jdXBhw6fDo28gY2hlZ291IGEgNSwxJSBlIGEgc3VidXRpbGl6YcOnw6NvIGEgMTMsNCUuDQoNCkEgdHJhamV0w7NyaWEgZGUgcXVlZGEgw6kgZXZpZGVudGUgbmFzIGR1YXMgc8OpcmllcywgcmVmbGV0aW5kbyB1bWEgcmVkdcOnw6NvIGNvbnNpc3RlbnRlIGRvIGRlc2VtcHJlZ28gZSBkYSBmb3LDp2EgZGUgdHJhYmFsaG8gc3VidXRpbGl6YWRhIGFvIGxvbmdvIGRvIHBlcsOtb2RvLiBFbnRyZXRhbnRvLCBubyBjYXNvIGJyYXNpbGVpcm8gYXR1YWwsIGVzc2EgY29uZmlndXJhw6fDo28gbsOjbyDDqSBuZWNlc3NhcmlhbWVudGUgcG9zaXRpdmEuIEFzIGR1YXMgdGF4YXMgZW5jb250cmFtLXNlIHNpbXVsdGFuZWFtZW50ZSBlbSBuw612ZWlzIG11aXRvIGJhaXhvcywgaW5kaWNhbmRvIHF1ZSBow6EgcG91Y2EgZm9sZ2EgZGlzcG9uw612ZWwgbm8gbWVyY2FkbyBkZSB0cmFiYWxoby4gRW0gb3V0cmFzIHBhbGF2cmFzLCBncmFuZGUgcGFydGUgZGFzIHBlc3NvYXMgcXVlIHBvZGVyaWFtIHNlciBpbmNvcnBvcmFkYXMgYW8gbWVyY2FkbyBqw6Egc2UgZW5jb250cmEgb2N1cGFkYSBvdSBwcm9jdXJhbmRvIGVtcHJlZ28gYXRpdmFtZW50ZS4NCg0KRXNzZSBjZW7DoXJpbyB0ZW5kZSBhIGdlcmFyIHByZXNzw7VlcyBzYWxhcmlhaXMsIHF1ZSBwb3N0ZXJpb3JtZW50ZSBwb2RlbSBzZSB0cmFkdXppciBlbSBwcmVzc8O1ZXMgaW5mbGFjaW9uw6FyaWFzLCBkaWZpY3VsdGFuZG8gYSBjb25kdcOnw6NvIGRhIHBvbMOtdGljYSBtb25ldMOhcmlhIGUgaW1wb25kbyBsaW1pdGVzIGFkaWNpb25haXMgYW8gY3Jlc2NpbWVudG8gZWNvbsO0bWljby4gRW0gZWNvbm9taWFzIGNvbSBnYW5ob3Mgcm9idXN0b3MgZGUgcHJvZHV0aXZpZGFkZSwgdW0gbWVyY2FkbyBkZSB0cmFiYWxobyBhcXVlY2lkbyBwb2RlIHNlciBzdXN0ZW50YWRvIHBvciBhdW1lbnRvcyBkYSBjYXBhY2lkYWRlIHByb2R1dGl2YS4gTm8gY2FzbyBicmFzaWxlaXJvLCBjb250dWRvLCBlc3NhIHByZW9jdXBhw6fDo28gc2UgdG9ybmEgbWFpcyByZWxldmFudGUganVzdGFtZW50ZSBwb3JxdWUgbyBkZXNlbXBlbmhvIGRhIHByb2R1dGl2aWRhZGUgcGVybWFuZWNlIGxpbWl0YWRvLg0KDQpOZXNzZSBzZW50aWRvLCBvIGdyw6FmaWNvIDIyIGFwcmVzZW50YSBhIGV2b2x1w6fDo28gcmVjZW50ZSBkYSBQcm9kdXRpdmlkYWRlIFRvdGFsIGRvcyBGYXRvcmVzIChQVEYpLg0KDQoqKkdyw6FmaWNvIDIyOioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoaGlnaGNoYXJ0ZXIpDQoNCnB0Zl90cmltIDwtIGRhdGEuZnJhbWUoDQogIHBlcmlvZG8gPSBjKA0KICAgICIyMDIwcTMiLCIyMDIwcTQiLA0KICAgICIyMDIxcTEiLCIyMDIxcTIiLCIyMDIxcTMiLCIyMDIxcTQiLA0KICAgICIyMDIycTEiLCIyMDIycTIiLCIyMDIycTMiLCIyMDIycTQiLA0KICAgICIyMDIzcTEiLCIyMDIzcTIiLCIyMDIzcTMiLCIyMDIzcTQiLA0KICAgICIyMDI0cTEiLCIyMDI0cTIiLCIyMDI0cTMiLCIyMDI0cTQiLA0KICAgICIyMDI1cTEiLCIyMDI1cTIiLCIyMDI1cTMiLCIyMDI1cTQiDQogICksDQogIGVmZXRpdmFzID0gYygNCiAgICA5Mi4wLCA4OC40LA0KICAgIDg3LjUsIDg3LjMsIDg1LjUsIDg0LjQsDQogICAgODQuNiwgODQuNCwgODQuMywgODUuMCwNCiAgICA4Ni4xLCA4NS43LCA4NS40LCA4NC45LA0KICAgIDg0LjMsIDg0LjUsIDg0LjQsIDgzLjgsDQogICAgODQuOSwgODMuOCwgODMuOCwgODMuOQ0KICApDQopICU+JQ0KICBtdXRhdGUoDQogICAgYW5vID0gYXMuaW50ZWdlcihzdWJzdHIocGVyaW9kbywgMSwgNCkpLA0KICAgIHRyaW0gPSBhcy5pbnRlZ2VyKHN1YnN0cihwZXJpb2RvLCA2LCA2KSksDQogICAgZGF0YSA9IGFzLkRhdGUocGFzdGUwKGFubywgIi0iLCBmb3JtYXRDKHRyaW0gKiAzIC0gMiwgd2lkdGggPSAyLCBmbGFnID0gIjAiKSwgIi0xNSIpKSwNCiAgICBkYXRhX21zID0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KGRhdGEsIHR6ID0gIlVUQyIpKSAqIDEwMDANCiAgKQ0KDQpwdGZfdHJpbSA8LSBwdGZfdHJpbSAlPiUNCiAgYXJyYW5nZShkYXRhKSAlPiUNCiAgbXV0YXRlKA0KICAgIG1tNCA9IHpvbzo6cm9sbG1lYW4oZWZldGl2YXMsIGsgPSA0LCBmaWxsID0gTkEsIGFsaWduID0gInJpZ2h0IikNCiAgKQ0KDQpkYWRvc19wdGYgPC0gcHRmX3RyaW0gJT4lDQogIHNlbGVjdCh0aW1lc3RhbXAgPSBkYXRhX21zLCBlZmV0aXZhcykNCg0KZGFkb3NfbW00IDwtIHB0Zl90cmltICU+JQ0KICBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgbW00KQ0KDQpncmFmaWNvX3B0ZiA8LSBoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19jaGFydCgNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgc3BhY2luZ1RvcCA9IDIwLA0KICAgIHNwYWNpbmdSaWdodCA9IDIwLA0KICAgIHNwYWNpbmdCb3R0b20gPSAyMCwNCiAgICBzcGFjaW5nTGVmdCA9IDIwDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX3B0ZiksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIlBURiAoSG9yYXMgRWZldGl2YXMpIiwNCiAgICBjb2xvciA9ICIjMDIwMjNDIiwNCiAgICBsaW5lV2lkdGggPSAzLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IFRSVUUsIHJhZGl1cyA9IDQpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX21tNCksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIk3DqWRpYSBtw7N2ZWwgKDQgdHJpbWVzdHJlcykiLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLA0KICAgIGxpbmVXaWR0aCA9IDIuNSwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSkNCiAgKSAlPiUNCiAgaGNfeUF4aXMoDQogICAgdGl0bGUgPSBsaXN0KHRleHQgPSAiw41uZGljZSAoMjAxMlQyID0gMTAwKSIpLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0U2RTZFNiINCiAgKSAlPiUNCiAgaGNfeEF4aXMoDQogICAgbGluZUNvbG9yID0gIiNEOUQ5RDkiLA0KICAgIHRpY2tDb2xvciA9ICIjRDlEOUQ5Ig0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIlByb2R1dGl2aWRhZGUgVG90YWwgZG9zIEZhdG9yZXMgLSBCcmFzaWwiLA0KICAgIGFsaWduID0gImNlbnRlciINCiAgKSAlPiUNCiAgaGNfc3VidGl0bGUoDQogICAgdGV4dCA9ICJQVEYgYWp1c3RhZGEgcG9yIGhvcmFzIGVmZXRpdmFzIC0gM1QyMDIwIGEgNFQyMDI1IiwNCiAgICBhbGlnbiA9ICJjZW50ZXIiDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICB2YWx1ZURlY2ltYWxzID0gMQ0KICApICU+JQ0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgYWxpZ24gPSAiY2VudGVyIiwNCiAgICB2ZXJ0aWNhbEFsaWduID0gImJvdHRvbSINCiAgKSAlPiUNCiAgaGNfbmF2aWdhdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX3Njcm9sbGJhcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19yYW5nZVNlbGVjdG9yKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogT2JzZXJ2YXTDs3JpbyBkYSBQcm9kdXRpdmlkYWRlIFJlZ2lzIEJvbmVsbGkvRkdWIElCUkUuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvQkguIg0KICApDQoNCmdyYWZpY29fcHRmDQpgYGANCg0KQ29tbyBvYnNlcnZhZG8gbm8gZ3LDoWZpY28gMjIsIGEgUFRGIGFwcmVzZW50YWRhIGrDoSBpbmNvcnBvcmEgbyBhanVzdGUgcG9yIGNhcGl0YWwgaHVtYW5vIC0gY3VqYSBpbXBvcnTDom5jaWEgZm9pIGRpc2N1dGlkYSBhbnRlcmlvcm1lbnRlIC0sIGdhcmFudGluZG8gcXVlIG9zIG1vdmltZW50b3Mgb2JzZXJ2YWRvcyByZWZsaXRhbSBnYW5ob3MgZWZldGl2b3MgZGUgZWZpY2nDqm5jaWEgcHJvZHV0aXZhLCBlIG7Do28gc2ltcGxlc21lbnRlIG8gYXVtZW50byBkYSBlc2NvbGFyaWRhZGUgb3UgZGEgcXVhbGlmaWNhw6fDo28gZGEgZm9yw6dhIGRlIHRyYWJhbGhvLiBBbMOpbSBkaXNzbywgYWRpY2lvbm91LXNlIHVtYSBtw6lkaWEgbcOzdmVsIGRlIHF1YXRybyB0cmltZXN0cmVzIChsaW5oYSBhbWFyZWxhKSwgcXVlIHBlcm1pdGUgdmlzdWFsaXphciBhIHRlbmTDqm5jaWEgZGEgc8OpcmllIGFvIHN1YXZpemFyIG9zY2lsYcOnw7VlcyBwb250dWFpcy4gDQoNCkEgc8OpcmllIGluaWNpYSBlbSBqdWxobyBkZSAyMDIwIGVtIHVtIHBhdGFtYXIgZWxldmFkbywgZGUgYXByb3hpbWFkYW1lbnRlIDkyIHBvbnRvcywgdmFsb3IgcXVlIHBvZGUgc2VyIGFzc29jaWFkbyBhbyBjb250ZXh0byBww7NzLXBhbmTDqm1pY28sIG1hcmNhZG8gcGVsbyByZXRvcm5vIGdyYWR1YWwgZGEgYXRpdmlkYWRlIGVjb27DtG1pY2EgZSBwb3IgcGFkcsO1ZXMgYXTDrXBpY29zIGRlIHRyYWJhbGhvLiBBIHBhcnRpciBkZXNzZSBwb250bywgYSBQVEYgYXByZXNlbnRhIHVtYSBxdWVkYSBzaWduaWZpY2F0aXZhLCBhdGluZ2luZG8gODcsMyBqw6EgZW0gYWJyaWwgZGUgMjAyMSwgc2luYWxpemFuZG8gcXVlIG8gbsOtdmVsIGVsZXZhZG8gb2JzZXJ2YWRvIG5vIGluw61jaW8gZGEgc8OpcmllIG7Do28gc2Ugc3VzdGVudG91Lg0KDQpBbyBsb25nbyBkbyBwZXLDrW9kbywgb2JzZXJ2YW0tc2UgYWxndW1hcyByZWN1cGVyYcOnw7VlcyBwb250dWFpcywgY29tbyBlbnRyZSBqdWxobyBkZSAyMDIyIGUgamFuZWlybyBkZSAyMDIzLCBlIGVudHJlIG91dHVicm8gZGUgMjAyMyBlIGphbmVpcm8gZGUgMjAyNC4gRW50cmV0YW50bywgdGFudG8gYSBtw6lkaWEgbcOzdmVsIHF1YW50byBhIHByw7NwcmlhIHPDqXJpZSBldmlkZW5jaWFtIHF1ZSwgYXBlc2FyIGRlc3NlcyBtb3ZpbWVudG9zIGludGVybWVkacOhcmlvcywgYSB0ZW5kw6puY2lhIGdlcmFsIGRhIFBURiBhbyBsb25nbyBkbyBwZXLDrW9kbyBmb2kgZGUgcXVlZGEuIE8gZGFkbyBtYWlzIHJlY2VudGUsIHJlZmVyZW50ZSBhbyBxdWFydG8gdHJpbWVzdHJlIGRlIDIwMjUsIHJlZ2lzdHJhIGEgUFRGIGVtIDgzLDksIHBhdGFtYXIgc2lnbmlmaWNhdGl2YW1lbnRlIGluZmVyaW9yIGFvcyA5MiBvYnNlcnZhZG9zIG5vIGluw61jaW8gZGEgc8OpcmllIGFuYWxpc2FkYS4NCg0KRXNzZSByZXN1bHRhZG8gw6kgcGFydGljdWxhcm1lbnRlIHByZW9jdXBhbnRlIHF1YW5kbyBjb21iaW5hZG8gY29tIG8gcXVhZHJvIGRvIG1lcmNhZG8gZGUgdHJhYmFsaG8gZGlzY3V0aWRvIGFudGVyaW9ybWVudGUuIEEgZWNvbm9taWEgYnJhc2lsZWlyYSBlbmNvbnRyYS1zZSBlbSB1bWEgc2l0dWHDp8OjbyBlbSBxdWUgcHJhdGljYW1lbnRlIHRvZGFzIGFzIHBlc3NvYXMgcXVlIHBvZGVyaWFtIGVzdGFyIHRyYWJhbGhhbmRvIGrDoSBzZSBlbmNvbnRyYW0gb2N1cGFkYXMsIG1hcywgYW8gbWVzbW8gdGVtcG8sIGVzc2FzIHBlc3NvYXMgbsOjbyBlc3TDo28gc2UgdG9ybmFuZG8gbWFpcyBwcm9kdXRpdmFzIGFvIGxvbmdvIGRvIHRlbXBvLiBFbSBvdXRyYXMgcGFsYXZyYXMsIG8gcGHDrXMgYXRpbmdpdSBvIGxpbWl0ZSBkYSBhY3VtdWxhw6fDo28gZGUgZmF0b3JlcyBubyBtZXJjYWRvIGRlIHRyYWJhbGhvIHNlbSBxdWUgaXNzbyBmb3NzZSBhY29tcGFuaGFkbyBwb3IgZ2FuaG9zIGRlIGVmaWNpw6puY2lhIHByb2R1dGl2YS4NCkVzc2UgY2Vuw6FyaW8gaW1ww7VlIHJlc3RyacOnw7VlcyBpbXBvcnRhbnRlcyBhbyBjcmVzY2ltZW50byBkZSBsb25nbyBwcmF6by4gU2VtIGF1bWVudG9zIGNvbnNpc3RlbnRlcyBkZSBwcm9kdXRpdmlkYWRlLCBhIGVjb25vbWlhIHBlcmRlIGEgY2FwYWNpZGFkZSBkZSBwcm9kdXppciBtYWlzIHV0aWxpemFuZG8gb3MgbWVzbW9zIHJlY3Vyc29zLCByZXByb2R1emluZG8sIGUgYWdyYXZhbmRvLCB1bWEgZGFzIHByaW5jaXBhaXMgZnJhZ2lsaWRhZGVzIGVzdHJ1dHVyYWlzIGrDoSBpZGVudGlmaWNhZGFzIG5vIGNpY2xvIGRlIGV4cGFuc8OjbyBkZSAyMDA44oCTMjAxNC4NCg0KIyMgMy4zIENvbmZpYW7Dp2EsIGluY2VydGV6YSBlIGxpbWl0ZXMgZG8gY3Jlc2NpbWVudG8gDQoNClBhcmEgYWzDqW0gZG9zIGluZGljYWRvcmVzIGRlIGF0aXZpZGFkZSwgbWVyY2FkbyBkZSB0cmFiYWxobyBlIHByb2R1dGl2aWRhZGUsIGEgYW7DoWxpc2UgZG8gY2ljbG8gYXR1YWwgc2UgYmVuZWZpY2lhIGRhIG9ic2VydmHDp8OjbyBkZSBpbmRpY2Fkb3JlcyBxdWFsaXRhdGl2b3MgcXVlIGNhcHRhbSBhIHBlcmNlcMOnw6NvIGRlIGVtcHJlc8OhcmlvcyBlIGNvbnN1bWlkb3JlcyBzb2JyZSBvIGVzdGFkbyBkYSBlY29ub21pYS4gTyBncsOhZmljbyAyMyBhcHJlc2VudGEgbyDDjW5kaWNlIGRlIENvbmZpYW7Dp2EgRW1wcmVzYXJpYWwgKElDRSkgZSBvIMONbmRpY2UgZGUgQ29uZmlhbsOnYSBkbyBDb25zdW1pZG9yIChJQ0MpLCBhbWJvcyBjYWxjdWxhZG9zIHBlbGEgRkdWL0lCUkUsIGVtIGNvbmp1bnRvIGNvbSBvIE7DrXZlbCBkZSBVdGlsaXphw6fDo28gZGEgQ2FwYWNpZGFkZSBJbnN0YWxhZGEgKE5VQ0kpLCBxdWUgbWVkZSBvIHF1YW50byBhIGluZMO6c3RyaWEgZXN0w6EgZWZldGl2YW1lbnRlIG9wZXJhbmRvIGVtIHJlbGHDp8OjbyBhbyBzZXUgcG90ZW5jaWFsIGRlIHByb2R1w6fDo28uIA0KDQoqKkdyw6FmaWNvIDIzOioqDQoNCmBgYHtyLCBlY2hvPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShoaWdoY2hhcnRlcikNCg0KY2ljbG9fYXR1YWwgPC0gZGF0YS5mcmFtZSgNCiAgZGF0YSA9IHNlcShhcy5EYXRlKCIyMDIwLTA3LTAxIiksIGFzLkRhdGUoIjIwMjYtMDQtMDEiKSwgYnkgPSAibW9udGgiKSwNCiAgSUNFID0gYygNCiAgICA4Mi4wLCA4OS45LCA5NC44LCA5Ny44LCA5Ny43LCA5OC4yLA0KICAgIDk2LjAsIDk0LjcsIDg3LjcsIDkwLjMsIDk0LjEsIDk3LjAsIDk5LjcsIDEwMC41LCA5Ny41LCA5OS43LCA5OC40LCA5Ny41LA0KICAgIDkzLjksIDkzLjAsIDkzLjQsIDk1LjcsIDk3LjEsIDk3LjUsIDk2LjcsIDk5LjAsIDk5LjEsIDk3LjQsIDkzLjEsIDkzLjUsDQogICAgOTEuNSwgOTIuNCwgOTMuMSwgOTEuMywgOTAuMywgOTIuMiwgOTEuNiwgOTIuNiwgOTIuNiwgOTIuNSwgOTMuOSwgOTQuMiwNCiAgICA5NS4wLCA5NC4xLCA5NS4xLCA5NS41LCA5NS4wLCA5NS4zLCA5Ni41LCA5OC4wLCA5Ni44LCA5Ny43LCA5Ni45LCA5Ni40LA0KICAgIDkzLjksIDkzLjIsIDkyLjksIDkzLjMsIDkzLjcsIDkxLjUsIDkwLjIsIDg4LjAsIDg5LjMsIDg5LjYsIDkwLjIsIDkxLjUsDQogICAgOTIuNCwgOTIuMSwgOTEuNiwgOTAuNg0KICApLA0KICBJQ0MgPSBjKA0KICAgIDc4LjEsIDc4LjcsIDgxLjYsIDgwLjksIDgwLjIsIDc3LjQsDQogICAgNzYuMCwgNzguOSwgNzAuMiwgNzQuNCwgNzguMiwgODEuMiwgODEuNCwgODAuMSwgNzMuNCwgNzQuMywgNzMuMCwgNzQuNCwNCiAgICA3NC41LCA3OC44LCA3Ni43LCA4MC4yLCA3Ny40LCA3OS4wLCA3OC41LCA4MS43LCA4Ni45LCA4Ni44LCA4My41LCA4Ni45LA0KICAgIDg2LjYsIDg1LjUsIDg5LjEsIDg4LjQsIDkwLjMsIDkyLjMsIDkzLjgsIDk0LjksIDk0LjgsIDkxLjUsIDkxLjAsIDkyLjQsDQogICAgOTEuMCwgODkuNiwgOTIuOSwgOTQuNSwgOTAuNiwgOTEuNywgOTIuNCwgOTIuNywgOTIuOCwgOTEuNSwgOTQuMCwgOTAuOSwNCiAgICA4Ni41LCA4NS4xLCA4NC44LCA4Ni42LCA4Ny45LCA4Ni4yLCA4NS44LCA4NS41LCA4Ni40LCA4Ny4wLCA4OC44LCA4OS4xLA0KICAgIDg3LjMsIDg2LjEsIDg4LjEsIDg5LjENCiAgKSwNCiAgTlVDSSA9IGMoDQogICAgNzIuMCwgNzQuOSwgNzcuOSwgNzkuNywgNzkuOSwgNzkuNSwNCiAgICA4MC4yLCA3OS42LCA3OC42LCA3Ni43LCA3Ny43LCA3OS4wLCA3OS42LCA3OS4zLCA3OS45LCA4MS4yLCA4MS4wLCA4MC4wLA0KICAgIDgxLjAsIDgwLjUsIDgwLjUsIDc5LjgsIDgwLjcsIDgxLjAsIDgxLjgsIDgxLjcsIDgwLjQsIDgwLjYsIDgwLjEsIDc5LjksDQogICAgNzkuMSwgNzkuMywgNzkuNCwgODAuNywgODAuMCwgODAuMCwgODAuNSwgODAuMywgODEuMywgODAuNywgODEuMiwgODEuNSwNCiAgICA4MS40LCA4MS4yLCA4MS42LCA4Mi4yLCA4MS43LCA4Mi4zLCA4My4wLCA4My4wLCA4My4xLCA4Mi41LCA4MS45LCA4MS41LA0KICAgIDgxLjksIDgxLjMsIDgxLjcsIDgyLjksIDgzLjUsIDgzLjYsIDgyLjIsIDgyLjQsIDgyLjMsIDgxLjksIDc5LjksIDgwLjAsDQogICAgODEuMywgODEuNiwgODIuNCwgODMuMg0KICApDQopICU+JQ0KICBtdXRhdGUoZGF0YV9tcyA9IGFzLm51bWVyaWMoYXMuUE9TSVhjdChkYXRhLCB0eiA9ICJVVEMiKSkgKiAxMDAwKQ0KDQpkYWRvc19pY2UgIDwtIGNpY2xvX2F0dWFsICU+JSBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgdmFsb3IgPSBJQ0UpDQpkYWRvc19pY2MgIDwtIGNpY2xvX2F0dWFsICU+JSBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgdmFsb3IgPSBJQ0MpDQpkYWRvc19udWNpIDwtIGNpY2xvX2F0dWFsICU+JSBzZWxlY3QodGltZXN0YW1wID0gZGF0YV9tcywgdmFsb3IgPSBOVUNJKQ0KDQpoaWdoY2hhcnQodHlwZSA9ICJzdG9jayIpICU+JQ0KICBoY19jaGFydChiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsIHNwYWNpbmdUb3AgPSAyMCwgc3BhY2luZ1JpZ2h0ID0gMjAsDQogICAgICAgICAgIHNwYWNpbmdCb3R0b20gPSAyMCwgc3BhY2luZ0xlZnQgPSAyMCkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX2ljZSksDQogICAgdHlwZSA9ICJsaW5lIiwgbmFtZSA9ICJJQ0Ug4oCUIENvbmZpYW7Dp2EgRW1wcmVzYXJpYWwiLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLCBsaW5lV2lkdGggPSAyLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSkNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGlzdF9wYXJzZTIoZGFkb3NfaWNjKSwNCiAgICB0eXBlID0gImxpbmUiLCBuYW1lID0gIklDQyDigJQgQ29uZmlhbsOnYSBkbyBDb25zdW1pZG9yIiwNCiAgICBjb2xvciA9ICIjMDIwMjNDIiwgbGluZVdpZHRoID0gMiwNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSksDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDEpDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxpc3RfcGFyc2UyKGRhZG9zX251Y2kpLA0KICAgIHR5cGUgPSAibGluZSIsIG5hbWUgPSAiTlVDSSAoJSkiLA0KICAgIGNvbG9yID0gIiM0NkIxRTEiLCBsaW5lV2lkdGggPSAyLA0KICAgIG1hcmtlciA9IGxpc3QoZW5hYmxlZCA9IEZBTFNFKSwNCiAgICB0b29sdGlwID0gbGlzdCh2YWx1ZURlY2ltYWxzID0gMSwgdmFsdWVTdWZmaXggPSAiJSIpDQogICkgJT4lDQogIGhjX3lBeGlzKA0KICAgIHRpdGxlID0gbGlzdCh0ZXh0ID0gIsONbmRpY2UgLyAlIiwNCiAgICAgICAgICAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMnB4IikpLA0KICAgIGdyaWRMaW5lQ29sb3IgPSAiI0U2RTZFNiIsDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpKQ0KICApICU+JQ0KICBoY194QXhpcygNCiAgICBsaW5lQ29sb3IgPSAiI0Q5RDlEOSIsIHRpY2tDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICBsYWJlbHMgPSBsaXN0KHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IikpDQogICkgJT4lDQogIGhjX3Bsb3RPcHRpb25zKA0KICAgIHNlcmllcyA9IGxpc3QoYW5pbWF0aW9uID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICBzdGF0ZXMgPSBsaXN0KGluYWN0aXZlID0gbGlzdChvcGFjaXR5ID0gMSkpKQ0KICApICU+JQ0KICBoY190aXRsZSgNCiAgICB0ZXh0ID0gIkNvbmZpYW7Dp2EgZSBDYXBhY2lkYWRlIEluc3RhbGFkYSDigJQgQnJhc2lsIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIklDRSwgSUNDIGUgTlVDSSDigJQganVsLzIwMjAgYW8gbWFpcyByZWNlbnRlIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTNweCIsIGNvbG9yID0gIiM2NjY2NjYiKQ0KICApICU+JQ0KICBoY190b29sdGlwKA0KICAgIHNoYXJlZCA9IFRSVUUsIGNyb3NzaGFpcnMgPSBUUlVFLA0KICAgIGJhY2tncm91bmRDb2xvciA9ICIjRkZGRkZGIiwgYm9yZGVyQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgYm9yZGVyUmFkaXVzID0gOCwgc2hhZG93ID0gRkFMU0UsDQogICAgc3R5bGUgPSBsaXN0KGZvbnRTaXplID0gIjEycHgiKQ0KICApICU+JQ0KICBoY19sZWdlbmQoDQogICAgZW5hYmxlZCA9IFRSVUUsIGFsaWduID0gImNlbnRlciIsDQogICAgdmVydGljYWxBbGlnbiA9ICJib3R0b20iLCBsYXlvdXQgPSAiaG9yaXpvbnRhbCINCiAgKSAlPiUNCiAgaGNfcmFuZ2VTZWxlY3RvcihlbmFibGVkID0gRkFMU0UpICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfc2Nyb2xsYmFyKGVuYWJsZWQgPSBGQUxTRSkgJT4lDQogIGhjX2NyZWRpdHMoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgdGV4dCA9ICJGb250ZTogRkdWL0lCUkUuIEVsYWJvcmHDp8OjbyBwcsOzcHJpYSBJYk1hY3JvQkguIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTBweCIsIGNvbG9yID0gIiM3Nzc3NzciKQ0KICApDQpgYGANCg0KQ29tbyBvYnNlcnZhZG8gbm8gZ3LDoWZpY28gMjMsIG8gTlVDSSAobGluaGEgYXp1bCBjbGFyYSkgbWFudMOpbS1zZSBlbSBwYXRhbWFyZXMgcmVsYXRpdmFtZW50ZSBlbGV2YWRvcyBhbyBsb25nbyBkZSB0b2RvIG8gcGVyw61vZG8sIG8gcXVlIGluZGljYSBiYWl4YSBvY2lvc2lkYWRlIG5hIGluZMO6c3RyaWEuIEVzc2UgY29tcG9ydGFtZW50byBwb2RlIHBhcmVjZXIgcG9zaXRpdm8gw6AgcHJpbWVpcmEgdmlzdGEsIG1hcyBkZXZlIHNlciBsaWRvIGNvbSBjYXV0ZWxhOiB1bWEgaW5kw7pzdHJpYSBvcGVyYW5kbyBwcsOzeGltYSBkbyBzZXUgbGltaXRlIGRlIGNhcGFjaWRhZGUgcG9kZSBnZXJhciBwcmVzc8OjbyBkZSBwcmXDp29zIHBlbG8gbGFkbyBkYSBkZW1hbmRhLCBkYWRvIHF1ZSBxdWFscXVlciBhdW1lbnRvIGRvIGNvbnN1bW8gZW5jb250cmEgZGlmaWN1bGRhZGVzIGRlIHNlciBhYnNvcnZpZG8gcGVsYSBwcm9kdcOnw6NvIGNvcnJlbnRlLiBFbSBvdXRyYXMgcGFsYXZyYXMsIG8gTlVDSSBlbGV2YWRvIG7Do28gc2lnbmlmaWNhLCBhdXRvbWF0aWNhbWVudGUsIHVtYSBpbmTDunN0cmlhIGVtIGV4cGFuc8OjbyAtIHNpZ25pZmljYSBhcGVuYXMgcXVlIG7Do28gaMOhIGZvbGdhIHByb2R1dGl2YSBwYXJhIGFic29ydmVyIGNob3F1ZXMgZGUgZGVtYW5kYS4NCg0KTyBJQ0UgKGxpbmhhIGFtYXJlbGEpLCBxdWUgbWVkZSBhIGNvbmZpYW7Dp2EgZW1wcmVzYXJpYWwsIHNlZ3VlIGVtIG7DrXZlaXMgZnJhY29zLCBwcmluY2lwYWxtZW50ZSBubyBxdWUgZGl6IHJlc3BlaXRvIMOgcyBleHBlY3RhdGl2YXMgZnV0dXJhcyBkb3MgZW1wcmVzw6FyaW9zLiBFc3NlIGNvbXBvcnRhbWVudG8gw6kgbWFjcm9lY29ub21pY2FtZW50ZSByZWxldmFudGUgcG9ycXVlIGEgY29uZmlhbsOnYSBlbXByZXNhcmlhbCDDqSB1bSBkb3MgcHJpbmNpcGFpcyBkZXRlcm1pbmFudGVzIGRhcyBkZWNpc8O1ZXMgZGUgaW52ZXN0aW1lbnRvIGUgY29udHJhdGHDp8Ojby4gUXVhbmRvIG9zIGVtcHJlc8OhcmlvcyBuw6NvIGVueGVyZ2FtIHVtIGhvcml6b250ZSBjbGFybyBkZSBleHBhbnPDo28gZGEgZGVtYW5kYSwgZWxlcyB0ZW5kZW0gYSBwb3N0ZXJnYXIgcHJvamV0b3MsIGxpbWl0YXIgYSBleHBhbnPDo28gZGEgcHJvZHXDp8OjbyBlIG1hbnRlciBxdWFkcm9zIGRlIHBlc3NvYWwgbWFpcyBlbnh1dG9zIC0gcmVmb3LDp2FuZG8sIG5hIHByw6F0aWNhLCBhIGZyYWdpbGlkYWRlIGRvIGludmVzdGltZW50byBqw6Egb2JzZXJ2YWRhIGFudGVyaW9ybWVudGUuDQoNCk8gSUNDIChsaW5oYSBhenVsIGVzY3VyYSksIHBvciBzdWEgdmV6LCBhcHJlc2VudGEgdHJhamV0w7NyaWEgZGUgcmVjdXBlcmHDp8OjbyBhbyBsb25nbyBkbyBwZXLDrW9kby4gTyBtb3ZpbWVudG8gw6kgY29uc2lzdGVudGUgY29tIGEgbWVsaG9yYSBkbyBtZXJjYWRvIGRlIHRyYWJhbGhvIGRpc2N1dGlkYSBlbSAzLjIsIHF1ZSBhbXBsaW91IHRhbnRvIGEgb2N1cGHDp8OjbyBxdWFudG8gYSByZW5kYSBkYXMgZmFtw61saWFzLiBBcGVzYXIgZGVzc2EgcmVjdXBlcmHDp8OjbywgY29udHVkbywgbyDDrW5kaWNlIHBlcm1hbmVjZSBhYmFpeG8gZGUgMTAwIHBvbnRvcyAtIHBhdGFtYXIgY29uc2lkZXJhZG8gbmV1dHJvIC0sIHNpbmFsaXphbmRvIHF1ZSBvIGNvbnN1bWlkb3IgYnJhc2lsZWlybyBzZWd1ZSBjYXV0ZWxvc28gcXVhbnRvIMOgcyBwZXJzcGVjdGl2YXMgZnV0dXJhcywgbWVzbW8gZGlhbnRlIGRlIHVtYSBzaXR1YcOnw6NvIGNvcnJlbnRlIG1haXMgZmF2b3LDoXZlbC4NCg0KQSBsZWl0dXJhIGNvbmp1bnRhIGRvcyB0csOqcyBpbmRpY2Fkb3JlcyByZXZlbGEgdW1hIGNvbnRyYWRpw6fDo28gaW1wb3J0YW50ZSBkbyBjaWNsbyBhdHVhbDogYSBlY29ub21pYSBtb3N0cmEgcmVzaWxpw6puY2lhIG5vIHByZXNlbnRlLCByZWZsZXRpZGEgbmEgdXRpbGl6YcOnw6NvIGRhIGNhcGFjaWRhZGUgaW5zdGFsYWRhIGUgbmEgbWVsaG9yYSBkbyBjb25zdW1vLCBtYXMgb3BlcmEgY29tIGJhaXhhIGNvbmZpYW7Dp2EgZW0gcmVsYcOnw6NvIGFvIGZ1dHVyby4gRXNzZSBkZXNjb21wYXNzbyBlbnRyZSBvIGRlc2VtcGVuaG8gY29ycmVudGUgZSBhcyBleHBlY3RhdGl2YXMgZnV0dXJhcyBpbXDDtWUgdW0gbGltaXRlIGFkaWNpb25hbCBhbyBjcmVzY2ltZW50bywgcG9pcyByZWR1eiBvcyBpbmNlbnRpdm9zIHBhcmEgcXVlIGVtcHJlc2FzIGFtcGxpZW0gc2V1cyBpbnZlc3RpbWVudG9zIGUgcGFyYSBxdWUgZmFtw61saWFzIGF1bWVudGVtIG8gY29uc3VtbyBkZSBiZW5zIGR1csOhdmVpcyAtIHBlcnBldHVhbmRvLCBhc3NpbSwgYXMgZnJhZ2lsaWRhZGVzIGVzdHJ1dHVyYWlzIGrDoSBpZGVudGlmaWNhZGFzIGFvIGxvbmdvIGRlc3RhIHNlw6fDo28uDQoNCiMjIDMuNCBTaXR1YcOnw6NvIGZpc2NhbCBlIGTDrXZpZGEgcMO6YmxpY2ENCg0KQXR1YWxtZW50ZSwgbsOjbyDDqSBwb3Nzw612ZWwgYW5hbGlzYXIgYSBzaXR1YcOnw6NvIGVjb27DtG1pY2EgYnJhc2lsZWlyYSBzZW0gcGFzc2FyIHBlbGEgcXVlc3TDo28gZGEgZMOtdmlkYSBww7pibGljYS4gTyBlbmRpdmlkYW1lbnRvIGRvIGdvdmVybm8gZ2VyYWwgZW5jb250cmEtc2UgZW0gdW0gcGF0YW1hciBlbGV2YWRvLCBwcsOzeGltbyBkZSA4MCUgZG8gUElCLCBlIGEgdHJhamV0w7NyaWEgZG9zIGluZGljYWRvcmVzIGZpc2NhaXMgbm9zIMO6bHRpbW9zIGFub3MgcmVmb3LDp2EgYSBwcmVvY3VwYcOnw6NvIGNvbSBhIHN1c3RlbnRhYmlsaWRhZGUgZGFzIGNvbnRhcyBww7pibGljYXMuIE8gZ3LDoWZpY28gMjQgYXByZXNlbnRhIGEgZXZvbHXDp8OjbyBkYSBOZWNlc3NpZGFkZSBkZSBGaW5hbmNpYW1lbnRvIGRvIFNldG9yIFDDumJsaWNvIChORlNQKSBlIGRhIETDrXZpZGEgQnJ1dGEgZG8gR292ZXJubyBHZXJhbCBlbnRyZSAyMDIwIGUgMjAyNS4gDQoNCioqR3LDoWZpY28gMjQ6KioNCg0KYGBge3IsIGVjaG89RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9DQpsaWJyYXJ5KEdldEJDQkRhdGEpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpsaWJyYXJ5KGhpZ2hjaGFydGVyKQ0KDQpkYXRhX2luaWNpbyA8LSBhcy5EYXRlKCIyMDIwLTA3LTAxIikNCmRhdGFfZmltIDwtIGFzLkRhdGUoIjIwMjUtMTItMzEiKQ0KDQpyZXN1bHRhZG9fcHJpbWFyaW8gPC0gZ2JjYmRfZ2V0X3NlcmllcygNCiAgaWQgPSBjKCJyZXN1bHRhZG9fcHJpbWFyaW8iID0gNTc5MyksDQogIGZpcnN0LmRhdGUgPSBkYXRhX2luaWNpbywNCiAgbGFzdC5kYXRlID0gZGF0YV9maW0sDQogIGZvcm1hdC5kYXRhID0gIndpZGUiDQopICU+JQ0KICBtdXRhdGUoRGF0YSA9IGFzLkRhdGUocmVmLmRhdGUpKQ0KDQpkaXZpZGFfYnJ1dGEgPC0gZ2JjYmRfZ2V0X3NlcmllcygNCiAgaWQgPSBjKCJkaXZpZGFfYnJ1dGEiID0gMTM3NjIpLA0KICBmaXJzdC5kYXRlID0gZGF0YV9pbmljaW8sDQogIGxhc3QuZGF0ZSA9IGRhdGFfZmltLA0KICBmb3JtYXQuZGF0YSA9ICJ3aWRlIg0KKSAlPiUNCiAgbXV0YXRlKERhdGEgPSBhcy5EYXRlKHJlZi5kYXRlKSkNCg0KZGFkb3MgPC0gcmVzdWx0YWRvX3ByaW1hcmlvICU+JQ0KICBzZWxlY3QoRGF0YSwgcmVzdWx0YWRvX3ByaW1hcmlvKSAlPiUNCiAgZnVsbF9qb2luKA0KICAgIGRpdmlkYV9icnV0YSAlPiUgc2VsZWN0KERhdGEsIGRpdmlkYV9icnV0YSksDQogICAgYnkgPSAiRGF0YSINCiAgKSAlPiUNCiAgYXJyYW5nZShEYXRhKSAlPiUNCiAgbmEub21pdCgpICU+JQ0KICBtdXRhdGUodGltZXN0YW1wID0gYXMubnVtZXJpYyhhcy5QT1NJWGN0KERhdGEsIHR6ID0gIlVUQyIpKSAqIDEwMDApDQoNCmdyYWZpY28gPC0gaGlnaGNoYXJ0KHR5cGUgPSAic3RvY2siKSAlPiUNCiAgaGNfY2hhcnQoDQogICAgYmFja2dyb3VuZENvbG9yID0gIiNGRkZGRkYiLA0KICAgIHNwYWNpbmdUb3AgPSAyMCwgc3BhY2luZ1JpZ2h0ID0gMjAsDQogICAgc3BhY2luZ0JvdHRvbSA9IDIwLCBzcGFjaW5nTGVmdCA9IDIwDQogICkgJT4lDQogIGhjX2FkZF9zZXJpZXMoDQogICAgZGF0YSA9IGxhcHBseShzZXFfbGVuKG5yb3coZGFkb3MpKSwgZnVuY3Rpb24oaSkgbGlzdChkYWRvcyR0aW1lc3RhbXBbaV0sIGRhZG9zJHJlc3VsdGFkb19wcmltYXJpb1tpXSkpLA0KICAgIHR5cGUgPSAiY29sdW1uIiwNCiAgICBuYW1lID0gIk5GU1AiLA0KICAgIGNvbG9yID0gIiNGRUIwMTUiLA0KICAgIGJvcmRlckNvbG9yID0gIiNGRUIwMTUiLA0KICAgIHBvaW50UGFkZGluZyA9IDAuMDgsDQogICAgZ3JvdXBQYWRkaW5nID0gMC4xMCwNCiAgICB5QXhpcyA9IDAsDQogICAgdG9vbHRpcCA9IGxpc3QodmFsdWVEZWNpbWFscyA9IDIsIHZhbHVlU3VmZml4ID0gIiBwLnAuIikNCiAgKSAlPiUNCiAgaGNfYWRkX3NlcmllcygNCiAgICBkYXRhID0gbGFwcGx5KHNlcV9sZW4obnJvdyhkYWRvcykpLCBmdW5jdGlvbihpKSBsaXN0KGRhZG9zJHRpbWVzdGFtcFtpXSwgZGFkb3MkZGl2aWRhX2JydXRhW2ldKSksDQogICAgdHlwZSA9ICJsaW5lIiwNCiAgICBuYW1lID0gIkTDrXZpZGEgQnJ1dGEgKCUgZG8gUElCKSIsDQogICAgY29sb3IgPSAiIzAyMDIzQyIsDQogICAgbGluZVdpZHRoID0gMywNCiAgICBtYXJrZXIgPSBsaXN0KGVuYWJsZWQgPSBGQUxTRSksDQogICAgeUF4aXMgPSAxLA0KICAgIHRvb2x0aXAgPSBsaXN0KHZhbHVlRGVjaW1hbHMgPSAyLCB2YWx1ZVN1ZmZpeCA9ICIlIikNCiAgKSAlPiUNCiAgaGNfeUF4aXNfbXVsdGlwbGVzKA0KICAgIGxpc3QoDQogICAgICB0aXRsZSA9IGxpc3QoDQogICAgICAgIHRleHQgPSAiTkZTUCAtIFJlc3VsdGFkbyBQcmltw6FyaW8gKCUgZG8gUElCKSIsDQogICAgICAgIHN0eWxlID0gbGlzdChjb2xvciA9ICIjNDQ0NDQ0IiwgZm9udFNpemUgPSAiMTJweCIpDQogICAgICApLA0KICAgICAgb3Bwb3NpdGUgPSBGQUxTRSwNCiAgICAgIGdyaWRMaW5lQ29sb3IgPSAiI0U2RTZFNiIsDQogICAgICBncmlkTGluZVdpZHRoID0gMSwNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSksDQogICAgICBwbG90TGluZXMgPSBsaXN0KA0KICAgICAgICBsaXN0KA0KICAgICAgICAgIHZhbHVlID0gMCwNCiAgICAgICAgICB3aWR0aCA9IDEuNSwNCiAgICAgICAgICBjb2xvciA9ICIjOUU5RTlFIiwNCiAgICAgICAgICBkYXNoU3R5bGUgPSAiU2hvcnREYXNoIiwNCiAgICAgICAgICB6SW5kZXggPSA1DQogICAgICAgICkNCiAgICAgICkNCiAgICApLA0KICAgIGxpc3QoDQogICAgICB0aXRsZSA9IGxpc3QoDQogICAgICAgIHRleHQgPSAiRMOtdmlkYSBCcnV0YSAoJSBkbyBQSUIpIiwNCiAgICAgICAgc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiLCBmb250U2l6ZSA9ICIxMnB4IikNCiAgICAgICksDQogICAgICBvcHBvc2l0ZSA9IFRSVUUsDQogICAgICBncmlkTGluZVdpZHRoID0gMCwNCiAgICAgIGxhYmVscyA9IGxpc3Qoc3R5bGUgPSBsaXN0KGNvbG9yID0gIiM0NDQ0NDQiKSkNCiAgICApDQogICkgJT4lDQogIGhjX3hBeGlzKA0KICAgIGxpbmVDb2xvciA9ICIjRDlEOUQ5IiwNCiAgICB0aWNrQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgbGFiZWxzID0gbGlzdChzdHlsZSA9IGxpc3QoY29sb3IgPSAiIzQ0NDQ0NCIpKQ0KICApICU+JQ0KICBoY19wbG90T3B0aW9ucygNCiAgICBzZXJpZXMgPSBsaXN0KA0KICAgICAgYW5pbWF0aW9uID0gRkFMU0UsDQogICAgICBzdGF0ZXMgPSBsaXN0KGluYWN0aXZlID0gbGlzdChvcGFjaXR5ID0gMSkpDQogICAgKSwNCiAgICBjb2x1bW4gPSBsaXN0KGJvcmRlcldpZHRoID0gMCkNCiAgKSAlPiUNCiAgaGNfdGl0bGUoDQogICAgdGV4dCA9ICJOZWNlc3NpZGFkZSBkZSBGaW5hbmNpYW1lbnRvIGRvIFNldG9yIFDDumJsaWNvIGUgRMOtdmlkYSBCcnV0YSBkbyBHb3Zlcm5vIEdlcmFsIiwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMjBweCIsIGZvbnRXZWlnaHQgPSAiYm9sZCIsIGNvbG9yID0gIiMxMTExMTEiKQ0KICApICU+JQ0KICBoY19zdWJ0aXRsZSgNCiAgICB0ZXh0ID0gIkV2b2x1w6fDo28gZGEgTkZTUCBlIGRvIGVuZGl2aWRhbWVudG8gcMO6YmxpY28gbm8gQnJhc2lsICgyMDIw4oCTMjAyNSkiLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxM3B4IiwgY29sb3IgPSAiIzY2NjY2NiIpDQogICkgJT4lDQogIGhjX3Rvb2x0aXAoDQogICAgc2hhcmVkID0gVFJVRSwNCiAgICBjcm9zc2hhaXJzID0gVFJVRSwNCiAgICBiYWNrZ3JvdW5kQ29sb3IgPSAiI0ZGRkZGRiIsDQogICAgYm9yZGVyQ29sb3IgPSAiI0Q5RDlEOSIsDQogICAgYm9yZGVyUmFkaXVzID0gOCwNCiAgICBzaGFkb3cgPSBGQUxTRSwNCiAgICBzdHlsZSA9IGxpc3QoZm9udFNpemUgPSAiMTJweCIpDQogICkgJT4lDQogIGhjX2xlZ2VuZCgNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICBhbGlnbiA9ICJjZW50ZXIiLA0KICAgIHZlcnRpY2FsQWxpZ24gPSAiYm90dG9tIiwNCiAgICBsYXlvdXQgPSAiaG9yaXpvbnRhbCIsDQogICAgaXRlbVN0eWxlID0gbGlzdCgNCiAgICAgIGNvbG9yID0gIiMyMjIyMjIiLA0KICAgICAgZm9udFdlaWdodCA9ICJub3JtYWwiLA0KICAgICAgZm9udFNpemUgPSAiMTJweCINCiAgICApDQogICkgJT4lDQogIGhjX3JhbmdlU2VsZWN0b3IoDQogICAgZW5hYmxlZCA9IFRSVUUsDQogICAgaW5wdXRFbmFibGVkID0gRkFMU0UsDQogICAgc2VsZWN0ZWQgPSA0LA0KICAgIGJ1dHRvbnMgPSBsaXN0KA0KICAgICAgbGlzdCh0eXBlID0gInllYXIiLCBjb3VudCA9IDEsIHRleHQgPSAiMUEiKSwNCiAgICAgIGxpc3QodHlwZSA9ICJ5ZWFyIiwgY291bnQgPSAyLCB0ZXh0ID0gIjJBIiksDQogICAgICBsaXN0KHR5cGUgPSAieWVhciIsIGNvdW50ID0gMywgdGV4dCA9ICIzQSIpLA0KICAgICAgbGlzdCh0eXBlID0gImFsbCIsIHRleHQgPSAiVHVkbyIpDQogICAgKQ0KICApICU+JQ0KICBoY19uYXZpZ2F0b3IoZW5hYmxlZCA9IFRSVUUpICU+JQ0KICBoY19zY3JvbGxiYXIoZW5hYmxlZCA9IEZBTFNFKSAlPiUNCiAgaGNfY3JlZGl0cygNCiAgICBlbmFibGVkID0gVFJVRSwNCiAgICB0ZXh0ID0gIkZvbnRlOiBCYW5jbyBDZW50cmFsIGRvIEJyYXNpbC4gRWxhYm9yYcOnw6NvIHByw7NwcmlhIEliTWFjcm9CSC4iLA0KICAgIHN0eWxlID0gbGlzdChmb250U2l6ZSA9ICIxMHB4IiwgY29sb3IgPSAiIzc3Nzc3NyIpDQogICkNCg0KZ3JhZmljbw0KYGBgDQoNCkNvbW8gb2JzZXJ2YWRvIG5vIGdyw6FmaWNvIDI0LCBhcyBiYXJyYXMgYW1hcmVsYXMgcmVwcmVzZW50YW0gYSBORlNQIC0gc2VuZG8gcXVlIHZhbG9yZXMgcG9zaXRpdm9zIGNvcnJlc3BvbmRlbSBhIGTDqWZpY2l0cyBwcmltw6FyaW9zIGRvIGdvdmVybm8sIGUgdmFsb3JlcyBuZWdhdGl2b3MgYSBzdXBlcsOhdml0cy4gQSBsaW5oYSBhenVsIGVzY3VyYSwgcG9yIHN1YSB2ZXosIG1vc3RyYSBhIGV2b2x1w6fDo28gZGEgZMOtdmlkYSBicnV0YSBkbyBnb3Zlcm5vIGdlcmFsIGNvbW8gcGVyY2VudHVhbCBkbyBQSUIuIERlc2RlIGp1bGhvIGRlIDIwMjMsIG8gQnJhc2lsIHRlbSByZWdpc3RyYWRvIGTDqWZpY2l0cyBwcmltw6FyaW9zIHByYXRpY2FtZW50ZSBjb250w61udW9zLCBvIHF1ZSBzaWduaWZpY2EgcXVlIGFzIHJlY2VpdGFzIGRvIGdvdmVybm8gbsOjbyB0w6ptIHNpZG8gc3VmaWNpZW50ZXMgcGFyYSBjb2JyaXIgc2V1cyBnYXN0b3MgY29ycmVudGVzLCBleGNsdcOtZG9zIG9zIGp1cm9zIGRhIGTDrXZpZGEuIEVudHJlIG5vdmVtYnJvIGUgZGV6ZW1icm8gZGUgMjAyNCwgb2JzZXJ2YS1zZSB1bWEgcmVkdcOnw6NvIGRvIHRhbWFuaG8gZGVzc2VzIGTDqWZpY2l0cywgZSBhbyBsb25nbyBkZSAyMDI1IG9zIGTDqWZpY2l0cyB0w6ptIHNlIG1hbnRpZG8gZW0gbsOtdmVpcyBtYWlzIGJhaXhvcy4gQWluZGEgYXNzaW0sIGEgc2l0dWHDp8OjbyBmaXNjYWwgYnJhc2lsZWlyYSBwZXJtYW5lY2UgcHJlb2N1cGFudGUuDQoNCkEgcmVkdcOnw6NvIGRvIGTDqWZpY2l0IMOpLCBzZW0gZMO6dmlkYSwgdW0gbW92aW1lbnRvIHBvc2l0aXZvLiBObyBlbnRhbnRvLCDDqSBpbXBvcnRhbnRlIG5vdGFyIHF1ZSBhIGTDrXZpZGEgcMO6YmxpY2EgYnJhc2lsZWlyYSBqw6Egc2UgZW5jb250cmEgZW0gcGF0YW1hciBlbGV2YWRvIC0gY2hlZ2FuZG8gZW0gcXVhc2UgODAlIGRvIFBJQiBjb21vIHBvZGUgc2VyIHZpc3RvIG5hIGxpbmhhIGF6dWwgLSwgZSBpc3NvIGZheiBjb20gcXVlIGVsYSBhcHJlc2VudGUgdW1hIGRpbsOibWljYSBkZSBjcmVzY2ltZW50byBwcmF0aWNhbWVudGUgYXV0w7Rub21hLiBNZXNtbyBxdWUgbyBnb3Zlcm5vIGNvbnNlZ3Vpc3NlIHplcmFyIGNvbXBsZXRhbWVudGUgc2V1cyBnYXN0b3MgZGlzY3JpY2lvbsOhcmlvcywgYSBkw612aWRhIGNvbnRpbnVhcmlhIGEgY3Jlc2NlciwgaW1wdWxzaW9uYWRhIHBlbGEgY29tYmluYcOnw6NvIGVudHJlIHVtIGNyZXNjaW1lbnRvIGVjb27DtG1pY28gYmFpeG8gZSBqdXJvcyBlc3RydXR1cmFsbWVudGUgZWxldmFkb3MuIEVtIG91dHJhcyBwYWxhdnJhcywgbyByZXN1bHRhZG8gcHJpbcOhcmlvIGRlaXhhIGRlIHNlciBzdWZpY2llbnRlLCBpc29sYWRhbWVudGUsIHBhcmEgZXN0YWJpbGl6YXIgYSB0cmFqZXTDs3JpYSBkYSBkw612aWRhIHF1YW5kbyBvIGRpZmVyZW5jaWFsIGVudHJlIGEgdGF4YSBkZSBqdXJvcyBlIGEgdGF4YSBkZSBjcmVzY2ltZW50byBkYSBlY29ub21pYSDDqSBhbXBsbyBlIHBlcnNpc3RlbnRlLg0KDQpFc3NlIHF1YWRybyBmaXNjYWwgcHJlY2lzYSBzZXIgbGlkbyBlbSBjb25qdW50byBjb20gb3MgaW5kaWNhZG9yZXMgZGlzY3V0aWRvcyBuYXMgc2XDp8O1ZXMgYW50ZXJpb3Jlcy4gQSBlY29ub21pYSBicmFzaWxlaXJhIGVuY29udHJhLXNlIGVtIHVtYSBzaXR1YcOnw6NvIG5hIHF1YWwgYSBlc3RydXR1cmEgcHJvZHV0aXZhIG7Do28gc2UgdHJhbnNmb3Jtb3UsIG8gaW52ZXN0aW1lbnRvIHBlcm1hbmVjZSBpbnN0w6F2ZWwsIG8gbWVyY2FkbyBkZSB0cmFiYWxobyBlc3TDoSBhcXVlY2lkbyBzZW0gcmVzZXJ2YXMgZGUgbcOjbyBkZSBvYnJhIGRpc3BvbsOtdmVsLCBlIGEgcHJvZHV0aXZpZGFkZSBzZWd1ZSBlbSB0cmFqZXTDs3JpYSBkZSBxdWVkYS4gRXNzZSBjb25qdW50byBkZSBmcmFnaWxpZGFkZXMgZXN0cnV0dXJhaXMgbGltaXRhIGEgY2FwYWNpZGFkZSBkZSBjcmVzY2ltZW50byBkbyBwYcOtcyBubyBsb25nbyBwcmF6byAtIGUsIGp1c3RhbWVudGUgcG9yIGlzc28sIHJldHJvYWxpbWVudGEgYSBkZXRlcmlvcmHDp8OjbyBmaXNjYWw6IHNlbSBjcmVzY2ltZW50byByb2J1c3RvLCBhIHJlbGHDp8OjbyBkw612aWRhL1BJQiB0ZW5kZSBhIHNlIGVsZXZhciBtZXNtbyBuYSBhdXPDqm5jaWEgZGUgbm92b3MgZMOpZmljaXRzIGV4cHJlc3Npdm9zLiANCg0KTyByZXN1bHRhZG8gw6kgdW0gY2Vuw6FyaW8gZW0gcXVlIGFzIGNvbnRhcyBww7pibGljYXMgc2UgZGV0ZXJpb3JhbSBuw6NvIGFwZW5hcyBwZWxvIGxhZG8gZG8gZ2FzdG8sIG1hcyB0YW1iw6ltIHBlbGEgcHLDs3ByaWEgZnJhZ2lsaWRhZGUgZXN0cnV0dXJhbCBkYSBlY29ub21pYSBicmFzaWxlaXJhIGVtIGdlcmFyIGNyZXNjaW1lbnRvIHN1c3RlbnRhZG8uDQoNCiMjIENvbmNsdXPDo28NCkEgYW7DoWxpc2UgaGlzdMOzcmljYSBkb3MgY2ljbG9zIGVjb27DtG1pY29zIGJyYXNpbGVpcm9zIHNlIG1vc3RyYSBmdW5kYW1lbnRhbCBwYXJhIGEgY29tcHJlZW5zw6NvIGRvIG1vbWVudG8gYXR1YWwgZGEgZWNvbm9taWEuIEFvIGxvbmdvIGRlc3RlIHJlbGF0w7NyaW8sIGZvcmFtIGV4YW1pbmFkb3MgbyBjaWNsbyBkZSBleHBhbnPDo28gZGUgMjAwOOKAkzIwMTQsIGEgcmVjZXNzw6NvIGRlIDIwMTTigJMyMDE2IGUgYSBmYXNlIGluaWNpYWRhIGFww7NzIG8gc2VndW5kbyB0cmltZXN0cmUgZGUgMjAyMCwgYnVzY2FuZG8gaWRlbnRpZmljYXIgbsOjbyBhcGVuYXMgb3MgbW92aW1lbnRvcyBkZSBjYWRhIHBlcsOtb2RvLCBtYXMsIHNvYnJldHVkbywgb3MgcGFkcsO1ZXMgZXN0cnV0dXJhaXMgcXVlIHNlIHJlcGV0ZW0gYW8gbG9uZ28gZG8gdGVtcG8uIEVzc2EgYWJvcmRhZ2VtIHBlcm1pdGUgb2JzZXJ2YXIgcXVlIG11aXRhcyBkYXMgZnJhZ2lsaWRhZGVzIGlkZW50aWZpY2FkYXMgbmEgZWNvbm9taWEgYnJhc2lsZWlyYSBhdHVhbCB0w6ptIHJhw616ZXMgZW0gY2ljbG9zIGFudGVyaW9yZXMsIGUgcXVlIHN1YSBwZXJzaXN0w6puY2lhIGltcMO1ZSBsaW1pdGVzIGltcG9ydGFudGVzIGFvIGNyZXNjaW1lbnRvIGRlIGxvbmdvIHByYXpvLg0KDQpBIHNpdHVhw6fDo28gYXR1YWwgZGEgZWNvbm9taWEgYnJhc2lsZWlyYSDDqSBwcmVvY3VwYW50ZS4gTyBjcmVzY2ltZW50byBwZXJtYW5lY2UgZW0gcml0bW8gYmFpeG8sIGEgaW5kw7pzdHJpYSBvcGVyYSBwcsOzeGltYSBkbyBsaW1pdGUgZGEgY2FwYWNpZGFkZSBpbnN0YWxhZGEsIG8gbWVyY2FkbyBkZSB0cmFiYWxobyBlbmNvbnRyYS1zZSBhcXVlY2lkbywgY29tIHRheGFzIGRlIGRlc29jdXBhw6fDo28gZSBzdWJ1dGlsaXphw6fDo28gZW0gbsOtdmVpcyBtw61uaW1vcywgZSBhIHByb2R1dGl2aWRhZGUgdG90YWwgZG9zIGZhdG9yZXMgc2VndWUgZW0gdHJhamV0w7NyaWEgZGUgcXVlZGEuIEVzc2UgY29uanVudG8gZGUgaW5kaWNhZG9yZXMgYXBvbnRhIHBhcmEgdW1hIGVjb25vbWlhIHF1ZSwgZW1ib3JhIGFwcmVzZW50ZSByZXNpbGnDqm5jaWEgbm8gY3VydG8gcHJhem8sIGVuY29udHJhLXNlIGVzdGFnbmFkYSBlbSB0ZXJtb3MgZXN0cnV0dXJhaXMg4oCUIGNvbSBwb3VjYSBmb2xnYSBkZSBjYXBhY2lkYWRlIHByb2R1dGl2YSwgc2VtIGdhbmhvcyBjb25zaXN0ZW50ZXMgZGUgZWZpY2nDqm5jaWEgZSBjb20gZnJhZ2lsaWRhZGVzIGZpc2NhaXMgcGVyc2lzdGVudGVzLiBPIEJyYXNpbCBwcmVjaXNhLCBwb3J0YW50bywgZW5jb250cmFyIG1lY2FuaXNtb3MgcGFyYSBjcmVzY2VyIGRlIGZvcm1hIHN1c3RlbnTDoXZlbCwgbyBxdWUgZXhpZ2UsIG5lY2Vzc2FyaWFtZW50ZSwgdW1hIHBlcnNwZWN0aXZhIGRlIGxvbmdvIHByYXpvIHZvbHRhZGEgYW8gYXVtZW50byBkYSBwcm9kdXRpdmlkYWRlLCDDoCB0cmFuc2Zvcm1hw6fDo28gZXN0cnV0dXJhbCBkYSBlY29ub21pYSBlIMOgIGFtcGxpYcOnw6NvIGRvIGludmVzdGltZW50byBwcm9kdXRpdm8uDQoNClF1YW50byDDoCBmYXNlIGVtIHF1ZSBhIGVjb25vbWlhIGJyYXNpbGVpcmEgZWZldGl2YW1lbnRlIHNlIGVuY29udHJhLCBhaW5kYSBuw6NvIGjDoSBkZWZpbmnDp8OjbyBvZmljaWFsLiBPIMO6bHRpbW8gY2ljbG8gZGF0YWRvIHBlbG8gQ09EQUNFIGZvaSBlbmNlcnJhZG8gbm8gc2VndW5kbyB0cmltZXN0cmUgZGUgMjAyMCBlLCBhdMOpIG8gbW9tZW50byBkYSBwdWJsaWNhw6fDo28gZGVzdGUgcmVsYXTDs3JpbywgZW0gbWFpbyBkZSAyMDI2LCBuw6NvIGhvdXZlIGRpdnVsZ2HDp8OjbyBkZSBub3ZhcyBkYXRhcyAtIGRlIG1vZG8gcXVlIG7Do28gw6kgcG9zc8OtdmVsIGFmaXJtYXIgZm9ybWFsbWVudGUgc2UgbyBwYcOtcyBzZWd1ZSBlbSBleHBhbnPDo28gb3Ugc2UgasOhIHRyYW5zaXRvdSBwYXJhIHVtYSBub3ZhIGZhc2UgcmVjZXNzaXZhLiBJbmRlcGVuZGVudGVtZW50ZSBkYSBkYXRhw6fDo28sIGNvbnR1ZG8sIG8gcG9udG8gY2VudHJhbCBkYSBhbsOhbGlzZSBwZXJtYW5lY2UgbyBtZXNtby4gU2UgbyBCcmFzaWwgYWluZGEgc2UgZW5jb250cmEgZW0gZXhwYW5zw6NvLCBhcyBmcmFnaWxpZGFkZXMgb2JzZXJ2YWRhcyBzw6NvIGV4YXRhbWVudGUgYXMgbWVzbWFzIHF1ZSBwcmVjZWRlcmFtIGEgcmVjZXNzw6NvIGRlIDIwMTTigJMyMDE2OiBiYWl4YSBwcm9kdXRpdmlkYWRlLCBpbnZlc3RpbWVudG8gaW5zdMOhdmVsLCBlc3RydXR1cmEgcHJvZHV0aXZhIHBvdWNvIGFsdGVyYWRhIGUgY29udGFzIHDDumJsaWNhcyBmcmFnaWxpemFkYXMuIFNlIHVtYSBub3ZhIHJlY2Vzc8OjbyBqw6EgZXN0aXZlciBlbSBjdXJzbywgZXNzYXMgbWVzbWFzIGZyYWdpbGlkYWRlcyBlc3TDo28gZW50cmUgc3VhcyBwcmluY2lwYWlzIGNhdXNhcy4NCg0KRW0gcXVhbHF1ZXIgZGFzIGhpcMOzdGVzZXMsIGEgY29uY2x1c8OjbyDDqSBhIG1lc21hLiBPcyBwcm9ibGVtYXMgZXN0cnV0dXJhaXMgcXVlIGxpbWl0YW0gbyBjcmVzY2ltZW50byBkYSBlY29ub21pYSBicmFzaWxlaXJhIG7Do28gc8OjbyBub3ZvczogZm9yYW0gaWRlbnRpZmljYWRvcyBubyBjaWNsbyBkZSBleHBhbnPDo28gZGUgMjAwOOKAkzIwMTQsIGV4cG9zdG9zIGNvbSBuaXRpZGV6IHBlbGEgcmVjZXNzw6NvIGRlIDIwMTTigJMyMDE2IGUgc2VndWVtIHByZXNlbnRlcyBubyBjaWNsbyBhdHVhbC4gRW5xdWFudG8gZXNzYXMgcXVlc3TDtWVzIGVzdHJ1dHVyYWlzIG7Do28gZm9yZW0gZWZldGl2YW1lbnRlIGVuZnJlbnRhZGFzIC0gc29icmV0dWRvIG5vIHF1ZSBkaXogcmVzcGVpdG8gw6AgcHJvZHV0aXZpZGFkZSBlIGFvIGludmVzdGltZW50byBwcm9kdXRpdm8gLSBhIGVjb25vbWlhIGJyYXNpbGVpcmEgdGVuZGUgYSBwZXJtYW5lY2VyIHByZXNhIGVtIGNpY2xvcyBjdXJ0b3MgZGUgY3Jlc2NpbWVudG8gbW9kZXJhZG8gc2VndWlkb3MgcG9yIHJlY2Vzc8O1ZXMgcHJvZnVuZGFzLCBzZW0gY29uc2VndWlyIGNvbnNvbGlkYXIgdW1hIHRyYWpldMOzcmlhIGRlIGV4cGFuc8OjbyBzdXN0ZW50w6F2ZWwgbm8gbG9uZ28gcHJhem8uDQoNCiMjIFJlZmVyw6puY2lhcw0KDQpBQkVMLCBBbmRyZXcgQi47IEJFUk5BTktFLCBCZW4gUy47IENST1VTSE9SRSwgRGVhbi4gTWFjcm9lY29ub21pYS4gNi4gZWQuIFPDo28gUGF1bG86IFBlYXJzb24gQWRkaXNvbiBXZXNsZXksIDIwMDguQUfDik5DSUEgQlJBU0lMLiBGaXRjaCByZWJhaXhhIG5vdGEgZSBCcmFzaWwgcGVyZGUgZ3JhdSBkZSBpbnZlc3RpbWVudG8uIEJyYXPDrWxpYTogRUJDLCAyMDE1LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9hZ2VuY2lhYnJhc2lsLmViYy5jb20uYnIvZWNvbm9taWEvbm90aWNpYS8yMDE1LTEyL2ZpdGNoLXJlYmFpeGEtYnJhc2lsLWUtcGFpcy1wZXJkZS1ncmF1LWRlLWludmVzdGltZW50by4gQWNlc3NvIGVtOiAyNSBtYWlvIDIwMjYuQkFMQVNTSUFOTywgTWFyY2VsLiBSZWNlc3PDo28gYnJhc2lsZWlyYSAoMjAxNC0yMDE2KTogdW1hIGFuw6FsaXNlIHBvciBtZWlvIGRvIG3DqXRvZG8gZG8gY29udHJvbGUgc2ludMOpdGljbyBkbyBQSUIsIFBJQiBwZXIgY2FwaXRhLCB0YXhhIGRlIGludmVzdGltZW50byBlIHRheGEgZGUgZGVzZW1wcmVnby4gQmxvZyBkbyBJQlJFLCAyMDE4LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9ibG9nZG9pYnJlLmZndi5ici9wb3N0cy9yZWNlc3Nhby1icmFzaWxlaXJhLTIwMTQtMjAxNi11bWEtYW5hbGlzZS1wb3ItbWVpby1kby1tZXRvZG8tZG8tY29udHJvbGUtc2ludGV0aWNvLWRvLXBpYi1waWIuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LkJBTkNPIENFTlRSQUwgRE8gQlJBU0lMLiBTaXN0ZW1hIEdlcmVuY2lhZG9yIGRlIFPDqXJpZXMgVGVtcG9yYWlzIChTR1MpOiBzw6lyaWVzIGRlIGNyw6lkaXRvLCBTZWxpYyBlIGluZGljYWRvcmVzIG1vbmV0w6FyaW9zLiBCcmFzw61saWE6IEJDQiwgMjAyNC4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3My5iY2IuZ292LmJyL3Nnc3B1Yi8uIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LkJBUlJFVE8sIEZsw6F2aW8gQXRhbGliYTsgQVZFTElOTywgUGVkcm87IEZSQU7Dh0EsIEpvw6NvIE3DoXJpbyBTYW50b3MgZGUuIE5vdmFzIGV2aWTDqm5jaWFzIHNvYnJlIG8gcGVzbyBkbyBjcsOpZGl0byBuYXMgZmFtw61saWFzIGJyYXNpbGVpcmFzLiBCbG9nIGRvIElCUkUsIDIwMjYuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL2Jsb2dkb2licmUuZmd2LmJyL3Bvc3RzL25vdmFzLWV2aWRlbmNpYXMtc29icmUtby1wZXNvLWRvLWNyZWRpdG8tbmFzLWZhbWlsaWFzLWJyYXNpbGVpcmFzLiBBY2Vzc28gZW06IDI1IG1haW8gMjAyNi5DT01JVMOKIERFIERBVEHDh8ODTyBERSBDSUNMT1MgRUNPTsOUTUlDT1MgKENPREFDRSkuIENyb25vbG9naWEgZGUgQ2ljbG9zIGRhIEVjb25vbWlhIEJyYXNpbGVpcmEuIFJpbyBkZSBKYW5laXJvOiBGR1YgSUJSRSwgMjAyNC4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vcG9ydGFsaWJyZS5mZ3YuYnIvY29kYWNlLWNyb25vbG9naWEuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LkNSSVNFIGVjb27DtG1pY2EgYnJhc2lsZWlyYSBkZSAyMDE0LiBJbjogV0lLSVDDiURJQTogYSBlbmNpY2xvcMOpZGlhIGxpdnJlLiBbUy4gbC5dLCAyMDI1LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9wdC53aWtpcGVkaWEub3JnL3dpa2kvQ3Jpc2VfZWNvbiVDMyVCNG1pY2FfYnJhc2lsZWlyYV9kZV8yMDE0LiBBY2Vzc28gZW06IDI1IG1haW8gMjAyNi5ERVBBUlRBTUVOVE8gSU5URVJTSU5ESUNBTCBERSBFU1RBVMONU1RJQ0EgRSBFU1RVRE9TIFNPQ0lPRUNPTsOUTUlDT1MuIE5vdGEgdMOpY25pY2EgbsK6IDc5OiBwb2zDrXRpY2EgZGUgdmFsb3JpemHDp8OjbyBkbyBzYWzDoXJpbyBtw61uaW1vIOKAlCB2YWxvciBwYXJhIDIwMDkuIFPDo28gUGF1bG86IERJRUVTRSwgMjAwOS4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vd3d3LmRpZWVzZS5vcmcuYnIvbm90YXRlY25pY2EvMjAwOS9ub3RhdGVjNzlTYWxNaW4yMDA5Lmh0bWwuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LkRFUEFSVEFNRU5UTyBJTlRFUlNJTkRJQ0FMIERFIEVTVEFUw41TVElDQSBFIEVTVFVET1MgU09DSU9FQ09Ow5RNSUNPUy4gTm90YSB0w6ljbmljYSBuwrogMTM1OiBhIGV2b2x1w6fDo28gZG8gY3LDqWRpdG8gbmEgZWNvbm9taWEgYnJhc2lsZWlyYSAyMDA44oCTMjAxNC4gU8OjbyBQYXVsbzogRElFRVNFLCAyMDE0LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuZGllZXNlLm9yZy5ici9ub3RhdGVjbmljYS8yMDE0L25vdGFUZWMxMzVDcmVkaXRvLnBkZi4gQWNlc3NvIGVtOiAyNSBtYWlvIDIwMjYuRS1Dw4FMQ1VMT1MuIEhpc3TDs3JpY28gZG8gc2Fsw6FyaW8gbcOtbmltby4gW3MubC46IHMubi4sIHMuZC5dLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuZWNhbGN1bG9zLmNvbS5ici91dGlsaXRhcmlvcy9oaXN0b3JpY28tc2FsYXJpby1taW5pbW8ucGhwLiBBY2Vzc28gZW06IDI1IG1haW8gMjAyNi5GVU5EQcOHw4NPIEdFVFVMSU8gVkFSR0FTLiBJbnN0aXR1dG8gQnJhc2lsZWlybyBkZSBFY29ub21pYSAoRkdWIElCUkUpLiBJbmRpY2Fkb3JlcyB0cmltZXN0cmFpcyBkZSBQVEY6IDTCuiB0cmltZXN0cmUgZGUgMjAyNS4gUmlvIGRlIEphbmVpcm86IEZHViBJQlJFLCAyMDI2LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9pYnJlLmZndi5ici9zaXRlcy9pYnJlLmZndi5ici9maWxlcy9hcnF1aXZvcy91NjUvaW5kaWNhZG9yZXNfdHJpbWVzdHJhaXNfZGVfcHRmXy1fNHQyMDI1LnBkZi4gQWNlc3NvIGVtOiAyNSBtYWlvIDIwMjYuRlVOREHDh8ODTyBHRVRVTElPIFZBUkdBUy4gSW5zdGl0dXRvIEJyYXNpbGVpcm8gZGUgRWNvbm9taWEgKEZHViBJQlJFKS4gT2JzZXJ2YXTDs3JpbyBkYSBQcm9kdXRpdmlkYWRlIFJlZ2lzIEJvbmVsbGkuIFJpbyBkZSBKYW5laXJvOiBGR1YgSUJSRSwgMjAyNC4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vaWJyZS5mZ3YuYnIvb2JzZXJ2YXRvcmlvLXByb2R1dGl2aWRhZGUuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LkZVTkRBw4fDg08gR0VUVUxJTyBWQVJHQVMuIEluc3RpdHV0byBCcmFzaWxlaXJvIGRlIEVjb25vbWlhIChGR1YgSUJSRSkuIFBvcnRhbCBkbyBDaWNsbyBFY29uw7RtaWNvLiBSaW8gZGUgSmFuZWlybzogRkdWIElCUkUsIDIwMjQuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL2NpY2xvLWVjb25vbWljby1pYnJlLmZndi5ici8uIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LkZVTkRBw4fDg08gR0VUVUxJTyBWQVJHQVMuIEluc3RpdHV0byBCcmFzaWxlaXJvIGRlIEVjb25vbWlhIChGR1YgSUJSRSkuIFJlc3VsdGFkb3MgZG9zIGluZGljYWRvcmVzIGRlIHByb2R1dGl2aWRhZGUgZG8gdHJhYmFsaG8gbm8gcXVhcnRvIHRyaW1lc3RyZSBkZSAyMDI1LiBCbG9nIGRvIElCUkUsIDIwMjYuIERpc3BvbsOtdmVsIGVtOiBodHRwczovL2Jsb2dkb2licmUuZmd2LmJyL3Bvc3RzL3Jlc3VsdGFkb3MtZG9zLWluZGljYWRvcmVzLWRlLXByb2R1dGl2aWRhZGUtZG8tdHJhYmFsaG8tbm8tcXVhcnRvLXRyaW1lc3RyZS1kZS0yMDI1LiBBY2Vzc28gZW06IDI1IG1haW8gMjAyNi5GVU5EQcOHw4NPIEdFVFVMSU8gVkFSR0FTLiBJbnN0aXR1dG8gQnJhc2lsZWlybyBkZSBFY29ub21pYSAoRkdWIElCUkUpLiBTb2JyZSBjaWNsb3MgZWNvbsO0bWljb3MuIFJpbyBkZSBKYW5laXJvOiBGR1YgSUJSRSwgMjAyNC4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vcG9ydGFsaWJyZS5mZ3YuYnIvc29icmUtY2ljbG9zLWVjb25vbWljb3MuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LkZVTkRBw4fDg08gR0VUVUxJTyBWQVJHQVMuIEluc3RpdHV0byBCcmFzaWxlaXJvIGRlIEVjb25vbWlhIChGR1YgSUJSRSkuIFNvbmRhZ2Vucywgw41uZGljZXMgZGUgQ29uZmlhbsOnYSBlIEluZGljYWRvcmVzIGRlIEF0aXZpZGFkZS4gUmlvIGRlIEphbmVpcm86IEZHViBJQlJFLCBbMjAyNl0uIERpc3BvbsOtdmVsIGVtOiBodHRwczovL3BvcnRhbGlicmUuZmd2LmJyLiBBY2Vzc28gZW06IDI1IG1haW8gMjAyNi5JTlNUSVRVVE8gQlJBU0lMRUlSTyBERSBHRU9HUkFGSUEgRSBFU1RBVMONU1RJQ0EuIENvbnRhcyBOYWNpb25haXMgVHJpbWVzdHJhaXMuIFJpbyBkZSBKYW5laXJvOiBJQkdFLCAyMDI0LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuaWJnZS5nb3YuYnIvZXN0YXRpc3RpY2FzL2Vjb25vbWljYXMvY29udGFzLW5hY2lvbmFpcy85MzAwLWNvbnRhcy1uYWNpb25haXMtdHJpbWVzdHJhaXMuaHRtbC4gQWNlc3NvIGVtOiAyNSBtYWlvIDIwMjYuSU5TVElUVVRPIEJSQVNJTEVJUk8gREUgR0VPR1JBRklBIEUgRVNUQVTDjVNUSUNBLiBFdm9sdcOnw6NvIGRvIE1lcmNhZG8gZGUgVHJhYmFsaG86IHJldHJvc3BlY3RpdmEgMjAwM+KAkzIwMTQuIFJpbyBkZSBKYW5laXJvOiBJQkdFLCAyMDE1LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9mdHAuaWJnZS5nb3YuYnIvVHJhYmFsaG9fZV9SZW5kaW1lbnRvL1Blc3F1aXNhX01lbnNhbF9kZV9FbXByZWdvL0V2b2x1Y2FvX01lcmNhZG9fVHJhYmFsaG8vcmV0cm9zcGVjdGl2YTIwMDNfMjAxNC5wZGYuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LklOU1RJVFVUTyBCUkFTSUxFSVJPIERFIEdFT0dSQUZJQSBFIEVTVEFUw41TVElDQS4gw41uZGljZSBOYWNpb25hbCBkZSBQcmXDp29zIGFvIENvbnN1bWlkb3IgKElOUEMpLiBSaW8gZGUgSmFuZWlybzogSUJHRSwgWzIwMjZdLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly93d3cuaWJnZS5nb3YuYnIvZXN0YXRpc3RpY2FzL2Vjb25vbWljYXMvcHJlY29zLWUtY3VzdG9zLzkyNTgtaW5kaWNlLW5hY2lvbmFsLWRlLXByZWNvcy1hby1jb25zdW1pZG9yLmh0bWwuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LklOU1RJVFVUTyBCUkFTSUxFSVJPIERFIEdFT0dSQUZJQSBFIEVTVEFUw41TVElDQS4gUGVzcXVpc2EgTWVuc2FsIGRlIEVtcHJlZ28gKFBNRSkuIFJpbyBkZSBKYW5laXJvOiBJQkdFLCBbMjAyNl0uIERpc3BvbsOtdmVsIGVtOiBodHRwczovL3d3dy5pYmdlLmdvdi5ici9lc3RhdGlzdGljYXMvc29jaWFpcy90cmFiYWxoby85MTgwLXBlc3F1aXNhLW1lbnNhbC1kZS1lbXByZWdvLmh0bWwuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LklOU1RJVFVUTyBCUkFTSUxFSVJPIERFIEdFT0dSQUZJQSBFIEVTVEFUw41TVElDQS4gUGVzcXVpc2EgTmFjaW9uYWwgcG9yIEFtb3N0cmEgZGUgRG9taWPDrWxpb3MgQ29udMOtbnVhIChQTkFEIENvbnTDrW51YSkuIFJpbyBkZSBKYW5laXJvOiBJQkdFLCBbMjAyNl0uIERpc3BvbsOtdmVsIGVtOiBodHRwczovL3NpZHJhLmliZ2UuZ292LmJyL1RhYmVsYS8xODQ2LiBBY2Vzc28gZW06IDI1IG1haW8gMjAyNi5JTlNUSVRVVE8gQlJBU0lMRUlSTyBERSBHRU9HUkFGSUEgRSBFU1RBVMONU1RJQ0EuIFNpc3RlbWEgSUJHRSBkZSBSZWN1cGVyYcOnw6NvIEF1dG9tw6F0aWNhIChTSURSQSk6IFRhYmVsYXMgNTkzMiAoQ29udGFzIE5hY2lvbmFpcyBUcmltZXN0cmFpcykgZSA0MDk5IChQTkFEIENvbnTDrW51YSkuIFJpbyBkZSBKYW5laXJvOiBJQkdFLCAyMDI0LiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9zaWRyYS5pYmdlLmdvdi5ici8uIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2LlJBTkRPLCBJbWlyYSBUYWlyYS4gTyBCcmFzaWwgZSBhIGNyaXNlIGZpbmFuY2VpcmE6IHBvbMOtdGljYXMgZWNvbsO0bWljYXMgKDIwMDjigJMyMDE0KS4gVHJhYmFsaG8gZGUgY29uY2x1c8OjbyBkZSBjdXJzbyDigJQgRmFjdWxkYWRlIGRlIENpw6puY2lhcyBlIExldHJhcywgVW5pdmVyc2lkYWRlIEVzdGFkdWFsIFBhdWxpc3RhICJKw7psaW8gZGUgTWVzcXVpdGEgRmlsaG8iLCBDYW1wdXMgZGUgQXJhcmFxdWFyYSwgW3MuZC5dLiBEaXNwb27DrXZlbCBlbTogaHR0cHM6Ly9yZXBvc2l0b3Jpby51bmVzcC5ici9zZXJ2ZXIvYXBpL2NvcmUvYml0c3RyZWFtcy9iZjc4ODE2MS1jNGM4LTRkYjMtOTA1ZS0wNzkxZWM4ZTRlNTUvY29udGVudC4gQWNlc3NvIGVtOiAyNSBtYWlvIDIwMjYuVkVMT1NPLCBGZXJuYW5kbzsgRkVJSsOTLCBKYW5hw61uYTsgQkFSQk9TQSBGSUxITywgRmVybmFuZG8gZGUgSG9sYW5kYTsgUlVIRSwgQW5hIFBhdWxhLiDDjW5kaWNlIGRlIENhcGl0YWwgSHVtYW5vIChJQ0gpIEFudWFsLiBSaW8gZGUgSmFuZWlybzogRkdWIElCUkUsIGp1bi4gMjAyMy4gRGlzcG9uw612ZWwgZW06IGh0dHBzOi8vaWJyZS5mZ3YuYnIvc2l0ZXMvaWJyZS5mZ3YuYnIvZmlsZXMvYXJxdWl2b3MvdTY1L2ljaF9hbnVhbF9maW5hbC5wZGYuIEFjZXNzbyBlbTogMjUgbWFpbyAyMDI2Lg0K