easl course bioinformatics of microarray analysis€¦ · •in doubt, consult a bioinformatician!...
TRANSCRIPT
![Page 1: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/1.jpg)
1 von 14
EASL Course Bioinformatics of microarray analysis
Ivan G. Costa, Joseph Kuo, Oliver Krenkel IZFK Research Group Bioinformatics RWTH Aachen www.costalab.org
![Page 2: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/2.jpg)
Analysis of Gene Expression
treatment response
gene expression
1- Which genes are up/down regulated after treatment? - differential analysis / clustering genes 2 - Which cells are more similar? - clustering samples / PCA 3 - How to interpret large lists of genes? - gene ontology enrichment /gene set enrichment analysis (GSEA)
tissue of residence
adapted from: Amit et al. 2016
![Page 3: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/3.jpg)
Objective of the course
1 - Give you a (very) brief overview on the use of R/bioconductor tools
2 - Show a real example with all steps necessary for gene expression analysis (based on arrays)
3 - Why arrays? Analysis of sequencing data is still complex / require command line “programming”.
However, high level analysis are the same!
![Page 4: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/4.jpg)
Bioinformatics - Gene Expression Analysis
quantification and pre-processing
array hybridization/ sequencing
high level analysis
functional analysis
Removal of experimental artifacts/bad samples
finding relevant genes and samples
interpret groups of genes
PCA, clustering, differential expression
normalization
enrichment analysis GSEA
![Page 5: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/5.jpg)
Bioinformatics - Gene Expression Analysis
quantification and pre-processing
array hybridization/ sequencing
high level analysis
functional analysis
Removal of experimental artifacts/bad samples
finding relevant genes and samples
interpret groups of genes
PCA, clustering, differential expression
normalization
enrichment analysis GSEA
![Page 6: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/6.jpg)
Affymetrix Arrays - Example1 - Array Design
2 - cDNA Hybridization
3 -Quantification
![Page 7: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/7.jpg)
Quantification/Pre-processing
Array 1 Array 2
Array 3
Main steps 1 – Image processing 2 – Quality check (QC) 3 – Normalization 4 – Filtering
1 - Quantify gene expression values
2 - Quality Control • remove bad samples
3 - Correct for Experimental artifacts
• normalization
![Page 8: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/8.jpg)
Why is QC / Normalization important?
• Systematic errors (array wise) - labeling efficiency, scanning parameters, reverse transcriptase,
batch effects • Stochastic errors
- cross-hybridization, image processing failure, error on probe sequence (manufacturer defect) (gene wise)
- dust in array, hybridization problems (array wise)
Example of Hybridization Problems
![Page 9: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/9.jpg)
Normalization Principles
1 - Most genes don’t change expression -> small/same variance 2 - Arrays are hybridized with the same amount of DNA -> same mean
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
9
10
11
12
13
14
15
Hybridization intensity distributions across experiments
Experiment
log2(in
tensity)
Arrays
Gen
e E
xpre
ssio
n
![Page 10: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/10.jpg)
Normalization Results
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
ALL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
MLL
6
8
10
12
14
Hybridization intensity distributions across experiments
Experiment
log2(in
tensity)
Arrays
Gen
e E
xpre
ssio
nApplication of BetweenArray normalization from limma package
![Page 11: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/11.jpg)
Quantification/Pre-processing - Resume
• Normalization is important to confirm the quality and consistency of data
• Boxplots hould also be performed after all steps to assure data standards
• Exclusion of “bad samples” has positive effect on downstream analysis
• In doubt, consult a bioinformatician!
![Page 12: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/12.jpg)
Bioinformatics - Gene Expression Analysis
quantification and pre-processing
array hybridization/ sequencing
high level analysis
functional analysis
Removal of experimental artifacts/bad samples
finding relevant genes and samples
interpret groups of genes
PCA, clustering, differential expression
normalization
enrichment analysis GSEA
![Page 13: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/13.jpg)
Differential Expression Analysis
• Identify genes related to a particular condition
• example - van de Laar, et al. 2016, Immunity, 2016.
• We will consider: • You Sac Macrophages (YS-Mac) • Fetal Liver Monocytes (FL-MO) • Bone Marrow Monocytes (BM-MO)
- 4 replicates per condition
Source: van de Laar, et al. 2016, Immunity, 2016.
![Page 14: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/14.jpg)
Differential Expression - Example
A=log(FL-MO)+log(BM-MO)
M=log(FL-M
O/B
M-M
O)
●
●
●
●
● ●●
●
●
●●
●●●●●
●
●● ●●
●
● ●
●
●
●●
●
●●
●●●
●
●
●
●
●●
●
●
● ●●●
●●●
●
●
●●●
●●●
●
●●
● ●● ●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
● ●●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
● ●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●●
●
● ●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
● ●
●
●
● ●
●
●●
●
●●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●●
●
●●
●● ●
●
●
●
●●
●
●
●
●●● ●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●●
●
●
●
●
●
●●
●
●
●●
●
● ●
●
●
● ●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
● ●●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●●
●
●●●
● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●●
●
●
●
●
● ●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
● ●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●● ●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●● ●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●● ●
●
●
● ●
●
●●
●
●
●
●
● ●
●●
●● ●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●●
●●
●
●●●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●●
●
●
●●
●
●
●
●
●
●● ● ●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
● ●
●
●●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●● ●
●
●
●●
●●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
● ●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●
●●
●
●● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●● ●
●
●
●
●
● ●
●
●
●●
●
●
● ●
●
●●
●
●
●
●
●
● ●●●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●●
●
●●
●
●●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●●
●
●
● ●
● ●
●●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●●
●●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●● ●
●
●
● ●●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●●●
●
●
●
●
●
●●
●
●● ● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
● ●●●
● ●
●●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●●●●
●●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●●
●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
● ●●●●
●
●
●
●
●●●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●● ●
● ●
●●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●●● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●●
●
●●
● ●
●●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●●
●
●
●●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●● ●
●
●
●
●
●
● ●
●
●
●●
●●
●
● ●● ●
●●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●●
●
●
●
●
●
● ●
● ●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●●
●
●
●●
●●
● ●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
● ●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●
●
●●●
●●
●
●
●
●
●
●
●
● ●
●
● ●●
●
● ●●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●● ●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●●
●
● ●●
●
●
●
●
●
●●
● ●●
●●
●●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
● ●
●
●●
●
●
●
●●
●
● ●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
● ●
●
●
●
●
●
● ●
●
●●
●
●●
●
●
●
●
●●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●●
●● ●
●
●●● ●
●●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●●●●●●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●●
●
●●
●●●
●
●
●
●●●
●
● ●
●●
●●●●
●
●
●●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
● ●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
● ●
●
●
● ●● ●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
● ●●
●
●
●
●
●
●
●
●
●
● ●●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●●●
●●
●●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●●● ●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●●
●
●
●●
● ● ●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●● ●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
● ●●●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●●●
●
●
●
●
● ●
●
●
●
●
●● ●
●
●
●
●●● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●
●●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●●
●
●
●
●
●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ● ●
●●
●
●
● ●●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●●
●● ●●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●●
● ●
●
●●
●
●
●
●●
●●
●●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●● ●
●●
●
●
●●
●
●
●
●
●●
●● ●●
●
●●● ●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●●
●●
●● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●●●
●
●
●
●●
● ●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
● ●
●
●●
●
●
● ●
●●
●
●
●● ●
●
●● ●●●
●
●●
●
●● ●●●
● ●
●●
●
●
●
●●
●
●●
●●
●
●
● ●
● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●●●●
●●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●●
●
●●
●
●●●
●
●
●
●●●
● ●
●
●
●
●
● ●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
● ●
●
●
●
●●●●
●
●
●
●●
●
● ●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●
●
●●
●
●●
●
● ●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●●
●●
●
●●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
●●
●
●
●
●
●
●
●
●● ●
●●
●
●
●
●●
●
●
●●●
●
●
●
●● ●
●●
●●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●●
●● ●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
● ●
●
●
●
●
●
●
●
● ●●●●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
● ●●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●
●●
●
●
●
●●
●● ●
● ●●
●
●
● ●●●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
● ●●●
●●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●● ●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●● ● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
● ●● ●●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
● ● ● ●●
●●
●
●
●●
●●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●●
●
●
●● ●
●
●
● ●
●
●
●
●●
●
●
●● ●●
●
●
●
●
●
●●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●● ●●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●●●
●
●●
●
●●
●●
●
●
●
●●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●
● ●
●
●
●●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●●
●●
●●
●●
●
●●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●●●
●●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●● ●
●
●●
●
●●●●
●
●●
●● ●
●●
●
●●
●
●
●
●
●
●●
●
●● ●
●
●●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●● ●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●●●
●●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●●
● ●●
●
●
●●
●
● ●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●●
● ●●
●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●● ●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●● ● ●
●
●
●
●
●
●
●●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●● ●
●
●
●●
●
●●●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●●
●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●●
●
●● ●
●●
●●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
● ●●
●
●●
●
●
●
●
●●
●
●
●●●
●
● ●
●
●
●
●●
●
●
● ●
●
●●
●●
●● ●
●●
●● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ● ●
●
●●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●●
●●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●●
● ●
●●
●●
●
●
●
●
●
●
●●
●
● ●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
● ●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●●●
●
●●●
●●
●●
●
●●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
● ●
● ●
●●
●
●●●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
● ●
●
●
●
●●●
● ●
●
●●
●
●●
●
● ●
●
●
●
● ● ●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●● ●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●●●
●
●
●
● ●
●●●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●●
●
●●
●
●● ●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●●●
●●
●
●
●
●
●●●
●●●
●
●
●
●
●●●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
● ● ●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●● ●
●●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●●
●●
●
● ●●
●
●●
●
● ●●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●
●●
●●●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●● ●
●●●
●●
●
●
●
●●
●●
●
●
●●●
●●
●
● ●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
● ●
●
●●
●
●
●●
●●
●●
● ●
●
●
●●
●
●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ● ●
●
●● ●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●
●●●
●
● ●
●
●
●
●
●
●
● ●●
●●
●
●
●
●●
●
● ●●
●
●
●
●
●●
●
●● ●●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
● ●●
●
●
●●
●
●
●●
●
●
●
● ●●
●
●
●●
●●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
● ●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●●●
●
●
●
●
●● ●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
● ●
●●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ● ●
●
● ●
●
●● ●●
●
●
●●
●●
●
●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ●●
●
●
●
●
●
●
●
● ●
●
●●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●
●●
●●
●
●●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●●
●●
●
●●
●
●
●
●
●●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
● ●
●
●
●
●
●●●
●●
●
●
● ●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
● ●●●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●
●
●
●
●
●
●●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
● ●
●●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
● ●●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
● ●
●
●●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
● ●
●
●
●●
●
●
●
●
●● ●
●●
●
●
●
● ●
●
●● ●
●
●●
●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●●
●
● ●
●
● ●
●
●
●
●
●●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
● ●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
● ●●
● ●●
●
●●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●●
●
●
●
●
●
● ●●
●
● ●● ●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●●
●
● ●
●●
●
●
●
●●
●●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●● ●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●●
●●
●●
●●
●●
●
●
●●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
● ●●
●
●
●●
●●
●
●
●
●●●
●
●
●
●
●●
●
●
●● ●●
●
●
●
●●
●
●● ●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●●
●
●●
●●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
● ●
● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
● ●
● ●
●
●● ●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●● ●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●●
●
●●
● ● ●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●
●
●
●
●● ●● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
● ●●
●●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●● ●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●●●
●
●
● ●
●●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●●●
● ●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●● ●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
● ●●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●
●●●
●
●
●●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●● ●
●● ●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
● ●●
●●
●
●● ●
●
●
●
●
●●● ●
●
●●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●● ●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●●
●
●●
●
●
●●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●●●
●
●
●
●● ●
●●●
●
●
●
● ●
●
● ●
●
●
●●
●
●
●
●
●● ●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●● ●
●
●
●
●
●●
●
●
●●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ● ●
●
●
●●
●
● ●●
●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●●●
●
●●● ●
● ●●
●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●
●● ●
●
●
●●●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●● ●
●
●
●●
●●● ●
●
●
●
●●● ●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●●
● ●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●● ●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
● ●●●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ● ●●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●●
●●●
●
● ●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●● ●
●●
●
●●
● ●
●
●
●
●
●●
●●
●●
●
●
●●
●
●
●
●
●
● ●
●
●
●●
●
●●
●
●
●●
●
●●
●●●●●●●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●●
●
●●
●●
●
●
●●●
●●
●
●
●
●●● ●
●
●●
●●●
●●
●
●
●
●
●
● ●●
●
●●
●
●
● ●● ●
●●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●●
●
●
●
●
●
●
●
● ●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●● ●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●
●●
●●
●
●
●
●
●●
● ●●
●
●
●
●
●
●● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●●
●
●●
●
●●
●
●
●●
●
●●
● ●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
● ●
●
●
●●
●
●●
●
●
●
●●● ● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●●● ●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●●
●
●
●
●●
●
●●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●● ●
●●
●
●
●● ●●●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●●
●
●
●●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●●
●
●●
●
●●
●
●●
●
●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●● ●●
●
●
●
●
●●
●●
●
●●
●● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●●
●
●
●
●
●
●
● ●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●● ●
●
●●●
● ●
● ●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ●
●●
● ●
●●
●
●
●●●
●●
●●
●
● ●●
●
●
●
●
●
●
●
●
●●●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●
●
●
●
●●
●
●
●
●●
●
● ● ●●
●●
● ●●
●
●
●
● ●●●
●●
●●
●●
●
●●
● ●
●
● ●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
● ●
●●
●
●●
●
●●
● ●
●●●
●
●
●●
●
●●
● ●●
●
●
●
● ●●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
● ● ●
●
●
●●
●
●
● ●
●
●
●
● ●
●
●
●
●●
●
●
●●
●
●
●●●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●
●
●●●
●●
●●
●
●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●● ●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●●●
●●
●
●●
●●
●
●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●●●
●
●● ●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
● ●●●
●
●
●●●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●
●●
●●
●
●
● ●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
● ●●
●● ●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●● ●●
●●
●
●
●●
●
●
●●●
●
●
●●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●●
●●
●
●
●
●
●
●
●●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
● ●
●●
●
●
●
●
●
●
● ●
●
●
●
●●●
●
● ●
●
●
●
●
●●●●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●●●
●●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
● ●
●
●●
●
●
● ●
●
●●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ● ●●●
● ●
●
●
●
●
●
●●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●● ●
●
●
●●●●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
● ●●● ●
● ●●
●
●
●
●
●
●●
●
● ●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
● ●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●●
●
●
●●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
● ●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●●
●●
●
● ●
●
● ●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
● ●
●●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●● ●
●
●
●●
●●
●
●
●
●
●
●●●
●
●
● ●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●●
●●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●●
●●
●●
●
●●●
●
●
●
●
●●● ●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●●●
●
●● ●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
● ●
●
●● ●
●●
●●
●
●
●
●
●●●●●
●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●
●●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●●
●
●
●
●
●
●●
● ●
● ●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
● ●
●
●●
●● ●●
●●
●● ●●●
●
●
●
●
●● ●
●
●●●
●
●
● ●●●
●
●●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
● ●●
●
●
●
● ●
●
●●
●●
●
●
●
●●
●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●●●
● ●
●
●
●●●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●● ●● ●●
●●●
●● ●
●
●●
●
●●●
●●
●
●
●
●
●●● ●●●
●●
●●●●●●● ●●
●
●●
●
●
●
●
●
● ●
●
●
●●●
●
●
●●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
● ●●
● ●●
●●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●
● ●
●
●
●
● ●
●
●●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
● ●
●●
● ●
●
●
●
● ●●●●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●●
● ●●●
●
●●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
● ●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●
●●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●● ●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●● ●
●
●
●
●
●
●
●●
●
●●●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●●
● ●●
●
●●●
●●
●●
●
●●●●
●●●
●
●●
●●
● ●
●
●
●
● ●● ●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
● ●
●
●
●
●
●● ●
●
●
●
● ●
●●
● ●
●
●
●
●
●
●
● ●●
●
●
● ●
●
●
●
●
●●
●●
●
●
●●
●
●● ●
●●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●●●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●●
●
●
●
●●●
● ● ●●●●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●●
● ●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●●
●
●●
●●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●●
●●
●
●
● ●
●
●●
●
●
●
●
●
●
● ●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
● ●
●
●
●●
●
●●
● ●
●
●
●
● ●
●
●●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●●
●●
●
●
●
●● ●●
●
●
●●●
●
●
●●
●
●
●●
●
●
● ●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●
●
●● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●
● ●
●
●
●
●
●●
●●
●
●●
●
●
●●
● ●●
●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●●
●●
●
●●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●●●
●
●
●
●●
●●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
● ●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●●
●
● ●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
● ● ●●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●●
●
●●
●● ●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●● ●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●
●●
● ●● ●
●
●
●
● ●● ●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●● ●●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●●
●●●
●
●
●
●●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●● ●
●
●●
●● ●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
● ●●
●
●●
●●
●
●
●●●
●●●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
● ●
●
●
●
●
●
●
● ●●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●●
●
●
● ●
●●
●
●
●
●
●
●●
●
●
● ● ●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●●●
● ●●
●
●
●
●●
●●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●● ●
●
●
●
●
●●
● ●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●
●●●●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
● ●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●● ●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ● ●●
●
●●●●
●
●
●
●
●●●
●
● ●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●●
●
●●
●
●
●
●
●
●
●●
● ●
●
●●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●
●●
●●
●
●
●
●
●●
●
●
●●●
●
●
●●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●●
●
●
●
●
●
● ●
●● ●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
● ●
●● ●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
● ●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●● ●
●
●
●
●
●
●
●
● ●●●
●
●
●
● ●
● ●
●
●
●
●
●●●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●●●
●
●
●
●●
●
●
●
●
● ●
●
●
● ●
●
●●
●
● ●
●
●●
●
●
●●
●
●
●
●●●
●
● ●
●
●
●●●●
● ●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●● ●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
● ●
●●
●
●
● ●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
● ●
●
●
●●●
●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●
●
●
●●
●
●
● ●●●
●
●
●●● ●
●
●● ●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●● ●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●●
● ●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●●● ●
●
●
●
●
●
●
●
●
●●
●
●●
●● ●
●
●
●
●
●
●● ●●
●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
● ●●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●●
●
● ●
●
●
●●
●
●
●
●
●● ●
●● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●●●
●
●●
●
●
●
●
●●
●
●
●●●●
●
●●●
●
●
●
●●
●●●
●
●●
● ●●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●●
● ●●
●●●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
● ●
●
●
●
●
●●
●
●
●●
●
●●
●●●
●●
●
●
●● ● ●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●●
●●
●● ●●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●● ●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
● ●●●
●
●●
●● ●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●● ●●
●
●●●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
●
●
●●
●●
●●
●
● ●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●●
● ● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●●
●●
●
●
●●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●●
●
●
●
●●
●
● ●
●●
●
●
●
●●●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●●
●
●
●
● ●
●●
●
●
●
● ●
●
●
●
● ●
● ●● ●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●
●●
● ●
●
● ●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●●
●● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
● ●
●
●
●
●
●
●
●●● ●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●●●● ●
●
●
●
●
●
●
●●
●
● ●
●
●●
●●
●● ●
●● ● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●
● ●
●●
●●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●●
●
● ●
●
●
●
● ●
●
●
● ●
●●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●●●
●●
●
● ●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●●
●
●● ●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●●
●
●
●
●●
●
●●
●
●
●● ●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●
●
● ●●●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●
●●
●
●
●● ●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●● ●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●● ●●●
●●
●●
●
●
●
●●
●
● ●
●●
●
●
●●
●
●
●
●
●
●● ●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
● ●● ●
●●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●●
●
●
●
●
●
●
●●
●
● ●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
● ●
●
●●
●●
●
●
●●
●
●●
● ●● ●●●
●
●
●
●
●●
●
●● ●
●●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●
●●
●● ●
●●
●
● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ● ●
●
●
●●
●●
●
●
●
●
●
●●
●
● ●
●● ●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
●
●
●●
●
●
●●
●
●●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●●●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
● ●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●●
●●●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●●
●●
●
●
●●
●
●
●●
●●●●●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●● ●
●●●●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●● ●●● ●●
●
●●●
●●●
●
●
●
●
●●●●●● ●● ● ●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●●
●
●
●●
●
●●●●●
●
●
●
●
●●
●●
●●●●●●●●●●●●
●
●●●
●
●●●●●●
●●●●
●
●●
●●
●●●●
●
●●●
●
●
●
●●●●
●●● ●●●●●●●●●● ●●
●
●
●
●
●
● ●
●●
● ●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
● ●
● ●
●
●
●● ●
●
●
●
●●●
●
●
● ●
●●●
●
●
●
●
●
●
●●
●
●
●●●
●
●●
●●
●
●●
●
●
● ●●
●●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●● ●
● ●
●
●● ●●
●●
●
●●
●
● ●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
●●●
●
● ●
●●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●
●
●
● ● ● ●
● ●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●●
●
●
●●
●
● ●
● ●
● ●
●
●●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●●●
●
●●●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
● ●
●
● ●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●●
●
●
●●● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●● ●
●●
●● ● ●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
● ●●
●
●
●●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
● ●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
● ●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
● ●
●
●
●
●
● ●
●●
●
●●
●●
●
●
●●●
● ●
●
●●
●●
●●
●●
●
●
●
●●
●
●●
●●
● ●●
●
●●
●
●
●
●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●●●
●● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
●
● ●
●
●
● ●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
● ●
●
●
●
●●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
● ●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●●●●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
● ●●
●●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
● ●
●●
● ● ●●●
●●
●
●●
●
●●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●
●●
●
●
●●
●●
●
●
●
● ●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●●
●
●
●
●
●
●●
●●
●
●
● ●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●● ●
●
●
●
●
● ● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●●
●●
●
●
●●
●
● ●
● ●●
● ●●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
● ●
●
● ●
●
● ●
●
●
●
● ●
●
●
●
●
●
● ● ●
●
●
●
●●
●●
●
●
●
●●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
● ●●●
●
●●
●● ●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●●
●●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●
●●
● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●●
●
●●
●
●●
●
●●
●
●
●
● ●
●
●●
●●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●●●
●
●●●
●
●
●
●
● ●● ●●
● ●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●● ●●
●
●
●
●●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●●
●●● ●
●●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
● ●
●●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
● ●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
● ●●●
●●
●
●
●
●●
●
●
●
●●
● ●
●
●
●● ●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●●
●●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●● ●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●●
●●●
●
●
●●●●
●
●
●
●
●
●
●
● ●
●
●● ● ●
●
●
●
●
●
●
●
●
● ●
●●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
● ●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●●●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●● ●
● ●●● ●
●●
●
●
●
●●
●
●
● ●●
●
●●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
● ●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●●
●●
●
●●
●●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●● ●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
● ●●
●
● ●
●
●●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●●●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●●●
●●
●
●
● ●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●
● ●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●●●
●
●
● ●
●
●●●
●
● ●●
●
●●
●●
●
●
●
●●
●●
●
● ●● ●
●●
●●
●
●●
● ●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
● ●
●
●
●● ●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●●
●
●
●
●●●
●
●
●●
●
●
●
● ●● ●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●●●
●
●
●●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
● ● ●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
● ●
● ●
●
●
●●
●
●●
● ●
●
●
●● ●
●
●●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
● ● ●● ●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●● ●●
●● ●
●●
● ●● ●
●
●
●
●
●
●
●●●
●
●●
●
● ●●
●
●
●●
●
●
●
●● ●
●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
● ●●●
●●●●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●●● ●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●● ●●
●
●
●
●●● ●
●
●●
●●
●
●
●
●
●●
●
●
●●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
● ●●
●●
●● ●
●●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●
●
●
● ●
● ●● ●●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
● ●
● ●●
●
●
●
●●
●●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●●
●
● ●
●
●
●
●
●
●
●
●●●
●
● ●●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
● ●●
●●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
● ●
●
●
● ●
●●
●
●
●●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●●
●
●●
●●
●
●
●
●
●
●
●● ●
●
●
●●
● ●
●
●●
●
●●●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●●
●●
●●
●
●
●
●
●
●●
●
●●
● ●●●
●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
● ●●
●
●●
●
●
●●
● ●●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●● ●
●
●
●●
●
●
● ●
●●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
● ● ●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●● ●
● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●●
● ●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●●
●●●●●●●●●
● ● ●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●●
●
●
●
●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
● ●
●
●
●
● ●
●
●●●
●
●
●
●
●●
● ●●● ●
●
●
●
●
●●
● ●
●
●
●
●
●
●●
●
●
●●
●
●● ●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
● ●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●● ●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
● ●●
●
●●
●
●
●● ●
●
●
●
●
●
●
●
●●
●●
●●
●
●●
●● ●●
●
●
●
●●
●
●
●
● ●
●● ●
●●
● ●●
●●
●
●●
●
●
●
●
●●
● ●
●●
●●
●●●
●●
●
●
●
●●
●
●●
●
●
●
●
● ●
●
●●
●
●●●
●
●
●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
● ●●
●
●
● ●
● ●
●
●●
●●
●
●
●
● ●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
1.0 1.5 2.0 2.5 3.0 3.5
−2−1
01G2 − G0
Average log−expression
log−
fold−c
hang
e
![Page 15: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/15.jpg)
Differential Expression - Example
A=log(FL-MO)+log(BM-MO)
M=log(FL-M
O/B
M-M
O)
●
●
●
●
● ●●
●
●
●●
●●●●●
●
●● ●●
●
● ●
●
●
●●
●
●●
●●●
●
●
●
●
●●
●
●
● ●●●
●●●
●
●
●●●
●●●
●
●●
● ●● ●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
● ●●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
● ●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●●
●
● ●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
● ●
●
●
● ●
●
●●
●
●●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●●
●
●●
●● ●
●
●
●
●●
●
●
●
●●● ●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●●
●
●
●
●
●
●●
●
●
●●
●
● ●
●
●
● ●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
● ●●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●●
●
●●●
● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●●
●
●
●
●
● ●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
● ●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●● ●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●● ●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●●
●
●●●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●● ●
●
●
● ●
●
●●
●
●
●
●
● ●
●●
●● ●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●●
●●
●
●●●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●●
●
●
●●
●
●
●
●
●
●● ● ●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
● ●
●
●●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●● ●
●
●
●●
●●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
● ●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●
●●
●
●● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●● ●
●
●
●
●
● ●
●
●
●●
●
●
● ●
●
●●
●
●
●
●
●
● ●●●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●●
●
●●
●
●●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●●
●
●
● ●
● ●
●●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●●
●●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●● ●
●
●
● ●●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●●●
●
●
●
●
●
●●
●
●● ● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
● ●●●
● ●
●●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●●●●
●●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●●
●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
● ●●●●
●
●
●
●
●●●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●● ●
● ●
●●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●●● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●●
●
●●
● ●
●●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●●
●
●
●●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●● ●
●
●
●
●
●
● ●
●
●
●●
●●
●
● ●● ●
●●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●●
●
●
●
●
●
● ●
● ●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●●
●
●
●●
●●
● ●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
● ●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●
●
●●●
●●
●
●
●
●
●
●
●
● ●
●
● ●●
●
● ●●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●● ●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●●
●
● ●●
●
●
●
●
●
●●
● ●●
●●
●●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
● ●
●
●●
●
●
●
●●
●
● ●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
● ●
●
●
●
●
●
● ●
●
●●
●
●●
●
●
●
●
●●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●●
●● ●
●
●●● ●
●●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●●●●●●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●●
●
●●
●●●
●
●
●
●●●
●
● ●
●●
●●●●
●
●
●●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
● ●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
● ●
●
●
● ●● ●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
● ●●
●
●
●
●
●
●
●
●
●
● ●●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●●●
●●
●●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●●● ●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●●
●
●
●●
● ● ●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●● ●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●●●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
● ●●●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●●●
●
●
●
●
● ●
●
●
●
●
●● ●
●
●
●
●●● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●
●●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●●●●
●
●
●
●
●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ● ●
●●
●
●
● ●●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●●
●● ●●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●●
● ●
●
●●
●
●
●
●●
●●
●●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●● ●
●●
●
●
●●
●
●
●
●
●●
●● ●●
●
●●● ●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●●
●●
●● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●●●
●
●
●
●●
● ●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
● ●
●
●●
●
●
● ●
●●
●
●
●● ●
●
●● ●●●
●
●●
●
●● ●●●
● ●
●●
●
●
●
●●
●
●●
●●
●
●
● ●
● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●●●●
●●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●●
●
●●
●
●●●
●
●
●
●●●
● ●
●
●
●
●
● ●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
● ●
●
●
●
●●●●
●
●
●
●●
●
● ●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●
●
●●
●
●●
●
● ●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●●
●●
●
●●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●●
●●
●
●
●
●
●
●
●
●● ●
●●
●
●
●
●●
●
●
●●●
●
●
●
●● ●
●●
●●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●●
●● ●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●●
● ●
●
●
●
●
●
●
●
● ●●●●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
● ●●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●
●●
●
●
●
●●
●● ●
● ●●
●
●
● ●●●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
● ●●●
●●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●● ●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●● ● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
● ●● ●●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
● ● ● ●●
●●
●
●
●●
●●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●●●
●
●
●● ●
●
●
● ●
●
●
●
●●
●
●
●● ●●
●
●
●
●
●
●●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●● ●●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●●●
●
●●
●
●●
●●
●
●
●
●●●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●
● ●
●
●
●●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●●
●●
●●
●●
●
●●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●●●
●●
●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●●● ●
●
●●
●
●●●●
●
●●
●● ●
●●
●
●●
●
●
●
●
●
●●
●
●● ●
●
●●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●● ●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●●●
●●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●●
● ●●
●
●
●●
●
● ●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●●
● ●●
●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●● ●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●● ● ●
●
●
●
●
●
●
●●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●● ●
●
●
●●
●
●●●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●●
●
●
●●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●●
●
●● ●
●●
●●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
● ●●
●
●●
●
●
●
●
●●
●
●
●●●
●
● ●
●
●
●
●●
●
●
● ●
●
●●
●●
●● ●
●●
●● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ● ●
●
●●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●●
●●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●●
● ●
●●
●●
●
●
●
●
●
●
●●
●
● ●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
● ●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●●●
●
●●●
●●
●●
●
●●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
● ●
● ●
●●
●
●●●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
● ●
●
●
●
●●●
● ●
●
●●
●
●●
●
● ●
●
●
●
● ● ●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●● ●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●●●
●
●
●
● ●
●●●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●●
●
●●
●
●● ●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●●●
●●
●
●
●
●
●●●
●●●
●
●
●
●
●●●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
● ● ●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●● ●
●●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●●
●●
●
● ●●
●
●●
●
● ●●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●
●●
●●●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●● ●
●●●
●●
●
●
●
●●
●●
●
●
●●●
●●
●
● ●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
● ●
●
●●
●
●
●●
●●
●●
● ●
●
●
●●
●
●●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ● ●
●
●● ●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●
●●●
●
● ●
●
●
●
●
●
●
● ●●
●●
●
●
●
●●
●
● ●●
●
●
●
●
●●
●
●● ●●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
● ●●
●
●
●●
●
●
●●
●
●
●
● ●●
●
●
●●
●●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
● ●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●●●
●
●
●
●
●● ●
●
●
●●
●
●●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
● ●
●●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ● ●
●
● ●
●
●● ●●
●
●
●●
●●
●
●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ●●
●
●
●
●
●
●
●
● ●
●
●●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●
●●
●●
●
●●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●●
●●
●
●●
●
●
●
●
●●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
● ●
●
●
●
●
●●●
●●
●
●
● ●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
● ●●●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●
●
●
●
●
●
●●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
● ●
●●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
● ●●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
● ●
●
●●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
● ●
●
●
●●
●
●
●
●
●● ●
●●
●
●
●
● ●
●
●● ●
●
●●
●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●●
●
● ●
●
● ●
●
●
●
●
●●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
● ●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
● ●●
● ●●
●
●●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●●
●
●
●
●
●
● ●●
●
● ●● ●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●●
●
● ●
●●
●
●
●
●●
●●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●● ●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●●
●●
●●
●●
●●
●
●
●●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
● ●●
●
●
●●
●●
●
●
●
●●●
●
●
●
●
●●
●
●
●● ●●
●
●
●
●●
●
●● ●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●●
●
●●
●●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
● ●
● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●●●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
● ●
● ●
●
●● ●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●● ●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●●
●
●●
● ● ●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●
●
●
●
●
●● ●● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
● ●●
●●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●● ●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●●
●●
●
●
●
●
●
●
●●●
●
●
● ●
●●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●●●
● ●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●● ●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
● ●●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●
●●●
●
●
●●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●●●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●● ●
●● ●
●
●●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
● ●●
●●
●
●● ●
●
●
●
●
●●● ●
●
●●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●● ●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●●
●
●●
●
●
●●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●●●
●
●
●
●● ●
●●●
●
●
●
● ●
●
● ●
●
●
●●
●
●
●
●
●● ●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●● ●
●
●
●
●
●●
●
●
●●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ● ●
●
●
●●
●
● ●●
●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●●●
●
●●● ●
● ●●
●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●
●● ●
●
●
●●●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●● ●
●
●
●●
●●● ●
●
●
●
●●● ●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●●
● ●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●● ●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
● ●●●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ● ●●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●●
●●●
●
● ●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●● ●
●●
●
●●
● ●
●
●
●
●
●●
●●
●●
●
●
●●
●
●
●
●
●
● ●
●
●
●●
●
●●
●
●
●●
●
●●
●●●●●●●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●●
●
●●
●●
●
●
●●●
●●
●
●
●
●●● ●
●
●●
●●●
●●
●
●
●
●
●
● ●●
●
●●
●
●
● ●● ●
●●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●●
●
●
●
●
●
●
●
● ●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●● ●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●
●●
●●
●
●
●
●
●●
● ●●
●
●
●
●
●
●● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●●
●
●●
●
●●
●
●
●●
●
●●
● ●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
● ●
●
●
●●
●
●●
●
●
●
●●● ● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●●● ●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●●
●
●
●
●●
●
●●
●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●● ●
●●
●
●
●● ●●●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●●
●
●
●●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●●
●
●●
●
●●
●
●●
●
●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●● ●●
●
●
●
●
●●
●●
●
●●
●● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●●
●
●
●
●
●
●
● ●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●● ●
●
●●●
● ●
● ●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ●
●●
● ●
●●
●
●
●●●
●●
●●
●
● ●●
●
●
●
●
●
●
●
●
●●●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●
●
●
●
●●
●
●
●
●●
●
● ● ●●
●●
● ●●
●
●
●
● ●●●
●●
●●
●●
●
●●
● ●
●
● ●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●●
●
● ●
●●
●
●●
●
●●
● ●
●●●
●
●
●●
●
●●
● ●●
●
●
●
● ●●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
● ● ●
●
●
●●
●
●
● ●
●
●
●
● ●
●
●
●
●●
●
●
●●
●
●
●●●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●
●
●●●
●●
●●
●
●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●● ●
● ●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
● ●
●
●
● ●
●
●
●
●
●
●
●
●●●
●●
●
●●
●●
●
●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●●●
●
●● ●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
● ●●●
●
●
●●●
●
●
●
●
●
●●●●
●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●
●●
●●
●
●
● ●●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
● ●●
●● ●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●● ●●
●●
●
●
●●
●
●
●●●
●
●
●●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●●
●●
●
●
●
●
●
●
●●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
● ●
●●
●
●
●
●
●
●
● ●
●
●
●
●●●
●
● ●
●
●
●
●
●●●●
●
●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●●●
●●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
● ●
●
●●
●
●
● ●
●
●●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ● ●●●
● ●
●
●
●
●
●
●●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●● ●
●
●
●●●●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
● ●●● ●
● ●●
●
●
●
●
●
●●
●
● ●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
● ●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
●
●●
●
●
●●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
● ●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●●
●●
●
● ●
●
● ●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●
● ●
●●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●● ●
●
●
●●
●●
●
●
●
●
●
●●●
●
●
● ●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●●
●●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●●
●●
●●
●
●●●
●
●
●
●
●●● ●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●●●
●
●● ●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
● ●
●
●● ●
●●
●●
●
●
●
●
●●●●●
●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●
●●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●●
●
●
●
●
●
●●
● ●
● ●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
● ●
●
●●
●● ●●
●●
●● ●●●
●
●
●
●
●● ●
●
●●●
●
●
● ●●●
●
●●
●
●
●
●●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
● ●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
● ●●
●
●
●
● ●
●
●●
●●
●
●
●
●●
●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●●●
● ●
●
●
●●●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●● ●● ●●
●●●
●● ●
●
●●
●
●●●
●●
●
●
●
●
●●● ●●●
●●
●●●●●●● ●●
●
●●
●
●
●
●
●
● ●
●
●
●●●
●
●
●●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
● ●●
● ●●
●●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●
● ●
●
●
●
● ●
●
●●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
● ●
●●
● ●
●
●
●
● ●●●●
●
●
●
●
●● ●
●
●
●●
●
●
●
●
●●
● ●●●
●
●●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
● ●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●
●●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●● ●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●● ●
●
●
●
●
●
●
●●
●
●●●
●
●●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●●
● ●●
●
●●●
●●
●●
●
●●●●
●●●
●
●●
●●
● ●
●
●
●
● ●● ●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
● ●
●
●
●
●
●● ●
●
●
●
● ●
●●
● ●
●
●
●
●
●
●
● ●●
●
●
● ●
●
●
●
●
●●
●●
●
●
●●
●
●● ●
●●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●●●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●
●●
●
●
●
●●●
● ● ●●●●
●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●●
● ●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●●
●
●●
●●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●●
●●
●
●
● ●
●
●●
●
●
●
●
●
●
● ●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
● ●
●
●
●●
●
●●
● ●
●
●
●
● ●
●
●●
●●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●● ●
●●
●●
●
●
●
●● ●●
●
●
●●●
●
●
●●
●
●
●●
●
●
● ●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●
●
●● ●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●
● ●
●
●
●
●
●●
●●
●
●●
●
●
●●
● ●●
●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
● ●●
●●
●
●●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●●●
●
●
●
●●
●●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
● ●●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●●
●
● ●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
● ● ●●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●●
●
●●
●● ●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●● ●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●
●●
● ●● ●
●
●
●
● ●● ●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●● ●●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●●
●●●
●
●
●
●●
●
●
●●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●● ●
●
●●
●● ●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
● ●●
●
●●
●●
●
●
●●●
●●●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●●●
●
●
●
● ●
●
●
●
●
●
●
● ●●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●●
●
●
● ●
●●
●
●
●
●
●
●●
●
●
● ● ●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●●●
● ●●
●
●
●
●●
●●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●● ●
●
●
●
●
●●
● ●
●
●
●
●
● ●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●
●●●●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
● ●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●●
●
●
●
●●
●●
●
●●
●
●
●
●●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●● ●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ● ●●
●
●●●●
●
●
●
●
●●●
●
● ●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●●
●
●●
●
●
●
●
●
●
●●
● ●
●
●●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●●
●
●●●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
● ●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●●
●●
●●
●
●
●
●
●●
●
●
●●●
●
●
●●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●●
●
●
●
●
●
● ●
●● ●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
● ●
●● ●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ● ●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
● ●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●● ●
●
●
●
●
●
●
●
● ●●●
●
●
●
● ●
● ●
●
●
●
●
●●●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
● ●●●
●
●
●
●●
●
●
●
●
● ●
●
●
● ●
●
●●
●
● ●
●
●●
●
●
●●
●
●
●
●●●
●
● ●
●
●
●●●●
● ●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●● ●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
● ●
●●
●
●
● ●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
● ●
●
●
●●●
●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●
●
●
●●
●
●
● ●●●
●
●
●●● ●
●
●● ●
●
●
●
●
●●
●
●
●●
●
●
●●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●● ●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●●
● ●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●●● ●
●
●
●
●
●
●
●
●
●●
●
●●
●● ●
●
●
●
●
●
●● ●●
●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●
●●
●●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
●
● ●●
●
●
●
● ●
●
●
●
●
●
●●
●●
●
●
●
●●●
●
●●●
●
●
●
●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●●
●
● ●
●
●
●●
●
●
●
●
●● ●
●● ●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●●●
●
●●
●
●
●
●
●●
●
●
●●●●
●
●●●
●
●
●
●●
●●●
●
●●
● ●●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●●
● ●●
●●●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
● ●
●
●
●
●
●●
●
●
●●
●
●●
●●●
●●
●
●
●● ● ●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●●
●●
●● ●●
●●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●
●
●
●● ●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●
● ●●●
●
●●
●● ●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●● ●●
●
●●●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●●
●
●
●
●
●
●
●
●●
●●
●●
●
● ●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●●
● ● ●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●●
●●
●
●
●●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●●
●
●
●
●●
●
● ●
●●
●
●
●
●●●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
● ●
●●
●
●
●
● ●
●●
●
●
●
● ●
●
●
●
● ●
● ●● ●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●●
●
●● ●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●●
●
●●
● ●
●
● ●
●
●●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●●
●● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
● ●
●
●
●
●
●
●
●●● ●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●●
●●●● ●
●
●
●
●
●
●
●●
●
● ●
●
●●
●●
●● ●
●● ● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●●
● ●
●●
●●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●●
●
● ●
●
●
●
● ●
●
●
● ●
●●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●●●
●●
●
● ●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●●
●
●● ●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●●
●
●
●
●●
●
●●
●
●
●● ●
●●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●
●
● ●●●
●●
●
●
●
●
●● ●
●
●
●
●
●●
●
●●
●
●
●● ●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●● ●
●
●●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●● ●●●
●●
●●
●
●
●
●●
●
● ●
●●
●
●
●●
●
●
●
●
●
●● ●
●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●●
●
●●
●
●●
●
●
●
●
●
● ●● ●
●●
●
●
●
●
●
●●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●●
●
●
●
●
●
●
●●
●
● ●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
● ●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
● ●
●
●●
●●
●
●
●●
●
●●
● ●● ●●●
●
●
●
●
●●
●
●● ●
●●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●
●●
●● ●
●●
●
● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●● ● ●
●
●
●●
●●
●
●
●
●
●
●●
●
● ●
●● ●
●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●●●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●●●
●●
●
●
●
●●
●
●
●●
●
●●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●
●●●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
● ●●●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●●
●●●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●
●
●●
●●
●
●
●●
●
●
●●
●●●●●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●● ●
●●●●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●● ●●● ●●
●
●●●
●●●
●
●
●
●
●●●●●● ●● ● ●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●●
●
●
●●
●
●●●●●
●
●
●
●
●●
●●
●●●●●●●●●●●●
●
●●●
●
●●●●●●
●●●●
●
●●
●●
●●●●
●
●●●
●
●
●
●●●●
●●● ●●●●●●●●●● ●●
●
●
●
●
●
● ●
●●
● ●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
● ●
● ●
●
●
●● ●
●
●
●
●●●
●
●
● ●
●●●
●
●
●
●
●
●
●●
●
●
●●●
●
●●
●●
●
●●
●
●
● ●●
●●
●●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●● ●
● ●
●
●● ●●
●●
●
●●
●
● ●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
●●●
●
● ●
●●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●
● ●●
●●
●
●
●
●
●
●
●
●
●
●
●
● ● ● ●
● ●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●●
●
●
●●
●
● ●
● ●
● ●
●
●●
●
●
●
● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●●
●
●
●
●●●
●
●●●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●●●
●
●
● ●
●
● ●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●
●
●
●●
●
●
●●● ●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●● ●
●●
●● ● ●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
● ●●
●
●
●●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
● ●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
● ●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
● ●
●
●
●
●
● ●
●
●
●
●
● ●
●●
●
●●
●●
●
●
●●●
● ●
●
●●
●●
●●
●●
●
●
●
●●
●
●●
●●
● ●●
●
●●
●
●
●
●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●●●
●● ●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●●●
●
●
●
●
● ●
●
●
● ●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●●
●
●
● ●
●
●
●
●●
●
●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
● ●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●●●●
●
●
●
●
●●
●
●
●●
● ●
●
●
●
● ●●
●●
●
●●●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
● ●
●●
● ● ●●●
●●
●
●●
●
●●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●●
●
●
●●
●
●
●●
●●
●
●
●
● ●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
● ●
●
●
●
●
●
●
●
●
●
●
● ●
●
●●
●●
●
●
●
●
●
●●
●●
●
●
● ●
●
●
●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●● ●
●
●
●
●
● ● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●●
●●
●
●
●●
●
● ●
● ●●
● ●●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
● ●
●
● ●
●
● ●
●
●
●
● ●
●
●
●
●
●
● ● ●
●
●
●
●●
●●
●
●
●
●●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
● ●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
● ●●●
●
●●
●● ●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●●
●
●
●●
●●
●
●
●●
●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●
●
●
●
●●
●
●●
● ●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●
●
●●
●
●●
●
●●
●
●●
●
●
●
● ●
●
●●
●●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●●●
●
●●●
●
●
●
●
● ●● ●●
● ●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●●
●
● ●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●● ●●
●
●
●
●●
●
●●
●
●
●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●●
●●● ●
●●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●
● ●
●●
●
●
●
●
●●
●
●
●
●
●
●●●
●
●
●●
●
●
●
●
● ●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●●●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
● ●●●
●●
●
●
●
●●
●
●
●
●●
● ●
●
●
●● ●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●
●●
●
●
●●
●●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●● ●
●
●
●
●
●
●
●
● ●● ●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●●
●●●
●
●
●●●●
●
●
●
●
●
●
●
● ●
●
●● ● ●
●
●
●
●
●
●
●
●
● ●
●●
●●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
● ●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
● ●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●●
●
●●●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●● ●
● ●●● ●
●●
●
●
●
●●
●
●
● ●●
●
●●
●
●
●
●●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●
●●
● ●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●●
●●
●●
●
●●
●●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●● ●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●
●
● ●●
●
● ●
●
●●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●●●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●●●
●●
●
●
● ●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●●
●
●
●
●
● ●●
●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
● ●●
●
●
●
●
●
●●
●
●
●●
●
●●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●
●
●
●
●●●
●
●
● ●
●
●●●
●
● ●●
●
●●
●●
●
●
●
●●
●●
●
● ●● ●
●●
●●
●
●●
● ●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
● ●
●
●
●● ●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
●●
●
●
●
●●●
●
●
●●
●
●
●
● ●● ●
●
●
●
●
●
●●
●
●
●
●
●
● ●
●
●●●
●
●
●●
●
●●
●●
●
●
●
●●
●
●
●
●
●
●●
●●
●
●
●
● ● ●
● ●
●
●
●
●
●
●
●
●
● ●
●
●
●
● ●
●
●
●
● ●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●●
● ●
● ●
●
●
●●
●
●●
● ●
●
●
●● ●
●
●●●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
● ● ●● ●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●● ●●
●● ●
●●
● ●● ●
●
●
●
●
●
●
●●●
●
●●
●
● ●●
●
●
●●
●
●
●
●● ●
●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
● ●●●
●●●●
●
●
●
●
●
●
●
●
●●
●
●
● ●
●
●
●●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●●●
●
●
●●● ●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●● ●●
●
●
●
●●● ●
●
●●
●●
●
●
●
●
●●
●
●
●●
●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
● ●●
●
●
●●
●
●
●
●
●
●
●
●
●●
● ●
●
●
● ●●
●●
●● ●
●●
●
●●
●
●
●
●
●
●●●
●
●
●
●
●
●●●
●
●
●
●
● ●
● ●● ●●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●●
●
●
● ●
● ●●
●
●
●
●●
●●
●
●
●
●●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●● ●●
●
● ●
●
●
●
●
●
●
●
●●●
●
● ●●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
● ●●
●●
●●
●
● ●
●
●
●
●
●
●
●●
●
●
●
●●
● ●
●
●●
●
●
●●
●
●
●
●
●
●
●●
●● ●
●
●
●
●
● ●
●
●
● ●
●●
●
●
●●
●
●
●
●●●●
●●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●
●●
●
●
●
●●●
●●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●●●
●
●●
●●
●
●
●
●
●
●
●● ●
●
●
●●
● ●
●
●●
●
●●●
●
●
●
●
●
●
● ●
●●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●●●
●●
●●
●
●
●
●
●
●●
●
●●
● ●●●
●
●
● ●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●● ●
●
●
●●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●●
●
●
●
● ●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
● ●●
●
●
●
●
●
●
●
● ●●
●
●●
●
●
●●
● ●●●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●
●
●● ●
●
●
●●
●
●
● ●
●●●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
● ●●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
● ● ●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●●
● ●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●● ●
●
●● ●
● ●
●
●
●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
● ●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●●
● ●
●
●
●
●●
●
●
●
●
●
●●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●●
●●●●●●●●●
● ● ●
●
●
●
●●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
● ●
●
●
●
●
●●●
●
●
●
●
●
●
●● ●
●●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●
●
● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
● ●
●
●
●
● ●
●
●●●
●
●
●
●
●●
● ●●● ●
●
●
●
●
●●
● ●
●
●
●
●
●
●●
●
●
●●
●
●● ●
●
●●
●●
●
●
●
●
●
●
●●
●
●
●●●
●
● ●
●
●
●
●
●
●
●●
●●
●
●●
●
●
●●● ●
●
●●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●●
●
● ●●
●
●●
●
●
●● ●
●
●
●
●
●
●
●
●●
●●
●●
●
●●
●● ●●
●
●
●
●●
●
●
●
● ●
●● ●
●●
● ●●
●●
●
●●
●
●
●
●
●●
● ●
●●
●●
●●●
●●
●
●
●
●●
●
●●
●
●
●
●
● ●
●
●●
●
●●●
●
●
●
●
●
●
●●
●●
●●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
● ●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●
●●
● ●●
●
●
● ●
● ●
●
●●
●●
●
●
●
● ●
●
●
●● ●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
1.0 1.5 2.0 2.5 3.0 3.5
−2−1
01G2 − G0
Average log−expression
log−
fold−c
hang
e
A=log(FL-MO)+log(BM-MO)
BM-MO genes
FL FL-MO genes
• Fold change analysis - change > |log2(2)|
![Page 16: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/16.jpg)
Problems - Fold change
• Low expression genes are treated equally as high expression genes
• We lose information about the variance from genes • No statistical significance • Is the only alternative when no replicate samples
are available (not recommended!)
![Page 17: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/17.jpg)
Basic ConceptsMean vs. variability
FL-MO BM-MO
FL-MO BM-MO
![Page 18: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/18.jpg)
T-test
We can use the t-statistic as an indication of differential expression
where X and Y are the mean (log) expression values of a gene in each group sample and nx and ny are the number of samples on these groups
difference between means
variance
![Page 19: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/19.jpg)
Student T-test
Test the hypothesis H0 : X - Y = 0
H1 : X - Y ≠ 0
We can use the t-student distribution to estimate for which t-statistic values the null hypothesis is rejected.
t student pdf – p-value =0.05
![Page 20: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/20.jpg)
Examples
G
ene
Exp
ress
ion
G
ene
Exp
ress
ion
Samples Samples
![Page 21: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/21.jpg)
Results - FL-MO vs. BM-MOVolcano Plot - combine p-value and fold change
Log p-
valu
e BM-MO genes
FL-MO genes
![Page 22: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/22.jpg)
Multiple Test Correction
• With a p-value of 0.01, we expect to make one mistake every 100 tests
• We have 12.626 genes, therefore 126 mistaken from 1046 DE genes.
• To solve this, a multiple test correction method is necessary (i.e. Benjamini-Hochberg) – It is based on the false discovery rate, i.e. the proportion
of false DE genes in your list of DE genes
![Page 23: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/23.jpg)
Differential Analysis - Conclusions
• Fold-change (alone) -> should be avoided • For patient samples
• high number of replicates are necessary (>30) • otherwise - low DE genes replicability
• For model (mouse) experiments • at least 3 samples (and moderated t-test) • we can not tell the variance without measuring it!
• All correct for multiple testing!
![Page 24: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/24.jpg)
Hands on!
• GEO is a public functional genomics data repository from NCBI.
• https://www.ncbi.nlm.nih.gov/geo/ • Enter GEO accession: GSE76999 • Browse the information of the experiment and
click
![Page 25: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/25.jpg)
Using GEO2R
• Select the interested data: • Monocyte extracted from adult Bone Marrow (BM) • Monocyte extracted from E15.5 Fetal Liver (FL) • Macrophage extracted from E12.5 Yolk Sac (YS)
• Define three groups • Get top 250 DE genes • See the R script
• Handout step 1 to 3
![Page 26: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/26.jpg)
Bioinformatics - Gene Expression Analysis
quantification and pre-processing
array hybridization/ sequencing
high level analysis
functional analysis
Removal of experimental artifacts/bad samples
finding relevant genes and samples
interpret groups of genes
PCA, clustering, differential expression
normalization
enrichment analysis GSEA
![Page 27: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/27.jpg)
Principal Component Analysis
• method for dimension reduction • find combination of genes explaining cells with distinct
expression • finding directions with highest variance
Gene 2
Gene 1
Recommended reading: Ringner M., Nature Biotechnology 26, 303 - 304 (2008)
![Page 28: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/28.jpg)
Principal Component Analysis
Gene 2
Gene 1
PC1
• method for dimension reduction • find combination of genes explaining cells with distinct
expression • finding directions with highest variance
Recommended reading: Ringner M., Nature Biotechnology 26, 303 - 304 (2008)
![Page 29: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/29.jpg)
Principal Component Analysis
Gene 2
Gene 1
PC1
PC2
• method for dimension reduction • find combination of genes explaining cells with distinct
expression • finding directions with highest variance
Recommended reading: Ringner M., Nature Biotechnology 26, 303 - 304 (2008)
![Page 30: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/30.jpg)
Principal Component Analysis
Gene 2
Gene 1
PC1
PC2
PC1
PC2
PCA Transform
• method for dimension reduction • find combination of genes explaining cells with distinct
expression • finding directions with highest variance
Recommended reading: Ringner M., Nature Biotechnology 26, 303 - 304 (2008)
![Page 31: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/31.jpg)
Principal Component Analysis
Gene 2
Gene 1
PC1
PC2
Gene 1
PC1
PC2
PCA Transform
Gene 2
• method for dimension reduction • find combination of genes explaining cells with distinct
expression • finding directions with highest variance
Recommended reading: Ringner M., Nature Biotechnology 26, 303 - 304 (2008)
![Page 32: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/32.jpg)
Gene Expression - PCA Example 1
First 2 PCs on the analysis of 5000 samples from Array Express/EBI
Can be interpreted as a computational FACs sorting (without knowing the markers)
![Page 33: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/33.jpg)
Gene Expression - PCA Example 2
PCA Analysis of van de Leer, 2016 data
First 2 PCs van de Leer, 2016 data
●
●
●●
●●
●
●
●
●●
●
−60 −40 −20 0 20 40 60 80
−40
−20
020
40
PC1
PC2
● ● ●BM−MOs FL−MOs YS−Macs
![Page 34: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/34.jpg)
PCA Analysis - Conclusions
• PCA allows an “blind” cell sorting • only works if variant directions split the groups • is complementary to clustering
• Weights allow interpretation of relevant variables
• Can also be used for quality check • samples not fitting to groups
• Alternatives to PCA: • tSNE - very commonly used in single cell
RNA-seq
![Page 35: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/35.jpg)
Clustering / Heatmaps
SamplesG
enes
norm. gene expression
-2 0 2
![Page 36: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/36.jpg)
Clustering / Heatmaps
metodode
Gru
po
Gru
po
Gru
po
Gru
po
Samples
Clu
ster
1
SamplesG
enes
Clu
ster
2C
lust
er 3
Clu
ster
4
clustering
clustering methods: k-means, hierarchical clustering, …
norm. gene expression
-2 0 2
![Page 37: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/37.jpg)
Hierarchical Clustering
distance metric - Pearson correlation recommended
YS−M
acs
YS−M
acs
YS−M
acs
YS−M
acs
FL−M
Os
FL−M
Os
FL−M
Os
FL−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
−2 0 1 2Row Z−Score
Color Key
YS−M
acs
YS−M
acs
YS−M
acs
YS−M
acs
FL−M
Os
FL−M
Os
FL−M
Os
FL−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
−2 0 1 2Row Z−Score
Color Key
![Page 38: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/38.jpg)
Hierarchical Clustering
distance metric - Pearson correlation recommended
YS−M
acs
YS−M
acs
YS−M
acs
YS−M
acs
FL−M
Os
FL−M
Os
FL−M
Os
FL−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
−2 0 1 2Row Z−Score
Color Key
YS−M
acs
YS−M
acs
YS−M
acs
YS−M
acs
FL−M
Os
FL−M
Os
FL−M
Os
FL−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
BM−M
Os
−2 0 1 2Row Z−Score
Color Key
High YS Mac
High YS Mac & FL Moc.
High Monocytes
High BM-Moc.
![Page 39: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/39.jpg)
Hands on! Handout Step 4 and 5
![Page 40: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/40.jpg)
Functional Analysis
Clustering/Differential Expression (DE) returns lists of hundreds of genes How to functionally characterize these?
Solution 1 - Look at each gene individually
Solution 2 - Relate these genes to annotations from databases
- Gene Ontology, pathways, gene sets, disease ontology, …
![Page 41: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/41.jpg)
Databases
Pathways
Manually or automatic curated annotation of genes
Ontologies
Experimental
![Page 42: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/42.jpg)
Gene OntologyControlled vocabulary to describe gene and gene product attributes in any organism
Formed by three ontologies
1. Biological Process (BP) 2. Molecular Function (MF) 3. Celular Component (CC)
Annotation (Organism depend) - genes are associated to terms manually (literature) or automatically (sequence homology)
![Page 43: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/43.jpg)
Gene Ontology
cellular process
regulation of celular process
cell cycle
chromatin modification
regulation of cell cycle
chromosome organization
biological process
ace2taf9
swi5 taf9
eaf1cbf1
![Page 44: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/44.jpg)
Gene Ontology
cellular process
regulation of celular process
cell cycle
chromatin modification
regulation of cell cycle
chromosome organization
biological process
ace2taf9
swi5 taf9
eaf1cbf1
ace2ace2
ace2
ace2
inheritance property
![Page 45: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/45.jpg)
GO Enrichment Analysis
regulation of cellular process
ace2 taf9
cbf1swiSWIACE2CBF1YJL099WYDL198CYCR085WYCR043CYDR825C
YDL093WYER016WYNL126WYKL053WYJL099WYDL198CYCR085WYBR043CYDR325WYCR085WYBR043C...up
regu
late
d ge
nes
all o
ther
gen
es
DE analysis results GO Term
How probable is that 3 up regulated genes are annotated to the GO term?
![Page 46: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/46.jpg)
GO Enrichment Analysis
regulation of cellular process
ace2 taf9
cbf1swiSWIACE2CBF1YJL099WYDL198CYCR085WYCR043CYDR825C
YDL093WYER016WYNL126WYKL053WYJL099WYDL198CYCR085WYBR043CYDR325WYCR085WYBR043C...up
regu
late
d ge
nes
all o
ther
gen
es
DE analysis results GO Term
GO Term Annotation
YES
NO
Statistics: Fisher's Exact Test
YES. NOU
p-re
gula
ted
3 1
8 6421
![Page 47: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/47.jpg)
Enrichment Analysis Tools
For a given gene list:
1. evaluate the the overlap of the list vs. all gene sets i.e. GO terms, pathways, …
2. Estimate p-value (corrected by multiple testing)
3. Rank gene sets by lowest p-value
![Page 48: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/48.jpg)
G:Profiler
We interface for enrichment analysis with: Gene Ontology, KEGG Pathway and TF binding
http://biit.cs.ut.ee/gprofiler/index.cgi
Check the results for my favorite genes:
Irf8 Id2 Spi1 Klf4 Runx2 Egr1
![Page 49: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/49.jpg)
Hands on! Handout Step 6
![Page 50: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/50.jpg)
G:Profiler
We interface for enrichment analysis with: Gene Ontology, KEGG Pathway and TF binding
http://biit.cs.ut.ee/gprofiler/index.cgi
Check the results for my favorite genes:
Irf8 Id2 Spi1 Klf4 Runx2 Egr1
![Page 51: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/51.jpg)
Integrative Analysis - ImmGen
• How do cells from van de Leer, 2016 compares to monocyte/macrophages from ImmGenn?
• we obtained/pre-processed ImmGen data (v1) from GEO (GSE15907)
• ImmGen - expression data of immune cells under standardized conditions
![Page 52: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/52.jpg)
• Batch Effects - Arrays from distinct lab tends to cluster together
Integrative Analysis - Problem
See: Leek JT,…. (2016). sva: Surrogate Variable Analysis. R package version 3.22.0.
���
���
�����
��
�
��
����
��
���
������
����
��
��
����
50 0 50 100 150
6020
020
40
PC1
PC2
MF.11c 11b+.Lu
MF.Alv.Lu
Mo.6+2+.SLN
Mo.6+2 .BL
MF.AT.v2
Mo.Lu
MF.480int.LV.Naive
BM MOs
FL MOs
YS Macs
![Page 53: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/53.jpg)
• Batch Effects - Arrays from distinct lab tends to cluster together
Integrative Analysis - Problem
See: Leek JT,…. (2016). sva: Surrogate Variable Analysis. R package version 3.22.0.
���
���
�����
��
�
��
����
��
���
������
����
��
��
����
50 0 50 100 150
6020
020
40
PC1
PC2
MF.11c 11b+.Lu
MF.Alv.Lu
Mo.6+2+.SLN
Mo.6+2 .BL
MF.AT.v2
Mo.Lu
MF.480int.LV.Naive
BM MOs
FL MOs
YS Macs
ImmGennvan de Leer, 2016
![Page 54: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/54.jpg)
���
���
�����
��
�
��
����
��
���
������
����
��
��
����
50 0 50 100 150
6020
020
40
PC1
PC2
MF.11c 11b+.Lu
MF.Alv.Lu
Mo.6+2+.SLN
Mo.6+2 .BL
MF.AT.v2
Mo.Lu
MF.480int.LV.Naive
BM MOs
FL MOs
YS Macs
• Batch Effects - Arrays from distinct lab tends to cluster together
Integrative Analysis - Problem
See: Leek JT,…. (2016). sva: Surrogate Variable Analysis. R package version 3.22.0.
Macrophages
Monocytes
![Page 55: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/55.jpg)
Integrative Analysis - PCA After Combat
• Solution - Batch effect removal with COMBAT • annotation of your data: tissue of origin, cell type,
experimental batches
See: Leek JT,…. (2016). sva: Surrogate Variable Analysis. R package version 3.22.0.
Hands on! Handout Step 7
![Page 56: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/56.jpg)
Bioinformatics - Gene Expression Analysis
quantification and pre-processing
array hybridization/ sequencing
high level analysis
functional analysis
Removal of experimental artifacts/bad samples
finding relevant genes and samples
interpret groups of genes
PCA, clustering, differential expression
normalization
enrichment analysis GSEA
![Page 57: EASL Course Bioinformatics of microarray analysis€¦ · •In doubt, consult a bioinformatician! Bioinformatics - Gene Expression Analysis quantification and pre-processing array](https://reader035.vdocument.in/reader035/viewer/2022081612/5f571f993322e0007c77c6a4/html5/thumbnails/57.jpg)
www.costalab.org