--- a/apengine/apeng/src/ApProtHandler.cpp Fri Sep 03 09:38:26 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,750 +0,0 @@
-/*
-* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Declaration of the CApProtHandler class.
-*
-*/
-
-
-// INCLUDE FILES
-#include <cdbcols.h>
-#include <commdb.h>
-#include <ApEngineConsts.h>
-
-#include <comms-infras/commdb/protection/protectdb.h>
-#include <comms-infras/commdb/protection/protectcpdb.h>
-
-#include <ApProtHandler.h>
-#include <ApListItem.h>
-#include <ApListItemList.h>
-#include <ApDataHandler.h>
-#include <ApSelect.h>
-
-#include "ApEngineCommons.h"
-#include "APEngineVariant.hrh"
-#include "ApEngineLogger.h"
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CApProtHandler::IsTableProtectedL
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CApProtHandler::IsTableProtectedL( CCommsDatabase* aDb )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::IsTableProtectedL" ) ) );
-
- TBool retval( EFalse );
- retval = IsTableProtectedL( aDb, TPtrC(WAP_ACCESS_POINT) );
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::IsTableProtectedL" ) ) );
- return retval;
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::IsApProtectedL
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CApProtHandler::IsApProtectedL( CCommsDatabase* aDb,
- TUint32 aUid )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::IsApProtectedL" ) ) );
-
- TBool retval( EFalse );
- retval = IsRecordProtectedL( aDb, TPtrC(WAP_ACCESS_POINT), aUid );
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::IsApProtectedL" ) ) );
- return retval;
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::ProtectItemL
-// ---------------------------------------------------------
-//
-EXPORT_C void CApProtHandler::ProtectItemL( CCommsDatabase* aDb,
- TUint32 aUid )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::ProtectItemL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- ProtectRecordL( aDb, TPtrC(WAP_ACCESS_POINT), aUid );
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::ProtectItemL" ) ) );
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::UnprotectItemL
-// ---------------------------------------------------------
-//
-EXPORT_C void CApProtHandler::UnprotectItemL( CCommsDatabase* aDb,
- TUint32 aUid )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::UnprotectItemL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- UnprotectRecordL( aDb, TPtrC(WAP_ACCESS_POINT), aUid );
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::UnprotectItemL" ) ) );
- }
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::ProtectTableL
-// ---------------------------------------------------------
-//
-EXPORT_C void CApProtHandler::ProtectTableL( CCommsDatabase* aDb )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::ProtectTableL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- ProtectTableL( aDb, TPtrC(WAP_ACCESS_POINT) );
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::ProtectTableL" ) ) );
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::UnprotectTableL
-// ---------------------------------------------------------
-//
-EXPORT_C void CApProtHandler::UnprotectTableL( CCommsDatabase* aDb )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::UnprotectTableL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- UnprotectTableL( aDb, TPtrC(WAP_ACCESS_POINT) );
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::UnprotectTableL" ) ) );
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::IsPreferencesProtectedL
-// ---------------------------------------------------------
-//
-EXPORT_C TBool CApProtHandler::IsPreferencesProtectedL( CCommsDatabase* aDb )
- {
- CLOG( ( EProtection, 0,
- _L( "-> CApProtHandler::IsPreferencesProtectedL" ) ) );
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
-
- CCommsDbProtectConnectPrefTableView* table =
- STATIC_CAST( CCommsDbProtectConnectPrefTableView*,
- db->OpenConnectionPrefTableLC());
-
- TInt err = table->GotoFirstRecord();
- if ( err != KErrNotFound )
- {
- User::LeaveIfError( err );
- }
-
- RDbRowSet::TAccess access;
- User::LeaveIfError( table->GetTableAccess( access ) );
- CleanupStack::PopAndDestroy( table );
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); //db
- }
-
- //access is EUpdatable if record is updatable
- TBool retval( !(access == RDbRowSet::EUpdatable) );
-
- CLOG( ( EProtection, 1,
- _L( "<- CApProtHandler::IsPreferencesProtectedL" ) ) );
- return retval;
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::ProtectPreferencesL
-// ---------------------------------------------------------
-//
-EXPORT_C void CApProtHandler::ProtectPreferencesL( CCommsDatabase* aDb )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::ProtectPreferencesL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
-
- CCommsDbProtectConnectPrefTableView* table =
- STATIC_CAST( CCommsDbProtectConnectPrefTableView*,
- db->OpenConnectionPrefTableLC());
-
- User::LeaveIfError( table->GotoFirstRecord() );
- User::LeaveIfError( table->ProtectTable() );
-
- CleanupStack::PopAndDestroy( table );
-
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); //db
- }
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::ProtectPreferencesL" ) ) );
- }
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::UnprotectPreferencesL
-// ---------------------------------------------------------
-//
-EXPORT_C void CApProtHandler::UnprotectPreferencesL( CCommsDatabase* aDb )
- {
- CLOG( ( EProtection, 0,
- _L( "-> CApProtHandler::UnprotectPreferencesL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
- CCommsDbProtectConnectPrefTableView* table =
- STATIC_CAST( CCommsDbProtectConnectPrefTableView*,
- db->OpenConnectionPrefTableLC());
-
- User::LeaveIfError( table->GotoFirstRecord() );
- User::LeaveIfError( table->UnprotectTable() );
-
- CleanupStack::PopAndDestroy( table );
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); //db
- }
-
- CLOG( ( EProtection, 1,
- _L( "<- CApProtHandler::UnprotectPreferencesL" ) ) );
- }
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::RemoveProtectedAccessPointsL
-// ---------------------------------------------------------
-//
-EXPORT_C void CApProtHandler::RemoveProtectedAccessPointsL(
- CCommsDatabase* aDb)
- {
- CLOG( ( EProtection, 0,
- _L( "-> CApProtHandler::RemoveProtectedAccessPointsL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- CCommsDatabase* db;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
- else
- {
- db = aDb;
- }
- DoRemoveProtectedAccessPointsL( *db );
-
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); // db
- }
-
- CLOG( ( EProtection, 1,
- _L( "<- CApProtHandler::RemoveProtectedAccessPointsL" ) ) );
- }
-
-// ================== OTHER MEMBER FUNCTIONS ===============
-
-
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::IsRecordProtectedL
-// ---------------------------------------------------------
-//
-TBool CApProtHandler::IsRecordProtectedL( CCommsDatabase* aDb,
- const TDesC& aTable,
- TUint32 aUid )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::IsRecordProtectedL" ) ) );
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
-
- TBool ownTransaction = ApCommons::StartPushedTransactionLC( *db, ETrue );
-
- CCommsDbProtectTableView* view =
- (CCommsDbProtectTableView*)db->OpenViewMatchingUintLC
- (
- aTable,
- TPtrC(COMMDB_ID),
- aUid
- );
-
- TInt err = view->GotoFirstRecord();
- User::LeaveIfError( err );
-
- TInt prot( EFalse );
- User::LeaveIfError( view->GetRecordAccess( prot ) );
-
- CleanupStack::PopAndDestroy( view ); // view
-
- if ( ownTransaction )
- {
- ApCommons::CommitTransaction( *db );
- CleanupStack::Pop(); // RollbackTransactionOnLeave
- }
-
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); // db
- }
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::IsRecordProtectedL" ) ) );
- return prot;
- }
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::ProtectRecordL
-// ---------------------------------------------------------
-//
-void CApProtHandler::ProtectRecordL( CCommsDatabase* aDb,
- const TDesC& aTable, TUint32 aUid )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::ProtectRecordL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
- TBool ownTransaction = ApCommons::StartPushedTransactionLC( *db, ETrue );
-
- CCommsDbProtectTableView* view =
- (CCommsDbProtectTableView*)db->OpenViewMatchingUintLC
- (
- aTable,
- TPtrC(COMMDB_ID),
- aUid
- );
-
- TInt err = view->GotoFirstRecord();
- User::LeaveIfError( err );
-
- User::LeaveIfError( view->ProtectRecord() );
-
- CleanupStack::PopAndDestroy( view ); // view
-
- if ( ownTransaction )
- {
- ApCommons::CommitTransaction( *db );
- CleanupStack::Pop(); // RollbackTransactionOnLeave
- }
-
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); // db
- }
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::ProtectRecordL" ) ) );
- }
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::UnprotectRecordL
-// ---------------------------------------------------------
-//
-void CApProtHandler::UnprotectRecordL( CCommsDatabase* aDb,
- const TDesC& aTable, TUint32 aUid )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::UnprotectRecordL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
- TBool ownTransaction = ApCommons::StartPushedTransactionLC( *db, ETrue );
-
- CCommsDbProtectTableView* view =
- (CCommsDbProtectTableView*)db->OpenViewMatchingUintLC
- (
- aTable,
- TPtrC(COMMDB_ID),
- aUid
- );
-
- TInt err = view->GotoFirstRecord();
- User::LeaveIfError( err );
-
- User::LeaveIfError( view->UnprotectRecord() );
-
- CleanupStack::PopAndDestroy( view ); // view
-
- if ( ownTransaction )
- {
- ApCommons::CommitTransaction( *db );
- CleanupStack::Pop(); // RollbackTransactionOnLeave
- }
-
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); // db
- }
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::UnprotectRecordL" ) ) );
- }
-
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::IsTableProtectedL
-// ---------------------------------------------------------
-//
-TBool CApProtHandler::IsTableProtectedL( CCommsDatabase* aDb,
- const TDesC& aTable )
- {
- CLOG( ( EProtection, 0,
- _L( "-> CApProtHandler::IsTableProtectedL(table)" ) ) );
-
- TBool retval( EFalse );
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
- TBool ownTransaction = ApCommons::StartPushedTransactionLC( *db, ETrue );
-
- CCommsDbProtectTableView* view =
- (CCommsDbProtectTableView*)db->OpenTableLC( aTable );
-
- RDbRowSet::TAccess aAccessType( RDbRowSet::EUpdatable );
-
- User::LeaveIfError( view->GetTableAccess( aAccessType) );
-
- if ( aAccessType == RDbRowSet::EUpdatable )
- {
- retval = EFalse;
- }
- else
- { // EReadOnly, EInsertOnly
- retval = ETrue;
- }
-
- CleanupStack::PopAndDestroy( view ); // view
-
- if ( ownTransaction )
- {
- ApCommons::CommitTransaction( *db );
- CleanupStack::Pop(); // RollbackTransactionOnLeave
- }
-
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); // db
- }
-
- CLOG( ( EProtection, 1,
- _L( "<- CApProtHandler::IsTableProtectedL(table)" ) ) );
- return retval;
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::ProtectTableL
-// ---------------------------------------------------------
-//
-void CApProtHandler::ProtectTableL( CCommsDatabase* aDb,
- const TDesC& aTable )
- {
- CLOG( ( EProtection, 0,
- _L( "-> CApProtHandler::ProtectTableL(table)" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
-
- CCommsDbProtectTableView* view =
- (CCommsDbProtectTableView*)db->OpenTableLC( aTable );
-
- TInt err = view->GotoFirstRecord();
- User::LeaveIfError( err );
-
- User::LeaveIfError( view->ProtectTable() );
-
- CleanupStack::PopAndDestroy( view ); // view
-
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); //db
- }
-
- CLOG( ( EProtection, 1,
- _L( "<- CApProtHandler::ProtectTableL(table)" ) ) );
- }
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::UnprotectTableL
-// ---------------------------------------------------------
-//
-void CApProtHandler::UnprotectTableL( CCommsDatabase* aDb,
- const TDesC& aTable )
- {
- CLOG( ( EProtection, 0,
- _L( "-> CApProtHandler::UnprotectTableL(table)" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- CCommsDatabase* db = aDb;
- if ( !aDb )
- {
- // create DB object
- db = CCommsDatabase::NewL( ETrue );
- CleanupStack::PushL( db );
- }
-// Follow related error rep. and act accordingly:
-// JBAH-58FCHH
-// TBool ownTransaction = ApCommons::StartPushedTransactionLC( *db, ETrue );
-
- CCommsDbProtectTableView* view =
- (CCommsDbProtectTableView*)db->OpenTableLC( aTable );
-
-
- TInt err = view->GotoFirstRecord();
- // If not found, no problem, Unprotect will be carried out correctly
- // But if no GotoFirstRecord, and no records, it will Panic...
- if ( err != KErrNotFound )
- {
- User::LeaveIfError( err );
- }
-
- User::LeaveIfError( view->UnprotectTable() );
-
- CleanupStack::PopAndDestroy( view ); // view
-
-
-/*
- if ( ownTransaction )
- {
- ApCommons::CommitTransaction( *db );
- CleanupStack::Pop(); // RollbackTransactionOnLeave
- }
-*/
- if ( !aDb )
- {
- CleanupStack::PopAndDestroy( db ); // db
- }
-
- CLOG( ( EProtection, 1,
- _L( "<- CApProtHandler::UnprotectTableL(table)" ) ) );
- }
-
-
-// ---------------------------------------------------------
-// CApProtHandler::GetProtectionStateL
-// ---------------------------------------------------------
-//
-TBool CApProtHandler::GetProtectionStateL( CCommsDbTableView& aTable )
- {
- CLOG( ( EProtection, 0, _L( "-> CApProtHandler::GetProtectionStateL" ) ) );
-
- TInt aAccess( 0 );
- User::LeaveIfError(
- ( (CCommsDbProtectTableView*) &aTable )->GetRecordAccess( aAccess ) );
-
- CLOG( ( EProtection, 1, _L( "<- CApProtHandler::GetProtectionStateL" ) ) );
- return aAccess;
- }
-
-
-
-// ---------------------------------------------------------
-// CApProtHandler::DoRemoveProtectedAccessPointsL
-// ---------------------------------------------------------
-//
-void CApProtHandler::DoRemoveProtectedAccessPointsL(
- CCommsDatabase& aDb)
- {
- CLOG( ( EProtection, 0,
- _L( "-> CApProtHandler::DoRemoveProtectedAccessPointsL" ) ) );
-
- if ( ApCommons::GetVariantL() & KApUiEditOnlyVPNs )
- {
- User::Leave( KErrNotSupported );
- }
-#ifdef __TEST_CDMA_WRITE_PROTECT
- User::Leave( KErrNotSupported );
-#endif // __TEST_CDMA_WRITE_PROTECT
-
- // TRANSACTION STARTING IS REMOVED UNTIL ERROR
- // JBAH-58FCHH IS CORRECTED BY SYMBIAN
- // start a transaction, just to make sure
-// TBool ownTransaction = ApCommons::StartPushedTransactionLC( aDb, ETrue );
-
- // make AP table updatable
- UnprotectTableL( &aDb );
-
- // remove all protected AP
- // first get a list of current AP-s
- CApListItemList* list = new( ELeave )CApListItemList();
- CleanupStack::PushL( list );
- CApDataHandler* handler = CApDataHandler::NewLC( aDb );
- CApSelect* sel =
- CApSelect::NewLC( aDb, KEApIspTypeAll, EApBearerTypeAllBearers,
- KEApSortNameAscending);
- sel->AllListItemDataL( *list );
- // now get protected ones and delete them
- TInt count( list->Count() );
- for( TInt i = 0; i<count; i++)
- {
- if ( list->At( i )->IsReadOnly() )
- {
- UnprotectItemL( &aDb, list->At( i )->Uid() );
- handler->RemoveAPL( list->At( i )->Uid() );
- }
- }
- CleanupStack::PopAndDestroy( 3, list ); // sel, handler, list
-
-/*
- if ( ownTransaction )
- {
- ApCommons::CommitTransaction( *aDb );
- CleanupStack::Pop(); // RollbackTransactionOnLeave
- }
-*/
-
- CLOG( ( EProtection, 1,
- _L( "<- CApProtHandler::DoRemoveProtectedAccessPointsL" ) ) );
- }
-
-
-// End of File