From 06beff62cd0a5dc3002c4d87d0b061edfcb5dc18 Mon Sep 17 00:00:00 2001
From: 230409 <230409@epvc.pt>
Date: Wed, 3 Dec 2025 10:30:58 +0000
Subject: [PATCH] ecra principal
---
app/src/main/AndroidManifest.xml | 45 +++++++++++++++++++
.../pap_teste/BloqueioHorarioActivity.java | 26 +++++++++++
.../pap_teste/CheckInAntecipadoActivity.java | 26 +++++++++++
.../pap_teste/ClientDashboardActivity.java | 33 ++++++++++----
.../EstablishmentDashboardActivity.java | 28 ++++++++----
.../ExplorarRestaurantesActivity.java | 26 +++++++++++
.../example/pap_teste/FavoritosActivity.java | 26 +++++++++++
.../pap_teste/GestaoStaffActivity.java | 26 +++++++++++
.../pap_teste/ListaEsperaActivity.java | 26 +++++++++++
.../pap_teste/NovaReservaActivity.java | 26 +++++++++++
.../pap_teste/PartilharReservaActivity.java | 26 +++++++++++
.../example/pap_teste/RelatoriosActivity.java | 26 +++++++++++
.../res/layout/activity_bloqueio_horario.xml | 39 ++++++++++++++++
.../layout/activity_checkin_antecipado.xml | 39 ++++++++++++++++
.../layout/activity_explorar_restaurantes.xml | 39 ++++++++++++++++
.../main/res/layout/activity_favoritos.xml | 39 ++++++++++++++++
.../main/res/layout/activity_gestao_staff.xml | 39 ++++++++++++++++
.../main/res/layout/activity_lista_espera.xml | 39 ++++++++++++++++
app/src/main/res/layout/activity_main.xml | 10 +++--
.../main/res/layout/activity_nova_reserva.xml | 39 ++++++++++++++++
.../res/layout/activity_partilhar_reserva.xml | 39 ++++++++++++++++
.../main/res/layout/activity_relatorios.xml | 39 ++++++++++++++++
22 files changed, 681 insertions(+), 20 deletions(-)
create mode 100644 app/src/main/java/com/example/pap_teste/BloqueioHorarioActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/CheckInAntecipadoActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/ExplorarRestaurantesActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/FavoritosActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/ListaEsperaActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/NovaReservaActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/PartilharReservaActivity.java
create mode 100644 app/src/main/java/com/example/pap_teste/RelatoriosActivity.java
create mode 100644 app/src/main/res/layout/activity_bloqueio_horario.xml
create mode 100644 app/src/main/res/layout/activity_checkin_antecipado.xml
create mode 100644 app/src/main/res/layout/activity_explorar_restaurantes.xml
create mode 100644 app/src/main/res/layout/activity_favoritos.xml
create mode 100644 app/src/main/res/layout/activity_gestao_staff.xml
create mode 100644 app/src/main/res/layout/activity_lista_espera.xml
create mode 100644 app/src/main/res/layout/activity_nova_reserva.xml
create mode 100644 app/src/main/res/layout/activity_partilhar_reserva.xml
create mode 100644 app/src/main/res/layout/activity_relatorios.xml
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 513a5ae..9e65692 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,11 +16,56 @@
android:exported="false"
android:label="Área do Estabelecimento"
android:theme="@style/Theme.Pap_teste" />
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/com/example/pap_teste/BloqueioHorarioActivity.java b/app/src/main/java/com/example/pap_teste/BloqueioHorarioActivity.java
new file mode 100644
index 0000000..bbe182f
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/BloqueioHorarioActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class BloqueioHorarioActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_bloqueio_horario);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.bloqueioRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/CheckInAntecipadoActivity.java b/app/src/main/java/com/example/pap_teste/CheckInAntecipadoActivity.java
new file mode 100644
index 0000000..7d685c9
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/CheckInAntecipadoActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class CheckInAntecipadoActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_checkin_antecipado);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.checkinRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/ClientDashboardActivity.java b/app/src/main/java/com/example/pap_teste/ClientDashboardActivity.java
index b9de492..4f568d9 100644
--- a/app/src/main/java/com/example/pap_teste/ClientDashboardActivity.java
+++ b/app/src/main/java/com/example/pap_teste/ClientDashboardActivity.java
@@ -1,9 +1,9 @@
package com.example.pap_teste;
+import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
-import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@@ -48,15 +48,30 @@ public class ClientDashboardActivity extends AppCompatActivity {
Button btnCheckIn = findViewById(R.id.btnCheckIn);
Button btnShare = findViewById(R.id.btnPartilhar);
- btnNewReservation.setOnClickListener(v -> showToast("Abrindo fluxo de nova reserva..."));
- btnExplore.setOnClickListener(v -> showToast("A explorar restaurantes recomendados."));
- btnFavorites.setOnClickListener(v -> showToast("A mostrar os seus favoritos."));
- btnCheckIn.setOnClickListener(v -> showToast("Check-in antecipado registado!"));
- btnShare.setOnClickListener(v -> showToast("Partilhe a reserva com os seus convidados."));
+ btnNewReservation.setOnClickListener(v ->
+ startActivity(new Intent(this, NovaReservaActivity.class))
+ );
+
+ btnExplore.setOnClickListener(v ->
+ startActivity(new Intent(this, ExplorarRestaurantesActivity.class))
+ );
+
+ btnFavorites.setOnClickListener(v ->
+ startActivity(new Intent(this, FavoritosActivity.class))
+ );
+
+ btnCheckIn.setOnClickListener(v ->
+ startActivity(new Intent(this, CheckInAntecipadoActivity.class))
+ );
+
+ btnShare.setOnClickListener(v ->
+ startActivity(new Intent(this, PartilharReservaActivity.class))
+ );
}
- private void showToast(String message) {
- Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
- }
+ // Mantemos este método caso seja útil no futuro para feedback rápido.
+ // private void showToast(String message) {
+ // Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
+ // }
}
diff --git a/app/src/main/java/com/example/pap_teste/EstablishmentDashboardActivity.java b/app/src/main/java/com/example/pap_teste/EstablishmentDashboardActivity.java
index ccff410..8c2b34c 100644
--- a/app/src/main/java/com/example/pap_teste/EstablishmentDashboardActivity.java
+++ b/app/src/main/java/com/example/pap_teste/EstablishmentDashboardActivity.java
@@ -1,9 +1,9 @@
package com.example.pap_teste;
+import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
-import android.widget.Toast;
import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
@@ -41,14 +41,26 @@ public class EstablishmentDashboardActivity extends AppCompatActivity {
Button btnStaff = findViewById(R.id.btnGestaoStaff);
Button btnReports = findViewById(R.id.btnVerRelatorios);
- btnOpenWalkIns.setOnClickListener(v -> showToast("Lista de espera aberta para novos clientes."));
- btnBlockTime.setOnClickListener(v -> showToast("Bloqueio criado para o horário selecionado."));
- btnStaff.setOnClickListener(v -> showToast("Gestão de staff disponível em breve."));
- btnReports.setOnClickListener(v -> showToast("Relatórios do dia enviados para o seu email."));
+ btnOpenWalkIns.setOnClickListener(v ->
+ startActivity(new Intent(this, ListaEsperaActivity.class))
+ );
+
+ btnBlockTime.setOnClickListener(v ->
+ startActivity(new Intent(this, BloqueioHorarioActivity.class))
+ );
+
+ btnStaff.setOnClickListener(v ->
+ startActivity(new Intent(this, GestaoStaffActivity.class))
+ );
+
+ btnReports.setOnClickListener(v ->
+ startActivity(new Intent(this, RelatoriosActivity.class))
+ );
}
- private void showToast(String message) {
- Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
- }
+ // Mantemos este método caso seja útil no futuro para feedback rápido.
+ // private void showToast(String message) {
+ // Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
+ // }
}
diff --git a/app/src/main/java/com/example/pap_teste/ExplorarRestaurantesActivity.java b/app/src/main/java/com/example/pap_teste/ExplorarRestaurantesActivity.java
new file mode 100644
index 0000000..b01595d
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/ExplorarRestaurantesActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class ExplorarRestaurantesActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_explorar_restaurantes);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.explorarRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/FavoritosActivity.java b/app/src/main/java/com/example/pap_teste/FavoritosActivity.java
new file mode 100644
index 0000000..42ce655
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/FavoritosActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class FavoritosActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_favoritos);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.favoritosRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java b/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java
new file mode 100644
index 0000000..aa123af
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/GestaoStaffActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class GestaoStaffActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_gestao_staff);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.gestaoStaffRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/ListaEsperaActivity.java b/app/src/main/java/com/example/pap_teste/ListaEsperaActivity.java
new file mode 100644
index 0000000..073a95d
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/ListaEsperaActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class ListaEsperaActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_lista_espera);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.listaEsperaRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/NovaReservaActivity.java b/app/src/main/java/com/example/pap_teste/NovaReservaActivity.java
new file mode 100644
index 0000000..7b38a2a
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/NovaReservaActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class NovaReservaActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_nova_reserva);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.novaReservaRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/PartilharReservaActivity.java b/app/src/main/java/com/example/pap_teste/PartilharReservaActivity.java
new file mode 100644
index 0000000..600f0d9
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/PartilharReservaActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class PartilharReservaActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_partilhar_reserva);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.partilharRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/java/com/example/pap_teste/RelatoriosActivity.java b/app/src/main/java/com/example/pap_teste/RelatoriosActivity.java
new file mode 100644
index 0000000..fac3442
--- /dev/null
+++ b/app/src/main/java/com/example/pap_teste/RelatoriosActivity.java
@@ -0,0 +1,26 @@
+package com.example.pap_teste;
+
+import android.os.Bundle;
+
+import androidx.activity.EdgeToEdge;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.graphics.Insets;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.WindowInsetsCompat;
+
+public class RelatoriosActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ EdgeToEdge.enable(this);
+ setContentView(R.layout.activity_relatorios);
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.relatoriosRoot), (v, insets) -> {
+ Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
+ return insets;
+ });
+ }
+}
+
+
diff --git a/app/src/main/res/layout/activity_bloqueio_horario.xml b/app/src/main/res/layout/activity_bloqueio_horario.xml
new file mode 100644
index 0000000..0a3ef65
--- /dev/null
+++ b/app/src/main/res/layout/activity_bloqueio_horario.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_checkin_antecipado.xml b/app/src/main/res/layout/activity_checkin_antecipado.xml
new file mode 100644
index 0000000..07f05f6
--- /dev/null
+++ b/app/src/main/res/layout/activity_checkin_antecipado.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_explorar_restaurantes.xml b/app/src/main/res/layout/activity_explorar_restaurantes.xml
new file mode 100644
index 0000000..a16f93e
--- /dev/null
+++ b/app/src/main/res/layout/activity_explorar_restaurantes.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_favoritos.xml b/app/src/main/res/layout/activity_favoritos.xml
new file mode 100644
index 0000000..a41b5ed
--- /dev/null
+++ b/app/src/main/res/layout/activity_favoritos.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_gestao_staff.xml b/app/src/main/res/layout/activity_gestao_staff.xml
new file mode 100644
index 0000000..232d959
--- /dev/null
+++ b/app/src/main/res/layout/activity_gestao_staff.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_lista_espera.xml b/app/src/main/res/layout/activity_lista_espera.xml
new file mode 100644
index 0000000..4daed38
--- /dev/null
+++ b/app/src/main/res/layout/activity_lista_espera.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 90cf2b8..25c5c30 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -69,7 +69,7 @@
@@ -80,6 +80,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Cliente"
+ android:textSize="5pt"
android:background="@drawable/tab_selected"
android:textAllCaps="false" />
@@ -88,14 +89,15 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
- android:text="Estabelecimento"
android:background="@drawable/tab_unselected"
+ android:text="Estabelecimento"
+ android:textSize="5pt"
android:textAllCaps="false" />
@@ -116,6 +119,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:text="Criar Conta"
+ android:textSize="5pt"
android:background="@drawable/tab_unselected"
android:textAllCaps="false" />
diff --git a/app/src/main/res/layout/activity_nova_reserva.xml b/app/src/main/res/layout/activity_nova_reserva.xml
new file mode 100644
index 0000000..960820b
--- /dev/null
+++ b/app/src/main/res/layout/activity_nova_reserva.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_partilhar_reserva.xml b/app/src/main/res/layout/activity_partilhar_reserva.xml
new file mode 100644
index 0000000..db10e8d
--- /dev/null
+++ b/app/src/main/res/layout/activity_partilhar_reserva.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_relatorios.xml b/app/src/main/res/layout/activity_relatorios.xml
new file mode 100644
index 0000000..b20b1ed
--- /dev/null
+++ b/app/src/main/res/layout/activity_relatorios.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+