References and resources

Sequencing data is of an individual (NA12891) from the 1000 genome project.

http://www.internationalgenome.org/1000-genomes-browsers/

Machine

Google Cloud Platform (GCP), 4 vCPUs, 15 GB RAM

Google Cloud Platform (GCP), 8 vCPUs, 30 GB RAM

Google Cloud Platform (GCP), 24 vCPUs, 32 GB RAM

AWS: c5.18xlarge (72 vCPUs, 144 GB RAM)

AWS: m5.24xlarge (96 vCPUs, 384 GiB RAM)

Cholinergic receptor nicotinic subunit genes (CHRN/chrn)

There are 16 CHRN genes in humans coding for 16 nicotinic acetylcholine receptor subunits.

Nine subunits are classified as alpha (a): chrna1, chrna2, chrna3, chrna4, chrna5, chrna6, chrna7, chrna9, chrna10

Four subunits are classified as beta (b) subumits: chrnb1, chrnb2, chrnb3, chrnb3

One subinit is known as a gamma (chrng) subunit

One subunit is known as delta (chrnd) subunit

Another subunit is classified as an epsilon (chrne) subunit.

Chromosomal coordinates of human CHRN genes

chrna1: Chromosome 2, NC_000002.12 (174,747,592..174,764,472, complement) 

chrna2: Chromosome 8, NC_000008.11 (27459761..27479296, complement) 

chrna3: Chromosome 15, NC_000015.10 (78593052..78621295, complement)

chrna4: Chromosome 20, NC_000020.11 (63,343,310..63,375,471, complement)

chrna5: Chromosome 15, NC_000015.10 (78565520..78595269)

chrna6: Chromosome 8, NC_000008.11 (42752620..42768786, complement)

chrna7: Chromosome 7, NC_000073.6 (63098692..63212526, complement)

chrna9: Chromosome 4, NC_000004.12 (40335329..40355217)

chrna10: Chromosome 11, NC_000011.10 (3665587..3673629, complement)

chrnb1: Chromosome 17, NC_000017.11 (7445087..7457613)

chrnb2: Chromosome 1, NC_000001.11 (154567781..154584708)

chrnb3: Chromosome 8, NC_000008.11 (42697376..42737407)

chrnb4: Chromosome 15, NC_000015.10 (78623282..78655586, complement)

chrng: Chromosome 2, NC_000002.12 (232539727..232546328)

chrnd: Chromosome 2, NC_000002.12 (232526160..232537907)

chrne: Chromosome 17, NC_000017.11 (4897769..4905019, complement)

Chromosome-wise CHRN genes

chrnb2-         Chromosome 1, NC_000001.11 (154567781..154584708)
chrna1-         Chromosome 2, NC_000002.12 (174747592..174764472, complement) 

chrng-          Chromosome 2, NC_000002.12 (232539727..232546328)
chrnd-          Chromosome 2, NC_000002.12 (232526160..232537907)

chrna9-         Chromosome 4, NC_000004.12 (40335329..40355217)


chrna7-         Chromosome 7, NC_000073.6 (63098692..63212526, complement)


chrna2-         Chromosome 8, NC_000008.11 (27459761..27479296, complement) 
chrna6-         Chromosome 8, NC_000008.11 (42752620..42768786, complement)
chrnb3-         Chromosome 8, NC_000008.11 (42697376..42737407)
        
chrna10-        Chromosome 11, NC_000011.10 (3665587..3673629, complement)

chrna3-         Chromosome 15, NC_000015.10 (78593052..78621295, complement)
chrna5-         Chromosome 15, NC_000015.10 (78565520..78595269)
chrnb4-         Chromosome 15, NC_000015.10 (78623282..78655586, complement)


chrnb1-         Chromosome 17, NC_000017.11 (7445087..7457613)
chrne-          Chromosome 17, NC_000017.11 (4897769..4905019, complement)

chrna4-         Chromosome 20, NC_000020.11 (63343310..63375471, complement)

Download analysis datasets and rename them

~/gatk-data-ref/trio_or_joint_calls$ wget -bqc ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR622/SRR622458/SRR622458_1.fastq.gz

~/gatk-data-ref/trio_or_joint_calls$ wget -bqc ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR622/SRR622458/SRR622458_2.fastq.gz

Directory content/Data size

~/gatk-data-ref$ ls -l

-rw-rw-r– 1 ubuntu ubuntu 66771360285 May 1 03:50 SRR622458_1.fastq.gz

-rw-rw-r– 1 ubuntu ubuntu 68300205647 May 1 03:42 SRR622458_2.fastq.gz

Check data content

~/gatk-data-ref$ zcat SRR622458_1.fastq.gz | head -n 2

@SRR622458.1 1/1 TGGGATTGGGGTAGGGCTAGGGCTCGGGTTGGGGATAGGGTGAGGGTTTGGGATAGGGGTAGGGTTAGGGTGTTGGCTAGGGTTAGGGCGAGGGCCAGGGC

~/gatk-data-ref$ zcat SRR622458_2.fastq.gz | head -n 2

@SRR622458.1 1/2 ATAACCCTAACCCTAACCCTAACGCTAACCCTAACCCTAACCCTAACCCTAACAATAACCCTAACCCTAACACTAACCTTACCCCTAACCCTAACCCTCAC

Download reference (fasta, fasta index, dictionary) and BWA index (.alt, .amb, .ann, .bwt, .pac and .sa) files


 $ aws s3 cp s3://broad-references/hg38/v0/Homo_sapiens_assembly38.fasta.64.alt .

 
 $ aws s3 cp s3://broad-references/hg38/v0/Homo_sapiens_assembly38.fasta.64.amb .

 
 $ aws s3 cp s3://broad-references/hg38/v0/Homo_sapiens_assembly38.fasta.64.ann .

 
 $ aws s3 cp s3://broad-references/hg38/v0/Homo_sapiens_assembly38.fasta.64.bwt .

 
 $ aws s3 cp s3://broad-references/hg38/v0/Homo_sapiens_assembly38.fasta.64.pac .

 
 $ aws s3 cp s3://broad-references/hg38/v0/Homo_sapiens_assembly38.fasta.64.sa .

Additional directory contents

~/gatk-data-ref$ ls -l

-rw-rw-r– 1 ubuntu ubuntu 581712 Jan 6 2016 Homo_sapiens_assembly38.dict

-rw-rw-r– 1 ubuntu ubuntu 3249912778 Jan 5 2016 Homo_sapiens_assembly38.fasta

-rw-rw-r– 1 ubuntu ubuntu 487553 Nov 6 23:47 Homo_sapiens_assembly38.fasta.64.alt

-rw-rw-r– 1 ubuntu ubuntu 20199 Nov 6 23:47 Homo_sapiens_assembly38.fasta.64.amb

-rw-rw-r– 1 ubuntu ubuntu 455474 Nov 6 23:47 Homo_sapiens_assembly38.fasta.64.ann

-rw-rw-r– 1 ubuntu ubuntu 3217347004 Nov 6 23:47 Homo_sapiens_assembly38.fasta.64.bwt

-rw-rw-r– 1 ubuntu ubuntu 804336731 Nov 6 23:48 Homo_sapiens_assembly38.fasta.64.pac

-rw-rw-r– 1 ubuntu ubuntu 1608673512 Nov 6 23:48 Homo_sapiens_assembly38.fasta.64.sa

-rw-rw-r– 1 ubuntu ubuntu 160928 Dec 1 2016 Homo_sapiens_assembly38.fasta.fai

Align the sequences to the reference sequence using BWA

~/gatk-data-ref$ bwa mem -M -t 96 -R ‘@RG:SRR622458:P:illumina:FCC1H7WACXX:NA12891’ Homo_sapiens_assembly38.fasta SRR622458_1.fastq.gz SRR622458_2.fastq.gz | samtools view -Sbh | samtools sort -o SRR622458.bam - && samtools index SRR622458.bam && samtools flagstat SRR622458.bam

…………….

[main] Version: 0.7.17-r1188

[main] CMD: bwa mem -M -t 96 -R @RG:SRR622458:P:illumina:FCC1H7WACXX:NA12891 Homo_sapiens_assembly38.fasta SRR622458_1.fastq.gz SRR622458_2.fastq.gz

[main] Real time: 27098.059 sec; CPU: 1337083.667 sec

[bam_sort_core] merging from 947 files and 1 in-memory blocks…

2448099046 + 0 in total (QC-passed reads + QC-failed reads)
11520983 + 0 secondary
12880297 + 0 supplementary
0 + 0 duplicates
2368472627 + 0 mapped (96.75% : N/A)
2423697766 + 0 paired in sequencing
1211848883 + 0 read1
1211848883 + 0 read2
2258885338 + 0 properly paired (93.20% : N/A)
2317266676 + 0 with itself and mate mapped
26804671 + 0 singletons (1.11% : N/A)
31022454 + 0 with mate mapped to a different chr
17456435 + 0 with mate mapped to a different chr (mapQ>=5)

Alignment statistics could also obtained separately

~/gatk-data-ref$ sambamba flagstat -p SRR622458.bam

2,448,099,046 + 0 in total (QC-passed reads + QC-failed reads)

11520983 + 0 secondary
12880297 + 0 supplementary
0 + 0 duplicates
2368472627 + 0 mapped (96.75%:N/A)
2423697766 + 0 paired in sequencing
1211848883 + 0 read1
1211848883 + 0 read2
2258885338 + 0 properly paired (93.20%:N/A)
2317266676 + 0 with itself and mate mapped
26804671 + 0 singletons (1.11%:N/A)
31022454 + 0 with mate mapped to a different chr
17456435 + 0 with mate mapped to a different chr (mapQ>=5)

Additional directory contents

~/gatk-data-ref$ ls -l

-rw-rw-r– 1 b0d2647 b0d2647 189005777011 May 1 17:46 SRR622458.bam

-rw-rw-r– 1 b0d2647 b0d2647 9777672 May 1 19:12 SRR622458.bam.bai

Validate the Bam File (before gatk haplotype analysis)

gatk ValidateSamFile -R Homo_sapiens_assembly38.fasta -I SRR622458.bam -M SUMMARY -O summary-SRR622458

……………

[Fri May 03 21:01:34 UTC 2019] picard.sam.ValidateSamFile done. Elapsed time: 443.41 minutes.

Runtime.totalMemory()=1916272640

To get help, see http://broadinstitute.github.io/picard/index.html#GettingHelp

Tool returned: 3

~/gatk-data-ref$ cat summary-SRR622458

## HISTOGRAM    java.lang.String

Error Type              Count

ERROR:INVALID_TAG_NM    207087

Fix the INVALID_TAG_NM error

~/gatk-data-ref$ gatk SetNmMdAndUqTags -R Homo_sapiens_assembly38.fasta -I SRR622458.bam -O SRR622458.fxNmMdUqTag.bam

Using GATK jar /home/b0d2647/miniconda3/share/gatk4-4.1.2.0-0/gatk-package-4.1.2.0-local.jar

Validate the ‘SetNmMdAndUqTags’ or presumed fixed BAM file again

~/gatk-data-ref$ gatk ValidateSamFile -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.bam -M SUMMARY -O summary-SRR622458.fxNmMdUqTag

…………………..

INFO 2019-05-04 11:05:46 SamFileValidator Validated Read 2,390,000,000 records. Elapsed time: 05:40:54s. Time for last 10,000,000: 104s. Last read position: chrUn_JTFH01001512v1_decoy:1,242

………………………

[Sat May 04 11:09:59 UTC 2019] picard.sam.ValidateSamFile done. Elapsed time: 345.16 minutes.

Runtime.totalMemory()=1470103552

Tool returned: 0

~/gatk-data-ref$ cat summary-SRR622458.fxNmMdUqTag

No errors found

Mark duplicates

~/gatk-data-ref$ gatk MarkDuplicates -I SRR622458.fxNmMdUqTag.bam -O SRR622458.fxNmMdUqTag.mdup.bam -M SRR622458.chr20.fxNmMdUqTag.dupMetrics.txt

………………………

INFO 2019-05-04 23:41:16 MarkDuplicates Will retain up to 112,852,992 duplicate indices before spilling to disk.

INFO 2019-05-04 23:41:16 MarkDuplicates Traversing read pair information and detecting duplicates.

INFO 2019-05-04 23:41:16 SortingCollection Creating merging iterator from 92 files

……………………………….

INFO 2019-05-04 23:53:09 SortingCollection Creating merging iterator from 185 files

…………………………………..

INFO 2019-05-05 00:09:35 MarkDuplicates Marking 126,416,116 records as duplicates.

INFO 2019-05-05 00:09:35 MarkDuplicates Found 0 optical duplicate clusters.

INFO 2019-05-05 00:09:35 MarkDuplicates Reads are assumed to be ordered by: coordinate

………………….

[Sun May 05 04:59:44 UTC 2019] picard.sam.markduplicates.MarkDuplicates done. Elapsed time: 684.96 minutes.

Runtime.totalMemory()=2610429952

Tool returned: 0

~/gatk-data-ref$ head SRR622458.fxNmMdUqTag.dupMetrics.txt

……………….

LIBRARY UNPAIRED_READS_EXAMINED READ_PAIRS_EXAMINED     SECONDARY_OR_SUPPLEMENTARY_RDS  UNMAPPED_READS  UNPAIRED_READ_DUPLICATES        READ_PAIR_DUPLICATES    READ_PAIR_OPTICAL_DUPLICATES    PERCENT_DUPLICATION  ESTIMATED_LIBRARY_SIZE

P       26804671        1158633338      24401280        79626419        12149656        57133230        0       0.05393 11358780886

Additional directory contents

~/gatk-data-ref$ ls -l

-rw-rw-r– 1 b0d2647 b0d2647 256414514748 May 4 05:07 SRR622458.fxNmMdUqTag.bam

-rw-rw-r– 1 b0d2647 b0d2647 9791560 May 4 17:18 SRR622458.fxNmMdUqTag.bam.bai

-rw-rw-r– 1 b0d2647 b0d2647 4604 May 5 04:59 SRR622458.fxNmMdUqTag.dupMetrics.txt

-rw-rw-r– 1 b0d2647 b0d2647 259148164965 May 5 04:59 SRR622458.fxNmMdUqTag.mdup.bam

Execute a bash script containing the gatk HaplotypeCaller commands to generate CHRN genewise vcf files

#!/bin/bash

nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr2:174,747,592-174,764,472 -O SRR622458.fxNmMdUqTag.mdup.chrna1.vcf >& hcall.58.chrna1.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr8:27,459,761-27,479,296 -O SRR622458.fxNmMdUqTag.mdup.chrna2.vcf >& hcall.58.chrna2.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr15:78593052-78621295 -O SRR622458.fxNmMdUqTag.mdup.chrna3.vcf >& hcall.58.chrna3.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr20:63343310-63375471 -O SRR622458.fxNmMdUqTag.mdup.chrna4.vcf >& hcall.58.chrna4.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr15:78565520-78595269 -O SRR622458.fxNmMdUqTag.mdup.chrna5.vcf >& hcall.58.chrna5.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr8:42752620-42768786 -O SRR622458.fxNmMdUqTag.mdup.chrna6.vcf >& hcall.58.chrna6.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr7:63098692-63212526 -O SRR622458.fxNmMdUqTag.mdup.chrna7.vcf >& hcall.58.chrna7.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr4:40335329-40355217 -O SRR622458.fxNmMdUqTag.mdup.chrna9.vcf >& hcall.58.chrna9.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr11:3665587-3673629 -O SRR622458.fxNmMdUqTag.mdup.chrna10.vcf >& hcall.58.chrna10.log &

nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr17:7445087-7457613 -O SRR622458.fxNmMdUqTag.mdup.chrnb1.vcf >& hcall.58.chrnb1.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr1:154567781-154584708 -O SRR622458.fxNmMdUqTag.mdup.chrnb2.vcf >& hcall.58.chrnb2.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr8:42697376-42737407 -O SRR622458.fxNmMdUqTag.mdup.chrnb3.vcf >& hcall.58.chrnb3.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr15:78623282-78655586 -O SRR622458.fxNmMdUqTag.mdup.chrnb4.vcf >& hcall.58.chrnb4.log &



nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr2:232539727-232546328 -O SRR622458.fxNmMdUqTag.mdup.chrng.vcf >& hcall.58.chrng.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr2:232526160-232537907 -O SRR622458.fxNmMdUqTag.mdup.chrnd.vcf >& hcall.58.chrnd.log &


nohup gatk HaplotypeCaller -R Homo_sapiens_assembly38.fasta -I SRR622458.fxNmMdUqTag.mdup.bam -L chr17:4897769-4905019 -O SRR622458.fxNmMdUqTag.mdup.chrne.vcf >& hcall.58.chrne.log &

Additional directory contents

~/gatk-data-ref$ ls -l

-rw-rw-r-- 1 b0d2647 b0d2647       181598 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna1.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       115469 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna1.vcf.idx

-rw-rw-r-- 1 b0d2647 b0d2647       178462 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna10.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114090 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna10.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       185104 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna2.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114317 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna2.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       194287 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrna3.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114717 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrna3.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       193980 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna4.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114597 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna4.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       188353 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna5.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114715 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrna5.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       176862 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna6.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114421 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrna6.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       203559 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrna7.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       122003 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrna7.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       186797 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrna9.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114419 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrna9.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       179752 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrnb1.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114167 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrnb1.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       179940 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrnb2.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       115307 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrnb2.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       184094 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrnb3.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114435 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrnb3.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       188849 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrnb4.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114716 May  5 19:52 SRR622458.fxNmMdUqTag.mdup.chrnb4.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       176133 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrnd.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       115893 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrnd.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       179197 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrne.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       114096 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrne.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647       178127 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrng.vcf
-rw-rw-r-- 1 b0d2647 b0d2647       115892 May  5 19:51 SRR622458.fxNmMdUqTag.mdup.chrng.vcf.idx


-rw-rw-r-- 1 b0d2647 b0d2647         6363 May  5 19:51 hcall.58.chrna1.log
-rw-rw-r-- 1 b0d2647 b0d2647         6163 May  5 19:51 hcall.58.chrna10.log
-rw-rw-r-- 1 b0d2647 b0d2647         6347 May  5 19:51 hcall.58.chrna2.log
-rw-rw-r-- 1 b0d2647 b0d2647         6472 May  5 19:52 hcall.58.chrna3.log
-rw-rw-r-- 1 b0d2647 b0d2647         6469 May  5 19:51 hcall.58.chrna4.log
-rw-rw-r-- 1 b0d2647 b0d2647         6470 May  5 19:52 hcall.58.chrna5.log
-rw-rw-r-- 1 b0d2647 b0d2647         6237 May  5 19:51 hcall.58.chrna6.log
-rw-rw-r-- 1 b0d2647 b0d2647         6594 May  5 19:52 hcall.58.chrna7.log
-rw-rw-r-- 1 b0d2647 b0d2647         6455 May  5 19:52 hcall.58.chrna9.log
-rw-rw-r-- 1 b0d2647 b0d2647         6348 May  5 19:51 hcall.58.chrnb1.log
-rw-rw-r-- 1 b0d2647 b0d2647         6351 May  5 19:51 hcall.58.chrnb2.log
-rw-rw-r-- 1 b0d2647 b0d2647         6476 May  5 19:52 hcall.58.chrnb3.log
-rw-rw-r-- 1 b0d2647 b0d2647         6462 May  5 19:52 hcall.58.chrnb4.log
-rw-rw-r-- 1 b0d2647 b0d2647         6240 May  5 19:51 hcall.58.chrnd.log
-rw-rw-r-- 1 b0d2647 b0d2647         6149 May  5 19:51 hcall.58.chrne.log
-rw-rw-r-- 1 b0d2647 b0d2647         6229 May  5 19:51 hcall.58.chrng.log

CHRNA1 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna1.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.

# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna1.vcf

# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      37
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         28
SN      0       number of MNPs:                         0
SN      0       number of indels:                       9
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           1
SN      0       number of multiallelic SNP sites:       0

CHRNA2 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna2.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna2.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna2.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      47
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         43
SN      0       number of MNPs:                         0
SN      0       number of indels:                       4
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           0
SN      0       number of multiallelic SNP sites:       0

CHRNA3 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna3.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna3.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna3.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      85
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         68
SN      0       number of MNPs:                         0
SN      0       number of indels:                       17
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           1
SN      0       number of multiallelic SNP sites:       0

CHRNA4 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna4.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna4.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna4.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      98
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         80
SN      0       number of MNPs:                         0
SN      0       number of indels:                       18
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           1
SN      0       number of multiallelic SNP sites:       1

CHRNA5 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna5.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna5.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna5.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      60
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         42
SN      0       number of MNPs:                         0
SN      0       number of indels:                       18
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           1
SN      0       number of multiallelic SNP sites:       1

CHRNA6 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna6.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna6.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna6.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      8
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         4
SN      0       number of MNPs:                         0
SN      0       number of indels:                       4
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           0
SN      0       number of multiallelic SNP sites:       0

CHRNA7 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna7.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna7.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna7.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      155
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         119
SN      0       number of MNPs:                         0
SN      0       number of indels:                       36
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           5
SN      0       number of multiallelic SNP sites:       0

CHRNA9 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna9.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna9.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna9.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      56
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         47
SN      0       number of MNPs:                         0
SN      0       number of indels:                       9
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           1
SN      0       number of multiallelic SNP sites:       0

CHRNA10 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrna10.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrna10.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrna10.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      15
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         15
SN      0       number of MNPs:                         0
SN      0       number of indels:                       0
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           0
SN      0       number of multiallelic SNP sites:       0

CHRNB1 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrnb1.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrnb1.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrnb1.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      21
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         15
SN      0       number of MNPs:                         0
SN      0       number of indels:                       6
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           1
SN      0       number of multiallelic SNP sites:       0

CHRNB2 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrnb2.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrnb2.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrnb2.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      22
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         17
SN      0       number of MNPs:                         0
SN      0       number of indels:                       5
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           0
SN      0       number of multiallelic SNP sites:       0

CHRNB3 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrnb3.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrnb3.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrnb3.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      46
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         35
SN      0       number of MNPs:                         0
SN      0       number of indels:                       11
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           0
SN      0       number of multiallelic SNP sites:       0

CHRNB4 gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrnb4.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrnb4.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrnb4.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      66
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         48
SN      0       number of MNPs:                         0
SN      0       number of indels:                       18
SN      0       number of others:                       3
SN      0       number of multiallelic sites:           3
SN      0       number of multiallelic SNP sites:       0

CHRNG gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrng.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrng.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrng.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      15
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         11
SN      0       number of MNPs:                         0
SN      0       number of indels:                       4
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           0
SN      0       number of multiallelic SNP sites:       0

CHRND gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrnd.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrnd.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrnd.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key                                  [4]value
SN      0       number of samples:                      1
SN      0       number of records:                      5
SN      0       number of no-ALTs:                      0
SN      0       number of SNPs:                         4
SN      0       number of MNPs:                         0
SN      0       number of indels:                       1
SN      0       number of others:                       0
SN      0       number of multiallelic sites:           0
SN      0       number of multiallelic SNP sites:       0

CHRNE gene variants

~/gatk-data-ref$ bcftools stats SRR622458.fxNmMdUqTag.mdup.chrne.vcf

# This file was produced by bcftools stats (1.9+htslib-1.9) and can be plotted using plot-vcfstats.
# The command line was: bcftools stats  SRR622458.fxNmMdUqTag.mdup.chrne.vcf
#
# Definition of sets:
# ID    [2]id   [3]tab-separated file names
ID      0       SRR622458.fxNmMdUqTag.mdup.chrne.vcf
# SN, Summary numbers:
#   number of records   .. number of data rows in the VCF
#   number of no-ALTs   .. reference-only sites, ALT is either "." or identical to REF
#   number of SNPs      .. number of rows with a SNP
#   number of MNPs      .. number of rows with a MNP, such as CC>TT
#   number of indels    .. number of rows with an indel
#   number of others    .. number of rows with other type, for example a symbolic allele or
#                          a complex substitution, such as ACT>TCGA
#   number of multiallelic sites     .. number of rows with multiple alternate alleles
#   number of multiallelic SNP sites .. number of rows with multiple alternate alleles, all SNPs
# 
#   Note that rows containing multiple types will be counted multiple times, in each
#   counter. For example, a row with a SNP and an indel increments both the SNP and
#   the indel counter.
# 
# SN    [2]id   [3]key  [4]value
SN      0       number of samples:      1
SN      0       number of records:      19
SN      0       number of no-ALTs:      0
SN      0       number of SNPs: 18
SN      0       number of MNPs: 0
SN      0       number of indels:       1
SN      0       number of others:       0
SN      0       number of multiallelic sites:   0
SN      0       number of multiallelic SNP sites:       0
LS0tDQp0aXRsZTogIkdlcm1saW5lIHZhcmlhdGlvbnMgaW4gY2hvbGluZXJnaWMgcmVjZXB0b3Igbmljb3RpbmljIHN1YnVuaXQgZ2VuZXMgKENIUk4vY2hybikgb2YgYW4gaW5kaXZpZHVhbCINCmF1dGhvcjogIkJoYWdpcmF0aGkgRGFzaCINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCiMjIFJlZmVyZW5jZXMgYW5kIHJlc291cmNlcw0KDQpTZXF1ZW5jaW5nIGRhdGEgaXMgb2YgYW4gaW5kaXZpZHVhbCAoTkExMjg5MSkgZnJvbSB0aGUgMTAwMCBnZW5vbWUgcHJvamVjdC4NCg0KaHR0cDovL3d3dy5pbnRlcm5hdGlvbmFsZ2Vub21lLm9yZy8xMDAwLWdlbm9tZXMtYnJvd3NlcnMvDQoNCg0KDQoNCiMjIE1hY2hpbmUNCg0KR29vZ2xlIENsb3VkIFBsYXRmb3JtIChHQ1ApLCA0IHZDUFVzLCAxNSBHQiBSQU0NCg0KR29vZ2xlIENsb3VkIFBsYXRmb3JtIChHQ1ApLCA4IHZDUFVzLCAzMCBHQiBSQU0NCg0KR29vZ2xlIENsb3VkIFBsYXRmb3JtIChHQ1ApLCAyNCB2Q1BVcywgMzIgR0IgUkFNDQoNCkFXUzogYzUuMTh4bGFyZ2UgKDcyIHZDUFVzLCAxNDQgR0IgUkFNKQ0KDQpBV1M6IG01LjI0eGxhcmdlICg5NiB2Q1BVcywgMzg0IEdpQiBSQU0pDQoNCg0KDQojIyBDaG9saW5lcmdpYyByZWNlcHRvciBuaWNvdGluaWMgc3VidW5pdCBnZW5lcyAoQ0hSTi9jaHJuKQ0KDQpUaGVyZSBhcmUgMTYgQ0hSTiBnZW5lcyBpbiBodW1hbnMgY29kaW5nIGZvciAxNiBuaWNvdGluaWMgYWNldHlsY2hvbGluZSByZWNlcHRvciBzdWJ1bml0cy4gDQoNCk5pbmUgc3VidW5pdHMgYXJlIGNsYXNzaWZpZWQgYXMgYWxwaGEgKGEpOiBjaHJuYTEsIGNocm5hMiwgY2hybmEzLCBjaHJuYTQsIGNocm5hNSwgY2hybmE2LCBjaHJuYTcsIGNocm5hOSwgY2hybmExMA0KDQpGb3VyIHN1YnVuaXRzIGFyZSBjbGFzc2lmaWVkIGFzIGJldGEgKGIpIHN1YnVtaXRzOiBjaHJuYjEsIGNocm5iMiwgY2hybmIzLCBjaHJuYjMNCg0KT25lIHN1YmluaXQgaXMga25vd24gYXMgYSBnYW1tYSAoY2hybmcpIHN1YnVuaXQNCg0KT25lIHN1YnVuaXQgaXMga25vd24gYXMgZGVsdGEgKGNocm5kKSBzdWJ1bml0DQoNCkFub3RoZXIgc3VidW5pdCBpcyBjbGFzc2lmaWVkIGFzIGFuIGVwc2lsb24gKGNocm5lKSBzdWJ1bml0LiANCg0KDQojIyBDaHJvbW9zb21hbCBjb29yZGluYXRlcyBvZiBodW1hbiBDSFJOIGdlbmVzDQoNCg0KYGBgDQpjaHJuYTE6IENocm9tb3NvbWUgMiwgTkNfMDAwMDAyLjEyICgxNzQsNzQ3LDU5Mi4uMTc0LDc2NCw0NzIsIGNvbXBsZW1lbnQpIA0KDQpjaHJuYTI6IENocm9tb3NvbWUgOCwgTkNfMDAwMDA4LjExICgyNzQ1OTc2MS4uMjc0NzkyOTYsIGNvbXBsZW1lbnQpIA0KDQpjaHJuYTM6IENocm9tb3NvbWUgMTUsIE5DXzAwMDAxNS4xMCAoNzg1OTMwNTIuLjc4NjIxMjk1LCBjb21wbGVtZW50KQ0KDQpjaHJuYTQ6IENocm9tb3NvbWUgMjAsIE5DXzAwMDAyMC4xMSAoNjMsMzQzLDMxMC4uNjMsMzc1LDQ3MSwgY29tcGxlbWVudCkNCg0KY2hybmE1OiBDaHJvbW9zb21lIDE1LCBOQ18wMDAwMTUuMTAgKDc4NTY1NTIwLi43ODU5NTI2OSkNCg0KY2hybmE2OiBDaHJvbW9zb21lIDgsIE5DXzAwMDAwOC4xMSAoNDI3NTI2MjAuLjQyNzY4Nzg2LCBjb21wbGVtZW50KQ0KDQpjaHJuYTc6IENocm9tb3NvbWUgNywgTkNfMDAwMDczLjYgKDYzMDk4NjkyLi42MzIxMjUyNiwgY29tcGxlbWVudCkNCg0KY2hybmE5OiBDaHJvbW9zb21lIDQsIE5DXzAwMDAwNC4xMiAoNDAzMzUzMjkuLjQwMzU1MjE3KQ0KDQpjaHJuYTEwOiBDaHJvbW9zb21lIDExLCBOQ18wMDAwMTEuMTAgKDM2NjU1ODcuLjM2NzM2MjksIGNvbXBsZW1lbnQpDQoNCmNocm5iMTogQ2hyb21vc29tZSAxNywgTkNfMDAwMDE3LjExICg3NDQ1MDg3Li43NDU3NjEzKQ0KDQpjaHJuYjI6IENocm9tb3NvbWUgMSwgTkNfMDAwMDAxLjExICgxNTQ1Njc3ODEuLjE1NDU4NDcwOCkNCg0KY2hybmIzOiBDaHJvbW9zb21lIDgsIE5DXzAwMDAwOC4xMSAoNDI2OTczNzYuLjQyNzM3NDA3KQ0KDQpjaHJuYjQ6IENocm9tb3NvbWUgMTUsIE5DXzAwMDAxNS4xMCAoNzg2MjMyODIuLjc4NjU1NTg2LCBjb21wbGVtZW50KQ0KDQpjaHJuZzogQ2hyb21vc29tZSAyLCBOQ18wMDAwMDIuMTIgKDIzMjUzOTcyNy4uMjMyNTQ2MzI4KQ0KDQpjaHJuZDogQ2hyb21vc29tZSAyLCBOQ18wMDAwMDIuMTIgKDIzMjUyNjE2MC4uMjMyNTM3OTA3KQ0KDQpjaHJuZTogQ2hyb21vc29tZSAxNywgTkNfMDAwMDE3LjExICg0ODk3NzY5Li40OTA1MDE5LCBjb21wbGVtZW50KQ0KDQpgYGANCg0KDQojIyBDaHJvbW9zb21lLXdpc2UgQ0hSTiBnZW5lcw0KDQoNCmBgYA0KY2hybmIyLSAgICAgICAgIENocm9tb3NvbWUgMSwgTkNfMDAwMDAxLjExICgxNTQ1Njc3ODEuLjE1NDU4NDcwOCkNCmNocm5hMS0gICAgICAgICBDaHJvbW9zb21lIDIsIE5DXzAwMDAwMi4xMiAoMTc0NzQ3NTkyLi4xNzQ3NjQ0NzIsIGNvbXBsZW1lbnQpIA0KDQpjaHJuZy0gICAgICAgICAgQ2hyb21vc29tZSAyLCBOQ18wMDAwMDIuMTIgKDIzMjUzOTcyNy4uMjMyNTQ2MzI4KQ0KY2hybmQtICAgICAgICAgIENocm9tb3NvbWUgMiwgTkNfMDAwMDAyLjEyICgyMzI1MjYxNjAuLjIzMjUzNzkwNykNCg0KY2hybmE5LSAgICAgICAgIENocm9tb3NvbWUgNCwgTkNfMDAwMDA0LjEyICg0MDMzNTMyOS4uNDAzNTUyMTcpDQoNCg0KY2hybmE3LSAgICAgICAgIENocm9tb3NvbWUgNywgTkNfMDAwMDczLjYgKDYzMDk4NjkyLi42MzIxMjUyNiwgY29tcGxlbWVudCkNCg0KDQpjaHJuYTItICAgICAgICAgQ2hyb21vc29tZSA4LCBOQ18wMDAwMDguMTEgKDI3NDU5NzYxLi4yNzQ3OTI5NiwgY29tcGxlbWVudCkgDQpjaHJuYTYtICAgICAgICAgQ2hyb21vc29tZSA4LCBOQ18wMDAwMDguMTEgKDQyNzUyNjIwLi40Mjc2ODc4NiwgY29tcGxlbWVudCkNCmNocm5iMy0gICAgICAgICBDaHJvbW9zb21lIDgsIE5DXzAwMDAwOC4xMSAoNDI2OTczNzYuLjQyNzM3NDA3KQ0KICAgICAgICANCmNocm5hMTAtICAgICAgICBDaHJvbW9zb21lIDExLCBOQ18wMDAwMTEuMTAgKDM2NjU1ODcuLjM2NzM2MjksIGNvbXBsZW1lbnQpDQoNCmNocm5hMy0gICAgICAgICBDaHJvbW9zb21lIDE1LCBOQ18wMDAwMTUuMTAgKDc4NTkzMDUyLi43ODYyMTI5NSwgY29tcGxlbWVudCkNCmNocm5hNS0gICAgICAgICBDaHJvbW9zb21lIDE1LCBOQ18wMDAwMTUuMTAgKDc4NTY1NTIwLi43ODU5NTI2OSkNCmNocm5iNC0gICAgICAgICBDaHJvbW9zb21lIDE1LCBOQ18wMDAwMTUuMTAgKDc4NjIzMjgyLi43ODY1NTU4NiwgY29tcGxlbWVudCkNCg0KDQpjaHJuYjEtICAgICAgICAgQ2hyb21vc29tZSAxNywgTkNfMDAwMDE3LjExICg3NDQ1MDg3Li43NDU3NjEzKQ0KY2hybmUtICAgICAgICAgIENocm9tb3NvbWUgMTcsIE5DXzAwMDAxNy4xMSAoNDg5Nzc2OS4uNDkwNTAxOSwgY29tcGxlbWVudCkNCg0KY2hybmE0LSAgICAgICAgIENocm9tb3NvbWUgMjAsIE5DXzAwMDAyMC4xMSAoNjMzNDMzMTAuLjYzMzc1NDcxLCBjb21wbGVtZW50KQ0KDQpgYGANCg0KIyMgRG93bmxvYWQgYW5hbHlzaXMgZGF0YXNldHMgYW5kIHJlbmFtZSB0aGVtIA0KDQoNCiMjIyMgICAgfi9nYXRrLWRhdGEtcmVmL3RyaW9fb3Jfam9pbnRfY2FsbHMkIHdnZXQgLWJxYyBmdHA6Ly9mdHAuc3JhLmViaS5hYy51ay92b2wxL2Zhc3RxL1NSUjYyMi9TUlI2MjI0NTgvU1JSNjIyNDU4XzEuZmFzdHEuZ3oNCg0KIyMjIyAgICB+L2dhdGstZGF0YS1yZWYvdHJpb19vcl9qb2ludF9jYWxscyQgd2dldCAtYnFjIGZ0cDovL2Z0cC5zcmEuZWJpLmFjLnVrL3ZvbDEvZmFzdHEvU1JSNjIyL1NSUjYyMjQ1OC9TUlI2MjI0NThfMi5mYXN0cS5neg0KDQoNCg0KIyMgRGlyZWN0b3J5IGNvbnRlbnQvRGF0YSBzaXplDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgbHMgLWwNCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgIDY2NzcxMzYwMjg1IE1heSAgMSAwMzo1MCBTUlI2MjI0NThfMS5mYXN0cS5neg0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgNjgzMDAyMDU2NDcgTWF5ICAxIDAzOjQyIFNSUjYyMjQ1OF8yLmZhc3RxLmd6DQoNCg0KDQojIyBDaGVjayBkYXRhIGNvbnRlbnQNCg0KDQojIyMjICAgIH4vZ2F0ay1kYXRhLXJlZiQgemNhdCBTUlI2MjI0NThfMS5mYXN0cS5neiB8IGhlYWQgLW4gMg0KICAgIA0KQFNSUjYyMjQ1OC4xIDEvMQ0KVEdHR0FUVEdHR0dUQUdHR0NUQUdHR0NUQ0dHR1RUR0dHR0FUQUdHR1RHQUdHR1RUVEdHR0FUQUdHR0dUQUdHR1RUQUdHR1RHVFRHR0NUQUdHR1RUQUdHR0NHQUdHR0NDQUdHR0MNCg0KDQojIyMjICAgIH4vZ2F0ay1kYXRhLXJlZiQgemNhdCBTUlI2MjI0NThfMi5mYXN0cS5neiB8IGhlYWQgLW4gMg0KDQpAU1JSNjIyNDU4LjEgMS8yDQpBVEFBQ0NDVEFBQ0NDVEFBQ0NDVEFBQ0dDVEFBQ0NDVEFBQ0NDVEFBQ0NDVEFBQ0NDVEFBQ0FBVEFBQ0NDVEFBQ0NDVEFBQ0FDVEFBQ0NUVEFDQ0NDVEFBQ0NDVEFBQ0NDVENBQw0KDQoNCg0KIyMjIERvd25sb2FkIHJlZmVyZW5jZSAoZmFzdGEsIGZhc3RhIGluZGV4LCBkaWN0aW9uYXJ5KSBhbmQgQldBIGluZGV4ICguYWx0LCAuYW1iLCAuYW5uLCAuYnd0LCAucGFjIGFuZCAuc2EpIGZpbGVzDQoNCmBgYA0KDQogJCBhd3MgczMgY3AgczM6Ly9icm9hZC1yZWZlcmVuY2VzL2hnMzgvdjAvSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEuNjQuYWx0IC4NCg0KIA0KICQgYXdzIHMzIGNwIHMzOi8vYnJvYWQtcmVmZXJlbmNlcy9oZzM4L3YwL0hvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhLjY0LmFtYiAuDQoNCiANCiAkIGF3cyBzMyBjcCBzMzovL2Jyb2FkLXJlZmVyZW5jZXMvaGczOC92MC9Ib21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YS42NC5hbm4gLg0KDQogDQogJCBhd3MgczMgY3AgczM6Ly9icm9hZC1yZWZlcmVuY2VzL2hnMzgvdjAvSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEuNjQuYnd0IC4NCg0KIA0KICQgYXdzIHMzIGNwIHMzOi8vYnJvYWQtcmVmZXJlbmNlcy9oZzM4L3YwL0hvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhLjY0LnBhYyAuDQoNCiANCiAkIGF3cyBzMyBjcCBzMzovL2Jyb2FkLXJlZmVyZW5jZXMvaGczOC92MC9Ib21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YS42NC5zYSAuDQoNCmBgYA0KDQojIyMgQWRkaXRpb25hbCBkaXJlY3RvcnkgY29udGVudHMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBscyAtbA0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgIDU4MTcxMiBKYW4gIDYgIDIwMTYgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZGljdA0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgMzI0OTkxMjc3OCBKYW4gIDUgIDIwMTYgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGENCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICA0ODc1NTMgTm92ICA2IDIzOjQ3IEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhLjY0LmFsdA0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAyMDE5OSBOb3YgIDYgMjM6NDcgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEuNjQuYW1iDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAgNDU1NDc0IE5vdiAgNiAyMzo0NyBIb21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YS42NC5hbm4NCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgIDMyMTczNDcwMDQgTm92ICA2IDIzOjQ3IEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhLjY0LmJ3dA0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDgwNDMzNjczMSBOb3YgIDYgMjM6NDggSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEuNjQucGFjDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAxNjA4NjczNTEyIE5vdiAgNiAyMzo0OCBIb21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YS42NC5zYQ0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgIDE2MDkyOCBEZWMgIDEgIDIwMTYgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEuZmFpDQoNCg0KDQoNCg0KIyMgQWxpZ24gdGhlIHNlcXVlbmNlcyB0byB0aGUgcmVmZXJlbmNlIHNlcXVlbmNlIHVzaW5nIEJXQSANCg0KIyMjIyB+L2dhdGstZGF0YS1yZWYkIGJ3YSBtZW0gLU0gLXQgOTYgLVIgJ0BSR1x0SUQ6U1JSNjIyNDU4XHRMQjpQXHRQTDppbGx1bWluYVx0UFU6RkNDMUg3V0FDWFhcdFNNOk5BMTI4OTEnIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIFNSUjYyMjQ1OF8xLmZhc3RxLmd6IFNSUjYyMjQ1OF8yLmZhc3RxLmd6IHwgc2FtdG9vbHMgdmlldyAtU2JoIHwgc2FtdG9vbHMgc29ydCAtbyBTUlI2MjI0NTguYmFtIC0gJiYgc2FtdG9vbHMgaW5kZXggU1JSNjIyNDU4LmJhbSAmJiBzYW10b29scyBmbGFnc3RhdCBTUlI2MjI0NTguYmFtDQoNCi4uLi4uLi4uLi4uLi4uLi4NCg0KW21haW5dIFZlcnNpb246IDAuNy4xNy1yMTE4OA0KDQpbbWFpbl0gQ01EOiBid2EgbWVtIC1NIC10IDk2IC1SIEBSR1x0SUQ6U1JSNjIyNDU4XHRMQjpQXHRQTDppbGx1bWluYVx0UFU6RkNDMUg3V0FDWFhcdFNNOk5BMTI4OTEgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEgU1JSNjIyNDU4XzEuZmFzdHEuZ3ogU1JSNjIyNDU4XzIuZmFzdHEuZ3oNCg0KW21haW5dIFJlYWwgdGltZTogMjcwOTguMDU5IHNlYzsgQ1BVOiAxMzM3MDgzLjY2NyBzZWMNCg0KW2JhbV9zb3J0X2NvcmVdIG1lcmdpbmcgZnJvbSA5NDcgZmlsZXMgYW5kIDEgaW4tbWVtb3J5IGJsb2Nrcy4uLg0KDQoNCmBgYA0KMjQ0ODA5OTA0NiArIDAgaW4gdG90YWwgKFFDLXBhc3NlZCByZWFkcyArIFFDLWZhaWxlZCByZWFkcykNCjExNTIwOTgzICsgMCBzZWNvbmRhcnkNCjEyODgwMjk3ICsgMCBzdXBwbGVtZW50YXJ5DQowICsgMCBkdXBsaWNhdGVzDQoyMzY4NDcyNjI3ICsgMCBtYXBwZWQgKDk2Ljc1JSA6IE4vQSkNCjI0MjM2OTc3NjYgKyAwIHBhaXJlZCBpbiBzZXF1ZW5jaW5nDQoxMjExODQ4ODgzICsgMCByZWFkMQ0KMTIxMTg0ODg4MyArIDAgcmVhZDINCjIyNTg4ODUzMzggKyAwIHByb3Blcmx5IHBhaXJlZCAoOTMuMjAlIDogTi9BKQ0KMjMxNzI2NjY3NiArIDAgd2l0aCBpdHNlbGYgYW5kIG1hdGUgbWFwcGVkDQoyNjgwNDY3MSArIDAgc2luZ2xldG9ucyAoMS4xMSUgOiBOL0EpDQozMTAyMjQ1NCArIDAgd2l0aCBtYXRlIG1hcHBlZCB0byBhIGRpZmZlcmVudCBjaHINCjE3NDU2NDM1ICsgMCB3aXRoIG1hdGUgbWFwcGVkIHRvIGEgZGlmZmVyZW50IGNociAobWFwUT49NSkNCg0KYGBgDQoNCiMjIEFsaWdubWVudCBzdGF0aXN0aWNzIGNvdWxkIGFsc28gb2J0YWluZWQgc2VwYXJhdGVseQ0KDQojIyMjICAgICAgfi9nYXRrLWRhdGEtcmVmJCBzYW1iYW1iYSBmbGFnc3RhdCAtcCBTUlI2MjI0NTguYmFtDQoNCmBgYA0KMiw0NDgsMDk5LDA0NiArIDAgaW4gdG90YWwgKFFDLXBhc3NlZCByZWFkcyArIFFDLWZhaWxlZCByZWFkcykNCg0KMTE1MjA5ODMgKyAwIHNlY29uZGFyeQ0KMTI4ODAyOTcgKyAwIHN1cHBsZW1lbnRhcnkNCjAgKyAwIGR1cGxpY2F0ZXMNCjIzNjg0NzI2MjcgKyAwIG1hcHBlZCAoOTYuNzUlOk4vQSkNCjI0MjM2OTc3NjYgKyAwIHBhaXJlZCBpbiBzZXF1ZW5jaW5nDQoxMjExODQ4ODgzICsgMCByZWFkMQ0KMTIxMTg0ODg4MyArIDAgcmVhZDINCjIyNTg4ODUzMzggKyAwIHByb3Blcmx5IHBhaXJlZCAoOTMuMjAlOk4vQSkNCjIzMTcyNjY2NzYgKyAwIHdpdGggaXRzZWxmIGFuZCBtYXRlIG1hcHBlZA0KMjY4MDQ2NzEgKyAwIHNpbmdsZXRvbnMgKDEuMTElOk4vQSkNCjMxMDIyNDU0ICsgMCB3aXRoIG1hdGUgbWFwcGVkIHRvIGEgZGlmZmVyZW50IGNocg0KMTc0NTY0MzUgKyAwIHdpdGggbWF0ZSBtYXBwZWQgdG8gYSBkaWZmZXJlbnQgY2hyIChtYXBRPj01KQ0KDQpgYGANCg0KDQojIyBBZGRpdGlvbmFsIGRpcmVjdG9yeSBjb250ZW50cw0KDQojIyMjICAgICB+L2dhdGstZGF0YS1yZWYkIGxzIC1sDQoNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAxODkwMDU3NzcwMTEgTWF5ICAxIDE3OjQ2IFNSUjYyMjQ1OC5iYW0NCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgIDk3Nzc2NzIgTWF5ICAxIDE5OjEyIFNSUjYyMjQ1OC5iYW0uYmFpDQoNCg0KDQojIyBWYWxpZGF0ZSB0aGUgQmFtIEZpbGUgKGJlZm9yZSBnYXRrIGhhcGxvdHlwZSBhbmFseXNpcykNCg0KIyMjIyAgICAgIGdhdGsgVmFsaWRhdGVTYW1GaWxlIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5iYW0gLU0gU1VNTUFSWSAtTyBzdW1tYXJ5LVNSUjYyMjQ1OA0KDQoNCi4uLi4uLi4uLi4uLi4uLg0KDQpbRnJpIE1heSAwMyAyMTowMTozNCBVVEMgMjAxOV0gcGljYXJkLnNhbS5WYWxpZGF0ZVNhbUZpbGUgZG9uZS4gRWxhcHNlZCB0aW1lOiA0NDMuNDEgbWludXRlcy4NCg0KUnVudGltZS50b3RhbE1lbW9yeSgpPTE5MTYyNzI2NDANCg0KVG8gZ2V0IGhlbHAsIHNlZSBodHRwOi8vYnJvYWRpbnN0aXR1dGUuZ2l0aHViLmlvL3BpY2FyZC9pbmRleC5odG1sI0dldHRpbmdIZWxwDQoNClRvb2wgcmV0dXJuZWQ6IDMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBjYXQgc3VtbWFyeS1TUlI2MjI0NTgNCg0KYGBgDQojIyBISVNUT0dSQU0gICAgamF2YS5sYW5nLlN0cmluZw0KDQpFcnJvciBUeXBlICAgICAgICAgICAgICBDb3VudA0KDQpFUlJPUjpJTlZBTElEX1RBR19OTSAgICAyMDcwODcNCg0KYGBgDQoNCg0KDQoNCg0KIyMgRml4IHRoZSBJTlZBTElEX1RBR19OTSBlcnJvcg0KDQoNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBnYXRrIFNldE5tTWRBbmRVcVRhZ3MgLVIgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEgLUkgU1JSNjIyNDU4LmJhbSAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcuYmFtDQoNClVzaW5nIEdBVEsgamFyIC9ob21lL2IwZDI2NDcvbWluaWNvbmRhMy9zaGFyZS9nYXRrNC00LjEuMi4wLTAvZ2F0ay1wYWNrYWdlLTQuMS4yLjAtbG9jYWwuamFyDQoNCg0KDQoNCg0KIyMgVmFsaWRhdGUgdGhlICdTZXRObU1kQW5kVXFUYWdzJyBvciBwcmVzdW1lZCBmaXhlZCBCQU0gZmlsZSBhZ2Fpbg0KDQoNCiMjIyMgfi9nYXRrLWRhdGEtcmVmJCBnYXRrIFZhbGlkYXRlU2FtRmlsZSAtUiBIb21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YSAtSSBTUlI2MjI0NTguZnhObU1kVXFUYWcuYmFtIC1NIFNVTU1BUlkgLU8gc3VtbWFyeS1TUlI2MjI0NTguZnhObU1kVXFUYWcNCg0KDQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KDQpJTkZPICAgIDIwMTktMDUtMDQgMTE6MDU6NDYgICAgIFNhbUZpbGVWYWxpZGF0b3IgICAgICAgIFZhbGlkYXRlZCBSZWFkIDIsMzkwLDAwMCwwMDAgcmVjb3Jkcy4gIEVsYXBzZWQgdGltZTogMDU6NDA6NTRzLiAgVGltZSBmb3IgbGFzdCAxMCwwMDAsMDAwOiAgMTA0cy4gIExhc3QgcmVhZCBwb3NpdGlvbjogY2hyVW5fSlRGSDAxMDAxNTEydjFfZGVjb3k6MSwyNDINCg0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQoNCg0KW1NhdCBNYXkgMDQgMTE6MDk6NTkgVVRDIDIwMTldIHBpY2FyZC5zYW0uVmFsaWRhdGVTYW1GaWxlIGRvbmUuIEVsYXBzZWQgdGltZTogMzQ1LjE2IG1pbnV0ZXMuDQoNClJ1bnRpbWUudG90YWxNZW1vcnkoKT0xNDcwMTAzNTUyDQoNClRvb2wgcmV0dXJuZWQ6IDANCg0KDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgY2F0IHN1bW1hcnktU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnIA0KDQpObyBlcnJvcnMgZm91bmQNCg0KDQoNCg0KIyMgTWFyayBkdXBsaWNhdGVzDQoNCiMjIyMgfi9nYXRrLWRhdGEtcmVmJCBnYXRrIE1hcmtEdXBsaWNhdGVzIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5iYW0gLU8gU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuYmFtIC1NIFNSUjYyMjQ1OC5jaHIyMC5meE5tTWRVcVRhZy5kdXBNZXRyaWNzLnR4dA0KDQoNCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KDQoNCg0KSU5GTyAgICAyMDE5LTA1LTA0IDIzOjQxOjE2ICAgICBNYXJrRHVwbGljYXRlcyAgV2lsbCByZXRhaW4gdXAgdG8gMTEyLDg1Miw5OTIgZHVwbGljYXRlIGluZGljZXMgYmVmb3JlIHNwaWxsaW5nIHRvIGRpc2suDQoNCklORk8gICAgMjAxOS0wNS0wNCAyMzo0MToxNiAgICAgTWFya0R1cGxpY2F0ZXMgIFRyYXZlcnNpbmcgcmVhZCBwYWlyIGluZm9ybWF0aW9uIGFuZCBkZXRlY3RpbmcgZHVwbGljYXRlcy4NCg0KSU5GTyAgICAyMDE5LTA1LTA0IDIzOjQxOjE2ICAgICBTb3J0aW5nQ29sbGVjdGlvbiAgICAgICBDcmVhdGluZyBtZXJnaW5nIGl0ZXJhdG9yIGZyb20gOTIgZmlsZXMNCg0KDQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQoNCg0KDQpJTkZPICAgIDIwMTktMDUtMDQgMjM6NTM6MDkgICAgIFNvcnRpbmdDb2xsZWN0aW9uICAgICAgIENyZWF0aW5nIG1lcmdpbmcgaXRlcmF0b3IgZnJvbSAxODUgZmlsZXMNCg0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCg0KSU5GTyAgICAyMDE5LTA1LTA1IDAwOjA5OjM1ICAgICBNYXJrRHVwbGljYXRlcyAgTWFya2luZyAxMjYsNDE2LDExNiByZWNvcmRzIGFzIGR1cGxpY2F0ZXMuDQoNCklORk8gICAgMjAxOS0wNS0wNSAwMDowOTozNSAgICAgTWFya0R1cGxpY2F0ZXMgIEZvdW5kIDAgb3B0aWNhbCBkdXBsaWNhdGUgY2x1c3RlcnMuDQoNCklORk8gICAgMjAxOS0wNS0wNSAwMDowOTozNSAgICAgTWFya0R1cGxpY2F0ZXMgIFJlYWRzIGFyZSBhc3N1bWVkIHRvIGJlIG9yZGVyZWQgYnk6IGNvb3JkaW5hdGUNCg0KDQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQoNCltTdW4gTWF5IDA1IDA0OjU5OjQ0IFVUQyAyMDE5XSBwaWNhcmQuc2FtLm1hcmtkdXBsaWNhdGVzLk1hcmtEdXBsaWNhdGVzIGRvbmUuIEVsYXBzZWQgdGltZTogNjg0Ljk2IG1pbnV0ZXMuDQoNClJ1bnRpbWUudG90YWxNZW1vcnkoKT0yNjEwNDI5OTUyDQoNClRvb2wgcmV0dXJuZWQ6IDANCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBoZWFkIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5kdXBNZXRyaWNzLnR4dCANCg0KLi4uLi4uLi4uLi4uLi4uLi4uLg0KDQpgYGANCkxJQlJBUlkgVU5QQUlSRURfUkVBRFNfRVhBTUlORUQgUkVBRF9QQUlSU19FWEFNSU5FRCAgICAgU0VDT05EQVJZX09SX1NVUFBMRU1FTlRBUllfUkRTICBVTk1BUFBFRF9SRUFEUyAgVU5QQUlSRURfUkVBRF9EVVBMSUNBVEVTICAgICAgICBSRUFEX1BBSVJfRFVQTElDQVRFUyAgICBSRUFEX1BBSVJfT1BUSUNBTF9EVVBMSUNBVEVTICAgIFBFUkNFTlRfRFVQTElDQVRJT04gIEVTVElNQVRFRF9MSUJSQVJZX1NJWkUNCg0KUCAgICAgICAyNjgwNDY3MSAgICAgICAgMTE1ODYzMzMzOCAgICAgIDI0NDAxMjgwICAgICAgICA3OTYyNjQxOSAgICAgICAgMTIxNDk2NTYgICAgICAgIDU3MTMzMjMwICAgICAgICAwICAgICAgIDAuMDUzOTMgMTEzNTg3ODA4ODYNCg0KYGBgDQoNCg0KDQoNCiMjIEFkZGl0aW9uYWwgZGlyZWN0b3J5IGNvbnRlbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgbHMgLWwNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAyNTY0MTQ1MTQ3NDggTWF5ICA0IDA1OjA3IFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5iYW0NCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgIDk3OTE1NjAgTWF5ICA0IDE3OjE4IFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5iYW0uYmFpDQoNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgICA0NjA0IE1heSAgNSAwNDo1OSBTUlI2MjI0NTguZnhObU1kVXFUYWcuZHVwTWV0cmljcy50eHQNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAyNTkxNDgxNjQ5NjUgTWF5ICA1IDA0OjU5IFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbQ0KDQoNCg0KDQoNCiMjIEV4ZWN1dGUgYSBiYXNoIHNjcmlwdCBjb250YWluaW5nIHRoZSBnYXRrIEhhcGxvdHlwZUNhbGxlciBjb21tYW5kcyB0byBnZW5lcmF0ZSBDSFJOIGdlbmV3aXNlIHZjZiBmaWxlcyANCg0KYGBgDQojIS9iaW4vYmFzaA0KDQpub2h1cCBnYXRrIEhhcGxvdHlwZUNhbGxlciAtUiBIb21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YSAtSSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5iYW0gLUwgY2hyMjoxNzQsNzQ3LDU5Mi0xNzQsNzY0LDQ3MiAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTEudmNmID4mIGhjYWxsLjU4LmNocm5hMS5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHI4OjI3LDQ1OSw3NjEtMjcsNDc5LDI5NiAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTIudmNmID4mIGhjYWxsLjU4LmNocm5hMi5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHIxNTo3ODU5MzA1Mi03ODYyMTI5NSAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTMudmNmID4mIGhjYWxsLjU4LmNocm5hMy5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHIyMDo2MzM0MzMxMC02MzM3NTQ3MSAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTQudmNmID4mIGhjYWxsLjU4LmNocm5hNC5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHIxNTo3ODU2NTUyMC03ODU5NTI2OSAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTUudmNmID4mIGhjYWxsLjU4LmNocm5hNS5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHI4OjQyNzUyNjIwLTQyNzY4Nzg2IC1PIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNi52Y2YgPiYgaGNhbGwuNTguY2hybmE2LmxvZyAmDQoNCg0Kbm9odXAgZ2F0ayBIYXBsb3R5cGVDYWxsZXIgLVIgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEgLUkgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuYmFtIC1MIGNocjc6NjMwOTg2OTItNjMyMTI1MjYgLU8gU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE3LnZjZiA+JiBoY2FsbC41OC5jaHJuYTcubG9nICYNCg0KDQpub2h1cCBnYXRrIEhhcGxvdHlwZUNhbGxlciAtUiBIb21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YSAtSSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5iYW0gLUwgY2hyNDo0MDMzNTMyOS00MDM1NTIxNyAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTkudmNmID4mIGhjYWxsLjU4LmNocm5hOS5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHIxMTozNjY1NTg3LTM2NzM2MjkgLU8gU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmExMC52Y2YgPiYgaGNhbGwuNTguY2hybmExMC5sb2cgJg0KDQpub2h1cCBnYXRrIEhhcGxvdHlwZUNhbGxlciAtUiBIb21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YSAtSSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5iYW0gLUwgY2hyMTc6NzQ0NTA4Ny03NDU3NjEzIC1PIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iMS52Y2YgPiYgaGNhbGwuNTguY2hybmIxLmxvZyAmDQoNCg0Kbm9odXAgZ2F0ayBIYXBsb3R5cGVDYWxsZXIgLVIgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEgLUkgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuYmFtIC1MIGNocjE6MTU0NTY3NzgxLTE1NDU4NDcwOCAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYjIudmNmID4mIGhjYWxsLjU4LmNocm5iMi5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHI4OjQyNjk3Mzc2LTQyNzM3NDA3IC1PIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iMy52Y2YgPiYgaGNhbGwuNTguY2hybmIzLmxvZyAmDQoNCg0Kbm9odXAgZ2F0ayBIYXBsb3R5cGVDYWxsZXIgLVIgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEgLUkgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuYmFtIC1MIGNocjE1Ojc4NjIzMjgyLTc4NjU1NTg2IC1PIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iNC52Y2YgPiYgaGNhbGwuNTguY2hybmI0LmxvZyAmDQoNCg0KDQpub2h1cCBnYXRrIEhhcGxvdHlwZUNhbGxlciAtUiBIb21vX3NhcGllbnNfYXNzZW1ibHkzOC5mYXN0YSAtSSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5iYW0gLUwgY2hyMjoyMzI1Mzk3MjctMjMyNTQ2MzI4IC1PIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5nLnZjZiA+JiBoY2FsbC41OC5jaHJuZy5sb2cgJg0KDQoNCm5vaHVwIGdhdGsgSGFwbG90eXBlQ2FsbGVyIC1SIEhvbW9fc2FwaWVuc19hc3NlbWJseTM4LmZhc3RhIC1JIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmJhbSAtTCBjaHIyOjIzMjUyNjE2MC0yMzI1Mzc5MDcgLU8gU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmQudmNmID4mIGhjYWxsLjU4LmNocm5kLmxvZyAmDQoNCg0Kbm9odXAgZ2F0ayBIYXBsb3R5cGVDYWxsZXIgLVIgSG9tb19zYXBpZW5zX2Fzc2VtYmx5MzguZmFzdGEgLUkgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuYmFtIC1MIGNocjE3OjQ4OTc3NjktNDkwNTAxOSAtTyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuZS52Y2YgPiYgaGNhbGwuNTguY2hybmUubG9nICYNCg0KYGBgDQoNCg0KIyMgQWRkaXRpb25hbCBkaXJlY3RvcnkgY29udGVudHMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBscyAtbA0KDQpgYGANCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTgxNTk4IE1heSAgNSAxOTo1MSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTEudmNmDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDExNTQ2OSBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmExLnZjZi5pZHgNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxNzg0NjIgTWF5ICA1IDE5OjUxIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hMTAudmNmDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDExNDA5MCBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmExMC52Y2YuaWR4DQoNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxODUxMDQgTWF5ICA1IDE5OjUxIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hMi52Y2YNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTE0MzE3IE1heSAgNSAxOTo1MSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTIudmNmLmlkeA0KDQoNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTk0Mjg3IE1heSAgNSAxOTo1MiBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTMudmNmDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDExNDcxNyBNYXkgIDUgMTk6NTIgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmEzLnZjZi5pZHgNCg0KDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDE5Mzk4MCBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE0LnZjZg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxMTQ1OTcgTWF5ICA1IDE5OjUxIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNC52Y2YuaWR4DQoNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxODgzNTMgTWF5ICA1IDE5OjUxIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNS52Y2YNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTE0NzE1IE1heSAgNSAxOTo1MiBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTUudmNmLmlkeA0KDQoNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTc2ODYyIE1heSAgNSAxOTo1MSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTYudmNmDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDExNDQyMSBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE2LnZjZi5pZHgNCg0KDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDIwMzU1OSBNYXkgIDUgMTk6NTIgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE3LnZjZg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxMjIwMDMgTWF5ICA1IDE5OjUyIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNy52Y2YuaWR4DQoNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxODY3OTcgTWF5ICA1IDE5OjUyIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hOS52Y2YNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTE0NDE5IE1heSAgNSAxOTo1MiBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTkudmNmLmlkeA0KDQoNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTc5NzUyIE1heSAgNSAxOTo1MSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYjEudmNmDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDExNDE2NyBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmIxLnZjZi5pZHgNCg0KDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDE3OTk0MCBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmIyLnZjZg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxMTUzMDcgTWF5ICA1IDE5OjUxIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iMi52Y2YuaWR4DQoNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxODQwOTQgTWF5ICA1IDE5OjUyIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iMy52Y2YNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTE0NDM1IE1heSAgNSAxOTo1MiBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYjMudmNmLmlkeA0KDQoNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTg4ODQ5IE1heSAgNSAxOTo1MiBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYjQudmNmDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDExNDcxNiBNYXkgIDUgMTk6NTIgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmI0LnZjZi5pZHgNCg0KDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDE3NjEzMyBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmQudmNmDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgIDExNTg5MyBNYXkgIDUgMTk6NTEgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmQudmNmLmlkeA0KDQoNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTc5MTk3IE1heSAgNSAxOTo1MSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuZS52Y2YNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgMTE0MDk2IE1heSAgNSAxOTo1MSBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuZS52Y2YuaWR4DQoNCg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxNzgxMjcgTWF5ICA1IDE5OjUxIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5nLnZjZg0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAxMTU4OTIgTWF5ICA1IDE5OjUxIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5nLnZjZi5pZHgNCg0KDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgICAgNjM2MyBNYXkgIDUgMTk6NTEgaGNhbGwuNTguY2hybmExLmxvZw0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAgIDYxNjMgTWF5ICA1IDE5OjUxIGhjYWxsLjU4LmNocm5hMTAubG9nDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgICAgNjM0NyBNYXkgIDUgMTk6NTEgaGNhbGwuNTguY2hybmEyLmxvZw0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAgIDY0NzIgTWF5ICA1IDE5OjUyIGhjYWxsLjU4LmNocm5hMy5sb2cNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgICA2NDY5IE1heSAgNSAxOTo1MSBoY2FsbC41OC5jaHJuYTQubG9nDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgICAgNjQ3MCBNYXkgIDUgMTk6NTIgaGNhbGwuNTguY2hybmE1LmxvZw0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAgIDYyMzcgTWF5ICA1IDE5OjUxIGhjYWxsLjU4LmNocm5hNi5sb2cNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgICA2NTk0IE1heSAgNSAxOTo1MiBoY2FsbC41OC5jaHJuYTcubG9nDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgICAgNjQ1NSBNYXkgIDUgMTk6NTIgaGNhbGwuNTguY2hybmE5LmxvZw0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAgIDYzNDggTWF5ICA1IDE5OjUxIGhjYWxsLjU4LmNocm5iMS5sb2cNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgICA2MzUxIE1heSAgNSAxOTo1MSBoY2FsbC41OC5jaHJuYjIubG9nDQotcnctcnctci0tIDEgYjBkMjY0NyBiMGQyNjQ3ICAgICAgICAgNjQ3NiBNYXkgIDUgMTk6NTIgaGNhbGwuNTguY2hybmIzLmxvZw0KLXJ3LXJ3LXItLSAxIGIwZDI2NDcgYjBkMjY0NyAgICAgICAgIDY0NjIgTWF5ICA1IDE5OjUyIGhjYWxsLjU4LmNocm5iNC5sb2cNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgICA2MjQwIE1heSAgNSAxOTo1MSBoY2FsbC41OC5jaHJuZC5sb2cNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgICA2MTQ5IE1heSAgNSAxOTo1MSBoY2FsbC41OC5jaHJuZS5sb2cNCi1ydy1ydy1yLS0gMSBiMGQyNjQ3IGIwZDI2NDcgICAgICAgICA2MjI5IE1heSAgNSAxOTo1MSBoY2FsbC41OC5jaHJuZy5sb2cNCmBgYA0KDQoNCiMjIENIUk5BMSBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgfi9nYXRrLWRhdGEtcmVmJCBiY2Z0b29scyBzdGF0cyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTEudmNmDQoNCg0KYGBgDQojIFRoaXMgZmlsZSB3YXMgcHJvZHVjZWQgYnkgYmNmdG9vbHMgc3RhdHMgKDEuOStodHNsaWItMS45KSBhbmQgY2FuIGJlIHBsb3R0ZWQgdXNpbmcgcGxvdC12Y2ZzdGF0cy4NCg0KIyBUaGUgY29tbWFuZCBsaW5lIHdhczogYmNmdG9vbHMgc3RhdHMgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hMS52Y2YNCg0KIyANCiMgU04gICAgWzJdaWQgICBbM11rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzRddmFsdWUNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygc2FtcGxlczogICAgICAgICAgICAgICAgICAgICAgMQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiByZWNvcmRzOiAgICAgICAgICAgICAgICAgICAgICAzNw0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBuby1BTFRzOiAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIFNOUHM6ICAgICAgICAgICAgICAgICAgICAgICAgIDI4DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIE1OUHM6ICAgICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgaW5kZWxzOiAgICAgICAgICAgICAgICAgICAgICAgOQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBvdGhlcnM6ICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBzaXRlczogICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlczogICAgICAgMA0KDQpgYGANCg0KIyMgQ0hSTkEyIGdlbmUgdmFyaWFudHMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBiY2Z0b29scyBzdGF0cyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTIudmNmDQoNCmBgYA0KIyBUaGlzIGZpbGUgd2FzIHByb2R1Y2VkIGJ5IGJjZnRvb2xzIHN0YXRzICgxLjkraHRzbGliLTEuOSkgYW5kIGNhbiBiZSBwbG90dGVkIHVzaW5nIHBsb3QtdmNmc3RhdHMuDQojIFRoZSBjb21tYW5kIGxpbmUgd2FzOiBiY2Z0b29scyBzdGF0cyAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmEyLnZjZg0KIw0KIyBEZWZpbml0aW9uIG9mIHNldHM6DQojIElEICAgIFsyXWlkICAgWzNddGFiLXNlcGFyYXRlZCBmaWxlIG5hbWVzDQpJRCAgICAgIDAgICAgICAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmEyLnZjZg0KIyBTTiwgU3VtbWFyeSBudW1iZXJzOg0KIyAgIG51bWJlciBvZiByZWNvcmRzICAgLi4gbnVtYmVyIG9mIGRhdGEgcm93cyBpbiB0aGUgVkNGDQojICAgbnVtYmVyIG9mIG5vLUFMVHMgICAuLiByZWZlcmVuY2Utb25seSBzaXRlcywgQUxUIGlzIGVpdGhlciAiLiIgb3IgaWRlbnRpY2FsIHRvIFJFRg0KIyAgIG51bWJlciBvZiBTTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIFNOUA0KIyAgIG51bWJlciBvZiBNTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIE1OUCwgc3VjaCBhcyBDQz5UVA0KIyAgIG51bWJlciBvZiBpbmRlbHMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhbiBpbmRlbA0KIyAgIG51bWJlciBvZiBvdGhlcnMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBvdGhlciB0eXBlLCBmb3IgZXhhbXBsZSBhIHN5bWJvbGljIGFsbGVsZSBvcg0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgYSBjb21wbGV4IHN1YnN0aXR1dGlvbiwgc3VjaCBhcyBBQ1Q+VENHQQ0KIyAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXMgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRlIGFsbGVsZXMNCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlcyAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzLCBhbGwgU05Qcw0KIyANCiMgICBOb3RlIHRoYXQgcm93cyBjb250YWluaW5nIG11bHRpcGxlIHR5cGVzIHdpbGwgYmUgY291bnRlZCBtdWx0aXBsZSB0aW1lcywgaW4gZWFjaA0KIyAgIGNvdW50ZXIuIEZvciBleGFtcGxlLCBhIHJvdyB3aXRoIGEgU05QIGFuZCBhbiBpbmRlbCBpbmNyZW1lbnRzIGJvdGggdGhlIFNOUCBhbmQNCiMgICB0aGUgaW5kZWwgY291bnRlci4NCiMgDQojIFNOICAgIFsyXWlkICAgWzNda2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0XXZhbHVlDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHNhbXBsZXM6ICAgICAgICAgICAgICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgcmVjb3JkczogICAgICAgICAgICAgICAgICAgICAgNDcNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygbm8tQUxUczogICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBTTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICA0Mw0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBNTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIGluZGVsczogICAgICAgICAgICAgICAgICAgICAgIDQNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygb3RoZXJzOiAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXM6ICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXM6ICAgICAgIDANCg0KYGBgDQoNCg0KIyMgQ0hSTkEzIGdlbmUgdmFyaWFudHMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBiY2Z0b29scyBzdGF0cyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTMudmNmDQoNCmBgYA0KIyBUaGlzIGZpbGUgd2FzIHByb2R1Y2VkIGJ5IGJjZnRvb2xzIHN0YXRzICgxLjkraHRzbGliLTEuOSkgYW5kIGNhbiBiZSBwbG90dGVkIHVzaW5nIHBsb3QtdmNmc3RhdHMuDQojIFRoZSBjb21tYW5kIGxpbmUgd2FzOiBiY2Z0b29scyBzdGF0cyAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmEzLnZjZg0KIw0KIyBEZWZpbml0aW9uIG9mIHNldHM6DQojIElEICAgIFsyXWlkICAgWzNddGFiLXNlcGFyYXRlZCBmaWxlIG5hbWVzDQpJRCAgICAgIDAgICAgICAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmEzLnZjZg0KIyBTTiwgU3VtbWFyeSBudW1iZXJzOg0KIyAgIG51bWJlciBvZiByZWNvcmRzICAgLi4gbnVtYmVyIG9mIGRhdGEgcm93cyBpbiB0aGUgVkNGDQojICAgbnVtYmVyIG9mIG5vLUFMVHMgICAuLiByZWZlcmVuY2Utb25seSBzaXRlcywgQUxUIGlzIGVpdGhlciAiLiIgb3IgaWRlbnRpY2FsIHRvIFJFRg0KIyAgIG51bWJlciBvZiBTTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIFNOUA0KIyAgIG51bWJlciBvZiBNTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIE1OUCwgc3VjaCBhcyBDQz5UVA0KIyAgIG51bWJlciBvZiBpbmRlbHMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhbiBpbmRlbA0KIyAgIG51bWJlciBvZiBvdGhlcnMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBvdGhlciB0eXBlLCBmb3IgZXhhbXBsZSBhIHN5bWJvbGljIGFsbGVsZSBvcg0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgYSBjb21wbGV4IHN1YnN0aXR1dGlvbiwgc3VjaCBhcyBBQ1Q+VENHQQ0KIyAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXMgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRlIGFsbGVsZXMNCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlcyAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzLCBhbGwgU05Qcw0KIyANCiMgICBOb3RlIHRoYXQgcm93cyBjb250YWluaW5nIG11bHRpcGxlIHR5cGVzIHdpbGwgYmUgY291bnRlZCBtdWx0aXBsZSB0aW1lcywgaW4gZWFjaA0KIyAgIGNvdW50ZXIuIEZvciBleGFtcGxlLCBhIHJvdyB3aXRoIGEgU05QIGFuZCBhbiBpbmRlbCBpbmNyZW1lbnRzIGJvdGggdGhlIFNOUCBhbmQNCiMgICB0aGUgaW5kZWwgY291bnRlci4NCiMgDQojIFNOICAgIFsyXWlkICAgWzNda2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0XXZhbHVlDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHNhbXBsZXM6ICAgICAgICAgICAgICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgcmVjb3JkczogICAgICAgICAgICAgICAgICAgICAgODUNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygbm8tQUxUczogICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBTTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICA2OA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBNTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIGluZGVsczogICAgICAgICAgICAgICAgICAgICAgIDE3DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzOiAgICAgICAgICAgMQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQpgYGANCg0KDQojIyBDSFJOQTQgZ2VuZSB2YXJpYW50cw0KDQojIyMjICAgICB+L2dhdGstZGF0YS1yZWYkIGJjZnRvb2xzIHN0YXRzIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNC52Y2YNCg0KYGBgDQojIFRoaXMgZmlsZSB3YXMgcHJvZHVjZWQgYnkgYmNmdG9vbHMgc3RhdHMgKDEuOStodHNsaWItMS45KSBhbmQgY2FuIGJlIHBsb3R0ZWQgdXNpbmcgcGxvdC12Y2ZzdGF0cy4NCiMgVGhlIGNvbW1hbmQgbGluZSB3YXM6IGJjZnRvb2xzIHN0YXRzICBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTQudmNmDQojDQojIERlZmluaXRpb24gb2Ygc2V0czoNCiMgSUQgICAgWzJdaWQgICBbM110YWItc2VwYXJhdGVkIGZpbGUgbmFtZXMNCklEICAgICAgMCAgICAgICBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTQudmNmDQojIFNOLCBTdW1tYXJ5IG51bWJlcnM6DQojICAgbnVtYmVyIG9mIHJlY29yZHMgICAuLiBudW1iZXIgb2YgZGF0YSByb3dzIGluIHRoZSBWQ0YNCiMgICBudW1iZXIgb2Ygbm8tQUxUcyAgIC4uIHJlZmVyZW5jZS1vbmx5IHNpdGVzLCBBTFQgaXMgZWl0aGVyICIuIiBvciBpZGVudGljYWwgdG8gUkVGDQojICAgbnVtYmVyIG9mIFNOUHMgICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIGEgU05QDQojICAgbnVtYmVyIG9mIE1OUHMgICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIGEgTU5QLCBzdWNoIGFzIENDPlRUDQojICAgbnVtYmVyIG9mIGluZGVscyAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIGFuIGluZGVsDQojICAgbnVtYmVyIG9mIG90aGVycyAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG90aGVyIHR5cGUsIGZvciBleGFtcGxlIGEgc3ltYm9saWMgYWxsZWxlIG9yDQojICAgICAgICAgICAgICAgICAgICAgICAgICBhIGNvbXBsZXggc3Vic3RpdHV0aW9uLCBzdWNoIGFzIEFDVD5UQ0dBDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBzaXRlcyAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcw0KIyAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzIC4uIG51bWJlciBvZiByb3dzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRlIGFsbGVsZXMsIGFsbCBTTlBzDQojIA0KIyAgIE5vdGUgdGhhdCByb3dzIGNvbnRhaW5pbmcgbXVsdGlwbGUgdHlwZXMgd2lsbCBiZSBjb3VudGVkIG11bHRpcGxlIHRpbWVzLCBpbiBlYWNoDQojICAgY291bnRlci4gRm9yIGV4YW1wbGUsIGEgcm93IHdpdGggYSBTTlAgYW5kIGFuIGluZGVsIGluY3JlbWVudHMgYm90aCB0aGUgU05QIGFuZA0KIyAgIHRoZSBpbmRlbCBjb3VudGVyLg0KIyANCiMgU04gICAgWzJdaWQgICBbM11rZXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzRddmFsdWUNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygc2FtcGxlczogICAgICAgICAgICAgICAgICAgICAgMQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiByZWNvcmRzOiAgICAgICAgICAgICAgICAgICAgICA5OA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBuby1BTFRzOiAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIFNOUHM6ICAgICAgICAgICAgICAgICAgICAgICAgIDgwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIE1OUHM6ICAgICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgaW5kZWxzOiAgICAgICAgICAgICAgICAgICAgICAgMTgNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygb3RoZXJzOiAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXM6ICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXM6ICAgICAgIDENCg0KYGBgDQoNCiMjIENIUk5BNSBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE1LnZjZg0KDQpgYGANCiMgVGhpcyBmaWxlIHdhcyBwcm9kdWNlZCBieSBiY2Z0b29scyBzdGF0cyAoMS45K2h0c2xpYi0xLjkpIGFuZCBjYW4gYmUgcGxvdHRlZCB1c2luZyBwbG90LXZjZnN0YXRzLg0KIyBUaGUgY29tbWFuZCBsaW5lIHdhczogYmNmdG9vbHMgc3RhdHMgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNS52Y2YNCiMNCiMgRGVmaW5pdGlvbiBvZiBzZXRzOg0KIyBJRCAgICBbMl1pZCAgIFszXXRhYi1zZXBhcmF0ZWQgZmlsZSBuYW1lcw0KSUQgICAgICAwICAgICAgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNS52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNF12YWx1ZQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBzYW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgICAgICAgICAgICAgICAgIDYwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG5vLUFMVHM6ICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgU05QczogICAgICAgICAgICAgICAgICAgICAgICAgNDINClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgTU5QczogICAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBpbmRlbHM6ICAgICAgICAgICAgICAgICAgICAgICAxOA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBvdGhlcnM6ICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBzaXRlczogICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlczogICAgICAgMQ0KYGBgDQoNCiMjIENIUk5BNiBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE2LnZjZg0KDQpgYGANCiMgVGhpcyBmaWxlIHdhcyBwcm9kdWNlZCBieSBiY2Z0b29scyBzdGF0cyAoMS45K2h0c2xpYi0xLjkpIGFuZCBjYW4gYmUgcGxvdHRlZCB1c2luZyBwbG90LXZjZnN0YXRzLg0KIyBUaGUgY29tbWFuZCBsaW5lIHdhczogYmNmdG9vbHMgc3RhdHMgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNi52Y2YNCiMNCiMgRGVmaW5pdGlvbiBvZiBzZXRzOg0KIyBJRCAgICBbMl1pZCAgIFszXXRhYi1zZXBhcmF0ZWQgZmlsZSBuYW1lcw0KSUQgICAgICAwICAgICAgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNi52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNF12YWx1ZQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBzYW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgICAgICAgICAgICAgICAgIDgNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygbm8tQUxUczogICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBTTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICA0DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIE1OUHM6ICAgICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgaW5kZWxzOiAgICAgICAgICAgICAgICAgICAgICAgNA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBvdGhlcnM6ICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBzaXRlczogICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlczogICAgICAgMA0KYGBgDQoNCiMjIENIUk5BNyBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE3LnZjZg0KDQpgYGANCiMgVGhpcyBmaWxlIHdhcyBwcm9kdWNlZCBieSBiY2Z0b29scyBzdGF0cyAoMS45K2h0c2xpYi0xLjkpIGFuZCBjYW4gYmUgcGxvdHRlZCB1c2luZyBwbG90LXZjZnN0YXRzLg0KIyBUaGUgY29tbWFuZCBsaW5lIHdhczogYmNmdG9vbHMgc3RhdHMgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNy52Y2YNCiMNCiMgRGVmaW5pdGlvbiBvZiBzZXRzOg0KIyBJRCAgICBbMl1pZCAgIFszXXRhYi1zZXBhcmF0ZWQgZmlsZSBuYW1lcw0KSUQgICAgICAwICAgICAgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5hNy52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNF12YWx1ZQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBzYW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgICAgICAgICAgICAgICAgIDE1NQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBuby1BTFRzOiAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIFNOUHM6ICAgICAgICAgICAgICAgICAgICAgICAgIDExOQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBNTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIGluZGVsczogICAgICAgICAgICAgICAgICAgICAgIDM2DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzOiAgICAgICAgICAgNQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQpgYGANCg0KIyMgQ0hSTkE5IGdlbmUgdmFyaWFudHMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBiY2Z0b29scyBzdGF0cyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTkudmNmDQoNCmBgYA0KIyBUaGlzIGZpbGUgd2FzIHByb2R1Y2VkIGJ5IGJjZnRvb2xzIHN0YXRzICgxLjkraHRzbGliLTEuOSkgYW5kIGNhbiBiZSBwbG90dGVkIHVzaW5nIHBsb3QtdmNmc3RhdHMuDQojIFRoZSBjb21tYW5kIGxpbmUgd2FzOiBiY2Z0b29scyBzdGF0cyAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE5LnZjZg0KIw0KIyBEZWZpbml0aW9uIG9mIHNldHM6DQojIElEICAgIFsyXWlkICAgWzNddGFiLXNlcGFyYXRlZCBmaWxlIG5hbWVzDQpJRCAgICAgIDAgICAgICAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmE5LnZjZg0KIyBTTiwgU3VtbWFyeSBudW1iZXJzOg0KIyAgIG51bWJlciBvZiByZWNvcmRzICAgLi4gbnVtYmVyIG9mIGRhdGEgcm93cyBpbiB0aGUgVkNGDQojICAgbnVtYmVyIG9mIG5vLUFMVHMgICAuLiByZWZlcmVuY2Utb25seSBzaXRlcywgQUxUIGlzIGVpdGhlciAiLiIgb3IgaWRlbnRpY2FsIHRvIFJFRg0KIyAgIG51bWJlciBvZiBTTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIFNOUA0KIyAgIG51bWJlciBvZiBNTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIE1OUCwgc3VjaCBhcyBDQz5UVA0KIyAgIG51bWJlciBvZiBpbmRlbHMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhbiBpbmRlbA0KIyAgIG51bWJlciBvZiBvdGhlcnMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBvdGhlciB0eXBlLCBmb3IgZXhhbXBsZSBhIHN5bWJvbGljIGFsbGVsZSBvcg0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgYSBjb21wbGV4IHN1YnN0aXR1dGlvbiwgc3VjaCBhcyBBQ1Q+VENHQQ0KIyAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXMgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRlIGFsbGVsZXMNCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlcyAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzLCBhbGwgU05Qcw0KIyANCiMgICBOb3RlIHRoYXQgcm93cyBjb250YWluaW5nIG11bHRpcGxlIHR5cGVzIHdpbGwgYmUgY291bnRlZCBtdWx0aXBsZSB0aW1lcywgaW4gZWFjaA0KIyAgIGNvdW50ZXIuIEZvciBleGFtcGxlLCBhIHJvdyB3aXRoIGEgU05QIGFuZCBhbiBpbmRlbCBpbmNyZW1lbnRzIGJvdGggdGhlIFNOUCBhbmQNCiMgICB0aGUgaW5kZWwgY291bnRlci4NCiMgDQojIFNOICAgIFsyXWlkICAgWzNda2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0XXZhbHVlDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHNhbXBsZXM6ICAgICAgICAgICAgICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgcmVjb3JkczogICAgICAgICAgICAgICAgICAgICAgNTYNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygbm8tQUxUczogICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBTTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICA0Nw0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBNTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIGluZGVsczogICAgICAgICAgICAgICAgICAgICAgIDkNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygb3RoZXJzOiAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXM6ICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXM6ICAgICAgIDANCg0KYGBgDQoNCg0KIyMgQ0hSTkExMCBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmExMC52Y2YNCg0KYGBgDQojIFRoaXMgZmlsZSB3YXMgcHJvZHVjZWQgYnkgYmNmdG9vbHMgc3RhdHMgKDEuOStodHNsaWItMS45KSBhbmQgY2FuIGJlIHBsb3R0ZWQgdXNpbmcgcGxvdC12Y2ZzdGF0cy4NCiMgVGhlIGNvbW1hbmQgbGluZSB3YXM6IGJjZnRvb2xzIHN0YXRzICBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYTEwLnZjZg0KIw0KIyBEZWZpbml0aW9uIG9mIHNldHM6DQojIElEICAgIFsyXWlkICAgWzNddGFiLXNlcGFyYXRlZCBmaWxlIG5hbWVzDQpJRCAgICAgIDAgICAgICAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmExMC52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNF12YWx1ZQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBzYW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgICAgICAgICAgICAgICAgIDE1DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG5vLUFMVHM6ICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgU05QczogICAgICAgICAgICAgICAgICAgICAgICAgMTUNClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgTU5QczogICAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBpbmRlbHM6ICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzOiAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQpgYGANCg0KDQoNCiMjIENIUk5CMSBnZW5lIHZhcmlhbnRzDQoNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBiY2Z0b29scyBzdGF0cyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYjEudmNmDQoNCmBgYA0KIyBUaGlzIGZpbGUgd2FzIHByb2R1Y2VkIGJ5IGJjZnRvb2xzIHN0YXRzICgxLjkraHRzbGliLTEuOSkgYW5kIGNhbiBiZSBwbG90dGVkIHVzaW5nIHBsb3QtdmNmc3RhdHMuDQojIFRoZSBjb21tYW5kIGxpbmUgd2FzOiBiY2Z0b29scyBzdGF0cyAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmIxLnZjZg0KIw0KIyBEZWZpbml0aW9uIG9mIHNldHM6DQojIElEICAgIFsyXWlkICAgWzNddGFiLXNlcGFyYXRlZCBmaWxlIG5hbWVzDQpJRCAgICAgIDAgICAgICAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmIxLnZjZg0KIyBTTiwgU3VtbWFyeSBudW1iZXJzOg0KIyAgIG51bWJlciBvZiByZWNvcmRzICAgLi4gbnVtYmVyIG9mIGRhdGEgcm93cyBpbiB0aGUgVkNGDQojICAgbnVtYmVyIG9mIG5vLUFMVHMgICAuLiByZWZlcmVuY2Utb25seSBzaXRlcywgQUxUIGlzIGVpdGhlciAiLiIgb3IgaWRlbnRpY2FsIHRvIFJFRg0KIyAgIG51bWJlciBvZiBTTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIFNOUA0KIyAgIG51bWJlciBvZiBNTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIE1OUCwgc3VjaCBhcyBDQz5UVA0KIyAgIG51bWJlciBvZiBpbmRlbHMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhbiBpbmRlbA0KIyAgIG51bWJlciBvZiBvdGhlcnMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBvdGhlciB0eXBlLCBmb3IgZXhhbXBsZSBhIHN5bWJvbGljIGFsbGVsZSBvcg0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgYSBjb21wbGV4IHN1YnN0aXR1dGlvbiwgc3VjaCBhcyBBQ1Q+VENHQQ0KIyAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXMgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRlIGFsbGVsZXMNCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlcyAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzLCBhbGwgU05Qcw0KIyANCiMgICBOb3RlIHRoYXQgcm93cyBjb250YWluaW5nIG11bHRpcGxlIHR5cGVzIHdpbGwgYmUgY291bnRlZCBtdWx0aXBsZSB0aW1lcywgaW4gZWFjaA0KIyAgIGNvdW50ZXIuIEZvciBleGFtcGxlLCBhIHJvdyB3aXRoIGEgU05QIGFuZCBhbiBpbmRlbCBpbmNyZW1lbnRzIGJvdGggdGhlIFNOUCBhbmQNCiMgICB0aGUgaW5kZWwgY291bnRlci4NCiMgDQojIFNOICAgIFsyXWlkICAgWzNda2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0XXZhbHVlDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHNhbXBsZXM6ICAgICAgICAgICAgICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgcmVjb3JkczogICAgICAgICAgICAgICAgICAgICAgMjENClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygbm8tQUxUczogICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBTTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAxNQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBNTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIGluZGVsczogICAgICAgICAgICAgICAgICAgICAgIDYNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygb3RoZXJzOiAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXM6ICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXM6ICAgICAgIDANCmBgYA0KDQoNCiMjIENIUk5CMiBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmIyLnZjZg0KDQpgYGANCiMgVGhpcyBmaWxlIHdhcyBwcm9kdWNlZCBieSBiY2Z0b29scyBzdGF0cyAoMS45K2h0c2xpYi0xLjkpIGFuZCBjYW4gYmUgcGxvdHRlZCB1c2luZyBwbG90LXZjZnN0YXRzLg0KIyBUaGUgY29tbWFuZCBsaW5lIHdhczogYmNmdG9vbHMgc3RhdHMgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iMi52Y2YNCiMNCiMgRGVmaW5pdGlvbiBvZiBzZXRzOg0KIyBJRCAgICBbMl1pZCAgIFszXXRhYi1zZXBhcmF0ZWQgZmlsZSBuYW1lcw0KSUQgICAgICAwICAgICAgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iMi52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNF12YWx1ZQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBzYW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgICAgICAgICAgICAgICAgIDIyDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG5vLUFMVHM6ICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgU05QczogICAgICAgICAgICAgICAgICAgICAgICAgMTcNClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgTU5QczogICAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBpbmRlbHM6ICAgICAgICAgICAgICAgICAgICAgICA1DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzOiAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQpgYGANCg0KIyMgQ0hSTkIzIGdlbmUgdmFyaWFudHMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBiY2Z0b29scyBzdGF0cyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuYjMudmNmDQoNCmBgYA0KIyBUaGlzIGZpbGUgd2FzIHByb2R1Y2VkIGJ5IGJjZnRvb2xzIHN0YXRzICgxLjkraHRzbGliLTEuOSkgYW5kIGNhbiBiZSBwbG90dGVkIHVzaW5nIHBsb3QtdmNmc3RhdHMuDQojIFRoZSBjb21tYW5kIGxpbmUgd2FzOiBiY2Z0b29scyBzdGF0cyAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmIzLnZjZg0KIw0KIyBEZWZpbml0aW9uIG9mIHNldHM6DQojIElEICAgIFsyXWlkICAgWzNddGFiLXNlcGFyYXRlZCBmaWxlIG5hbWVzDQpJRCAgICAgIDAgICAgICAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmIzLnZjZg0KIyBTTiwgU3VtbWFyeSBudW1iZXJzOg0KIyAgIG51bWJlciBvZiByZWNvcmRzICAgLi4gbnVtYmVyIG9mIGRhdGEgcm93cyBpbiB0aGUgVkNGDQojICAgbnVtYmVyIG9mIG5vLUFMVHMgICAuLiByZWZlcmVuY2Utb25seSBzaXRlcywgQUxUIGlzIGVpdGhlciAiLiIgb3IgaWRlbnRpY2FsIHRvIFJFRg0KIyAgIG51bWJlciBvZiBTTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIFNOUA0KIyAgIG51bWJlciBvZiBNTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIE1OUCwgc3VjaCBhcyBDQz5UVA0KIyAgIG51bWJlciBvZiBpbmRlbHMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhbiBpbmRlbA0KIyAgIG51bWJlciBvZiBvdGhlcnMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBvdGhlciB0eXBlLCBmb3IgZXhhbXBsZSBhIHN5bWJvbGljIGFsbGVsZSBvcg0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgYSBjb21wbGV4IHN1YnN0aXR1dGlvbiwgc3VjaCBhcyBBQ1Q+VENHQQ0KIyAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXMgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRlIGFsbGVsZXMNCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlcyAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzLCBhbGwgU05Qcw0KIyANCiMgICBOb3RlIHRoYXQgcm93cyBjb250YWluaW5nIG11bHRpcGxlIHR5cGVzIHdpbGwgYmUgY291bnRlZCBtdWx0aXBsZSB0aW1lcywgaW4gZWFjaA0KIyAgIGNvdW50ZXIuIEZvciBleGFtcGxlLCBhIHJvdyB3aXRoIGEgU05QIGFuZCBhbiBpbmRlbCBpbmNyZW1lbnRzIGJvdGggdGhlIFNOUCBhbmQNCiMgICB0aGUgaW5kZWwgY291bnRlci4NCiMgDQojIFNOICAgIFsyXWlkICAgWzNda2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0XXZhbHVlDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHNhbXBsZXM6ICAgICAgICAgICAgICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgcmVjb3JkczogICAgICAgICAgICAgICAgICAgICAgNDYNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygbm8tQUxUczogICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBTTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAzNQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBNTlBzOiAgICAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIGluZGVsczogICAgICAgICAgICAgICAgICAgICAgIDExDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzOiAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQoNCmBgYA0KDQoNCiMjIENIUk5CNCBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmI0LnZjZg0KDQpgYGANCiMgVGhpcyBmaWxlIHdhcyBwcm9kdWNlZCBieSBiY2Z0b29scyBzdGF0cyAoMS45K2h0c2xpYi0xLjkpIGFuZCBjYW4gYmUgcGxvdHRlZCB1c2luZyBwbG90LXZjZnN0YXRzLg0KIyBUaGUgY29tbWFuZCBsaW5lIHdhczogYmNmdG9vbHMgc3RhdHMgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iNC52Y2YNCiMNCiMgRGVmaW5pdGlvbiBvZiBzZXRzOg0KIyBJRCAgICBbMl1pZCAgIFszXXRhYi1zZXBhcmF0ZWQgZmlsZSBuYW1lcw0KSUQgICAgICAwICAgICAgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5iNC52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNF12YWx1ZQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBzYW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgICAgICAgICAgICAgICAgIDY2DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG5vLUFMVHM6ICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgU05QczogICAgICAgICAgICAgICAgICAgICAgICAgNDgNClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgTU5QczogICAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBpbmRlbHM6ICAgICAgICAgICAgICAgICAgICAgICAxOA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBvdGhlcnM6ICAgICAgICAgICAgICAgICAgICAgICAzDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBzaXRlczogICAgICAgICAgIDMNClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlczogICAgICAgMA0KDQpgYGANCg0KDQojIyBDSFJORyBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmcudmNmDQoNCmBgYA0KIyBUaGlzIGZpbGUgd2FzIHByb2R1Y2VkIGJ5IGJjZnRvb2xzIHN0YXRzICgxLjkraHRzbGliLTEuOSkgYW5kIGNhbiBiZSBwbG90dGVkIHVzaW5nIHBsb3QtdmNmc3RhdHMuDQojIFRoZSBjb21tYW5kIGxpbmUgd2FzOiBiY2Z0b29scyBzdGF0cyAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmcudmNmDQojDQojIERlZmluaXRpb24gb2Ygc2V0czoNCiMgSUQgICAgWzJdaWQgICBbM110YWItc2VwYXJhdGVkIGZpbGUgbmFtZXMNCklEICAgICAgMCAgICAgICBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuZy52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbNF12YWx1ZQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBzYW1wbGVzOiAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgICAgICAgICAgICAgICAgIDE1DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG5vLUFMVHM6ICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgU05QczogICAgICAgICAgICAgICAgICAgICAgICAgMTENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgTU5QczogICAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBpbmRlbHM6ICAgICAgICAgICAgICAgICAgICAgICA0DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzOiAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQoNCmBgYA0KDQoNCiMjIENIUk5EIGdlbmUgdmFyaWFudHMNCg0KIyMjIyAgICAgfi9nYXRrLWRhdGEtcmVmJCBiY2Z0b29scyBzdGF0cyBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuZC52Y2YNCg0KYGBgDQojIFRoaXMgZmlsZSB3YXMgcHJvZHVjZWQgYnkgYmNmdG9vbHMgc3RhdHMgKDEuOStodHNsaWItMS45KSBhbmQgY2FuIGJlIHBsb3R0ZWQgdXNpbmcgcGxvdC12Y2ZzdGF0cy4NCiMgVGhlIGNvbW1hbmQgbGluZSB3YXM6IGJjZnRvb2xzIHN0YXRzICBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuZC52Y2YNCiMNCiMgRGVmaW5pdGlvbiBvZiBzZXRzOg0KIyBJRCAgICBbMl1pZCAgIFszXXRhYi1zZXBhcmF0ZWQgZmlsZSBuYW1lcw0KSUQgICAgICAwICAgICAgIFNSUjYyMjQ1OC5meE5tTWRVcVRhZy5tZHVwLmNocm5kLnZjZg0KIyBTTiwgU3VtbWFyeSBudW1iZXJzOg0KIyAgIG51bWJlciBvZiByZWNvcmRzICAgLi4gbnVtYmVyIG9mIGRhdGEgcm93cyBpbiB0aGUgVkNGDQojICAgbnVtYmVyIG9mIG5vLUFMVHMgICAuLiByZWZlcmVuY2Utb25seSBzaXRlcywgQUxUIGlzIGVpdGhlciAiLiIgb3IgaWRlbnRpY2FsIHRvIFJFRg0KIyAgIG51bWJlciBvZiBTTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIFNOUA0KIyAgIG51bWJlciBvZiBNTlBzICAgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhIE1OUCwgc3VjaCBhcyBDQz5UVA0KIyAgIG51bWJlciBvZiBpbmRlbHMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBhbiBpbmRlbA0KIyAgIG51bWJlciBvZiBvdGhlcnMgICAgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBvdGhlciB0eXBlLCBmb3IgZXhhbXBsZSBhIHN5bWJvbGljIGFsbGVsZSBvcg0KIyAgICAgICAgICAgICAgICAgICAgICAgICAgYSBjb21wbGV4IHN1YnN0aXR1dGlvbiwgc3VjaCBhcyBBQ1Q+VENHQQ0KIyAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXMgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggbXVsdGlwbGUgYWx0ZXJuYXRlIGFsbGVsZXMNCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIFNOUCBzaXRlcyAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzLCBhbGwgU05Qcw0KIyANCiMgICBOb3RlIHRoYXQgcm93cyBjb250YWluaW5nIG11bHRpcGxlIHR5cGVzIHdpbGwgYmUgY291bnRlZCBtdWx0aXBsZSB0aW1lcywgaW4gZWFjaA0KIyAgIGNvdW50ZXIuIEZvciBleGFtcGxlLCBhIHJvdyB3aXRoIGEgU05QIGFuZCBhbiBpbmRlbCBpbmNyZW1lbnRzIGJvdGggdGhlIFNOUCBhbmQNCiMgICB0aGUgaW5kZWwgY291bnRlci4NCiMgDQojIFNOICAgIFsyXWlkICAgWzNda2V5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs0XXZhbHVlDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHNhbXBsZXM6ICAgICAgICAgICAgICAgICAgICAgIDENClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgcmVjb3JkczogICAgICAgICAgICAgICAgICAgICAgNQ0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBuby1BTFRzOiAgICAgICAgICAgICAgICAgICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIFNOUHM6ICAgICAgICAgICAgICAgICAgICAgICAgIDQNClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgTU5QczogICAgICAgICAgICAgICAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBpbmRlbHM6ICAgICAgICAgICAgICAgICAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgICAgICAgICAgICAgICAgIDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzOiAgICAgICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQpgYGANCg0KDQojIyBDSFJORSBnZW5lIHZhcmlhbnRzDQoNCiMjIyMgICAgIH4vZ2F0ay1kYXRhLXJlZiQgYmNmdG9vbHMgc3RhdHMgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmUudmNmDQoNCmBgYA0KIyBUaGlzIGZpbGUgd2FzIHByb2R1Y2VkIGJ5IGJjZnRvb2xzIHN0YXRzICgxLjkraHRzbGliLTEuOSkgYW5kIGNhbiBiZSBwbG90dGVkIHVzaW5nIHBsb3QtdmNmc3RhdHMuDQojIFRoZSBjb21tYW5kIGxpbmUgd2FzOiBiY2Z0b29scyBzdGF0cyAgU1JSNjIyNDU4LmZ4Tm1NZFVxVGFnLm1kdXAuY2hybmUudmNmDQojDQojIERlZmluaXRpb24gb2Ygc2V0czoNCiMgSUQgICAgWzJdaWQgICBbM110YWItc2VwYXJhdGVkIGZpbGUgbmFtZXMNCklEICAgICAgMCAgICAgICBTUlI2MjI0NTguZnhObU1kVXFUYWcubWR1cC5jaHJuZS52Y2YNCiMgU04sIFN1bW1hcnkgbnVtYmVyczoNCiMgICBudW1iZXIgb2YgcmVjb3JkcyAgIC4uIG51bWJlciBvZiBkYXRhIHJvd3MgaW4gdGhlIFZDRg0KIyAgIG51bWJlciBvZiBuby1BTFRzICAgLi4gcmVmZXJlbmNlLW9ubHkgc2l0ZXMsIEFMVCBpcyBlaXRoZXIgIi4iIG9yIGlkZW50aWNhbCB0byBSRUYNCiMgICBudW1iZXIgb2YgU05QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBTTlANCiMgICBudW1iZXIgb2YgTU5QcyAgICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYSBNTlAsIHN1Y2ggYXMgQ0M+VFQNCiMgICBudW1iZXIgb2YgaW5kZWxzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggYW4gaW5kZWwNCiMgICBudW1iZXIgb2Ygb3RoZXJzICAgIC4uIG51bWJlciBvZiByb3dzIHdpdGggb3RoZXIgdHlwZSwgZm9yIGV4YW1wbGUgYSBzeW1ib2xpYyBhbGxlbGUgb3INCiMgICAgICAgICAgICAgICAgICAgICAgICAgIGEgY29tcGxleCBzdWJzdGl0dXRpb24sIHN1Y2ggYXMgQUNUPlRDR0ENCiMgICBudW1iZXIgb2YgbXVsdGlhbGxlbGljIHNpdGVzICAgICAuLiBudW1iZXIgb2Ygcm93cyB3aXRoIG11bHRpcGxlIGFsdGVybmF0ZSBhbGxlbGVzDQojICAgbnVtYmVyIG9mIG11bHRpYWxsZWxpYyBTTlAgc2l0ZXMgLi4gbnVtYmVyIG9mIHJvd3Mgd2l0aCBtdWx0aXBsZSBhbHRlcm5hdGUgYWxsZWxlcywgYWxsIFNOUHMNCiMgDQojICAgTm90ZSB0aGF0IHJvd3MgY29udGFpbmluZyBtdWx0aXBsZSB0eXBlcyB3aWxsIGJlIGNvdW50ZWQgbXVsdGlwbGUgdGltZXMsIGluIGVhY2gNCiMgICBjb3VudGVyLiBGb3IgZXhhbXBsZSwgYSByb3cgd2l0aCBhIFNOUCBhbmQgYW4gaW5kZWwgaW5jcmVtZW50cyBib3RoIHRoZSBTTlAgYW5kDQojICAgdGhlIGluZGVsIGNvdW50ZXIuDQojIA0KIyBTTiAgICBbMl1pZCAgIFszXWtleSAgWzRddmFsdWUNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygc2FtcGxlczogICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIHJlY29yZHM6ICAgICAgMTkNClNOICAgICAgMCAgICAgICBudW1iZXIgb2Ygbm8tQUxUczogICAgICAwDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIFNOUHM6IDE4DQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIE1OUHM6IDANClNOICAgICAgMCAgICAgICBudW1iZXIgb2YgaW5kZWxzOiAgICAgICAxDQpTTiAgICAgIDAgICAgICAgbnVtYmVyIG9mIG90aGVyczogICAgICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgc2l0ZXM6ICAgMA0KU04gICAgICAwICAgICAgIG51bWJlciBvZiBtdWx0aWFsbGVsaWMgU05QIHNpdGVzOiAgICAgICAwDQoNCmBgYA0KDQoNCg0KDQoNCg==