From 0ec583184abcf3282d3a5a9172020f5058d42345 Mon Sep 17 00:00:00 2001 From: Sumukh Shivakumar Date: Sat, 18 Feb 2017 17:55:52 -0800 Subject: [PATCH 01/13] first commit --- README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..d43b488 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# MDBSocials From cc8b580efa6bed32dd31dc7509d60ec27051d567 Mon Sep 17 00:00:00 2001 From: Sumukh Shivakumar Date: Sat, 18 Feb 2017 17:58:44 -0800 Subject: [PATCH 02/13] Working Login/Register --- .gitignore | 9 + .idea/compiler.xml | 22 ++ .idea/copyright/profiles_settings.xml | 3 + .idea/gradle.xml | 19 ++ .idea/misc.xml | 46 ++++ .idea/modules.xml | 9 + .idea/runConfigurations.xml | 12 + app/.gitignore | 1 + app/build.gradle | 34 +++ app/google-services.json | 55 ++++ app/proguard-rules.pro | 17 ++ .../mdbsocials/ExampleInstrumentedTest.java | 26 ++ app/src/main/AndroidManifest.xml | 23 ++ .../sumukhshiv/mdbsocials/LogInActivity.java | 101 ++++++++ .../sumukhshiv/mdbsocials/MainActivity.java | 49 ++++ .../sumukhshiv/mdbsocials/SignUpActivity.java | 239 ++++++++++++++++++ .../sumukhshiv/mdbsocials/UserArea.java | 13 + app/src/main/res/drawable/mdb_logo.jpg | Bin 0 -> 53793 bytes app/src/main/res/layout/activity_log_in.xml | 85 +++++++ app/src/main/res/layout/activity_main.xml | 53 ++++ app/src/main/res/layout/activity_sign_up.xml | 81 ++++++ .../main/res/layout/activity_user_area.xml | 13 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3418 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2206 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4842 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7718 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10486 bytes app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 6 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/styles.xml | 11 + .../mdbsocials/ExampleUnitTest.java | 17 ++ build.gradle | 24 ++ gradle.properties | 17 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 ++++++++++++ gradlew.bat | 90 +++++++ settings.gradle | 1 + 40 files changed, 1256 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/google-services.json create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/io/github/sumukhshiv/mdbsocials/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/io/github/sumukhshiv/mdbsocials/LogInActivity.java create mode 100644 app/src/main/java/io/github/sumukhshiv/mdbsocials/MainActivity.java create mode 100644 app/src/main/java/io/github/sumukhshiv/mdbsocials/SignUpActivity.java create mode 100644 app/src/main/java/io/github/sumukhshiv/mdbsocials/UserArea.java create mode 100644 app/src/main/res/drawable/mdb_logo.jpg create mode 100644 app/src/main/res/layout/activity_log_in.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/activity_sign_up.xml create mode 100644 app/src/main/res/layout/activity_user_area.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/io/github/sumukhshiv/mdbsocials/ExampleUnitTest.java create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..39fb081 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..0e23f8e --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..fbb6828 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..f5e9010 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..d307b9d --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,34 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 25 + buildToolsVersion "25.0.2" + defaultConfig { + applicationId "io.github.sumukhshiv.mdbsocials" + minSdkVersion 15 + targetSdkVersion 25 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + compile 'com.android.support:appcompat-v7:25.1.1' + compile 'com.android.support.constraint:constraint-layout:1.0.0-beta5' + compile 'com.google.firebase:firebase-auth:10.2.0' + testCompile 'junit:junit:4.12' +} + + +apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..581c685 --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,55 @@ +{ + "project_info": { + "project_number": "499588796344", + "firebase_url": "https://mdbsocials-e2598.firebaseio.com", + "project_id": "mdbsocials-e2598", + "storage_bucket": "mdbsocials-e2598.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:499588796344:android:3fcbbeeb8c1bfb78", + "android_client_info": { + "package_name": "io.github.sumukhshiv.mdbsocials" + } + }, + "oauth_client": [ + { + "client_id": "499588796344-d2vkc698olp0jq6g848evvubjss1k1bq.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "io.github.sumukhshiv.mdbsocials", + "certificate_hash": "1B12EB78F4B2B55714B404F17036C3F98D92F442" + } + }, + { + "client_id": "499588796344-96odu7ltkjkfvjfa63pcc3evgu4r8iuh.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAd9oy9jHjxSiF17n6zDLtASKbABjYlwa4" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 2, + "other_platform_oauth_client": [ + { + "client_id": "499588796344-96odu7ltkjkfvjfa63pcc3evgu4r8iuh.apps.googleusercontent.com", + "client_type": 3 + } + ] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..67d5f8d --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Users/sumukhshivakumar/Library/Android/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/androidTest/java/io/github/sumukhshiv/mdbsocials/ExampleInstrumentedTest.java b/app/src/androidTest/java/io/github/sumukhshiv/mdbsocials/ExampleInstrumentedTest.java new file mode 100644 index 0000000..b7f8d72 --- /dev/null +++ b/app/src/androidTest/java/io/github/sumukhshiv/mdbsocials/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package io.github.sumukhshiv.mdbsocials; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("io.github.sumukhshiv.mdbsocials", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..f4fd4a1 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/io/github/sumukhshiv/mdbsocials/LogInActivity.java b/app/src/main/java/io/github/sumukhshiv/mdbsocials/LogInActivity.java new file mode 100644 index 0000000..ed1a74d --- /dev/null +++ b/app/src/main/java/io/github/sumukhshiv/mdbsocials/LogInActivity.java @@ -0,0 +1,101 @@ +package io.github.sumukhshiv.mdbsocials; + +import android.app.ProgressDialog; +import android.content.Intent; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; + +public class LogInActivity extends AppCompatActivity { + private EditText editTextEmailLogin; + private EditText editTextPasswordLogin; + private Button buttonSignIn; + private TextView textViewRegister; + + private FirebaseAuth firebaseAuth; + private ProgressDialog progressDialog; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_log_in); + + editTextEmailLogin = (EditText) findViewById(R.id.editTextEmail); + editTextPasswordLogin = (EditText) findViewById(R.id.editTextPassword); + buttonSignIn = (Button) findViewById(R.id.buttonSignin); + textViewRegister = (TextView) findViewById(R.id.textViewRegister); + progressDialog = new ProgressDialog(this); + firebaseAuth = firebaseAuth.getInstance(); + + + buttonSignIn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + userLogin(); + } + }); + + textViewRegister.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent toHome = new Intent(LogInActivity.this, SignUpActivity.class); + startActivity(toHome); + } + }); + + } + + + + + public void userLogin() { + String email = editTextEmailLogin.getText().toString().trim(); + String password = editTextPasswordLogin.getText().toString().trim(); + + if (TextUtils.isEmpty(email)) { + Toast.makeText(this, "Please enter a valid Email Address", Toast.LENGTH_SHORT).show(); + return; + } + + if (TextUtils.isEmpty(password)) { + Toast.makeText(this, "Please enter a Password", Toast.LENGTH_SHORT).show(); + return; + } + + + progressDialog.setMessage("Logging in User..."); + progressDialog.show(); + + firebaseAuth.signInWithEmailAndPassword(email, password) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + progressDialog.dismiss(); + if (task.isSuccessful()) { + Toast.makeText(LogInActivity.this, "Login Successful!", Toast.LENGTH_SHORT).show(); + finish(); + startActivity(new Intent(LogInActivity.this, UserArea.class)); + } else if (!task.isSuccessful()) { + Toast.makeText(LogInActivity.this, "Email/Password combination is not correct. Please Try Again.", Toast.LENGTH_LONG).show(); + } + + + + } + }); + + } + + +} diff --git a/app/src/main/java/io/github/sumukhshiv/mdbsocials/MainActivity.java b/app/src/main/java/io/github/sumukhshiv/mdbsocials/MainActivity.java new file mode 100644 index 0000000..b8d0295 --- /dev/null +++ b/app/src/main/java/io/github/sumukhshiv/mdbsocials/MainActivity.java @@ -0,0 +1,49 @@ +package io.github.sumukhshiv.mdbsocials; + +import android.content.Intent; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; + +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; + +public class MainActivity extends AppCompatActivity { + + private FirebaseAuth firebaseAuth; + + @Override + protected void onCreate(Bundle savedInstanceState) { + +// FirebaseUser user = firebaseAuth.getInstance().getCurrentUser(); +// +// +// if (user != null) { +// Intent signUpIntent = new Intent(getApplicationContext(), UserArea.class); +// startActivity(signUpIntent); +// } + + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + Button buttonLogin = (Button) findViewById(R.id.buttonSignin); + Button buttonSignUp = (Button) findViewById(R.id.buttonRegister); + + buttonLogin.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent loginIntent = new Intent(getApplicationContext(), LogInActivity.class); + startActivity(loginIntent); + } + }); + + buttonSignUp.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent signUpIntent = new Intent(getApplicationContext(), SignUpActivity.class); + startActivity(signUpIntent); + } + }); + } +} diff --git a/app/src/main/java/io/github/sumukhshiv/mdbsocials/SignUpActivity.java b/app/src/main/java/io/github/sumukhshiv/mdbsocials/SignUpActivity.java new file mode 100644 index 0000000..5435abc --- /dev/null +++ b/app/src/main/java/io/github/sumukhshiv/mdbsocials/SignUpActivity.java @@ -0,0 +1,239 @@ +package io.github.sumukhshiv.mdbsocials; + +import android.app.ProgressDialog; +import android.content.Intent; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; + +import static android.graphics.Color.DKGRAY; +import static android.graphics.Color.GREEN; +import static android.graphics.Color.RED; +import static android.graphics.Color.YELLOW; + +public class SignUpActivity extends AppCompatActivity { + + private Button buttonRegisterUser; + private EditText editTextEmail; + private EditText editTextPassword; + private TextView textViewPasswordStrengthIndiactor; + private TextView textViewPasswordGraphic; + private ProgressDialog progressDialog; + private FirebaseAuth mAuth; + private FirebaseAuth.AuthStateListener mAuthListener; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_sign_up); + + mAuth = FirebaseAuth.getInstance(); + + progressDialog = new ProgressDialog(this); + buttonRegisterUser = (Button) findViewById(R.id.buttonRegisterSignUp); + editTextEmail = (EditText) findViewById(R.id.editTextEmailSignUp); + editTextPassword = (EditText) findViewById(R.id.editTextPasswordSignup); + + textViewPasswordStrengthIndiactor = (TextView) findViewById(R.id.textViewPasswordStrengthIndicator); + textViewPasswordGraphic = (TextView) findViewById(R.id.textViewPasswordGraphic); + + mAuthListener = new FirebaseAuth.AuthStateListener() { + @Override + public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { + FirebaseUser user = firebaseAuth.getCurrentUser(); + if (user != null) { + // User is signed in +// Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid()); + } else { + // User is signed out +// Log.d(TAG, "onAuthStateChanged:signed_out"); + } + // ... + } + }; + + editTextPassword.addTextChangedListener(mTextEditorWatcher); + + buttonRegisterUser.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + registerUser(); + } + }); + + } + + @Override + public void onStart() { + super.onStart(); + mAuth.addAuthStateListener(mAuthListener); + } + + + @Override + public void onStop() { + super.onStop(); + if (mAuthListener != null) { + mAuth.removeAuthStateListener(mAuthListener); + } + } + + private final TextWatcher mTextEditorWatcher = new TextWatcher() { + + public void beforeTextChanged(CharSequence s, int start, int count, int after) + { + // When No Password Entered + textViewPasswordStrengthIndiactor.setText("Not Entered"); + } + + public void onTextChanged(CharSequence s, int start, int before, int count) + { + + } + + public void afterTextChanged(Editable s) + { + if(s.length()==0) { + textViewPasswordStrengthIndiactor.setText("Not Entered"); + textViewPasswordStrengthIndiactor.setTextColor(DKGRAY); + textViewPasswordGraphic.setBackgroundColor(DKGRAY); + textViewPasswordGraphic.setWidth(0); + textViewPasswordGraphic.setHeight(12); + } + else if(s.length()<6) { + textViewPasswordStrengthIndiactor.setText("Must be at least 6 digits"); + textViewPasswordStrengthIndiactor.setTextColor(DKGRAY); + textViewPasswordGraphic.setBackgroundColor(DKGRAY); + textViewPasswordGraphic.setWidth(50); + textViewPasswordGraphic.setHeight(12); + } + + else if(s.length()<8) { + textViewPasswordStrengthIndiactor.setText("Easy"); +// textViewPasswordStrengthIndiactor.setTextColor(RED); + textViewPasswordGraphic.setBackgroundColor(RED); + textViewPasswordGraphic.setWidth(200); + textViewPasswordGraphic.setHeight(12); + } + + else if(s.length()<11) { + textViewPasswordStrengthIndiactor.setText("Easy"); +// textViewPasswordStrengthIndiactor.setTextColor(RED); + textViewPasswordGraphic.setBackgroundColor(RED); + textViewPasswordGraphic.setWidth(300); + textViewPasswordGraphic.setHeight(12); + } + + else if(s.length()<13) { + textViewPasswordStrengthIndiactor.setText("Medium"); +// textViewPasswordStrengthIndiactor.setTextColor(YELLOW); + textViewPasswordGraphic.setBackgroundColor(YELLOW); + textViewPasswordGraphic.setWidth(400); + textViewPasswordGraphic.setHeight(12); + } + + else if(s.length()<15) { + textViewPasswordStrengthIndiactor.setText("Medium"); +// textViewPasswordStrengthIndiactor.setTextColor(YELLOW); + textViewPasswordGraphic.setBackgroundColor(YELLOW); + textViewPasswordGraphic.setWidth(500); + textViewPasswordGraphic.setHeight(12); + } + + else if(s.length()<17) { + textViewPasswordStrengthIndiactor.setText("Strong"); +// textViewPasswordStrengthIndiactor.setTextColor(YELLOW); + textViewPasswordGraphic.setBackgroundColor(GREEN); + textViewPasswordGraphic.setWidth(850); + textViewPasswordGraphic.setHeight(12); + + } + + else { + textViewPasswordStrengthIndiactor.setText("Strong"); +// textViewPasswordStrengthIndiactor.setTextColor(CYAN); + textViewPasswordGraphic.setBackgroundColor(GREEN); + textViewPasswordGraphic.setWidth(1150); + textViewPasswordGraphic.setHeight(12); + } + + + if(s.length()==20) { + textViewPasswordStrengthIndiactor.setText("Password Max Length Reached"); + textViewPasswordGraphic.setBackgroundColor(DKGRAY); + } + if(s.length()>=20) { + textViewPasswordStrengthIndiactor.setText("Password Max Length Exceeded"); + textViewPasswordGraphic.setBackgroundColor(DKGRAY); + } + + } + }; + + private void registerUser() { + final String email = editTextEmail.getText().toString().trim(); + final String password = editTextPassword.getText().toString().trim(); + + if (TextUtils.isEmpty(email)) { + Toast.makeText(this, "Please enter a valid Email Address", Toast.LENGTH_SHORT).show(); + return; + } + + if (TextUtils.isEmpty(password)) { + Toast.makeText(this, "Please enter a Password", Toast.LENGTH_SHORT).show(); + return; + } + + if (password.length() < 6) { + + Toast.makeText(this, "Password must be at least 6 characters", Toast.LENGTH_SHORT).show(); + return; + } + + progressDialog.setMessage("Registering User..."); + progressDialog.show(); + + + mAuth.createUserWithEmailAndPassword(email, password) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (!task.isSuccessful()) { + if (!email.contains("@")) { + Toast.makeText(SignUpActivity.this, "Please enter a valid Email Address", Toast.LENGTH_SHORT).show(); + } + else if (mAuth.signInWithEmailAndPassword(email, password) != null) { + Toast.makeText(SignUpActivity.this, "An account with this email already exists.", + Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(SignUpActivity.this, "Authentication Failed.", + Toast.LENGTH_SHORT).show(); + } + progressDialog.dismiss(); + } else if (task.isSuccessful()) { + progressDialog.dismiss(); + Toast.makeText(SignUpActivity.this, "Registered Successfully!", Toast.LENGTH_SHORT).show(); + finish(); + startActivity(new Intent(SignUpActivity.this, UserArea.class)); + } + + + } + }); + } +} diff --git a/app/src/main/java/io/github/sumukhshiv/mdbsocials/UserArea.java b/app/src/main/java/io/github/sumukhshiv/mdbsocials/UserArea.java new file mode 100644 index 0000000..f22c59d --- /dev/null +++ b/app/src/main/java/io/github/sumukhshiv/mdbsocials/UserArea.java @@ -0,0 +1,13 @@ +package io.github.sumukhshiv.mdbsocials; + +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; + +public class UserArea extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_user_area); + } +} diff --git a/app/src/main/res/drawable/mdb_logo.jpg b/app/src/main/res/drawable/mdb_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..20552e246808b7b4ece887e39d937c5c0a3c76d9 GIT binary patch literal 53793 zcmb?@1z1%}*YG}vLrWvl9zwtX0qF*5rBpy9q`SL4D1x*oA_CHal1g`%bO}<@Ez%*P z{&PUDdhdJR@B5zTpZ$3D+B0ib&6+i9W^erd{`(|EtSGA>3&G$J1OpfJeHDsVHMeuN zb27KHM_%IKgao7%ln@9AT~M@eGl-nW#GL)=ZCSya0vcC2uc%pH<+Bl_g|k71vQkRY zoLroooCbo1oW|hJ$U-spN869XpzKLjwdp_RQefD6&}j>mmlkKo_>I-3{)dU#`?{)DTG3E+i?wo9O! zGrBK6T7PmQdq*_v4`6;Ha|3{bUkTs~$MORRf=)Z34X7YK91wbLtL+A+<3nfBn&?_hx%7;pzN~jKMhT5SX z=p8f)O+s_f3bYRGLSJAo7&eRmMh2sTorax(oriJ51Ylw?8Q4|WHJBDmA7%!#g}K1I zVfSDmut%_1STgJt>xB)&reI63P1pe(1AYQd4yS{&z%RlD;F9nw@EdSl zxEb65?g{sYhr?swDe!D~F}x1m4u1!qgs;GNFdz(k3BP)8Uc91y;UP(&=^C88M7i0DU5 zA=VM!FbObeG0$TPVJcwW#5BWn!wkTT#!Sa7!fe8PhdGD2i-mGwf{a8tgvoIqZELe4Nub+&Hp0 zw{UE6?&3t_Wa3og^x-Vve8DBgJ%cNRtAcBc>wz1An}%DC+l@Pi`vs2#j}=c8?*^VF zo*!NeUM^k}-Wc8%K0ZDpz97CDz6CxCKL-Cbek=YI{^t{E{ARu5NkRZ54;7kxs@QR>;-~+)vAsHbDp#q^X;T^&_!eYWc!cRoFL}!R3iS&p( ziK2-Lh`NbB65|rH5ML%XAoeAWBQ7HzBHke(BjF-ZA+aF|CCMatOR`9cP0B(lLuyRw zPnt^FKsrN)LB>ROnaqgn9$6Y$6WJU&7C9@q0=Xr52zd^97y0^0(vv(VHBP#pj5}F% za*_grf`vkX!kQw2BA;TA;@}kBDalhNr-Dx9p6WZbM@d5|L1{u6Oqoadj`DyCNhL#N zMHNX^LN!i}pgu>fM(swOK;14_92D*>*6!a4Gmh@5d)$~iJ$xe%%wm2Piy5{sU@+49cX^o6QHX_#8S^tw&$OJ`V_{{{ zWC>&`VOeCQWL04GWX)n7VFgCYvR@F2^h9C08qtDSt&iQhrE*PQggw zmBP9rzoL&~HR%4d{ql}l706$O>YD&wlGst&3Z zYFKKjYH@1w*SM~EUu(HecK!DC%1q;5pq7*%IecTum`Akxs$c%`wYDXsZPbMofJ zn?5(&wWzf$v`TMb-_p31errctM*E5OoDQ!}fX<*UtFF85TRmz$YrU%5M7IrY7wBW^ zYwBm}9~!6_q!{cNDj3Eat{Yu8dTO*{EMXjFyksJ3^2lVtRMhm5>7tpa*<-UMb8+)% z^N$vnEn+P;Eafc|E%&TctTL>=TWeb9+2Gjd+mzXo+FIE*+R@v&+x6O?w-2zNbP#fQ z;;`;`#WCFp=A`RX>P!w6m<|^RpSWMXWaMSRv z2)>Afhgc779}Y%}N4|VS^2qbi%wwg;#Zkzp;Hd2152+n9^s= z&mKNIj5Uva7bg{$7f%}>6urQ>TZdf6cJXn0$HdW#cRUSFbW@Gb6I#SuR;i**e)hInp_$x$L>gc@%je zuc6m2ub1EGzZuNGl3!mSP>@@ArZB#UtSGn`R_sx{USeJ{S*lgqTc%i6UoKo;RKZb^ zQOQslS9P)~q8hK-zxsQPXU$HneeK6Ov$~o3+x4RjHyZ{T)f&5+t~9ka%QiQ(NVe3p zindn16?$9NCeT*W&evYt!P`;P$=g}f#n)Bb&EH+xBiK{kE7DutC*D`rFWuifpfJ$> zPWfH$p!(qZA)TSg_r~uRhpmScen^=(JCQfZH(50$J=HON zeR_1pXl7;BY4&i=f1Y4Idg1iKt3~d`$|c#Qo@MRjxfT1BFCPO|Nmk=Ov3)9BlUVCm zzqvlQ;kfaAGjxk;D`T5yyM9M?=fkee?w7sbeX9MJp9Ma*9B3Xad~rL(K8*Q#_G|gK zE8oVx+kF52TW-Pu(h}sayhPf>)WF5s8Hr9B1OBTY1_cCRTmso^+OImh6bKU70rd}^ zEXlV2_G>1lCXObyKvfM36E_Q6GoZh%v4yjRoh{PB7M;EQGSeTN|35tZ zlJi&2>}=u=@=745oxO*ng_*fCQo+{Q#L?COEs=rs(dam$WpuK0bhdD@xqt-8ydVTQ znO@>P5(#!f8l-s>-@k9MKoE8m1bvP8{{2hx_wQeUEigtQsMh8CD0CUZ#lptH#=^zH z!NJ4B#V0&PL`XnDNK1Z_MezSzzSlz}IGFC3?idgw1S5gLNnqa_A!@LJzyN9F zZzhHzFfrg*pp6PtgSOwAAQ%P$j``o3MxYZIVDCTzCjq}-P#~RmyX2LbM!gQ<0vkaP z3yhNmw$|AAeoabX?RGKkhUpAb4aMTQz3FcA7RSz;?tI(0+7z29x?fV!u{Dr#?f=LCrpd8GCm=N<0rWwlw4LpR(z*VSGi0QsXq^9Lf#JNJ;wtDOEIYe>_uEErEWaTE+LaoK-1Q7i01sf&@AzBFYGFBt=!ehY7)|zxU-|Nbenc- z4J9vQX?dS-1kzM`Wicc-l&^^Hub~noVjviEE$D@)WkJ-6?#IN@Ey~fY>@+4^7&CU8 z9>>%>)LJE@`|rX)SSHGq#U6D-5Kn=tMel&w`ykqVZ56>vSElmUGfojMvw7?JnQMBU zlSi`v5ObLg&von2G##qE=&e=QvDQ=~;=bDL;%=T1>Z@ICokx<@Q2w%F<5MY}1dymR_c*2mTY1YTtmg0`&sxUy)0;0Fronl>7dGmb zjV^}wm#@c(c;#_91-fj~t%J$;k7-fN9q(4gbJ1*=QRrXg!txD}i5j9_N5xR{m%24A z28yDNakmzO4=5&-)x|p#$V&h*~Lx^deAy z;RMkO+yaB>GX5@*CSEx2?4A2hG(EQ_pdT1?9!yy-IM_Pi5iWs%a3L^n3Gm;2G}^{U zsD=Kez{6cK%hxfVKvi-YaXBYOQGej!%)JlR;aMo(@c6Xdxnj_uryV zn*J)-iSp_Nnq9&i$@yh}M0k&F8Q)XmPLEq0g|l$qG?W)amk!_N8bYEV`V^N6>FI4h z9p<@lnA*A5#Y>W^kPv-^~V z$o%^IDHA~^WloCo6CllHS^op)_Xqp6%ej{Vz*2C*+RS`*>?Hc+?N`Bxy5v3jYT9zo zOZZ*<5@1&lDDkTm4PoMc7VX!us>jeiZyP3dpSt$X=3h^+$60~4cQ7wKEvsr|1uoWNMI{m=Z5TFj5@ zNSF&n2Ma#U;_LsyK`@;w$rBctT#IV4^&HwZ{6olJXh+bIG6WxeDo0vhJXW9MsO$`U zR`TqxtO3(@ct2aZG6(jv+lm*z++a78jsDLH2$~s*+KA=%sO9Jz$XqevnEci9cj!nb zj^%3=5qIJ{Pke{Y>l;)JJ+8LhYv0Mu;nfy?6={6jh0r@|NJP}}+`}If;5<%wc3H1? z(Bt=`VCf~WM>$b%K%=cAotZL1sGkl0yo_o$R9LF zOpC&3b?86n|9A$s&eVy38j%axUO_{vWPyDM)UT$$L*DD#BE?-|yFOy2yIFxYTr<{i zHKYV|xdz*NIZJET@jlw78=s15=&{fi)@Raxsjw^&lG zoMhct4A!K-8vY4jcQg7BaWpr(MvJzcDzLX)7panfu{}gWjLuG8mYD~v@4CRU!x;9l zgD>!D64<&a{zxZ*u2ni(^j-RY(Ime(>!xH-fJ5N@e1zwKY6taK%Rd0vR@&O;PR{;b zVBgl$k zsTvYJV@cSgB!Fbu+B2i0ZKpQ>q82nC>U*80vM0u6&M9GsxoPpieZiTbx7CX~i+|z# z1K{M(cUkS4`jD=4V|D`_UlAZlWv1YmUp#nbY?Y0;5`E36{ylB$!ypJkLQoKh>rjNA zwRUHj=vXqSI4+o1fR-kiUpPJJ90%G*)4w(Fy`LL-PN%urlJ_`ef6o#16Z0Q;s)Lgs zT^hu`nX=Qf(Az!(hJ|n-xV~q9+rUI(&-Ph}A#SGRG}%qfJ_8s7U@id+@6Qa$96bGc z&e)UZi133e-5jjti6UPowi3yAeA%+%3Z!rEJ*Sh66Miu^9xhs>sTe+Mo=W6ely=`u z)~Ai$rmM2ts6fJNSmGb@{H(xvxB_wYFVCb}0WJe>IB$WQZ4DN_vFRI91~#c{{z*Z^4@uX|gk0XG=NR>+ z%jcgP+?#0_SnAHc7~#eClj}e4n2J989zyjYFkC-I&lKM3GiRQ4RaTC}I#9$gHfEeCGJfa5WzXSzuOY^>y+fG` zk!eq^{YD&iYH`Vvymfo&x4OT9R3p4EKixHI8)9GpEhKC)Fwz7n;92%=9H*;%vFr5B=E{Fzsa99#|zQ7lg{&9(G;{Ym72eHQFr zF%mg=RmfD;dwztzW5O`(>Xe0>iC#$8zcc#n8Me@O^8Avr7dMk;g4d;|GvP1uwwEuJ zFS1Wp1zElnM*W5gK+N+Vr8YztB_Q};D+(GRM7@yj-AB)XKau|zPuO@GRvy%s+5JGA zQ6zr&vj@)Aim`?MKZ4oMrvH3LMqR~u;ORmC@C@1UmJ_C275stY6}jur_;B10M&Uj& zu9>{t^PkE5trp=ix2kzxbkV6RbXRxbmiby3uA-K>`TVcyU0l93(wk2*H7GUS&WYQw$2B*cz%-DTxyP8;Ae+NPk}aUHNt@-FWFU z8$x6BTm;0hvz()cvUoTSo_)nHgCLRlrM@ORN|mQ6EPyWxU_>6#3X1Sy`3@!ecB%HF z2`k-xK*3+KeT1a3woXWPc zQpv9|9f3kKB!f!>JmgNVNB>|4_5Oe7!~ixP9eX$CZr>t#Hl4d8Vw$zQ7aV-B)?Hsc zPbh@LfCOvG1g2U3dFBDFYW7dO}MeY9AuN{V14#I1aJO@fXJyl86=SL(<8K z?aF~qQ)5~z4dtW2rUl?3ah*%jt2NFnt5Vd0$Ny3&8=AJ!>m{542^dI#&t$+2#1GH~ z00e}?BlOh@)B+ILsjJSs((W!#F(TLunj^i7UddtDSEvPYtO|Nwh@D%`Ty*{~e9%pl z4b9s?x){VtIKJqGV7)cZis0u5yc!8N3g0Emi8p<&8t)!Tusuh)Z3bi_Clt9?)gMFE28K@^%b<`G6hRb%jVA z)&A=b2D$qO{}c(d=}3b}*hr8_FxViS1)P33H}x}58uO2$)IUgIToS)N82XHUPl(co zkJhdIjr!!nqb7uarszU5eiad#yN5o000Rf|5^|=Txa^acmj)#RPmcHa*H?*SxDMma8|`d>DGLIik4tx;m{&Z9a*HPX5O0caSo* zWm^Iwj**f;y9av6h>rm)kIo>_-T)_~s|d;W8iq^! zD~r}`paPKIKSkn5Cq?EUBp5pQk7&puy3>`k`v!r6Ki7*tv@uZ8htOLTKpO{O`W<=m z#Tz}_Y>`X9=Rkk3!#c;>x-9{CfRlXC3m6O#PmzCwkOy_ZcxWPo@n5u>AM84ypv&io z$jqG>fX{L=gO~*&AUFtKaG@Ov;f%3Xiht7tqP*9-Z9)p{1V$fmoFqe03b+zMz&nnE z2ZiN$b(Ya!8w5M?a<98-lqu*~6ck$FBj3HaUb3|C`_}3YJ-|aFy<7?+1#KzN)&Cek zPi}MtngTds*x~K{=n1k-ypwBcn=bO*`aj0**bT5%gs3xjSaafm8UCf96_EfsLkNH% zA*Fg0<3SXJGlL2VkpFuQboXv^2ehFeA}Y_%`?=F1s{j**o&=yBV0eCGeYIjjSo<#w zAP5V&=|c>M6cH#OHG~7>^gjY(Kxjn|Jd;o|6C6D&S z^i{g=bX-KQ*7bnOe<>Km9%2uG3P<6Fi33`g@XDM(#?0x_>JM5v+X=Q9!hqA8YBa*@@N(H_Rhw zm-FZpS46chSm>?ps|AbAv!5i;!m#FfZ!Fmrx4FATx7{lR^8I_kqFxo}_rN;MN5x)#l7mCZ+Dl{fDi4IYwozIZUPaieyZ;X?j+(&{`?8IFr?1gaXsod` z>gTdfjQexak^$G3Y7WrINPQ%mi2{A#0ZJp1we%`YJOh$)*RiaRo+^-5`B=w4j7p{^;a zq5kNX+xp`t!hS$?t=pA&ri=`UCI||4=vRTP%9}NE6tDAM|6IHw2+06K794m`ifpx5 zdgWKy!%2Y5=#fekx#;1?x!Sx(x1tc(2kMfgcIa+OwMCy#aWf4Y^O}{@hoJdzs)Wjw zdb+`-?x9PiTnET#*=m`xeF8y%4`I9;A?xi3c6wqo_ zcGtuihkK!)(S=sHEZ$D&vwM*{xejoRA7SsODIvX7%Y(d#qdA4A=~$5^O7Ou`U%6O$ zhgvwaLIQ#=S&Y8QgWPVCh1`PHbJIf|W~IlT27V!&A32QBX2R$9^u_4Og)mq> zT>V@bcC&VATVPa+@4gUFnmg-eUO_iuDGPLQqJFS5uQW@7P?y^)>*-@X5@r^N@9XAD zU@!L7A9BOqj7C`NJ&==t&4?=t<>C4UWE%|OM=d0j=o}br!vtMy)Q1)Vz1@adhdQ&* z^+1qA+i0o{)r>NK9-D24@fA zH+n~lSL*r9bN&7R?9~g6K_Y3v*I-;vN9bvb^ekWO8BUcAzI*toGEz99ppe_{afGO5 zcg!$KXv!_Th?>jWdBFw7^=70h6o~u}6(EGk^5$}-adQWByCyR4vAKh*uC}_%=cx(0 zolV{?EA+?a56-%^SBU#%Fb&1g?qsouOZ<`_Bf^-=Naa%Z$jO^P{^Mx!Q-1v2Ozj=} z`;{mNP7-o`BJ7*FOZ!k9*Wg5I_qHDrO!iZWdBWb4F{97o#lkO&TIbwM($ZO;-OlX{ zP1ydNk2(CIa>-%BH(hD}&})5oAy8*|_?6wMB$834+l*s}Sn()p*O}2%DI~zaSaSFS zXqoAY*LThPd(^Txax%*g*Vn?!1=Vz8JD!TJaLbm&ze(1ssAeHtK`4jWTs=s;{t}oP zCmx@#H#^m`LWqIx_#KvvwnN8sZr@gMARX$j$P6LSkr{LJiH&EB)CUO&oAC2jhex7B zJXqnb@A!2n_rMr2dZ&`I@O^$2VKMUfR4O?Sqes2#OaXKiidiBXRq3vbyBEiurTq#$ z`TELacSWZ#K2wC z?Y_n5pgz3q`^_xJ^(z^5ldE~DYwoZV8L3J*pBj&V<*Nb;zA{bITYGrflRNX(4bQ+1 z4}}132==GG)SB<~J+;vK9DeHJ%a%+PI91GcyKWJi0tG&=bITJk4y*R6!KdBH262;7 zR^28$OrX+jF4y@nU#&d3)3#HQ0sgtN7f)Y3HP>|dr{`_)m<8)8RlC#iIXQ2Fk0RQ$ zEOTo_glDR&WvgurG(g^=JgXw0e8}f9#pU}=wpuBQaPFb<`b(^rONXqj3lsfTk*1n)|GVM%CZaJZdQ?i=tU!E-oqu} z>880F@dh>&E{-maA0u@?{=*Grv=%1Ze?&EgrcS&q8t?U( zrGl^mv_}ACyi2z$)9Og?8lyEs7i?`F9k)EQg?FRd{aYGV1rED#W$@6?4fG}w%j_0-=t-}yV4MCz!{UVA15kQgjux z5K5DMe>C_yTdTk^8!QJ6kJ0mE_l5Dq;A z%U*MYs7tRhkp$CgdLNRID@(6=jV5`}=h2{eZU&W@vA1{?i&J}k45-uj8+ zl+Hc!AvC6%`5cUH+##(egW=?r(1#;8YvSJYKyUzug$N|5vgy!+rI@*TR$l=P#|f4zz6 zc={eue<&MWEL%+^f&Od);k`#V=0n6IGz->jRdkMYT*y9DBotnlIbV>+IC9ruH0+b` z`^VU6KU@Fn{WOQDIP(!kLDiP0AWSmz!A{4dZqXwNbtD4|*eTY0KJc44-Jc#bd zZGDF%9~%b)WB)G-Hu#K{6~tT&7&Za}>?Mv141!~jAV|rOoZJ$`466E!T$k*>kAQ&$ zqlyXdEj%5_Ea1=LNa26RLj4<)g*bb%a{| z(JPVbntv{ivVW&!?U&Hz(5<>pILfoEmZUsiY|?hOk<-M_T5l0Qxvx3Gj=eBRJ=&B_ zAd~b;%YL8hC;4Go%QcwUcwc`>lK(>^`*pu#0z?)&d$E^l-+<5NvEk+~d^Q6eg(&WZ zva=2M22H6(V9`pE3F1qU7G@s2OFF!y)#5~>$cfN*ykI{&^pc0M$G?M3fHs|l+kNA8U{M)Ra%sG(A60{w~X zr5ycNrDPMYMGao<4Zb9WO2xA z_S2eQ;#41L=8MwDshzz!)sFCIaR;{QU?X-^ql{52@HcQ|w_m@j>CdY4B%{xaCxSO# z{gAOo&F=+`pe$>+e&iHx8(9%{;oJoaS*%o;EI$!8##hEZr{O?bUYINex%FcG`U9ru zqp|BDeiC@roUOhu?74uh$l~6CNOQiazgm1I(@$f}-IXE}VKA36C8s6QBDmd!QvVjN zq^x?*8)nW{+xOD|Z@N(hgdf7V(maw+KCV|q>(v!{5$CQ*BV*{cmBMOlhlpC(3raYr zAccSj*Eo?}A$1K8JapqlQYwZbpJS*By%>p>DBXN+N3Z0pIUeWhR5RIA{*v_PI)o2+ z0zx~9vlDch`$A!qv>~)2JQ!1pgZI`uO;2CsyM@Qe3)JS1K=jHU@TMJtDb_p-h| z>^Y?#3Brl#J}lC@_|QfFOm#=C&F2iH?(QY0-B>3D}0)xI`Q-%*-tI z$I8Wao%;^q$y~mzLL{Mf|2~ZnXC))fP^el$n1$fShLV6MuOc!+xC+5Q`?bDlP^cPT z+=_i0OCo>BbrPZaW>1y(FP&_uk^u9B1-6q+jfz6NL!fDk`VxDL>$XK0Qzw+2fb^e| z0)N-CyuYHb8cibqm3qL-w1DU&+cE)}?rj>utWBTf9iXV@JnEV_`PAj!bbsmyiWyB~ ze+?BmkE{Y7Rrgo2vgJ!y)#onDniLRz3u8#VBz>MW)INEI=GAl#>r8Z)7=4(9_=!P- z&5cLl!%S{Lz;`u*`FnF%=VCj==s8p0&st@Qhy>)lrOf(De_eAP=*gJGguIzWoGr&_ z^&~uby^F_IoAdL56{hY~hu^8kugEHSlMcCu16%s7r}Nfx-Em5v>zhmF-7ky>Zr*R5 zT5^vis5=jfY08xMF_Vn$QctklWc?d6qI=?UWpAOZuRLyIxLxHzd8ACEbyqFu zwK-RpUgN!;)LCYuG9%7~)Iu18c zEfpJV%CULiD4ulRtf)C#qw_`Kvx#}C4_^mc6U$ib!#LKH&G(+tfABswhY*+S+3G^- z>471=sWz|8>4OD<-ZJZkxuxurZVDyl_oRpPXfcNAjYYmlrXJg)KHu4Q6$u73%tOW2 zSloL>Z7rHh*3%}+Rc=Ksw_Gx}G9Y(eX0Iz|@M_pew+yMX)Q@emZPN?Fu=y@lTO5dX zT@lDmh{cp&;vX!u&CSjz;X7Sz-5fcWAEAuWP=0JXNcUJtHa5% z&#HNuj;T9jCC;4pG4hj~!BVkB+}whZ?qBzMmrr4~LDa=`ijhLnHAnWoMK} zxTOxu**>FIy=XG`qqSNy(Y^MVCJvYh3FzLg< zNQiwQBipNrMK|7H=UIJfRNeLLB}k@mLz_j8IwA7Y_OotEpG8IC&6^_xa`JEv)`vsA z7&o>g2iZS7=KFNPXf8=cl3c`n^yLC7e%iy@g>2l5S-a}Y_;{1Qh5ShPC7EeVo}d)x zC+n&QS1JfE$zVl==8@y27ccfYEe7S?3t8zqGu#wZBotwywpvfuPvfSr>8@e39n?*Z z_mGWOr)PGaq}Dvs%62i~?OI*{J>bbi<#uWw|U^^Q+#3XxAs_0_qa zx`&678!<`CDq2DPk?+>mBd&O1JdV|_wYu{7CQVBUSCPSmGyWQ+^*B5P3cAyjY!g>r zTu+fJPC}$NO^=z22+OEsfb~)SO@oB&w7=x_W<^VHk;?ES zP|%2hNxAX^HDCV-K1xuKE!7MY*lBpOjGbB0;h$M)+FMxnQUzBeT4rlS($dD?2!?J)x~_Yw#9bi6L3p zo-I_SmBor1@RnwLD#J28w}7xAXT5WRIX1JsDjF|kWwT8}HJF~LgawUom&7!y!&I)n z#OW9?WvgmwdCT{s8`V!wQc0y*E6ORG~xT2LFLC6k`Oc*Ubq$SP1eEO%$BC*j})DjWGa zxZbe=T=nO14g9IGFeiD+1z8 z>cXL9K={mv5>va$X`*SSl`u=u14xlXBpa99ro4Na>*I_9u2<9Z2eQ3yBU`;@#dSjJ z40#Rj2fxuc*K{+BBy)X;1?A>eeR;3(qPeX4gSqP&*N7h`t-G9YxuIRP$$m(N#A#Jm zn8GHGLkeAVfd@_)P2}8SRSaScAA0DQ>qh;AV#3>YRZ~8QH3}?CUKetgdu6{&e(7gM zEIf6ROtH#yaYzz9;9uLn{M=b!D1iWn7f~oGAAf-}3tc77Np|wnwc2Bgr8nGR<6I?o{F*8h)#RK| znMNESIlZSW`@xO}FFk*4{idr$+X%h(EuGkrJ6I8>&rT|%N7^#6u4OPa&Rwv?ebwM> zHo-TJ`FEoCD<%4_8)58^rpTn(BaG9Vu{V~Ph-F#Nk)%3DF|tV$L!Mbv($_n}&su5F zXpm{(+>|un)v-+4$>0YE)^ zQh7siW8XVl*qsn8V3@|ca?P{}^%Jbv@awK3#gY@l7B}`SW|PPBEX7Y08^~9Izu{r! zDQT4(KG;pwoYPNrHgzy>@;ttb@(8rf@W0VRU(e2m|fQxkF`{ zg7?a5PZnHmizEk}@DyGHbj5OwY8TJQ>vmM~AG%kP@8V=9~+>k$h)lX~ao z9i>yR1qDk~)b`q)?63<9_apaSD#1QEYTY;PPu%Va+Z&D6{NU>E#jSK;9AO&TYidyW zp*ZZT!B?IfrV`Y#{8yB;Gt7BH*dMy~Kiyt7s-ln|cc>j=UTeo7D{%=iRj9cd`LXZW zQ{^jMZ_OtLPxmYKdAZPa^LAF!_VrIQ4rf@2<_|Y9_CLO(Vf{Qx5P3)Iv_p*tqsboY z+6vLaBfEZPFP?ru>>WR&cW87xLE`0~_i}l>4kWB**+lmA)L5 zECvS_ujEUA>0}9(yX~fW?&fIDwQtY$4>yk#h_8=W7N!RZ7%}8E8~(al4Eg+*;+-T$ z_!F5f66FzL55|S*K7whv(CtNQ=-J8&t)xFH(>K9Zs8KHVdB*aUTdqL4|4E$ZE&g>w zlbK1A@V&r$D~d)(ey!uP^E{R_e`7^_X|S{4$mA9yuCpOqOXd@`;pbcNEQ>ARHZPMc z3?x_G2+a?9Xq)Q7BBPg z;Klw6A9HU~#r8ky+&dnH1#yvkD=*Mqb9F9^t#)8Bek`e{Xef}9nt{g;Urnm7{@%zc z*q_~hSsQ9gyLewWZOf(1`rg7Tj;`0=o~4`g_p#g-%n`gWntwDHkvxcj9sR6wplINB zU-Y@T0($+(RjI!9`>$T*zZtn9%R;U%%gTr|+c=ujS41rr-6}@?*w;t@>m|XGd-wY= zuh2M~7Ot+CO&m*?L)30|(oI|T+v{(!j=|#DERUQT9!T{fr3U;rqG$;tjlibY0B9LR zcFuVZS8r+T zgpX(1+0*vMrr#lAW_J)C*_D)@gsb?y1?$z1g_!smt_Mvfq+=rmKuZk1xY2 z!zw*je}bfio+l1tc)fgP{_H<=MrTK_l)Ma9qr1*hQ}0ov{Nl<$=N;fZDj*QDp|{Ua=GUew`VSA7x~VZr+powR3Jd|5F)m^_`EGY*DL z2Y$o8U#hppZ#OkC5kcOq_-d-GiI4$b+K+D_PQ(Noqu!(PW3+>oOO9~)@b0GRSKiCC zv+s$`srkYV>iNmvlii}}&TrABR#&2@+5Zm7gOz7MweWR%Rqnf(@d)-%w?S`%7Vy91 zguq_q5YW<6WMf?bmx;5IL#^R|xGd`oNeV56IA>5zsNbUNuQ(gfqyophqU}=77p)f& zgC5AqBWG#7MPxje0ADNg*Ic2nGex|{mw0;0SE+XWp>mgD&(b7cmKvlS={|bun;Ds;cQTk{cYIbAdk# z7l+lIEpW002T%?;SNrbyeLMX?tXL8pAo(N zRkuDE8S9Hh8U+|TZoXofzkGw)Lc>CqBFgRT!cwGm*ZqW}_Vq0IV zpA3;7;#gEX5_^?R@C5}=DkO`sL^;L>Yh>w|%CsuG|Bboja57Y@44jMT(?_BXWWuS? zCuhfspX)qliWNSJBjU?S?4zEtV2D0wp{G5NWyQ2I2_y~)DS9t^VIt^kMHbF?NLw3W zXdxFUdkS$&c06Tan!a^KkJf9PazqW~37Ap{SWlf^nO3wOBf;nQ{*92C{mew;G*PCX zV?ZKa9c8TARPX&dipVF#1-{JlpR%PsjW~|!*qpFos}*H}ZHLfuhN<>Xi;N8g((gu= zzx`Mp=h$<7$|j4rqMA9Nvks@gHJcyzWAz6kQ-JY}d7((k{Pjq)wfXLCo5s`X{#rF; z4@6feD~dnzlSfwX7SNREP@E>c?4|*murk!Vn$8nkRV>W?e5{Yl%{!ddb-2hsnUXSL zG%P-#GaIAoo3vr)FrTp1W8|A*2kfFOXmw+R!}Y33egX&I^|>>mp3#&S56 z>M*hgr7VaZn3cX~lD|K`$v|QGz^yg1q=|Sfk>%MI4PT|e-bTIoYt_)F#Vsc;7kif- zO77gmjN6zw<-$alZ+wbUE8RPz+PnEvmdt(jZ+08*4j)jiZHz5Yzi9JQP&oi3+O*-!~#VSSe3pC(LadPX@^&-^n)(NYGQGSO69TWDcS5A7r zrCT8b`z@%0aV6tJME?u{_n57H^B324uT_8i^cEXeZi|hZ9FB8t+18I*X=X)tHERdQ zd5eb?eJ_}{oL!rfoEgo=Qn*#`w@Q%dA8kjuD)D!-yj`nl zf5Rp_%WyuWTuH}I+gPUF{!JZC&Zs~fEBFIRHmQ5mCrh~bW=`1ESht9^#(jqfci&H0 zCzhR=WEF|h!QLPZe}C_Rl==XEJcoU`AC;QJ**>i0L_r}ouZsP<5!P?V4Z!^R#-e8Q z47dq!?8c5ur^(`H1zf&E!m1Q)@b8eX5_f}w6l3|7^ix+kVsx2}&b^Nv<@*l#92jFg z^1uC(=foqJa>Nz}jbmE>TE$hHkR5H_j`AYvQOvVn7Rab<{KLw_su#DM_PQwJe82G1 z5KR)s+!XKXy1ufHz2t8ll+UuTkLzt;q7)Urb9kcVgz1do-st|>2yZUos$wFaNd9lQ z2UFm@s@Z8azh>Qx>~xzde>=(d#rcs8Jp|UH!a#D7v7=btsp1ZBMtvdMpK?m zL8;4Tk-t*JE%DLT-EyS}cf@jUGq*xhH!Jtu5O{VO@y`(mt>yTmCQPu?!_ugsc8vJCDu!y0ABVj_sNXle~z1N7qo&yA%6q z^Fx*{O@b9!lm!mrw-ioW1!EYuI3biCPjpzEaQk$_hjd zXVZhJm|e9rY_szt;_YOeGF|vgvc<}Y3xE~i^dkmC}xXcI{OXm z!=V8B4PnJgw>s&XR`A)!25+B}nNc{j9OqKBUAEtT+}bBlcK18<{7zTR0($L;%mD&l z<`nQ}wZ9w$mcJ+*-gySxc>nJZSXgr}opA}^K<*V8P}s6A$sfMHLKjvaES#{mu%Dw_x`Tn@o1WtueU@Ys0IiS}At`Mt8s zSFgGEiC=hj_zFAhXkc`(G8F_np)w^3iepMFZ=2^IS`?8ApjTf9j1f|vNg@W^U@{_e z(e!Y4+_m|}8T~MZQ?7y{7N?@G9`q5M6%Ui%#s796ytI>b3<(;1-C{eR??EktG}m=S z`{~OK+`dy9EW>517OoHMze8Ey?7pfzD4}$~QJxGWJMiyhBersi7}%V#Tn}(l9P#TnY3{E-vMne4RnI0tb`z^1(9UYg zzEti_*KZ0B8o8<8ZCGuX3HqiD-qAg;BXg2(8s8Ie^Q_-<3|ZZG`0yQa2xvM%E4gM< zLy$25ax->xZU){!!r}1$N7+}vMYXj5FTM04-AhSIH%pfi($dlh(v3=&G)O2&cPJ?+ zBGTO@jg%8kCNkhfqpd zot{_2lt_kwPxHt84A{9x5~+vm#BqeIMS;kIEyOPlJXsAqcnjhoGEiJ|!4)$f*1gGq zDIfCaa80a~fsCa!+DiTGX=Ij^9u^O(IZI8P9b~d9d1gdm+p+Uwa}AL>xK+c9rjy`N zhEzxkMsVHn-gU)LA_JY9GKzG(*N|T{$yuP0X+)P2Y?86eeik*+gd}&Xgv7ADv&sf$ zUEFz;LF3S`kW@?=JdDa;auiXdCuF#Nzy!-!0uLQL*P_kHG{Q?EKnJb~)KPPYmYoN= zO?2=C|EVHHM)NWxDTiBnaR-+roZgh*;im@fTEE3?V!4S`K5fIo zk0*w4-v@u#KqkLPttv< zt?h`Ztsk&yw(-`fumd-0Rpf`*`h>-77Z=5$>{P2=sM$fX8}`?)OzBykT=pr?E}C7X zKi<}v|IP!KH#NvXU!Dt%D|u|K)(S)_D}Q`pRH;1XivB(kO?97ITsB6{+z3>nH4|0i zIFO*CT4V*DIEih{=nSrM3zk>PbfcSjC5e5;qVTL?{PaO=Mog)XB6t>y)ZF0_2^My` zjksKw4r8u_mIDrpF!ij_lwpYDRK}gLN}CeEpvCbYdS^Te1|Frg#!e|t^C~pO6j5N6 zn8bXTugppo1Bboo_Z1nYFS}mRJxK!3uCW;2e`TK#)Ars{^3xU_Y4`nIHP$>0QRe6G zSoj6hRmUkwo-O-*OS=fJjMjK_Ev_i#Sc`&Bj5go{&(iYS0#A|;)SE(Q=*OQ=@Vmy9 z?yuT;P^w08)ETQxO#0Y1S<-%5i1w*SIsS%`Y%e-yJ#<}g^|fflLKS|p*Ak6W()oK> zSWNx!{fjhqcw?%yz=MSlh*sfmQFNo&GrPJJR&0of;qJEnFyArUPpRbeKw_H4Q#~x+T&=CvWHG*DGSMS1{H@*rR^Y zRR}!(b?jV-aaE-e9Dzs|t|n0U#M(OCFi#l%vct0)mP4t>^BuH3;i8XGa6O{4$Oa9Y z`*o@VxA_U~I~du3I#Ksg7*?`C@jHb>L1}$)j?QQ?Pn#-=^nLx{Z?{H9ynLR;r}&*GHp*|_1hTQeOL|Jf;z>a3+)RhJzOi#pl}B zaa+03@5fcF3Dhi43kQQ2Iu?+4*?{VR1D@#$aj>G4?d26d(GgDs!c_sj zXY{nV3P<+AlV{J-P?32yGVV(dBzN^zxLH5LE_phFPN?w~H+5)Lk<4`L;E~v#5FN3W zzE3SgQH)^v<2T~um(ulqPpte%$M}}*PSmRWdj<88*CgTf_~&$%4^*rClq_-X+hHyV z()K=67&{1iPSj;iJQuFLATp7aKW%(R%N5Bdto-77r$^z6CGLH`@>j1vp3@gU+T_VQ zEX@$3Tos*J0M8mPQEEq>@cOCO-VCk%sC6R-R@fjGJ=!xK&;RH+hDwl@UBB1&)umQ} z+uLcoK5z9|m3KNSrUSL0v zICp(aj+vY3V;x*sJrJ_QHYx5$zscwPY9UsAg{fQ#M?77neFMt6JKZhI__;znBT{nv z6ji2z9Lq~Qk;2G^$i8{TFYq3*pFSGZBX&mq6WU?>V1v~f!MH8^VG9Aatn6uw&bJQs z#T`?!nDO61%XYHz7;Ea0+*WQbSj?|53l9X%FVry0fG2A?s2};%@VL`QKYGrz?hpwY z++S52?qYGt)RP^Lf18FIGq|K^@g0=k-RAv`Gx|*fRZeFI;ntR`pk(VM!{i=K=#y@} z?;s|@!Om>ZH%lD}{8nh}b{4R}GdvFiv8qM+!J(R|tB?Hq@#`-sA^1YQes@Q2vKPx~ z)m3N3w$sPF?<``8P9Al2!*;7J=*$0PE>v4<%*>hi>{eg?>Zt3w2nj)og3`K(dwTut zANk#tF<&}qvdEpBEF}afSUBTH-sYapEom>wrpB~#dXaVvwgJ~p*shA-rrb@71k>`7 z3!?C;Ytu(gR){_JGgzNXmVM>T<51au&`9I75&8kU6p}=2_*TuDa^-Yx9Yt4ew}uRUnkPmXPMidUbf zomhX+M|t1QEe69>Ui-qa!2j{SG4U=LFZpJQISbSrbmT9rTW9`E;$MGjt5_vrv3gCCms1 zD*CeT4*U3EfRt3VW8}h<29ttbPzAW@0b@V{?#X2KOOwrs(Xs{wb1eCafEt7{Y* zQ~u=Z-Y8i%>RbLeZAc`KmJ(6(P$H(W)r7I-b+9mH=A5iMu)gR%w;w@7i{{s6#PT2^ z!07}SuIT2THt5NXvbxqzLXw*aLgTEoDo=bJ6Somk^p0qTj%GMsnGHRhA}XKakf;>6 z9Sf|-K{b&7gp61})dX$^?k{~2Gcd}H0}YVnIbIK>8u+{}@s4}Xy~z$?ekrz;ej!3R zRn?IT$7ku;I{fO!LgFRB3LuOSQO3S6l#YOhTT0y&8KPn4 z>~bxTo;N`H$xrIGVct(4Ve_(`D}Y(AoG|l{mkYWknKv1T3B7FG6(dz|^4k=xa4 z0Hr@+HRypz6bpOlleGE`fL)P=?XiTQwD+LCw0gev;)@cjEwR_nai3jP>j27#y~}UM z0xNro8;jC2`ZBv%6J};LB7JA9vzux0zNfmb4ucZ2MZ(@ofW7QJ<|Icw3)>8Yk_zK& zN>Kg5%|YDwyXYN&tkaQOu6NOU->|SvEA1Lk)AwR+_XeOmdexNc$C7K_v|0;Jpj1y6b;Eompz?73wCf1_ApC$^a`VAB;IWpblwcj z7T$^%9N{bVF1axYyfvd|{`g+KUZd}9zI~k3)z$4R{1&aJ zwalts7R*;TcC&o6`VD*LolEqJz^>#Mi-Ak*FI?;2?e>18NhW8}D$#Xo|IFN)kaOGa zO-NpcmpV+%!^6r^cTeE0v59ISu2&M8uh;AQ{!iX{xANAq1%0FpDtm0jk$hajl7%rw zF;_nO^%Y}9J1gwsxM&$WU{8%uF~l~7sr^{aTD<&%@Tomy*suT0_uEcd=X1R*J@X_@} zp7RDDFB5_onkz|Q4;-qFx6a&}#2nsgh&FeJm#%Lse9q9b^mPsOfU@~`F|Slb*uZwp9jf>^{n?&yccY9cebhVt?`CMd^wkld-WerVBA(us{AZi8`r~{x|~?Cd=^^ z&yz_ekE6Vuj}2!@vNpYa>sDINEB&e=+ARaRkJZT9>(aS*Bic$|$i^ygOH^x%yq&nH zfA8G389EF3R7(3Takpxa8xIA4{i4#3fvARDmu=PPMY3zTHmiq@;XyNT7Mh1w!`yl> zSq)B6dt+%GQb8WFj%?$NQ`5GbVHWqQ#Bbp)XQp9Kqq&}82i_Y)ClkfRd&+|y(awQt zT>^hx6$wz2}XeAG=uArASv_NW3Bk1RCMC)ke}_%x>??+#>qs(UGK6Q-mdqjZKo!Mm}t2dyV4J-5@KNpVg6?N!u4@%7gH`o%ZOS z50`S~rSlrMyJpcH1)J=HYHG~UWBv6h(k%RXy>;bLsj|B7LjhF+obHWiWU1V^K^8o# zDETs)c!7aR9@rzEP7%_rZKz(Ph!n0T{yH*tXSj8AB%DIzLU3was8^cKL#wqs?;3H< z4*f?et@XeK=)x0cGh3TpUv5){Wl6Nn&*=Pq5xtL8$uR0LUzL+Gcl!%NB)L8k5Y14N6`sJxfFflOW{TN znD|SXHlQz?((ZWSYk_Ysat)xN^K1F@kSmYdSt!IIXWzpr$WslL|Dc9d9~|na{&J{~ ztS;SjkR!s>w&y&mF;%_%=btnCq*Ul>*2$BLBzSowSojVw7Wz06R3 zwU1=*GF;2?Ez3_Otu6#pmL9WFxI#*u0>33xkod25_~6ICzJrNfnn~zc&!3q#WtLc^TYgkd+H5<= z@aV9mv}8O&>DtdByd5Y)GcPzFWuxOSkqV+vA)$sgh$&tsa~RfwFyMAkGDPZ~ApyDBn*3UE z%{$Ci0wbS>i&72))3%x_0iH!6JljHKQ)wr>k?)`aHIi*aYgXbQdj+&6<{K2qm>2PtLVmW+N0 z<4&?K^pg5CD3DmIYb#GSj2{(AQ7V*%d2fe>f*>R=NE(AF$zB{OfKRF!lzJ0%$7r5w zLusCx0ZNe5L-#|z_rjnSe+s+!S)W-nL6#HbYf>d|fS>Wuzs7rO_d@_9*9p6gXEvDi zLXRq``DH7_xrZeN=NdHr&10MIpwYPJp4kCKd%A+iv$yA_tk8*!B;^<-Hr)@x>1E9W z>9Im2J)S9DH>TIj`jE7im#^-Pl^|(po8z7ngMuV4m2Z&MZUmcM40M$%MsvW6Z>qHf z9cWkbIA0Ha%Fc^M#@h1D3W{clJNg|||K{<{Zd4mr8?AnIKHv9HKxUjpdBL}23*1`E zQSo$)ScxvK0s3u+O`poDWZz|;tu!J9^|5WJ zy<}{xT{my~PMC?)gX8Cy18vwK7ZXM-C+-o*2w`*ShP|<#BZQ?I-)xn9{$?JJsvlIA zGfH|`93aYSYQBhz&5;_Uq#|wnx<6)?m zNB%O56zCzFURc#W7sgK5!rnt=);+~;NCMie`V?WL=jgbL2N|KSGwlkipCV^xCLo=I*A*08h&-5FlTKGT+>CaUDG2=tc3!L~Ox4$Ar==k(eD=Ep|7 zF(JXZ8C-{?y5AfrO@U8@kKu26qh|XfNJe_%3I&9bTM!s+x4(o>>B9{pNIK571mA>~ z@U_DpVFbhJ1!{XbaEYD{Pb(v7+!mFQ-FcG*s7DZNb3}{b^ZDuKJ6!TbX7W>!6zVIt z%OMSyn3~iI!ykUUXk2smiK`Dq1&b;J@mPY0$5-_b8!?Kx3xn4oKT@;S$KmcD}cf z60h4~;_#qI5nn4U1j(gv)RRQY8HFDQrDa_V+kt9QiLQ;AXG1rLvQ3#i0XH+)1cN;> zCP%yNm9o2Yr6VfHr9fP`c8?2VDbV3XA!JD;3NNKIse4B-h48%(b*9yu*TJe@L4DsI z*>d8w*hOLlzpo^j`ed8E6fZ1T$*TUYjBa<}X_Exx%bOP2TYO;Y4vnb{yLfuSH1TU_ z2aYTx84Q*1h}xbmMNb(=BOxWnIlMjv)02Wid>8n}V4FfNRx+Q5$nq1cg?Lm z5pxw6>B*b}Z^q`*kUd5YHxoscuKxaE^i%+WidZ^XwTmc9aHYX=;L?1=nuB8ii#0GZ zDe}euZ>467pHxqNX*;%gNR09*<>oXhYp_=^na5Gwa-eP76ih5Jk|tzPuwF!1=2LSb zCQEu^<7?5Fb=%-MAJLpw<8zbNLSTFx6rYr7;FcqO?IaEL^iU2D<(No<>GDNeq{Y2W z+Hux<&#`EzMh*nUzU)MOA&kv>>B2*Fn=r$^lDa`8&&3jla(In&JA?i((Nk2#%cY={ zX7aH|>1pCCGe5a>Xakpcu#p(CgD2LphnmxP`V`h3g{>5Nqr^tx`>>Utmcs@t$1HGg zogrweW29=OjgtL2Zf1@N-g8bIny@K`LLqr6k*;71MSqe;QcF@l7*pPcyGY9`Cs*fL zY7HbL6+5%K85^;Q7H)SHP9LU$>~GAQ!G)h3RriL4U1EJav5nL@xChQz>{2&wi?k#{ zw2{mhq>yg3)nw^wYX;#dF4j#9%QQ~W6o2iy{-1;c6G97DN_tYQ_r6YR3l^37iri8nt z#x<2^O{mS)!gC>Yg68ni>m1@p4$TZQQ>BtSC*x?^C#}fRF7nCdUws7Bak%U7)T6>q zc#P*)N`dDK%n;jgC`!owQjeq&Uz;l*a&${O%sBZA{T(|Mef$tOzg}7emXMxpdGZpD z$dnX1@FP+zvnVqC@C5gzI#u)CB(s|;kQ7qcd?i+q;jS-B*E>+Jw37}QTlueFi;Ny_QH)bJt%1GK{=_qX3 zIa}WFfm`A;&43br=Uq z#)wj!4+fc#4C`ZhOZsZZCo^%kkv|9Uu1aC|$2G=}EQKJ2>wgE8BCE(!c8@~JY(V@) zUn5*k#csm)IPl(V$R4}~c96GI+I04ty>Xqi>4w6J|sBBcB$&=wod&mrp0zr?y zWIg?DAt^Lc(plL^DH;TFw|GsYSe*m#I3M!GiBw9_Qn)KZ!-qd5 zFvZiW23=1a$>IshT#k)lrjRMxM%DAKLX8g|An1P51ESZyo-k%yG4q9MH=4;h5Jcvk znj(YDKH80>Ps6KIvhbx{Ca}rm^@?p7{RQWh{ zlz1etx=A8tw|S$`v3SC~FC#bs6THeSvtfMGIzH@x{F}P8IWac#N0!8t(`xFWV_2#f z)X4m9IQk3vyY_IYbLdzn)AYboF3AuBX2@cT?R>zw7PH3NGG4>15P1S&D#^hMOO#=C zxxi|C_fMa=%LAP+y`3IoccaS*Iw=;m^HVaRfMDQyiid7e~5zO|S#}YXY2$&Br2)?vn=Ll=44#I{|g&r4xrM{8+ee~m$lhL3O#l@yi zrF=@}cj?Dz3#Q;MvBVjY02_&APLBVgHc4k9ul zvOLN?_znt?dF7_&8NptEj!Z1_7JYEI`CUAw*sW`{E?#KNIm*vVIj>rz?KH!YwxyryU38JYu4{d}PzRCuVUS>taBE=3($bl}lUoQvH38}6rY#XHr{DRqn(WK$g_iVnFINmbHr2USHm=hk5IW?tOb&TBf zyJ(b0p@p(D>u@KtZ3(7>$hBOE={Pos(({J1lwHy22NUnB!&HjQM2if`cL{MI$DnT8 z=w)*?{GUf16en0_=sIq$7 zx5)YydiQJUQx=iQ>-tDL0eIMRiUIcMy@3%pL0*D#*UZ_A#C@C>Yj&DV?U>o;U4c2bZElVvS@PK5*thg^3^Ny6jlWw4b?y+d<^!;aa4 zb{@>cp=Xnsr^#K{xL8kO-)W?oG&JsVm}5d-+94Owa#1H$=@!7(i#sGe!@da7z9lWE zM>Yd(!I92L*+Q1VI>TB%F*0F~T6OU$=Sq5@SdZ>hA0z|jkfpqFrV(YzWJXTS@%(tR z=2c$@cGF_rchKN#zH4+?s$K2%{xplqD7l{%CSHJfti@LFHH=51Oa)P@38Ij(HgIee z+NW~7=?N3)W!$)|-@O9mHgiZ{BesBTC45j`IipCnan9A*OoSA7S)w^|6)n6_9lmW*?s$d^p6qCN?B-8I#B z?Y2-Dg;Cskzq4<(;w6}{Dylb7=q_>5p zOXo~Gx+q!D?5`Yf`3$L!s5q$&EWw49!cZwYc*t&*sjdi>d6bPpL>_^qe!!~2VAlw* z{j8Th(zW zhDY0rUED9lr=ryfV)dtN_szxjA=3-J(T?C&Tn!xNw@}N60Vv%xNmb_7jPvy|1Gb5C z?+dq)S?QAs$TW!rC(R^v)mG*|`EDKLn8T2cHmO^mV{|NOp?ZQJeC%^L3=jsZIrnN4 zaNm^fCWd+|&5&jYzOL^*w4-ftfg;I(umk;lobkf6HcR^D!9R&z+v+BXmVGnZkiBeSwNc{qvU+YfY!am^e4jl&t7Ry z2i>AFm1&coXvKW+#$j(d797x zn@wyBzSy+Gt6uOT{c2Ki?qYm!Je$?V8$|J`hPF4QHOI>v zP)>mYn*0u8sGYUTx$qT~xJ~^uHWhUuuO+tSBGKYS=C)JkDhQH_YL2w6b040qRuv5N zTBQu_D>%o30`aDdPi2}LFCF5N17E)M2?!&|Fm=b-ZiRu7RZx=g*Hut00-778YpX#W zz5|s_q@gMVQ_wGuZakX-eFCcmus^}gq+s_m$-@pMchX={!0g994G5_eqy?!Uzdo`P z`UdSsit`*m>ki=24rE&fB{=KB-%Q%*A>?P3A5nWSdZ&@lZzo~PII7kv5B0WjB#;W2 zW@Tls^5pE8dPiywoCC=Z?f&;Uw2Z$jITJVQ5*W$55V!yF@1mkO8>bi)kS4|5ddrd} zzTQ=2oaa;+=W>4}n3Hnuh9J#HyE{`ymcmBbhEi###N3Le!5Lexr&pDbD*I~f9-}-c zo>;uAHJytb=$K?nGh9WJGk=ZBqY~P}wu0hDa_9Abf4zpk?_7gC#a-o$5Y2)5tF;Z_m| z9fScn|GytN%PSMLA0RmJ9VN7Rf3KMCWcmExP4Ton43i=5WUeqYm;~4Q#=V$-{;@Tye%1gEKpFsxc za0H^=)?0~wNCI7Hwt_=1=$hmYetR?MhCBeHg z4j#v7SK_Z){sFQ_FO9MLI|7i#fp_Vxxq^PEgU8*+!QF-{`8S$BPvHvk_PGvhysUj2pUcX}8Yn)e$!49<)Lg0f3K|1CX)R#9tzUqWuqo{caibIN?7}|ADX}6o^XI@U@xX#Sn-8 zCMcRKXQ0Xx&h@iU!DKR;h9F+0-8dL|F0Oo zLXhbDgZ`fhc$?BAM|A$b>Dl&2j9(#${1)kdqePri0Vex9a&G{j8tj)XajOBc|LJor zZy>$kin1*LQ0)-@!w7A7DE|{Xyz15t_vou04iuoej;j!#{fY4UujA1FEl)F+$ajz% z5aVjQFbM#nk1`t(d=kneH4tX2K02&Xt0L;)`tC#%gbg&jMo6RkQC$l zj|lM193|lizO$>=UEP8T`MTd1x8KLPa3%%1>bUTF|6%CA0>1w;GQ}+oTug2O3|BD@ z^jw?_Lo_c=KLPE1Y{=J`{l6H}WS0YE8i+yr9Rvp4|O0jw1P_Lhe> z9K-|d)w2;F5FT;;;qpfE=)YkwLbT3?z~NA7#qXeVDA3u>B08^LwV(QbjXR3^ZxHA4 zh(MsD4@5(l15keG%Co;_tb1VPs2^~hb^o-&kDM+oX*BUhct|8F#Oph#^(qu9TTtEINXMICB>TSjibvoz_pFm=Wx#R ze}w?mHbA6jcR9dNX$=4GpvoVk7^0=&opL`pn*9y}e$ohQ2orbxr+NN~1V$2{fFru@ zN~B;^YQVRM-m4t{e7~6s7@`#y{4b?|z$NNR@%bn3j~p;m;K;BAmAdh3GddXJg77UO z)DHoS-m5X1*7y7^5bF7tU;b4J5Hz4`-XG!HzMsAYwnYuvPX-!W@WK!dn9<|t>o(x+ zvE6@#07{V{0$0A}p#S09$^c|cHQ3ik#3&8eW)d*-K>#v)#lK0YrocfcUjtB`96OSJuk8B!<3>aew#+~<66uFCK>_5o>ka_h0Z41#vkiodV2oF0o zRAL7GXt8@djB9OFZvRmP00KS`!SS=XLkW(q-21ha9t^k@DB}+5`fvOI*?u2h9URfz zf!;4j4)@-t{O99pbbV`U!((x){d-S6>#4}!tlQU0v-(d z5%4f*1p=WvKKK=IedqM@4ImJP#CsE@v)#tC-Qq+w*bySp=xl-@Lwvdlu0jFfS|Wrs z#2bDT$ZaMe5^9ZSK$HwM?q(qY+pb+40kcp*&287-SfA6ZUl>F9QV4T=y^3~fRaD5~ z*#H72csKqEqvkjZX7y374wf%@t2MHit zyN`ev+r63~`5T|EBfD)SpT_|ZfY7{S8|V9rKKm^tXS+UsK90%dgQ zEKC4J!Ggu^%Hru+2E5`5VhCqp3AVp9D6&g^0cbP?i*C9C8j$@tu>FX1G9VKb6%|o5 z=~p{6)c7uo^!O(NY<35>e`U^mCj`Px@^D6OgZ(an0L zZsF$u1?AcKewV}k5I?Yp_6nm#;xrtP!e@Vo@@N%-ak_tn0S&^0Du9MNSauxar8L`t zXlR#3y0R7RE&>SnocJT1!3hT^{f@g}`=5aw!3WOZ2!!vT-NxgUNU)hUAPgpB80Hc( z|1PH+0wMru0l|s!^CFt)WZ_3}zP|)YudI1Qiy$~!xC8>V=oOBq^ABkfpeJdFSwTlJ z$`t`A7*P|@cXX?P`Z%h4?`!f6!B%z~Pq&P^5%~auFJj)_3bX{wL4;8dc6pK_qli}I zbIFCE;0C0=g5VxPOaXbWCc22m)4W?@5KfJ=j=+({|W^x z$)zU%Uj9Y`cBB5aPY(#OBo_j_365Bk>tg!j4RFK`J&oNUQ+BOm{^8x^g1%>5g*7NR zhfm%oig5QgRXKN+u5M~(bJAaTZ+vG>5ZFU|obnWWp|rW+`b9X_F@jVxk+J=)Z;JIj zx`%2HxZ{Rvo{vj^2Wg4QseG%TScc~6vd9}*eFvpVT7FApQGUj0qH2RqzRmFHx~o~L zKWEFt?B-K?9?Ya~PaaS!5`y~M&lBgAzk?bEAn*CexqB|26?}^{HzT8BSh?0h8{^vX z`P&z-vV?~=cT=NN?&(GI&2=7(ioZOl@_yWF364lGH)<>$L+yYT`zWoKu;A5D^#@X8 zT&S!Q@Qt%ZgqSUjY%|<=C2#Ax+P7AGZGkZ9gQnCx^3=yJ2Rsaw=npiia!-Sy8Eo)@c5}1o6lAiLAXlM z%c$<1d_Vg559+eo@K=jBeu$fDQChU@ob`Od`yK&&I5;()A^SV1B!m9CCpM~pT3C%T z>0RA+y+SJ)UHq7*&}(-3dmQAuU2QRBBIFT95(2Re745pl^0jPgq#B$)Ci zUiCOBcR^kk+}gX5;nWmq4$)f>WjYQi)_cpJFCj0qM-*#?zU*z+S_cf(an}Oi(%z{V zoLa5<_shS7Xleqx0!T(cvsrw?_yachaSja>B;OkPP?`-m^+a{zSt{agwu(Y8mya({>pam+Il=)<+ixA!)?kMX9+a-iw`Bo8$lGPFD&JGs8iM(=R41Fv(G2q ztV}e2!$q;dGOwU?J0_u^1eA>H?YO;H5?eAaC6)J1(l?m+O@UKSAJ>RM|4#M%#=FD% zuT4}pN;Geytv#66HhB-HKK|yKMe|Cj-e+e-v9Z^io@Bg)U!;+3qWQHpUQ)FYCC0Py=bDhwNFM_ymWOK-DtMcZ8`v?^t}~sEJzJiO7!o`J`w&8j^Y`U~E@XRUV)$#%0?ezeS)z zU}C`LPjn-!WW2Wjt>-FqL0rdXCNi9=fv_SfN3@;wy>ML+#~Pu6`P2ExMG6=v^f>Pk z>H|?J-MYw+p?7R6@%n?gmPux(VzVP*ViE!$9;Q$?TNAXGzWx@Y!Y8>-d_?S4b0e?4 zKt6KzcsXS(v?uoz{8A-v#n9PmRT*6f+9Y8sa^Qzc8B$*$ajV@z2a)X%sOVI&EvD@v*(=^{ z)DM?`7}^q25R%;T)dm+X} zyWl&Bz~PN4Sz|XaM7;F(PB)S3Bb}Vst-#_^TL@*}fOZdtGS!py z0@RPBsL94~6!Q(`D}sYl!yDGkSuv5DRWA0u+_t)k;|F5 zWG4WFI^VuueGJKfzufffSkcr3GVnHeL8*V}(K*f%_0txa@px9+}_|@_lnEO zEsYlMP}qmraS_cpy}Vz3mRu$>8oFO`wEV)Ji!gyaE-a;~o;>A{yocp>IL95#v22^M zXil-PG-zaB`)#^>#}!F|5+SS0HomC*$ZjtPT2;lkOe$vodem7?>SKp3Z#yN`G@&D# z7o$m!AF@O7+?KHn??gDSbxP&g5x)mf$S-$h4Vu~{RH&m7Mvi5MaqWazQ%_L9(geV2 zCxn-B{`4-SG;UnuE=`K2DGbB4P$O^0iPN{YQKgvETkcLV}q8~!@7H%59S z%ZD$W_`=9kc@4|ll>F@GIh%!^P|OQ6@pb|@X;kdk>*s!(H+L*!O;;|$(h2!4Wm66H z#>Qx_l=L!M6ERNVe5*FCHhm$xN|}>O`st4TbeQ#h()=SW@P;XOYVf*v2qnI$<1THC zjhFL7SK4_uNoe{6gk7s(z2joIzpaMYeDp&1ne>dT04oJcMa z2l3e{f2%jh+*D~owyyaOdh+&-QF#c9qHFj!s@Gmisn0{##m8Gk19xCweAg?)-e<|S z<-6Lv1tMgt#30l=Sxywr$>1);nEaVwyz&UcBQu#ti)IvSw0Vp{7H1xxI zSsC{1h@DUX#!iaGeV00r_!f!&W6>R>x2~&d-)i(s)whY-o4MhD6UZ21xZJVtt7lo) z_;|ibs6bsdOMRZ+ne=7my|B~kRrx!s#~uYuuF^MO3bG$NymvHu&uOCm`2z9cF4Ld0 z7|@SBZGNA{0B;uMRQ-5o7qOKMWZHCFHg&ydv84;R-5WgZgdUMVU)f@jx?bSlT-p@5 z&x@){IDD@#JoT(`Df?^ur_ASmI8@5a(}*zZxf7oXH=F;)PBJ9SXRp>^3FC!;sWw!a4-L5Lsl z%Uep=ADh`P^Vc2MmVJOfb!O%`Op>?UmiCn*@z%LsgYwC!5x09;AUx{9+Ls3~_8Vo% z$4B@sY_OQDfj|0`~r+fl( zc-NDwx~)k$RW~&Uc9s^kDbzXcEOd2{^c%XDMPDbUj4?BK-+8uV8Ypk8c|uBfLDDA)(_jGPE>>CYh zPHWa{-bADBM(*d6>}lu6P`m8vcxy#Fs(S~$#IjKAMNX8jl<7$fS|#KtX44v!W;db%bbKS=94mElzhD&*G0IG zp|4$T!RZti-qX`5Qg)r%`_4ri{+W1vB?L0F{$#`?M(@~_rlREXW(v0HHFwJl4#CJV zPdgtvM>aH~S)A-Sq`j~^weV0=uYUOui&euwP(QtoZpl@Gvk6Iir%cVI>vrIpoQTVP zihReAx4;Iue1@b#5)D%6QM)S`*5*VB!FK!vdX&aytk>^KhIDj-W=QCByTU$;_tM59 zseBrw`x>_w)yLZxGQ9WVaT8&t>32|&OH)Dvqqb6oQ-#}^+PY*7P1RlOQ`rsIDDjRC z=NRYy>d3RKQKTKyoXZF4x?tokFTS%fuORN|3+N36XZkz!(<=#Rr?W=l_T|G!_-9QL zpKoPOxcHc}d+Mqxk6@otVrqN(z1B5`2KZ*N0cFb%S<(r~`fFI9<<>t>;uVyvWUik! z7EmyxI?rF?8!qD9ST8TP3j?ocQ*|BK9~rVc%R2?Kwr%LDy2rTTEIa~f(KxDqvAR#% zzRDKS4XdKWpyjQ9QCQ&a8Z8#PBq{fefYt_fFQ*UdHbh1wa{Q$BgR#zg%p?Y1hrwnX zTbq;Kjq=ikOWEo`k2*hJ4_zI{GQW4&G+!3wb6+^A-;I#DB(^iw`Cw@GFy7iao6N|O zK+ip>4?pDG9qYr+L9wX|eA6I#%vh&-^&$*@L(zbb5olvdACx7(g*jm(-AVSUy!8)cab?d7E#<&lpMDask%)EBr<1YN{~ z&J7Ui7*=s4;qS`3pOq+-`-v+7_0K<=d3Sj*Df7@A#Bw44$oo3^boQpW$DPeKnrxr? zd4owE`SL217#n|l-A2IxJQK0I&X&Jm4<7)#$OM>k^n5Es-i`*cd``e z>T<^JAz!R!5jdRum9mh@U028Bc9+bx)NUPx!-z*&E2K$bvJj(d!K(ppgCrg()mDv|rx%OsK#~bq5!zivWI0cfMzhJD>ICJTNJmT6iqxxLR@I4lP z(B0y-1)aOkua9oc>(KEkx{T1Me*0ipV!T+xgjo=_MS)p(FuQ+QcDGk`Tt7D@Xyic+0?%UIAAqeHgo^dn~Ul<%N{3Jc|D z&3r0;9Du!SDs0?XR5^^7Lt43ngqcNM!>p)k$ZotIyr*&s$jNW*Fit_Es6s*UZum0s zR81AcQ;_~pjL|(A=YBnVX?D)*{4oCVtas7<3ZCKZzosXo}!wgK< zk-{<~$>Zs(1H1Tym7Z0W9`WTX^>=QpW25E>E;u-;_J^C_n^>)qtllsxtO!fx@4K|= zpDm?;QJ9XflsNSOM|X658ow};z{EapyC?mbnlzE+XhgzwUY?|H>iUAZGAL{Fnjf5Z zT5?w_i%qcv#W9|y`VWw&-5-~hxAkyuY4Wlxc7M^FNB{8FF&{avTp4f3H|L8&Ub81c zbaGf;+Uw3$hL5V&TkM6S9+6~<@_q+B=M(JEmZ6)n^Aqj;?rD<*kmT4BPfy+F5u>0CB5q?m6MOCMWu*B`A3+deyA!znn! zp~lu<>rHNOQbsB1GI;Vt-13~7kJ0I~hu$vbJYn`a>c?>U8g}Z9(#(id&x!foQgH&Z z>sA{jngw=_(=U_o9dNn{^rco((-}IG)`81>N$UcYvrv2tJ`NS@nyRy8q}tmcti2b^ zbIfG$E!y=0rR1gmSJsz+L)nFYKQo3Ij4{?m4aO2cZj(K3J<8fWO{3x=R*jElw9)LGZ=xu((oeJPq1x~~AU z`&qot(yr6&6B{lMGhH*Zoxq9Jx?PZIsmP`i9A$cD6WeOd>RM{}KY)Ie#m9b|cBSLS zVgZe*(1W!)&T5m4VLU-~O+P>P4JxtMpWRzW!bY8N9L36;xtzNvq?X@O?+mb!Q!Lkp zRN;77TA$z_fD42GTC$G0PMTB7yn4=;^W*XJDfmNX&W;wU6~VwaG2bGR1$PP-1m=R` zUOAhGT6OSe^RThkIpqVN&$g#*ZFz}B>^I9PMgJr}%uzZ(%N-TiP|%dj0MnDXr$6 z9=O3K8CNN^qEcdWkA;g`=#T{HR@<*&Le5YeFNfAISkblSPp|hs=n?b87OSx|^72m^ zSPb&a7V`rM#t8izT3RZl3sOZ`E+0@X9GNBCQ+cYdsy~a?J*d?{X=Hawq|6gr+fS+M zW+^m-g#MQvrQrK~a`;Mi<;C1&jXS#yrEMivD7g;U^QxNKSc;anREb1O%(B--JNaRQ!IKeV6^x>coI$jn|`!> z?Dbln<-6m;SfjkNlk3iSY$w&v^c~y}*~GTIxaMPpPTeECNEW>>b%8JXZD-)w&Ft z9ll7eB<8kU=7nP%Zhn!DkLKorovcGL{sXz`t@`ROO_ef>-wQ>@((}&rXZ0*5>o$4S zvS1GDv6g^TobQT`P$Xro70BY?)W(;>m$glRmsPx=TJ?Af95iKN(DISO7D-ZF((D7&-0FS&CM^c}$6^ zxbLzo-0fFN7wQDT4f|CnO+_|kjrtPsux2NtLudN#)7p=dvCykM9{3VwA3bpEKI(S2 zQLXTb3*C#x$a8ca>mRtpxe<@?D|vh0?~nHm#MadE{Mi<72Hb_AtA=^TYLAIxGCjpz{9;#=^Khpz{|=sV zx=tY^^GIUuar0Gij}TAc0c4l_{cN-1$JQ?uvcf$b$=PAXN;dZfB%2lR8lA|qdF26P zfg0&(a~SBTcxL5z&70>Y8%7U)gR~;d_(IMf1n1jmCMFqY;Z>WyGr!o(9O=}CF+Qzw z?j3NWAOdaoiRe!z`(J?Y(K`|*a(z|fIK0a$GC{T_Kfw8NzXgDKW?rN!+M(n)fTkySDa1H&%F?6*D>_gyce zClu@G&v#c_oYDwGp2}=e1?Q(8CKK5BU0Z2kDGh<@hm|sc$^5HEdH2FZL8if9Bkxw_ zj4mG+$!?gAs#h5+OGYN3)aB^R_Ex9wXOpUNaCaD*0Npli2i%Z*OU)JAk?`5ZQB=1q z$vyd{VSrs$n1`MMQ%U9}|2XO)E!(8RPA%Zlw>|y!*r?|vugBu78ZA-%hH9v%-|xfL zqtOY{Md{ETa&$>EZ5c?mX$lCn^u-d(6_=RcJ<-uByn`1%&qjRXhi&u;*!^WMA*+AS zp3;*)+=eJ18_SjxHdXYOa(klwFFY=owwDfkn4AJtIJi;dD9-~ zHoU;xI^<#n^(=h9nk!-=ioHa+(-L&sc6*e?n-J8&(u^8}rNpR7nls`d;0W2jcSjZAPZ zGW4i>kJY&vllMP!G%Gd@yZNlRi zkP+Jvqt3K8e@Zw^`ZnS2muAZqT2|u``w7vP_eOqpk2%JFk3VZBQoc0%O+y4>#F;H9 zvX_L{N1OESSXXI6qnC|yv?SoeHSsHH z$b~f`V#GI}#RT-PB6iwKWr1;S*ks{(SW^K{NH8Pg@mG>GFE>1;J1xi`6Aj%9pv$Y( zUEEKzTl|}WNJ9kHO2*C})3@xxqP*L+{8@QcQ|-f#J!9_WOT4CDOpbDhspp91i?@E# zEfpd?Fb^~_X|LUlA>@dvE12^UQ}FVt%S^_rIL8wYoBqBjO<8~8gJiCMT`o)1%gAMu z8rnl$DvZ|rLFZZWcAIUgm!UkMHhThJ05es+SG#mM?dJA2WE%s~a`9_N8?=g`K{WKj z2-ci%&b_vS2h=ZoWGtJi5i1a-&tP=OB{JHk3b5MbATjnil=`e14a-z*3-xi0OeYGe zZ-b~@T(&HgyirLC^HMyAsIXF$6=9&)w3E|2ZurEIkBzw{ZyrePRvz@enRIa{@HLXB za!C2@+Wd0At>-4a3wEk*0~%`%3Q6_rn<&R=#JvP~(}y*i;g$FoGSVx{ss3yt^a{)- z|IXG^Db6x7O!Qk(MAmGjoa5zYMwidYZx%TDjFFE)63U`8E1MIG;{E|-4H^7S{c-f| z9OKZh&s@f>uQ3M+uXf1$0a-1l>Asr1Y5Id>7|-*g%M{JDt(OixcfyF!-4djDSaoFf zR?Et~eS|8fRwqtL1NVK?>)BTyTZzJ5i6(UtvF8!dHGPKTvvZq9@rE}ZGcB55{>4m{ zVV3|zn8UI|dMGUQp?zCeUWxAVo@!oT8a+&8qiJ~))=C#@6!HXLk`Z{n$hloLsoDK= z)l@sr|C%!kA)RV~-J|j%DPDJ0hE)#9iDg~RL{b>iv;Kx;5dtTT{q$&_xMd^gD$>oG zm|VmQ=#SG}wU39=x3%uKvQSOx35Yp*$b5Ii#&X`;&c+AleOgr+8v3Ck#D9RAXM$6% zRI5b%rZml;8_UnV$5f7?Dj!Qfe*ugt;M6?H$K{V)V=#Rv^tTQpSXvPk62VDBg&v>- zklCxsyvJ#mde4XEY<2wy_-pjlTmmfnTIR(_@08YOzO%g$G_))mwx0^Y(s=$^F%KnW z+v%|29R8YA| ze~{lo`FZq%({lLUCUBzh8j}Z%5(=DXUI<0;8GH}!8eE9Gh_g>2F73kFYUQfL4n2_O zYTrBZV%A5&crRmi;ur>rty|Ii^rswxHxE+2iP$h1gk z{D9ToiT(DgoMaP6%2;iFCsj;P@!UW;rC`f?wR)(O5@IM)`*0lVQCli*6Re< z@=d8rZJ>YcGNuszu*JL5L}ck!%H^Am5q%`#!N3=JJIOjPZLnj}J`;8GPkzxJ0`U4< zt&Wk5A^;I*%4a&ScrA0`l3NRo)bb*S*IUobqF#GmI~H9iXvd*W#A~Wt+~#rpRvh6d zhH^S<6ekPWzZ>mK0BUYRL6YD2`F;c=**E`*98&)_)NKo;v1m8$DydWBH^815L0Yq# z!(wW>$awvu$Lo*M25Cc7B0kEX1EJA4LtNyRrnvz|!>4>~7epqX-<1oMyNcNFb#>NK zu1x_ov2nO6V5zR!cs0s`T7P)vdAHT|gt5@*^Cd(%nXOP3&+MY(sf6-e;YB?OKTx}41{Lpu8rj#!t9!Y#ZIMxN~quO>@bDlt= zcs5lYy+X!|7F_cg`$(K2MKA@==`CpuGaSLEO*`@Q0n&E(_W$akZ= z=9~NXv;6r2+Q{sQ2RWy$m_aN!xI^Gf*o8~H8rrZ0z&Q}s5Xw4SU)ftl8;pLGUa)uH zh=5HTRn!z`MXSLlkv$f-i>D#PdZi|jg0@W>5O^ldhHk@U@vE;@Jth-HDfvi4M+D?# zQ9gFB{?@majp(1P)!%)~zPzgy9%>1Aw|?-LLe?2!wmL?E0NaH|(!U%xSA3_OIAQn* zTf9>EW345^D7N~B{J4J__e8%jV&VDhA0 z2;ddeO)u!AAsLyhts5Ld*@kUaHk+>UPu&qO}B7X zDk&>)YW&<{!S*}tc~2 z*JLv%W-n29l*~7d^|>M0G`ngy%4lkXJ|3o!6)+>3=WlXFYa5+%31FUJv`*;yWz6d8 z2dXv)VLvv`)Gza~`@ozCJ6|UCW(Imx$T(DakPbK;J)vXm$!e<#0-!R4*aUgBm}W6L zGqw3>DwHH#<%}>X2Izy`=FVVl+7=7eet(^p&7g#Mzb0nC$Y~pgbm$3{(12l%0vuAX z`7P`bWGM= z;Z_B8i!50oImY4ou~E!9n^9ezgYIo2Y+VmSzGz8! zPs(NV5YOVyQQD^{$KW|U?B4`fn2epm61JrOmy4(Bh&RnP{dNL|3V}PidEVWnpF}#7 z>$h=@?)Kog>Vz_V&{;fnFqDyVm9E~*UgI%(#aJiOhBvze5E0hXKe-s18Q!V z^01S>Ir}Jv0H*Tdwop152vX0OGjKm#Fcp1s#IVprCeFgnu$b>${W34i(*C?xLebHt zypY3CGWG@57z;CeEqkbTD0U7|&`Jb?fjB2n3cO0zP9L@FjhSJ~e=hFazP9B#sdGN- z99cmt+xl$Wa~?JdjF2S9)x`6ZdmAuZ`O#JS{_VLOffB1y9eXuq{nffo$&3+#lvf%Q z{NVCnGdv5+l!1zj3x6vLRE?sx?%OaOsUNxda@lfe zvvV+nCF17#&5s}Pj`gftWoxk@amhUFIm&(Dly4dAar6Edy#5s@ZR1nbXM7gNk(4(? z%w~(7YNk|MwYO-ui~zwi!KZp@w@LyIO84FLvV)9#b-};F_lotLR50gB2sLikOPm`7 z9^lJbzoLhYowPbIjsx~Dg9>np){LX`^S)WQRV$wGTVxZ3%Q+SnWgUvY zdc?zJ9RhGK=amGx=|4X3;)i2JYiNTOI7%7DK}ADPd4wTW)J#x1fUUfz(lkWl`JyS> z^hCSMEp%JxmF;PM>W8lry`u*_Ksjz)QYVD3@b)tDFzV^eJrSkT|COhTIHvfjjx1ph% z{oYe!P~G-!JB4(7NwrRB^b@r3;!i<;|yoUB43u;vq{Vtsv;a^1KFz|-rmbx6uJa` z6~-b|$Bn3XJ&W$vD!Kp@d9~1i z+HUWk%-1qA9WNyP+k-^}B=1NxR$W9B zf+t_jG=Vn|JHPl%`h9)mN!%Bi=a0-Z9xsLaGRDeHGz(5|DH0jo2fB3Nh^x>1#{Q6| zPyBR21a31o9Vp_8?A2zeSLZJ$4$*Lr}?sKG4(cy zmlNYp-CIw^I}!i^q;YXyZxzG{G1ld0^q9MBo!ELc@F50oiJz(eBU<3&{BmU8@I|PC z8)%5+>zBtt416RBN%m$f;A^j##k#j#cH;k5-=1nwQ|&|Z0&%cfwI4K%WptG99=eiG z^iY%6BI+IIw1-qO%|LEbCrNke)bbv%FTyr#6z4vO-y2JCar&7Zxw{`k?iyT*Z}aaX z$!lJE71*tTbh1WL=&CX_kW~K)AU4)Bp~RFg;+vm_a3Wqg0?sW~(|J|Vr>86$F#@pB z&bG+5)4x67I!{e4NR{4q%r;O)z>f!Urk<6?Ju%w3+PEkILQYS4;<1=A!MEzKj_cP! z@(Ei)o7{n8u-IMk!=Q9=rf9#V6xHq9+q0Xd?m$bme~9RMd}0zN0+s(+C#kS zw`?;2O5L9}1~<4-eWl-4c~7Ha8`Oa_n7P(VQKo8>zdih!fD!I! z8&r)9y@`yy3=UU58Vi;Yo(1~mdb{gLGt{CHCG#-GF;w9=C>{+{ZoJdA!%^M4(K%8X zmMmLMa*!S3BWH#rTy|pS7rd6+)U3QzS1+9Z!#dSmAnysW`N1_)-eZtvH@f7+9n4+8 zLLmLX$1O?_r)h_09^MvvQ-slbv#D04dpP<=ZLoQmj4SAixun$3ghdZd_@$G4GN`4j ztmoHqf*(W>98}&6M|Zg5MN%uzqhnt;&XCxk1Vq9q{R$so_|wTOjSCM01?=ySxi0}F zb7G73K6yHjF=jBI^}97?5W0FDF~H7SgNVCx#ho6!y1d}zJnCKGY+BMNsEyXOfsu@#Ycow_*Cj2oI9a?Uf_fSTs2W zA1$YGXLDfTW;a@Li3Leh38W65q*q#R&%_5pdNU*Vh3Yg=xh#fI7ePb8DLw_^6hrSx zso{@zh)y8n9l43Eeq+D&d|UtvHg718Cdx1pL3Q{MqVizYXl7VUYx z7L&j#f{im@JNI zub~Ix9Ml30f@-fN!wrY02Xanb5RJdrc~@3@c;iebsEW_*CkpydM9@R}_p-QYO9R(9 z|6Kh`G%TIBILw{CYmSH9E0A9Ik(`>t@L$l5V&aA=4)k@DO-UvE<&Qx>VuB zHo=qOpj%wMz3u^!Qb`=`W_)}BsY0U!s zM{$QrPR?!6O=dvGP%lH|_ba{q|BHfkkNkWGnT?_lB5<60MqxQ3*%+Y5Guq9j7$A&B z7q~orHuL<|Z)Kb5#42NJoY{-)NTfzIe}AeL28B=*TeFeFD^Z09ySpX;Af2^nV0!3$ z>j|si(Mobml4K+K=g#T3SHR?-E)zY!qp2yTFDFA8_M~Faq)$iHq8a8{F6oKf=BzlmW&gq1}jNj1ElYp zovv(Uu+x#wcHj}4DWR1uE)Xs&G1{PWq?-#XDvmJ!(^=f>( zM8AfZs2|nd!EZOpqrc)*cta4%u8Cg%McR5s_tU3_>7l3@jCn{VTI4MeDUVdb2$x*~ zXA<7k?f$HnQ@OwH(9)Liu*noN4|%fSUF%0*~< zxhl!1xb$NqRd$annU28C_4$q*?4l(9IBgisS4r-!l96StyG&;FY=D2pUbwG3?AbWI zAR#aQ#cF>MT*F2s*iE3^|NOp9tIZ>>VRUosF405!rCm)tgRc*T*Eas=#vFaehW!xH zEfKNt8aF~b7}$5$>gBFn30MW_BpSPwKX8vI)+@@YzfS!n_D4#?MD4 z`L^mB-t@e2{D3qhKgI6i<*J?DE$@d3=QhP1y9Y)J?eVX03uv=WTO|*q>En4alDtZv7o)B zkowbL`Na`gkY7Zs?dpfo%TRFwwcXFw<4-rH=A{>XnumHwB4U0GSkx}>e--<*JHhd< z&3Gvkm}2nh<37~Q;Vm`+J<`xI9c%l?%``7>M8!q2+DjO^iA@}{(X}z;dcRFi7IkN? zCZ^aMY}uL7_~)^r$F1FyM|K@nPFAMXjapnU1oPoN3QzZvOjA)Cpt^?KE*bajJI(#F zo%GvKG=OI`_WC(Rs4kL}E3_5OdILk5o!|mHII$vfpP|C_()lv?CUVQ!U{kP#3{ z_?W;RQz7HTskYWd?&$DM5L}`Ju8P`LjDThXhJ>;^L0cH2BjWE{?>oCWd}V}I1UUW( z2BoZiZ2e4*T8E41dL>pGU^$x}0ja*RU!r0BOx+k?Hu%N>mtvPqx&pR?!}ueAPPV^V7_^E=(QoQ>e9HVguk0&Jr&- zAXdOPzFspa^~`=)8}m~}W8qWKnE;K)UNx$rzCnC|g0Tbiqgxt&grU8Q5Zb*yN2@w15Yn%JMq#yX5W?&Z1F?$(Q8uT{`{S2REj~+*>v`Nx_;Wx zDbV?x(L=yAn5K4lMr=Vf*a7zF!qm#ghi`P}iOZg3P_Fi&mEs?tG`zV<^hcL(xDt}` zvPqqF;T-_GOg2uuTfH0qU_yQM%cwg(N%$WY|1NZzQeB*kIR9JVMr6sd`vCE^j3>1Z z);JVQawlKmohE`zbrAPRTwz;WXOkiY3g`bO5plbN&Oec3_On{m_BP*K5lO?Ky{Z;9 zaj?x8SALavMV`;NYK2#O!PMO8#-&|UByeXdDik^k?6fV`)qruwt*)N!N8jNhpj&K? z?Z0Z7oRlP)5<2JU77g<*9~^P`d(B%D%e55#f#_ebrwH$LhRKv@quj^3V}};4D)Q|* z4BW!fa=c49;%P${>(qn1=2Zb{w!z=#CqwBahJ*qQi>AJ*r~qZ7OcvHjWlS8P6D2d` z0|OF1@AwCJA~&dm9#y$G=!Pqt-5MbN1^Ey*DYx09T(U$-hHBU+s0CxKQ-p(xF>Q)G zw|Oa-`nvs%U{tfE)+F9~r14?t*{b_R=CtC+&?1k+pP>L5CFA3}pfPirRj=|#wP=^! zCM)F$WOm_CQ>o3vzXjZ4%eOXp4Ji6+yQ1m9HuuDD{`I8rq^CN(^%VT$tyu)Fml@_( z@t7{@E#P!?tenMOL5Ywx)U^m2xwtpGP1N`%%E#&whjI$4JN!FHS%EYDL&`<>lndjM zUT++YNWWTD{i+r$$6dYXVV~xmpr`N08cK@}vjp3qeJ_=!B zDSiN&)wC0m_L8lwD4&a|!tcPqhZ%?PVWzuRvzN3@ror?+8?92s$) zmQiJ?`66$c;!@%=zR8{tgRx?+@evP;Or<)=fyYMwHO(0dRkTiJ90ld62t`Kp{4rHwx4(YMe{^der5*Dn zKog8lmrqh#0tJIU?4g#N9TPV(e9=Qo3?NhzIUL;h-5kB-OBe|60 zd@6p+Z_||tz|hv`wXKqFHoYC0m<`SN`B~{PA*ZRkZD?`#{bHT;d!>6oQQ>gvei>#8 zWLT|!#4)bE1y)8h@oe!c*jVsQ{O9i<(Ng!=79V-ajq?TP!~edhGrG~YPwrH(zC^J6 zKftSdbWxTg`v((+b3Rqj^H5p1HAwp8q*IIYNx}vCBd7*$1g46CaQ`~liqLjHw)n%O zrF`j3M8cg=y|90PX!NC_ntpd6h_e%e{ zt%@uV%ZucmFm%#RU}tJ&9ViRJeY{7V=Q_`};nQ=&tt;rQ=<9KGYwSM1`zzgZ>! zCahr4O^gmkQKu}il%5JS1VDe1Ly;?`&OeiCb>n-R>^({Mo`)AdRWPhnEHG`Mn0mvk z{{fhb(b8DK*h}c6hYOE`OSXJsOXS?`*(`!?kWrKOs0d9&;WB-(nz@KyEvJOU zu^EdmwB%nzLi)!4@G)vQJyW>ZdoFe4s37-gi5MRx_ z^t_%+@gSceiZ+MdMKI~(-rPFo=gEDS%f6cZ@6B@5sF!JY@J`W%dzN`khCqONAN5Bp z$%^B`;UP;*#gi}*6u(y;d5SV+ZXqQV67E97@h zxunGH9shoD-de(2{zN9_&#%#YQD2J(O-Q#>Bf5nDRUmKg%hw#USwg$I2j1VTAT7Qw zzU~A@@&DgXD|F2K?Gj;#6DkXg>w}x^r6QC^a1`sdDnQNo`tXI1ebZB>E-}|yOg78% z@`CWnNN?_(d^AJUZDjY-4h=TRC+*#Zqt=b@g;-gu_$M7;ye|xNqumaJ4)dR@a@(c< z`L`rp&tnaZE*2@=0?vC8YI~jPCD_EJ6WFNA`E3NPb75OetUifz^u}t`-D6R5 z1n;N^7dA&|Pd*dDA)R(h>aAIx+J?4hd!(K%Cx7ovum9i;_Ll;qlzbM|>0BZi0IizB z|5!B{)FBLbrBCs=(-*SzSCex4NLr~yPeS)l@ P-hZbh@K-PX`S^bTT*6t% literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_log_in.xml b/app/src/main/res/layout/activity_log_in.xml new file mode 100644 index 0000000..948b004 --- /dev/null +++ b/app/src/main/res/layout/activity_log_in.xml @@ -0,0 +1,85 @@ + + + + + + + + + +