Opções de chunks
A opção echo=FALSE tira o código e só mostra o resultado;
A opção message=FALSE tira os avisos que aparecem no código;
A opção eval=FALSE tira os resultados do código;
A opção include=FALSE tira o chunk do output;
A opção warning=FALSE tira os avisos do outpu;
A opção results=‘hide’ tira os resultados;
A opção results=‘markup’ e results=‘hold’ mostra os resultados igual no
R
A opção results=‘asis’ coloca os resultados com texto escrito;
A opção fig.align alinha a figura a esquerda com ‘left’ ou ‘default’, a
direita com ‘right’ e centraliza com ‘center’;
A opção fig.alt=‘nome da figura’ permite nomear uma figura;
A opção fig.cap=‘Legenda da figura’ permite colocar uma legenda para a
figura;
A opção fig.width permite determinar a largura da figura;
A opção fig.height permite determinar a altura da figura;
A opção out.width=‘300px’ou out.width=’80%’ permite redimensionar a
largura de saída;
A opção collapse=TRUE permite “juntar” todas as saídas de uma chun em um
único bloco;
A opção comment=‘:D’ permite alterar o símbolo que inicia os comentários
dos resultados;
A opção error=TRUE renderiza o arquivo mesmo tendo erros e mostra quais
erros ocorreram no doucumento;
Citações
Para adicionar citações basta colocar no cabeçalho YAML o comando
bibliography: arquivo.bib. O arquivo .bib pode ser feito atravez de um
bloco de notas. Recomendo utilizar o Google Acadêmico para
pegar os códigos de citação BibTex. Lembre de, ao salvar o arquivo de
texto, colocar o nome do arquivo com .bib no final.
---
title: "Guia Markdown"
author: "Jonas"
date: "2024-01-24"
output: html_document
bibliography: bib_teste.bib
link-citations: TRUE
---
Para citar alguma coisa basta colocar
@nomeantesdotítulonoarquivoBibTex.
Olha essa citação: Morettin and Bussab (2017)
Olha essa outra: Xie, Allaire, and Grolemund (2018)
Olha esse :D vrau: Khan et al. (2023)
Olha essa citação: @morettin2017estatistica\
Olha essa outra: @xie2018r\
Olha esse :D vrau: @khan2023sql
Observe que no final do arquivo fica uma citação automática que
facilita de mais nossa vida.
Notas
de rodapé
Quem falou isso foi o tal de joninhas[^.]
[^.]: Esse cabra esquisito sabe fazer um churrasco maneiro
Quem falou isso foi o tal de joninhas
Tabelas
Observe o seguinte código e o que ele gera. É uma forma legal de
fazer uma tabela através de um banco de dados já pronto.
library(palmerpenguins)
knitr::kable(head(penguins, 10), # Pega as 10 primeiras linhas
col.names = c('Espécies', 'Ilha', 'Comprimento do bico', "Profundidade do bico", "Comprimento da nadadeira",
"Massa corporal", "Sexo", "Ano"), caption = "Tabela com kable") |> # Aqui é um vetor com o nome das colunas
kableExtra::kable_styling(full_width = TRUE, # Essa opção faz a tabela pegar toda a extensão do relatório
bootstrap_options = c("striped", "hover", "condensed", "responsive")
# striped: deixa as cores das linhas alternadas
# hover: destaca a linha quando passa o mouse
# condensed: deixa a tabela mais condensada
# responsive: quando diminui muito a tela ele adapta a tabela
)
Tabela com kable
Espécies
|
Ilha
|
Comprimento do bico
|
Profundidade do bico
|
Comprimento da nadadeira
|
Massa corporal
|
Sexo
|
Ano
|
Adelie
|
Torgersen
|
39.1
|
18.7
|
181
|
3750
|
male
|
2007
|
Adelie
|
Torgersen
|
39.5
|
17.4
|
186
|
3800
|
female
|
2007
|
Adelie
|
Torgersen
|
40.3
|
18.0
|
195
|
3250
|
female
|
2007
|
Adelie
|
Torgersen
|
NA
|
NA
|
NA
|
NA
|
NA
|
2007
|
Adelie
|
Torgersen
|
36.7
|
19.3
|
193
|
3450
|
female
|
2007
|
Adelie
|
Torgersen
|
39.3
|
20.6
|
190
|
3650
|
male
|
2007
|
Adelie
|
Torgersen
|
38.9
|
17.8
|
181
|
3625
|
female
|
2007
|
Adelie
|
Torgersen
|
39.2
|
19.6
|
195
|
4675
|
male
|
2007
|
Adelie
|
Torgersen
|
34.1
|
18.1
|
193
|
3475
|
NA
|
2007
|
Adelie
|
Torgersen
|
42.0
|
20.2
|
190
|
4250
|
NA
|
2007
|
Olha essa outra forma de tabela :D. Ótimo para mostrar todos os dados
de foma bonita e sem ocupar muito espaço.
library(palmerpenguins)
rmarkdown::paged_table(penguins)
Observe isso: O número de linhas é 344
Observe isso: O número de linhas é \r nrow(penguins)
Tabela feita na mão
|direita|esquerda|padrão|centralizado|
|---:|:---|---|:---:|
|12|12|12|12|
|123|123|123|123|
|2|2|2|2|
12 |
12 |
12 |
12 |
123 |
123 |
123 |
123 |
2 |
2 |
2 |
2 |
Cabeçalho1
## Cabeçalho2:
Cabeçalho2
### Cabeçalho3:
Cabeçalho3
#### Cabeçalho4:
Cabeçalho4
##### Cabeçalho5:
Cabeçalho5
###### Cabeçalho6:
Cabeçalho6
- Lista não ordenada
- Item interno
- Item mais interno :D
- Cada vez mais interno
* Lista não ordenada
* Item interno
* Item mais interno :D
* Cada vez mais interno
1. Lista Ordenada
- Item 1
- Item 2
- Lista Ordenada
Imagens
Abaixo estão dois jeitos interessantes de colocar imagens.
{ width=93% }
Gato Charmoso
![Pobre gatito ;-;][linkzada]
[linkzada]:https://museudememes.com.br/wp-content/uploads/2022/05/48bafcbe592190a9998cc12f66b0b953.jpg 'Tadinho 'o''
Pobre gatito ;-;
Alguns negocim massa
`oia isso` oia isso
```
Várias linhas de
oia isso
```
Várias linhas de
oia isso
>Bloco de citação
Bloco de citação
Equação: $e^{i \pi} + 1 = 0$ : \(e^{i \pi}
+ 1 = 0\)
Bloco de equação:
\[E = mc^{2}\]
Linha horizontal:
***
—
Olha
que massa, HTML Tabsets
## Resultados{.tabset}
### Gráficos
Código pro gráfico :D
### Tabelas
Mais código pra tabela :D
Resultados
Gráficos
library(tidyverse)
library(palmerpenguins)
library(ggthemes)
ggplot(data = penguins,
mapping = aes(x = flipper_length_mm, y = body_mass_g)
) +
geom_point(mapping = aes(color = species)) +
geom_smooth(method = 'lm')
Tabelas
Tabela dos Pinguin
species
|
flipper_length_mm
|
body_mass_g
|
Adelie
|
181
|
3750
|
Adelie
|
186
|
3800
|
Adelie
|
195
|
3250
|
Adelie
|
NA
|
NA
|
Adelie
|
193
|
3450
|
Adelie
|
190
|
3650
|
Adelie
|
181
|
3625
|
Adelie
|
195
|
4675
|
Tipos de output no cabeçalho YAML
Em seu código YAML(o que tem provavelmente no início do seu arquivo,
com seu nome, data e tals), escreva algum dos seguintes outputs que você
deseja renderizar o arquivo.
- html_document
- pdf_document*
- word_document
- powerpoint_presentation
- odt_document
- rtf_document
- md_document
- github_document
- ioslides_presentation
- slidy_presentation
- beamer_presentation*
- flexdashboard
- bookdown
- distill
- blogdown
Khan, Wisal, Teerath Kumar, Cheng Zhang, Kislay Raj, Arunabha M Roy, and
Bin Luo. 2023. “SQL and NoSQL Database Software Architecture
Performance Analysis and Assessments—a Systematic Literature
Review.” Big Data and Cognitive Computing 7 (2): 97.
Morettin, Pedro A, and Wilton O Bussab. 2017.
Estatı́stica básica. Saraiva
Educação SA.
Xie, Yihui, Joseph J Allaire, and Garrett Grolemund. 2018. R
Markdown: The Definitive Guide. CRC Press.
LS0tDQp0aXRsZTogfA0KICAhW10oaHR0cHM6Ly9pLmltZ3VyLmNvbS9VaUJDSE0yLmpwZyAiQ2FwaXZhcmEgbXVpdG8gZm9kYSIpe3dpZHRoPTIwMHB4IHN0eWxlPSJkaXNwbGF5OiBibG9jazsgbWFyZ2luOjAgYXV0bzsifQ0KICAiR3VpYSBNYXJrZG93biINCmF1dGhvcjogIkpvbmFzIiAjIEF1dG9yLg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJWQgZGUgJUIgZGUgJVknKWAiICMgRXNzYSBvcMOnw6NvIGVzdMOhIGNvbG9jYW5kbyBhIGRhdGEgYXV0b21hdGljYW1lbnRlLg0KYmlibGlvZ3JhcGh5OiBiaWJfdGVzdGUuYmliICMgRWxlIHBlZ2EgYXMgY2l0YcOnw7VlcyBkbyBhcnF1aXZvIGJpYi4gT2JzZXJ2ZSBxdWUgbyBhcnF1aXZvIGJpYiBkZXZlIGVzdGFyIG5vIHNldSBkaXJldMOzcmlvIGRlIHRyYWJhbGhvLiANCmxpbmstY2l0YXRpb25zOiBUUlVFICMgU2Ugdm9jw6ogY2l0YXIgYWxndW1hIHZleiBhbGd1bSBsaXZybyBvdSBjb2lzYSBkbyB0aXBvLCBhcyByZWZlcsOqbmNpYXMgdsOjbyBzZXIgZmVpdGFzIGF1dG9tYXRpY2FtZW50ZSBubyBmaW5hbCBkbyBhcnF1aXZvLg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDogDQogICAgdGhlbWU6DQogICAgICBib290c3dhdGNoOiBtaW50eSAgIyBFc3NhIG9ww6fDo28gbXVkYW8gdGVtYSB1dGlsaXphZG8gbm8gb3V0cHV0DQogICAgYW5jaG9yX3NlY3Rpb25zOiBUUlVFICMgRWxlIHBlcm1pdGUgbW9zdHJhciDDom5jb3JhcyBkZSBzZcOnw6NvIGFvIHBhc3NhciBvIG1vdXNlDQogICAgY2l0YXRpb25fcGFja2FnZTogImJpYmxhdGV4IiAjIEVTU0Egb3DDp8OjbyBmYWxhIGNvbW8gdmFpIHNlciBhIGZvcm1hdGHDp8OjbyBkZSByZWZlcsOqbmNpYSBuYXMgY2l0YcOnw7Vlcy4NCiAgICBkZXY6ICJwbmciICMgRm9ybWF0byBkYXMgaW1hZ2Vucw0KICAgIGZpZ19jYXB0aW9uOiBUUlVFICMgU2UgYXMgZmlndXJhcyB2w6NvIHNlciByZW5kZXJpemFkYXMgY29tIGxlZ2VuZGENCiAgICBoaWdobGlnaHQ6IHRhbmdvICMgTXVkYSBhIGFwYXLDqm5jaWEgZGUgY8OzZGlnb3MNCiAgICB0b2M6IFRSVUUgIyBBZGljaW9uYSB1bSDDrW5kaWNlDQogICAgdG9jX2RlcHRoOiAzICMgTyBuw612ZWwgbWFpcyBiYWl4byBkZSB0w610dWxvcyBwYXJhIGFkaWNpb25hciBhbyDDrW5kaWNlDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIGNvZGVfZm9sZGluZzogInNob3ciICMgRGVpeGUgb3MgbGVpdG9yZXMgYWx0ZXJuYXJlbSBhIGV4aWJpw6fDo28gZG8gY8OzZGlnbyBSDQogICAgdG9jX2Zsb2F0OiBUUlVFICMgRmx1dHVlIG8gw61uZGljZSDDoCBlc3F1ZXJkYSBkbyBjb250ZcO6ZG8gZG8gZG9jdW1lbnRvIHByaW5jaXBhbA0KICAgIG51bWJlcl9zZWN0aW9uczogVFJVRSAjIGNvbG9jYSBudW1lcmHDp8OjbyBhdXRvbcOhdGljYSBubyBjYWJlw6dhbGhvDQogICAga2VlcF9tZDogVFJVRSAjIE1hbnRlbmhhIG8gYXJxdWl2byBNYXJrZG93biAubWQgZ2VyYWRvIHBlbG8gdHJpY8O0DQogICAgc2NzczogX2Jvb3Rzd2F0Y2guc2Nzcw0KLS0tDQoNCjwhLS0jIElzc28gw6kgdW0gY29tZW50w6FyaW8gLS0+DQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQojIE9ww6fDtWVzIGRlIGNodW5rcw0KDQpBIG9ww6fDo28gZWNobz1GQUxTRSB0aXJhIG8gY8OzZGlnbyBlIHPDsyBtb3N0cmEgbyByZXN1bHRhZG87XA0KQSBvcMOnw6NvIG1lc3NhZ2U9RkFMU0UgdGlyYSBvcyBhdmlzb3MgcXVlIGFwYXJlY2VtIG5vIGPDs2RpZ287XA0KQSBvcMOnw6NvIGV2YWw9RkFMU0UgdGlyYSBvcyByZXN1bHRhZG9zIGRvIGPDs2RpZ287XA0KQSBvcMOnw6NvIGluY2x1ZGU9RkFMU0UgdGlyYSBvIGNodW5rIGRvIG91dHB1dDtcDQpBIG9ww6fDo28gd2FybmluZz1GQUxTRSB0aXJhIG9zIGF2aXNvcyBkbyBvdXRwdTtcDQpBIG9ww6fDo28gcmVzdWx0cz0naGlkZScgdGlyYSBvcyByZXN1bHRhZG9zO1wNCkEgb3DDp8OjbyByZXN1bHRzPSdtYXJrdXAnIGUgcmVzdWx0cz0naG9sZCcgbW9zdHJhIG9zIHJlc3VsdGFkb3MgaWd1YWwgbm8gUlwNCkEgb3DDp8OjbyByZXN1bHRzPSdhc2lzJyBjb2xvY2Egb3MgcmVzdWx0YWRvcyBjb20gdGV4dG8gZXNjcml0bztcDQpBIG9ww6fDo28gZmlnLmFsaWduIGFsaW5oYSBhIGZpZ3VyYSBhIGVzcXVlcmRhIGNvbSAnbGVmdCcgb3UgJ2RlZmF1bHQnLCBhIGRpcmVpdGEgY29tICdyaWdodCcgZSBjZW50cmFsaXphIGNvbSAnY2VudGVyJztcDQpBIG9ww6fDo28gZmlnLmFsdD0nbm9tZSBkYSBmaWd1cmEnIHBlcm1pdGUgbm9tZWFyIHVtYSBmaWd1cmE7XA0KQSBvcMOnw6NvIGZpZy5jYXA9J0xlZ2VuZGEgZGEgZmlndXJhJyBwZXJtaXRlIGNvbG9jYXIgdW1hIGxlZ2VuZGEgcGFyYSBhIGZpZ3VyYTtcDQpBIG9ww6fDo28gZmlnLndpZHRoIHBlcm1pdGUgZGV0ZXJtaW5hciBhIGxhcmd1cmEgZGEgZmlndXJhO1wNCkEgb3DDp8OjbyBmaWcuaGVpZ2h0IHBlcm1pdGUgZGV0ZXJtaW5hciBhIGFsdHVyYSBkYSBmaWd1cmE7XA0KQSBvcMOnw6NvIG91dC53aWR0aD0nMzAwcHgnb3Ugb3V0LndpZHRoPSc4MCUnIHBlcm1pdGUgcmVkaW1lbnNpb25hciBhIGxhcmd1cmEgZGUgc2HDrWRhO1wNCkEgb3DDp8OjbyBjb2xsYXBzZT1UUlVFIHBlcm1pdGUgImp1bnRhciIgdG9kYXMgYXMgc2HDrWRhcyBkZSB1bWEgY2h1biBlbSB1bSDDum5pY28gYmxvY287XA0KQSBvcMOnw6NvIGNvbW1lbnQ9JzpEJyBwZXJtaXRlIGFsdGVyYXIgbyBzw61tYm9sbyBxdWUgaW5pY2lhIG9zIGNvbWVudMOhcmlvcyBkb3MgcmVzdWx0YWRvcztcDQpBIG9ww6fDo28gZXJyb3I9VFJVRSByZW5kZXJpemEgbyBhcnF1aXZvIG1lc21vIHRlbmRvIGVycm9zIGUgbW9zdHJhIHF1YWlzIGVycm9zIG9jb3JyZXJhbSBubyBkb3VjdW1lbnRvOw0KDQojIENpdGHDp8O1ZXMNCg0KUGFyYSBhZGljaW9uYXIgY2l0YcOnw7VlcyBiYXN0YSBjb2xvY2FyIG5vIGNhYmXDp2FsaG8gWUFNTCBvIGNvbWFuZG8gYmlibGlvZ3JhcGh5OiBhcnF1aXZvLmJpYi4gTyBhcnF1aXZvIC5iaWIgcG9kZSBzZXIgZmVpdG8gYXRyYXZleiBkZSB1bSBibG9jbyBkZSBub3Rhcy4gUmVjb21lbmRvIHV0aWxpemFyIG8gW0dvb2dsZSBBY2Fkw6ptaWNvXShodHRwczovL3NjaG9sYXIuZ29vZ2xlLmNvbS5ici9zY2hocD9obD1wdC1CUiZhc19zZHQ9MCw1ICJQZXJmZWl0byBwYXJhIHBlZ2FyIGNpdGHDp8O1ZXMgLmJpYiA6RCIpIHBhcmEgcGVnYXIgb3MgY8OzZGlnb3MgZGUgY2l0YcOnw6NvIEJpYlRleC4gTGVtYnJlIGRlLCBhbyBzYWx2YXIgbyBhcnF1aXZvIGRlIHRleHRvLCBjb2xvY2FyIG8gbm9tZSBkbyBhcnF1aXZvIGNvbSAuYmliIG5vIGZpbmFsLg0KDQpgYGAgbWFya2Rvd24NCi0tLQ0KdGl0bGU6ICJHdWlhIE1hcmtkb3duIg0KYXV0aG9yOiAiSm9uYXMiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6IGh0bWxfZG9jdW1lbnQNCmJpYmxpb2dyYXBoeTogYmliX3Rlc3RlLmJpYg0KbGluay1jaXRhdGlvbnM6IFRSVUUNCi0tLQ0KYGBgDQoNClBhcmEgY2l0YXIgYWxndW1hIGNvaXNhIGJhc3RhIGNvbG9jYXIgXEBub21lYW50ZXNkb3TDrXR1bG9ub2FycXVpdm9CaWJUZXguXA0KT2xoYSBlc3NhIGNpdGHDp8OjbzogQG1vcmV0dGluMjAxN2VzdGF0aXN0aWNhXA0KT2xoYSBlc3NhIG91dHJhOiBAeGllMjAxOHJcDQpPbGhhIGVzc2UgOkQgdnJhdTogQGtoYW4yMDIzc3FsXA0KDQpgYGAgbWFya2Rvd24NCk9saGEgZXNzYSBjaXRhw6fDo286IEBtb3JldHRpbjIwMTdlc3RhdGlzdGljYVwNCk9saGEgZXNzYSBvdXRyYTogQHhpZTIwMThyXA0KT2xoYSBlc3NlIDpEIHZyYXU6IEBraGFuMjAyM3NxbA0KYGBgDQoNCk9ic2VydmUgcXVlIG5vIGZpbmFsIGRvIGFycXVpdm8gZmljYSB1bWEgY2l0YcOnw6NvIGF1dG9tw6F0aWNhIHF1ZSBmYWNpbGl0YSBkZSBtYWlzIG5vc3NhIHZpZGEuXA0KDQojIE5vdGFzIGRlIHJvZGFww6kNCg0KYGBgIG1hcmtkb3duDQpRdWVtIGZhbG91IGlzc28gZm9pIG8gdGFsIGRlIGpvbmluaGFzW14uXQ0KDQpbXi5dOiBFc3NlIGNhYnJhIGVzcXVpc2l0byBzYWJlIGZhemVyIHVtIGNodXJyYXNjbyBtYW5laXJvDQpgYGANCg0KUXVlbSBmYWxvdSBpc3NvIGZvaSBvIHRhbCBkZSBqb25pbmhhc1teMV0NCg0KW14xXTogRXNzZSBjYWJyYSBlc3F1aXNpdG8gc2FiZSBmYXplciB1bSBjaHVycmFzY28gbWFuZWlybw0KDQojIFRhYmVsYXMNCg0KT2JzZXJ2ZSBvIHNlZ3VpbnRlIGPDs2RpZ28gZSBvIHF1ZSBlbGUgZ2VyYS4gw4kgdW1hIGZvcm1hIGxlZ2FsIGRlIGZhemVyIHVtYSB0YWJlbGEgYXRyYXbDqXMgZGUgdW0gYmFuY28gZGUgZGFkb3MgasOhIHByb250by4NCg0KYGBge3J9DQpsaWJyYXJ5KHBhbG1lcnBlbmd1aW5zKQ0KDQprbml0cjo6a2FibGUoaGVhZChwZW5ndWlucywgMTApLCAjIFBlZ2EgYXMgMTAgcHJpbWVpcmFzIGxpbmhhcw0KICAgICAgICAgICAgIGNvbC5uYW1lcyA9IGMoJ0VzcMOpY2llcycsICdJbGhhJywgJ0NvbXByaW1lbnRvIGRvIGJpY28nLCAiUHJvZnVuZGlkYWRlIGRvIGJpY28iLCAiQ29tcHJpbWVudG8gZGEgbmFkYWRlaXJhIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFzc2EgY29ycG9yYWwiLCAiU2V4byIsICJBbm8iKSwgY2FwdGlvbiA9ICJUYWJlbGEgY29tIGthYmxlIikgfD4gIyBBcXVpIMOpIHVtIHZldG9yIGNvbSBvIG5vbWUgZGFzIGNvbHVuYXMNCiAga2FibGVFeHRyYTo6a2FibGVfc3R5bGluZyhmdWxsX3dpZHRoID0gVFJVRSwgIyBFc3NhIG9ww6fDo28gZmF6IGEgdGFiZWxhIHBlZ2FyIHRvZGEgYSBleHRlbnPDo28gZG8gcmVsYXTDs3Jpbw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RyaXBlZDogZGVpeGEgYXMgY29yZXMgZGFzIGxpbmhhcyBhbHRlcm5hZGFzDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBob3ZlcjogZGVzdGFjYSBhIGxpbmhhIHF1YW5kbyBwYXNzYSBvIG1vdXNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjb25kZW5zZWQ6IGRlaXhhIGEgdGFiZWxhIG1haXMgY29uZGVuc2FkYQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVzcG9uc2l2ZTogcXVhbmRvIGRpbWludWkgbXVpdG8gYSB0ZWxhIGVsZSBhZGFwdGEgYSB0YWJlbGENCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQpgYGANCg0KT2xoYSBlc3NhIG91dHJhIGZvcm1hIGRlIHRhYmVsYSA6RC4gw5N0aW1vIHBhcmEgbW9zdHJhciB0b2RvcyBvcyBkYWRvcyBkZSBmb21hIGJvbml0YSBlIHNlbSBvY3VwYXIgbXVpdG8gZXNwYcOnby4NCg0KYGBge3J9DQpsaWJyYXJ5KHBhbG1lcnBlbmd1aW5zKQ0KDQpybWFya2Rvd246OnBhZ2VkX3RhYmxlKHBlbmd1aW5zKQ0KYGBgDQoNCk9ic2VydmUgaXNzbzogTyBuw7ptZXJvIGRlIGxpbmhhcyDDqSBgciBucm93KHBlbmd1aW5zKWBcDQpPYnNlcnZlIGlzc286IE8gbsO6bWVybyBkZSBsaW5oYXMgw6kgYFxyIG5yb3cocGVuZ3VpbnMpYFwNCg0KVGFiZWxhIGZlaXRhIG5hIG3Do29cDQoNCmBgYCBtYXJrZG93bg0KfGRpcmVpdGF8ZXNxdWVyZGF8cGFkcsOjb3xjZW50cmFsaXphZG98DQp8LS0tOnw6LS0tfC0tLXw6LS0tOnwNCnwxMnwxMnwxMnwxMnwNCnwxMjN8MTIzfDEyM3wxMjN8DQp8MnwyfDJ8MnwNCmBgYA0KDQp8IGRpcmVpdGEgfCBlc3F1ZXJkYSB8IHBhZHLDo28gfCBjZW50cmFsaXphZG8gfA0KfC0tLS0tLS0tOnw6LS0tLS0tLS0tfC0tLS0tLS0tfDotLS0tLS0tLS0tLS06fA0KfCAgICAgIDEyIHwgMTIgICAgICAgfCAxMiAgICAgfCAgICAgIDEyICAgICAgfA0KfCAgICAgMTIzIHwgMTIzICAgICAgfCAxMjMgICAgfCAgICAgMTIzICAgICAgfA0KfCAgICAgICAyIHwgMiAgICAgICAgfCAyICAgICAgfCAgICAgIDIgICAgICAgfA0KDQojIEVzY3JldmVuZG8gY29tIE1hcmtkb3duDQoNClRleHRvIG5vcm1hbC5cDQpGaW5hbGl6ZSB1bWEgbGluaGEgY29tIGRvaXMgZXNwYcOnb3MgcGFyYSBjb21lw6dhciB1bSBub3ZvIHBhcsOhZ3JhZm8uXA0KVGFtYsOpbSDDqSBwb3Nzw612ZWwgaW5pY2lhciB1bSBub3ZvIHBhcsOhZ3JhZm8gY29tIHVtIFxcIG5vIGZpbmFsLlwNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClwqaXTDoWxpY29cKiAqaXTDoWxpY28qXA0KXCpcKm5lZ3JpdG9cKlwqICoqbmVncml0byoqXA0Kc29icmVzY3JpdG9cXjJcXiBzb2JyZXNjcml0b14yXlwNCnN1YnNjcml0b1x+Mlx+IHN1YnNjcml0b34yflwNClx+XH5zdWJsaW5oYWRvXH5cfiB+fnN1YmxpbmhhZG9+flwNCnRyYcOnbzogLS0gdHJhw6dvOiAtLVwNClRyYXZlc3PDo286IC0tLSBUcmF2ZXNzw6NvOiAtLS1cDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpcIyBDYWJlw6dhbGhvMTpcDQoNCiMgQ2FiZcOnYWxobzENCg0KXCMjIENhYmXDp2FsaG8yOlwNCg0KIyMgQ2FiZcOnYWxobzINCg0KXCMjIyBDYWJlw6dhbGhvMzpcDQoNCiMjIyBDYWJlw6dhbGhvMw0KDQpcIyMjIyBDYWJlw6dhbGhvNDpcDQoNCiMjIyMgQ2FiZcOnYWxobzQNCg0KXCMjIyMjIENhYmXDp2FsaG81OlwNCg0KIyMjIyMgQ2FiZcOnYWxobzUNCg0KXCMjIyMjIyBDYWJlw6dhbGhvNjpcDQoNCiMjIyMjIyBDYWJlw6dhbGhvNg0KDQpgYGAgbWFya2Rvd24NCi0gTGlzdGEgbsOjbyBvcmRlbmFkYQ0KICAtIEl0ZW0gaW50ZXJubw0KICAgIC0gSXRlbSBtYWlzIGludGVybm8gOkQNCiAgICAgIC0gQ2FkYSB2ZXogbWFpcyBpbnRlcm5vDQpgYGANCg0KLSAgIExpc3RhIG7Do28gb3JkZW5hZGENCiAgICAtICAgSXRlbSBpbnRlcm5vDQogICAgICAgIC0gICBJdGVtIG1haXMgaW50ZXJubyA6RA0KICAgICAgICAgICAgLSAgIENhZGEgdmV6IG1haXMgaW50ZXJubw0KDQpgYGAgbWFya2Rvd24NCiogTGlzdGEgbsOjbyBvcmRlbmFkYQ0KICAqIEl0ZW0gaW50ZXJubw0KICAgICogSXRlbSBtYWlzIGludGVybm8gOkQNCiAgICAgICogQ2FkYSB2ZXogbWFpcyBpbnRlcm5vDQpgYGANCg0KLSAgIExpc3RhIG7Do28gb3JkZW5hZGENCiAgICAtICAgSXRlbSBpbnRlcm5vDQogICAgICAgIC0gICBJdGVtIG1haXMgaW50ZXJubyA6RA0KICAgICAgICAgICAgLSAgIENhZGEgdmV6IG1haXMgaW50ZXJubw0KDQpgYGAgbWFya2Rvd24NCjEuIExpc3RhIE9yZGVuYWRhDQogICAgLSBJdGVtIDENCiAgICAgIC0gSXRlbSAyDQpgYGANCg0KMS4gIExpc3RhIE9yZGVuYWRhDQogICAgLSAgIEl0ZW0gMQ0KICAgICAgICAtICAgSXRlbSAyDQoNCiMgTGlua3MNCg0KUHJpbWVpcm8gZXN0aWxvIGRlIGxpbms6IDxodHRwczovL211c2ljLnlvdXR1YmUuY29tL3dhdGNoP3Y9a0s0dnVNUF9BN0UmbGlzdD1MTT5cDQoNCmBgYCBtYXJrZG93bg0KaHR0cHM6Ly9tdXNpYy55b3V0dWJlLmNvbS93YXRjaD92PWtLNHZ1TVBfQTdFJmxpc3Q9TE0NCmBgYA0KDQpTZWd1bmRvIGVzdGlsbyBkZSBsaW5rOiBbTcO6c2ljYSBkYSBDb2NhIGNvbGFdKGh0dHBzOi8vbXVzaWMueW91dHViZS5jb20vd2F0Y2g/dj1rSzR2dU1QX0E3RSZsaXN0PUxNICJWb2PDqiB2YWkgYW1hciA6RCIpXA0KDQpgYGAgbWFya2Rvd24NCltNw7pzaWNhIGRhIENvY2EgY29sYV0oaHR0cHM6Ly9tdXNpYy55b3V0dWJlLmNvbS93YXRjaD92PWtLNHZ1TVBfQTdFJmxpc3Q9TE0gJ1ZvY8OqIHZhaSBhbWFyIDpEJykNCmBgYA0KDQpUZXJjZWlybyBlc3RpbG8gZGUgbGluazogW08gcXVlIHZlciBuYXMgc3VhcyDDumx0aW1hcyBkZXogaG9yYXMgZGUgdmlkYV0oaHR0cHM6Ly9tdXNpYy55b3V0dWJlLmNvbS93YXRjaD92PWtLNHZ1TVBfQTdFJmxpc3Q9TE0gIlZvY8OqIHZhaSBhbWFyIDpEIilcDQoNCmBgYCBtYXJrZG93bg0KW08gcXVlIHZlciBuYXMgc3VhcyDDumx0aW1hcyBkZXogaG9yYXMgZGUgdmlkYV1bTGlua19NYXJvdG9dIFwNCg0KW0xpbmtfTWFyb3RvXTpodHRwczovL211c2ljLnlvdXR1YmUuY29tL3dhdGNoP3Y9a0s0dnVNUF9BN0UmbGlzdD1MTSAnVm9jw6ogdmFpIGFtYXIgOkQnDQpgYGANCg0KIyBJbWFnZW5zDQoNCkFiYWl4byBlc3TDo28gZG9pcyBqZWl0b3MgaW50ZXJlc3NhbnRlcyBkZSBjb2xvY2FyIGltYWdlbnMuXA0KDQpgYGAgbWFya2Rvd24NCiFbR2F0byBDaGFybW9zb10oaHR0cHM6Ly90LmN0Y2RuLmNvbS5ici9sbkJEQWNQU1pTcHFiRHMyN29tMjRGNTB1VG89LzEyMDB4Njc1L3NtYXJ0L2k3NjQ4NTIucG5nICdVbSBnYXRvIGRlIHJlc3BlaXRvJyl7IHdpZHRoPTkzJSB9DQpgYGANCg0KIVtHYXRvIENoYXJtb3NvXShodHRwczovL3QuY3RjZG4uY29tLmJyL2xuQkRBY1BTWlNwcWJEczI3b20yNEY1MHVUbz0vMTIwMHg2NzUvc21hcnQvaTc2NDg1Mi5wbmcgIlVtIGdhdG8gZGUgcmVzcGVpdG8iKXt3aWR0aD0iOTMlIn0NCg0KYGBgIG1hcmtkb3duDQohW1BvYnJlIGdhdGl0byA7LTtdW2xpbmt6YWRhXQ0KDQpbbGlua3phZGFdOmh0dHBzOi8vbXVzZXVkZW1lbWVzLmNvbS5ici93cC1jb250ZW50L3VwbG9hZHMvMjAyMi8wNS80OGJhZmNiZTU5MjE5MGE5OTk4Y2MxMmY2NmIwYjk1My5qcGcgJ1RhZGluaG8gJ28nJw0KYGBgDQoNCiFbUG9icmUgZ2F0aXRvIDstO10oaHR0cHM6Ly9tdXNldWRlbWVtZXMuY29tLmJyL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIyLzA1LzQ4YmFmY2JlNTkyMTkwYTk5OThjYzEyZjY2YjBiOTUzLmpwZyAiVGFkaW5obyAnbyciKQ0KDQojIEFsZ3VucyBuZWdvY2ltIG1hc3NhDQoNClxgb2lhIGlzc29cYCBgb2lhIGlzc29gXA0KDQpcYFxgXGBcDQpWw6FyaWFzIGxpbmhhcyBkZVwNCm9pYSBpc3NvXA0KXGBcYFxgXA0KDQpgYGAgICAgICAgICANClbDoXJpYXMgbGluaGFzIGRlDQpvaWEgaXNzbw0KYGBgDQoNClw+QmxvY28gZGUgY2l0YcOnw6NvXA0KDQo+IEJsb2NvIGRlIGNpdGHDp8Ojb1wNCg0KRXF1YcOnw6NvOiBcJGVcXntpIFxccGl9ICsgMSA9IDBcJCA6ICRlXntpIFxwaX0gKyAxID0gMCRcDQoNCkJsb2NvIGRlIGVxdWHDp8OjbzoNCg0KYGBgIG1hcmtkb3duDQokJEUgPSBtY157Mn0kJA0KYGBgDQoNCiQkRSA9IG1jXnsyfSQkDQoNCkxpbmhhIGhvcml6b250YWw6XA0KXCpcKlwqXA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLS0tXA0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyBPbGhhIHF1ZSBtYXNzYSwgSFRNTCBUYWJzZXRzDQoNCmBgYCBtYXJrZG93bg0KIyMgUmVzdWx0YWRvc3sudGFic2V0fQ0KIyMjIEdyw6FmaWNvcw0KQ8OzZGlnbyBwcm8gZ3LDoWZpY28gOkQNCg0KIyMjIFRhYmVsYXMNCk1haXMgY8OzZGlnbyBwcmEgdGFiZWxhIDpEDQpgYGANCg0KIyBSZXN1bHRhZG9zIHsudGFic2V0IC50YWJzZXQtZmFkZX0NCg0KIyMgR3LDoWZpY29zDQoNCmBgYHtyIGNodW5rLWxhYmVsLCBlY2hvPVRSVUUsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0UsIGZpZy5hbGlnbj0nY2VudGVyJywgZmlnLmNhcD0iQm9keSBtYXNzIHggZmxpcHBlciBsZW5ndGgifQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHBhbG1lcnBlbmd1aW5zKQ0KbGlicmFyeShnZ3RoZW1lcykNCg0KZ2dwbG90KGRhdGEgPSBwZW5ndWlucywNCiAgICAgICBtYXBwaW5nID0gYWVzKHggPSBmbGlwcGVyX2xlbmd0aF9tbSwgeSA9IGJvZHlfbWFzc19nKQ0KKSArDQogIGdlb21fcG9pbnQobWFwcGluZyA9IGFlcyhjb2xvciA9IHNwZWNpZXMpKSArDQogIGdlb21fc21vb3RoKG1ldGhvZCA9ICdsbScpDQpgYGANCg0KIyMgVGFiZWxhcw0KDQpgYGB7ciwgZWNobz1GQUxTRX0NCmxpYnJhcnkocGFsbWVycGVuZ3VpbnMpDQoNCmRhdGEgPC0gcGVuZ3VpbnNbMTo4LGMoMSw1LDYpXQ0KDQprbml0cjo6a2FibGUoZGF0YSwgYWxpZ24gPSAnYycsIGNhcHRpb24gPSAiVGFiZWxhIGRvcyBQaW5ndWluIikNCmBgYA0KDQojIFRpcG9zIGRlIG91dHB1dCBubyBjYWJlw6dhbGhvIFlBTUwNCg0KRW0gc2V1IGPDs2RpZ28gWUFNTChvIHF1ZSB0ZW0gcHJvdmF2ZWxtZW50ZSBubyBpbsOtY2lvIGRvIHNldSBhcnF1aXZvLCBjb20gc2V1IG5vbWUsIGRhdGEgZSB0YWxzKSwgZXNjcmV2YSBhbGd1bSBkb3Mgc2VndWludGVzIG91dHB1dHMgcXVlIHZvY8OqIGRlc2VqYSByZW5kZXJpemFyIG8gYXJxdWl2by5cDQoNCi0gICBodG1sX2RvY3VtZW50DQotICAgcGRmX2RvY3VtZW50XCoNCi0gICB3b3JkX2RvY3VtZW50DQotICAgcG93ZXJwb2ludF9wcmVzZW50YXRpb24NCi0gICBvZHRfZG9jdW1lbnQNCi0gICBydGZfZG9jdW1lbnQNCi0gICBtZF9kb2N1bWVudA0KLSAgIGdpdGh1Yl9kb2N1bWVudA0KLSAgIGlvc2xpZGVzX3ByZXNlbnRhdGlvbg0KLSAgIHNsaWR5X3ByZXNlbnRhdGlvbg0KLSAgIGJlYW1lcl9wcmVzZW50YXRpb25cKg0KLSAgIGZsZXhkYXNoYm9hcmQNCi0gICBib29rZG93bg0KLSAgIGRpc3RpbGwNCi0gICBibG9nZG93bg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg==