Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 17943] ファイルの概要

このコミットは、Go言語の標準ライブラリであるstrconvパッケージにUnquote関数の使用例を追加するものです。具体的には、src/pkg/strconv/quote_example_test.goという新しいテストファイルが追加され、ExampleUnquoteという関数を通じてstrconv.Unquoteの挙動が示されています。

コミット

commit 46d1461ab75d67844ed4292cb7324a23f3a8496a
Author: Shenghou Ma <minux.ma@gmail.com>
Date:   Mon Dec 9 23:24:58 2013 -0500

    strconv: add example for Unquote.
    
    R=golang-dev, r
    CC=golang-dev
    https://golang.org/cl/38920043

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/46d1461ab75d67844ed4292cb7324a23f3a8496a

元コミット内容

src/pkg/strconv/quote_example_test.go | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

diff --git a/src/pkg/strconv/quote_example_test.go b/src/pkg/strconv/quote_example_test.go
new file mode 100644
index 0000000000..405a57eb57
--- /dev/null
+++ b/src/pkg/strconv/quote_example_test.go
@@ -0,0 +1,35 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package strconv_test
+
+import (
+	"fmt"
+	"strconv"
+)
+
+func ExampleUnquote() {
+	test := func(s string) {
+		t, err := strconv.Unquote(s)
+		if err != nil {
+			fmt.Printf("Unquote(%#v): %v\n", s, err)
+		} else {
+			fmt.Printf("Unquote(%#v) = %v\n", s, t)
+		}
+	}
+
+	s := `cafe\u0301`
+	// If the string doesn't have quotes, it can't be unquoted.
+	test(s) // invalid syntax
+	test("`" + s + "`")
+	test(`"` + s + `"`)
+
+	test(`'\u00e9'`)
+
+	// Output:
+	// Unquote("cafe\\u0301"): invalid syntax
+	// Unquote("`cafe\\u0301`") = cafe\u0301
+	// Unquote("\"cafe\\u0301\"") = café
+	// Unquote("'\\u00e9'") = é
+}

変更の背景

Go言語の標準ライブラリは、その機能の利用方法を明確に示すために、Example関数を用いたコード例を豊富に提供しています。これらのExample関数は、go docコマンドでドキュメントとして表示されるだけでなく、go testコマンド実行時に実際にテストとして実行され、その出力が期待される出力と一致するかどうかが検証されます。これにより、ドキュメントの正確性とコードの動作の一貫性が保証されます。

strconv.Unquote関数は、Goの文字列リテラル(シングルクォート、ダブルクォート、バッククォートで囲まれた文字列)を解釈し、その中のエスケープシーケンスを処理して、実際の文字列値を返す重要な関数です。しかし、このコミットが作成された時点では、Unquote関数の公式な使用例が提供されていませんでした。そのため、開発者がこの関数の挙動、特にエスケープシーケンスの処理やエラーケースについて理解を深めるための具体的なコード例が必要とされていました。

このコミットは、strconv.Unquote関数の利用方法を明確にし、開発者がより簡単にこの関数を理解し、適切に使用できるようにするために、公式のExample関数を追加することを目的としています。

前提知識の解説

Go言語のstrconvパッケージ

strconvパッケージは、Go言語の標準ライブラリの一部であり、基本的なデータ型(整数、浮動小数点数、ブール値など)と文字列表現との間の変換機能を提供します。例えば、Atoi(文字列から整数へ)、Itoa(整数から文字列へ)、ParseBool(文字列からブール値へ)、FormatFloat(浮動小数点数から文字列へ)などの関数が含まれています。このパッケージは、特にユーザー入力の処理、外部データソースからのデータの読み込み、テキストベースのデータ処理において不可欠です。

strconv.Unquote関数

strconv.Unquote(s string) (string, error)関数は、Goの文字列リテラルとして表現された文字列sを解釈し、その引用符を取り除き、内部のエスケープシーケンスを実際の文字に変換した結果の文字列と、エラーを返します。

  • 入力: sは、Goの文字列リテラルとして有効な形式である必要があります。これは、ダブルクォート ("), シングルクォート ('), またはバッククォート (`) で囲まれている必要があります。
  • エスケープシーケンス: \n (改行), \t (タブ), \\ (バックスラッシュ), \" (ダブルクォート), \' (シングルクォート) などの一般的なエスケープシーケンスに加え、\xXX (16進数エスケープ), \uXXXX (Unicodeコードポイントエスケープ), \UXXXXXXXX (拡張Unicodeコードポイントエスケープ) なども処理されます。
  • シングルクォート: シングルクォートで囲まれた文字列は、Goの文字リテラルとして扱われ、対応する1文字の文字列が返されます。
  • バッククォート: バッククォートで囲まれた文字列(Raw String Literal)は、エスケープシーケンスを処理しません。つまり、バッククォート内のバックスラッシュは文字通りのバックスラッシュとして扱われます。
  • エラー: sが有効なGoの文字列リテラルでない場合(例: 引用符で囲まれていない、不正なエスケープシーケンスが含まれる)、エラーが返されます。

Go言語のExample関数

Go言語では、_test.goファイル内にExampleというプレフィックスを持つ関数を定義することで、コードの使用例を記述できます。これらの関数は、通常のテスト関数と同様にgo testコマンドによって実行されます。

  • 命名規則: ExampleFunctionNameのように、Exampleの後にテスト対象の関数名や型名を続けます。パッケージ全体や特定の機能の例を示す場合は、Example_FeatureNameのようにアンダースコアを挟むこともできます。
  • 出力検証: Example関数の内部でfmt.Printfmt.Printlnなどを用いて標準出力に出力された内容は、関数の末尾に記述された// Output:コメントの後に続くテキストと比較されます。両者が一致すればテストは成功し、一致しなければ失敗します。これにより、コード例が常に最新かつ正確であることが保証されます。
  • ドキュメント生成: Example関数は、go docコマンドによって生成されるドキュメントにも含まれます。これにより、開発者はコードの利用方法を簡単に参照できます。

Unicodeエスケープシーケンス (\uXXXX)

\uXXXXは、Unicode文字をその16進数コードポイントで表現するためのエスケープシーケンスです。XXXXの部分には4桁の16進数が入り、対応するUnicode文字を表します。例えば、\u00e9はラテン語の小文字「e」にアキュートアクセントが付いた文字「é」を表します。これは、ソースコード内で直接Unicode文字を記述できない場合や、特定の文字を明示的に表現したい場合に便利です。

fmt.Printf%#vフォーマット動詞

fmtパッケージはGo言語のフォーマットI/O機能を提供します。fmt.Printf関数は、C言語のprintfに似た書式指定文字列を使用して出力のフォーマットを制御します。 %vは、値のデフォルト表現を出力するためのフォーマット動詞です。 %#vは、%v#フラグを付けたもので、値のGo言語の構文表現を出力します。これは、デバッグ時に変数の内容をGoのコードとして再構築できる形式で表示するのに非常に役立ちます。例えば、文字列の場合、引用符で囲まれ、エスケープシーケンスが適切に処理された形式で表示されます。

技術的詳細

このコミットで追加されたExampleUnquote関数は、strconv.Unquote関数の様々な使用シナリオを網羅しています。

  1. testヘルパー関数: testという匿名関数が定義されており、これは与えられた文字列sに対してstrconv.Unquoteを呼び出し、その結果(成功した場合はアンクォートされた文字列、失敗した場合はエラーメッセージ)をfmt.Printfで標準出力に出力します。 fmt.Printf("Unquote(%#v): %v\n", s, err)およびfmt.Printf("Unquote(%#v) = %v\n", s, t)という行に注目してください。ここで%#vフォーマット動詞が使用されています。これにより、Unquoteに渡された元の文字列sがGoの文字列リテラルとして(つまり、引用符で囲まれ、エスケープシーケンスが適切に表現された形で)出力されます。これは、入力がどのような形式であったかを明確に示し、デバッグやドキュメントとして非常に有用です。

  2. 引用符なしの文字列: s := cafe\u0301``という文字列が定義されています。この文字列は引用符で囲まれていないため、strconv.Unquoteはこれを有効なGo文字列リテラルとして解釈できず、invalid syntaxエラーを返します。これは、Unquote関数が引用符で囲まれた文字列のみを処理するという重要な制約を示しています。

  3. バッククォートで囲まれた文字列: test("" + s + "")では、元の文字列sをバッククォートで囲んでいます。バッククォート文字列はRaw String Literalであり、内部のエスケープシーケンス(この場合は\u0301)は文字通りに解釈され、エスケープ解除されません。したがって、出力はcafe\u0301となります。これは、バッククォート文字列の特性を明確に示しています。

  4. ダブルクォートで囲まれた文字列: test("+ s +")では、元の文字列sをダブルクォートで囲んでいます。ダブルクォート文字列ではエスケープシーケンスが処理されます。\u0301はUnicodeの結合文字(Combining Acute Accent)であり、前の文字eと結合してéを形成します。したがって、出力はcaféとなります。これは、UnquoteがUnicodeエスケープシーケンスを正しく処理することを示しています。

  5. シングルクォートで囲まれた文字列: test('\u00e9')では、シングルクォートで囲まれた文字列がテストされています。Goではシングルクォートは文字リテラルを表しますが、strconv.Unquoteはこれを1文字の文字列リテラルとして解釈します。\u00e9はUnicodeの「é」を表すため、出力はéとなります。

これらのテストケースは、strconv.Unquoteがどのように異なる種類の引用符(バッククォート、ダブルクォート、シングルクォート)を処理し、特にUnicodeエスケープシーケンスを含む文字列をどのようにアンクォートするかを包括的に示しています。また、引用符がない場合のinvalid syntaxエラーも示されており、関数の期待される入力形式が明確にされています。

コアとなるコードの変更箇所

このコミットによる変更は、src/pkg/strconv/quote_example_test.goという新しいファイルの追加のみです。既存のコードの変更はありません。

--- /dev/null
+++ b/src/pkg/strconv/quote_example_test.go
@@ -0,0 +1,35 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package strconv_test
+
+import (
+	"fmt"
+	"strconv"
+)
+
+func ExampleUnquote() {
+	test := func(s string) {
+		t, err := strconv.Unquote(s)
+		if err != nil {
+			fmt.Printf("Unquote(%#v): %v\n", s, err)
+		} else {
+			fmt.Printf("Unquote(%#v) = %v\n", s, t)
+		}
+	}
+
+	s := `cafe\u0301`
+	// If the string doesn't have quotes, it can't be unquoted.
+	test(s) // invalid syntax
+	test("`" + s + "`")
+	test(`"` + s + `"`)
+
+	test(`'\u00e9'`)
+
+	// Output:
+	// Unquote("cafe\\u0301"): invalid syntax
+	// Unquote("`cafe\\u0301`") = cafe\u0301
+	// Unquote("\"cafe\\u0301\"") = café
+	// Unquote("'\\u00e9'") = é
+}

コアとなるコードの解説

追加されたquote_example_test.goファイルは、strconvパッケージのテストスイートの一部として機能します。package strconv_testという宣言は、このファイルがstrconvパッケージの外部からテストを行うことを示しており、これによりエクスポートされた関数のみがテスト対象となります。

ExampleUnquote()関数は、GoのExample関数の規約に従って記述されています。この関数は、strconv.Unquoteの様々な入力パターンとそれに対応する出力を示しています。

  1. test関数: この内部関数は、strconv.Unquoteの呼び出しをラップし、エラーが発生したかどうかに応じて異なるフォーマットで結果を出力します。 fmt.Printf("Unquote(%#v): %v\n", s, err): エラーが発生した場合、元の入力文字列sをGoの構文表現(%#v)で表示し、その後にエラーメッセージを表示します。 fmt.Printf("Unquote(%#v) = %v\n", s, t): 成功した場合、元の入力文字列sをGoの構文表現で表示し、その後にアンクォートされた結果の文字列tを表示します。

  2. テストケース:

    • s := cafe\u0301``: 引用符で囲まれていない文字列。Unquoteはエラーを返すことを期待されます。
    • test(s): 上記の引用符なし文字列をテスト。
    • test("" + s + ""): バッククォートで囲まれた文字列。エスケープシーケンスは処理されず、そのままの文字列が返されることを期待されます。
    • test("+ s +"): ダブルクォートで囲まれた文字列。Unicodeエスケープシーケンス\u0301が処理され、結合文字として前の文字と結合されることを期待されます。
    • test('\u00e9'): シングルクォートで囲まれた文字列。Unicodeエスケープシーケンス\u00e9が処理され、文字「é」が返されることを期待されます。
  3. // Output:コメント: この特別なコメントブロックは、ExampleUnquote関数が標準出力に出力する内容を正確に定義しています。go testコマンドは、このコメントの内容と実際の関数の出力を比較し、一致すればテストをパスとします。これにより、ドキュメントとしての正確性と、コードの動作の検証が同時に行われます。

このコードは、strconv.Unquoteの機能と、GoのExample関数を用いたドキュメンテーションとテストのベストプラクティスを簡潔かつ効果的に示しています。

関連リンク

参考にした情報源リンク

  • Go言語のstrconv.Unquoteに関するStack Overflowの議論: https://stackoverflow.com/questions/tagged/go+strconv.unquote
  • fmt.Printfのフォーマット動詞に関するGo公式ドキュメント: https://pkg.go.dev/fmt
  • Go言語のテストに関するブログ記事(Example関数を含む): https://go.dev/blog/testing-with-go
  • Go言語の文字列リテラルに関する情報: https://go.dev/ref/spec#String_literals
  • fmt.Printf%#vに関する解説記事: [https://medium.com/@vickylance/go-fmt-printf-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-v-vs-