rereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevv rereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereererererererererererevvrereerererererererererere rereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereerererererererererererereere