From 45afa3153c0f5049f71e9f3a18e8d892fc7863d3 Mon Sep 17 00:00:00 2001 From: Abdul Mannan Date: Sun, 3 Apr 2022 17:15:23 +0500 Subject: [PATCH] Bug Fixes Bug Fixes --- .idea/misc.xml | 4 +- .../geckoManager/geckoClients.java | 24 ++++-- .../geckoManager/geckoSession.java | 8 +- .../homeController/homeController.java | 56 ++++++++++--- .../homeController/homeViewController.java | 74 +++++++++++------- .../helperManager/helperMethod.java | 31 ++++++++ .../orbotPluginManager/orbotManager.java | 6 ++ .../images/xml/ic_baseline_content_paste.xml | 10 +++ .../main/res/drawable-mdpi/splashlogoclip.png | Bin 15399 -> 10897 bytes .../res/layouts/home/layout/home_view.xml | 14 +--- .../layouts/home/layout/popup_search_view.xml | 15 ++++ .../main/res/mipmap-mdpi/splashlogoclip.png | Bin 0 -> 25989 bytes 12 files changed, 179 insertions(+), 63 deletions(-) create mode 100644 app/src/main/res/custom-xml/images/xml/ic_baseline_content_paste.xml create mode 100644 app/src/main/res/mipmap-mdpi/splashlogoclip.png diff --git a/.idea/misc.xml b/.idea/misc.xml index 2f64cc4e..ea5b2ba5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -62,8 +62,8 @@ - - + + diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java index edc54a59..a7446400 100644 --- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java +++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoClients.java @@ -69,20 +69,24 @@ public class geckoClients mSession = (geckoSession) geckoView.getSession(); } else { - if(geckoView.getSession()!=null){ - //geckoView.releaseSession(); - } mSession = new geckoSession(new geckoViewClientCallback(),mSessionID,context, geckoView); - //mSession.open(mRuntime); mSession.getSettings().setUseTrackingProtection(status.sStatusDoNotTrack); mSession.getSettings().setFullAccessibilityTree(true); mSession.getSettings().setUserAgentMode(USER_AGENT_MODE_MOBILE); mSession.getSettings().setAllowJavascript(status.sSettingJavaStatus); - //geckoView.setSession(mSession); + if(geckoView.getSession()!=null){ + geckoView.releaseSession(); + mSession.open(mRuntime); + geckoView.setSession(mSession); + onUpdateFont(); + }else if(status.sSettingIsAppStarted){ + mSession.open(mRuntime); + geckoView.setSession(mSession); + onUpdateFont(); + } } mSession.onSetInitializeFromStartup(); - //onUpdateFont(); } public void postInitRuntime(GeckoView geckoView, AppCompatActivity context){ @@ -313,8 +317,10 @@ public class geckoClients } public void onLoadFavIcon(AppCompatActivity pcontext){ - BrowserIconManager mIconManager = new BrowserIconManager(); - mIconManager.onLoadIcon(pcontext.getApplicationContext(), mRuntime); + if(mRuntime!=null){ + BrowserIconManager mIconManager = new BrowserIconManager(); + mIconManager.onLoadIcon(pcontext.getApplicationContext(), mRuntime); + } } private int getCookiesBehaviour(){ @@ -356,6 +362,7 @@ public class geckoClients } public void resetSession(){ + mSession.onStopMedia(); mSessionID = strings.GENERIC_EMPTY_STR; } @@ -371,6 +378,7 @@ public class geckoClients public void initSession(geckoSession mSession){ mSessionID = mSession.getSessionID(); + this.mSession.onStopMedia(); this.mSession = mSession; } diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java index 467d55ab..13eaeaf5 100644 --- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java +++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/geckoManager/geckoSession.java @@ -120,7 +120,7 @@ geckoSession extends GeckoSession implements MediaSession.Delegate,GeckoSession. public boolean mCloseRequested = false; public boolean mOnBackPressed = false; public SessionState mSessionState; - MediaSession.Delegate mMediaSession; + MediaSession mMediaSession = null; geckoSession(eventObserver.eventListener event,String mSessionID,AppCompatActivity mContext, GeckoView pGeckoView){ @@ -150,12 +150,14 @@ geckoSession extends GeckoSession implements MediaSession.Delegate,GeckoSession. @Override public void onActivated(@NonNull GeckoSession session, @NonNull MediaSession mediaSession) { MediaSession.Delegate.super.onActivated(session, mediaSession); + mMediaSession = mediaSession; } @Override public void onDeactivated(@NonNull GeckoSession session, @NonNull MediaSession mediaSession) { MediaSession.Delegate.super.onDeactivated(session, mediaSession); isMediaRunning = false; + mMediaSession = null; } @Override @@ -239,8 +241,8 @@ geckoSession extends GeckoSession implements MediaSession.Delegate,GeckoSession. } public void onStopMedia(){ - if(isMediaRunning){ - close(); + if(isMediaRunning && mMediaSession!=null){ + mMediaSession.stop(); } } diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java index 13e460d9..f9fb8e1f 100644 --- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java +++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeController.java @@ -5,6 +5,8 @@ import android.app.ActivityManager; import android.app.DownloadManager; import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.ComponentCallbacks2; import android.content.ComponentName; import android.content.Context; @@ -46,7 +48,6 @@ import androidx.core.widget.NestedScrollView; import androidx.fragment.app.FragmentContainerView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; - import com.applovin.mediation.ads.MaxAdView; import com.hiddenservices.onionservices.appManager.activityContextManager; import com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkSettings.bookmarkSettingController; @@ -79,7 +80,6 @@ import com.hiddenservices.onionservices.pluginManager.pluginController; import com.hiddenservices.onionservices.pluginManager.pluginEnums; import com.example.myapplication.R; import com.widget.onionservices.widgetManager.widgetController; - import org.mozilla.geckoview.ContentBlocking; import org.mozilla.geckoview.GeckoResult; import org.mozilla.geckoview.GeckoSession; @@ -96,9 +96,7 @@ import java.util.List; import java.util.Locale; import java.util.Objects; import java.util.concurrent.Callable; - import mozilla.components.support.utils.DownloadUtils; - import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION; import static androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode; @@ -181,6 +179,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba private CoordinatorLayout mCoordinatorLayout; private ImageView mImageDivider; private ImageButton mPopoupFindCopy; + private ImageButton mPopoupFindPaste; /*Redirection Objects*/ private GeckoResult mRenderedBitmap = null; @@ -197,8 +196,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba private String mSearchBarPreviousText = strings.GENERIC_EMPTY_STR; private Handler mScrollHandler = null; private Runnable mScrollRunnable = null; + private String clipboard = ""; private int mResponseRequestCode = 10112; + private boolean msearchstatuscopy = false; /*-------------------------------------------------------INITIALIZATION-------------------------------------------------------*/ @@ -509,6 +510,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba mPanicButtonLandscape = findViewById(R.id.pPanicButtonLandscape); mGenesisLogo = findViewById(R.id.pGenesisLogo); mPopoupFindCopy = findViewById(R.id.pPopoupFindCopy); + mPopoupFindPaste = findViewById(R.id.pPopoupFindPaste); mGeckoView.setSaveEnabled(false); mGeckoView.setSaveFromParentEnabled(false); @@ -998,12 +1000,25 @@ public class homeController extends AppCompatActivity implements ComponentCallba @Override public void afterTextChanged(Editable s) { - if(mSearchbar.getText().length()==0){ - mPopoupFindCopy.setEnabled(false); - mPopoupFindCopy.setAlpha(0.2f); - }else { - mPopoupFindCopy.setEnabled(true); - mPopoupFindCopy.setAlpha(1f); + if(msearchstatuscopy){ + if(mSearchbar.getText().length()==0){ + mPopoupFindCopy.setVisibility(View.GONE); + }else { + mPopoupFindCopy.setVisibility(View.VISIBLE); + mPopoupFindCopy.setAlpha(1f); + mPopoupFindCopy.setEnabled(true); + } + + if(mSearchbar.getText().toString().equals(clipboard) || clipboard.length()<=0){ + mPopoupFindPaste.setVisibility(View.GONE); + if(mPopoupFindCopy.getVisibility() == View.GONE){ + mPopoupFindCopy.setVisibility(View.VISIBLE); + mPopoupFindCopy.setEnabled(false); + mPopoupFindCopy.setAlpha(0.2f); + } + }else { + mPopoupFindPaste.setVisibility(View.VISIBLE); + } } } @@ -1020,6 +1035,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba status.sUIInteracted = true; if(!hasFocus) { + msearchstatuscopy = false; mWasEdittextChanged = false; mSearchBarWasBackButtonPressed = true; new Handler().postDelayed(() -> @@ -1043,6 +1059,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba } mSearchbar.setSelection(0); }else { + msearchstatuscopy = true; mSearchBarWasBackButtonPressed = false; if(!isFocusChanging){ if(!status.mThemeApplying){ @@ -1467,7 +1484,6 @@ public class homeController extends AppCompatActivity implements ComponentCallba mHomeViewController.onUpdateFindBar(false); mHomeViewController.onClearSelections(isKeyboardOpened); mTopBarContainer.getLayoutTransition().setDuration(0); - mSearchbar.clearFocus(); mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),false,false, true); @@ -1791,10 +1807,27 @@ public class homeController extends AppCompatActivity implements ComponentCallba public void onCopySearch(View view){ if(mSearchBarPreviousText.length()==0){ helperMethod.copyURL(mSearchbar.getText().toString(),this); + clipboard = mSearchbar.getText().toString(); }else { helperMethod.copyURL(mSearchBarPreviousText,this); + clipboard = mSearchBarPreviousText; } helperMethod.showToastMessage("copied to clipboard", this); + + if(mSearchbar.getText().toString().length()>0 || mSearchbar.getText().toString().equals(clipboard) || clipboard.length()<=0){ + mPopoupFindPaste.setVisibility(View.GONE); + }else { + mPopoupFindPaste.setVisibility(View.VISIBLE); + } + } + + public void onCopyPaste(View view){ + ClipboardManager manager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); + ClipData pasteData = manager.getPrimaryClip(); + ClipData.Item item = pasteData.getItemAt(0); + String paste = item.getText().toString(); + mSearchbar.setText(paste); + mSearchbar.selectAll(); } public void onFindNext(View view){ @@ -2329,6 +2362,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba mHomeViewController.onUpdateSearchEngineBar(false, 150); ((hintAdapter) Objects.requireNonNull(mHintListView.getAdapter())).onClearAdapter(); } + msearchstatuscopy = false; mHomeViewController.initSearchBarFocus(false, isKeyboardOpened); mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(),false,true, true); helperMethod.hideKeyboard(homeController.this); diff --git a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java index dac01284..ac5c6937 100644 --- a/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java +++ b/app/src/main/java/com/hiddenservices/onionservices/appManager/homeManager/homeController/homeViewController.java @@ -43,7 +43,6 @@ import androidx.fragment.app.FragmentContainerView; import androidx.recyclerview.widget.RecyclerView; import com.applovin.mediation.ads.MaxAdView; -import com.hiddenservices.onionservices.appManager.activityContextManager; import com.hiddenservices.onionservices.constants.*; import com.hiddenservices.onionservices.dataManager.dataController; import com.hiddenservices.onionservices.dataManager.dataEnums; @@ -118,6 +117,7 @@ class homeViewController private boolean isFullScreen = false; private MovementMethod mSearchBarMovementMethod = null; private boolean mIsTopBarExpanded = true; + private NestedScrollView.MarginLayoutParams mDefaultMargin = null; void initialization(eventObserver.eventListener event, AppCompatActivity context, Button mNewTab, ConstraintLayout webviewContainer, TextView loadingText, ProgressBar progressBar, editTextManager searchbar, ConstraintLayout splashScreen, ImageView loading, MaxAdView banner_ads, ImageButton gateway_splash, LinearLayout top_bar, GeckoView gecko_view, ImageView backsplash, Button connect_button, View pFindBar, EditText pFindText, TextView pFindCount, androidx.constraintlayout.widget.ConstraintLayout pTopLayout, ImageButton pVoiceInput, ImageButton pMenu, androidx.core.widget.NestedScrollView pNestedScroll, ImageView pBlocker, ImageView pBlockerFullSceen, View mSearchEngineBar, TextView pCopyright, RecyclerView pHistListView, com.google.android.material.appbar.AppBarLayout pAppBar, ImageButton pOrbotLogManager, ConstraintLayout pInfoLandscape, ConstraintLayout pInfoPortrait, ProgressBar pProgressBarIndeterminate, FragmentContainerView pTabFragment, LinearLayout pTopBarContainer, ImageView pSearchLock, ImageView pTopBarHider, ImageView pNewTabBlocker, CoordinatorLayout mCoordinatorLayout, ImageView pImageDivider, ImageButton pPanicButton, ImageView pGenesisLogo, ImageButton pPanicButtonLandscape){ this.mContext = context; @@ -225,6 +225,8 @@ class homeViewController } params1.setMargins(0, 0, 0,(helperMethod.pxFromDp(60)+mBannerHeight)*-1); mNestedScroll.setLayoutParams(params1); + + } public void initSearchEngineView(){ @@ -259,6 +261,9 @@ class homeViewController return; } if(!status.sFullScreenBrowsing){ + //View child = mAppBar.getChildAt(0); + //AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) child.getLayoutParams(); + //params.setMargins(0, 0, 0,helperMethod.pxFromDp(0)); }else { int paddingDp = 0; if(isFullScreen){ @@ -525,7 +530,7 @@ class homeViewController }); animator.start(); }else { - mSplashScreen.animate().alpha(0).setDuration(200).setStartDelay(mDelay).withEndAction(() -> onPostScreenDisable()); + mSplashScreen.animate().alpha(0).setDuration(200).setStartDelay(mDelay).withEndAction(() -> onPostScreenDisable()); } } @@ -880,12 +885,12 @@ class homeViewController } if(!canGoForward){ - back.setEnabled(false); - back.setColorFilter(Color.argb(255, 191, 191, 191)); + back.setEnabled(false); + back.setColorFilter(Color.argb(255, 191, 191, 191)); } if(!isLoading){ - close.setVisibility(View.GONE); - mRefresh.setVisibility(View.VISIBLE); + close.setVisibility(View.GONE); + mRefresh.setVisibility(View.VISIBLE); }else { close.setVisibility(View.VISIBLE); mRefresh.setVisibility(View.GONE); @@ -997,11 +1002,11 @@ class homeViewController void removeBanner(){ if(!isFullScreen){ if(isLandscape){ - mBannerAds.setVisibility(View.GONE); - }else { + mBannerAds.setVisibility(View.GONE); + }else { mEvent.invokeObserver(null, enums.etype.M_ON_BANNER_UPDATE); - } - onFullScreen(false); + } + onFullScreen(false); } } @@ -1499,6 +1504,7 @@ class homeViewController private int mDefaultColor = 0; private int mBannerHeight = 0; + private boolean mFullScreenBrowsingTemp = false; void onFullScreenUpdate(boolean pStatus){ int value = !pStatus ? 1 : 0; @@ -1508,12 +1514,18 @@ class homeViewController mContext.getWindow().setStatusBarColor(mContext.getResources().getColor(R.color.black)); if(pStatus){ + mDefaultMargin = (NestedScrollView.MarginLayoutParams) mNestedScroll.getLayoutParams(); mDefaultColor = mContext.getWindow().getNavigationBarColor(); mContext.getWindow().setNavigationBarColor(Color.BLACK); new Handler().postDelayed(() -> { + NestedScrollView.MarginLayoutParams params = (NestedScrollView.MarginLayoutParams) mNestedScroll.getLayoutParams(); + mFullScreenBrowsingTemp = true; + status.sFullScreenBrowsing = false; + onFullScreen(false); + final int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN @@ -1522,9 +1534,7 @@ class homeViewController | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; mContext.getWindow().getDecorView().setSystemUiVisibility(flags); mContext.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); - mBannerAds.setVisibility(View.GONE); - NestedScrollView.MarginLayoutParams params = (NestedScrollView.MarginLayoutParams) mNestedScroll.getLayoutParams(); params.setMargins(0, 0, 0,0); mNestedScroll.setLayoutParams(params); @@ -1548,8 +1558,6 @@ class homeViewController mGeckoView.setLayoutParams(new ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.MATCH_PARENT)); - initTopBarPadding(); - this.mBlockerFullSceen.animate().setStartDelay(250).setDuration(200).alpha(0).withEndAction(() -> { mBlockerFullSceen.setVisibility(View.GONE); }); @@ -1558,12 +1566,12 @@ class homeViewController if(isLandscape){ params.setMargins(0, 0, 0,-helperMethod.pxFromDp(120)); }else { - if(mBannerAds.getHeight()>0){ + if(mBannerAds.getHeight()>0 && mBannerAds.getVisibility()==View.VISIBLE){ Object mAdvertLoaded = mEvent.invokeObserver(null, enums.etype.M_ADVERT_LOADED); if(mAdvertLoaded!=null && (boolean)mAdvertLoaded){ - params.setMargins(0, 0, 0,-helperMethod.pxFromDp(35) - helperMethod.pxFromDp(mBannerAds.getHeight())); + params.setMargins(0, 0, 0,-helperMethod.pxFromDp(170)); }else { - params.setMargins(0, 0, 0,-helperMethod.pxFromDp(70) - helperMethod.pxFromDp(mBannerAds.getHeight())); + params.setMargins(0, 0, 0,-helperMethod.pxFromDp(120)); } }else { params.setMargins(0, 0, 0,-helperMethod.pxFromDp(120)); @@ -1573,21 +1581,21 @@ class homeViewController if(isLandscape){ params.setMargins(0, 0, 0,-helperMethod.pxFromDp(60)); }else { - if(mBannerAds.getHeight()>0){ + if(mBannerAds.getHeight()>0 && mBannerAds.getVisibility()==View.VISIBLE){ params.setMargins(0, 0, 0,-helperMethod.pxFromDp(120)); }else { - params.setMargins(0, 0, 0,-helperMethod.pxFromDp(0)); + params.setMargins(0, 0, 0,-helperMethod.pxFromDp(120)); } } } - status.sFullScreenBrowsing = false; - mNestedScroll.setLayoutParams(params); + mBannerAds.setVisibility(View.GONE); + initTopBarPadding(); }, 200); }else { - + mFullScreenBrowsingTemp = false; NestedScrollView.MarginLayoutParams params = (NestedScrollView.MarginLayoutParams) mNestedScroll.getLayoutParams(); params.setMargins(0, 0, 0,helperMethod.pxFromDp(60)*-1); mNestedScroll.setLayoutParams(params); @@ -1610,6 +1618,7 @@ class homeViewController status.sFullScreenBrowsing = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING,false)); + params.setMargins(mDefaultMargin.leftMargin,mDefaultMargin.topMargin,mDefaultMargin.rightMargin,mDefaultMargin.bottomMargin); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if(status.sTheme == enums.Theme.THEME_DARK || status.sDefaultNightMode){ mContext.getWindow().getDecorView().setSystemUiVisibility(0); @@ -1621,7 +1630,7 @@ class homeViewController } mContext.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); - initTopBarPadding(); + //initTopBarPadding(); mIsTopBarExpanded = false; mAppBar.setExpanded(true,false); @@ -1644,11 +1653,18 @@ class homeViewController } if(status.sFullScreenBrowsing){ - int orientation = mContext.getResources().getConfiguration().orientation; - if (orientation == Configuration.ORIENTATION_LANDSCAPE) { - mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(60 + 60)); - } else { - mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(110)); + if(!mFullScreenBrowsingTemp){ + View child = mAppBar.getChildAt(0); + AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) child.getLayoutParams(); + if(isLandscape){ + mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(60)); + }else { + if(mBannerAds.getHeight()>0 && mBannerAds.getVisibility() == View.VISIBLE){ + mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(110)); + }else { + mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(60)); + } + } } } else { @@ -1662,7 +1678,7 @@ class homeViewController if (orientation == Configuration.ORIENTATION_LANDSCAPE) { mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(60 + 60)); } else { - mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(60) + mBannerAds.getHeight() + mTopBar.getHeight()); + mWebviewContainer.setPadding(0,0,0,helperMethod.pxFromDp(60) + helperMethod.pxFromDp(50) + mTopBar.getHeight()); } } } diff --git a/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java b/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java index 9622ffd1..0d210c5f 100644 --- a/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java +++ b/app/src/main/java/com/hiddenservices/onionservices/helperManager/helperMethod.java @@ -75,7 +75,11 @@ import java.io.OutputStreamWriter; import java.io.Writer; import java.lang.ref.WeakReference; import java.lang.reflect.Field; +import java.net.DatagramSocket; import java.net.MalformedURLException; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.SocketException; import java.net.URI; import java.net.URL; import java.net.URLConnection; @@ -259,6 +263,33 @@ public class helperMethod } } + public static boolean availablePort(int port) { + ServerSocket ss = null; + DatagramSocket ds = null; + try { + ss = new ServerSocket(port); + ss.setReuseAddress(true); + ds = new DatagramSocket(port); + ds.setReuseAddress(true); + return true; + } catch (IOException e) { + } finally { + if (ds != null) { + ds.close(); + } + + if (ss != null) { + try { + ss.close(); + } catch (IOException e) { + /* should not be thrown */ + } + } + } + + return false; + } + public static String completeURL(String pURL){ if(pURL.equals("about:blank") || pURL.equals("about:config")){ return pURL; diff --git a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java index f45fa18d..d9bb0e26 100644 --- a/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java +++ b/app/src/main/java/com/hiddenservices/onionservices/pluginManager/orbotPluginManager/orbotManager.java @@ -13,6 +13,7 @@ import java.util.List; import com.hiddenservices.onionservices.constants.constants; import com.hiddenservices.onionservices.constants.keys; import com.hiddenservices.onionservices.eventObserver; +import com.hiddenservices.onionservices.helperManager.helperMethod; import com.hiddenservices.onionservices.pluginManager.pluginEnums; import static android.content.Context.MODE_PRIVATE; import static com.hiddenservices.onionservices.pluginManager.orbotPluginManager.orbotPluginEnums.eLogManager.M_GET_CLEANED_LOGS; @@ -45,6 +46,11 @@ public class orbotManager } private void onInitlizeOrbot(String pBridgeCustomBridge, boolean pBridgeGatewayManual, String pBridgeCustomType, boolean pBridgeStatus, String pBridgesDefault){ + + if(helperMethod.availablePort(9050)){ + orbotLocalConstants.mSOCKSPort = 9050; + } + orbotLocalConstants.mBridges = pBridgeCustomBridge; orbotLocalConstants.mIsManualBridge = pBridgeGatewayManual; orbotLocalConstants.mManualBridgeType = pBridgeCustomType; diff --git a/app/src/main/res/custom-xml/images/xml/ic_baseline_content_paste.xml b/app/src/main/res/custom-xml/images/xml/ic_baseline_content_paste.xml new file mode 100644 index 00000000..a38e3d9d --- /dev/null +++ b/app/src/main/res/custom-xml/images/xml/ic_baseline_content_paste.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable-mdpi/splashlogoclip.png b/app/src/main/res/drawable-mdpi/splashlogoclip.png index 2c50885590bf33c72207be943ea4beae63f04048..60b7e24610c5cb0ccebe06a992fbeb1873034181 100644 GIT binary patch literal 10897 zcmb_i^;a9u+eO+U#nR$ZAUG7KxD%wfLxZ(A4O(0SrD$<2#U)TANFlg8#Vt_0xV!5& zpTFS!<=wM8d(NJ-nd~$7-nq{+6QQZDh>uH&i-v}V|6U2Cjk*V;u2}3BsP?a!Ee#qP zyWx9~jILM4L8kW)WBG&x!v&oHnp>4V~kFh1DuC8iA_7mIcu9<s$$8Tl2s!Z;je}U<04EPd%+#E_<<7!w>n0d}?N@l54AkBsjDqxOT zW5{FmDRMnz{b&YvpDy)(UO6Fh^(}mezjsJSnUm8y6@4AS#c6tGNd%aTeWob3rH;8& zig>d;+H^L8j={B!4!aH1&Xv&mdP$8rL>ezl27%KekV~el#D{-2zHoBJQx z;o5GW#PmyCP=u&Rn{y!inp=f)MFt2q{it+_0pA z;bu~jks0H!cS1NW)Y$}nf64jzPcRIP_md@P9BAHa@VmjovY1)zzt&TA2gT5pd{d>- z6_D*ASDLY>S?c+!Pf#Qc!Cc9By}|`K*w}IN2~aBCsc6EpX)f$1DhR@4CB{{xv}lDP zB>BW^g^Q#G8bKvZz?!##7qPOFiIsM2Zmp~DKQ^_0(8zvxr2@LmN64Ee24PS@#--|yrnz1(Rs9E>P2-=D2Y{S1H7fxyvT zvUY#g#laC2$K^N*ohFo>=L;7@!)JajdH_SCoI;bQ!!VaIuYB(OTw12^%`RbJ%MyN~ zdSIi!N~fV_??jPVSv4|%DKd{rd9n>F(z@>7JDC@Nh$L+nMa4cU4tDnP8SrQ?bdf{92i_mY zheUc~RLL(Z?Lu1r{KW#{;GhbT^Z;v+g`EpQUUx%)AQkTIa-TC1wJDr7n zrjc)+U1i)d2T|H)5lP$qTW2-^zD70FJCyFGQ|d`3Ax2) zuM0IBEI?oZn|Gg4PFs3$adCOnx;h&(Qd$|Lsr)bFOi(6pL#V6TAZWl#LMBxCgMn!* zYfa~N{z}duogOCkNDwkIE}-K4YZWrHij+C z%SDY}r#G6BB1l)cW6ryBh0j^ynVk_i z67Kcf^lSNXI4Tg6N!o%GGvvy6F9+y=V90@fxv_}D{q@ONH19>A z;a&~z&-8#h*6gPx2i*<68qZ7T5v-Wa^sS8TbbP9OwP!b^hSv_Z-nbJ8nfQGhuUC1E?NPUu(v>rX?xbX)?z3%w6TGlz>-IqZGLXf zC&0vHkwkhw0|e$sX`ATwmGmSrxdHAZb;LfGA*KM&i3)$*6)tbucDqay_&M7PVs?ws zf1oXECQ+S(j@M%GG2|Yi+5W(P$4@7ga8R3IEzdE+jk2V7jZT z7Su9&G9gP{b++>XQ69q2-4f4|(%juY#~$f1D5@qOiVsh}iA{`I72EPh+oM*1e6Q1% zgd-%MIVF-O1i|T9g0=s+ySd%}{{8!O84Z$2o==jxeC^A1_t(kJ{#PzJ;e9T7{s5VI znY*#iNJNHrCm7w*KB$J0^lxu0X%{OOJjuMxw4JzUJcLcW+YoCkWMJkq$& zj1+Llt1bCDOJIM`2d*y8|8CS8z2Q7OYbvZ0wWq7YDn%QdotDq|`UIr9}oRd5o z;tw0m5ILi_z(a~y)#$%8GaUYJT(xQ}7!r`UTiI_WR zjjl0}Jte8pERtJ~$=hui5)zW59u2@rOITmZanX%RF^#mw ztcTynObcEAcWrlf=IY{4lqu!Lik5g)i!HRN_#T9N)MUo)SZ3+I-0vFR_Kub>H3*l% z%1gdxFJ1AJA`v;s>idLwh{vHk`R^rYVzWA1p;KeL{3>|Zq4EkGKa&vY=?Vm2_6sf_UaE0!^l4vk(?)GLW5S4 z2R3WfHV;Ea{7ZsrSaO-QC?p^wn8P7%|kWGDDHH zJV!LOqtU>?x5{02>$lql@lAh^)CS9yWYoB6^O150KCzRffQo+k+BLUvSFnb-qJ{sv zD))-dCEwg7Gd(4*iT8}=RG7Y#TSx+$@pp;#HI-iAJMUNZwX$TY3tf1w#CgQgHe?TxXt9)*m&;7q?6)EWHs z$I6AEqU^%6Dd(9_kM=kU9E6VPeLE;{)Q&jT=r`qj_geeS`*ZKe`$w$ty-wqqe94zI z8um!BWCZ}->Y?=SN*R_w9HT>l7fkJ;K`(OoZRiPm`3y zKp?U;oz`6a-v3o`#CZvS(W8plIr=9qmRPIYRA z&n5LoxzB5A+%NSPMxkfe5+T3_d!Mk#JnbdM#Tq;QqGkudr>jg2UPoP;I}Mr{r$*Hu zg++DDzIj6D#GD++8pfS74uP61N+3Bg(-$5aMGk2K$?KJIE#hg}?9;l&hD_E->0)>r zbNfKb_m3dI*)*L#Ag~+hGS0FzxbDJmGeLOBSQ|H7;9;1C6hRS=v*5iRSMa!)K5-)Y zZ)A*P>vg>6>9hv*jLP*xQ4|wR8c(Q<(;NbcXNfxvX0SE2`>b-B8u#gZT#+_YPx<0o z*6f>PqF_fGTYGzZRhae*BAVICs+KTT68v8rtPU7Jx)9y z=d)yIVLLaK+$@XE3fmnOKN~_%2|A*{6Qw|99*{1x_iw+VoJ}#SEJrZ%A%oXQ>E$v= zn7!IgVfv=n0bFc4-x2ThW5j=1BK4st#$v57CKK3QPM4;uW2D!?-FEX{@-$1X3Ym+^ zhEDmp^w)@0U7RW|_r(hoOQUjIIF{3Cvkj7|M7~(QYtImIy{vyFvTZpA-U?g-wB{j* z&BJ(2g~%%_Rds)Z=U)HfOD`+|R?9C8 z6R~=GWqM+_blOW1a9mQyvbL<1rlylTxRSvTZ^teWgsCE>5t{XtGx`OciJo3E`VW4a z5vj~anoq1RO0 z9*krrzC!W5mf8RhmMxkZ${BB2{0ih|_;(t58qI!lP=QVLIu~K4!>j3o z&@a%=6}^p=KE1im8TO!5<-=~@98P~ZW?;ycUp!=`3BD;b=itLuwo_$SGd^}Gsr%QI za1!#k_omrUU4eR3`~;gh+F@nkXhGIUQG*<~%u64IT>sA7Gkbb4nlS{;aMN{){gh*> zk$}r0OKqf!BcaM3BIwiZ-T}UIv{ti{5ARD2axJg)IGDp|R!@)E+}w;gHek}uX=TT< zjXIggZTlWYpE+I`|= zgodiLRQEA;=OljWi6nvF_$^^5V^Apw>B?y4)pD^eZw%?{US3WjkSIrBd$j+;!#+y| zyJ~rzcj0bP>wbFy++;TYbE-%_98wP^t^faH5mt&w8`%wqm%zJ=V4PyDo>0rfXpF}J4) znFWy-%7H-{txY7>mO9~f;~o>);?&)AcS zkiz8DT*r8|jq{PG)G)eE-^Iw6IY5G?0K)OoBZh}4WneQrFDcdUA%lP`QN3zrdu)%O z7v?9qJcUFeb3JvOY!%4`_!wO=v;I?A6cmRavz{;tqf1#bBfpZ z^|_!lX0OC$tyfLwn)~Bzz0Yomt05$!mX{iylvi6GRGU(`Bx_dhhk(|;v>TJDa#O$F zFLtt8exL6f)^4$Py{fp>Gf#NgRL`^r^dR|eP}U*Z_Jc(yJ|AeXbHFb8cJ&}ND@%6B zH2*V&kr~P9ZuYx(?<7(!p{0SoXmY#;CwX=9q_S50 zpwTJ5&dtp8`Fn#aS`~x%NIamd zLl>(mF@S=`xXqe}&oC%0kt!nUROdv_VB=;h+pIK6;KoMMw__` zA>HOrbGBvIZ0nf21X|zpBenAT0I*3*?a(a)_*T!D?*1;wV4DHNmau2yke5h*jL&)S z7F-poT2TC}tgx{5&GR1)apDu9{UGY*tJ#9MXPT%ur#m*E^x7nDdy2SLU<6BGy^?lp zz1d`f!{Nh$3C?H7554ijUQ7_9$O2?!r15i$J`E7P{oKMZrpEQ~A{L+i0p2ZDxhXuE zkAB=N3*6fn?O-{Gj?6Q$R8=CYbpO z`$Z-ma1~i$_B3(2F-R7%oZpU4&13gWr+3OCQ)o+J9LYr@&k9h8rBUqaR}hF<7H{q! z)$~bDu5ZfeygPcB$H=G_h{=?8SAz>#DUJuOtHXfi979>WDO&ITn$pO#^}OV6J|?OZ ziCL2wC;N!KDXpNj9*D%E^*cWLbgUr4VyP3#aFrcMqEwWJJ`g7iC)O!C8s6@W7e5{1 z%kn$4l0HaC^Y%oQB67VRH}J)UpFUjv2dJmmPO@2+%~?1fr_gnH&^X%bov-ZRu z{-_&txOW^T4mdfAJ-X*N=i9GdR*ljE#dp|u!L$KY!4zwX&c{&-?Ha8wEH8GaH5Q$_ z@JI1d{OLP1qrgC5$U6w~ZMqcnu?tO^Z3{%c9Jdz!(5q8(u5PS`zjEJBs;jU6<=iM{ zHHgJ*CBnw6+g4(GqT`07>#a#c=<={x@24=DU3^t=VkA(z7jIu1pibOJ!xybukZAf1 zV=95pW?k@x~yiSA~+HYCHQEdxM zZ$eYO?1nwFaDi!7;# z&VjZwYB?n(1!4AdI|Jng3aZk*5x~Qt$Z+*L4yN6|UOWo8>Ymh)dLYjMl?elwW6IVY zsxR|wL)_T?KFlW&6=U0Qu2CwEWl{{hgv@sy|HiAFpLYb2`{3d7Pzi1Q)$Hf{o!dK# zP?DclbxkUu8fH@*$^kkkv)q+nz42N(Of?Je{_yJQqj`VI`m)EogT!BZk727+6Az6l z!>D9!TrD653$=JWFaC56@s8Vi&w-$^V0t0H+4_OgkM74rsypT?MhJh;L34|bq7pVK z^Bn6&9e{jZbD#=KEsw=%pipOi$}{1HIAoUB_trM%rwFs1pgaT)HZn?YJx#7y2pE&W za>uXL4Wwrb)>gJ2&06#smADeWylQ)T;08lBG~5B7UD+hBH;V(*WNHp7-e&TJw-;!= z^Sl0K_rvnElB2z3KF8I{u$T1bl1U0Fz3Q^atH7_d@|D-=m3E&DC+Rc%W_6hb_16O3 z{=`wX!*l}1;G(G;`F;C~O$RRIFkR0j?=ARXD!18r_iK&)6jxzS61h1MGJu|uk(m1` zs(Rpsa-7^1Wo2b9BSG5A96iHO-}swRryM@2o3vh7klaJB`t?xN9iNrkyO9rVRWpCg zI(E(E8kd|dgl=uyltS)1<2O*IxLTCAR zshVjQqB6_Rl%7fvdHF1xU5cYC2Ut-jp?q!Gi2*yX)D*RB$%nO~Opm!lsi&J!Uvdn* zoe@rDHj(o&xfxDyjqSgS88fI@2e9}!_&u$#8!)kNY84c(=G(*JlBOGJZmV5OCwsP5 zd0Q7SC}nh>Tz70#xh+9k>E%~>GTpcfdURAXDxT6I_%_8`feK*%cJWAXHjooG-8NYxR;~ z=Ix&(DdRz~P1HCFmQasu|4R`ls!40J97ssX9V2;#XU8A^@o=G`$8NF^?sfUsCe_&M zUx+IlAs+~WWy~24U=e02i6-N|Ho;?QwZqU$!v<^>jdQp4&}tX*5nTmFs~7`TF}l5> zoPX{nNph+?tU8_Qi?ml5zYX8%?AM0#Umj`M%^nMv1>|^Mp2gq2<8x3|`_Yn5ZelRN z5|g$WL6?)^+DpE;w6yeP&aTK`Dl!lDos8R&Mj6=7Lyy^x@|H#{YCmgM`=lOE@}+La zV;!f!91u9`GZr2TRVEZT#kDMjKQC*kzDe#9`99H`t#Q%G?JwWE*oxusNsQ}=<4Y4) zTd**$KS=9ERvY>$JP=!I2J{v)kD#zYGvvEGlx5p6?S&x_xSZCSN&;K-y7fk z{pwLuG3t>PYSLj4j+=$W+9Q>q{p{A|ypz;Ll8(Aa4|wn1lCX_ISw%7ar|~zffXml6 z(Z_WfcXC~Bk?31_M<=>e(Chy0tBx}6bLCPNQ+ul;-sve_Pzz`bYyo#)zU~z&Z(L7M zITXH}wIExBK0O=+XK%xK7y8lS9BpmAEL2nmlYEa_u9jn^9+nbu zo+ltQ&p~$}CtFqr*Q!}p^qPuibJ%~_KnZThF-L9%M;I8p^u(ej?oKi5;hzYvj<3(D zLb=9`%x48&GqKjx)VwV#Ej4oO#9>+RnKAKP%tau9d5mdBw6%Lo%NUsu`epPG^-6+O zkd#uuRg%hT?1S%F=2!~=Df#S~yY99gDT22|la-jOY5zB^DGD%Gs@anMf1QCCcp3w7 zIVH8Vmue0U4i;M@nRg?x(EGI_MJ-GFu})vaWBtplCLGgxd>=5Kp5BD6w|Q zHk7502&4YeUr*)Ke8O;t!iGH>1kMkJBvf;C2vKn_ZN0CuOFI%_#EQNMsKViWWu3&w zNWsJUPVr^^n5(nAl0io}=BGa=JUfg2igY(!<2_&wX4Su0sE!_ve3$PIw|94aygR?) zd^hvnNS^jB$$9+HOo{?Rd1>jq(`2EVFJ`jPf^!!y?fnXt#>mE(X|xfMB4RMTe}S{S z?JZXGsg0o!?VQ;;Wn1-9tf0})tgb+vqm`uZ{u_~J!|Ju@yH}xAitXR>a|7C1r$VYL z;K`=11m3-aKR%)+$I?O6IJ$g1sCQW-g@35FUdu_D<61??zCgbi0fbi(d~ZA%pe4k0!FN?%gy$xrUC>`mECjwRl70PK;Q#zc|J~Zr#d4VT~JCl zA6P<3h?va%WcF(r>x)Hgl+N1`?mvf2GLqRx_g%D)$6+Xmyo=pK!i@}!jGEX}2RT19 zc{q?+?R!k=85p!tTnnw_+hn>Ug-E$g#h1Ylrgks{9u1$JjreYr9)1SA5sW{yjxWat zE>g+k9soUzK4n0yEo|0i!4Q+vf}*0Lz1*-jw`=oDm$lrOMHokKBz(>-L+@2LXQZ^# zRIQb{Qhf=JKdo5UWVrM)#iG*2VAQ&f18mv`j&Py&{n9PZQp=h}=U7^@RI+OFc7#-Z zHLu!*dbP^vnZ1L935vE?%dSJbeSQ?e_`+4SwH}w@0EUvf?2vz9Gur&TMC_#{CCnta zA$F)Bz8I^v9;UqbI~s5qXb~f_nS=A1S#{Ksui-HWMekc$a3cw^G8+ubP;c_@--aF3 zUJ2vd`Q^vUfg}GTUzM2(vt^8PT?2y(_Yuyc{e64uxY5X28ZUSvy^On_-t@Drg@W?( za-U{fb($~z^bG2fH|uPQZ@kx|*mMe2;T09MCR$or2o8YQRzXu!6TG3p`{1|Lp#D(0 z(9w;NQ_BU6ghRgu<9SX~Ztf=sVtMZWisKBAvzs%FrrefFn(@Qdih8=bQK+t|O<0NV zQ+On^)BLX%>u%MYd~_a$()g(^=O7igp`oF>b8~Z%s?3Q5MSTs2hljF8Mn(oYIy!fM zk~xgXIKfk=vlg+4a?_SZOtTwOR+PDR{A0-nfg>QO_vXCumA^iEwZzj0y(r;JQl7nKM7Jh@uf~NG7?jyclh{AQ&wvvf8GDsT4>#0-;oWTMWwL4(gg5_{ z%Y~^>A%RWJ*ULFSDz~?k>8b5hQAdHoDoN}AYJ#IBB-ObeyRVi87{r>`Lc(pO*xS#`T z8+clAtCv&+Ig-Ygg{u<9KfQ{_?BX|hrA~OB%yQzuVj=>dU;`pL^qjc;5^4{cAx5Kl z$M*t&26>Re`KZ&AGiLJO$hzHZE@LnWat;D2F#L^XmmKc*_Ii@(QH4Jnx9uu~XWE4t z%6R|e<7KUk6W?7OeeKo;dHxaJq5%TS7Z9yFzKU<0s7dY}Kbpfkhhp6{(l^^E*hzX4 zj|wi`%+bjw*a8{^EgvNTH-X`Prl16vQy7+1ae{NcJfq2%hwst_Rlo!e((f$c{lAXi z?vinN+t~e!1;qEFPo&0e?!=|2$XlvY_icSwYOHxRH$ShKay_%kq&tn~qW8_Fc;fEg zlQ2LFIX5U5P?+*fCFK6XVZU9UM5@t@QsD~vR0$d|;57x6g^N!f-4p{?%Mdf6dx{{- z^6-0J-62^(8cEh7>EZPE{&bLKYdAIGN4N*sZIXIi8v8kyjtdo)fcx43f1r;bZ z+mu1hNc4)OLZJ-h*1>u4C7(jUf)zh*~+2DHrOq zzIpAIA)d%4t`fq^^@kA&p;?s~<&U z*R4T4twEX^+@kjLIDrauK!st-#DE6YZi?i%e=a9xyCJ~S=Kv9jg(tP}J1al~Z}uoH z9gq__Cl&sr+(xsS!3Dg-YFow~ePjiu_Xt^#y@0m8ihsg?%JjnFUJd zwVR3U2xp|oG^}wR+nnGJuJwLq2}O%~P+!a73gH;n>vve*0N%kA&g$zP7J_yW8?;Wr z+renwB376rmYW^CFU^JGqJ5Kp5Bb5g@yaQeb+S6Okm8Ovf?oh?&?L97jW!k&vZlV(Szh=O7D+YdH{E;H$USxFOJykF3 zAoh<^D{yI+V;tBN6hmmGDTM|(mnd6*mZW|487@WJ`KBl-p>nYs12)wc_)_-Kk+0X! z6yooFJnvK;4t?Xh-aXG6`SX}6_s}Y;3YeFy4Qy?31@EN>&j^gMw|W;_&X*<=8*zC= z)F4e{Ug`ZC_*Zi%pWf~5yp>!LS&60}k;`-qvxEBv&Ibv86c|Hi6zdjZ^5*TG3UhW?y(sWwt%ziVN_%=i zf1B1YD51YzaIDkYcjT+D)LN6xk%v4;0z|agF5>ad=wT-Bp^)j_Xz;)yyZ z>heBxJ{6#u2Y!tEa*eC4T-=JR2-9IuIKPi9;8X6iD zZrwu9I{5+dMO{zh|89evC0LBx7=h4N@z#JFKQCk{zab>`ITU}DWVC>VhkJqcbvZ|Y zM!c^v=nVo{dv$)kPqWm*C4N^L{*3pv zQt*rK;614jXU`s&`=j0;sGk}o#tm7fuvoH)`ui*C^TFYvBrttAKpWCRdrY$;3Y+?) z*|7Bik}l_i#58-6g+25B!+irZE0nV!d%R%%@pvD%1=pUNyJGY2Ua@_xEKythb-6yH zk5%RYM|U?$jF4uG?nabSS_Gs)x)G3;W^{u{BLfDE_|EV8 z{(Jv?U#@Ggjm0_7dFsBO`-#)mR3Umo`veUQjp&W4qAu{a2Do+O;Q+s56%$X;&?HXY zD9Y*k=N#ukJLr|t2fGbcgXWvxtq&<F{*?_r{-Vf_SMIH+ov`&z3x|jA2gqCQVVFrP{yi%27O{3* zU0r=}ds*hCnOh!?h5z)0YOP69iCdz{)Y@7Xn0*dQ-*zHt$mJ>M6}4b> z+W`kRC`kG!IXOA5Sa<)9k1&KZdehE^+Uf$`sjeP>+7voh!c4e-`rH=_NDbvFcm-6Koc8s1skQ$X!T-#n#QZ?Z))bF5qQKZ24c-wd#(+ z*fG|O8Y(U8M5wOf30LN5_wc*=QH#$M1y&O;f-OEZH-Fq9I~tC658(XC6+5&Wk1fw6Ye zW8oa5p*nK>xAuObR9qGZDP241%&0kn$$+4>Zt^`Jp$x4u13}+AS?%RqP5JDU1Doa6 zPmZ#Q{4(t6V5`wxPtM{@;_mJ(A34kUtgmSwudc4Pb<1WS{qy|N+MkE}ujcsla%(PW zO!SVd_Z`S6%mi{8=xh|rmdc_!UwrFVrJZ*#l9{Scd|9&Jpt}^g;ZX1nlo-I7DD!L} zXF!~96imWa)642P_B8hM{>(TRkxcdUOBaqg+8ZUb9+{GzaW621YhB-8(CdU>z5 zH2u!lmxK!?vv47pMzHa=XVmnEe6#peM5RP14`?t^m_K7E-B)e84U;>LB#@EtGlRj1 zbp5M1&T30)yOSx?$97%kxd-))`!5}!EzV*NvnCfBDiN95$9bMeE%r_I{OP#aA|Tu2}#^SF^YPiA)-xVVehFlZ_NV&nc}hmMg6N4oR| z>LJBEN6x6(`Pnbpz+v9a;#0F4Ic*0Y6a3t7RUkI1=9xtdOIp@kf|wv2PdgWr?c0X* z9<(;yvXv9m!(f_j@qJtmiURsl_&}eFl2@yAX5BLrgw)j%dj}S->X@Upc`P zprK*90y~2}Hu(|5dzYEIwYm!=eP_H;@|zve(a}{Xf-ofA`9Pc*M|xKtxVRck-YyYt zihO?XM6Gtm={-6c_Ib7SBp+Z3L-~xzMG07_yO9kL@8Im3aHcsO3l{kGcHG z^~J4EjI1y3KRAC|Hn{p?V0T8EL*`JR8_LcYt|0TQ8&B4e(Dcwhog>se@n$fC+iXqR zwm;U;E^*1IlN2Sd=Ssz2)2r0j*eEhh;=!`Hd>`V6i8v>!z1}0;S#d>$GU?K)FCOg0 z1QN66E%$lZ+J#~j-@2~F_JsKFq^himLEv0JaXL=Du+~b4>7W$C?rVXj3JQIvxra@V z@0^50d8Ie^>y`zb3&Suiu_tzfV5hca@Xzw~zB>pydhQ8Ba+Nq98)L8V8Duk-_ve|2 z#6(||6NxiDaddyX^Wha*HW^vtLwqH z%IAeJj1(Cb($U{-aZdoweQUY8(C;uVLxW~lt7|MTy1_M+61CUubl(|FG*sQR+ceZo zfT4+kYZwa9BwxRt)jZiePe8u5YTuRa@>#|Vyvx~cy{g~y5z~Gi5>&8-dQi&E&E;h; z?&{`E?l&m%ry(7$FF0vCtiF&~zZs7Kk_UhPb3`G(zbRtg!DH#0jj)n4uNTfz%2TX-soOZVmni~fR6U>A}ONY~8*n9)jdK~GR zW4oRq>+^UWH6Q2oz)^rlhn(NsIsE0Xb}ybFP_x|484Xsgt5@g1;~Ut3ebLas*35#E z$~^RkqatJ(by3)ncBeMWr$>Coc;)OR7(Oz{rW zXtwC(*u*7n_|Cma^Kz9cu4MLBX0pV|cbU@;L>^(d^%Kp2*iesuKlZGk1R=rB=n4nt`n_GpfU)IO;>=lp z`Q!)jIxvP{4H$1B`F7wB*co^I53^1^WN!%V2j#cP_`FMqIFJzEYF+xnf}58McZ7o7 zgu8|k7l*~i^=Y_z(l{(Br~5jjd?0^QepD*-ZqP48qs*K+|BVhlEI>U?7w#IpwFcq+ zbH=_M@OMx&y+WTOH+|UtWZ4Mtiq!wSLPJAiy{x9DdyM*-xI&fM9_q?9WG7puGk-Iw z@&2huc&Sis`UhKwS4P3tgb&+6sm!ldqjSy+_Fww%st7Ai6BL|SQ~Nv>9Dg4sVNvWg zEf!E*e!6^2>+4(HmdBhlSw|`SKrejv`yrnO9XIIdLFuL7n4&gYTKM5z3+C`<33#4<{-Ccd2;eOPi?@jqG>H)cjv_gJgpi9ELbSrV!UW z=%3FlC0h9pEvG2#@WfJ`-{vs%n`9#lOwl^%}oveehRGj`Zc{B@~MnS zf5h!uf1>cN|H+(M`a!{yORdpY@@hL8}kBLl^k(i36gJ!DY(IPa1q;&fif&H@Lz;tGe+`PNkyv~v9Zr#mg?O} zBMrsHxe47txX8zCrD&m9>qHuFu2lFJcoT8(Wm1aA`P9r77Ntw2S0PXVVu89up}kuF z5gA8e4B8scl|X(o=kcRlMW3f8YtS_h*;DAK^%oLayeNnxX!^xbXk%FuG6)VuDoh*ImtO&%8MbfgsSUjtsmwZ2osI!Pr0Zq?r62?zfwh@L1!N z@X}Vq#Kak|Ra?{_dECaEG2f)AFjCq=p8VZEFow66(N%24EI}qVu*N{)?0ckhW|x81 z8lJmK^_i`bm4$f-TQHwOb`vh~flKsodUnJw99>&Zp>tqvkk* zDt>5_DJrrTk4=O;AR?TdoyW2M@_RhJo>~n#2F;&@lR-p@swNN#sQisitCqON>@WXv z(z{E^qH(Io>5E@8cHf5F{Fz`V;K`SRbS?*kPEtD~XifsoOn`(OKcCx-kq8e^)zJ8j zGCwchd1FAyfkVUxfmb2|*K2-pH;}zq#U7piS30<-mpO4nSw^Q~KSbnSxm&lFd7iB1 zW_`k0an>oNwlP#x`_As!o@Fpg_ZI|tADuHFD8loRh!XVSTuRu*b+-w{*t{3OVewJ3 zl-K`nVNBo=tVUd42-*nW{5w_Tm6VjU_lu4vVE7T$^Q@tPVp}1%oqiXrs^FR-MEAwt zFC==!O;K^hfwFSvNX>0y_-2#_Zrna7oiT}bqaNSR7?7ONL@ZfVBo0N(+xsngch;Ap z1HP;kD91KXvm~1W^;R{n1$gshW}hVDYW0uDIy!Nl#|&D6GT*eHXu9q#28X-K8-Lr)S2z)g zr34E9P8S*f^YQQmB*<)f{Dql{=3O2<@N}NUb93Ikj~Z2XM08JE$C6b4C{D%XCgF&- zj$D6;k-1~GNGfujQ@2EaeR+BLDvX{6LtFFX!)D#hII_GgsCHS>S1T+r;ffZn-N%i5 z$VJq204W_?vdRy~X>_rpkzRdqbBKr7J`HBw&B-uQFC$S2+ z`?34v)&@(87B8xgoow=T+-IogWdHVJ}jFE34xKSLOO82v_;mVmQ- zRVQKO@U+gkKX!oj;e1wpylV%?(z2-urs(zoPeFpKy{xR~#%QIt3OJ@sA|Z>e)m02S zX#J{!Hdfd~$sb>a&+T|jCq8(Ma7$?`KU=QBayf&KRLGC-et+@N=SUyfEI}$J-Cp#j zSFWzei&KcE+n^1%(_gvSecTFVGa^(t@Z>V7kMpy79queZ+ocYE-|Wlf5sz|LdF0&P>okXOR0lm!h(s5+~EHp;?4=iMCG5=}XY)`u{3 ze|II&^8w6JSkSp#qGn2DQH!p z(_iJOkm+gvuA0dK#CPgD_idGeTqGGhz`Q)Dv{1FnzUSU@-uTJ zWM60bMBH+8yZ-)H$_aYxVe+cBaQJb?V#s!QMKBmvrmi8}Iit|&J8t@_tY^LYg1*H8 z$Ta8>VPV8bc@mmOCsoyD3*e;oU_b71OaqlQ)peeZ`uD{m8ku+BX}1q!sb7aDZw~xZ zP5M2DNbu%8TS2G(nv)PnFj{}oPb$+zd||(bc73LSLhYNLv`qU!MBv@(pxH!po%3V^ zevu1la7wwUNTG6Jq#G#@(=uAnur20~nM6h*@>)}BH^`fzwS0U#5ax3%wgZFXn z<@#;jAUwmDHJM?=y&HkA88T`EUoG*O-`EVZi!pOrJS2OnQOMZ8iIUcc0!1b3>f^u9 zkJy8<3?$KI`gjl<6e0~dq4zGr5`w`XT9ai{wk;?F*wyNzV-;#&zACLeGCKOpbD%bv zubmX;(X+#53ZJzi+w*t6J3U*NHD7STIORy=oGB^682p_zas=UdcbiscaUz^OkP*Bx zq&&^uy-uR&RMF=0Sj+fE#UV;w#bI4Ctz2e1QQ#cb&?^z^{GtX8;Lr@{WN7}?PU`sX z(C3g%XLmiR$P@ja{un(9Jg=a;85#2QS0LzaV0rIF{5M|Cnd+8E^+X^=yqA~ zPDnwBr=b+h3bJaaHWVxRYdrpC4g4=UPN1#Ag_I{rQehV>-6u;aGVFJI^-gZBTNwY@ z`0?(1V%A;&@Voq{J5Cy6g!^p1=eq z^Cz3oV#BD`tq1R>^5@Edz+IJb>*=h*zz39{9zOFYVqe%93=5Lw^YJ{$?XDMB6xmPX zCd7El?GUNX!Ib-iuj;sy(%)#+tq#$|3b}Nz8moIn+fUUv(*F;Ot>0+2-y$bKsqsU#$m()92=hMg7uO%~1Xv9x+=?9?Wr<;he36F-UPh1oNyyE%P*MdDq=bFte6t|^qHzM*1+@kx z*N;yyDqa(Aoi)T>N;j9Rx!UD zo`12eTUgspWU&s?z=_I**52dP5oLgjn9I@$NqFj&gP9-O3Juih!+)yJiHy6-X zKZ=Wq7NgfBNgJAO{q!IbnL!)*ExYjqLk`CcCG|O{Y%UrbUuT zY)ZnPzOq7wE80BK$(%yYhhHT~m=8uR$6iG8KzXTh z9{yAZ`n^yT;D8ktDc0%xGNvK~*_1wvEa>#3cMyTu@uJ!SOAX^D;FM6p$QlSKyAVMc$(ntfT7US#g^PDdgzSZz5jJWzbqwcHyX@-Y^ zNiaI43*ox*FqZ;!LTujTxN~!;JQavp>g^Yfp>Q%Q(isM;zQNKPNU~N_ zgLUI*VXe=&IJs?qcvJNGex1teF0l;gQzXpe-OQ|yOG*~DIN`rD!4Cf-^fMp2JNpoV z;kHL-;sr1^3EDi~bns!AEp@a(-{*36RjdgF)(30?%F5HDqr|JUkE%@cd>wghfjB=~ zf8$KT(!Lp_nI#g@jN z{XvESsmFW#5(Yk7T*7)+rY96ZJ_2u>r!~D_f2v7Z#BmPoi&kV1eHZ(?XT+hzdlhPXFCh zInk7YU)k8yhx5r>+6N@i8$_K3W)mr=l%auo;c#DR=ot|%F>RC*q8QjaW zD=QsMb#)$WOiv`x1)lk<(?~>89A;O}(na1DH>%u!uxV%%yqqMpH12rUoW6XJ7=G&1 z6|#?NIpm#~Tr^?c)sNK`+o@obNYG0W!z$n;_VbhS`+4r;yP+hT$ZTb%#i44~J5pfI zp&S{#^jvR15JMPifu;eVx3i##Kis}=D&*IrIMO=M=FPp5&`k}iOdH2?Jx^#++qL+8 z0gCBF-%#P&W@cK|O~iKcq^j7`2uqVr*tdKIayl-Iz1%=@p;qttM)i@sSv%r=TF*6_ zc~f`Ayd)zL;X3{~#ew+zpnd@`gm^57dss^)H@>zU8!lo2lHnOrKsAwQ`0KqlB zi)MNl*|FRQ-OHuIp!eDv&n4k6`rU}!{G{?>qC^{PHfIysH$yvtq?YznpI;;ToHp^* zfX=wiO`sN*;Tk{kUH?%pu+8`R61Ub@$l6jpf#Hv`R_nd~C}tlbg<*TIjE)GJf-|AQ zFc#wHQKbg+Bj-zQ&y>~FMte*10-RkNu#6fDIEE9F;JoX8>p=wZzieN*{azSK67=!L z+*T3P=5NYom^|EA?EHN|OY1}}o(L{h-$1!IIc>WmDmh-Yi|JO%q+9#(^gRhBIK4is zud(jmZz~g2h)$8Wv!lhi8gdl;qQBvFAy*V&&j_UjnDVRV+6$dg>puD~q3OE1R#sLw z+l-Gbf%mtUqd%)xNi|H>alaImB(n<2Z@~P==juEAkbb$(`3k80(X_btOvi4>USO4@PnPHPdJ(9%g^cJq|M0k9QpWAPDJ&hV z#1MG)v$QrZ`hcumpB;)WeV&?<7MjG{c`+^dSEA}qRZKGTC*Sfu>%gwO7!1!vNnG_D z^;X?N*6crVRGD?2tCS78?e3q8J43%$ri@wi|7bKj6PksKymq-(RV2(45iO(h|KiE^ zJZRF3Qux zg)DL3*wrrY+Ua>DDSslh*q1500cKWvJvF-SAb*}(ltGMCoT^tB;QH3;svNmCEB%;L z;O)boog@?WQ}&DA@t=~Z*I6DN)4!&38cDYT5Kzdr4$0X@ug?wbzMZQvJiiJ2=OBYx zR6Crnv0?{}v_KaI@WM((A8IlAzCMTI`dxRe68KN2l?f8lN7rmtyMv!Ij?Z6X^>4s}jqY*maPi_pzKEsv=vhdm)S2;= zX=Dp?cV8_*^0QvQ1sl6^VCsuO9mcYz&>JlMR((Q%g#62qM7X$eT%=O?w?|A;(eo!^ zr`zo~G}mX7vf}Bsw`2k|Vz#2|sJZ9ujwy9$XMuydU^Imzje-c?}q&*333A;`u zY>B_(o=eLA7ZiMuTVuML!nSYKY{mY!`=xs>YaP(JuSyBM&U!QjBg3e4P~ z_)v8Jxsu_3*GtZ-o)d}Bc^x4*xy7OIt7qRmN8NQmC8rQ4HrAh>p8j~=D&#&tl(?L$ zgjwF;6V=8>1c@7Z(~AFgl215AeC)~pR`xW?shhb+y`Oh5a zCyoX)>l}A)tC{DW6$DK#CbYVHe^CBro+;5~_ak1iPNJ)xid~YS7aOmNTq@3>DJJLb zy51@xkv!``Fy3w8N>seW`XN%D*WvYNZ2x;j1*B`gBsd^Pu-??WU9n}#7g?&FGue(xCXG4E7gzedA z=O8lJXYC~;-O335j*pL@UjirUC!OzpyEqXH_rw0kAvgDlitiJv#uA~+-A|I>Gl`kb zOA=onmO_5U_wa1ir%$jRl7+tQLBEBE>Mrs@_30hDcMGx}sIu+q<_+Rv8{!>(kV8_w zYs3$a!dzE?D2bn4552+F$^N(c zr3vlH2zQ2}l&{_Tr@u-|y-yd;UsxMKML>zpL!RSi#NW*82+UA<14vvy$Ks*4Gk2r^ z^#1vzr1N5F10%BHnvna$?(ui^+0uy56AkV~9}L2R!aHQMMt9*iUERAQoHchEt>!#4 z5ccO?Mt|2HxEWsu83#x-)C{nLsmU~@Y`NS;3#I~0!{x5{y0jeFa-bJ4h@YFx z*!`riOLVN7D@u{R?Qsu5Etdl1-3K_b3)yMl^j&GeXlV3cuEOlUaqU_Va+OySpcX@X zr{@D0a{l@DeBg3mlnRU2F$B4)U_kR&Dg4toqKiri_rC2HwbKchQu^HR7P?Xh@`h*D zL>ak7W?(nTx`_ocDNEW|%eMN$tKb)h_m zUF43N&PQmaQ98rI({a`d`vVLF>Ve+G{$i_WA@bQ8UyeccGSqEY*^?%JQZ=7ckxq+X zSDSh+YrAt$^8oI}LSeJoSNlMQ=e+-9di4U!B^bw8|_OLQpZOog0+Az{t&F~d!yn~+(LUj z9Zd+MinW*Q^S9s1LX)q_Xed-25mM(Bz?9Wgv9?No^UEUd65^nod_`( za|?H$pN>_RE3ICP`TTYR26h99(3?3UD~sPJGjUhcS3>6)JI)YDii@i&Jqk!_!AJei zv?PTH6}DUVNvBRU=*%Q;_N_9fExDfgOWil+>5_vf)`G9uG)3*dLDW||c0ptJW?_4-(IT%;*s63eC%#YU7wA4?`LEx*I+vDCi&L62ltVtT5)Xg_n(m;7c3?&j)ID` zA|qsoZTS|2mh(*7J})zxfV+^l9XxBzMK1nG{%2xtOSQq5D*)>HUH|TPTj11JB`uA7 z>7Xf~x>*_=3b+uUKu`moOgj9rA^X>Mc_9xsyvg(uzMe1S3bK1Rg&PrvA(h^GqgDFT zwBq6lCCTNxcXqE@D7D zC9!@BZw{7uJCbGuO!hlG%wB#MJ`%t&Bb)|gT_%vuK%f;j;{|*^due%@z!b9T+OxQS z^elSUe}aGeSo*E$Ct^uifp4sR63Mj7ouU?sD~%+5QNm=adQ zHo|Z-f)Uy49g9lxVGxaDJV~fxvLB;Vvib<_-mHw*fTOd3w6d&HKX+w#rhCI`GrNNE z;&9P(7VlG*wk87TA=($po_Lt7Py4v?tb^$0hgA5?)9bV(TewY;*!Iv=&{Z1$KqSDa zPDrDU>`tK*uwWsVh1#SFqZ&(v^Z`ELB7a>Xl|xrJJUB>pc5-sM9@Yx>`~%DxHVHs+ z)4MoN)pmr;62^kx(Z{6J?7HF-9Sct?Rw}~IJsm9_lfF6=kD-@RIr)$JXnV+O{80KlcyVu?t(Eye#qTn703@%Id|)u~}TbG+x1REB*Dj6b?N35TSad|22f4*po;Xm(Ki zV5zeKKWXCjFzPzAIK4dq@au3 zb(y?a@9;R#I^GtOS~ROOT5@20-kQ-tpI!CReT;`%AGVEm?D9hw9bBa?F%`hl^D(3A z={!QR)Am=qk*4&`4kXWiD=r-vzl{<^^?DYR8;Y;%9Pxe>kxx2B%>=H?v>0=FB7TeH zUlfuA{j~~OM{Z-%1Wh)e{aGi3Fkts5=g4tc7OD_VLa_Fzh*zyu?!)+wBl!Lu1?#n= zs_U?e(tIclJ{sMiUpj zMP_Mh#D8A9CNLq1cnoa{l!gkT~FW3%q~XlQ=npz0EX0@u-WnyWGE6WWsAu+#82r=b_5Ms9oD z`_ZCt6#z>!N)mG2x6IRhcRmPkNchH+i;Jy^_p)2c3s%DfA23<%>la15y}f5K)=qhBhpskSYKTqLFAl}9i zh!?IodQW}Bn&pp^C^jCfxS>i%F#K(q4b!;6aSB0Y;XTF65b(Fq01##!S5;LZ!VF}c zaGw}oF60B>k2CO1x6COW{5FlhBydWJivF&cH)#K^&TfzaZ?*4RkbYdti)!zlXb0=d zzMxg{B{tJlC=m1K_5(i$NLg#RA6Y`38A#2yBXI7n6pw5`9+*>@i z?fz<6OB~?J$AK67OulTr1>1gen0MirY@inI4s{7epKBOuTZuO-TsgrJQ@2uq2r5^k zCCHA-mQxO=M7O=+yU?cg6&374Pp>X@r@8$|sXcXGgZT3sHTX8u!gm4)HA7rEYsm>S z9WF{LbhAa3`xea2OIgd>ty;<~An1vYj*eWg#Q)O?kO87BKh2Pt>^1K|QY`k`7lyt? zt9f-xsd>wKgAIROqLMFFQ8@Z2Wj43Ek78V5k+HgL^r86*(@7ubaazf~uiy<49@34i z?e0!?DjT+WFIA_w{EDX_aBta+UIaLp-wC0B17rY-SS4ej!ld~%jUR(&0nF}^f_zW2 za)#{(C=!05eeVF`oHpcUH#1)nKprAMPI7F9+9fh;k|$U)Cw9Kr(qumQsMpEhKmY=P zJdD=kDL5(DJO=4QZnvnqMXCOd*}rD4EjQ-k!503(SdQQMFMx&DnB5#V@lw(~{1n9k zE`BQeUv8s;?H6YyAo@87wK-#H*qnSRJbQmGhkMRI43 z=KhBSV1x92lAf1yM%{#Ijc|bBCj#PjG_-L+sQ_u_L^pVt+Chd-#AwgJxZY1qZd-Q5bm68%e9kYgZh{$Btq@4{_qXrXaUKhS7>u&w)R zH+VN^2DAcXROau0HrN5zv-aQipcbH7VqCIP)|p@1LwB=?dl*L=yx{_<^yU8wg7e8r zE8?^hxt8hHc?nN9eyq$Nwg-d{UN9JncEg|`E=W|`#^@~Il{;3{T+CruYTjPblW=Qe z>gYw!RxZ(dkL$C|#=RV`@hl)Mdz>@JJbw+H{jOsN;DTttI(OsJEr8^vsj*SWeYMT! ze!5uANc!P=TkWL%v@8AbdQe8VeJ>z%d=K#pT>PU>pQ8#}7>(O_x{F6Y^5MgWW?qa+ z2U|S86-0-P9O-O=D(iI8YGLTu#r_N=S#&ElI)X&nf9U$(HeECkouQePRX(7)FtGgBGRuB#0Z0_{Y zT~@oX65ue<7s4-@I;v+QT$!0qn+ofuTPPjTXr(3~XOcB=OUEy7SUx`^rFg;jJR)K-M@Pp+qmA3rSxsT0>hA5u5E?bP$_- z@F|G-bX?9(LbyQ2hGKGf5Y0yZ7SuJ|H62TjQ4z_}B;{-%+yT!wWAu zeXY9Lr7BDo=WDW0RFnob>{_(i0OHi@G#!3C!r@My>ZN2af3)<1jHd3m9jVp7_Qq0i zjU7}P7yD?M3Gv$!Doc!YEKVa!E$nF>$P#g?5|HI5>}v%m5I^=}xXM0Gb`Ad@@v2L+ zB>s7fOhEa7L~q70Q{4FtE)#NN{=3RCS0t&lv)Y4o#F0D|FG}mL&o1Pra#){mW-dmI zd*VT0#E4e8HoChILi$FZOw2?vLrn&+?>zvirTM|9#JpD`A35@3zb~B1B&aGWR(o{I zQ0y*FO?ebZQ1v4`_w+A9Ds#%`>%C6}b;OY(ETF^Nij-LMz3Fdu6Y$QH)6|eOH`2EU zxvURel4Q^d*eh<(>uSF*mdMLs+`Nk*qp41C6XM|t=c*hqm#L!t>-Qqs4v8i_pm|tc zGqvcG>jrp0BK&q9@{Ri23{8O6KD}-a1!VdL|FHiEM>5^LR`dajp z$A3*LLQdV)JUNf1ZxzB~Lc3==Blm-NQlzu5#p0?0)O!6_ZJnCTO8lkkyj-gZJw8H; z^;3j`Q59ApIF>b@(aQlLD0*9~17wckk}(%0$w~SjdeAgG2&mc8hvT_ipk`lR-#jKz zY3z`d;?6K1p*v}6bk>X8gi+-32~v=(Ravo`G_^qj`IhWP$INV5lEPXb3t9?J_lu)SwO7ES>4yWWGW`b&MK{V+1*IKBvYVLL zj;U3dH;QhgshNuQU9oriiX}>KJwsIDhy0Xwu*slegnd@PBak z;!cs~d6No&9P~Np_eaiwWfF?i_1GZ^+sl!-p-a$tzQuZ4K* zgBmw6G6!OZR5Ot{e$`r*fV%PcM0$7Vr46-k+z?Bh{UhZZ3;6KCH`Pc{x;v>&X1|&@ zc^5eWdabSqZ`qSNJ>UiXuv8@W-lbs&@wN*R^zsD`6g!cnvRHhfVbiOpuGUew-6|J||b6-G0rKxjT@A^#t5G8!D~#C?nWr*Ox`Sg%2+DiQ1U_RStt zSTp))oy1WGNr7%z4q70V@z+L%(ll`f(K+efKug7GaGAF4(*@>f)Psp)FbLG#y3OY& zy;Qd+Yd1z@Lmf=)ze0`3@1eFEBaxht0P=HRm{}-UPj_qe^?I074=G7*2 zum}OOzZ}TYLRVN7MsqOYNPiZVS$n+F=-IvpT}MA3$XbU~y+Yd#lUR|s{TOS%(!RX2 zriLxbPS}^yhWM1oueU0&mbA*qLKnU1RGkNlGJ>rx7c^ca@pmnITjW^6B{WJ=bTY@7 zh%k~im>Zh(-wyJ|o)XLbp9h6g&bw&Tc4_b>%xXjMDmoJ=1dV5aXFcT<3u$ zDu;|IyKHNrv0@PHuZc-KNQQnsK?6*(g4v;p{5tCg%R`p^ZHvv>JZDcBg4T5;^1o|C z1$~4C0}dN=;)4Ds1tROrAL!4{Stp}2FtAi#s3d?{Je1cdir;opLQxd=Zs$N@?g2cks9Kt59M(U4V+~H+D z*q!_hhqoP_(`}xAezhvSIwWf#yRf(@#+44nUa)jit4!dv7I~=-Y)471F5|OJAjDVN z&y)CbO(DBb%WR2P)fQ>XBi1!GHK`)+h(zLso>U&Z@2Iy-GG4c11L=h+)bXO;pfwi? zEet%{V_7q(fFBN;krgJorgb}4$>8q*r-3EMwCmX_^l6yO*XMQTNz%wghweewv7`h= zg~I&c^XSdJKEAt8x*T*^asUeo07(usJ9Rk-_du3Aka616bX%G5K(^IBj6v-vv_Zu+ zEV4M55%8aQ;dgOY1qma^?FzL3gJ72j$-c(3okuM%e@m)uep!R7-^-VC3|*`1;Rn20 z19C4_00>nyL=&DT|zSjDq)``))-7V4)@EXh)pdNxfDBWCt5 z5OsoKFk;igm&QK3`2fJ=20g{F@_i!_Mp#P-!6eiu);-k&OC6p=yVaU8j3ZY+RlgoW zQr)jrxc%rnhT|zILi3O;8y-i&c2*daXuJTZftns}qbcspfXj*jrKb{ITEEC4!fx+t zz|P9!ly60u@fTHb#r>JOj_FY00mZ!slI7S>VNoE@=GYZZ5F~89{roc6k0ZlxBvr^e zq)7SLLYk@`T1sgdi8j*D^@Cu}i?ReXbWro#7le6`(%0u30lu*0fp(713q9ofv`l+ z`-)0f4;KnwS_$KSR}ByN9y^8$$S*k~n2bYL|1_+wB421?y?1fE7G#roL^y#DC~f(Kif*3K|~sGGfb zji^HovWfv%4@@0RF@caKy!*sCs@8){*OkE;dRPD3SZnAzKt%gE$#2lusef;@q?l8K zNKH@+0BQ8){TxhdQ)tTIh451rkV#uos&Mfvj$hZ{b$je}r%Kc}SfBHvp*Y$8^lzM@ zibL~`z$keeed+uO>-I^&9h1=y;IB^QBqeBx5MlhkY;_!7eVjd575A-lmzZndAp(U8QdJM%I%$?0jJ49;9A zl*D^o78+0Iba;Aao!`yF9O5wTvYqGJi9$zckw$ov{JK)h@NaWnsc6b{ zGeZ*nSxHWFF9^i(l6t5FC=6#aMy(D>%;J54#Lgn0L|E)Lu-*vSA<6XYgk0eQl XP @@ -47,7 +46,6 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" - android:overScrollMode="never" android:orientation="vertical" app:layout_scrollFlags="enterAlwaysCollapsed" app:scrimAnimationDuration="10"> @@ -236,10 +234,8 @@ android:id="@+id/pNestedScroll" android:layout_width="match_parent" android:layout_height="match_parent" - android:overScrollMode="never" android:background="@color/clear_alpha" android:fillViewport="true" - android:isScrollContainer="true" android:measureAllChildren="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> @@ -248,20 +244,18 @@ android:id="@+id/pWebLayoutView" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/c_background" + android:background="@color/c_white" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - android:overScrollMode="never" app:layout_constraintTop_toBottomOf="@+id/pTopLayout"> + + lY6iqU*ZQHhO+cqb*ZBOipJ+W=uwr#zBAH90j$E{vnRkzO8iBy!AfP=<{ z1_Ap%h5VjMOh{4m(zq`y;xR$| zM$QUk9tliTR1h_xFi85QjFoCW>ybQXR_3%IG(?b)FXPAeWO~!q{&{&b#CZFJYb|Rl zCxgXeI-5(y?f6GG6p=XV{fv)ro)!uUD$UUqbOt#tHug(M%rJ=5RZhIe?+ag1D2IfJ ziHR%hFKHsN0`CDzk zvsKg;i=0k}lK5}rjDG#1dpMdTT>qfNMCY5oiSHJPkp!r?0%w_KB6`o+R7eX8W#H&C zUtc|t6syDjQUf=MDz748aiW!=H+PSSvNqdqWvYl}z@pCoEIKQ7nbX+_DsOo`EhU>K zs2uS8?ZKc^QV=`WE&Cv*XJ5w7uP_LBat{`lTf{*>{rG#%W;0>agx$2LlGsj5m@CR( zro5!leTktc*R5HgjAkP$m*q>#Rm%C;)!NGWmiui`-hgym zt&H?0aezc3PMaincR2L7^%U3YyJ7v1EnG0=39VE3FCLf0 zeDYN-)DcVinn9=Vcid$@kkj9Op26#_4vzh=QZq@81h7ZjyZs>?CS*ONSj~Flp`EpV zW;F3H%2^g1y&?BO`aoR>)E~RS2;Gr1H1i_)-arZ9&PHJ0FLCjvwncV<%u=EY?HB?o zq}R-}bC^a31%-u$=aq&vLZQi$?T*m=iUp=O!pclY0#97jJzg^0&>CvL!$%9Z)6gjF zHxJm6N=wp%dnyqvXAbtCD?KLrB-t#bOeiqq;%vtoi1!wa6YGvDQK3LpE9tpi&nkqa z($mHwQ7FdCFhUg61S+A>Rq!?3Rfx|nsg=eU*1Fn$Z_leDQ;(-8&J4CWpHv63W)zrJ zDkyiFEV%t04{e&Ws2l|P4qQ?eH5C1TWi?Or&V&^UB%oETB-M7Lf0cO=F?8w&vy zCf{89?vFfIpn`GnlUkvg`a-=w{&OZ`RaQpF>HGeuxy>qGX4Ki@yh5)e*G4fs`u%EB z(kYP^E{NF-GiKcGayF06pFdGR!eWi;Y$DscBB01uZ}{^~_@fz)!_B@Z6fWgebxBons5IeExH7=AY)#Ct6Zh@PeobvD0Lpt;~&?6?_b~* z9nV5-4|+ulp|4Teg=|38i#X?Pl<`%}2{dJTEq)d5NI6#CiCdZ;dwVNO3@58C{ypzx zqSu>k25NU1`&g*v(rAvq$fQ%s;y7_R1QAo0I-DWkuvt$7cIkP5XY{&#xYl^Nfd-{> zUVz)Kj1I#_^r$E)EyJr7-OqZU&c6Oh#;y3LEN zRxBBgaNpOKzh7cS4LIoO^|SeX$wR%8v>UCfjU~Z78g-zx*zGr0lepAwq<;fVU{a}# zL7IyqlwwEXAI9PF43_U2+E|Q9x?mSBpMj^d2dvTSceYA) z(FhS}Aj0jHS~K4rA@FCO3K%XN`cp6002@OfAk<|BuR}Ak)7~M?_^VRA+8Rn< zZi(`u&S>C#kF3&LP~2`w#9af==r*B%idj&c|00(+$N{0b;+Q~@F15~jsp1LQqv=8n zUHL|<-r{B(Rhh{3dU?x;>K3bdYC7i+>|!MXhcI75c$@!}Od|MMxY59p3QRsyXM$Th>SG*M+w7<}G#d3!pl43Q z3tTSeW7?SYZsE`-Vkj_`;)*=d4bb_hd+T@DKZ;vY!>jcs-htIV=-0XNGXwz;V~4>_NNaU zl(Cq~T)K&*$Sqsw^n92xVmi*@bTlSNhiP*<8ebC$hri0@aM+F!kHvQF^KNRen9)Zw z+7@4>5XzPrXDrDHM2oE^#VYJF$19}19iKmFh#`pljW!D%7o5o)@qv)A*y9etDq^`0 zQN%x}QtB8lk1-Oo?-Cui5t+~VSi!Hhcbz>>ct;BWHe0=lycy)dHNs}h&&$<1kB}_t zsr&o;+yTHa6jngYf~2BiV!jdn3mhmA2>3pbkweU4GWX;O@wNm9{^3GN$VPs(<))p% zE!$qv?3!`XziGvbQ?aA!|Bk{CJDwmWGL}~15=WjuZVnO?8!dkjJASkfpAB2RQp(n{_ zVH4HRCV0T0SCU!(BJ3I*VCi)MW<2%@p+k%H)+N1u%RtiFX9=*5bZPt3=d9b|c10%s zcV9N}6^pExR1V8I71M8ifqHmRaJ~(V=2~PZ5&CgrNR>_ZG(vY2_u#G0SPi(L(pUjp zO|pI;ozphGVx(7?vQ&IWoAs8(2z*kw^Z;WCF;c=01L|Zs>MzNH*#2jQbeD2>9^)C6 zQb&ndfA%kpmLg^NhJTAnf&LHzH5Wf6a#>LssNVK;d(nU$s6)$gaVX>~bso;I{=D8DL<^o%h4l%Gh=}EnDH2fC zX|o|2V?sHDolF}D4%0=yPg<@;rRdpM1BX^e7sXWtiVt{=<_X+lBaoLdQGrc72Km_kK5rT193-^t#G~HiM5#dw*TeqnRBn zK!#^o2dOae7xx^F!77eHOI2>cyCd_RFVU;0$3!NJ!cT$DK~8DKI*2KisAW*uYSE*I z=|*|p6Qb46dP#;{#h9*lcrL0e{!yoDZJs1)t#qZXT;+@ zAjYz*!B0ZD2!Qe~s+T38@A+J_1$DHU>X0xnGDt+_I_?u5a#dzsK&6CbHBw!(+I}{?O?p8mFWs=J9$e^EH*B zu^8euto+qDa5|iN&Peg__sEEHgzKu(RN3+SQttd^f(%pCZ{=!bVTVQeaw}a-QMT*c9cf-hFa*bRbm%4 z>LVwc9%hHfXp%eQ{qnY+;@Hn#ghowPTTDKRuPHa>b2eY>%xrPa7pb1tD20@f@wG%K zBJjgIo(aryJl0xmjjc2!em`vHf^C>OS=#sl294^W$=6b7QhJygLb_q*Y(D!PPxmm4 zcJ^#Y<5`i2vD0py7QgK^$+2T@-yw{>^@pUtzJh=X9<=GN+DyRmXL|vys<0>^EPNy=I^{#w@&#=OLN33zE$4$XJBRxr3`S zs$yhugnS+53dP87t=1*Yyg%6Do4OyzRM^s8si8;fYOV{pp9yF z;V&A?umU#$a^ZFzkk6pN*W-dhf&xqjyP@26kN=O)Q#YvdX1nY7aMWOwWyf(Zit4k} z*{c2iupRI= zr_6OLO*)N6jc}<#-ga?601G{sSFV|+CE(}D;q!rf`I9_UnGAcpebn}RV}mT?gK^=B z@$%UBq6~y1+(b(!Df=cU zrrGC}|8zoBn9VSFmm))6Q?Oai22>U)w^YFQb{k8%h)-8|RNej=v@;s^P*j|~56Ab4 zh>qIKg)jW|*j@d|0)3hkW{T($Pp=YB*sQ@XZ4>NG=Ou)3h63}>sI>L#o z0�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 I%9sWI2X4a