From fdd1b9fa5a195b48093ad3b84352115e6da75eb2 Mon Sep 17 00:00:00 2001 From: Huy Van Pham <87406306+huypv2002@users.noreply.github.com> Date: Sun, 21 May 2023 14:53:18 +0700 Subject: [PATCH 1/3] update --- .idea/misc.xml | 2 +- app/build.gradle | 1 + app/src/main/AndroidManifest.xml | 15 +++- .../com/ltdd/cringempone/MainActivity.java | 13 ++-- .../ui/person/CategoryAdapter.java | 74 +++++++++++++++++++ .../ui/person/CategoryPersonItem.java | 32 ++++++++ .../cringempone/ui/person/PersonActivity.java | 48 ++++++++++++ .../cringempone/ui/person/PersonFragment.java | 4 +- .../cringempone/ui/person/PersonItem.java | 27 +++++++ .../ui/person/PersonItemAdapter.java | 63 ++++++++++++++++ app/src/main/res/layout/activity_person.xml | 10 +++ app/src/main/res/layout/fragment_person.xml | 13 ++-- .../main/res/layout/item_fragmentperson.xml | 21 ++++++ .../res/layout/main_fragmentpersonitem.xml | 28 +++++++ 14 files changed, 331 insertions(+), 20 deletions(-) create mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java create mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java create mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java create mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/PersonItem.java create mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java create mode 100644 app/src/main/res/layout/activity_person.xml create mode 100644 app/src/main/res/layout/item_fragmentperson.xml create mode 100644 app/src/main/res/layout/main_fragmentpersonitem.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 8ebc6f0..441170b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 7f31bec..fb76b95 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -73,6 +73,7 @@ dependencies { implementation 'com.tbuonomo:dotsindicator:4.3' implementation 'me.relex:circleindicator:2.1.6' implementation 'com.github.bumptech.glide:glide:4.15.1' + implementation "androidx.recyclerview:recyclerview:1.2.1" constraints { implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") { because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index cfa6134..7893e9e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,6 +16,9 @@ android:supportsRtl="true" android:theme="@style/Theme.CringeMPOne" tools:targetApi="31"> + @@ -48,8 +51,14 @@ android:name=".api.BaseAPIService" android:enabled="true" android:exported="true" /> - - + + + + @@ -65,7 +74,7 @@ + android:theme="@style/AppTheme.NoActionBar" /> \ No newline at end of file diff --git a/app/src/main/java/com/ltdd/cringempone/MainActivity.java b/app/src/main/java/com/ltdd/cringempone/MainActivity.java index b4518c5..49504e0 100644 --- a/app/src/main/java/com/ltdd/cringempone/MainActivity.java +++ b/app/src/main/java/com/ltdd/cringempone/MainActivity.java @@ -1,7 +1,12 @@ package com.ltdd.cringempone; +import static com.ltdd.cringempone.ui.account.AccountFragment.imageAvatar; + import android.annotation.SuppressLint; import android.content.Intent; +import android.content.pm.PackageManager; +import android.graphics.Bitmap; +import android.net.Uri; import android.os.Bundle; import android.os.StrictMode; import android.provider.MediaStore; @@ -36,8 +41,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.navigation.NavigationBarView; import com.google.android.material.navigation.NavigationView; -import com.google.firebase.auth.FirebaseAuth; -import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.auth.*; import com.ltdd.cringempone.databinding.ActivityMainBinding; import com.ltdd.cringempone.service.MediaControlReceiver; import com.ltdd.cringempone.service.MediaControlReceiver; @@ -58,15 +62,12 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationV private ActivityMainBinding binding; BottomNavigationView bottomNavigationView; - PersonFragment personFragment = new PersonFragment(); HomeFragmentBottom homeFragmentBottom = new HomeFragmentBottom(); SlideshowFragment slideshowFragment = new SlideshowFragment(); SettingsFragment settingsFragment = new SettingsFragment(); PersonFragment personFragment = new PersonFragment(); - HomeFragmentBottom homeFragmentBottom = new HomeFragmentBottom(); - SettingsFragment settingsFragment = new SettingsFragment(); TextView tvName; TextView tvEmail; ImageView imgAvatar; @@ -186,8 +187,6 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) { startActivity(intent); break; } - - } } drawer.closeDrawer(GravityCompat.START); diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java b/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java new file mode 100644 index 0000000..7bbe92e --- /dev/null +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java @@ -0,0 +1,74 @@ +package com.ltdd.cringempone.ui.person; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.ltdd.cringempone.R; + +import java.util.List; + +public class CategoryAdapter extends RecyclerView.Adapter { + + public CategoryAdapter(Context context) { + this.context = context; + } + + private Context context; + private List categoryPersonItems; + + public void setData(List list) { + this.categoryPersonItems = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public CategoryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_fragmentperson,parent,false); + return new CategoryViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull CategoryViewHolder holder, int position) { + CategoryPersonItem categoryPersonItem = categoryPersonItems.get(position); + if (categoryPersonItem == null) { + return; + } + holder.textView.setText(categoryPersonItem.getNameCategory()); + + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, RecyclerView.HORIZONTAL, false); + holder.recyclerView.setLayoutManager(linearLayoutManager); + PersonItemAdapter personItemAdapter = new PersonItemAdapter(); + personItemAdapter.setData(categoryPersonItem.getPersonItems()); + holder.recyclerView.setAdapter(personItemAdapter); + } + + @Override + public int getItemCount() { + if (categoryPersonItems != null) { + return categoryPersonItems.size(); + } + return 0; + } + + public class CategoryViewHolder extends RecyclerView.ViewHolder { + + private TextView textView; + private RecyclerView recyclerView; + + public CategoryViewHolder(@NonNull View itemView) { + + super(itemView); + + textView = itemView.findViewById(R.id.textview_name_itemperson); + recyclerView = itemView.findViewById(R.id.recyle_personitem); + } + } +} diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java b/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java new file mode 100644 index 0000000..0692c90 --- /dev/null +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java @@ -0,0 +1,32 @@ +package com.ltdd.cringempone.ui.person; + +import java.util.List; + +public class CategoryPersonItem { + public void setNameCategory(String nameCategory) { + this.nameCategory = nameCategory; + } + + public void setPersonItems(List personItems) { + this.personItems = personItems; + } + + public String getNameCategory() { + return nameCategory; + } + + public List getPersonItems() { + return personItems; + } + + private String nameCategory; + + public CategoryPersonItem(String nameCategory, List personItems) { + this.nameCategory = nameCategory; + this.personItems = personItems; + } + + private List personItems; + + +} diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java new file mode 100644 index 0000000..f1a8224 --- /dev/null +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java @@ -0,0 +1,48 @@ +package com.ltdd.cringempone.ui.person; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import android.os.Bundle; +import com.ltdd.cringempone.R; +import com.nostra13.universalimageloader.utils.L; + +import java.util.ArrayList; +import java.util.List; + +public class PersonActivity extends AppCompatActivity { + private RecyclerView rcvCategory; + private CategoryAdapter categoryAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_person); + rcvCategory = findViewById(R.id.rcv_category); + categoryAdapter = new CategoryAdapter(this); + + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false); + rcvCategory.setLayoutManager(linearLayoutManager); + + categoryAdapter.setData(getListCategory()); + rcvCategory.setAdapter(categoryAdapter); + } + private List getListCategory() { + List listCategory = new ArrayList<>(); + + List listPerson = new ArrayList<>(); + listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 1")); + listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 2")); + listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 3")); + + listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 1")); + listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 2")); + listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 3")); + + listCategory.add(new CategoryPersonItem("Ca Nhan", listPerson)); + listCategory.add(new CategoryPersonItem("Ca Nhan2", listPerson)); + listCategory.add(new CategoryPersonItem("Ca Nhan3", listPerson)); + return listCategory; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java index f916f31..9de1ddb 100644 --- a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java @@ -9,6 +9,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import com.ltdd.cringempone.R; @@ -20,10 +21,11 @@ public class PersonFragment extends Fragment { Runnable runnable; Handler handler; int currentItem; + @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - view = inflater.inflate(R.layout.fragment_person, container, false); + view = inflater.inflate(R.layout.activity_person, container, false); return view; } } diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItem.java b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItem.java new file mode 100644 index 0000000..c9224d4 --- /dev/null +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItem.java @@ -0,0 +1,27 @@ +package com.ltdd.cringempone.ui.person; + +public class PersonItem { + private int resouceId; + private String title; + + public void setResouceId(int resouceId) { + this.resouceId = resouceId; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getResouceId() { + return resouceId; + } + + public String getTitle() { + return title; + } + + public PersonItem(int resouceId, String title) { + this.resouceId = resouceId; + this.title = title; + } +} diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java new file mode 100644 index 0000000..0307b27 --- /dev/null +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java @@ -0,0 +1,63 @@ +package com.ltdd.cringempone.ui.person; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.ltdd.cringempone.R; + +import java.util.List; + +public class PersonItemAdapter extends RecyclerView.Adapter { + + private List personItems; + + public void setData(List list) { + this.personItems = list; + notifyDataSetChanged(); + } + + @NonNull + @Override + public PersonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_person,parent,false); + return new PersonViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PersonViewHolder holder, int position) { + PersonItem personItem = personItems.get(position); + if (personItem == null) { + return; + } + + holder.imageView.setImageResource(personItem.getResouceId()); + holder.textView.setText(personItem.getTitle()); + } + + @Override + public int getItemCount() { + if (personItems != null) { + return personItems.size(); + } + return 0; + } + + public class PersonViewHolder extends RecyclerView.ViewHolder { + private ImageView imageView; + private TextView textView; + + public PersonViewHolder(@NonNull View itemView) { + super(itemView); + + imageView = itemView.findViewById(R.id.img_person); + textView = itemView.findViewById(R.id.img_personText); + + } + } +} diff --git a/app/src/main/res/layout/activity_person.xml b/app/src/main/res/layout/activity_person.xml new file mode 100644 index 0000000..aafe5e4 --- /dev/null +++ b/app/src/main/res/layout/activity_person.xml @@ -0,0 +1,10 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_person.xml b/app/src/main/res/layout/fragment_person.xml index b783fad..aafe5e4 100644 --- a/app/src/main/res/layout/fragment_person.xml +++ b/app/src/main/res/layout/fragment_person.xml @@ -1,13 +1,10 @@ - + + - + android:layout_height="match_parent"> \ No newline at end of file diff --git a/app/src/main/res/layout/item_fragmentperson.xml b/app/src/main/res/layout/item_fragmentperson.xml new file mode 100644 index 0000000..638a817 --- /dev/null +++ b/app/src/main/res/layout/item_fragmentperson.xml @@ -0,0 +1,21 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main_fragmentpersonitem.xml b/app/src/main/res/layout/main_fragmentpersonitem.xml new file mode 100644 index 0000000..627addf --- /dev/null +++ b/app/src/main/res/layout/main_fragmentpersonitem.xml @@ -0,0 +1,28 @@ + + + + + + + + From 62e90c9358d40b932204e3faa755b03ad2b2bcaf Mon Sep 17 00:00:00 2001 From: Huy Van Pham <87406306+huypv2002@users.noreply.github.com> Date: Mon, 22 May 2023 03:41:42 +0700 Subject: [PATCH 2/3] =?UTF-8?q?update=20C=C3=A1=20Nh=C3=A2n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 1 + .../com/ltdd/cringempone/MainActivity.java | 39 +++---- .../ui/gallery/GalleryFragment.java | 110 +++++++++++++----- .../ui/homebottom/HomeFragmentBottom.java | 96 +++------------ .../person/{PersonItem.java => Category.java} | 20 ++-- .../ui/person/CategoryAdapter.java | 59 ++++------ .../ui/person/CategoryPersonItem.java | 32 ----- .../cringempone/ui/person/PersonActivity.java | 73 ++++++++---- .../cringempone/ui/person/PersonFragment.java | 7 +- .../ui/person/PersonItemAdapter.java | 63 ---------- .../com/ltdd/cringempone/ui/person/User.java | 27 +++++ .../cringempone/ui/person/UserAdapter.java | 61 ++++++++++ .../res/drawable/baseline_access_time_24.xml | 6 + app/src/main/res/drawable/baseline_add_24.xml | 5 + .../main/res/drawable/baseline_album_24.xml | 5 + .../main/res/drawable/baseline_upload_24.xml | 5 + .../drawable/baseline_view_headline_24.xml | 5 + app/src/main/res/drawable/img_1.jpg | Bin 0 -> 7019 bytes app/src/main/res/drawable/img_2.jpg | Bin 0 -> 15678 bytes app/src/main/res/drawable/img_3.jpg | Bin 0 -> 21272 bytes app/src/main/res/layout/activity_person.xml | 66 +++++++++-- app/src/main/res/layout/fragment_gallery.xml | 64 +++++++--- app/src/main/res/layout/fragment_person.xml | 13 ++- app/src/main/res/layout/item_category.xml | 56 +++++++++ .../main/res/layout/item_fragmentperson.xml | 21 ---- app/src/main/res/layout/item_user.xml | 53 +++++++++ .../res/layout/main_fragmentpersonitem.xml | 28 ----- app/src/main/res/menu/bottom_nav_menu.xml | 4 +- 28 files changed, 539 insertions(+), 380 deletions(-) rename app/src/main/java/com/ltdd/cringempone/ui/person/{PersonItem.java => Category.java} (85%) delete mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java delete mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java create mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/User.java create mode 100644 app/src/main/java/com/ltdd/cringempone/ui/person/UserAdapter.java create mode 100644 app/src/main/res/drawable/baseline_access_time_24.xml create mode 100644 app/src/main/res/drawable/baseline_add_24.xml create mode 100644 app/src/main/res/drawable/baseline_album_24.xml create mode 100644 app/src/main/res/drawable/baseline_upload_24.xml create mode 100644 app/src/main/res/drawable/baseline_view_headline_24.xml create mode 100644 app/src/main/res/drawable/img_1.jpg create mode 100644 app/src/main/res/drawable/img_2.jpg create mode 100644 app/src/main/res/drawable/img_3.jpg create mode 100644 app/src/main/res/layout/item_category.xml delete mode 100644 app/src/main/res/layout/item_fragmentperson.xml create mode 100644 app/src/main/res/layout/item_user.xml delete mode 100644 app/src/main/res/layout/main_fragmentpersonitem.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e5bf45f..5b73546 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -47,6 +47,7 @@ + top100s; + public static com.ltdd.cringempone.ui.home.HomeFragment newInstance() { + return new com.ltdd.cringempone.ui.home.HomeFragment(); + } + private FragmentTop100Binding binding; + private Top100ChildrenItemBinding childrenItemBinding; + @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - view = inflater.inflate(R.layout.fragment_person, container, false); - return view; + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + binding = FragmentTop100Binding.inflate(inflater, container, false); + RecyclerView parentRecycleViewItem = binding.getRoot().findViewById(R.id.top100_parent_recyclerview); + if (LocalStorageService.getInstance().getString("top100s").contains("error") || LocalStorageService.getInstance().getString("top100s").equals("")){ + top100s = BaseAPIService.getInstance().getTop100List(BaseAPIService.getInstance().getRequest("top100")); + } + else{ + top100s = BaseAPIService.getInstance().getTop100List(LocalStorageService.getInstance().getString("top100s")); + } + if(top100s != null){ + LinearLayoutManager layoutManager = new LinearLayoutManager(binding.getRoot().getContext()); + ParentItemAdapter parentItemAdapter = new ParentItemAdapter(ParentItemList(top100s)); + + parentRecycleViewItem.setAdapter(parentItemAdapter); + parentRecycleViewItem.setLayoutManager(layoutManager); + } + return binding.getRoot(); } + private List ParentItemList(ArrayList top100s) { + List itemList = new ArrayList<>(); + top100s.forEach((x) ->{ + ParentItem item = new ParentItem( + x.title, + ChildItemList(x.items)); + itemList.add(item); + }); + return itemList; + } + + // Method to pass the arguments + // for the elements + // of child RecyclerView + private List ChildItemList(ArrayList top100) + { + List ChildItemList = new ArrayList<>(); + top100.forEach((x) ->{ + ChildItemList.add(new ChildItem(x.encodeId, x.title, x.thumbnail)); + }); + return ChildItemList; + } + @Override + public void onResume() { + super.onResume(); + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + } + } \ No newline at end of file diff --git a/app/src/main/java/com/ltdd/cringempone/ui/homebottom/HomeFragmentBottom.java b/app/src/main/java/com/ltdd/cringempone/ui/homebottom/HomeFragmentBottom.java index b5300f9..9f339ec 100644 --- a/app/src/main/java/com/ltdd/cringempone/ui/homebottom/HomeFragmentBottom.java +++ b/app/src/main/java/com/ltdd/cringempone/ui/homebottom/HomeFragmentBottom.java @@ -1,89 +1,25 @@ package com.ltdd.cringempone.ui.homebottom; + import android.os.Bundle; + import android.os.Handler; + import android.view.LayoutInflater; + import android.view.View; + import android.view.ViewGroup; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; + import androidx.annotation.NonNull; + import androidx.annotation.Nullable; + import androidx.fragment.app.Fragment; + import androidx.viewpager.widget.ViewPager; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; + import com.ltdd.cringempone.R; -import com.ltdd.cringempone.R; -import com.ltdd.cringempone.api.BaseAPIService; -import com.ltdd.cringempone.data.dto.ItemDTO; -import com.ltdd.cringempone.data.dto.TopDTO; -import com.ltdd.cringempone.databinding.Top100ChildrenItemBinding; -import com.ltdd.cringempone.service.LocalStorageService; -import com.ltdd.cringempone.ui.musicplayer.adapter.ParentItemAdapter; -import com.ltdd.cringempone.ui.musicplayer.model.ChildItem; -import com.ltdd.cringempone.ui.musicplayer.model.ParentItem; -import com.ltdd.cringempone.utils.CoreHelper; -import com.ltdd.cringempone.databinding.FragmentTop100Binding; - -import java.util.ArrayList; -import java.util.List; public class HomeFragmentBottom extends Fragment { - private ArrayList top100s; - public static HomeFragmentBottom newInstance() { - return new HomeFragmentBottom(); - } - private FragmentTop100Binding binding; - private Top100ChildrenItemBinding childrenItemBinding; - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - binding = FragmentTop100Binding.inflate(inflater, container, false); - RecyclerView parentRecycleViewItem = binding.getRoot().findViewById(R.id.top100_parent_recyclerview); - if (LocalStorageService.getInstance().getString("top100s").contains("error") || LocalStorageService.getInstance().getString("top100s").equals("")){ - top100s = BaseAPIService.getInstance().getTop100List(BaseAPIService.getInstance().getRequest("top100")); - } - else{ - top100s = BaseAPIService.getInstance().getTop100List(LocalStorageService.getInstance().getString("top100s")); - } - if(top100s != null){ - LinearLayoutManager layoutManager = new LinearLayoutManager(binding.getRoot().getContext()); - ParentItemAdapter parentItemAdapter = new ParentItemAdapter(ParentItemList(top100s)); - - parentRecycleViewItem.setAdapter(parentItemAdapter); - parentRecycleViewItem.setLayoutManager(layoutManager); - } - return binding.getRoot(); - } - private List ParentItemList(ArrayList top100s) { - List itemList = new ArrayList<>(); - top100s.forEach((x) ->{ - ParentItem item = new ParentItem( - x.title, - ChildItemList(x.items)); - itemList.add(item); - }); - return itemList; - } - - // Method to pass the arguments - // for the elements - // of child RecyclerView - private List ChildItemList(ArrayList top100) - { - List ChildItemList = new ArrayList<>(); - top100.forEach((x) ->{ - ChildItemList.add(new ChildItem(x.encodeId, x.title, x.thumbnail)); - }); - return ChildItemList; - } - @Override - public void onResume() { - super.onResume(); - } + View view; + @Nullable @Override - public void onDestroyView() { - super.onDestroyView(); + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + view = inflater.inflate(R.layout.fragment_home_bottom, container, false); + return view; } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItem.java b/app/src/main/java/com/ltdd/cringempone/ui/person/Category.java similarity index 85% rename from app/src/main/java/com/ltdd/cringempone/ui/person/PersonItem.java rename to app/src/main/java/com/ltdd/cringempone/ui/person/Category.java index c9224d4..80a4d65 100644 --- a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItem.java +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/Category.java @@ -1,14 +1,8 @@ package com.ltdd.cringempone.ui.person; -public class PersonItem { - private int resouceId; - private String title; - - public void setResouceId(int resouceId) { +public class Category { + public Category(int resouceId, String title) { this.resouceId = resouceId; - } - - public void setTitle(String title) { this.title = title; } @@ -20,8 +14,16 @@ public String getTitle() { return title; } - public PersonItem(int resouceId, String title) { + public void setResouceId(int resouceId) { this.resouceId = resouceId; + } + + public void setTitle(String title) { this.title = title; } + + private int resouceId; + private String title; + + } diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java b/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java index 7bbe92e..93f722a 100644 --- a/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryAdapter.java @@ -1,74 +1,61 @@ package com.ltdd.cringempone.ui.person; -import android.content.Context; + import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.ltdd.cringempone.R; import java.util.List; -public class CategoryAdapter extends RecyclerView.Adapter { - - public CategoryAdapter(Context context) { - this.context = context; - } - - private Context context; - private List categoryPersonItems; +public class CategoryAdapter extends RecyclerView.Adapter { - public void setData(List list) { - this.categoryPersonItems = list; + private List mListCategory; + void setData(List list) { + this.mListCategory = list; notifyDataSetChanged(); } - @NonNull @Override - public CategoryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_fragmentperson,parent,false); - return new CategoryViewHolder(view); + public CategoreViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_category, parent, false); + return new CategoreViewHolder(view); } @Override - public void onBindViewHolder(@NonNull CategoryViewHolder holder, int position) { - CategoryPersonItem categoryPersonItem = categoryPersonItems.get(position); - if (categoryPersonItem == null) { + public void onBindViewHolder(@NonNull CategoreViewHolder holder, int position) { + Category category = mListCategory.get(position); + if (category==null){ return; } - holder.textView.setText(categoryPersonItem.getNameCategory()); - - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context, RecyclerView.HORIZONTAL, false); - holder.recyclerView.setLayoutManager(linearLayoutManager); - PersonItemAdapter personItemAdapter = new PersonItemAdapter(); - personItemAdapter.setData(categoryPersonItem.getPersonItems()); - holder.recyclerView.setAdapter(personItemAdapter); + holder.imgCategory.setImageResource(category.getResouceId()); + holder.tvTitle.setText(category.getTitle()); + return; } @Override public int getItemCount() { - if (categoryPersonItems != null) { - return categoryPersonItems.size(); + if (mListCategory != null) { + return mListCategory.size(); } return 0; } - public class CategoryViewHolder extends RecyclerView.ViewHolder { - - private TextView textView; - private RecyclerView recyclerView; - - public CategoryViewHolder(@NonNull View itemView) { + public class CategoreViewHolder extends RecyclerView.ViewHolder { + private ImageView imgCategory; + private TextView tvTitle; + public CategoreViewHolder(@NonNull View itemView) { super(itemView); - textView = itemView.findViewById(R.id.textview_name_itemperson); - recyclerView = itemView.findViewById(R.id.recyle_personitem); + imgCategory = itemView.findViewById(R.id.img_category); + tvTitle = itemView.findViewById(R.id.tv_title); } } } diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java b/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java deleted file mode 100644 index 0692c90..0000000 --- a/app/src/main/java/com/ltdd/cringempone/ui/person/CategoryPersonItem.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.ltdd.cringempone.ui.person; - -import java.util.List; - -public class CategoryPersonItem { - public void setNameCategory(String nameCategory) { - this.nameCategory = nameCategory; - } - - public void setPersonItems(List personItems) { - this.personItems = personItems; - } - - public String getNameCategory() { - return nameCategory; - } - - public List getPersonItems() { - return personItems; - } - - private String nameCategory; - - public CategoryPersonItem(String nameCategory, List personItems) { - this.nameCategory = nameCategory; - this.personItems = personItems; - } - - private List personItems; - - -} diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java index f1a8224..bcdcc2f 100644 --- a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonActivity.java @@ -1,48 +1,79 @@ package com.ltdd.cringempone.ui.person; import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; +import android.widget.Toolbar; + import com.ltdd.cringempone.R; -import com.nostra13.universalimageloader.utils.L; +import com.ltdd.cringempone.databinding.ActivityMainBinding; import java.util.ArrayList; import java.util.List; public class PersonActivity extends AppCompatActivity { private RecyclerView rcvCategory; + private RecyclerView rcvUser; private CategoryAdapter categoryAdapter; + private UserAdapter userAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_person); + getSupportActionBar().setDisplayShowHomeEnabled(true); + getSupportActionBar().setDisplayUseLogoEnabled(true); + getSupportActionBar().setLogo(R.drawable.baseline_view_headline_24); + getSupportActionBar().setTitle(" Cá Nhân"); + + rcvCategory = findViewById(R.id.rcv_category); - categoryAdapter = new CategoryAdapter(this); + rcvUser = findViewById(R.id.rcv_user); - LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, RecyclerView.VERTICAL, false); - rcvCategory.setLayoutManager(linearLayoutManager); + categoryAdapter = new CategoryAdapter(); + GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 2); + rcvCategory.setLayoutManager(gridLayoutManager); + rcvCategory.setFocusable(false); + rcvCategory.setNestedScrollingEnabled(false); - categoryAdapter.setData(getListCategory()); + categoryAdapter.setData(getListCateGory()); rcvCategory.setAdapter(categoryAdapter); + + + userAdapter = new UserAdapter(); + LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); + rcvUser.setLayoutManager(linearLayoutManager); + rcvUser.setFocusable(false); + rcvUser.setNestedScrollingEnabled(false); + + userAdapter.setData(getListUser()); + rcvUser.setAdapter(userAdapter); } - private List getListCategory() { - List listCategory = new ArrayList<>(); - - List listPerson = new ArrayList<>(); - listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 1")); - listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 2")); - listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 3")); - - listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 1")); - listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 2")); - listPerson.add(new PersonItem(R.drawable.baseline_favorite_24, "Book 3")); - - listCategory.add(new CategoryPersonItem("Ca Nhan", listPerson)); - listCategory.add(new CategoryPersonItem("Ca Nhan2", listPerson)); - listCategory.add(new CategoryPersonItem("Ca Nhan3", listPerson)); - return listCategory; + + private List getListCateGory() { + List list = new ArrayList<>(); + list.add(new Category(R.drawable.ic_favorite_24, "Bài hát yêu thích")); + list.add(new Category(R.drawable.baseline_arrow_circle_down_24, "Đã tải")); + list.add(new Category(R.drawable.baseline_person_add_alt_1_24, "Nghệ sĩ")); + list.add(new Category(R.drawable.baseline_podcasts_24, "Podcast")); + + list.add(new Category(R.drawable.baseline_upload_24, "Upload")); + list.add(new Category(R.drawable.baseline_live_tv_24, "MV")); + list.add(new Category(R.drawable.baseline_access_time_24, "Nghe gần đây")); + list.add(new Category(R.drawable.baseline_album_24, "Album")); + + return list; + } + + private List getListUser() { + List list = new ArrayList<>(); + list.add(new User(R.drawable.baseline_add_24, "Tạo playlist")); + list.add(new User(R.drawable.img_1, "Những bài hát hay nhất")); + list.add(new User(R.drawable.img_3, "Lofi một chút thôi")); + list.add(new User(R.drawable.img_2, "Có thể bạn thích")); + return list; } } \ No newline at end of file diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java index 9de1ddb..fa3e6ff 100644 --- a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonFragment.java @@ -9,7 +9,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; import com.ltdd.cringempone.R; @@ -17,15 +16,11 @@ public class PersonFragment extends Fragment { View view; - ViewPager viewPager; - Runnable runnable; - Handler handler; - int currentItem; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - view = inflater.inflate(R.layout.activity_person, container, false); + view = inflater.inflate(R.layout.fragment_person, container, false); return view; } } diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java b/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java deleted file mode 100644 index 0307b27..0000000 --- a/app/src/main/java/com/ltdd/cringempone/ui/person/PersonItemAdapter.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.ltdd.cringempone.ui.person; - -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.ltdd.cringempone.R; - -import java.util.List; - -public class PersonItemAdapter extends RecyclerView.Adapter { - - private List personItems; - - public void setData(List list) { - this.personItems = list; - notifyDataSetChanged(); - } - - @NonNull - @Override - public PersonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.fragment_person,parent,false); - return new PersonViewHolder(view); - } - - @Override - public void onBindViewHolder(@NonNull PersonViewHolder holder, int position) { - PersonItem personItem = personItems.get(position); - if (personItem == null) { - return; - } - - holder.imageView.setImageResource(personItem.getResouceId()); - holder.textView.setText(personItem.getTitle()); - } - - @Override - public int getItemCount() { - if (personItems != null) { - return personItems.size(); - } - return 0; - } - - public class PersonViewHolder extends RecyclerView.ViewHolder { - private ImageView imageView; - private TextView textView; - - public PersonViewHolder(@NonNull View itemView) { - super(itemView); - - imageView = itemView.findViewById(R.id.img_person); - textView = itemView.findViewById(R.id.img_personText); - - } - } -} diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/User.java b/app/src/main/java/com/ltdd/cringempone/ui/person/User.java new file mode 100644 index 0000000..4ab487b --- /dev/null +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/User.java @@ -0,0 +1,27 @@ +package com.ltdd.cringempone.ui.person; + +public class User { + public User(int resouceId, String name) { + this.resouceId = resouceId; + this.name = name; + } + + public int getResouceId() { + return resouceId; + } + + public String getName() { + return name; + } + + public void setResouceId(int resouceId) { + this.resouceId = resouceId; + } + + public void setName(String name) { + this.name = name; + } + + private int resouceId; + private String name; +} diff --git a/app/src/main/java/com/ltdd/cringempone/ui/person/UserAdapter.java b/app/src/main/java/com/ltdd/cringempone/ui/person/UserAdapter.java new file mode 100644 index 0000000..62417f2 --- /dev/null +++ b/app/src/main/java/com/ltdd/cringempone/ui/person/UserAdapter.java @@ -0,0 +1,61 @@ +package com.ltdd.cringempone.ui.person; + + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.ltdd.cringempone.R; + +import java.util.List; + +public class UserAdapter extends RecyclerView.Adapter { + + private List mListUser; + void setData(List list) { + this.mListUser = list; + notifyDataSetChanged(); + } + @NonNull + @Override + public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_user, parent, false); + return new UserViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull UserViewHolder holder, int position) { + User user = mListUser.get(position); + if (user==null){ + return; + } + holder.imgUser.setImageResource(user.getResouceId()); + holder.tvUser.setText(user.getName()); + return; + } + + @Override + public int getItemCount() { + if (mListUser != null) { + return mListUser.size(); + } + return 0; + } + + public class UserViewHolder extends RecyclerView.ViewHolder { + private ImageView imgUser; + private TextView tvUser; + + public UserViewHolder(@NonNull View itemView) { + super(itemView); + + imgUser = itemView.findViewById(R.id.img_user); + tvUser = itemView.findViewById(R.id.tv_user); + } + } +} diff --git a/app/src/main/res/drawable/baseline_access_time_24.xml b/app/src/main/res/drawable/baseline_access_time_24.xml new file mode 100644 index 0000000..8569680 --- /dev/null +++ b/app/src/main/res/drawable/baseline_access_time_24.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/baseline_add_24.xml b/app/src/main/res/drawable/baseline_add_24.xml new file mode 100644 index 0000000..70046c4 --- /dev/null +++ b/app/src/main/res/drawable/baseline_add_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/baseline_album_24.xml b/app/src/main/res/drawable/baseline_album_24.xml new file mode 100644 index 0000000..793e313 --- /dev/null +++ b/app/src/main/res/drawable/baseline_album_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/baseline_upload_24.xml b/app/src/main/res/drawable/baseline_upload_24.xml new file mode 100644 index 0000000..8f5cde7 --- /dev/null +++ b/app/src/main/res/drawable/baseline_upload_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/baseline_view_headline_24.xml b/app/src/main/res/drawable/baseline_view_headline_24.xml new file mode 100644 index 0000000..7fe1098 --- /dev/null +++ b/app/src/main/res/drawable/baseline_view_headline_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/img_1.jpg b/app/src/main/res/drawable/img_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f835be3f40388dc71f3546d03bfb59cd6113c33 GIT binary patch literal 7019 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 Y^{xC%_Sws*0?MT}z_Y!Vz=!$&0LbReJ^%m! literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/img_2.jpg b/app/src/main/res/drawable/img_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e632f26850c0f5b0162c07a6fed6816856a1a7a GIT binary patch literal 15678 zcmbVzbx<9_^XJ2ZOCa#j;O_1a+}$O?-Q6v?dvFP^!QJH{!5{AWkl^me_jgx!Rrkl$ z-Sy7yY}NK`^=D?QWxMBn>3s`;AuA~(34nqI0H8h&!22pd3;+WS{h#(hupbTX6C4~Y zEF2O70{kZwBoq{6BxGb%G%O5MG)y#PWQ;Eun4ht6aBxu2aq+%j<6&XrVE^YOP%s~3 zVBrwq;1ID~i`+YnIz+%E-k+O=ye^xOdeN@`mAuZ+yX-$lhGrDf$6^$m?p%`L5M?fnCTL&Knv(XrV% z@chE!((=mo&hFm+0p#%L`10!d=JxLX;qmD|xS#+q{~gxH^}hrA-*A0Q0u(eXEDS8d ze{exTdwiTQn6Pl9tngT(DhNhSpUK#QK4E`LEU4>4BxhH>z%h27LHa_$u}yjTA87xD z?Eel}@c$RG{|W4W;aUNpz(9R09tt%j;yLwiv`%E;PE3UjL5RV!)f*TydI2bC~9{cS8IPCAonN9my3l)a{? z8Rtrb4e4@tMkbrQ`ifm7SMLJz#4&UYB@WiBeoUktf~Xz9C>EP>^FsYkg$wNIl1*Gj zuf+`VvZi%V9Xm>IO-g?fOBao$%HC%0$jBIN|3C^7uj6OqE4vFlmu{rUEB&W48)q6s zo$Ef&sEB}$bm@@Gf7aEku*ZPAc~0mZ)7dvU>Y3MJFX-Jw1>r=k78tv9^#? zR}aTfxkDq;ge(+_-)2|ZR?OmPCA}WK7uW`d2nL9#+uCqXr4!f6@|5Dor%3ffbY682 zHot4l6CI>pp7&>_SWda#{fzSkk02bg>+rG3|BGYFPVBO}=&xG#EXgFKuQG)g+6ODl`_}*I$fMadZ)buEOo9N4V0jpVre;D zay`pLS9U;`Qv)cQg2$49zJs}WyK>8N`5!aVHuVs4mpEUnOmV6r(nLcBTRLK$JEn}cL!Ac$F6pfj26jMqjO>ev(lAiO`yusQvR%!!IStvns()0{DVSX}hsj5*t(#kfD=PGb5YO zW}ThMQB~3|_L!~gtqWcpq2X2hPO&ryxkq*7Uuk3Q>?9@KqZn7-wHggOjm~M`NkQ7B ziP5!O1x2d}>FGT0u~B=qWYYE~a7vhbq9R)ms`OZErUMVdv1j$Jjiu>1_|G{u3xZ3C z&U&*(mEO$lpa*6MNH%h4X*Rp5?su6N+m#~Xp@i9&nZ`nM5PSi9gze83roYft)=Csx z{zaN&D(i`Ovby3oQ{j1Nx%YNwb)HwcyF%)U%8riC(o#|1fVn_1icnG;-6q z2Yl$C%`!JOr1N2reE)2BJyKSNuYfloB^QnEb;A$gTN}lljbt0rmmNOR#zsd$IXz?T zq>(lVX7}7rF4@SSy8V?=H2Vl>^E*xn_HyDWXE{+^VfiZ4EliDLuCQo z+;sk4^;2{L1X!0mTc3A;?(#Ej$6Q(|I-|9R#*Y==Qwx6J?|oGpD&ew^;zPVk2?EzWmQ<@z zFfZWMnutD9BgNf(A@x#AEw=N4$q*=YNseK|t++xU+1Mf_TIxUhMnAj1=9V#{5=cQB zeoW&^_Jl7*pvk<$;%jxeXmDAH0A}86Ro__7?jHLmI$5a?sXgp*LuRL7tq@*PT z^CEB>{)K1&H;(ceYa_na%V96nXyV|({2hgv<4n$PsaqyA6K}KEZF;!fF>8fKbwBkQ zeLX67{cWebKv#T|*n@sbzq4dP;O60AIzlCA8p z>{;sy$LTkLWw7>G?C})k+tQEKpQ%SzMkA{ys@qH0k#BP(DLN!n#no=e z83StkcQ9$3#XpN2mb62fZNhtRI45{-B(xX8UIm6Q%U1Xo*$u|Ji#w(;LSw$}l(2Mg zLZ-)jS{+Du#=RHPEXQ4t4clmtOgI}ksT>OQWW|U{csPrG6}sL{GLdUAx5XPRwB=^z zT_W-#rydu5Qe35k+z^*6k#h%&pep z36PlRwR0W08dsL<>9KprJj|5ou+%N|c0`Bj$OZ!gh<`8LK+0?ITWMZgxd zf=-&LfpP@%GNPLaw5(Z|HarH$dnOz8f1=Ye-vRv5gws1wx~vupUmm+nMvCnXf;!^a zZNIrB8^j!~*?J_|jq+fJ8jCLgu>;psoy4^lXDoi^@u||&ZkkdSIG^Za$wH4v|D&gb zYPK4vWZ(+1dOV>fXplZOUAMmKNCs<;(KJ^{*j0`mV9sIl6xtiwfK$vxlh3tvsv}yJ zD)m56E3EOd*7x9rV^F{aeg8Y)B5lpU8dtAy&S>{9659hWzs#23ng#4FOmgOR1B$#Q zC0yH0h9bOnG}wnk+|vDNYH&idahwM&uRuG9K)wi8=?*ZgQx|e-=*I2oGG2bZuwN`B z{{8ZNAXa!Fm#9^a7GFo8;lL|g$fB00JGidw(O|NQA98O98VtZ7eJ1Md2x`?@84&Dw z)u|0Y)ylB;Y#k#^Y8ROHOgE;mb;PjkgX~WNUh19}%My2ZSHI22NAAb=i9PS}Fa&&u z#FtnTeqNj9#P`OW*imopMo+x68XhIT#UmLn@hhh+4ue?uAEf2%Y zjT$Y1d34slR9ySib8?Un>mR1qRjKmrg~dj0?IxA3x!gW2QrZfbH}hK>7b~238|<&A zN8d!ApB4lQDzdh##Z;OGRH@8myMTId_C&|gIe~&`|1^+1%lHxu?{CX@Tb@dO!-4CX z=jmkYFHa`?uz5{u;)5!R;de-C2)ZRoi>iOz6`dr^e9yt^%gIxZCMy ziRN&~AU9~$tqjY{%2oP7`N zhK^Re@GD6)hjkurLWY_H=Rv-ssyYv8bqMPe<82+%fC>fYl;&(-7z-s#%t+E<#bD;+ z-KpC+Plzeka;DfW?~3ozSwE-RMr~K!2*xnj`odf$tG`WlcZGaKV?!XspkL@URF=QK z<{ssWhw1_Am}{=5QfxhI%}A_0(na;5N8mGHtvf4qTd&q3Hj6QJ&JB0&g(zp}C6~1H z7@>&&TGCsLQR^CN;I?x!3Bb;gt8{>M7n(;|Va%<*SR7PR4Vq{*)BxA+w*cqvJ zm6|5|**@ku6Sn_cXGg>bvKQ?pu-YiDTH|Z2;pd~iovOcpG7HEo-Czw_7rVqn7L5n_ zk|e&;xtyxbA>)$hd;OvigS{{RqeC{|IfrfLl9~R4E~{B4VnT4bN`b0G*_04}JcU=m z0bmo;%{9~4XX04kvK$Y1Lx69)WPKg%Li_vWSEhgIQEmS?t^un<>EyvkyhqRX@lwcl zlF(9{iM)bcYdZz}H=0Y%uxucc!;iqAY=JoXhxV*YdSazHBzOy;Fo* zoN-+&r>=M{bdI9L3#H+63`$63lk%q(pwxE>lHDh*y1?jI4$rnC@NvV?nFEURKYR6? zn_4R&(3GJ3a|Zh#+PjkVzbkdt!&IpxgjeuFP0|usu)?;M5zn3R-b@@>48;RFhK*jN zd@#rS_+b-Y!qqIQC-T>I4JDBadDk+wLgED51IYE~qB1Q{O1TwfrDivjD}ZT2c@RVtVBtYii-C7*wfytr()x>g=^hW<=Ts$}EA+lmSJ{tnRa zqr$~FmP*shL;kgu3UnDT_v)_nBl@$3rese)*R~}|EzDGQ&H7`h@SwBAMcOnac|v2t zZY=r^)=t14JBv&q^~?h4AD=3|7UPi)%_Iq|dNRe#?=ST=K#~Kp#OR=3i%3_^8#MO& zH-cZT5L%MmKjAFpjEHaOv^JPirT&|+bvY#v1i|JyX*s*m_xSX)(tx7ynhbWv^Z4c1f*J zJSbJUh*kpIJa4n=nb`QN2Zp(#KVekMJC=9AVFTAF z<|Ne9liSI;p(ayOCBdy!Lr~4(*gEjv8%>1Gid>dEW*GnOX0Nd#5YOl4Xz?WT+VT3% zMN1IHjM+}1>>cp^0y5ct+D+}*d~Rl3>=Z*%>}P7`=5qZgmfGlYZrj=NSFn8{os{C9 zUT7L^4FbNDn80UPl0E@~IJl^>7mBzqUwWftmXyKnX;W<}t_2;L990Tw!Mps(NXa?W zWVHLJtY7VfQig0SeGF?UT=ecHTq$NIqgZ|{pAsD}&rE-O!p437=F%5AkOt9zLZfCPn)_85tyyBx84ZM#b z%3xn^f7erGzF%2@*tW-by7h*S4@OyOLl=ME*?QXDBK9Fjz>4CJR6q@?@kw6er|LeK zIDfkeN57L2!=ci#D(9h{&$6m*Tf$fz83mVcgGp4=f6))1YQ@kg$Ev(MTZJuG1&)u9 z%D+1EzS^{}5bJ3&hiVn-#MoF^I6^_-;Kbp%uKv0y#sz=?9DB9oT|RZl7gkd zH+C);RgRXG(!IXbJSLtoPWncuFgbPFm+4?5!;_j0RC`%_TjRxu*2=!>`*{Z*%yCAiH2XG3R|t$Vd8+P2ZdK3laWX0c=>lOq~N+b? zbh&W#L*3`6Vn?*(@f;K+a~7ODWsm8I@Bp-|K=h=fIRXV?N1_6Qk#1dq@Fn6&oiSt- z$=bKTbn*mrl32rCare=-DZ;sS&S-I38wzguhtj`4TQKb{KDY7qa`LgJeFev~!tN9o zdZ`J1zYDmqn~LowT@uAyh9xLz&1!TCbXJ1Im*ezB%c`5JG_fOMSWZK2P9LDfpwJ#n4dx9&kr@?z^t z+_qy4cXXQ_Wri4x;|reX8WgtNcdIQ|P*%|Kv9J0QZAwzAH8?8cnZ(42l7y4&X~jn< zJ`ultkzGmeX0TK~#>_gQKz6RH99w!G^Mv&`=qand;LNf#Av)cEzY_0l%Hp6$-weUo&p(CHo!L$&k1i-N6V8y{<{Ra4{Y(zr^>r!m6+En8)h>Dz5?q^s93 zoq;$SL;I6$w;Vm1liFmI%5*RhnU2~4Ub&07wzCx@40Nwu@q}MkvP4R~T$1}ObUJ4X zzHX|?>?eyg1gdz;=(rNwO!7$fDBlrHi*jGAOU})oO>)nkEfvK_z!Bo?gc8dbf4vovj0Y8l$uq|0@V>(_g!iIb9`hRRcu2!>BsJOg z6RVd_d5J(KI;?4@=Rapo1ju>fmXi~3 zZ+uF^Li4$O%Z{4Jw2#+$(5XgfZ-$LY4v9Msc)C5<`I0W^OED#PiOuGhM7uL-f(k?) z-ls0D>m9j=ZaeIdDKVtFib@hNd_^+soLfn?8yr4n?O40py?|WS7KXITux12nX~8(Z5jnm*-^|+`hKz9R}Z|L+ljE=~oEYzh= zdWqEHq?2&bUSpLXS{$D-e%`}-(vVWsXRxT+*?|VdXmsJF*o&6bX}V+YmlOWHl)U~c z&4ZKMuk4faJxqXzJA!(t!aW$uLD43&+Dt+Jd|x=Zs#ljf>`r)jRxcl>Avw8q z_bb}`b<^eNtWB|hEUmJxY0;|aQ2{`Ps@ud;Yh9lqXuH>Uz^3MwQFr#uJ!ggQUEMMg z9cI_qibIU+gqkAOk^*6bBK#z{*fp40E#*>TJIm=LvyV|hzfmB4$h}{~n7%oyLEvfQ zaz}_Vs0w2DYuH)+rdBum27E~;3E~!*S&OYsNpQN>l1==(>%w*_Z(0>nD<(ZLJnSrO z2kComI|wSW7WbdAz05V>!_P`@rxSTxYwIJ7ujZh~HFMJ|a^K-i2_qhKc_g+5%DLEV zZs`BEWX@(ClQv-q? z<_^gEghL5Q_ho+n^8PKfI#6pz+lS5V#HIh?Dh0%BS)8ajr$l7+U-lSfdKlX^Y*0rJ zst_}pEx&G|(d>mBJ4|S}((^7t*I9mtse$8Egocz^@E^Ny2}J6|+m+NNlH;n{w!z2N zO1J6J2Hw&~<$1I@xp|YtzJ*jt%gR|%0VbVt>3)wz`p=oiMA|Xg^@$zfPt(R!wadVf_fMOvy2|}$&fmH+pin7}YI53v z{L})ch$wvVSKDg`9P7h~Ef$_C%f`=DxtGtP3du?y>Vvtu*)K+|_XBO3b6%L%P@rg@@!lI4?<#D z`G?3agY5}Bf=Z-L40l4LK(bYa z9Y9>&xZ(rY(PR%gsjsi74%oRMjw~hB7i0=umvM$_!q!Q|J&h%;>Ap8GnA*86-R1B% zN1IF=pt~zfm2xBYZ~#6U{-7k@qWna)9>gNT-$htfR9h#f(%L;&ql=qG=~FGA8adB? zi}=EA#o>b@4Ru#b{p*>4F^u~sgDztjrO-p^Bw<;cF#J&+^OwsrqPr-2e{*a4KegLg z7I;@+^kTvx9qg>WH2$j@XrYujTn3#~pNkKxlsd_10;$E(zdDmEMwlM$c`zwu-6X1q z$sO0MV8{K2UZCQSyR^o4-m-+?Nc$`)H_&%xAdJE>>_ixu@{dpby8iVil0VbM8Zpic zGxL^9#EjzF1#}$!*w8>G?eFzor6fC#R|HE#+IXo4qhirO;7kVSSug$p2@+F{Oq3kr zrXSC^_@Zf^q)?%qJFe!F*$}wUq*p!w8yY0kR8jY{#tRa`ar*6?k(9N(=9etZPB|j` zxPXj310@~A<;kN~7VRn5K>8|sz5~ca0u#t)qj|$3Ju_d(3bNySU5xqh9M_aHLD@7y z4u*=sV(9|pCH{?zeJH0Y@Lb-&}vyxW-yC z3-Ck4p;-RbquVB+Ki*Y2n7bBxu9K+w0xt%++s#fV{_=M&V%pupyaN{X>)Ne;*B2@> zvQIajhi5A02_!2SCx-(MSk|;kD!3X2ge&_|*YPzsKfSQ~P6;m=#p*qLJN>;P13jST zht6{e>N_!V^&cYm^$MWSlDA&B_PYI3F6_Gh`@yBG&p&ZR+biR2yalILz|JLWNhx!b zC^h`w*;8=iQ;PKD0IB*P(7ra`Nx?E9N^U)Gj>FdaSu{Ok$zk8_z1P%LWvuw5*R};} zjLr8T{IELrSO(Sp@N@oP7qM&=%mMY}rRN((L7PFL?h!R-IDn-2eSS1T&bdexYw?7t zY3ngZ1vgLWU(guo)ho>bP67}k=7*}nA9r!_qP#vW|2@L=K?T~T@1Ks-4vQmyrmCDy znCQ4jES(IDrxn_M1Yh}$aXxy#UdCPUGCBS8xTMK1-Zb_C(2jE70hhKrp5cQToN@+a zdeM3rj52E?;fO&U08>BFVp*#RDm&e1WqazNwTG4=eC#8S*IHN51pU6gw5cKMyrLxU zEB(6qk%BI0V$7|)+oqxW9S|C7SM#89YsM<&_Gy{3hF424To7IV)hBA(mC)MRl|R)@ zHBVTrzf+=o+|7r6B)}U)z0&1LPftEjPTx`2jzagm+k3T*M*h7T3 zAGJ^nio8!YqHQmPBi_)ZYYLWNI*Q@|B%Tl;sFdQ3ME92EHcxGINLjThUT{%>mpg3N z#iYxs>o4}qM_|LyKHp)uG^PBa^;MWG!nj=k@Y8e zYggq6Qhg<0+S-wT@D^Z9|5>9Pgdzz8VE9Q27gOioOLBt!)k}#UpYSUaZP>2m?k4CN zoG(4fjx}mx+_H-@h~gxz>an;wY1nt5TtUmD&4$5j=+R5$6J@m)f&C-pj$CPxlJ z7(G9F9ntrk9-^*~nlp~)Wd`qC-08a%5l;-lvl-+?9!EJnNRtpHKTQycOLFa=E0d1A z1GuQO>)*-qD+aLrg8+SpP%ap##U+wq4<=BSV7#55uZE z$G7VivA|ZpZoBdQ1E*$zTS)nf&6F&t);|XgS#9<-OE2wsFRXQiG!)yy7?K7ue0Z@b zoNb}S)jBZcgM@x<)Le${`dfaT6m-X;))+GN4Ljs0(ExisPBuRK5u|@XIcp#|J6NZ~ z?|hP`J-TOl_hPgDb52vpxtJ?w*oGLc?0d!F#@|vbMET+G)Gx?wk5TmBZm8yJIKV8+OE(0wmCW z`mvi=>{#oro11+9+ttsg)SyyNYJc=#SW;t(7iS?3kx@?A61X>y7rp{G5&>iz2V&@( zBrXIJ-6i-;L)`@()1V@4THRO0R_v%&TQr~aMFtf)(8mKd9j z!QRsf34)^}ZVe)*OXV(QMPf|uPiJ_)MTZ3AsE2gd7PDeLwSKM0)w_WqdiBxD&^=wd zb3BsJ`ISi>Uh6C7#WqFGMm_cyZBYNNcT%ZYXw(Y0I0rSk$>Mip>P$O4$?bNoc)I@^eif<3=3b(uv1y>#i zj0ataOs1UA$O>)3Hq{AXZXUP8aFYT%!soboyUcAATQ2$B?!wf6Lv2&d58W4ZViq{^ z!8W`C( zDdd)zpe|o3o|Vl|)A~E<9xCI=H}hAC2H3EX$Ko8z_PkSZ5C4;!Us9%U=MUqC6gFJc zrnOL0;w)*q!?`k}1g_LV;5WbWpvf~DRB`T7@Ieq4r-RH%Cfr{V>kUs1bSGky6H!K# zXEEC6<%;&N#Cv}rw?!I%i8RL)B=;G2{6Z>Q-{9`~AOcWF>arf}5HNw$nkT1-xqg{%JqzTDlZy@ltU03h z?%={nG-Z%RAaYqqjp`1k-66sfl%zFDV$rTySQEN96eZ$ED*7iT74b08XQ7ZVjy?f6 zMtuI=A_%&A(#-nR1qA6^9=V`Is9}+Q4Q7!lR>_!@v%X6LYz0E`-j$m~VwVYA9kbMq z5a%|Yk(#Ib^^7Kr@!nR7=*^t5!xm?xoNmPAXoT~=1B6N%(qhVv{S+?vcYNF36OCKY zu7;Qyv94RnMs{N^0;ULS^pomV@t&or{78#Vl#i7k6J)hLM!v?Ean>jK5MD*cg++9j z9a>ILsgtcY@sma^hQm}NeyB8pT3Lo^d-hWv5_;n@B*}Mx)iArxQn%60GdXpXnBvZB z!$#1W5ZDqAlou1%h%p_!9Z|T`Km@_y;lMExn%)QtZ1{Ytj={0^Jk6SxE@mT>*C{jd zN@ub*e+T3$^1$E$m}V9NGnn#$Y%aG%iNW1~HZUbpB zAz)>A#@Bkj9t7hTENP~PH^p#_4*%yCfN1xRW$E8x5Ce!Fv`30mqSx{(@r9>H6U|BxK?N3N)W-I4h=^-lg9A(Q}C* z8>Hkjg*ahM`Sb$Gvu{-c_AncXKHrInPy^ZN?UJVP^JIst-{5&!+#gy*C;Wa z+135OFNN5FUKo zTy0dT^o2!Z63%idao$o0yZw?ewkS;{)RKS{@seaZ{7=B`xX+9y9YjhwXDZj9;@wt(By=RiFrWPy6*MJwT(f4X^YgevOlq(@x_wXQZZp8tuhKTbEZN@P%IVHM)cu)Kam|lt>+# zUu#%7y5|-?!U83Stw8k(y#tDIsX&Pj-?u>#z6Lw1d1%YJwqQHp!pWpvxkKZ2bW4fn zF7K%*7audOFWiTtwf&r9J+40cB4%dw4j{3RYrV!tR~;Zi@ZYUrRT5p!)pY<$O$=!y zQqMn~_Ztul_aOT66308(SnSLc4Fw<#2jO43Q~#<8h)&`aL?ntV<2WjSyaQlv=!um2 zg+EW0mx>9l$7SM^G<^eZIVMAZK($nognaY#flcJihs`^qMUHCWQCzGO(wKCth}~GN zQF9NIX#gSz^wQO4L;y_FJ0Lulu;mirt|p_#GI@lQTUUQ|mP-(d2MB~Uwa8PXfoXkU zzqki=1267hC@_v!&_at&XmFpo2c6OBm19C0*|risnZ$`gN>E{V(20EEE~P?hT!BsI zbEiz4s|St28yk}J$hZKD7`w+HJnAUG$&c3*0i`cBPiAKg`BsbKLDmh1M2i-d6dwh1 zKTJas!6ent){s2VMeX3?CPvAHs@0o$2X-h$thSeRzQte0X{K2;pFIzrQYXEFrS&(^ z231FQ)Z~ES#ap?1eEk`+Pru=!;JQ16C>{tYh9myG(}S+>DK)rK8(wP~CpSU2e`-)T zPJe3G1_bPq{bZbCzSPWh;C$u0yej$$Ed@v=r@krav$e6t=g>_1-cAV{8KyQO@Pnj= zRf`A(Qhr@J=zyAKGs>)?xE4H!t~>M3I9}m3nw7WR8tZ3J1IZN2UzPlG|WG8WFrG^p(j!|n+_uDW#L2aaN zAnOKNiNjdak1ar+^qg)*&eHO&-j~^7_lS zhlv7^4eD8)2h*W#arVGnk@9u|&%T#Yl5m$udvVll{e#u~JHR*|XD=bTdKjBz`|Ckna^R-nEX+rPS}s!my!?8&t3f_NCP9c)0|%Zp!AVbg}SM>7Nsh6s1QSW&T`U3 zCH_p#yTZ~F%EI$K-a`$2BPOxf5A|A<_(;t zJ6v2afR@9a?SCN#{7PaN`%&A-5qPz^yt}nINP_BXGk5OBNOvvQ@W)GGe;#ai~;l{loM7DUvRFEHP)UkdB*AcD%{~VHE5Q`1)ZdYAmyscizAF(pEm@J z&jY8B)dH^E@@~=C^9>+2G1T=>n95v{eW zBy-BWAG-?csvQXzx^+`I)=b)>3Ux(hB^jd7TA*n*eiqB;(@V?&wFbOONAydzRVOs| zEk`RVXs^d(%bp*!z)?>4X53S3l-ZA;T+tutPJ^z6*m46a52jo_IV*a}A!jr;epB?Z zU|ZAIvcc^j(x8#ASEzy`T<1dMp2;c;)to-n)^EG&jZk*yl&$7zU)e-7smaSxcRswV0R7R`;=k}8> zA{j@U`2M8JHo7F?cCOzEPrAu<>{_hdS7PGGZjv9+W`Dk_73vRUuoTAi)z~ILjpBF;j1yBRO_*5UST-)5Qm{` zvpL{Dlxi=Qs9-;(?zJdjHEVd(*}|M=T4vyB&i#@P)uZijBo6O^h!N^IC?^r5ty}>R zDA0DILlaXOSjvASzVw>1o=97!t*q&b+Bvc@ktd`&n1KCLQS}>73zm+O8`;>n;H6+V zEhlx;|DK)%X_%Umrm#H5;{HLsRzU!0e8q1G;AElvj017v#BD|67FYc<27Qf?3rAMF z=Gmz!pseb_pZAjl#Z5Ryh*1Go(XBZWW5UggZ2w1$Q?>`i7Svkq00oSo>kH=t+-vbW z;M4sJ^-B8P@}5{cP$z{b^`iSVh(YX#tPS%97?WS2<&Xd&Pt>oAw34c)`V0z1z< zjgsQ!UyqZtCU8e|2@s~rSB`^-%>BSX@k+8^X}#lx^|OR2 zdo32ieX!U%kGP3Pv%GKdSou|ti=Um2R*bWHRsqP5i*c0MP74(9pI`U4?K<^%dG~^Y3zLa)67m&7;2gk*L~i9m zZwu=bzmPDFAq_1F1@dbQT#dW-jXL%}g1IT7uJdE|fa(Yl{k83iCc^P4PDW8kEvl#& z#;%W=rug?T&V14HWi(hLho@|@7Fpm+L6Beq0*Www&>#dV6!!%TZTV;cTRlTL^mhrbdQz+_U$g$ATMbUTZ>N|+r}}iU+Fv51#DMbjQp!78 z!anVfs9QRK4)mWp*+!N=6Ry|fy?Lfk7^$Z-V2PnQ#%TpT^W-N-zsA0Cc|vxX2df?W zb6I-wh79q*H_ID$^z)k1d;m$n3fgIh6k$jl4eat2TA|%(lTR7r9+oI}J%e+Amly{6 z4txMUd?Z=IAGMCegaCY~NJbD0!od(!osl^lIQiNnKi?1eF5OVSjhehQA63ke2+HtQ zW@*HDoKzqIp$QjS;jPNjE;RI7gh=5ljO*`*vOlOcRq?51e}L!y>bvj>XFU36=OQiK zoxt7L@4duijSDyQi*?}YELyrB!RT<>#6an-5Ya-Z9+_t^&zzmlA7LWn_U37R7JShU z=iO$J^}GR|e2c6Ho4_?qNdb*^HO9~cG1(zMhiB0orOHn-5y3|_ z?*Lm=Pb=NK_M8S7@v(Sk3+p1+At68%PS=SpsMJsebRCFXSbx|uw|Le|n{V>42! z0WZC7O3-dfIE|on3EGXTzFZt;eTdeoulv&xHDlYagMiqivqX{+IjMbrlaJ=oyCJwB zMC_Rc8Z;#7utC+F7?+{}#7TZK6TtbJAo|Y|X7lVF;2`{226cWReVZBiFqfh$e!O+@ zl%Z!O>!CUnaozWbx3+I;?$BiiTTj0*ajxkiWIL`Pg0xk3{5!n=)}qvLLkpBrhhujG^i5=pa#e~R1 zUJS#uync$(9l`-cK2~)yHIWHOWMXIS+v1}0jxVt150+kCGR?HbEVlD&#+kCVQKK#( zv!;U(&TET@oy3G>Cg8Q0?lrN{D!Cg3#+c{!>VyT*2{h3MVdinfGH|pCH6o`1vIxxs z|M-=~l>~y78mGTLs|-Q;eJaYxaIB7kYkeqL`6vS9N&6?DR$;}efSOzCWr33C%|q>~ z`4lL^@kLc`irr`wlB57&xaTEulmMvt)bmm&SR(P#6_x^D4&S3?ypTYntaNaBb(&&>~X^4uFJRsK{O!ayexv?!x4DU)GK z==rLiPDsH{Ahl2M`D)lsAY5x7jG)Y^8o1`?^!h(lm*m;9WZ5wYX*w@9CYcUl4`3%} zlsL(bFjItFpYUlKMkDMWBomM@(fT8o2D)@bsTw{Vy@^B@dKdM8cQijM!akaqU8L6W zS#(Mlpu{hD6d1f!YnTE>w)TZkm5$=O<%aC@ZGOQh)f&o8KD14Yq@s5wpy(dK-6b=4 zko_#aT9q`FSU)*8r8n3o6bNBFq=BwVrnmcQYQX^|p!#o@C;wBaBs3H>G*lE+RCEj+EOZQP3{+Gs0xWD?JbZk7G)zJw0z4udJbb+WJOl>r zUmN%j$R9o+n2?J^BVOH! zuR3`_%W3Q!gp5K!NJLCR_lf>910xqV4=*3TfW$XRDQOv5IW=_+O)YI5T@zC?a|=r= zYoLp(o4bdnSMaZp(6I1`NKj%@a!Ts&wDi1u2(+NEsJNu2wywURv8lPGtGlPSuYX{0 zXli<9c5Z%QacOgFduMlV|KRZG^6L8L_U``S@##NYFaWs!#`<^tZ?OM^>)%I!frW>M zgGc-i7YwZXzY`7{{=-Lh1ROCH#Gg*M)Et3Gc;X4U)t$&RoT?Z2#?F%{1hib6beI1@ z`!BNpJFuYtFS7py_P@E70BCS9|2hv28z2gJ7%$!-r7xP(AcNe0nIDySv3K5bYKaIK_(9D?1BA8MC&lX<=LCmD;*B)Sy;7mHbbM3CPM=u=Bc4m;W3HbW_E85lf zvz4uX@1)8Ei+#nC4dElhn1O+V?H7dtzL{)O8GY9`2uA^VZ3U}-ijma^;bjusC; zW~4>HM^_TR9Ke=c@VNV~TchqV2{BK$!dwNxi0q4Qib?W*&8Gzk7r{m^lK-h^RWoi2 zc1|Da&1*HK$b6ovk5bxEkR#hFn+T)RtGeSRn8Efjy&=X+p#K3qe6kPDUA7UZue^&H zy>zHLJUK~7(p;JvQV(Tn!bgFamf|?FDK&`YX<5wqkv}kP{0JAttSc>U<0nY<1X_`{ zF4>1_Ll`;Nv%TyQqqPJx6IV{ubNLD;uf}`8VfX%MFF!r=3}pAIVQ6tfI#Ouv^~mGC zOBZoZ69bttIpb){v@g67YC$5Kk1v0pW+CoEM|Q70j&8_eqln8!U2bB0O z2B`Y2v-G$JLk)>mRVAlrAg)O5%w2spzWz$?XvlW%v=U05VuFuT>#PW#q!sjV9^KBh zNTTssLP@I8bMgmWfl<#O1Fh+0H?P5hD#aZ{qg@z#*B=Z1&>~0IaFnhOYGHe^##P=7 z(o85=kmVmL8$dd77Syah0?O7+nTnu1nkHi^1nWuzgG!qZQ>GpT1VN7OMt;=gwUKL= zC*a!EHaC^wVi^$`8qen29hk@TrlSfq_e6^tD_wbm*K}g#r;)ap=b7gQ05fBcTQd2=koOrPR*DvYQS$wM+3glv1EheSm>^AoE4}TZSYBY=cDZt=Jla?G_(fO2EXa{V)tYt!G_7F9Tvp+ zn$(KAB;8EvA+N&Jn>_gRZGBUIVYtd$=AMZ+#9<_gxGqg6cCsBM)^}Xaa7dDI(m-MG zMn@fekcw!WYDNI4mvdLz3}y+Yfj#1h?Jv$xm5}^Co-z<5LqvQ&#z+w+4l+ZHGN4I3=rqr#0VJjMa1Nu?||dEN_8jS{N+C+>~&Q& zQzkHw7E|=MqwA+kKMjZq$lW5xN9AF5b38~ubg7>H*|3!H9guq%Pq{Ya`519fghXsC zU<&AuOl!6G!U`5qxk!DXTd%v1bKoZTx^lg^k^3-$m7+}@F3_^v)BNZ>kVccuq2!dg zNvx3^RF^NsqnDj<3Dk>TS$gp6Vb=8WpfHvK{NMz9pcrVw6dz-%aBEN4ljNxw=P@GN zMyReIl}V>wMUbw}f&WZuDO_aT=}pqY8tm$THH51)U17hHY0fwJV;rjglfH&N%UzhJ z+rO4F%C%@>(BT6panNFIJzW2JUK~<>&R)pi^ZDi!^^Qe?M5MHo-@dF$3g*>X6-vqJ z@RRpXm_OugU=5>=W;DnqUUa{%AMt_+dYVg~V1u%oZ}GFh2XLX8B%PS6!y`CI?Ei|C zo@#I-Rf-IMJ9Bs{gq~+LK(MY@_Y3n(udnGPC4XsP@#kShXyn0NpkqQ&e-7M}>K*9F z>ZJHa99>{mj~EbV?Q>P-&1ed=`Yx(iCX9l4QBWdlFOiQC4t3pRLWT6)xz)Y{{@RB< zX_SnNZf-r1jg?&7 zW0CaGdIxh^ky0a@XL$H@BSEJ@du96b?bzuZ5T_{=e{OCwu3`UYyUWM!g0s&M0i$I- z)S+x%Xl#@APrMywauJPgDMN9)ZHbgj-M1GfZ3q4Bq9vNKv z_w&ENd2(3VhUu^)ZKfr0EW`5qP@n=kgxp0!%>;$fKY!o9hgSD_=yhi^yh7XTEI*~l zlAv1Jow*Y0fRUnNMwGQonzrYK1G%xIO9aVXtr;2n7j$QISv%eV0KJ12E}2mFdYEpm zX?OGOcn(?N!G1E6>6qfKflD)beoCQLWtNpGd9E0)*hLFxS!3_L>e(YJa#R6}(0X*c zuEnLc^;4LTm!qT~-{jM!z4KlO1mV-O4t}|^i(T_h)5qy9;W^kOj=Oj{{1PF4aO+Lp zoNOD!v*%pn{k{IZFm9?PneWRl!{_YY%~l(E4>!H#&qN1)M{ndGzTFEPLQ)D{3)lL| zej=g9!p2>k>L!y7aV#M;|19Nr-D$`q_)&DMeXX}8m5^yx%e9lWVO&!zePho!rK%<2W&d@4OOg=* z={PvO9@Sc!J@Hds%|On;5b&lVTi%7U{f?&Xk4(IP9MR3#*{vMykmk4V9%=FD+oN~A z@&##(r83KnbEkU>xI41ZCtiDwmWTTaX%6oAD9$qDczk)`6%k0&4; zNEdfL)NW#SIYiQhR&E~KkPae9u7b}lp-bef}XsuD|#J6i`8#ht9V}a0|f8v zptf-yuTlM}>c%UJw%Qiy#)LdGY7MHs!|UkcGq_3uz1(=CGxv_M&@ZerLwT7uS< z9I2cjw;3yGluBLy*+eu(nVm-YuzGx&c6xuRPoz6t ze?@e#IewKSf%3GGCrBq=h1@@WGGC#qt*5$*%{1B`*v^*rW35(hOabV{PK+$|t!C2D}ruYeR5*Nrl zj&tNk^(X!Ldt3I^kvS{vG{3pAccQ-ixtmK7MDwCQ&J_%Q>}Z`Xk}HzsjcWEOa46x8 zX5muYjoUHeN#&XGZPpD;W;@^Q_xZ~1MV`cOZF`izh@17y7+j$F`J?_odKJKOVlTLs$D>d+X&)3n^Y`YV9XnrXQ9IV$I;VOl7=F4_W6@h zHCm(9mfe?UCm6yBQ%8RkACUN6i9#zvv(bn|dsV#4$GiO(Mgx8tz5ZsKXKAJO0aPL( z^npjjOW0~Ty_M-~jsr2LEeR{O7$1mA@->AK`-2I$b^4J)NmD+~wSJpB$nr}S5e4=z zz-js&Fst`jYOXq}WUXJ=f2;IH@sQ8Ri-87QiC-eqrGa+y5WzTUQUIMQ&z_4ymI*_LIS6HzB4&Ea-s=v$vWxji602?bKaj+MPRi;}-tK zUmzPbj{Ysf(!6gqJy*S0`yXQGh_~ThZpv|$x1@zLU86+#)7p^{{;;@-90OaTwr1va zf7Z`)W!O0zMHYKA*)|awiLnN^M#uT=>_pGQUz`r7<5c%EbL`nO@7%IzI8-Rae`Vf2 ziF7wPa%9TOG$UUf%~wulv6pZVFikk6Huw^o>_ znK|uTy>=L6H!yeQWo#s%ilUlaL|6m$c1*RFe5o7XSW20 zNpG37Cf&8xKq`Pq04+NES#JM=rv3*8^Om;U_Ry~Sa{JCR?qAr)kR#Hx} z6kO(q@o>J08U2P>HOG9b$J*d&_2D)%%r;@P&i;|JsX!ThdaW^+SV{@|R+`RJQj#Cf zH4eq9@k$a;Yuug={^J{tFPqmZXZkG-zpHezfRlriQ%hxcyC%JPb(>Z=WhzeK@i_dG zW~6>U6O{HG82@MXb{$>DIB}G}j|~05m;Z2-lfh81ri~J-aIMtGT#{UzjM70u5%c#n zc*`y!1a`UYoT%?ONZY+%n&?=e!bQ?yOW2_oZSIaOw10G0N=F`U{X-nyS<0qcZ11?9kZDZ;(sWzIg=dsSUwguSQ zYbHGQ#;$_p?Enu;8KlW{Q{)BdRa^!NdRUbOax)~SqBIw*L-J*H5?4~H0$M$yM&9>ZUgwWCc&`1`g8`@FC9^#_lyHS5dNcHw@$8B*(XN^6{H-qRH7mIi;pE&Py)3=sb?01nR+4IgRcJAK+0rSvb z%9=je4i0Y1U`eZW{Q3-J8bUSh9rg{|r0eC(r&pUv<>oDh;pR1~9|UwW%oS%JLkc|l zM-u;RaBvQ8#;tDey#NYbYq&MYW3o{D)T}k1Z_)XEBE&X6n|Ahjbka|lV)q-)tS89n zFV#ZZFG6E{KeWXaFoicq_X`v|%~UCUCHH3><*gMU=X0a3xiE~dF}6=%8$$qquB56z zk2`Mj?GtqpLq{fs>iTu9Nz9`6P`Mjh?b3i)dI6sHDE9oPV`3snf9TubF%2 z3zNTOSvSg{BxmEGSt|+b!{u&%eK~|QD(nNVgwA_fmU}%v+A;ek2LDRi5xSBc7~dd_ zzAb4n{wtB_K(vgSz~$v5X6)ZGl`KiN5zDdGE{ftafX;%uRSrp5mUcBEs%hlcUVRyp zq2Z&?mf5V~D|@V*vD|wRb1fY92eO3AzFg_hi0#(+EOva)v531UTRu^_oG^Dv=y;ls z_RVvni$D^Z+HEMX&H6}d5h$)j+iWMO*G-Lvm*B?Nv15-u-$(`2vO|MZ^lHhhd~p;$ z48La$5P_|pJu{wjMfxy-@eOE*a2stvna$9Xn6 zR_+H5_qOO#?zIf@*A>Qn`m-;SW55S3sV5?yp*gQyZoXf#{W3)O*8=3K9180^PCIzjRzVSS*%>4s_GLMe#CLaSfZpghh$WWAx zrzbAgWB-!fVun10#uOf;+)e5Y!Wpc-R)wJzipZj5C?f*VAJLGAer7)29u2)zTQmoB z^_4i6v|}c6vr-=aVQy;ov_IP=1PV=iCO)bNHgNQRP4;Nr3Rq`@=@^Z}`mrpCwKC533ZHcYk zoc&W%2eL9AwvCZB-`>-QNjwtCzQuri7xzkQ{EJXo$I3%)c*LZ4?0Ws>G_U8c*~Uqv zI3Gv#+Xvbr_yz$@xl-pEsi~}lvv&aci-3>t=0MzHFQkzuVN30vZ^Pg4RneD@h02GA zqp_}N_RIyyi36LMpqpu-c<~O92c7MCCeKiRKr5dBAyaf0s>uq=$*V1#-VD$)w%Fyg zWx*y2j2+|AQ=Y`j?q}O*6c@Lf6c&K)c?k&v#_~PG*^PEC8||G1U8pV)Jd6MG^s>6H zT&?3B;jUV%)%|Tv1_J?$aIt_5%APB0!#If)JA>btUIzQ&QcQ1P>=y2;RZwAamk{yvYJ?OVti z6!_a+7afB679GjP-bR2()bH#sC!uEBm5o~7R>RF0#RTZz|V+KaMB6!nF_I&y03AdO`KzOG*JyzcYy0$J>SyK9#m&{9frW&Z1K{|5~!>F$U9VwxTr~k5TX|V`95p z)V#uXJ@3J7ynD{E*E)Xmx`@Jtv6#P8RT++EzPeHXJ6TqT2BeWobj>+J+L>_hRFR88 zCEz^Px3t7PpfPq*izCm^$E>WHpR@5wKnh>{e6@1H?it5@IQ={v$|2<`JW#20KXXy0 z(folZ05I^+ce0lt%-gYam?&lgw7F{y9g)-(7gJk@E1X_RRk_wa<+>rUbo-Mjjb92_ zv%$a%a4QLNT0RC_PYRM0n#BCUY36lS{(Fixf=j~`=kV5O9TV$k!qA!MpLW$qJO+H6 z;&4!n%B5>GL2<+Ys!mi$4Jha-!wEJM_o5SysDpTE+~qW@fcR-5j(noJTByl%an4x2 zjEZU}>L2xu)zNZxa5%-ZL=>X|PRoy4i7vj~=E?1e!jM!lqKUxyncD(LtUJ9oR(&n1 zs}DFM)3{i>Zpq{pb+@%{`qTuyVF{PC`W=uGZR$S0LB{%mkOVfKy*H1IsF2OoGeG@{ zbGGYK%j+>+ynN>C-55&#@&d$2YV5G-5mJv#9&* zKs>Y8rb8j{V0{zr_2AUjPwQ%Y4}JCu@D5^PB%RWP2lbSlSykV@q|oer#(* ze{iX29)8s6${oI>$-AJN523$=KXo!GmW2$Hbkz*}u|~_RJx6LfVDEPZPE|YG={{v) z{c<>`H+Nm5e$bEb-O;u=V%clt#WqxScn(V2c?=%~@geR~H0^;(c_*f{EqfPb9t5`$ zm$=vQG6pM19O@Vn^bqeIi;cv_)pXzmU!Lok+6qNI4LMkkGsdh}diquP^j?E}J zOzgymtICyRuH}b5(lNh>S5)-Cxi~Kr^YsiB^w&4_DGFTiOl)W?uwu&rN}LD$9ry=d zWCRx;Tk4MHWc9b}*MAugE2o@Y<~BI6eR^0;7hbt=3w=d|y7j4eXJTT0K5}-r*jw7Y zTRysE=j#%{9#??-RwiCBId)`-+%oN8T0bLHDr@3fnf5JA^xL?}apc$ml#s9(TJVse zaADB8ywEQ^+Z}7}Ty1jDWGuZsUN4cAQ1;VTaUH|J@()u0vPFh+8&eY#`DP$oyt0F> z(^UA_#zvaA{)KCsW~sYXvF;yeFZym4i5^Yr zeWmv4%3La+3;mC$1613H3tP2&5%Q=!6+pi)7Y)#jWzSDDb>*^lG<-HiIkME>{g-4h z5PY5FcG|eMn+ZdOxV^VOlWa>)S8^jwg!nUmg?bD;>V98%`RuIs%kes;XUQSZHA~~X zyzItiIV$SYq7W(xbCJ{QBDw5=QzQRrIvHp-lFxHUzo?Kf=$5Hn#rD%wy&&;r=DLm$ z5@GY&f}wESzPOWD?$ED|*R9m>7u+%rqrZ2dAtl||rjkvupUq+wN9)~^lFkNC_{lHT zT<*AB=*brq9;63nHm6;2d4jzigS3rjL4r=yxG_VzO45j;5^5t+>h#`}v@e2Fb*Jvy zEul}Jz=O5fS9}u5IFCr?3EHuqk^D|U7^iLXF{(!b_P#OSwnAEA{+-NpScA;J7X0w{dV$kCtgp$ZC%h_r4mGX2%us&yK1xY^~h z21JGgvp33^9#L{_?Ng+hQ>R~IdgfGDN-~nWPGeT+ziNR~<9nR4*%j+tm{xhL{N})Q zbw5a7WDDgBv_)c|i+Z%MvrzQrP6u!R0>T#IvM^_$OC{dqaUTlgHD7b$pS^+bVtnb| zEv$S>K{9vdGC{=I5!XVDblAdq)wsoEXr3MRt*UMxA9%2i;om9eqh|)Ma!f%!b<6*? zCzUOY%Kcs_`Gseep)j9+4QCxy0Nvqk?czSpho$WBKAXH{+8jj5F(<-oLC0=bnm4X zc`1Z6YO{qa$$Bo6w~u?hBY8!1H7d#)*&SXq3Re$tbQDJL16h;#Xs^@V8ba-DQbw+c zzs$?Ev5-PQg-$q(%zshR{)G2xc5a;WSj-~c}naOn^r>0JC%&)mZ>uDO0O(T)CG@+BHXz zsue~4=J}GJYrPF6)-vhKFm~8$o z$)S^d?+e_0xpFg-<-`#dE!%?o^)AiCpizHINAoAiz57eg*Y+`h)7P6~sP$<&w zSrKJm`}0&cl^vn_S?rlElrfIZU@=}- z6UVVXGAeP&0r+5sz!+Z|gQ2KJDa3t^9m~4^IGd3|EfV?}n@V;qxGjK95B{zQsh}`1x?@*amA08lHRp|V&09sDBCyXBn z+`Y-$sew2LtyKi@KQ-{hh~MtJQQdDJ>SZSxn-6#*&V^M^G|z-! zmOLol0e$>T4i=v1IlsQRhmBo>?_}ea_wOKEOD#-Gy~Ch>VXrDF5EGw92GPJ{_zi5K zy!I@Q@Ax|a{$?KBwbZ8T7Gsldt?O5^W>_h>M!l|!6=pwUs%6H^{_6|!4L!X;1fTYP z6sXv9Y2*p6|Bd#+v2VZtStiQ)(@c6x;LfWY z@2;~@;a1}*;RU#(ntjq0drPo13ckG|1|){wch9g}7L344Dvx#G_g%0GKe9*hJh!$( zit%#h8cg;!^A5nc$&#BJ>Q`);!9LY^Teo6@tv&m=4Prnbf<+0Hrhs6Cw%6L9$g@TT zO{?u=M*36S{-s>!PCw#J@uN6su?6CX%<~%@VG!+SOCv&m3S^EQ+&DgHNbz{p4!22c z#i(gC#ID(i@5#%I(KK*SGVt{e1@9X2ZD?`roC7C+sm{`5V0#X7QnJ;2`KmE+ygs3+ zxU!0E0wCKe=&MN{uc~W^Q@t2VVM$l zDyf~NvH)hKiT(o6?AyJ?PtL~-p(x20NS6hRdhGWvRmS`?mu{Kzg~mA*)Qy;JdrSd* zDgik#9jJjFkkz@ueDPma)I&UT`WT^M%^6Y&q*3^S9s`A@rr#z48656vKG%>hdM&Bo zagZ<2!v^y+rJU90|AewY?0%)S^&uAb0YtNH__^(ne| zNznteIOk1dKTpSTPCRLCrFLY9hW@BYdit$>E+p$zsuT76`qzy|HZGa+{yU%kJHR7A z*@(w+*NW`7z&k*@_)~*)Kh8d4CXBi->^ItqDS4N3*%&M~i+w>!F)yr@O&G&umKd8- z)@3+fJBkfiLydl8CdvAdof8KS8&ypF+g2H@aomp%J-pZWDyhJ9h@Mq;FSID_&a7084-EaBu4`kWPg{Wm_5E;DNNa(F>tSwyhz) z;>C&4V#n;x2^Kgw#XrmSnP#URdG(+p>m1C~)KoP>p2GR^GR|dc_kfDDb_$TSfiNBM`fK)RIh=y~YV zupYWb`sPLhh#fCOyV#W!!Vr%M|49^knR{CH=)`ervqaX~*jj6Et!JzfFV$T;4eY_3 zvk}5FAF@r}FJxXmG_3lQkU{(U9N#AHODc73b*3BQYJ#{?~13q|n zzLC#E|5P`H=>*AAH%5$uDf$?fXJQf5ql0zCl@wRW5=x--q_$4Z90mSRTbFVbG_A?L z(N-d{OgD%YLqh2hhrB=`?Jso{VW&6#3X9@tB z*WY^1&Oj$^!x7Zo=-Pb6G`w(oS2pevBW_3DD^E0tl28ZpolCt*RY_V@SCiWySZT&| zIw}uD6Tbmg_OiP9q|#iDr)b6hZ(&Sqdqw6tYMBr;OA(Xfk>Y^z0G7ODL)cez#U2TU zb3R?>vUn|{oKo5pfz1$r^bOesy z%Thhf-5Np7Jw0@5@_7lXxBm#fX4tn8UOcV$6H@S8tj?vn2mdsm9%#Jx6*+++B^sw~ zm|QIlvPoWeA`>>#U@-x+ z)RLEvuCuw7&ovd?J_hcgAV}@TQO3x%ALioM;(P}nlVQiMCC{4KWJ_e&Dw5}B$k%|@ zkx6^Pkoyo2iQWOij173VUMb|JNq`aj??x6+Gw~ojVgcxs&QcX0`~~~`%R3;1J{O{~ z*z;qp6k(8v3?(DWO8cNrzE#gZ%&U~V(w+J7s!BV=;J1($**ie@AT&X!W!~eLbD}{+ zxm^;-^lIB6@JbIr=@;Nu>Xn78bKopOpCFV*6E1M&7D^M~2=i9|t3jBAacmEvlvyc} zOW}%qorw%C&Z|oriazGIwbR6JkiS-yd73Y1)L>C2f`y=O>J&K8YwI!eDs~=GPi(%F z2Ed)>e+S^oRzoYo1dGZJ08g7h=fmxu5TU zhD1tHQS>B6LMj%OH@|t6FUvAk?7=Nu${B>=nXe8lBb^`XaJq!)@g+MijOtFLL0n5V`Pc#?}vm8|f+&6#bfashmi=TH>8g%_hlo5{Vc|7N!#rhAS7Y6GiKXTL$irNFn zL&SahZ9ksO=6!E+0fuYs-NM#b??ow&FlEiXnc_IMe+TdCG+LPCG2WRWVHc*UNbQ-_ ze?9X?Nt8PA&3&eRke9BTdZFAxd_51(P-_ld8r5lA)HF4cnhg48W#;BVgU*PnMF@@K zY3Kd4co!BSg6*MomzUrpTVTyDX2I5z`n{{BWfS3NI@`l~G*-txF&YO9t+iZSD;+RW z{bNL8DWb{#IKhL-W`Fnda15JOHd`w}n!%|Zev&i5sTr=6NAT){Td|Vd6NS&_2bT36 zCy_6IE__!rIXw(+!y|XU*t)u?US^Nf&<_oHo*;E>$6Igh+$3b?;w1(@k5gYtp46^J zxePP=a~e@#@KLND{V?&8*=6Nb7U+peBl@LbD8@}N*KanXu{e9=hJElPE=&}y#9(mM8K?( zEVV^gBrMFnRF!a`YA#Z1g!p+^&#{A;pYKStFHe>`cU?(t4}FH#!s!RpSqW3Efus2l zM# zl$Iw~vz{3LNy_j%B=SRItx-+Z-ua5_mZPFR5Uw)Cxf}6N`&r61*LP$&W4|S-w%XWB z)7fY2q*PD5FUyxDWQF&;PhyvQUw28wKH7+C;lioZ{KP3XS-Nqei9Sbo!DlEmQ!?}z+@-#KESA30rC1YPt} zLnZV1N1+t4EF?(>nRo3609m=y zq3CC}uh255mi`w!-kzr%2G#%{7{0@_8*^Y>pIjq+y(;}8g9F~1w9tA(`_72sde?dA zJ$81EWgPL#oGw_zTs5C^_nWhi(Sz&dmo+VA0Bi7z2^?}c-J}C;qH-(X<(QV^j2%nF z?6afH{(4@>O8b6wcMK$7?o!is+sDAe!Pf9|60Sh3G7TWOv!CK`jQe1#rN@JpPsJ67 zy=&mkZo>B zKgwu)EwtQd-0c@rwSk{@XLq$xg?#=Pw2uh3?(-(EG9TT&PnR*oyeifs76&ud@;_FJ z(*_qG>W|r&l(2Jt`I0U%Y>^o^{lY{nw^xiV3!`!>w`t-aNff%_{^$hmYsqcS>}jXl z`DO7}xht%hozV~t{1uU#d5)GxM|0~J+DzmJvk%Su$6BUlPL1rIidR=*c%hL~lFaLj zA8GIKqT0hGEZiOLwE)?YNErp%F5COkn*Hkf)5cN=1>*Wun&t=2-3ZM)6{GpZVj1*n zMKdmHTo!-}Z`G>wW(TF|-PwvB_5h+Q?M#61L9}dA68_@+zg$mWk(somt$&%yQy&4a z-Y^Cfqs}Wkchf1$WH%{}kdU0;HFsM2*sn|&dZd!qG`S5m2GVjdR8C|EJJ?KEWZP%O zeG`7=51L23xq==Av3VLft26F8J0)8I$34rBOBbDwwuueAfVDU@y2BnAtMr5}FW;OcS6m zI#**&Z%W5CndSstAY3VtrR*cGeL3bySSFUu!>s9~aBGWP_3*!hRm2eMEYoKf)Km@T!n8bV^c(Tq82gmQ zG@bC5Z&|RlDBpx%pTB-%zia^j4mPIFl&HV`sG=%XI!8vO2IWk7msO zvOs=pS{B`0Pa8W&m*@sZc~`ukWqP2=#s;8RnZ~8gc7#+SE~wgf;uoiJZC>TT=*X_j zeL^TU+YfPl)OWhYAN`lb0u>}K=#uPnRFr~Vf7}}QH!RKPZSB!D#%%fy$tA9k;Gc;V ze1RsT2!(_S&MlX6*cBs(1C-_T8yNQ$H!8!^=K~E*t3arw$OF72=K1!iJc--69+}t) zV?;kgm5>UF`GnCd!e`v@QM&s z4*ha#N2L&%KbC^|oE=vOPm-gX?UL-@`k67usrN%vz0ln8Rg#m_xM$@eXoucJ9s=_p zLb>Xv+c*ofdnsYJ_}qrx0h;jUwV7Kt)gC^=a{hR+)Z;2CT~2hZNSW>`15Xt7$tPYI zWJ?_HfEU{9=9)+R>FXzMFZSlR6YhHL8fbO}mz z^CRGGv2)X-lyCDOJV;O2N*_v!=3PJ+uq~3LUy7BoTDLD`96waC-sVuK`&El+)VL#^ zGRfJh^ai^&563uzSSaq;K$dvG_ff>u=ZaG{#+F2naYd*spQ-EY#Cs~X^;av2w3=Fn z(6i~hoE4EXyXrx<483SF*#N)fvo;PaP@03WhouO&LzvO@nSC+Y@ZQr{33IO2*>_kL zKYOFr#0_|?=ACSVRTn_s+WABxK{P`8*KiioDIzf1)HsT&>R_HFfU)eCa)|zR^fcBY zWhTZ4xQ`aFdArzkkuZ24%1}L)wH*cy=dyZ@d77kzJt=M~?GSCyt}oxXS?*8)se9u; zymTW+oLg>$t&_uSQ1^{o`|H_A_oB0%-E3G zI_0Ql8wi3ZHL{wD#WQ}~zQ{JkWQpKSvZ-bU{epkn#nMx(#YclPU#;}ru*gTnaj|0B zTc40>8RnDM=@p?l1FlkqN{RmSRl~t3~S4oKkYeKHF{0UmhLz0js z%BTAd$^>q(;Mc9u3>!*BSApO0?|^CT9Tji~%J`CORB}eTZ)J$ck%3j_c4|DrJD@+r zjDg4WG3u%^tlZ?9!k5!tAT1T~#o8012muQ0{oTX^h_eug%@0>!$89)&;2YB7{ccX< z0q&YCMwHHeZP%8z7rmTJUphTe3pP;jmG99t=wLG0Tws*!tGy7bR-RV{qdW0@Wbfxb!h`6HKT&zC~ z@*E|kfJhm6Z{-{2zyzDxT>I;4Wl*91b>2Bna zsj8T~{6`E6O0@b_cljwjk<=!!-NK`~ZvV3LbJ$495>C}qjmI?zyngX$PBoOx9hI~y zgQ><9(CqII4Wq5NJp2~R~nYxX&diLC65^5Hw za<(devU`uTa0;*bzfQImPHrJB$wE6-lbnWxhz!EtO~tj1JJ#f5{;ZdKv(phUh{2b- zXZp7e{}MVPmulfbmK*K#un(SsPT6SomDt!2sSXis0ORELTbX};j2Kny^ZoJ9m%4so zAH3}lL$Vqd&SiscKgz{#Cc}+tnuXsp5zxU#MTWz9X5%HxTYRnas+;6Enat01K0OI$ zK!ZDu>;%jCVqUP`$zMA3Vj>J~rJdJRB0m`HEMk;atavi;!v|LZoH>vNI|isM5L&4! zDm*+!#$qW7Yh;HEQpMJUUgO(bH_pi(EWWlRDx@#>aQt>zbtVPb(%H3EP1y}yjx&wh zZp=C#3Gf$Clrzj|-MeefJoVp|UfhR^V84xBT2c_yUDShvSX{zcZe`3==ckmer76=e ziEL8_f#W0nMfeT_kC_cF)qLYt8pGLVtL1w>ozI$sm(+roVPRVYjfF=S;}G9MIRf?& z_HUbCpM;<3Gdv z(Y1&+oq(Ua$B}y0-of~#CT=nHqjo&(jpPBeHzi7F^|U1L$DY;h%O(~hMX-q!lIR8J zP5CClT3B36@yV28t0zV0<@^S?!*yb(`JysTDZ?${Ox}B0_LB~VfJ3w?WzkD9x1jeW z8k61Z^XxR1+5Mko^xBGJDuh`s^e*B>lPnW%> z_#fjV0^7oa!u>wMo#2=2`bp@d=6EN`T+NuvEB`GThUSvY4$To(rY4IX&~iAZkpk%w zKR<6U#~P_W=UI^KE$IwH^GGHe{nBhHM;YDvDrW=fgtnhjvbY8(^*6{z=<+9x2<}{` za4eWt^x;&a6%#xX{la@`EQ9(WtqV7EcZY(M{BA@#Qdz;0T|AV>{g4QW8s8}PH1AG@tGY<9y6Xi zLbI_9P3EJYz1Mau)6`u;eT65*m{tn`uz(?IXr7tGLUoGyuBI9>Ths*cYV3J<Ci{x zX6&AjXcLeINNk$M&x^+f>OG-IL4Z>)L?O`T^kq!x@Xyjapo8;`&59(fYkWbpI~)7* zk6oLJf7xrP;xxVEv~Cx1T8*F)`@rd5fagFV3yp~a^LE6jnQmBDa>g}>=tdrgr{Bj1 zW5E6!wnwc0hIxVg9M?edw%&`R|MF%v#0P);6(zy{^FhW!S%UXM+@g^@^2q8f;Q@h)7RDbKt#Jg4lDS4eSFIbrbHsO54ne=^ki@dBx&ibf#0L*IN zd4c>E`X@||9jONcld{HO7B$euMM#x4Qe|_1j7{yF052X)#5rA+}&|?n?;F_!5Vpz@| z{RZA^as7_~^brg0t)aDzN~eu9-MBat#c`4NtZn^kcPG`DU2n?FZC2ja2%2B`O0@g- z9U+M>_Y?JKRDQJ$-D=Guli3{c)nM2$DaT%hvF1qL-a}*670L3qA5L+KsI?Gy$-T#75_bT9oj}1(M;W05 z6doxE-|%;jyh-r$QIk;c#<_o>UrP~%?sWTxhDJg`DoT)XkPbbmrq;$4Xj87aYQ;6? zb(deXzr~B|X>IO4BY2u?B>)CHEP>4E`*5x8aoc zN5dW?)O0_zV9K_0vLv0pW#~`26{ID~Z(j{Z5pQc0?cAl~j~r{BI@XS-;w@hDTEAhm z+}_O6w$ac6PXpL-M5n2AsZ*gIT4^Lh;%|r^Ao1PBq?-P-f2}>7BHrDvr)f-4gTgN3 z!1k$gxKp7{h1EEveRLnYel`CrSc*e!X{73ybcGY4tE_o zH0a;i#VhV}vPwY5dYkK^wTQz8>(Y~V3kO<|9ES(mn%oO3g~1)GWbPuuT(IDu%9;~G zwaHc7oK&8tiJN0;U}&n8(!K4k%;7#Sd=%Gy68u`f@ErE? z-(RJ|$6(PR&Fpd?+`10svIYl6$m%L(7M+glE-o0HIEHfUs#mM|ATDNwmAbAo&Etf}&(&nGR-C6C2UnqJ~pUH7q5 z_HogCJ#*lBFXZ?m;!le@oz(9Q?D3;VXJKwX=iSgTd5&^(w2S}<>PV$+u3kQM6GaG?>aQj3hw0h7(8bcpD(>+ zdaAmH9aXO-dv2bM`Ffp??M3@CYd^E6iOsBE+B)}#L=d<3^XcscznuHOb-OIPhTfaA z&q{NLBRMkM!Wo1wqL#W}UsK8a3E>@I;%|(!j|^xwrt4PKCl>HWoD7~zG3=@VVtW8; zVy~h-O4VV9rz*7_l0LrHzh@8Gui(ApJ{kCz@jq9%@rKnmYoo$^n^s^51S~Rb>OS*i zj&K33+-b++XUjt$nd29=!%Phwa$s)bnz9h#GeN0I$YX-@+Wwn zFWj@nl1U3LTY%py4hYJQlqg4?Ezx+4!xR0VD()W6Y1{GFbHe;r@IS_o-FTB((mWHc zN#QFi>y(QAD>+^Tg(PJMc?T*2^4UE(HG_lP_NikiH3&|k=V@tv=0C&V41Z|6J|fq& zU3%ld78gk#uc_%4+x&&f{GrI$tal*f{{Rs7s)@CFoWHuKCG8%`ogc+(+h2*-x4tU) zfAH4t!yXFKAdb#?ZA6pCg>V*01)-!*L6kjxMh68*>_OudgLggnw9=B;`={Yo?7{ml{Ajq= zWALYpykmbRk!Wvk1cr;y6c3;)cE|b7Nv;ME~ zQ{k40@bg>Od{1wyYtUM27Mi*|EB1DD7*<&0Ae^w^=jl^uT_k!+wqqI-v}3ny^nqUr9403^zbA%@q7;PH^NOy)^vu-<>P5AudUA?=`P_+a|~o- zaXBE9!5U81_-uHYeM+9!mEt2&J^QES-5gJYJVmEke$0L|u$$pK>vxi0Cf^;1$xSyV zAhEOTJ5G22FwdLMyr=H$c2=i1ji)7A%HIcl{Qm%}9wp}cR(CycGH10H0tvom&p}Gy zHWEo5gPc$Wktek@(g9ZE2N*c?p}xQ;o9)tzfO&(iIilcN%lZlkvK>fA*#7|VOQ^)Z z9Q;Kabbk*_r~dx{!&}kapDDyn*l54+FUg&^!*AM;;lGG}8ED@S{viu{--{m)ZKbo* z;Fe9Y>V?;AGGqAh-1D&Sem4r!oi%s5Icw#(s&%D@!|6(#a!0`PB?tdy*g`1$4|h&`)>SV@xQ=t z8~9tn9}o2j{2k#9H%EqBCDW8D+&1@C+}Qbm+PoeKB%J1^tejd%oSz9p8%lNY3z}`a z-=Oc>YscOo&@>-_e-!NQ4~Bjt_=8V2nxyuzEOK1HL=E#P91OP{a3sfJPHn48sIvMr z=PXVZOPZWr)%)slpYT(Ui5?~&7Y~Aewdel;gjehqm*3f#UoX$hgMUot@u;mQdmUUo zho$v@Z_Dr9tN9*%{{RH()->%a_Negizhp#}E^7**C>c2DC{{UtG0NN+w2ai8(4P(Qa*NCnz{5w3FlnbOVA7+Ii-eVD_Fu2+V zM<<--wS?Q9k0&v};pk6zz97;yyL~>!`~=?xxNB7rugi>Wb{vlM)aC5kxyOjX zVgCTN;YGo6$}P3s>U;&N>ND!Mw>P(PwAXhsw9?4kUD%Su{Yf>-eY8@FQClPIfA}Vk z{DnR&@&5oayZ->_M!IQrK2wN(8Xw|31NLJ70F#OMY5xFY4VV6oTE;&TJ$5j^@+C@auLuclJym3wa`yA~F|Te9TOYcOFL=#w&SF zN~MpMp@GB8D0QU|dzHKO(&ulaX%>D2_{aNKc-zBzWEVa%(5+yXOpD77VQH+)(z>s5 z&N6*=k=)h%E=?Sho2`byP^#?-H-D42jKKh&-~XWyl}!TdB!-4%!PZ_$P12YkOIK z(QOZkEn|vb@1VJ`0lyK0LjD^%Yqs-@GkfyC%16dPl6e@eQ|iT_2FUwIOwa^To^Vbn zfjuA&bL~I@Co}+12DCyl-@J@T_~R9JCzY4x(=FzJJ+m^o9LFdl@;Ic%lUkkk?EUfE zUHzMUWqaZs4^GpyE4!;EvUs%yB?2>}Q;GRh&lk3375}T8|K9385rGupDQd&LxvA-X_IqLrav@ef;;VaiH zY_$8+X&tANU>rxa3t;^0$3HReM5WH|!v%we29L3WZC?7Gf2Utu=@+)wmUGEzcWole z4Dh*Ejnw5?NaPSeAk-}m=M^;K_Gj1nAN&-X$8l&@mfj)ow}!k~eP{=hsbAW%%e(u` z6z$!>V6M?*Ip|4J+Jt>@*OWs)^vXq z+(~n(Xu5<<_RQ|gNnUa|a-}53FfEdX4t%hz0W8asSRCiICsOLxF{hK#r&<_?IXOqGcfYCU z`bWpzXGZu5uKXyAPq2LxSJV?xn(@Q^r5#!#6-aHk{mS)I)YK_jJg0QB^M0lCju$i{s|Gul#*aixX+~5$kEF+v;CqK>q+{^C1Woa9eiM<&5*5O*cEsnB=E| zg*+$J(|opS{dGDkPuly(x>v`IXX3V$);eyltOSnxO^q3>r;TGo2*}J^A0Rp1ka`hS z?H@NXF?n7dSXkjDc9zen*m&3W^zmN3;VoA{@W+LGH{b-;6t1OtpjvFWxdag3H$jj{ z&I@vIM_Q*Ma1-~V4+hL3|nuSD&AV({LeF}JH){tiU46i2RSByBTv20 z6z&CpbJLnY6aejq)KCLT9;ZA|2T3NaHNInpDD2ru2V#8RnaTZXnJO|yeD^X*^E{00 z>dli%-G-YgIl(8V)~zD0#-vX<#A?iQ&RYq{^Okg04|jwqbt0zA#)LQ z3@}2TG3nZd4%Q$6Gm=~IAN_hn6GIdXNHRD42xC8%Y1sz73FL-bRSc1!Q_Hxuo}1J#Wx4@M$@6#|YqIqqlz8CPrJd8Px<@q#gmKtB`!g>%=X z1052VI9_u=8`oO%PID!^F5Qfaxc+r}lCEdH@NfBdfPEB?>rTS3CH!jNJ-TDnI6tmw zGOcxDd1Dt)18s6ff8~p|DGe@N%&8IMY&x($;-m&=iUdfI$so$c%soJ$3FEW*cS|C| zzUQCHor;fR91_Drg(jic8)67~=Zv=8KZ`BNO1{A|I;Ja3A*0f7Pmk z-3ADya-+EUVq2*9MLzZ)^3FqoDUQgh(7LbPKY*zxPUJ35(m$O78yr#*kO}t`$Duq> zV*&m_o~=kd37+9#1SFC-)baUK)K6W=n)7o3wLtn%hoBiwcv1NZKs)UW2>D0Ua78g$ z3${7ByDN|HoR7|sUc)?z7e6lJ{?9Z3m_OZb%7KQ)VSpPyN&sxJvaWXE(12ueZ74v= j^fU;Z%2<8XA3;FDWh!{b;spRWOmWEF^dwLlY=8gRgjEp> literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_person.xml b/app/src/main/res/layout/activity_person.xml index aafe5e4..30b2ab5 100644 --- a/app/src/main/res/layout/activity_person.xml +++ b/app/src/main/res/layout/activity_person.xml @@ -1,10 +1,62 @@ - + - + + - \ No newline at end of file + android:layout_height="match_parent" + android:background="@color/bgDark"> + + + + + + + + diff --git a/app/src/main/res/layout/fragment_gallery.xml b/app/src/main/res/layout/fragment_gallery.xml index 643fe25..0f0bb70 100644 --- a/app/src/main/res/layout/fragment_gallery.xml +++ b/app/src/main/res/layout/fragment_gallery.xml @@ -1,22 +1,54 @@ - - - + + - \ No newline at end of file + android:layout_height="match_parent" + android:background="@color/bgDark"> + + + + + + + + diff --git a/app/src/main/res/layout/fragment_person.xml b/app/src/main/res/layout/fragment_person.xml index aafe5e4..b783fad 100644 --- a/app/src/main/res/layout/fragment_person.xml +++ b/app/src/main/res/layout/fragment_person.xml @@ -1,10 +1,13 @@ - - + + android:layout_height="wrap_content"> + \ No newline at end of file diff --git a/app/src/main/res/layout/item_category.xml b/app/src/main/res/layout/item_category.xml new file mode 100644 index 0000000..d637677 --- /dev/null +++ b/app/src/main/res/layout/item_category.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_fragmentperson.xml b/app/src/main/res/layout/item_fragmentperson.xml deleted file mode 100644 index 638a817..0000000 --- a/app/src/main/res/layout/item_fragmentperson.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/item_user.xml b/app/src/main/res/layout/item_user.xml new file mode 100644 index 0000000..ff72020 --- /dev/null +++ b/app/src/main/res/layout/item_user.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main_fragmentpersonitem.xml b/app/src/main/res/layout/main_fragmentpersonitem.xml deleted file mode 100644 index 627addf..0000000 --- a/app/src/main/res/layout/main_fragmentpersonitem.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - diff --git a/app/src/main/res/menu/bottom_nav_menu.xml b/app/src/main/res/menu/bottom_nav_menu.xml index 0db5c6f..03eee5f 100644 --- a/app/src/main/res/menu/bottom_nav_menu.xml +++ b/app/src/main/res/menu/bottom_nav_menu.xml @@ -6,6 +6,6 @@ android:icon="@drawable/ic_library_music"/> + android:title="Top 100" + android:icon="@drawable/ic_menu_auto_graph"/> \ No newline at end of file From f5de8871262b26d863c919bdf373f17c1884aa33 Mon Sep 17 00:00:00 2001 From: datvn Date: Mon, 22 May 2023 07:29:54 +0700 Subject: [PATCH 3/3] update --- .idea/misc.xml | 2 +- .../main/java/com/ltdd/cringempone/MainActivity.java | 11 +++-------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 441170b..4b539f9 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,7 +1,7 @@ - + diff --git a/app/src/main/java/com/ltdd/cringempone/MainActivity.java b/app/src/main/java/com/ltdd/cringempone/MainActivity.java index 689d637..5260cb1 100644 --- a/app/src/main/java/com/ltdd/cringempone/MainActivity.java +++ b/app/src/main/java/com/ltdd/cringempone/MainActivity.java @@ -40,10 +40,9 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; import com.google.android.material.navigation.NavigationBarView; import com.google.android.material.navigation.NavigationView; -import com.google.firebase.auth.*; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; import com.ltdd.cringempone.databinding.ActivityMainBinding; -import com.ltdd.cringempone.service.LocalStorageService; -import com.ltdd.cringempone.service.MediaControlReceiver; import com.ltdd.cringempone.service.MediaControlReceiver; import com.ltdd.cringempone.ui.activity.LoginActivity; import com.ltdd.cringempone.ui.activity.RegisterActivity; @@ -51,12 +50,10 @@ import com.ltdd.cringempone.ui.person.PersonActivity; import com.ltdd.cringempone.ui.person.PersonFragment; import com.ltdd.cringempone.ui.search.SearchResult; +import com.ltdd.cringempone.ui.settings.SettingsFragment; import com.ltdd.cringempone.ui.slideshow.SlideshowFragment; -import com.ltdd.cringempone.utils.CoreHelper; import java.io.IOException; -import java.util.Timer; -import java.util.TimerTask; public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener { @@ -69,8 +66,6 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationV SlideshowFragment slideshowFragment = new SlideshowFragment(); - SettingsFragment settingsFragment = new SettingsFragment(); - PersonFragment personFragment = new PersonFragment(); TextView tvName; TextView tvEmail; ImageView imgAvatar;