diff --git a/presets.yaml b/presets.yaml index 0f554e61c..6934b90d5 100644 --- a/presets.yaml +++ b/presets.yaml @@ -8,3 +8,5 @@ volumeScale: 1 prePhonemeLength: 0.1 postPhonemeLength: 0.1 + pauseLength: null + pauseLengthScale: 1 diff --git "a/test/e2e/__snapshots__/test_openapi/test_OpenAPI\343\201\256\345\275\242\343\201\214\345\244\211\343\202\217\343\201\243\343\201\246\343\201\204\343\201\252\343\201\204\343\201\223\343\201\250\343\202\222\347\242\272\350\252\215.json" "b/test/e2e/__snapshots__/test_openapi/test_OpenAPI\343\201\256\345\275\242\343\201\214\345\244\211\343\202\217\343\201\243\343\201\246\343\201\204\343\201\252\343\201\204\343\201\223\343\201\250\343\202\222\347\242\272\350\252\215.json" index c6dfd5bdb..a7152afd6 100644 --- "a/test/e2e/__snapshots__/test_openapi/test_OpenAPI\343\201\256\345\275\242\343\201\214\345\244\211\343\202\217\343\201\243\343\201\246\343\201\204\343\201\252\343\201\204\343\201\223\343\201\250\343\202\222\347\242\272\350\252\215.json" +++ "b/test/e2e/__snapshots__/test_openapi/test_OpenAPI\343\201\256\345\275\242\343\201\214\345\244\211\343\202\217\343\201\243\343\201\246\343\201\204\343\201\252\343\201\204\343\201\223\343\201\250\343\202\222\347\242\272\350\252\215.json" @@ -62,6 +62,14 @@ "title": "音声データをステレオ出力するか否か", "type": "boolean" }, + "pauseLength": { + "title": "句読点などの無音時間", + "type": "number" + }, + "pauseLengthScale": { + "title": "句読点などの無音時間(倍率)", + "type": "number" + }, "pitchScale": { "title": "全体の音高", "type": "number" @@ -91,6 +99,7 @@ "volumeScale", "prePhonemeLength", "postPhonemeLength", + "pauseLengthScale", "outputSamplingRate", "outputStereo" ], @@ -601,6 +610,14 @@ "title": "プリセット名", "type": "string" }, + "pauseLength": { + "title": "句読点などの無音時間", + "type": "number" + }, + "pauseLengthScale": { + "title": "句読点などの無音時間(倍率)", + "type": "number" + }, "pitchScale": { "title": "全体の音高", "type": "number" @@ -640,7 +657,8 @@ "intonationScale", "volumeScale", "prePhonemeLength", - "postPhonemeLength" + "postPhonemeLength", + "pauseLengthScale" ], "title": "Preset", "type": "object" diff --git a/test/e2e/single_api/morphing/test_synthesis_morphing.py b/test/e2e/single_api/morphing/test_synthesis_morphing.py index f1a6a9114..6284d7990 100644 --- a/test/e2e/single_api/morphing/test_synthesis_morphing.py +++ b/test/e2e/single_api/morphing/test_synthesis_morphing.py @@ -27,6 +27,8 @@ def test_post_synthesis_morphing_200(client: TestClient) -> None: "volumeScale": 1.0, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, "outputSamplingRate": 24000, "outputStereo": False, "kana": "テ'_スト", diff --git a/test/e2e/single_api/preset/__snapshots__/test_presets/test_get_presets_200.json b/test/e2e/single_api/preset/__snapshots__/test_presets/test_get_presets_200.json index 07e2707b8..5d2d53328 100644 --- a/test/e2e/single_api/preset/__snapshots__/test_presets/test_get_presets_200.json +++ b/test/e2e/single_api/preset/__snapshots__/test_presets/test_get_presets_200.json @@ -3,6 +3,8 @@ "id": 1, "intonationScale": 1.0, "name": "サンプルプリセット", + "pauseLength": null, + "pauseLengthScale": 1.0, "pitchScale": 0.0, "postPhonemeLength": 0.1, "prePhonemeLength": 0.1, diff --git a/test/e2e/single_api/preset/test_add_preset.py b/test/e2e/single_api/preset/test_add_preset.py index c352812ad..c0baa41d8 100644 --- a/test/e2e/single_api/preset/test_add_preset.py +++ b/test/e2e/single_api/preset/test_add_preset.py @@ -20,6 +20,8 @@ def test_post_add_preset_200( "volumeScale": 1, "prePhonemeLength": 10, "postPhonemeLength": 10, + "pauseLength": None, + "pauseLengthScale": 1, } response = client.post("/add_preset", params={}, json=preset) assert response.status_code == 200 diff --git a/test/e2e/single_api/preset/test_update_preset.py b/test/e2e/single_api/preset/test_update_preset.py index e5dc18821..ad2d34bf0 100644 --- a/test/e2e/single_api/preset/test_update_preset.py +++ b/test/e2e/single_api/preset/test_update_preset.py @@ -20,6 +20,8 @@ def test_post_update_preset_200( "volumeScale": 1, "prePhonemeLength": 10, "postPhonemeLength": 10, + "pauseLength": None, + "pauseLengthScale": 1, } response = client.post("/update_preset", params={}, json=preset) assert response.status_code == 200 @@ -40,6 +42,8 @@ def test_post_update_preset_422( "volumeScale": 404, "prePhonemeLength": 404, "postPhonemeLength": 404, + "pauseLength": 404, + "pauseLengthScale": 404, } response = client.post("/update_preset", params={}, json=preset) assert response.status_code == 422 diff --git a/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query/test_post_audio_query_200.json b/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query/test_post_audio_query_200.json index e47234dce..bebc440d2 100644 --- a/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query/test_post_audio_query_200.json +++ b/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query/test_post_audio_query_200.json @@ -52,6 +52,8 @@ "kana": "テ'_ストデ_ス", "outputSamplingRate": 24000, "outputStereo": false, + "pauseLength": null, + "pauseLengthScale": 1.0, "pitchScale": 0.0, "postPhonemeLength": 0.1, "prePhonemeLength": 0.1, diff --git a/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query_from_preset/test_post_audio_query_from_preset_200.json b/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query_from_preset/test_post_audio_query_from_preset_200.json index 466c4b103..bc144a617 100644 --- a/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query_from_preset/test_post_audio_query_from_preset_200.json +++ b/test/e2e/single_api/tts_pipeline/__snapshots__/test_audio_query_from_preset/test_post_audio_query_from_preset_200.json @@ -52,6 +52,8 @@ "kana": "テ'_ストデ_ス", "outputSamplingRate": 24000, "outputStereo": false, + "pauseLength": 15.0, + "pauseLengthScale": 1.4, "pitchScale": 0.9, "postPhonemeLength": 5.0, "prePhonemeLength": 20.0, diff --git a/test/e2e/single_api/tts_pipeline/test_audio_query_from_preset.py b/test/e2e/single_api/tts_pipeline/test_audio_query_from_preset.py index 725c523ee..0ec5dff51 100644 --- a/test/e2e/single_api/tts_pipeline/test_audio_query_from_preset.py +++ b/test/e2e/single_api/tts_pipeline/test_audio_query_from_preset.py @@ -24,6 +24,8 @@ def test_post_audio_query_from_preset_200( "volumeScale": 1.3, "prePhonemeLength": 20, "postPhonemeLength": 5, + "pauseLength": 15, + "pauseLengthScale": 1.4, } client.post("/add_preset", params={}, json=preset) diff --git a/test/e2e/single_api/tts_pipeline/test_multi_synthesis.py b/test/e2e/single_api/tts_pipeline/test_multi_synthesis.py index dafaafc35..50a8b50a7 100644 --- a/test/e2e/single_api/tts_pipeline/test_multi_synthesis.py +++ b/test/e2e/single_api/tts_pipeline/test_multi_synthesis.py @@ -28,6 +28,8 @@ def test_post_multi_synthesis_200(client: TestClient) -> None: "volumeScale": 1.0, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, "outputSamplingRate": 24000, "outputStereo": False, "kana": "テ'_スト", @@ -52,6 +54,8 @@ def test_post_multi_synthesis_200(client: TestClient) -> None: "volumeScale": 1.0, "prePhonemeLength": 0.2, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, "outputSamplingRate": 24000, "outputStereo": False, "kana": "テ'_ストト", diff --git a/test/e2e/single_api/tts_pipeline/test_synthesis.py b/test/e2e/single_api/tts_pipeline/test_synthesis.py index 739cf9d62..37636dc56 100644 --- a/test/e2e/single_api/tts_pipeline/test_synthesis.py +++ b/test/e2e/single_api/tts_pipeline/test_synthesis.py @@ -29,6 +29,8 @@ def test_post_synthesis_200(client: TestClient, snapshot: SnapshotAssertion) -> "volumeScale": 1.0, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, "outputSamplingRate": 24000, "outputStereo": False, "kana": "テ'_スト", diff --git a/test/unit/preset/presets-test-1.yaml b/test/unit/preset/presets-test-1.yaml index 18ea6942d..260413c47 100644 --- a/test/unit/preset/presets-test-1.yaml +++ b/test/unit/preset/presets-test-1.yaml @@ -8,6 +8,8 @@ volumeScale: 1 prePhonemeLength: 0.1 postPhonemeLength: 0.1 + pauseLength: null + pauseLengthScale: 1.0 - id: 2 name: test2 @@ -19,3 +21,5 @@ volumeScale: 0.7 prePhonemeLength: 0.5 postPhonemeLength: 0.5 + pauseLength: null + pauseLengthScale: 1.0 diff --git a/test/unit/preset/presets-test-2.yaml b/test/unit/preset/presets-test-2.yaml index 289894c3b..def610df7 100644 --- a/test/unit/preset/presets-test-2.yaml +++ b/test/unit/preset/presets-test-2.yaml @@ -8,6 +8,8 @@ volumeScale: 1 prePhonemeLength: 0.1 postPhonemeLength: 0.1 + pauseLength: null + pauseLengthScale: 1.0 - id: 2 name: test2 @@ -19,3 +21,5 @@ volumeScale: 0.7 prePhonemeLength: 0.5 postPhonemeLength: 0.5 + pauseLength: null + pauseLengthScale: 1.0 diff --git a/test/unit/preset/presets-test-3.yaml b/test/unit/preset/presets-test-3.yaml index f4bfc37fc..d9c80c6b0 100644 --- a/test/unit/preset/presets-test-3.yaml +++ b/test/unit/preset/presets-test-3.yaml @@ -8,6 +8,8 @@ volumeScale: 1 prePhonemeLength: 0.1 postPhonemeLength: 0.1 + pauseLength: null + pauseLengthScale: 1.0 - id: 1 name: test2 @@ -19,3 +21,5 @@ volumeScale: 0.7 prePhonemeLength: 0.5 postPhonemeLength: 0.5 + pauseLength: null + pauseLengthScale: 1.0 diff --git a/test/unit/preset/test_preset.py b/test/unit/preset/test_preset.py index 311cf46e1..10f983b35 100644 --- a/test/unit/preset/test_preset.py +++ b/test/unit/preset/test_preset.py @@ -75,6 +75,8 @@ def test_add_preset(tmp_path: Path) -> None: "volumeScale": 1, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, } ) id = preset_manager.add_preset(preset) @@ -103,6 +105,8 @@ def test_add_preset_load_failure() -> None: "volumeScale": 0, "prePhonemeLength": 0, "postPhonemeLength": 0, + "pauseLength": 0, + "pauseLengthScale": 0, } ) ) @@ -124,6 +128,8 @@ def test_add_preset_conflict_id(tmp_path: Path) -> None: "volumeScale": 1, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, } ) id = preset_manager.add_preset(preset) @@ -151,6 +157,8 @@ def test_add_preset_conflict_id2(tmp_path: Path) -> None: "volumeScale": 1, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, } ) id = preset_manager.add_preset(preset) @@ -178,6 +186,8 @@ def test_add_preset_write_failure(tmp_path: Path) -> None: "volumeScale": 1, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, } ) preset_manager.load_presets() @@ -206,6 +216,8 @@ def test_update_preset(tmp_path: Path) -> None: "volumeScale": 1, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, } ) id = preset_manager.update_preset(preset) @@ -234,6 +246,8 @@ def test_update_preset_load_failure() -> None: "volumeScale": 0, "prePhonemeLength": 0, "postPhonemeLength": 0, + "pauseLength": 0, + "pauseLengthScale": 0, } ) ) @@ -255,6 +269,8 @@ def test_update_preset_not_found(tmp_path: Path) -> None: "volumeScale": 1, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, } ) true_msg = "更新先のプリセットが存在しません" @@ -280,6 +296,8 @@ def test_update_preset_write_failure(tmp_path: Path) -> None: "volumeScale": 1, "prePhonemeLength": 0.1, "postPhonemeLength": 0.1, + "pauseLength": None, + "pauseLengthScale": 1.0, } ) preset_manager.load_presets() diff --git a/test/unit/test_mock_tts_engine.py b/test/unit/test_mock_tts_engine.py index f7db77918..5898f2246 100644 --- a/test/unit/test_mock_tts_engine.py +++ b/test/unit/test_mock_tts_engine.py @@ -67,6 +67,8 @@ def test_synthesize_wave() -> None: volumeScale=1, prePhonemeLength=0.1, postPhonemeLength=0.1, + pauseLength=None, + pauseLengthScale=1.0, outputSamplingRate=24000, outputStereo=False, kana=create_kana(_gen_accent_phrases()), diff --git a/test/unit/tts_pipeline/__snapshots__/test_tts_engine/test_mocked_synthesize_wave_output.json b/test/unit/tts_pipeline/__snapshots__/test_tts_engine/test_mocked_synthesize_wave_output.json index 22caa02ba..18dfff7a6 100644 --- a/test/unit/tts_pipeline/__snapshots__/test_tts_engine/test_mocked_synthesize_wave_output.json +++ b/test/unit/tts_pipeline/__snapshots__/test_tts_engine/test_mocked_synthesize_wave_output.json @@ -7088,6 +7088,5638 @@ 1.3, 1.3 ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], + [ + 1.3, + 1.3 + ], [ 1.31, 1.31 diff --git a/test/unit/tts_pipeline/test_tts_engine.py b/test/unit/tts_pipeline/test_tts_engine.py index 760265e51..309f4f43d 100644 --- a/test/unit/tts_pipeline/test_tts_engine.py +++ b/test/unit/tts_pipeline/test_tts_engine.py @@ -183,6 +183,8 @@ def _gen_hello_hiho_query() -> AudioQuery: volumeScale=1.3, prePhonemeLength=0.1, postPhonemeLength=0.2, + pauseLength=0.3, + pauseLengthScale=0.8, outputSamplingRate=12000, outputStereo=True, kana=_gen_hello_hiho_kana(), diff --git a/test/unit/tts_pipeline/test_wave_synthesizer.py b/test/unit/tts_pipeline/test_wave_synthesizer.py index abf6ee9ef..0d872dc37 100644 --- a/test/unit/tts_pipeline/test_wave_synthesizer.py +++ b/test/unit/tts_pipeline/test_wave_synthesizer.py @@ -27,6 +27,8 @@ def _gen_query( intonationScale: float = 1.0, prePhonemeLength: float = 0.0, postPhonemeLength: float = 0.0, + pauseLength: float | None = None, + pauseLengthScale: float = 1.0, volumeScale: float = 1.0, outputSamplingRate: int = 24000, outputStereo: bool = False, @@ -40,6 +42,8 @@ def _gen_query( intonationScale=intonationScale, prePhonemeLength=prePhonemeLength, postPhonemeLength=postPhonemeLength, + pauseLength=pauseLength, + pauseLengthScale=pauseLengthScale, volumeScale=volumeScale, outputSamplingRate=outputSamplingRate, outputStereo=outputStereo, @@ -270,16 +274,18 @@ def test_query_to_decoder_feature() -> None: intonationScale=0.5, prePhonemeLength=2 * 0.01067, postPhonemeLength=6 * 0.01067, + pauseLength=16 * 0.01067, + pauseLengthScale=0.25, ) # Expects # frame_per_phoneme # Pre k o N pau h i h O Pst - true_frame_per_phoneme = [1, 1, 2, 2, 1, 1, 2, 2, 1, 3] + true_frame_per_phoneme = [1, 1, 2, 2, 2, 1, 2, 2, 1, 3] n_frame = sum(true_frame_per_phoneme) # phoneme - # Pr k o o N N pau h i i h h O Pt Pt Pt - frame_phoneme_idxs = [0, 23, 30, 30, 4, 4, 0, 19, 21, 21, 19, 19, 5, 0, 0, 0] + # Pr k o o N N pau pau h i i h h O Pt Pt Pt + frame_phoneme_idxs = [0, 23, 30, 30, 4, 4, 0, 0, 19, 21, 21, 19, 19, 5, 0, 0, 0] true_phoneme = np.zeros([n_frame, TRUE_NUM_PHONEME], dtype=np.float32) for frame_idx, phoneme_idx in enumerate(frame_phoneme_idxs): true_phoneme[frame_idx, phoneme_idx] = 1.0 @@ -288,8 +294,8 @@ def test_query_to_decoder_feature() -> None: # frame_per_vowel = [1, 3, 2, 1, 3, 3, 3] # pau ko ko ko N N true1_f0 = [0.0, 250.0, 250.0, 250.0, 250.0, 250.0] - # pau hi hi hi - true2_f0 = [0.0, 400.0, 400.0, 400.0] + # pau pau hi hi hi + true2_f0 = [0.0, 0.0, 400.0, 400.0, 400.0] # hO hO hO paw paw paw true3_f0 = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] true_f0 = np.array(true1_f0 + true2_f0 + true3_f0, dtype=np.float32) diff --git a/voicevox_engine/app/routers/tts_pipeline.py b/voicevox_engine/app/routers/tts_pipeline.py index 935cad4cd..076b30717 100644 --- a/voicevox_engine/app/routers/tts_pipeline.py +++ b/voicevox_engine/app/routers/tts_pipeline.py @@ -95,6 +95,8 @@ def audio_query( volumeScale=1, prePhonemeLength=0.1, postPhonemeLength=0.1, + pauseLength=None, + pauseLengthScale=1, outputSamplingRate=core.default_sampling_rate, outputStereo=False, kana=create_kana(accent_phrases), @@ -139,6 +141,8 @@ def audio_query_from_preset( volumeScale=selected_preset.volumeScale, prePhonemeLength=selected_preset.prePhonemeLength, postPhonemeLength=selected_preset.postPhonemeLength, + pauseLength=selected_preset.pauseLength, + pauseLengthScale=selected_preset.pauseLengthScale, outputSamplingRate=core.default_sampling_rate, outputStereo=False, kana=create_kana(accent_phrases), diff --git a/voicevox_engine/model.py b/voicevox_engine/model.py index c73708a92..bcc7a0488 100644 --- a/voicevox_engine/model.py +++ b/voicevox_engine/model.py @@ -24,6 +24,8 @@ class AudioQuery(BaseModel): volumeScale: float = Field(title="全体の音量") prePhonemeLength: float = Field(title="音声の前の無音時間") postPhonemeLength: float = Field(title="音声の後の無音時間") + pauseLength: float | None = Field(title="句読点などの無音時間") + pauseLengthScale: float = Field(title="句読点などの無音時間(倍率)") outputSamplingRate: int = Field(title="音声データの出力サンプリングレート") outputStereo: bool = Field(title="音声データをステレオ出力するか否か") kana: str | None = Field( diff --git a/voicevox_engine/preset/model.py b/voicevox_engine/preset/model.py index 765b4f29e..00c86c48e 100644 --- a/voicevox_engine/preset/model.py +++ b/voicevox_engine/preset/model.py @@ -24,3 +24,5 @@ class Preset(BaseModel): volumeScale: float = Field(title="全体の音量") prePhonemeLength: float = Field(title="音声の前の無音時間") postPhonemeLength: float = Field(title="音声の後の無音時間") + pauseLength: float | None = Field(title="句読点などの無音時間") + pauseLengthScale: float = Field(title="句読点などの無音時間(倍率)") diff --git a/voicevox_engine/tts_pipeline/tts_engine.py b/voicevox_engine/tts_pipeline/tts_engine.py index 18e9d17b1..e5b09d903 100644 --- a/voicevox_engine/tts_pipeline/tts_engine.py +++ b/voicevox_engine/tts_pipeline/tts_engine.py @@ -175,6 +175,23 @@ def apply_pitch_scale(moras: list[Mora], query: AudioQuery) -> list[Mora]: return moras +def apply_pause_length(moras: list[Mora], query: AudioQuery) -> list[Mora]: + """モーラ系列へ音声合成用のクエリがもつ無音時間(`pauseLength`)を適用する""" + if query.pauseLength is not None: + for mora in moras: + if mora.vowel == "pau": + mora.vowel_length = query.pauseLength + return moras + + +def apply_pause_length_scale(moras: list[Mora], query: AudioQuery) -> list[Mora]: + """モーラ系列へ音声合成用のクエリがもつ無音時間スケール(`pauseLengthScale`)を適用する""" + for mora in moras: + if mora.vowel == "pau": + mora.vowel_length *= query.pauseLengthScale + return moras + + def apply_intonation_scale(moras: list[Mora], query: AudioQuery) -> list[Mora]: """モーラ系列へ音声合成用のクエリがもつ抑揚スケール(`intonationScale`)を適用する""" # 有声音素 (f0>0) の平均値に対する乖離度をスケール @@ -221,6 +238,8 @@ def query_to_decoder_feature( # 設定を適用する moras = apply_prepost_silence(moras, query) + moras = apply_pause_length(moras, query) + moras = apply_pause_length_scale(moras, query) moras = apply_speed_scale(moras, query) moras = apply_pitch_scale(moras, query) moras = apply_intonation_scale(moras, query)