summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/cmscore
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2012-04-05 14:49:11 -0500
committerEndi Sukma Dewata <edewata@redhat.com>2012-04-09 10:03:25 -0500
commit7c7b9d023cd466c1771068badc020dab36beb553 (patch)
tree178877eb83e25336be7577953945fbdb0b9e1a15 /base/common/src/com/netscape/cmscore
parentda1e6e2f49f66fd46c8039ff1aa4386309fba8f4 (diff)
downloadpki-7c7b9d023cd466c1771068badc020dab36beb553.tar.gz
pki-7c7b9d023cd466c1771068badc020dab36beb553.tar.xz
pki-7c7b9d023cd466c1771068badc020dab36beb553.zip
Removed whitespaces from Java code.
Whitespaces in Java code have been removed with the following command: find . -not -path .git -name *.java -exec sed -i 's/[[:blank:]]\+$//' {} \; Ticket #134
Diffstat (limited to 'base/common/src/com/netscape/cmscore')
-rw-r--r--base/common/src/com/netscape/cmscore/apps/CMSEngine.java26
-rw-r--r--base/common/src/com/netscape/cmscore/apps/CommandQueue.java2
-rw-r--r--base/common/src/com/netscape/cmscore/apps/PKIServerEvent.java2
-rw-r--r--base/common/src/com/netscape/cmscore/apps/PKIServerListener.java2
-rw-r--r--base/common/src/com/netscape/cmscore/apps/Setup.java2
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java22
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/CertUserDBAuthentication.java16
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/ChallengePhraseAuthentication.java22
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/NullAuthentication.java14
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java16
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/SSLClientCertAuthentication.java8
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/VerifiedCert.java2
-rw-r--r--base/common/src/com/netscape/cmscore/authentication/VerifiedCerts.java2
-rw-r--r--base/common/src/com/netscape/cmscore/authorization/AuthzSubsystem.java22
-rw-r--r--base/common/src/com/netscape/cmscore/base/ArgBlock.java64
-rw-r--r--base/common/src/com/netscape/cmscore/base/FileConfigStore.java10
-rw-r--r--base/common/src/com/netscape/cmscore/base/PropConfigStore.java90
-rw-r--r--base/common/src/com/netscape/cmscore/base/SimpleProperties.java48
-rw-r--r--base/common/src/com/netscape/cmscore/base/SourceConfigStore.java6
-rw-r--r--base/common/src/com/netscape/cmscore/base/SubsystemLoader.java2
-rw-r--r--base/common/src/com/netscape/cmscore/cert/CertDateCompare.java2
-rw-r--r--base/common/src/com/netscape/cmscore/cert/CertPrettyPrint.java2
-rw-r--r--base/common/src/com/netscape/cmscore/cert/CertificatePair.java10
-rw-r--r--base/common/src/com/netscape/cmscore/cert/CrlCachePrettyPrint.java4
-rw-r--r--base/common/src/com/netscape/cmscore/cert/CrlPrettyPrint.java2
-rw-r--r--base/common/src/com/netscape/cmscore/cert/CrossCertPairSubsystem.java10
-rw-r--r--base/common/src/com/netscape/cmscore/cert/ExtPrettyPrint.java2
-rw-r--r--base/common/src/com/netscape/cmscore/cert/OidLoaderSubsystem.java6
-rw-r--r--base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java6
-rw-r--r--base/common/src/com/netscape/cmscore/cert/PrettyPrintResources.java2
-rw-r--r--base/common/src/com/netscape/cmscore/cert/PubKeyPrettyPrint.java2
-rw-r--r--base/common/src/com/netscape/cmscore/cert/X500NameSubsystem.java34
-rw-r--r--base/common/src/com/netscape/cmscore/connector/HttpConnFactory.java12
-rw-r--r--base/common/src/com/netscape/cmscore/connector/HttpConnection.java8
-rw-r--r--base/common/src/com/netscape/cmscore/connector/HttpConnector.java10
-rw-r--r--base/common/src/com/netscape/cmscore/connector/HttpPKIMessage.java4
-rw-r--r--base/common/src/com/netscape/cmscore/connector/HttpRequestEncoder.java2
-rw-r--r--base/common/src/com/netscape/cmscore/connector/LocalConnector.java14
-rw-r--r--base/common/src/com/netscape/cmscore/connector/Resender.java8
-rw-r--r--base/common/src/com/netscape/cmscore/crmf/CRMFParser.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/BigIntegerMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/ByteArrayMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/CRLDBSchema.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/CRLIssuingPointRecord.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/CRLRepository.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/CertDBSchema.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/CertRecord.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/CertRecordList.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/CertRecordMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/DBRegistry.java8
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/DBSSession.java16
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/DBSUtil.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/DBSearchResults.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java34
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/DateArrayMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/DateMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/IntegerMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/KeyDBSchema.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/KeyRecord.java12
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/KeyRecordList.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/KeyRecordMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/KeyStateMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/LdapFilterConverter.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/LongMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/MetaInfoMapper.java4
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/ObjectStreamMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/PublicKeyMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/ReplicaIDRepository.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/Repository.java28
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/RevocationInfo.java4
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/RevocationInfoMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/StringMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/StringVectorMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/X500NameMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/dbs/X509CertImplMapper.java2
-rw-r--r--base/common/src/com/netscape/cmscore/extensions/CMSExtensionsMap.java6
-rw-r--r--base/common/src/com/netscape/cmscore/jobs/CronItem.java6
-rw-r--r--base/common/src/com/netscape/cmscore/jobs/CronRange.java4
-rw-r--r--base/common/src/com/netscape/cmscore/jobs/JobCron.java10
-rw-r--r--base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java14
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapAndExpression.java4
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapConnModule.java2
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapOrExpression.java4
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapPredicateParser.java16
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapPublishModule.java4
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapRequestListener.java4
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapRule.java4
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java6
-rw-r--r--base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java6
-rw-r--r--base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnFactory.java20
-rw-r--r--base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnection.java2
-rw-r--r--base/common/src/com/netscape/cmscore/ldapconn/LdapAuthInfo.java6
-rw-r--r--base/common/src/com/netscape/cmscore/ldapconn/LdapBoundConnFactory.java16
-rw-r--r--base/common/src/com/netscape/cmscore/ldapconn/LdapConnInfo.java8
-rw-r--r--base/common/src/com/netscape/cmscore/ldapconn/LdapJssSSLSocketFactory.java2
-rw-r--r--base/common/src/com/netscape/cmscore/listeners/ListenerPlugin.java4
-rw-r--r--base/common/src/com/netscape/cmscore/logging/AuditEventFactory.java8
-rw-r--r--base/common/src/com/netscape/cmscore/logging/AuditFormat.java2
-rw-r--r--base/common/src/com/netscape/cmscore/logging/LogQueue.java12
-rw-r--r--base/common/src/com/netscape/cmscore/logging/LogSubsystem.java6
-rw-r--r--base/common/src/com/netscape/cmscore/logging/Logger.java42
-rw-r--r--base/common/src/com/netscape/cmscore/logging/SignedAuditEventFactory.java8
-rw-r--r--base/common/src/com/netscape/cmscore/logging/SignedAuditLogger.java2
-rw-r--r--base/common/src/com/netscape/cmscore/logging/SystemEventFactory.java8
-rw-r--r--base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java2
-rw-r--r--base/common/src/com/netscape/cmscore/notification/EmailResolverKeys.java10
-rw-r--r--base/common/src/com/netscape/cmscore/notification/EmailTemplate.java6
-rw-r--r--base/common/src/com/netscape/cmscore/notification/ReqCertEmailResolver.java6
-rw-r--r--base/common/src/com/netscape/cmscore/notification/ReqCertSANameEmailResolver.java6
-rw-r--r--base/common/src/com/netscape/cmscore/policy/AndExpression.java4
-rw-r--r--base/common/src/com/netscape/cmscore/policy/GeneralNameUtil.java6
-rw-r--r--base/common/src/com/netscape/cmscore/policy/GenericPolicyProcessor.java82
-rw-r--r--base/common/src/com/netscape/cmscore/policy/OrExpression.java4
-rw-r--r--base/common/src/com/netscape/cmscore/policy/PolicyPredicateParser.java16
-rw-r--r--base/common/src/com/netscape/cmscore/policy/PolicySet.java22
-rw-r--r--base/common/src/com/netscape/cmscore/policy/SimpleExpression.java6
-rw-r--r--base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java6
-rw-r--r--base/common/src/com/netscape/cmscore/realm/ACL.java26
-rw-r--r--base/common/src/com/netscape/cmscore/realm/ACLEntry.java32
-rw-r--r--base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java52
-rw-r--r--base/common/src/com/netscape/cmscore/registry/PluginInfo.java2
-rw-r--r--base/common/src/com/netscape/cmscore/registry/PluginRegistry.java4
-rw-r--r--base/common/src/com/netscape/cmscore/request/ARequestQueue.java54
-rw-r--r--base/common/src/com/netscape/cmscore/request/ARequestRecord.java2
-rw-r--r--base/common/src/com/netscape/cmscore/request/CertRequestConstants.java8
-rw-r--r--base/common/src/com/netscape/cmscore/request/RequestAttr.java2
-rw-r--r--base/common/src/com/netscape/cmscore/request/RequestQueue.java10
-rw-r--r--base/common/src/com/netscape/cmscore/request/RequestRecord.java28
-rw-r--r--base/common/src/com/netscape/cmscore/request/RequestRepository.java6
-rw-r--r--base/common/src/com/netscape/cmscore/request/RequestSubsystem.java8
-rw-r--r--base/common/src/com/netscape/cmscore/security/CASigningCert.java2
-rw-r--r--base/common/src/com/netscape/cmscore/security/CertificateInfo.java4
-rw-r--r--base/common/src/com/netscape/cmscore/security/KRATransportCert.java4
-rw-r--r--base/common/src/com/netscape/cmscore/security/OCSPSigningCert.java2
-rw-r--r--base/common/src/com/netscape/cmscore/security/PWCBsdr.java6
-rw-r--r--base/common/src/com/netscape/cmscore/security/PWsdrCache.java2
-rw-r--r--base/common/src/com/netscape/cmscore/security/RASigningCert.java4
-rw-r--r--base/common/src/com/netscape/cmscore/security/SSLCert.java4
-rw-r--r--base/common/src/com/netscape/cmscore/security/SSLSelfSignedCert.java4
-rw-r--r--base/common/src/com/netscape/cmscore/security/SubsystemCert.java2
-rw-r--r--base/common/src/com/netscape/cmscore/selftests/SelfTestOrderedInstance.java10
-rw-r--r--base/common/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java60
-rw-r--r--base/common/src/com/netscape/cmscore/usrgrp/CertDNCertUserLocator.java2
-rw-r--r--base/common/src/com/netscape/cmscore/usrgrp/ExactMatchCertUserLocator.java2
-rw-r--r--base/common/src/com/netscape/cmscore/usrgrp/Group.java2
-rw-r--r--base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java10
-rw-r--r--base/common/src/com/netscape/cmscore/usrgrp/User.java2
-rw-r--r--base/common/src/com/netscape/cmscore/util/Debug.java14
-rw-r--r--base/common/src/com/netscape/cmscore/util/FileDialogFilter.java2
-rw-r--r--base/common/src/com/netscape/cmscore/util/StatsSubsystem.java4
-rw-r--r--base/common/src/com/netscape/cmscore/util/UtilMessage.java26
-rw-r--r--base/common/src/com/netscape/cmscore/util/UtilResources.java2
154 files changed, 751 insertions, 751 deletions
diff --git a/base/common/src/com/netscape/cmscore/apps/CMSEngine.java b/base/common/src/com/netscape/cmscore/apps/CMSEngine.java
index e1981132d..2635541fa 100644
--- a/base/common/src/com/netscape/cmscore/apps/CMSEngine.java
+++ b/base/common/src/com/netscape/cmscore/apps/CMSEngine.java
@@ -200,7 +200,7 @@ public class CMSEngine implements ICMSEngine {
private String mConfigSDSessionId = null;
private Timer mSDTimer = null;
- // static subsystems - must be singletons
+ // static subsystems - must be singletons
private static SubsystemInfo[] mStaticSubsystems = {
new SubsystemInfo(
Debug.ID, Debug.getInstance()),
@@ -218,16 +218,16 @@ public class CMSEngine implements ICMSEngine {
OidLoaderSubsystem.ID, OidLoaderSubsystem.getInstance()),
new SubsystemInfo(
X500NameSubsystem.ID, X500NameSubsystem.getInstance()),
- // skip TP subsystem;
+ // skip TP subsystem;
// problem in needing dbsubsystem in constructor. and it's not used.
new SubsystemInfo(
RequestSubsystem.ID, RequestSubsystem.getInstance()),
};
- // dynamic subsystems are loaded at init time, not neccessarily singletons.
+ // dynamic subsystems are loaded at init time, not neccessarily singletons.
private static SubsystemInfo[] mDynSubsystems = null;
- // final static subsystems - must be singletons.
+ // final static subsystems - must be singletons.
private static SubsystemInfo[] mFinalSubsystems = {
new SubsystemInfo(
AuthSubsystem.ID, AuthSubsystem.getInstance()),
@@ -328,7 +328,7 @@ public class CMSEngine implements ICMSEngine {
/**
* initialize all static, dynamic and final static subsystems.
- *
+ *
* @param owner null
* @param config main config store.
* @exception EBaseException if any error occur in subsystems during
@@ -414,9 +414,9 @@ public class CMSEngine implements ICMSEngine {
/**
* Parse ACL resource attributes
- *
+ *
* @param resACLs same format as the resourceACLs attribute:
- *
+ *
* <PRE>
* <resource name>:<permission1,permission2,...permissionn>:
* <allow|deny> (<subset of the permission set>) <evaluator expression>
@@ -878,7 +878,7 @@ public class CMSEngine implements ICMSEngine {
throws EBaseException {
IConfigStore ssconfig = mConfig.getSubStore(PROP_SUBSYSTEM);
- // count number of dyn loaded subsystems.
+ // count number of dyn loaded subsystems.
Enumeration<String> ssnames = ssconfig.getSubStoreNames();
int nsubsystems = 0;
@@ -973,7 +973,7 @@ public class CMSEngine implements ICMSEngine {
/**
* Starts up all subsystems. subsystems must be initialized.
- *
+ *
* @exception EBaseException if any subsystem fails to startup.
*/
public void startup() throws EBaseException {
@@ -982,7 +982,7 @@ public class CMSEngine implements ICMSEngine {
startupSubsystems(mDynSubsystems);
startupSubsystems(mFinalSubsystems);
- // global admin servlet. (anywhere else more fit for this ?)
+ // global admin servlet. (anywhere else more fit for this ?)
mStartupTime = System.currentTimeMillis();
@@ -1103,7 +1103,7 @@ public class CMSEngine implements ICMSEngine {
while (in1.ready()) {
line = in1.readLine();
if (line != null)
- out1.println(lineParsing(line, newName));
+ out1.println(lineParsing(line, newName));
}
out1.close();
@@ -1601,7 +1601,7 @@ public class CMSEngine implements ICMSEngine {
t1.setDaemon(true);
t1.start();
-
+
// wait for command queue to emptied before proceeding to shutting down subsystems
Date time = new Date();
long startTime = time.getTime();
@@ -1764,7 +1764,7 @@ public class CMSEngine implements ICMSEngine {
/**
* if (!version.equals("pre4.2"))
* return;
- *
+ *
* Upgrade.perform(c);
**/
}
diff --git a/base/common/src/com/netscape/cmscore/apps/CommandQueue.java b/base/common/src/com/netscape/cmscore/apps/CommandQueue.java
index 6604fea5b..f3963edb8 100644
--- a/base/common/src/com/netscape/cmscore/apps/CommandQueue.java
+++ b/base/common/src/com/netscape/cmscore/apps/CommandQueue.java
@@ -56,7 +56,7 @@ public class CommandQueue implements Runnable, ICommandQueue {
* Overrides Thread.run(), calls batchPublish().
*/
public void run() {
- //int priority = Thread.MIN_PRIORITY;
+ //int priority = Thread.MIN_PRIORITY;
//Thread.currentThread().setPriority(priority);
/*-------------------------------------------------
** Loop until queue is empty
diff --git a/base/common/src/com/netscape/cmscore/apps/PKIServerEvent.java b/base/common/src/com/netscape/cmscore/apps/PKIServerEvent.java
index e815a9940..c49307a9e 100644
--- a/base/common/src/com/netscape/cmscore/apps/PKIServerEvent.java
+++ b/base/common/src/com/netscape/cmscore/apps/PKIServerEvent.java
@@ -20,7 +20,7 @@ package com.netscape.cmscore.apps;
/**
* A class represents a PKIServer event.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/apps/PKIServerListener.java b/base/common/src/com/netscape/cmscore/apps/PKIServerListener.java
index bef70ce86..9cfcb1b31 100644
--- a/base/common/src/com/netscape/cmscore/apps/PKIServerListener.java
+++ b/base/common/src/com/netscape/cmscore/apps/PKIServerListener.java
@@ -21,7 +21,7 @@ package com.netscape.cmscore.apps;
* A class represents a listener that listens to
* PKIServer event.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/apps/Setup.java b/base/common/src/com/netscape/cmscore/apps/Setup.java
index 3486ec40e..fecf024de 100644
--- a/base/common/src/com/netscape/cmscore/apps/Setup.java
+++ b/base/common/src/com/netscape/cmscore/apps/Setup.java
@@ -22,7 +22,7 @@ import com.netscape.certsrv.base.IConfigStore;
/**
* Select certificate server serices.
- *
+ *
* @author thomask
* @author nicolson
* @version $Revision$, $Date$
diff --git a/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java b/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java
index 64a09173f..5c27d8c6a 100644
--- a/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/authentication/AuthSubsystem.java
@@ -42,7 +42,7 @@ import com.netscape.cmscore.util.Debug;
/**
* Default authentication subsystem
* <P>
- *
+ *
* @author cfu
* @author lhsiao
* @version $Revision$, $Date$
@@ -74,7 +74,7 @@ public class AuthSubsystem implements IAuthSubsystem {
* Initializes the authentication subsystem from the config store.
* Load Authentication manager plugins, create and initialize
* initialize authentication manager instances.
- *
+ *
* @param owner The owner of this module.
* @param config The configuration store.
*/
@@ -84,7 +84,7 @@ public class AuthSubsystem implements IAuthSubsystem {
mLogger = CMS.getLogger();
mConfig = config;
- // hardcode admin and agent plugins required for the server to be
+ // hardcode admin and agent plugins required for the server to be
// functional.
AuthMgrPlugin newPlugin = null;
@@ -259,7 +259,7 @@ public class AuthSubsystem implements IAuthSubsystem {
/**
* Authenticate to the named authentication manager instance
* <p>
- *
+ *
* @param authCred authentication credentials subject to the
* requirements of each authentication manager
* @param authMgrName name of the authentication manager instance
@@ -309,7 +309,7 @@ public class AuthSubsystem implements IAuthSubsystem {
/**
* Gets configuration parameters for the given
* authentication manager plugin.
- *
+ *
* @param implName Name of the authentication plugin.
* @return Hashtable of required parameters.
*/
@@ -345,7 +345,7 @@ public class AuthSubsystem implements IAuthSubsystem {
/**
* Add an authentication manager instance.
- *
+ *
* @param name name of the authentication manager instance
* @param authMgr the authentication manager instance to be added
*/
@@ -363,7 +363,7 @@ public class AuthSubsystem implements IAuthSubsystem {
/**
* Gets the authentication manager instance of the specified name.
- *
+ *
* @param name name of the authentication manager instance
* @return the named authentication manager instance
*/
@@ -427,7 +427,7 @@ public class AuthSubsystem implements IAuthSubsystem {
/**
* Retrieves id (name) of this subsystem.
- *
+ *
* @return name of the authentication subsystem
*/
public String getId() {
@@ -438,7 +438,7 @@ public class AuthSubsystem implements IAuthSubsystem {
* Sets id string to this subsystem.
* <p>
* Use with caution. Should not do it when sharing with others
- *
+ *
* @param id name to be applied to an authentication sybsystem
*/
public void setId(String id) throws EBaseException {
@@ -485,7 +485,7 @@ public class AuthSubsystem implements IAuthSubsystem {
/**
* Returns the root configuration storage of this system.
* <P>
- *
+ *
* @return configuration store of this subsystem
*/
public IConfigStore getConfigStore() {
@@ -494,7 +494,7 @@ public class AuthSubsystem implements IAuthSubsystem {
/**
* gets the named authentication manager
- *
+ *
* @param name of the authentication manager
* @return the named authentication manager
*/
diff --git a/base/common/src/com/netscape/cmscore/authentication/CertUserDBAuthentication.java b/base/common/src/com/netscape/cmscore/authentication/CertUserDBAuthentication.java
index 84807430f..e9fb6c891 100644
--- a/base/common/src/com/netscape/cmscore/authentication/CertUserDBAuthentication.java
+++ b/base/common/src/com/netscape/cmscore/authentication/CertUserDBAuthentication.java
@@ -42,7 +42,7 @@ import com.netscape.cmscore.usrgrp.User;
* Maps a SSL client authenticate certificate to a user (agent) entry in the
* internal database.
* <P>
- *
+ *
* @author lhsiao
* @author cfu
* @version $Revision$, $Date$
@@ -80,7 +80,7 @@ public class CertUserDBAuthentication implements IAuthManager {
* initializes the CertUserDBAuthentication auth manager
* <p>
* called by AuthSubsystem init() method, when initializing all available authentication managers.
- *
+ *
* @param owner - The authentication subsystem that hosts this
* auth manager
* @param config - The configuration store used by the
@@ -129,11 +129,11 @@ public class CertUserDBAuthentication implements IAuthManager {
* authenticates user(agent) by certificate
* <p>
* called by other subsystems or their servlets to authenticate users (agents)
- *
+ *
* @param authCred - authentication credential that contains
* an usrgrp.Certificates of the user (agent)
* @return the authentication token that contains the following
- *
+ *
* @exception com.netscape.certsrv.base.EAuthsException any
* authentication failure or insufficient credentials
* @see com.netscape.certsrv.authentication.AuthToken
@@ -183,7 +183,7 @@ public class CertUserDBAuthentication implements IAuthManager {
throw new EBaseException(CMS.getUserMessage("CMS_BASE_INTERNAL_ERROR", e.toString()));
}
- // any unexpected error occurs like internal db down,
+ // any unexpected error occurs like internal db down,
// UGSubsystem only returns null for user.
if (user == null) {
CMS.debug("Authentication: cannot map certificate to user");
@@ -211,7 +211,7 @@ public class CertUserDBAuthentication implements IAuthManager {
* the servlets that handle agent operations to authenticate its
* users. It calls this method to know which are the
* required credentials from the user (e.g. Javascript form data)
- *
+ *
* @return attribute names in Vector
*/
public String[] getRequiredCreds() {
@@ -224,7 +224,7 @@ public class CertUserDBAuthentication implements IAuthManager {
* the Certificate Server Console to display the table for
* configuration purposes. CertUserDBAuthentication is currently not
* exposed in this case, so this method is not to be used.
- *
+ *
* @return configuration parameter names in Hashtable of Vectors
* where each hashtable entry's key is the substore name, value is a
* Vector of parameter names. If no substore, the parameter name
@@ -243,7 +243,7 @@ public class CertUserDBAuthentication implements IAuthManager {
/**
* gets the configuretion substore used by this authentication
* manager
- *
+ *
* @return configuration store
*/
public IConfigStore getConfigStore() {
diff --git a/base/common/src/com/netscape/cmscore/authentication/ChallengePhraseAuthentication.java b/base/common/src/com/netscape/cmscore/authentication/ChallengePhraseAuthentication.java
index a7d5329c0..f40145938 100644
--- a/base/common/src/com/netscape/cmscore/authentication/ChallengePhraseAuthentication.java
+++ b/base/common/src/com/netscape/cmscore/authentication/ChallengePhraseAuthentication.java
@@ -53,7 +53,7 @@ import com.netscape.cmsutil.util.Utils;
* internal database and further compares the challenge phrase with
* that from the EE input.
* <P>
- *
+ *
* @author cfu chrisho
* @version $Revision$, $Date$
*/
@@ -81,7 +81,7 @@ public class ChallengePhraseAuthentication implements IAuthManager {
private String mRequestor = null;
private MessageDigest mSHADigest = null;
- // request attributes hacks
+ // request attributes hacks
public static final String CHALLENGE_PHRASE = CRED_CHALLENGE;
public static final String SUBJECTNAME = "subjectName";
public static final String SERIALNUMBER = "serialNumber";
@@ -94,7 +94,7 @@ public class ChallengePhraseAuthentication implements IAuthManager {
* initializes the ChallengePhraseAuthentication auth manager
* <p>
* called by AuthSubsystem init() method, when initializing all available authentication managers.
- *
+ *
* @param name The name of this authentication manager instance.
* @param implName The name of the authentication manager plugin.
* @param config The configuration store for this authentication manager.
@@ -132,11 +132,11 @@ public class ChallengePhraseAuthentication implements IAuthManager {
* authenticates revocation of a certification by a challenge phrase
* <p>
* called by other subsystems or their servlets to authenticate a revocation request
- *
+ *
* @param authCred - authentication credential that contains
* a Certificate to revoke
* @return the authentication token that contains the request id
- *
+ *
* @exception EMissingCredential If a required credential for this
* authentication manager is missing.
* @exception EInvalidCredentials If credentials cannot be authenticated.
@@ -155,10 +155,10 @@ public class ChallengePhraseAuthentication implements IAuthManager {
AuthToken authToken = new AuthToken(this);
/*
- X509Certificate[] x509Certs =
+ X509Certificate[] x509Certs =
(X509Certificate[]) authCred.get(CRED_CERT);
if (x509Certs == null) {
- log(ILogger.LL_FAILURE,
+ log(ILogger.LL_FAILURE,
" missing cert credential.");
throw new EMissingCredential(CRED_CERT_SERIAL);
}
@@ -201,7 +201,7 @@ public class ChallengePhraseAuthentication implements IAuthManager {
/* maybe later
if (mCertDB.isCertificateRevoked(cert) != null) {
- log(ILogger.LL_FAILURE,
+ log(ILogger.LL_FAILURE,
"Certificate has already been revoked.");
// throw something else...cfu
throw new EInvalidCredentials();
@@ -336,7 +336,7 @@ public class ChallengePhraseAuthentication implements IAuthManager {
* the servlets that handle agent operations to authenticate its
* users. It calls this method to know which are the
* required credentials from the user (e.g. Javascript form data)
- *
+ *
* @return attribute names in Vector
*/
public String[] getRequiredCreds() {
@@ -349,7 +349,7 @@ public class ChallengePhraseAuthentication implements IAuthManager {
* the Certificate Server Console to display the table for
* configuration purposes. ChallengePhraseAuthentication is currently not
* exposed in this case, so this method is not to be used.
- *
+ *
* @return configuration parameter names in Hashtable of Vectors
* where each hashtable entry's key is the substore name, value is a
* Vector of parameter names. If no substore, the parameter name
@@ -368,7 +368,7 @@ public class ChallengePhraseAuthentication implements IAuthManager {
/**
* gets the configuretion substore used by this authentication
* manager
- *
+ *
* @return configuration store
*/
public IConfigStore getConfigStore() {
diff --git a/base/common/src/com/netscape/cmscore/authentication/NullAuthentication.java b/base/common/src/com/netscape/cmscore/authentication/NullAuthentication.java
index e124f1407..a7a1461cf 100644
--- a/base/common/src/com/netscape/cmscore/authentication/NullAuthentication.java
+++ b/base/common/src/com/netscape/cmscore/authentication/NullAuthentication.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.logging.ILogger;
/**
* This authentication does nothing but just returns an empty authToken.
* <P>
- *
+ *
* @author chrisho
* @version $Revision$, $Date$
*/
@@ -53,7 +53,7 @@ public class NullAuthentication implements IAuthManager {
* initializes the NullAuthentication auth manager
* <p>
* called by AuthSubsystem init() method, when initializing all available authentication managers.
- *
+ *
* @param name - Name assigned to this authentication manager instance.
* @param implName - Name of the authentication plugin.
* @param config - The configuration store used by the
@@ -72,7 +72,7 @@ public class NullAuthentication implements IAuthManager {
* authenticates nothing
* <p>
* called by other subsystems or their servlets to authenticate administrators
- *
+ *
* @param authCred Authentication credentials.
* "uid" and "pwd" are required.
* @return the authentication token (authToken) that contains the following
@@ -113,7 +113,7 @@ public class NullAuthentication implements IAuthManager {
* required by this authentication manager. Generally used by
* servlets that use this authentication manager, to retrieve
* required credentials from the user (e.g. Javascript form data)
- *
+ *
* @return attribute names in Vector
*/
public String[] getRequiredCreds() {
@@ -123,7 +123,7 @@ public class NullAuthentication implements IAuthManager {
/**
* Get the list of configuration parameter names
* required by this authentication manager. In this case, an empty list.
- *
+ *
* @return String array of configuration parameters.
*/
public String[] getConfigParams() {
@@ -139,7 +139,7 @@ public class NullAuthentication implements IAuthManager {
/**
* gets the configuration substore used by this authentication
* manager
- *
+ *
* @return configuration store
*/
public IConfigStore getConfigStore() {
@@ -148,7 +148,7 @@ public class NullAuthentication implements IAuthManager {
/**
* Log a message.
- *
+ *
* @param level The logging level.
* @param msg The message to log.
*/
diff --git a/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java b/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java
index f20bd5f07..5b6418c00 100644
--- a/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java
+++ b/base/common/src/com/netscape/cmscore/authentication/PasswdUserDBAuthentication.java
@@ -48,7 +48,7 @@ import com.netscape.cmscore.util.Debug;
* Authentications by checking the uid and password against the
* database.
* <P>
- *
+ *
* @author lhsiao, cfu
* @version $Revision$, $Date$
*/
@@ -81,7 +81,7 @@ public class PasswdUserDBAuthentication implements IAuthManager {
* initializes the PasswdUserDBAuthentication auth manager
* <p>
* called by AuthSubsystem init() method, when initializing all available authentication managers.
- *
+ *
* @param name - Name assigned to this authentication manager instance.
* @param implName - Name of the authentication plugin.
* @param config - The configuration store used by the
@@ -110,7 +110,7 @@ public class PasswdUserDBAuthentication implements IAuthManager {
* authenticates administratrators by LDAP uid/pwd
* <p>
* called by other subsystems or their servlets to authenticate administrators
- *
+ *
* @param authCred Authentication credentials.
* "uid" and "pwd" are required.
* @return the authentication token (authToken) that contains the following
@@ -127,7 +127,7 @@ public class PasswdUserDBAuthentication implements IAuthManager {
throws EMissingCredential, EInvalidCredentials, EBaseException {
AuthToken authToken = new AuthToken(this);
- // make sure the required credentials are provided
+ // make sure the required credentials are provided
String uid = (String) authCred.get(CRED_UID);
CMS.debug("Authentication: UID=" + uid);
if (uid == null) {
@@ -219,7 +219,7 @@ public class PasswdUserDBAuthentication implements IAuthManager {
* required by this authentication manager. Generally used by
* servlets that use this authentication manager, to retrieve
* required credentials from the user (e.g. Javascript form data)
- *
+ *
* @return attribute names in Vector
*/
public String[] getRequiredCreds() {
@@ -229,7 +229,7 @@ public class PasswdUserDBAuthentication implements IAuthManager {
/**
* Get the list of configuration parameter names
* required by this authentication manager. In this case, an empty list.
- *
+ *
* @return String array of configuration parameters.
*/
public String[] getConfigParams() {
@@ -252,7 +252,7 @@ public class PasswdUserDBAuthentication implements IAuthManager {
/**
* gets the configuretion substore used by this authentication
* manager
- *
+ *
* @return configuration store
*/
public IConfigStore getConfigStore() {
@@ -261,7 +261,7 @@ public class PasswdUserDBAuthentication implements IAuthManager {
/**
* Log a message.
- *
+ *
* @param level The logging level.
* @param msg The message to log.
*/
diff --git a/base/common/src/com/netscape/cmscore/authentication/SSLClientCertAuthentication.java b/base/common/src/com/netscape/cmscore/authentication/SSLClientCertAuthentication.java
index 3f0d7a87b..183cebcfb 100644
--- a/base/common/src/com/netscape/cmscore/authentication/SSLClientCertAuthentication.java
+++ b/base/common/src/com/netscape/cmscore/authentication/SSLClientCertAuthentication.java
@@ -49,7 +49,7 @@ import com.netscape.cmscore.util.Debug;
/**
* SSL client based authentication.
* <P>
- *
+ *
* @author chrisho
* @version $Revision$, $Date$
*/
@@ -224,7 +224,7 @@ public class SSLClientCertAuthentication implements IAuthManager {
* Returns a list of configuration parameter names.
* The list is passed to the configuration console so instances of
* this implementation can be configured through the console.
- *
+ *
* @return String array of configuration parameter names.
*/
public String[] getConfigParams() {
@@ -233,7 +233,7 @@ public class SSLClientCertAuthentication implements IAuthManager {
/**
* Returns array of required credentials for this authentication manager.
- *
+ *
* @return Array of required credentials.
*/
public String[] getRequiredCreds() {
@@ -268,7 +268,7 @@ public class SSLClientCertAuthentication implements IAuthManager {
/**
* Gets the configuration substore used by this authentication manager
- *
+ *
* @return configuration store
*/
public IConfigStore getConfigStore() {
diff --git a/base/common/src/com/netscape/cmscore/authentication/VerifiedCert.java b/base/common/src/com/netscape/cmscore/authentication/VerifiedCert.java
index 173d69f89..0ada86e75 100644
--- a/base/common/src/com/netscape/cmscore/authentication/VerifiedCert.java
+++ b/base/common/src/com/netscape/cmscore/authentication/VerifiedCert.java
@@ -24,7 +24,7 @@ import com.netscape.certsrv.apps.CMS;
/**
* class storing verified certificate.
- *
+ *
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/authentication/VerifiedCerts.java b/base/common/src/com/netscape/cmscore/authentication/VerifiedCerts.java
index 52ce91fdf..01c455464 100644
--- a/base/common/src/com/netscape/cmscore/authentication/VerifiedCerts.java
+++ b/base/common/src/com/netscape/cmscore/authentication/VerifiedCerts.java
@@ -23,7 +23,7 @@ import netscape.security.x509.X509CertImpl;
/**
* class storing verified certificates.
- *
+ *
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/authorization/AuthzSubsystem.java b/base/common/src/com/netscape/cmscore/authorization/AuthzSubsystem.java
index 16bc40e29..344de6cf9 100644
--- a/base/common/src/com/netscape/cmscore/authorization/AuthzSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/authorization/AuthzSubsystem.java
@@ -40,7 +40,7 @@ import com.netscape.cmscore.util.Debug;
/**
* Default authorization subsystem
* <P>
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -71,7 +71,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
* Initializes the authorization subsystem from the config store.
* Load Authorization manager plugins, create and initialize
* initialize authorization manager instances.
- *
+ *
* @param owner The owner of this module.
* @param config The configuration store.
*/
@@ -184,7 +184,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
* authMgrzAccessInit is for servlets who want to initialize their
* own authorization information before full operation. It is supposed
* to be called during the init() method of a servlet.
- *
+ *
* @param authzMgrName The authorization manager name
* @param accessInfo the access information to be initialized. currently it's acl string in the format specified in
* the authorization manager
@@ -211,7 +211,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
/**
* Authorization to the named authorization manager instance
- *
+ *
* @param authzMgrName The authorization manager name
* @param authToken the authenticaton token associated with a user
* @param resource the resource protected by the authorization system
@@ -266,7 +266,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
/**
* Gets configuration parameters for the given
* authorization manager plugin.
- *
+ *
* @param implName Name of the authorization plugin.
* @return Hashtable of required parameters.
*/
@@ -303,7 +303,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
/**
* Add an authorization manager instance.
- *
+ *
* @param name name of the authorization manager instance
* @param authzMgr the authorization manager instance to be added
*/
@@ -321,7 +321,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
/**
* Gets the authorization manager instance of the specified name.
- *
+ *
* @param name name of the authorization manager instance
* @return the named authorization manager instance
*/
@@ -385,7 +385,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
/**
* Retrieves id (name) of this subsystem.
- *
+ *
* @return name of the authorization subsystem
*/
public String getId() {
@@ -396,7 +396,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
* Sets id string to this subsystem.
* <p>
* Use with caution. Should not do it when sharing with others
- *
+ *
* @param id name to be applied to an authorization sybsystem
*/
public void setId(String id) throws EBaseException {
@@ -444,7 +444,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
/**
* Returns the root configuration storage of this system.
* <P>
- *
+ *
* @return configuration store of this subsystem
*/
public IConfigStore getConfigStore() {
@@ -453,7 +453,7 @@ public class AuthzSubsystem implements IAuthzSubsystem {
/**
* gets the named authorization manager
- *
+ *
* @param name of the authorization manager
* @return the named authorization manager
*/
diff --git a/base/common/src/com/netscape/cmscore/base/ArgBlock.java b/base/common/src/com/netscape/cmscore/base/ArgBlock.java
index 62b5971a4..889ad123e 100644
--- a/base/common/src/com/netscape/cmscore/base/ArgBlock.java
+++ b/base/common/src/com/netscape/cmscore/base/ArgBlock.java
@@ -38,7 +38,7 @@ import com.netscape.cmsutil.util.Utils;
* This class represents a set of indexed arguments.
* Each argument is indexed by a key, which can be
* used during the argument retrieval.
- *
+ *
* @version $Revision$, $Date$
*/
public class ArgBlock implements IArgBlock {
@@ -66,7 +66,7 @@ public class ArgBlock implements IArgBlock {
*==========================================================*/
/**
* Constructs an argument block with the given hashtable values.
- *
+ *
* @param realm the type of argblock - used for debugging the values
*/
public ArgBlock(String realm, Hashtable<String, String> httpReq) {
@@ -76,7 +76,7 @@ public class ArgBlock implements IArgBlock {
/**
* Constructs an argument block with the given hashtable values.
- *
+ *
* @param httpReq hashtable keys and values
*/
public ArgBlock(Hashtable<String, String> httpReq) {
@@ -109,7 +109,7 @@ public class ArgBlock implements IArgBlock {
/**
* Checks if this argument block contains the given key.
- *
+ *
* @param n key
* @return true if key is present
*/
@@ -124,7 +124,7 @@ public class ArgBlock implements IArgBlock {
/**
* Adds string-based value into this argument block.
- *
+ *
* @param n key
* @param v value
* @return value
@@ -139,7 +139,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as string.
- *
+ *
* @param n key
* @return argument value as string
* @exception EBaseException failed to retrieve value
@@ -157,7 +157,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as string.
- *
+ *
* @param n key
* @param def default value to be returned if key is not present
* @return argument value as string
@@ -175,7 +175,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as integer.
- *
+ *
* @param n key
* @return argument value as int
* @exception EBaseException failed to retrieve value
@@ -197,7 +197,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as integer.
- *
+ *
* @param n key
* @param def default value to be returned if key is not present
* @return argument value as int
@@ -217,7 +217,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as big integer.
- *
+ *
* @param n key
* @return argument value as big integer
* @exception EBaseException failed to retrieve value
@@ -244,7 +244,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as big integer.
- *
+ *
* @param n key
* @param def default value to be returned if key is not present
* @return argument value as big integer
@@ -259,7 +259,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as object
- *
+ *
* @param n key
* @return argument value as object
* @exception EBaseException failed to retrieve value
@@ -274,7 +274,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument value as object
- *
+ *
* @param n key
* @param def default value to be returned if key is not present
* @return argument value as object
@@ -289,7 +289,7 @@ public class ArgBlock implements IArgBlock {
/**
* Gets boolean value. They should be "true" or "false".
- *
+ *
* @param name name of the input type
* @return boolean type: <code>true</code> or <code>false</code>
* @exception EBaseException failed to retrieve value
@@ -311,7 +311,7 @@ public class ArgBlock implements IArgBlock {
/**
* Gets boolean value. They should be "true" or "false".
- *
+ *
* @param name name of the input type
* @return boolean type: <code>true</code> or <code>false</code>
*/
@@ -328,7 +328,7 @@ public class ArgBlock implements IArgBlock {
/**
* Gets KeyGenInfo
- *
+ *
* @param name name of the input type
* @param verify true if signature validation is required
* @exception EBaseException
@@ -355,7 +355,7 @@ public class ArgBlock implements IArgBlock {
/**
* Gets PKCS10 request. This pkcs10 attribute does not
* contain header information.
- *
+ *
* @param name name of the input type
* @return pkcs10 request
* @exception EBaseException failed to retrieve value
@@ -389,7 +389,7 @@ public class ArgBlock implements IArgBlock {
/**
* Gets PKCS10 request. This pkcs10 attribute does not
* contain header information.
- *
+ *
* @param name name of the input type
* @param def default PKCS10
* @return pkcs10 request
@@ -420,7 +420,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves PKCS10
- *
+ *
* @param name name of the input type
* @param checkheader true if header must be present
* @return PKCS10 object
@@ -454,7 +454,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves PKCS10
- *
+ *
* @param name name of the input type
* @param checkheader true if header must be present
* @param def default PKCS10
@@ -489,7 +489,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves PKCS10
- *
+ *
* @param name name of the input type
* @param def default PKCS10
* @return PKCS10 object
@@ -516,7 +516,7 @@ public class ArgBlock implements IArgBlock {
/**
* Sets argument into this block.
- *
+ *
* @param name key
* @param ob value
*/
@@ -526,7 +526,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves argument.
- *
+ *
* @param name key
* @return object value
*/
@@ -537,7 +537,7 @@ public class ArgBlock implements IArgBlock {
/**
* Deletes argument by the given key.
- *
+ *
* @param name key
*/
public void delete(String name) {
@@ -546,7 +546,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves a list of argument keys.
- *
+ *
* @return a list of string-based keys
*/
public Enumeration<String> getElements() {
@@ -555,7 +555,7 @@ public class ArgBlock implements IArgBlock {
/**
* Retrieves a list of argument keys.
- *
+ *
* @return a list of string-based keys
*/
public Enumeration<String> elements() {
@@ -564,7 +564,7 @@ public class ArgBlock implements IArgBlock {
/**
* Adds long-type arguments to this block.
- *
+ *
* @param n key
* @param v value
* @return value
@@ -575,7 +575,7 @@ public class ArgBlock implements IArgBlock {
/**
* Adds integer-type arguments to this block.
- *
+ *
* @param n key
* @param v value
* @return value
@@ -586,7 +586,7 @@ public class ArgBlock implements IArgBlock {
/**
* Adds boolean-type arguments to this block.
- *
+ *
* @param n key
* @param v value
* @return value
@@ -601,7 +601,7 @@ public class ArgBlock implements IArgBlock {
/**
* Adds integer-type arguments to this block.
- *
+ *
* @param n key
* @param v value
* @param radix radix
@@ -617,7 +617,7 @@ public class ArgBlock implements IArgBlock {
/**
* Unwrap PKCS10 Package
- *
+ *
* @param request string formated PKCS10 request
* @exception EBaseException
* @return Base64Encoded PKCS10 request
@@ -688,7 +688,7 @@ public class ArgBlock implements IArgBlock {
/**
* Decode Der encoded PKCS10 certifictae Request
- *
+ *
* @param base64Request Base64 Encoded Certificate Request
* @exception Exception
* @return PKCS10
diff --git a/base/common/src/com/netscape/cmscore/base/FileConfigStore.java b/base/common/src/com/netscape/cmscore/base/FileConfigStore.java
index f0c52866e..393547f53 100644
--- a/base/common/src/com/netscape/cmscore/base/FileConfigStore.java
+++ b/base/common/src/com/netscape/cmscore/base/FileConfigStore.java
@@ -40,7 +40,7 @@ import com.netscape.cmsutil.util.Utils;
* <P>
* Note that a LdapConfigStore can be implemented so that it reads the configuration stores from the Ldap directory.
* <P>
- *
+ *
* @version $Revision$, $Date$
* @see PropConfigStore
*/
@@ -56,7 +56,7 @@ public class FileConfigStore extends PropConfigStore implements
/**
* Constructs a file configuration store.
* <P>
- *
+ *
* @param fileName file name
* @exception EBaseException failed to create file configuration
*/
@@ -73,7 +73,7 @@ public class FileConfigStore extends PropConfigStore implements
/**
* Loads property file into memory.
* <P>
- *
+ *
* @param fileName file name
* @exception EBaseException failed to load configuration
*/
@@ -93,7 +93,7 @@ public class FileConfigStore extends PropConfigStore implements
* <filename>.<current_time_in_milliseconds>.
* Commits the current properties to the configuration file.
* <P>
- *
+ *
* @param backup
*/
public void commit(boolean createBackup) throws EBaseException {
@@ -151,7 +151,7 @@ public class FileConfigStore extends PropConfigStore implements
* Note that the superclass's save is synchronized. It means no properties can be altered (inserted) at the saving
* time.
* <P>
- *
+ *
* @param fileName filename
* @exception EBaseException failed to save configuration
*/
diff --git a/base/common/src/com/netscape/cmscore/base/PropConfigStore.java b/base/common/src/com/netscape/cmscore/base/PropConfigStore.java
index 1e46d3ef3..ee4370053 100644
--- a/base/common/src/com/netscape/cmscore/base/PropConfigStore.java
+++ b/base/common/src/com/netscape/cmscore/base/PropConfigStore.java
@@ -44,18 +44,18 @@ import com.netscape.cmsutil.util.Utils;
* property names. The current property prefix is kept in
* mStoreName and the mSource usually points back to another
* occurance of the same PropConfigStore, with longer mStoreName. IE
- *
+ *
* <PRE>
* cms.ca0.http.service0 -> mSource=PropConfigStore ->
* cms.ca0.http -> mSource=PropConfigStore ->
* cms.ca0 -> mSource=PropConfigStore ->
* cms -> mSource=SourceConfigStore -> Properties
* </PRE>
- *
+ *
* The chain ends when the store name is reduced down to it's original
* value.
* <P>
- *
+ *
* @version $Revision$, $Date$
*/
public class PropConfigStore implements IConfigStore, Cloneable {
@@ -84,7 +84,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
* be a brand new store without properties. The subclass
* must be a ISourceConfigStore.
* <P>
- *
+ *
* @param storeName property store name
* @exception EBaseException failed to create configuration
*/
@@ -99,7 +99,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
* that stores all the parameters. Each substore only
* store a substore name, and a reference to the source.
* <P>
- *
+ *
* @param storeName store name
* @param prop list of properties
* @exception EBaseException failed to create configuration
@@ -112,7 +112,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Returns the name of this store.
* <P>
- *
+ *
* @return store name
*/
public String getName() {
@@ -122,7 +122,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves a property from the configuration file.
* <P>
- *
+ *
* @param name property name
* @return property value
*/
@@ -134,7 +134,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
* Retrieves a property from the configuration file. Does not prepend
* the config store name to the property.
* <P>
- *
+ *
* @param name property name
* @return property value
*/
@@ -147,7 +147,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
* values wont be updated to the file until save
* method is invoked.
* <P>
- *
+ *
* @param name property name
* @param value property value
*/
@@ -157,7 +157,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Removes a property from the configuration file.
- *
+ *
* @param name property name
*/
public void remove(String name) {
@@ -167,7 +167,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Returns an enumeration of the config store's keys, hidding the store
* name.
- *
+ *
* @see java.util.Hashtable#elements
* @see java.util.Enumeration
*/
@@ -180,7 +180,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves the hashtable where all the properties are kept.
- *
+ *
* @return hashtable
*/
public Hashtable<String, Object> hashtable() {
@@ -204,7 +204,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
* Fills the given hash table with all key/value pairs in the current
* config store, removing the config store name prefix
* <P>
- *
+ *
* @param h the hashtable
*/
private synchronized void enumerate(Hashtable<String, Object> h) {
@@ -226,7 +226,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Reads a config store from an input stream.
- *
+ *
* @param in input stream where properties are located
* @exception IOException failed to load
*/
@@ -236,7 +236,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Stores this config store to the specified output stream.
- *
+ *
* @param out outputstream where the properties are saved
* @param header optional header information to be saved
*/
@@ -246,7 +246,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves a property value.
- *
+ *
* @param name property key
* @return property value
* @exception EBaseException failed to retrieve value
@@ -258,7 +258,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
CMS.traceHashKey(mDebugType, getFullName(name), "<notpresent>");
throw new EPropertyNotFound(CMS.getUserMessage("CMS_BASE_GET_PROPERTY_FAILED", getName() + "." + name));
}
- // should we check for empty string ?
+ // should we check for empty string ?
// if (str.length() == 0) {
// throw new EPropertyNotDefined(getName() + "." + name);
// }
@@ -276,7 +276,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves a String from the configuration file.
* <P>
- *
+ *
* @param name property name
* @param defval the default object to return if name does not exist
* @return property value
@@ -295,7 +295,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Puts property value into this configuration store.
- *
+ *
* @param name property key
* @param value property value
*/
@@ -306,10 +306,10 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves a byte array from the configuration file.
* <P>
- *
+ *
* @param name property name
* @exception IllegalArgumentException if name is not set or is null.
- *
+ *
* @return property value
*/
public byte[] getByteArray(String name) throws EBaseException {
@@ -325,11 +325,11 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves a byte array from the configuration file.
* <P>
- *
+ *
* @param name property name
* @param defval the default byte array to return if name does
* not exist
- *
+ *
* @return property value
*/
public byte[] getByteArray(String name, byte defval[])
@@ -349,7 +349,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Puts byte array into this configuration store.
- *
+ *
* @param name property key
* @param value byte array
*/
@@ -373,7 +373,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves boolean-based property value.
- *
+ *
* @param name property key
* @return boolean value
* @exception EBaseException failed to retrieve
@@ -401,7 +401,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves boolean-based property value.
- *
+ *
* @param name property key
* @param defval default value
* @return boolean value
@@ -425,7 +425,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Puts boolean value into the configuration store.
- *
+ *
* @param name property key
* @param value property value
*/
@@ -439,7 +439,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves integer value.
- *
+ *
* @param name property key
* @return property value
* @exception EBaseException failed to retrieve value
@@ -465,7 +465,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves integer value.
- *
+ *
* @param name property key
* @param defval default value
* @return property value
@@ -488,7 +488,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Puts an integer value.
- *
+ *
* @param name property key
* @param val property value
* @exception EBaseException failed to retrieve value
@@ -499,7 +499,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves big integer value.
- *
+ *
* @param name property key
* @return property value
* @exception EBaseException failed to retrieve value
@@ -529,7 +529,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves integer value.
- *
+ *
* @param name property key
* @param defval default value
* @return property value
@@ -551,7 +551,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Puts a big integer value.
- *
+ *
* @param name property key
* @param val default value
*/
@@ -562,7 +562,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Creates a new sub store.
* <P>
- *
+ *
* @param name substore name
* @return substore
*/
@@ -585,7 +585,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Removes a sub store.
* <p>
- *
+ *
* @param name substore name
*/
@SuppressWarnings("unchecked")
@@ -610,21 +610,21 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves a sub store. A substore contains a list
* of properties and substores. For example,
- *
+ *
* <PRE>
* cms.ldap.host=ds.netscape.com
* cms.ldap.port=389
* </PRE>
- *
+ *
* "ldap" is a substore in above example. If the
* substore property itself is set, this method
* will treat the value as a reference. For example,
- *
+ *
* <PRE>
* cms.ldap = kms.ldap
* </PRE>
* <P>
- *
+ *
* @param name substore name
* @return substore
*/
@@ -645,7 +645,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Retrieves a list of property names.
- *
+ *
* @return a list of string-based property names
*/
public Enumeration<String> getPropertyNames() {
@@ -674,7 +674,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Returns a list of sub store names.
* <P>
- *
+ *
* @return list of substore names
*/
public Enumeration<String> getSubStoreNames() {
@@ -704,7 +704,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
* Retrieves the source configuration store where
* the properties are stored.
* <P>
- *
+ *
* @return source configuration store
*/
public ISourceConfigStore getSourceConfigStore() {
@@ -732,7 +732,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Converts the substore parameters.
- *
+ *
* @param name property name
* @return fill property name
*/
@@ -745,7 +745,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Cloning of property configuration store.
- *
+ *
* @return a new configuration store
*/
public Object clone() {
@@ -783,7 +783,7 @@ public class PropConfigStore implements IConfigStore, Cloneable {
/**
* Commits properties into the file.
- *
+ *
* @param createBackup true if create backup
* @exception EBaseException failed to commit properties
*/
diff --git a/base/common/src/com/netscape/cmscore/base/SimpleProperties.java b/base/common/src/com/netscape/cmscore/base/SimpleProperties.java
index 7b1c6bae4..cc1bd6201 100644
--- a/base/common/src/com/netscape/cmscore/base/SimpleProperties.java
+++ b/base/common/src/com/netscape/cmscore/base/SimpleProperties.java
@@ -38,13 +38,13 @@ import java.util.Hashtable;
* <p>
* A property list can contain another property list as its "defaults"; this second property list is searched if the
* property key is not found in the original property list.
- *
+ *
* Because <code>Properties</code> inherits from <code>Hashtable</code>, the <code>put</code> and <code>putAll</code>
* methods can be applied to a <code>Properties</code> object. Their use is strongly discouraged as they allow the
* caller to insert entries whose keys or values are not <code>Strings</code>. The <code>setProperty</code> method
* should be used instead. If the <code>store</code> or <code>save</code> method is called on a "compromised"
* <code>Properties</code> object that contains a non- <code>String</code> key or value, the call will fail.
- *
+ *
*/
public class SimpleProperties extends Hashtable<String, String> {
@@ -56,7 +56,7 @@ public class SimpleProperties extends Hashtable<String, String> {
/**
* A property list that contains default values for any keys not
* found in this property list.
- *
+ *
* @serial
*/
protected SimpleProperties defaults;
@@ -70,7 +70,7 @@ public class SimpleProperties extends Hashtable<String, String> {
/**
* Creates an empty property list with the specified defaults.
- *
+ *
* @param defaults the defaults.
*/
public SimpleProperties(SimpleProperties defaults) {
@@ -81,7 +81,7 @@ public class SimpleProperties extends Hashtable<String, String> {
* Calls the hashtable method <code>put</code>. Provided for
* parallelism with the getProperties method. Enforces use of
* strings for property keys and values.
- *
+ *
* @since JDK1.2
*/
public synchronized Object setProperty(String key, String value) {
@@ -123,43 +123,43 @@ public class SimpleProperties extends Hashtable<String, String> {
* As an example, each of the following four lines specifies the key <code>"Truth"</code> and the associated element
* value <code>"Beauty"</code>:
* <p>
- *
+ *
* <pre>
* Truth = Beauty
* Truth:Beauty
* Truth :Beauty
* </pre>
- *
+ *
* As another example, the following three lines specify a single property:
* <p>
- *
+ *
* <pre>
* fruits apple, banana, pear, \
* cantaloupe, watermelon, \
* kiwi, mango
* </pre>
- *
+ *
* The key is <code>"fruits"</code> and the associated element is:
* <p>
- *
+ *
* <pre>
* &quot;apple, banana, pear, cantaloupe, watermelon,kiwi, mango&quot;
* </pre>
- *
+ *
* Note that a space appears before each <code>\</code> so that a space will appear after each comma in the final
* result; the <code>\</code>, line terminator, and leading whitespace on the continuation line are merely discarded
* and are <i>not</i> replaced by one or more other characters.
* <p>
* As a third example, the line:
* <p>
- *
+ *
* <pre>
* cheeses
* </pre>
- *
+ *
* specifies that the key is <code>"cheeses"</code> and the associated element is the empty string.
* <p>
- *
+ *
* @param in the input stream.
* @exception IOException if an error occurred when reading from the
* input stream.
@@ -262,12 +262,12 @@ public class SimpleProperties extends Hashtable<String, String> {
/**
* Calls the <code>store(OutputStream out, String header)</code> method
* and suppresses IOExceptions that were thrown.
- *
+ *
* @deprecated This method does not throw an IOException if an I/O error
* occurs while saving the property list. As of JDK 1.2, the preferred
* way to save a properties list is via the <code>store(OutputStream out,
* String header)</code> method.
- *
+ *
* @param out an output stream.
* @param header a description of the property list.
* @exception ClassCastException if this <code>Properties</code> object
@@ -308,7 +308,7 @@ public class SimpleProperties extends Hashtable<String, String> {
* <p>
* After the entries have been written, the output stream is flushed. The output stream remains open after this
* method returns.
- *
+ *
* @param out an output stream.
* @param header a description of the property list.
* @exception ClassCastException if this <code>Properties</code> object
@@ -343,7 +343,7 @@ public class SimpleProperties extends Hashtable<String, String> {
* If the key is not found in this property list, the default property list,
* and its defaults, recursively, are then checked. The method returns <code>null</code> if the property is not
* found.
- *
+ *
* @param key the property key.
* @return the value in this property list with the specified key value.
* @see java.util.Properties#defaults
@@ -360,10 +360,10 @@ public class SimpleProperties extends Hashtable<String, String> {
* If the key is not found in this property list, the default property list,
* and its defaults, recursively, are then checked. The method returns the
* default value argument if the property is not found.
- *
+ *
* @param key the hashtable key.
* @param defaultValue a default value.
- *
+ *
* @return the value in this property list with the specified key value.
* @see java.util.Properties#defaults
*/
@@ -376,7 +376,7 @@ public class SimpleProperties extends Hashtable<String, String> {
/**
* Returns an enumeration of all the keys in this property list, including
* the keys in the default property list.
- *
+ *
* @return an enumeration of all the keys in this property list, including
* the keys in the default property list.
* @see java.util.Enumeration
@@ -392,7 +392,7 @@ public class SimpleProperties extends Hashtable<String, String> {
/**
* Prints this property list out to the specified output stream.
* This method is useful for debugging.
- *
+ *
* @param out an output stream.
*/
public void list(PrintStream out) {
@@ -414,7 +414,7 @@ public class SimpleProperties extends Hashtable<String, String> {
/**
* Prints this property list out to the specified output stream.
* This method is useful for debugging.
- *
+ *
* @param out an output stream.
* @since JDK1.1
*/
@@ -442,7 +442,7 @@ public class SimpleProperties extends Hashtable<String, String> {
/**
* Enumerates all key/value pairs in the specified hastable.
- *
+ *
* @param h the hashtable
*/
private synchronized void enumerate(Hashtable<String, String> h) {
diff --git a/base/common/src/com/netscape/cmscore/base/SourceConfigStore.java b/base/common/src/com/netscape/cmscore/base/SourceConfigStore.java
index 3c4ec6992..546b97591 100644
--- a/base/common/src/com/netscape/cmscore/base/SourceConfigStore.java
+++ b/base/common/src/com/netscape/cmscore/base/SourceConfigStore.java
@@ -23,7 +23,7 @@ import com.netscape.certsrv.base.ISourceConfigStore;
* This class is is a wrapper to hide the Properties methods from
* the PropConfigStore. Lucky for us, Properties already implements
* almost every thing ISourceConfigStore requires.
- *
+ *
* @version $Revision$, $Date$
* @see java.util.Properties
*/
@@ -37,7 +37,7 @@ public class SourceConfigStore extends SimpleProperties implements ISourceConfig
/**
* Retrieves a property from the config store
* <P>
- *
+ *
* @param name property name
* @return property value
*/
@@ -48,7 +48,7 @@ public class SourceConfigStore extends SimpleProperties implements ISourceConfig
/**
* Puts a property into the config store.
* <P>
- *
+ *
* @param name property name
* @param value property value
* @return
diff --git a/base/common/src/com/netscape/cmscore/base/SubsystemLoader.java b/base/common/src/com/netscape/cmscore/base/SubsystemLoader.java
index a9307e858..8cd2990a1 100644
--- a/base/common/src/com/netscape/cmscore/base/SubsystemLoader.java
+++ b/base/common/src/com/netscape/cmscore/base/SubsystemLoader.java
@@ -27,7 +27,7 @@ import com.netscape.certsrv.base.ISubsystem;
/**
* A class represents a subsystem loader.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/CertDateCompare.java b/base/common/src/com/netscape/cmscore/cert/CertDateCompare.java
index 7078c3440..30f806ea2 100644
--- a/base/common/src/com/netscape/cmscore/cert/CertDateCompare.java
+++ b/base/common/src/com/netscape/cmscore/cert/CertDateCompare.java
@@ -24,7 +24,7 @@ import netscape.security.x509.X509CertImpl;
/**
* Compares validity dates for use in sorting.
- *
+ *
* @author kanda
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/CertPrettyPrint.java b/base/common/src/com/netscape/cmscore/cert/CertPrettyPrint.java
index 726fa5e14..ecd1a4a60 100644
--- a/base/common/src/com/netscape/cmscore/cert/CertPrettyPrint.java
+++ b/base/common/src/com/netscape/cmscore/cert/CertPrettyPrint.java
@@ -24,7 +24,7 @@ import com.netscape.certsrv.base.ICertPrettyPrint;
/**
* This class will display the certificate content in predefined
* format.
- *
+ *
* @author Jack Pan-Chen
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/CertificatePair.java b/base/common/src/com/netscape/cmscore/cert/CertificatePair.java
index b8f958be5..0a68da2d9 100644
--- a/base/common/src/com/netscape/cmscore/cert/CertificatePair.java
+++ b/base/common/src/com/netscape/cmscore/cert/CertificatePair.java
@@ -35,7 +35,7 @@ import com.netscape.certsrv.cert.ICrossCertPairSubsystem;
/**
* This class implements CertificatePair used for Cross Certification
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -48,7 +48,7 @@ public class CertificatePair implements ASN1Value {
* construct a CertificatePair. It doesn't matter which is
* forward and which is reverse in the parameters. It will figure
* it out
- *
+ *
* @param cert1 one X509Certificate
* @param cert2 one X509Certificate
*/
@@ -76,7 +76,7 @@ public class CertificatePair implements ASN1Value {
* construct a CertificatePair. It doesn't matter which is
* forward and which is reverse in the parameters. It will figure
* it out
- *
+ *
* @param cert1 one certificate byte array
* @param cert2 one certificate byte array
*/
@@ -114,7 +114,7 @@ public class CertificatePair implements ASN1Value {
/* It looks the DN's returned are not normalized and fail
* comparison
- if ((c1.getIssuerDN().equals((Object) caCert.getSubjectDN())))
+ if ((c1.getIssuerDN().equals((Object) caCert.getSubjectDN())))
debug("myCA signed c1");
else {
debug("c1 issuerDN="+c1.getIssuerDN().toString());
@@ -144,7 +144,7 @@ public class CertificatePair implements ASN1Value {
if ((c1.getIssuerDN().equals((Object) caCert.getSubjectDN()))
&& (caCert.getSubjectDN().equals((Object) c2.getSubjectDN())))
-
+
{
return false;
} else if ((c2.getIssuerDN().equals((Object) caCert.getSubjectDN()))
diff --git a/base/common/src/com/netscape/cmscore/cert/CrlCachePrettyPrint.java b/base/common/src/com/netscape/cmscore/cert/CrlCachePrettyPrint.java
index 6d838b70d..532211c42 100644
--- a/base/common/src/com/netscape/cmscore/cert/CrlCachePrettyPrint.java
+++ b/base/common/src/com/netscape/cmscore/cert/CrlCachePrettyPrint.java
@@ -36,7 +36,7 @@ import com.netscape.certsrv.ca.ICertificateAuthority;
/**
* This class will display the certificate content in predefined
* format.
- *
+ *
* @author Andrew Wnuk
* @version $Revision$, $Date$
*/
@@ -70,7 +70,7 @@ public class CrlCachePrettyPrint implements ICRLPrettyPrint {
* This method return string representation of the certificate
* revocation list in predefined format using specified client
* local. I18N Support.
- *
+ *
* @param clientLocale Locale to be used for localization
* @return string representation of the certificate
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/CrlPrettyPrint.java b/base/common/src/com/netscape/cmscore/cert/CrlPrettyPrint.java
index 1d6048c8d..2dc947641 100644
--- a/base/common/src/com/netscape/cmscore/cert/CrlPrettyPrint.java
+++ b/base/common/src/com/netscape/cmscore/cert/CrlPrettyPrint.java
@@ -24,7 +24,7 @@ import com.netscape.certsrv.base.ICRLPrettyPrint;
/**
* This class will display the certificate content in predefined
* format.
- *
+ *
* @author Andrew Wnuk
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/CrossCertPairSubsystem.java b/base/common/src/com/netscape/cmscore/cert/CrossCertPairSubsystem.java
index 8d8a337c5..9b950e239 100644
--- a/base/common/src/com/netscape/cmscore/cert/CrossCertPairSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/cert/CrossCertPairSubsystem.java
@@ -60,7 +60,7 @@ import com.netscape.cmscore.ldapconn.LdapBoundConnFactory;
* If it happens that the above two cases finds its pairing
* cert already there, then a CertifiatePair is created and put
* in the internal db "crosscertificatepair;binary" attribute
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -141,7 +141,7 @@ public class CrossCertPairSubsystem implements ICrossCertPairSubsystem {
* If it happens that it finds its pairing
* cert already there, then a CertifiatePair is created and put
* in the internal db "crosscertificatepair;binary" attribute
- *
+ *
* @param certBytes cert in byte array to be imported
*/
public void importCert(byte[] certBytes) throws EBaseException {
@@ -166,7 +166,7 @@ public class CrossCertPairSubsystem implements ICrossCertPairSubsystem {
* If it happens that it finds its pairing
* cert already there, then a CertifiatePair is created and put
* in the internal db "crosscertificatepair;binary" attribute
- *
+ *
* @param certBytes cert in byte array to be imported
*/
public synchronized void importCert(Object certObj) throws EBaseException {
@@ -180,7 +180,7 @@ public class CrossCertPairSubsystem implements ICrossCertPairSubsystem {
// cert
// 2. does cert2's subject match this CA's subject?
// 3. other valididity checks: is this a ca cert? Is this
- // cert still valid? If the issuer is not yet trusted, let it
+ // cert still valid? If the issuer is not yet trusted, let it
// be.
// get certs from internal db to see if we find a pair
@@ -277,7 +277,7 @@ public class CrossCertPairSubsystem implements ICrossCertPairSubsystem {
/**
* are cert1 and cert2 cross-signed certs?
- *
+ *
* @param cert1 the cert for comparison in our internal db
* @param cert2 the cert that's being considered
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/ExtPrettyPrint.java b/base/common/src/com/netscape/cmscore/cert/ExtPrettyPrint.java
index 5f5c66a48..10ac3fbb1 100644
--- a/base/common/src/com/netscape/cmscore/cert/ExtPrettyPrint.java
+++ b/base/common/src/com/netscape/cmscore/cert/ExtPrettyPrint.java
@@ -24,7 +24,7 @@ import com.netscape.certsrv.base.IExtPrettyPrint;
/**
* This class will display the certificate content in predefined
* format.
- *
+ *
* @author Andrew Wnuk
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/OidLoaderSubsystem.java b/base/common/src/com/netscape/cmscore/cert/OidLoaderSubsystem.java
index dfd7dbab8..c4983d7c8 100644
--- a/base/common/src/com/netscape/cmscore/cert/OidLoaderSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/cert/OidLoaderSubsystem.java
@@ -38,7 +38,7 @@ import com.netscape.certsrv.base.ISubsystem;
import com.netscape.cmscore.util.Debug;
/**
- *
+ *
* @author stevep
* @version $Revision
*/
@@ -52,7 +52,7 @@ public class OidLoaderSubsystem implements ISubsystem {
private static final String PROP_CLASS = "class";
/**
- *
+ *
*/
private OidLoaderSubsystem() {
}
@@ -122,7 +122,7 @@ public class OidLoaderSubsystem implements ISubsystem {
* Note that individual subsystem should be initialized in a separated thread if it has dependency on the
* initialization of other subsystems.
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration store
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java b/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java
index 669200575..7b7ce64f9 100644
--- a/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java
+++ b/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java
@@ -22,7 +22,7 @@ import com.netscape.certsrv.base.IPrettyPrintFormat;
/**
* This class will display the certificate content in predefined
* format.
- *
+ *
* @author Andrew Wnuk
* @version $Revision$, $Date$
*/
@@ -76,7 +76,7 @@ public class PrettyPrintFormat implements IPrettyPrintFormat {
/**
* Provide white space indention
* stevep - speed improvements. Factor of 10 improvement
- *
+ *
* @param numSpace number of white space to be returned
* @return white spaces
*/
@@ -92,7 +92,7 @@ public class PrettyPrintFormat implements IPrettyPrintFormat {
/**
* Convert Byte Array to Hex String Format
* stevep - speedup by factor of 8
- *
+ *
* @param byte array of data to hexify
* @param indentSize number of spaces to prepend before each line
* @param lineLen number of bytes to output on each line (0
diff --git a/base/common/src/com/netscape/cmscore/cert/PrettyPrintResources.java b/base/common/src/com/netscape/cmscore/cert/PrettyPrintResources.java
index 361f50b47..0756664d9 100644
--- a/base/common/src/com/netscape/cmscore/cert/PrettyPrintResources.java
+++ b/base/common/src/com/netscape/cmscore/cert/PrettyPrintResources.java
@@ -24,7 +24,7 @@ import netscape.security.x509.KeyUsageExtension;
/**
* Resource Boundle for the Pretty Print
- *
+ *
* @author Jack Pan-Chen
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/cert/PubKeyPrettyPrint.java b/base/common/src/com/netscape/cmscore/cert/PubKeyPrettyPrint.java
index 9ea581812..5c5b13084 100644
--- a/base/common/src/com/netscape/cmscore/cert/PubKeyPrettyPrint.java
+++ b/base/common/src/com/netscape/cmscore/cert/PubKeyPrettyPrint.java
@@ -22,7 +22,7 @@ import java.security.PublicKey;
/**
* This class will display the certificate content in predefined
* format.
- *
+ *
* @author Jack Pan-Chen
* @author Andrew Wnuk
* @version $Revision$, $Date$
diff --git a/base/common/src/com/netscape/cmscore/cert/X500NameSubsystem.java b/base/common/src/com/netscape/cmscore/cert/X500NameSubsystem.java
index de5e233c9..0d58973f8 100644
--- a/base/common/src/com/netscape/cmscore/cert/X500NameSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/cert/X500NameSubsystem.java
@@ -41,7 +41,7 @@ import com.netscape.cmscore.util.Debug;
* <li>Add X500Name (string to oid) maps for attributes that are not supported by default.
* <li>Specify an order for encoding Directory Strings other than the default.
* </ul>
- *
+ *
* @author lhsiao
* @version $Revision$
*/
@@ -84,12 +84,12 @@ public class X500NameSubsystem implements ISubsystem {
* All paramters are optional.
* <ul>
* <li>Change encoding order of Directory Strings:
- *
+ *
* <pre>
* X500Name.directoryStringEncodingOrder=order seperated by commas
* For example: Printable,BMPString,UniversalString.
* </pre>
- *
+ *
* Possible values are:
* <ul>
* <li>Printable
@@ -100,34 +100,34 @@ public class X500NameSubsystem implements ISubsystem {
* </ul>
* <p>
* <li>Add X500Name attributes:
- *
+ *
* <pre>
* X500Name.attr.attribute-name.oid=n.n.n.n
* X500Name.attr.attribute-name.class=value converter class
* </pre>
- *
+ *
* The value converter class converts a string to a ASN.1 value. It must implement
* netscape.security.x509.AVAValueConverter interface. Converter classes provided in CMS are:
- *
+ *
* <pre>
- * netscape.security.x509.PrintableConverter -
- * Converts to a Printable String value. String must have only
- * printable characters.
- * netscape.security.x509.IA5StringConverter -
+ * netscape.security.x509.PrintableConverter -
+ * Converts to a Printable String value. String must have only
+ * printable characters.
+ * netscape.security.x509.IA5StringConverter -
* Converts to a IA5String value. String must have only IA5String
- * characters.
- * netscape.security.x509.DirStrConverter -
- * Converts to a Directory (v3) String. String is expected to
+ * characters.
+ * netscape.security.x509.DirStrConverter -
+ * Converts to a Directory (v3) String. String is expected to
* be in Directory String format according to rfc2253.
- * netscape.security.x509.GenericValueConverter -
+ * netscape.security.x509.GenericValueConverter -
* Converts string character by character in the following order
* from smaller character sets to broadest character set.
* Printable, IA5String, BMPString, Universal String.
* </pre>
- *
+ *
* </ul>
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration store
*/
@@ -142,7 +142,7 @@ public class X500NameSubsystem implements ISubsystem {
// get order for encoding directory strings if any.
setDirStrEncodingOrder();
- // load x500 name maps
+ // load x500 name maps
loadX500NameAttrMaps();
}
diff --git a/base/common/src/com/netscape/cmscore/connector/HttpConnFactory.java b/base/common/src/com/netscape/cmscore/connector/HttpConnFactory.java
index 01bb0f879..2d8c98ee4 100644
--- a/base/common/src/com/netscape/cmscore/connector/HttpConnFactory.java
+++ b/base/common/src/com/netscape/cmscore/connector/HttpConnFactory.java
@@ -37,7 +37,7 @@ public class HttpConnFactory {
private ILogger mLogger = CMS.getLogger();
private int mNumConns = 0; // number of available conns in array
- private int mTotal = 0; // total num conns
+ private int mTotal = 0; // total num conns
private IHttpConnection mMasterConn = null; // master connection object.
private IHttpConnection mConns[];
private IAuthority mSource = null;
@@ -59,7 +59,7 @@ public class HttpConnFactory {
/**
* Constructor for HttpConnFactory
- *
+ *
* @param minConns minimum number of connections to have available
* @param maxConns max number of connections to have available. This is
* @param serverInfo server connection info - host, port, etc.
@@ -79,7 +79,7 @@ public class HttpConnFactory {
/**
* initialize parameters obtained from either constructor or
* config store
- *
+ *
* @param minConns minimum number of connection handls to have available.
* @param maxConns maximum total number of connections to ever have.
* @param connInfo ldap connection info.
@@ -177,7 +177,7 @@ public class HttpConnFactory {
* returnConn() method.
* The best thing to do is to put returnConn in a finally clause so it
* always gets called. For example,
- *
+ *
* <pre>
* IHttpConnection c = null;
* try {
@@ -204,7 +204,7 @@ public class HttpConnFactory {
* Returns null if maximum number of connections reached.
* The best thing to do is to put returnConn in a finally clause so it
* always gets called. For example,
- *
+ *
* <pre>
* IHttpConnnection c = null;
* try {
@@ -260,7 +260,7 @@ public class HttpConnFactory {
* This is mandatory after a getConn().
* The best thing to do is to put returnConn in a finally clause so it
* always gets called. For example,
- *
+ *
* <pre>
* IHttpConnection c = null;
* try {
diff --git a/base/common/src/com/netscape/cmscore/connector/HttpConnection.java b/base/common/src/com/netscape/cmscore/connector/HttpConnection.java
index 95cdbc779..7a65c1760 100644
--- a/base/common/src/com/netscape/cmscore/connector/HttpConnection.java
+++ b/base/common/src/com/netscape/cmscore/connector/HttpConnection.java
@@ -73,7 +73,7 @@ public class HttpConnection implements IHttpConnection {
CMS.debug("HttpConnection: connecting to " + dest.getHost() + ":" + dest.getPort());
String host = dest.getHost();
// we could have a list of host names in the host parameters
- // the format is, for example,
+ // the format is, for example,
// "directory.knowledge.com:1050 people.catalog.com 199.254.1.2"
if (host != null && host.indexOf(' ') != -1) {
// try to do client-side failover
@@ -116,7 +116,7 @@ public class HttpConnection implements IHttpConnection {
// Insert end
/**
* sends a request to remote RA/CA, returning the result.
- *
+ *
* @throws EBaseException if request could not be encoded
*/
public IPKIMessage send(IPKIMessage tomsg)
@@ -222,8 +222,8 @@ public class HttpConnection implements IHttpConnection {
}
}
- // decode reply.
- // if reply is bad, error is thrown and request will be resent
+ // decode reply.
+ // if reply is bad, error is thrown and request will be resent
String pcontent = p.getContent();
if (Debug.ON) {
diff --git a/base/common/src/com/netscape/cmscore/connector/HttpConnector.java b/base/common/src/com/netscape/cmscore/connector/HttpConnector.java
index cdb315795..90979f870 100644
--- a/base/common/src/com/netscape/cmscore/connector/HttpConnector.java
+++ b/base/common/src/com/netscape/cmscore/connector/HttpConnector.java
@@ -70,7 +70,7 @@ public class HttpConnector implements IConnector {
}
// mConn = CMS.getHttpConnection(dest, mFactory);
- // this will start resending past requests in parallel.
+ // this will start resending past requests in parallel.
mResender = CMS.getResender(mSource, nickName, dest, resendInterval);
mResendThread = new Thread(mResender, "HttpConnector");
}
@@ -95,7 +95,7 @@ public class HttpConnector implements IConnector {
CMS.debug("can't create new HttpConnFactory");
}
- // this will start resending past requests in parallel.
+ // this will start resending past requests in parallel.
mResender = CMS.getResender(mSource, nickName, dest, resendInterval);
mResendThread = new Thread(mResender, "HttpConnector");
}
@@ -140,7 +140,7 @@ public class HttpConnector implements IConnector {
CMS.debug("reply status " + replyStatus);
// non terminal states.
- // XXX hack: don't resend get revocation info requests since
+ // XXX hack: don't resend get revocation info requests since
// resent results are ignored.
if ((!r.getRequestType().equals(
IRequest.GETREVOCATIONINFO_REQUEST)) &&
@@ -169,7 +169,7 @@ public class HttpConnector implements IConnector {
r.setExtData(IRequest.RESULT, IRequest.RES_ERROR);
r.setExtData(IRequest.ERROR,
new EBaseException(CMS.getUserMessage("CMS_BASE_REMOTE_AUTHORITY_ERROR")));
- // XXX overload svcerrors for now.
+ // XXX overload svcerrors for now.
Vector<String> policyErrors = r.getExtDataInStringVector(IRequest.ERRORS);
if (policyErrors != null && policyErrors.size() > 0) {
@@ -189,7 +189,7 @@ public class HttpConnector implements IConnector {
CMS.debug("HttpConn: error sending request to cert " + e.toString());
mSource.log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_CONNECTOR_SEND_REQUEST", r.getRequestId()
.toString(), mDest.getHost(), Integer.toString(mDest.getPort())));
- // mSource.log(ILogger.LL_INFO,
+ // mSource.log(ILogger.LL_INFO,
// "Queing " + r.getRequestId() + " for resend.");
return false;
} finally {
diff --git a/base/common/src/com/netscape/cmscore/connector/HttpPKIMessage.java b/base/common/src/com/netscape/cmscore/connector/HttpPKIMessage.java
index ea235391d..ddf23378a 100644
--- a/base/common/src/com/netscape/cmscore/connector/HttpPKIMessage.java
+++ b/base/common/src/com/netscape/cmscore/connector/HttpPKIMessage.java
@@ -64,7 +64,7 @@ public class HttpPKIMessage implements IHttpPKIMessage {
* copy contents of request to make a simple name/value message.
*/
public void fromRequest(IRequest r) {
- // actually don't need to copy source id since
+ // actually don't need to copy source id since
reqType = r.getRequestType();
reqId = r.getRequestId().toString();
reqStatus = r.getRequestStatus().toString();
@@ -96,7 +96,7 @@ public class HttpPKIMessage implements IHttpPKIMessage {
*/
@SuppressWarnings("unchecked")
public void toRequest(IRequest r) {
- // id, type and status
+ // id, type and status
// type had to have been set in instantiation.
// id is checked but not reset.
// request status cannot be set, but can be looked at.
diff --git a/base/common/src/com/netscape/cmscore/connector/HttpRequestEncoder.java b/base/common/src/com/netscape/cmscore/connector/HttpRequestEncoder.java
index 76d39b3ed..bb18030dc 100644
--- a/base/common/src/com/netscape/cmscore/connector/HttpRequestEncoder.java
+++ b/base/common/src/com/netscape/cmscore/connector/HttpRequestEncoder.java
@@ -58,7 +58,7 @@ public class HttpRequestEncoder implements IRequestEncoder {
result = is.readObject();
} catch (ClassNotFoundException e) {
- // XXX hack: change this
+ // XXX hack: change this
if (Debug.ON)
Debug.trace("class not found ex " + e + e.getMessage());
throw new IOException("Class Not Found " + e.getMessage());
diff --git a/base/common/src/com/netscape/cmscore/connector/LocalConnector.java b/base/common/src/com/netscape/cmscore/connector/LocalConnector.java
index 42c6636ce..9c4825494 100644
--- a/base/common/src/com/netscape/cmscore/connector/LocalConnector.java
+++ b/base/common/src/com/netscape/cmscore/connector/LocalConnector.java
@@ -71,11 +71,11 @@ public class LocalConnector implements IConnector {
CMS.debug("local connector dest req " +
destreq.getRequestId() + " created for source rId " + r.getRequestId());
- // mSource.log(ILogger.LL_DEBUG,
+ // mSource.log(ILogger.LL_DEBUG,
// "setting connector dest " + mDest.getId() +
// " source id to " + r.getRequestId());
- // XXX set context to the real identity later.
+ // XXX set context to the real identity later.
destreq.setSourceId(
mSource.getX500Name().toString() + ":" + r.getRequestId().toString());
//destreq.copyContents(r); // copy meta attributes in request.
@@ -98,7 +98,7 @@ public class LocalConnector implements IConnector {
}
// Locally cache the source request so that we
- // can update it when the dest request is
+ // can update it when the dest request is
// processed (when LocalConnListener is being called).
mSourceReqs.put(r.getRequestId().toString(), r);
try {
@@ -140,9 +140,9 @@ public class LocalConnector implements IConnector {
"dest " + mDest.getId() + " done with " + destreq.getRequestId());
IRequestQueue sourceQ = mSource.getRequestQueue();
- // accept requests that only belong to us.
+ // accept requests that only belong to us.
// XXX review death scenarios here. - If system dies anywhere
- // here need to check all requests at next server startup.
+ // here need to check all requests at next server startup.
String sourceNameAndId = destreq.getSourceId();
String sourceName = mSource.getX500Name().toString();
@@ -174,7 +174,7 @@ public class LocalConnector implements IConnector {
// performance enhancement, approved request will
// not be immediately available in the database. So
// retrieving the request from the queue within
- // the serviceRequest() function will have
+ // the serviceRequest() function will have
// diffculities.
// You may wonder what happen if the system crashes
// during the request servicing. Yes, the request
@@ -182,7 +182,7 @@ public class LocalConnector implements IConnector {
// resubmit their requests again.
// Note that the pending requests, on the other hand,
// are persistent before the servicing.
- // Please see stateEngine() function in
+ // Please see stateEngine() function in
// ARequestQueue.java for details.
r = mSourceReqs.get(rId);
if (r != null) {
diff --git a/base/common/src/com/netscape/cmscore/connector/Resender.java b/base/common/src/com/netscape/cmscore/connector/Resender.java
index 783caa671..e1b19749a 100644
--- a/base/common/src/com/netscape/cmscore/connector/Resender.java
+++ b/base/common/src/com/netscape/cmscore/connector/Resender.java
@@ -67,7 +67,7 @@ public class Resender implements IResender {
mDest = dest;
mNickName = nickName;
- //mConn = new HttpConnection(dest,
+ //mConn = new HttpConnection(dest,
// new JssSSLSocketFactory(nickName));
}
@@ -80,7 +80,7 @@ public class Resender implements IResender {
if (interval > 0)
mInterval = interval * SECOND; // interval specified in seconds.
- //mConn = new HttpConnection(dest,
+ //mConn = new HttpConnection(dest,
// new JssSSLSocketFactory(nickName));
}
@@ -96,7 +96,7 @@ public class Resender implements IResender {
CMS.debug(
"added request Id " + rid + " in init to resend queue.");
- // note these are added as strings
+ // note these are added as strings
mRequestIds.addElement(rid.toString());
}
}
@@ -149,7 +149,7 @@ public class Resender implements IResender {
try {
r = mQueue.findRequest(rid);
} catch (EBaseException e) {
- // XXX bad case. should we remove the rid now ?
+ // XXX bad case. should we remove the rid now ?
mAuthority.log(ILogger.LL_WARN,
CMS.getLogMessage("CMSCORE_CONNECTOR_REQUEST_NOT_FOUND", rid.toString()));
continue;
diff --git a/base/common/src/com/netscape/cmscore/crmf/CRMFParser.java b/base/common/src/com/netscape/cmscore/crmf/CRMFParser.java
index b42bc00f9..34b378bf1 100644
--- a/base/common/src/com/netscape/cmscore/crmf/CRMFParser.java
+++ b/base/common/src/com/netscape/cmscore/crmf/CRMFParser.java
@@ -41,7 +41,7 @@ public class CRMFParser {
/**
* Retrieves PKIArchiveOptions from CRMF request.
- *
+ *
* @param request CRMF request
* @return PKIArchiveOptions
* @exception failed to extrace option
diff --git a/base/common/src/com/netscape/cmscore/dbs/BigIntegerMapper.java b/base/common/src/com/netscape/cmscore/dbs/BigIntegerMapper.java
index 3fa613198..9af436295 100644
--- a/base/common/src/com/netscape/cmscore/dbs/BigIntegerMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/BigIntegerMapper.java
@@ -32,7 +32,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java BigInteger object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/ByteArrayMapper.java b/base/common/src/com/netscape/cmscore/dbs/ByteArrayMapper.java
index 38362f341..1d1f218b2 100644
--- a/base/common/src/com/netscape/cmscore/dbs/ByteArrayMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/ByteArrayMapper.java
@@ -32,7 +32,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java byte array object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/CRLDBSchema.java b/base/common/src/com/netscape/cmscore/dbs/CRLDBSchema.java
index 253bd81e0..60f6b69a1 100644
--- a/base/common/src/com/netscape/cmscore/dbs/CRLDBSchema.java
+++ b/base/common/src/com/netscape/cmscore/dbs/CRLDBSchema.java
@@ -21,7 +21,7 @@ package com.netscape.cmscore.dbs;
* A class represents a collection of schema information
* for CRL.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/CRLIssuingPointRecord.java b/base/common/src/com/netscape/cmscore/dbs/CRLIssuingPointRecord.java
index 0a3a46f14..c6d041b34 100644
--- a/base/common/src/com/netscape/cmscore/dbs/CRLIssuingPointRecord.java
+++ b/base/common/src/com/netscape/cmscore/dbs/CRLIssuingPointRecord.java
@@ -33,7 +33,7 @@ import com.netscape.certsrv.dbs.crldb.ICRLIssuingPointRecord;
/**
* A class represents a CRL issuing point record.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/CRLRepository.java b/base/common/src/com/netscape/cmscore/dbs/CRLRepository.java
index 7eb470d55..c83494984 100644
--- a/base/common/src/com/netscape/cmscore/dbs/CRLRepository.java
+++ b/base/common/src/com/netscape/cmscore/dbs/CRLRepository.java
@@ -39,7 +39,7 @@ import com.netscape.certsrv.dbs.crldb.ICRLRepository;
* A class represents a CRL repository. It stores all the
* CRL issuing points.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/CertDBSchema.java b/base/common/src/com/netscape/cmscore/dbs/CertDBSchema.java
index 67b662713..916e83a8a 100644
--- a/base/common/src/com/netscape/cmscore/dbs/CertDBSchema.java
+++ b/base/common/src/com/netscape/cmscore/dbs/CertDBSchema.java
@@ -21,7 +21,7 @@ package com.netscape.cmscore.dbs;
* A class represents a collection of certificate record
* specific schema information.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/CertRecord.java b/base/common/src/com/netscape/cmscore/dbs/CertRecord.java
index 1981757cb..b70c8cd36 100644
--- a/base/common/src/com/netscape/cmscore/dbs/CertRecord.java
+++ b/base/common/src/com/netscape/cmscore/dbs/CertRecord.java
@@ -36,7 +36,7 @@ import com.netscape.certsrv.dbs.certdb.IRevocationInfo;
/**
* A class represents a serializable certificate record.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/CertRecordList.java b/base/common/src/com/netscape/cmscore/dbs/CertRecordList.java
index 29792880d..c4f10a61f 100644
--- a/base/common/src/com/netscape/cmscore/dbs/CertRecordList.java
+++ b/base/common/src/com/netscape/cmscore/dbs/CertRecordList.java
@@ -29,7 +29,7 @@ import com.netscape.certsrv.dbs.certdb.ICertRecordList;
/**
* A class represents a list of certificate records.
* <P>
- *
+ *
* @author thomask mzhao
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/CertRecordMapper.java b/base/common/src/com/netscape/cmscore/dbs/CertRecordMapper.java
index f4074c213..61d823b88 100644
--- a/base/common/src/com/netscape/cmscore/dbs/CertRecordMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/CertRecordMapper.java
@@ -37,7 +37,7 @@ import com.netscape.cmscore.util.Debug;
* A class represents a mapper to serialize
* certificate record into database.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/DBRegistry.java b/base/common/src/com/netscape/cmscore/dbs/DBRegistry.java
index 20e40a8e3..6a4e23f19 100644
--- a/base/common/src/com/netscape/cmscore/dbs/DBRegistry.java
+++ b/base/common/src/com/netscape/cmscore/dbs/DBRegistry.java
@@ -41,14 +41,14 @@ import com.netscape.certsrv.logging.ILogger;
* A class represents a registry where all the
* schema (object classes and attribute) information
* is stored.
- *
+ *
* Attribute mappers can be registered with this
* registry.
- *
+ *
* Given the schema information stored, this registry
* has knowledge to convert a Java object into a
* LDAPAttributeSet or vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
@@ -181,7 +181,7 @@ public class DBRegistry implements IDBRegistry, ISubsystem {
* Creates LDAP-based search filters with help of
* registered mappers.
* Parses filter from filter string specified in RFC1558.
- *
+ *
* <pre>
* <filter> ::= '(' <filtercomp> ')'
* <filtercomp> ::= <and> | <or> | <not> | <item>
diff --git a/base/common/src/com/netscape/cmscore/dbs/DBSSession.java b/base/common/src/com/netscape/cmscore/dbs/DBSSession.java
index ddc9f1874..fd59e8d8f 100644
--- a/base/common/src/com/netscape/cmscore/dbs/DBSSession.java
+++ b/base/common/src/com/netscape/cmscore/dbs/DBSSession.java
@@ -49,10 +49,10 @@ import com.netscape.certsrv.logging.ILogger;
/**
* A class represents the database session. Operations
* can be performed with a session.
- *
+ *
* Transaction and Caching support can be integrated
* into session.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
@@ -64,7 +64,7 @@ public class DBSSession implements IDBSSession {
/**
* Constructs a database session.
- *
+ *
* @param system the database subsytem
* @param c the ldap connection
*/
@@ -95,12 +95,12 @@ public class DBSSession implements IDBSSession {
/**
* Adds object to backend database. For example,
- *
+ *
* <PRE>
* session.add(&quot;cn=123459,o=certificate repository,o=airius.com&quot;,
* certRec);
* </PRE>
- *
+ *
* @param name the name of the ldap entry
* @param obj the DBobj that can be mapped to ldap attrubute set
*/
@@ -128,7 +128,7 @@ public class DBSSession implements IDBSSession {
/**
* Reads an object from the database.
* all attributes will be returned
- *
+ *
* @param name the name of the ldap entry
*/
public IDBObj read(String name) throws EBaseException {
@@ -138,7 +138,7 @@ public class DBSSession implements IDBSSession {
/**
* Reads an object from the database, and only populates
* the selected attributes.
- *
+ *
* @param name the name of the ldap entry
* @param attrs the attributes to be selected
*/
@@ -375,7 +375,7 @@ public class DBSSession implements IDBSSession {
Integer version = (Integer) (mConn.getOption(LDAPv2.PROTOCOL_VERSION));
- // Only version 3 protocol supports persistent search.
+ // Only version 3 protocol supports persistent search.
if (version.intValue() == 2) {
mConn.setOption(LDAPv2.PROTOCOL_VERSION, Integer.valueOf(3));
}
diff --git a/base/common/src/com/netscape/cmscore/dbs/DBSUtil.java b/base/common/src/com/netscape/cmscore/dbs/DBSUtil.java
index 7c551b141..1460db969 100644
--- a/base/common/src/com/netscape/cmscore/dbs/DBSUtil.java
+++ b/base/common/src/com/netscape/cmscore/dbs/DBSUtil.java
@@ -21,7 +21,7 @@ package com.netscape.cmscore.dbs;
* A class represents ann attribute mapper that maps
* a Java BigInteger object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/DBSearchResults.java b/base/common/src/com/netscape/cmscore/dbs/DBSearchResults.java
index 0621701b0..a97998916 100644
--- a/base/common/src/com/netscape/cmscore/dbs/DBSearchResults.java
+++ b/base/common/src/com/netscape/cmscore/dbs/DBSearchResults.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.logging.ILogger;
* A class represents the search results. A search
* results object contain a enumeration of
* Java objects that are just read from the database.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java b/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java
index 4bc5b6471..82e688c03 100644
--- a/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/dbs/DBSubsystem.java
@@ -55,11 +55,11 @@ import com.netscape.cmscore.ldapconn.LdapConnInfo;
/**
* A class represents the database subsystem that manages
* the backend data storage.
- *
+ *
* This subsystem maintains multiple sessions that allows
* operations to be performed, and provide a registry
* where all the schema information is stored.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
@@ -170,7 +170,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* This method is used for unit tests. It allows the underlying instance
* to be stubbed out.
- *
+ *
* @param dbSubsystem The stubbed out subsystem to override with.
*/
public static void setInstance(IDBSubsystem dbSubsystem) {
@@ -242,7 +242,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Gets minimum serial number limit in config file
- *
+ *
* @param repo repo identifier
* @return min serial number
*/
@@ -252,7 +252,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Gets maximum serial number limit in config file
- *
+ *
* @param repo repo identifier
* @return max serial number
*/
@@ -262,7 +262,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Gets minimum serial number limit in next range in config file
- *
+ *
* @param repo repo identifier
* @return min serial number in next range
*/
@@ -277,7 +277,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Gets maximum serial number limit in next range in config file
- *
+ *
* @param repo repo identifier
* @return max serial number in next range
*/
@@ -292,7 +292,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Gets low water mark limit in config file
- *
+ *
* @param repo repo identifier
* @return low water mark
*/
@@ -302,7 +302,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Gets range increment for next range in config file
- *
+ *
* @param repo repo identifier
* @return range increment
*/
@@ -312,7 +312,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Sets maximum serial number limit in config file
- *
+ *
* @param repo repo identifier
* @param serial max serial number
* @exception EBaseException failed to set
@@ -333,7 +333,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Sets minimum serial number limit in config file
- *
+ *
* @param repo repo identifier
* @param serial min serial number
* @exception EBaseException failed to set
@@ -354,7 +354,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Sets maximum serial number limit for next range in config file
- *
+ *
* @param repo repo identifier
* @param serial max serial number for next range
* @exception EBaseException failed to set
@@ -381,7 +381,7 @@ public class DBSubsystem implements IDBSubsystem {
/**
* Sets minimum serial number limit for next range in config file
- *
+ *
* @param repo repo identifier
* @param serial min serial number for next range
* @exception EBaseException failed to set
@@ -410,7 +410,7 @@ public class DBSubsystem implements IDBSubsystem {
* Gets start of next range from database.
* Increments the nextRange attribute and allocates
* this range to the current instance by creating a pkiRange object.
- *
+ *
* @param repo repo identifier
* @return start of next range
*/
@@ -429,8 +429,8 @@ public class DBSubsystem implements IDBSubsystem {
BigInteger nextRangeNo = new BigInteger(nextRange);
BigInteger incrementNo = new BigInteger((String) h.get(PROP_INCREMENT));
- // To make sure attrNextRange always increments, first delete the current value and then
- // increment. Two operations in the same transaction
+ // To make sure attrNextRange always increments, first delete the current value and then
+ // increment. Two operations in the same transaction
LDAPAttribute attrNextRange = new LDAPAttribute(PROP_NEXT_RANGE, nextRangeNo.add(incrementNo).toString());
LDAPModification[] mods = {
new LDAPModification(LDAPModification.DELETE, attr),
@@ -472,7 +472,7 @@ public class DBSubsystem implements IDBSubsystem {
* If so, delete the conflict entry and remove the next range.
* When the next number is requested, if the number of certs is still
* below the low water mark, then a new range will be requested.
- *
+ *
* @param repo repo identifier
* @return true if range conflict, false otherwise
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/DateArrayMapper.java b/base/common/src/com/netscape/cmscore/dbs/DateArrayMapper.java
index 20562404b..2b60be4f6 100644
--- a/base/common/src/com/netscape/cmscore/dbs/DateArrayMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/DateArrayMapper.java
@@ -32,7 +32,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java Date array object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/DateMapper.java b/base/common/src/com/netscape/cmscore/dbs/DateMapper.java
index a767758f6..ab2b2e225 100644
--- a/base/common/src/com/netscape/cmscore/dbs/DateMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/DateMapper.java
@@ -34,7 +34,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java Date object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/IntegerMapper.java b/base/common/src/com/netscape/cmscore/dbs/IntegerMapper.java
index 8dc07e4d9..574030c42 100644
--- a/base/common/src/com/netscape/cmscore/dbs/IntegerMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/IntegerMapper.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java Integer object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/KeyDBSchema.java b/base/common/src/com/netscape/cmscore/dbs/KeyDBSchema.java
index 50b3badc3..743176318 100644
--- a/base/common/src/com/netscape/cmscore/dbs/KeyDBSchema.java
+++ b/base/common/src/com/netscape/cmscore/dbs/KeyDBSchema.java
@@ -21,7 +21,7 @@ package com.netscape.cmscore.dbs;
* A class represents a collection of key record
* specific schema information.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/KeyRecord.java b/base/common/src/com/netscape/cmscore/dbs/KeyRecord.java
index e8122b6b8..7ae546184 100644
--- a/base/common/src/com/netscape/cmscore/dbs/KeyRecord.java
+++ b/base/common/src/com/netscape/cmscore/dbs/KeyRecord.java
@@ -34,7 +34,7 @@ import com.netscape.certsrv.dbs.keydb.KeyState;
* archived key. Namely, whether a key is inactive because
* of compromise.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
@@ -88,7 +88,7 @@ public class KeyRecord implements IDBObj, IKeyRecord {
/*
* Constructs key record.
- *
+ *
* @param key key to be archived
*/
public KeyRecord(BigInteger serialNo, byte publicData[],
@@ -213,7 +213,7 @@ public class KeyRecord implements IDBObj, IKeyRecord {
* Retrieves serial number of the key record. Each key record
* is uniquely identified by serial number.
* <P>
- *
+ *
* @return serial number of this key record
*/
public BigInteger getSerialNumber() throws EBaseException {
@@ -231,7 +231,7 @@ public class KeyRecord implements IDBObj, IKeyRecord {
* Retrieves the key state. This gives key life cycle
* information.
* <P>
- *
+ *
* @return key state
*/
public KeyState getState() throws EBaseException {
@@ -256,7 +256,7 @@ public class KeyRecord implements IDBObj, IKeyRecord {
/**
* Retrieves key.
* <P>
- *
+ *
* @return archived key
*/
public byte[] getPrivateKeyData() throws EBaseException {
@@ -273,7 +273,7 @@ public class KeyRecord implements IDBObj, IKeyRecord {
/**
* Retrieves the key size.
* <P>
- *
+ *
* @return key size
*/
public Integer getKeySize() throws EBaseException {
diff --git a/base/common/src/com/netscape/cmscore/dbs/KeyRecordList.java b/base/common/src/com/netscape/cmscore/dbs/KeyRecordList.java
index 941b0552d..732957c25 100644
--- a/base/common/src/com/netscape/cmscore/dbs/KeyRecordList.java
+++ b/base/common/src/com/netscape/cmscore/dbs/KeyRecordList.java
@@ -28,7 +28,7 @@ import com.netscape.certsrv.dbs.keydb.IKeyRecordList;
/**
* A class represents a list of key records.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/KeyRecordMapper.java b/base/common/src/com/netscape/cmscore/dbs/KeyRecordMapper.java
index 1a6103492..15e6935e2 100644
--- a/base/common/src/com/netscape/cmscore/dbs/KeyRecordMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/KeyRecordMapper.java
@@ -37,7 +37,7 @@ import com.netscape.certsrv.logging.ILogger;
* A class represents a mapper to serialize
* key record into database.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/KeyStateMapper.java b/base/common/src/com/netscape/cmscore/dbs/KeyStateMapper.java
index 2622cdbc6..afb88bf66 100644
--- a/base/common/src/com/netscape/cmscore/dbs/KeyStateMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/KeyStateMapper.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.dbs.keydb.KeyState;
/**
* A class represents a key state mapper.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/LdapFilterConverter.java b/base/common/src/com/netscape/cmscore/dbs/LdapFilterConverter.java
index ff867bf52..4bd31bcad 100644
--- a/base/common/src/com/netscape/cmscore/dbs/LdapFilterConverter.java
+++ b/base/common/src/com/netscape/cmscore/dbs/LdapFilterConverter.java
@@ -28,7 +28,7 @@ import com.netscape.certsrv.dbs.IFilterConverter;
* A class represents a filter converter
* that understands how to convert a attribute
* type from one defintion to another.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/LongMapper.java b/base/common/src/com/netscape/cmscore/dbs/LongMapper.java
index b4d6c75d6..0afa95c72 100644
--- a/base/common/src/com/netscape/cmscore/dbs/LongMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/LongMapper.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java Long object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/MetaInfoMapper.java b/base/common/src/com/netscape/cmscore/dbs/MetaInfoMapper.java
index 9b224508c..f30d13bf6 100644
--- a/base/common/src/com/netscape/cmscore/dbs/MetaInfoMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/MetaInfoMapper.java
@@ -32,14 +32,14 @@ import com.netscape.certsrv.dbs.IDBObj;
/**
* A class represent mapper for metainfo attribute. Metainfo
* is in format of the following:
- *
+ *
* <PRE>
* metaInfoType:metaInfoValue
* metaInfoType:metaInfoValue
* metaInfoType:metaInfoValue
* metaInfoType:metaInfoValue
* </PRE>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/ObjectStreamMapper.java b/base/common/src/com/netscape/cmscore/dbs/ObjectStreamMapper.java
index f77a36ed4..b6f39818a 100644
--- a/base/common/src/com/netscape/cmscore/dbs/ObjectStreamMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/ObjectStreamMapper.java
@@ -39,7 +39,7 @@ import com.netscape.certsrv.logging.ILogger;
* A class represents ann attribute mapper that maps
* a Java object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/PublicKeyMapper.java b/base/common/src/com/netscape/cmscore/dbs/PublicKeyMapper.java
index 8b66d02ca..ba5880282 100644
--- a/base/common/src/com/netscape/cmscore/dbs/PublicKeyMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/PublicKeyMapper.java
@@ -37,7 +37,7 @@ import com.netscape.cmscore.cert.CertUtils;
* a public key data into LDAP attribute and
* vice versa.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/ReplicaIDRepository.java b/base/common/src/com/netscape/cmscore/dbs/ReplicaIDRepository.java
index 46ab07385..5a6a61d20 100644
--- a/base/common/src/com/netscape/cmscore/dbs/ReplicaIDRepository.java
+++ b/base/common/src/com/netscape/cmscore/dbs/ReplicaIDRepository.java
@@ -29,7 +29,7 @@ import com.netscape.certsrv.dbs.replicadb.IReplicaIDRepository;
* A class represents a replica repository. It
* creates unique managed replica IDs.
* <P>
- *
+ *
* @author alee
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/Repository.java b/base/common/src/com/netscape/cmscore/dbs/Repository.java
index aadfb888a..2cfe320f6 100644
--- a/base/common/src/com/netscape/cmscore/dbs/Repository.java
+++ b/base/common/src/com/netscape/cmscore/dbs/Repository.java
@@ -39,11 +39,11 @@ import com.netscape.certsrv.dbs.repository.IRepositoryRecord;
* <P>
* To build domain specific repository, subclass should be created.
* <P>
- *
+ *
* @author galperin
* @author thomask
* @version $Revision: 1.4
- *
+ *
* $, $Date$
*/
@@ -126,7 +126,7 @@ public abstract class Repository implements IRepository {
/**
* Retrieves the next serial number attr in db.
* <P>
- *
+ *
* @return next serial number
*/
protected BigInteger getSerialNumber() throws EBaseException {
@@ -152,7 +152,7 @@ public abstract class Repository implements IRepository {
BigInteger serial = rec.getSerialNumber();
if (!mInit) {
- // cms may crash after issue a cert but before update
+ // cms may crash after issue a cert but before update
// the serial number record
try {
IDBObj obj = s.read("cn=" +
@@ -173,7 +173,7 @@ public abstract class Repository implements IRepository {
/**
* Updates the serial number to the specified in db.
* <P>
- *
+ *
* @param num serial number
*/
protected void setSerialNumber(BigInteger num) throws EBaseException {
@@ -186,7 +186,7 @@ public abstract class Repository implements IRepository {
/**
* Get the maximum serial number.
- *
+ *
* @return maximum serial number
*/
public String getMaxSerial() {
@@ -195,7 +195,7 @@ public abstract class Repository implements IRepository {
/**
* Set the maximum serial number.
- *
+ *
* @param serial maximum number
* @exception EBaseException failed to set maximum serial number
*/
@@ -212,7 +212,7 @@ public abstract class Repository implements IRepository {
/**
* Get the maximum serial number in next range.
- *
+ *
* @return maximum serial number in next range
*/
public String getNextMaxSerial() {
@@ -221,7 +221,7 @@ public abstract class Repository implements IRepository {
/**
* Set the maximum serial number in next range
- *
+ *
* @param serial maximum number in next range
* @exception EBaseException failed to set maximum serial number in next range
*/
@@ -240,7 +240,7 @@ public abstract class Repository implements IRepository {
/**
* Get the minimum serial number.
- *
+ *
* @return minimum serial number
*/
public String getMinSerial() {
@@ -337,7 +337,7 @@ public abstract class Repository implements IRepository {
/**
* Updates the serial number to the specified in db and cache.
* <P>
- *
+ *
* @param num serial number
*/
public void setTheSerialNumber(BigInteger num) throws EBaseException {
@@ -364,7 +364,7 @@ public abstract class Repository implements IRepository {
* Retrieves the next serial number, and also increase the
* serial number by one.
* <P>
- *
+ *
* @return serial number
*/
public synchronized BigInteger getNextSerialNumber() throws
@@ -422,7 +422,7 @@ public abstract class Repository implements IRepository {
/**
* Checks to see if a new range is needed, or if we have reached the end of the
* current range, or if a range conflict has occurred.
- *
+ *
* @exception EBaseException failed to check next range for conflicts
*/
public void checkRanges() throws EBaseException {
@@ -483,7 +483,7 @@ public abstract class Repository implements IRepository {
/**
* Sets whether serial number management is enabled for certs
* and requests.
- *
+ *
* @param value true/false
* @exception EBaseException failed to set
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java b/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java
index 8f90723cd..36d5ce914 100644
--- a/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java
+++ b/base/common/src/com/netscape/cmscore/dbs/RepositoryRecord.java
@@ -28,7 +28,7 @@ import com.netscape.certsrv.dbs.repository.IRepositoryRecord;
/**
* A class represents a repository record.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java b/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java
index 4a0cf4155..4ec8da629 100644
--- a/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java
+++ b/base/common/src/com/netscape/cmscore/dbs/RepositorySchema.java
@@ -21,7 +21,7 @@ package com.netscape.cmscore.dbs;
* A class represents a collection of repository-specific
* schema information.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/RevocationInfo.java b/base/common/src/com/netscape/cmscore/dbs/RevocationInfo.java
index 00ca0034b..36f470511 100644
--- a/base/common/src/com/netscape/cmscore/dbs/RevocationInfo.java
+++ b/base/common/src/com/netscape/cmscore/dbs/RevocationInfo.java
@@ -30,7 +30,7 @@ import com.netscape.certsrv.dbs.certdb.IRevocationInfo;
* object is written as an attribute of certificate record
* which essentially signifies a revocation act.
* <P>
- *
+ *
* @author galperin
* @version $Revision$, $Date$
*/
@@ -52,7 +52,7 @@ public class RevocationInfo implements IRevocationInfo, Serializable {
/**
* Constructs revocation info used by revocation
* request implementation.
- *
+ *
* @param reason if not null contains CRL entry extension
* that specifies revocation reason
* @see CRLReasonExtension
diff --git a/base/common/src/com/netscape/cmscore/dbs/RevocationInfoMapper.java b/base/common/src/com/netscape/cmscore/dbs/RevocationInfoMapper.java
index 7cf39dcef..396067c79 100644
--- a/base/common/src/com/netscape/cmscore/dbs/RevocationInfoMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/RevocationInfoMapper.java
@@ -40,7 +40,7 @@ import com.netscape.cmscore.util.Debug;
* A class represents a mapper to serialize
* revocation information into database.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/StringMapper.java b/base/common/src/com/netscape/cmscore/dbs/StringMapper.java
index 710a17875..d3b1ea710 100644
--- a/base/common/src/com/netscape/cmscore/dbs/StringMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/StringMapper.java
@@ -32,7 +32,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java String object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/StringVectorMapper.java b/base/common/src/com/netscape/cmscore/dbs/StringVectorMapper.java
index 7a465231b..60dec48b7 100644
--- a/base/common/src/com/netscape/cmscore/dbs/StringVectorMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/StringVectorMapper.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.dbs.IDBObj;
* A class represents ann attribute mapper that maps
* a Java String object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/X500NameMapper.java b/base/common/src/com/netscape/cmscore/dbs/X500NameMapper.java
index 0bf3bf7da..684f27c22 100644
--- a/base/common/src/com/netscape/cmscore/dbs/X500NameMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/X500NameMapper.java
@@ -36,7 +36,7 @@ import com.netscape.certsrv.logging.ILogger;
* A class represents ann attribute mapper that maps
* a Java X500Name object into LDAP attribute,
* and vice versa.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/dbs/X509CertImplMapper.java b/base/common/src/com/netscape/cmscore/dbs/X509CertImplMapper.java
index 18f0c8e3d..6fbb2cfca 100644
--- a/base/common/src/com/netscape/cmscore/dbs/X509CertImplMapper.java
+++ b/base/common/src/com/netscape/cmscore/dbs/X509CertImplMapper.java
@@ -44,7 +44,7 @@ import com.netscape.certsrv.dbs.certdb.ICertRecord;
/**
* A class represents a mapper to serialize
* x509 certificate into database.
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/extensions/CMSExtensionsMap.java b/base/common/src/com/netscape/cmscore/extensions/CMSExtensionsMap.java
index 213772882..ba02eff23 100644
--- a/base/common/src/com/netscape/cmscore/extensions/CMSExtensionsMap.java
+++ b/base/common/src/com/netscape/cmscore/extensions/CMSExtensionsMap.java
@@ -54,7 +54,7 @@ public class CMSExtensionsMap implements ISubsystem {
/**
* Create extensions from configuration store.
- *
+ *
* @param config the configuration store.
*/
public void init(ISubsystem owner, IConfigStore config)
@@ -140,7 +140,7 @@ public class CMSExtensionsMap implements ISubsystem {
/**
* Get the extension class by name.
- *
+ *
* @param name name of the extension
* @return the extension class.
*/
@@ -150,7 +150,7 @@ public class CMSExtensionsMap implements ISubsystem {
/**
* Get the extension class by its OID.
- *
+ *
* @param oid - the OID of the extension.
* @return the extension class.
*/
diff --git a/base/common/src/com/netscape/cmscore/jobs/CronItem.java b/base/common/src/com/netscape/cmscore/jobs/CronItem.java
index 91574c6cc..f15e0402a 100644
--- a/base/common/src/com/netscape/cmscore/jobs/CronItem.java
+++ b/base/common/src/com/netscape/cmscore/jobs/CronItem.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.logging.ILogger;
* an "item"...which includes both numbers and '-' separated ranges.
* <p>
* for each of the 5 cron fields, it's represented as a CronItem
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -55,7 +55,7 @@ public class CronItem {
/**
* parses and sets a string cron item
- *
+ *
* @param sItem the string representing an item of a cron string.
* item can be potentially comma separated with ranges specified
* with '-'s
@@ -149,7 +149,7 @@ public class CronItem {
/**
* get the vector stuffed with elements where each element is
* represented as CronRange
- *
+ *
* @return a vector of CronRanges
*/
public Vector<CronRange> getElements() {
diff --git a/base/common/src/com/netscape/cmscore/jobs/CronRange.java b/base/common/src/com/netscape/cmscore/jobs/CronRange.java
index af5ae2a51..c49a5b1b4 100644
--- a/base/common/src/com/netscape/cmscore/jobs/CronRange.java
+++ b/base/common/src/com/netscape/cmscore/jobs/CronRange.java
@@ -25,7 +25,7 @@ package com.netscape.cmscore.jobs;
* <p>
* an Element can contain either an integer number or a range specified as CronRange. In case of integer numbers, begin
* and end are of the same value
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -67,7 +67,7 @@ public class CronRange {
/**
* checks to see if the lower and higher boundary values are
* within the min/max.
- *
+ *
* @param min the minimum value one can specify in this field
* @param max the maximum value one can specify in this field
* @return a boolean (true/false) on whether the begin/end values
diff --git a/base/common/src/com/netscape/cmscore/jobs/JobCron.java b/base/common/src/com/netscape/cmscore/jobs/JobCron.java
index 164c1250e..7befa611c 100644
--- a/base/common/src/com/netscape/cmscore/jobs/JobCron.java
+++ b/base/common/src/com/netscape/cmscore/jobs/JobCron.java
@@ -38,7 +38,7 @@ import com.netscape.certsrv.logging.ILogger;
* e.g. jobsScheduler.job.rnJob1.cron=30 11,23 * * 1-5 In this example, the job "rnJob1" will be executed from Monday
* through Friday, at 11:30am and 11:30pm.
* <p>
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -173,7 +173,7 @@ public class JobCron implements IJobCron {
/**
* retrieves the cron item
- *
+ *
* @param item name of the item. must be one of the <b>CRON_*</b>
* strings defined in this class
* @return an instance of the CronItem class which represents the
@@ -199,7 +199,7 @@ public class JobCron implements IJobCron {
/**
* Does the element fit any element in the item
- *
+ *
* @param element the element of "now" in cron format
* @param item the item consists of a vector of elements
* @return boolean (true/false) on whether the element is one of
@@ -229,7 +229,7 @@ public class JobCron implements IJobCron {
/**
* convert the day of the week representation from Calendar to
* cron
- *
+ *
* @param time the Calendar value represents a moment of time
* @return an integer value that represents a cron Day-Of-Week
* element
@@ -277,7 +277,7 @@ public class JobCron implements IJobCron {
/**
* convert the month of year representation from Calendar to cron
- *
+ *
* @param time the Calendar value represents a moment of time
* @return an integer value that represents a cron Month-Of-Year
* element
diff --git a/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java b/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java
index b35f8c340..feabb1f46 100644
--- a/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java
+++ b/base/common/src/com/netscape/cmscore/jobs/JobsScheduler.java
@@ -47,7 +47,7 @@ import com.netscape.cmscore.util.Debug;
* on each Tuesday (e.g. * 7 * * 2) will result in the execution of the job thread only once every 5 minutes during that
* hour. <b>The inteval value is recommended at 1 minute, setting it otherwise has the potential of forever missing the
* beat</b>. Use with caution.
- *
+ *
* @author cfu
* @see JobCron
* @version $Revision$, $Date$
@@ -93,7 +93,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
* the config params have the following formats: jobScheduler.impl.[implementation name].class=[package name]
* jobScheduler.job.[job name].pluginName=[implementation name] jobScheduler.job.[job name].cron=[crontab format]
* jobScheduler.job.[job name].[any job specific params]=[values]
- *
+ *
* @param config jobsScheduler configStore
*/
public void init(ISubsystem owner, IConfigStore config)
@@ -373,7 +373,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
/**
* Retrieves id (name) of this subsystem.
- *
+ *
* @return name of the Jobs Scheduler subsystem
*/
public String getId() {
@@ -384,7 +384,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
* Sets id string to this subsystem.
* <p>
* Use with caution. Should not do it when sharing with others
- *
+ *
* @param id name to be applied to an Jobs Scheduler subsystem
*/
public void setId(String id) throws EBaseException {
@@ -423,7 +423,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
/**
* Returns the root configuration storage of this system.
* <P>
- *
+ *
* @return configuration store of this subsystem
*/
public IConfigStore getConfigStore() {
@@ -433,7 +433,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
/**
* Gets configuration parameters for the given
* job plugin.
- *
+ *
* @param implName Name of the job plugin.
* @return Hashtable of required parameters.
*/
@@ -454,7 +454,7 @@ public class JobsScheduler implements Runnable, IJobsScheduler {
implName));
}
- // XXX can find an instance of this plugin in existing
+ // XXX can find an instance of this plugin in existing
// auth manager instantces to avoid instantiation just for this.
// a temporary instance
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapAndExpression.java b/base/common/src/com/netscape/cmscore/ldap/LdapAndExpression.java
index 3d7e7f31d..7c1fa979e 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapAndExpression.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapAndExpression.java
@@ -25,9 +25,9 @@ import com.netscape.certsrv.request.IRequest;
/**
* This class represents an expression of the form
* <var1 op val1 AND var2 op va2>.
- *
+ *
* Expressions are used as predicates for publishing rule selection.
- *
+ *
* @author mzhao
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapConnModule.java b/base/common/src/com/netscape/cmscore/ldap/LdapConnModule.java
index 7dd282140..859e442fa 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapConnModule.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapConnModule.java
@@ -108,7 +108,7 @@ public class LdapConnModule implements ILdapConnModule {
* Use ILdapConnFactory.getConn() to get a Ldap connection to the ldap
* publishing directory.
* Use ILdapConnFactory.returnConn() to return the connection.
- *
+ *
* @see com.netscape.certsrv.ldap.ILdapBoundConnFactory
* @see com.netscape.certsrv.ldap.ILdapConnFactory
*/
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapOrExpression.java b/base/common/src/com/netscape/cmscore/ldap/LdapOrExpression.java
index 011e3e690..92a9b902e 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapOrExpression.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapOrExpression.java
@@ -25,9 +25,9 @@ import com.netscape.certsrv.request.IRequest;
/**
* This class represents an Or expression of the form
* (var1 op val1 OR var2 op val2).
- *
+ *
* Expressions are used as predicates for publishing rule selection.
- *
+ *
* @author mzhao
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapPredicateParser.java b/base/common/src/com/netscape/cmscore/ldap/LdapPredicateParser.java
index 469ba62a0..14263a951 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapPredicateParser.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapPredicateParser.java
@@ -26,16 +26,16 @@ import com.netscape.cmscore.util.Debug;
/**
* Default implementation of predicate parser.
- *
+ *
* Limitations:
- *
+ *
* 1. Currently parentheses are not suported.
* 2. Only ==, != <, >, <= and >= operators are supported.
* 3. The only boolean operators supported are AND and OR. AND takes precedence
* over OR. Example: a AND b OR e OR c AND d
* is treated as (a AND b) OR e OR (c AND d)
* 4. If this is n't adequate, roll your own.
- *
+ *
* @author mzhao
* @version $Revision$, $Date$
*/
@@ -51,7 +51,7 @@ public class LdapPredicateParser {
/**
* Parse the predicate expression and return a vector of expressions.
- *
+ *
* @param predicateExp The predicate expression as read from the config file.
* @return expVector The vector of expressions.
*/
@@ -197,7 +197,7 @@ public class LdapPredicateParser {
* req.set("request", "issuance");
* req.set("id", new Integer(10));
* req.set("dualcerts", new Boolean(true));
- *
+ *
* Vector v = new Vector();
* v.addElement("one");
* v.addElement("two");
@@ -227,8 +227,8 @@ public class LdapPredicateParser {
* }
* catch (Exception e) {e.printStackTrace(); }
* }
- *
- *
+ *
+ *
* try
* {
* BufferedReader rdr = new BufferedReader(
@@ -248,7 +248,7 @@ public class LdapPredicateParser {
* boolean result = exp.evaluate(req);
* System.out.println("Result: " + result);
* }
- *
+ *
* }catch (Exception e){e.printStackTrace();}
* }
* }
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapPublishModule.java b/base/common/src/com/netscape/cmscore/ldap/LdapPublishModule.java
index bbe86e8a5..263187bf3 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapPublishModule.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapPublishModule.java
@@ -153,7 +153,7 @@ public class LdapPublishModule implements ILdapPublishModule {
* Use ILdapConnFactory.getConn() to get a Ldap connection to the ldap
* publishing directory.
* Use ILdapConnFactory.returnConn() to return the connection.
- *
+ *
* @see com.netscape.certsrv.ldap.ILdapBoundConnFactory
* @see com.netscape.certsrv.ldap.ILdapConnFactory
*/
@@ -607,7 +607,7 @@ class HandleRenewal implements IRequestListener {
}
public void accept(IRequest r) {
- // Note we do not remove old certs from directory during renewal
+ // Note we do not remove old certs from directory during renewal
X509CertImpl[] certs = r.getExtDataInCertArray(IRequest.ISSUED_CERTS);
if (certs == null || certs.length == 0) {
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapRequestListener.java b/base/common/src/com/netscape/cmscore/ldap/LdapRequestListener.java
index cbeeed2df..dd567efe7 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapRequestListener.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapRequestListener.java
@@ -105,7 +105,7 @@ public class LdapRequestListener implements IRequestListener {
obj.setCerts(certs);
return obj;
} else if (type.equals(IRequest.RENEWAL_REQUEST)) {
- // Note we do not remove old certs from directory during renewal
+ // Note we do not remove old certs from directory during renewal
X509CertImpl[] certs = r.getExtDataInCertArray(IRequest.ISSUED_CERTS);
if (certs == null || certs.length == 0) {
@@ -262,7 +262,7 @@ class LdapRenewalListener implements IRequestListener {
}
public void accept(IRequest r) {
- // Note we do not remove old certs from directory during renewal
+ // Note we do not remove old certs from directory during renewal
Certificate[] certs = r.getExtDataInCertArray(IRequest.ISSUED_CERTS);
if (certs == null || certs.length == 0) {
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapRule.java b/base/common/src/com/netscape/cmscore/ldap/LdapRule.java
index 0f0c3a3b9..df8153366 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapRule.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapRule.java
@@ -222,7 +222,7 @@ public class LdapRule implements ILdapRule, IExtendedPluginInfo {
/**
* Sets a predicate expression for rule matching.
* <P>
- *
+ *
* @param exp The predicate expression for the rule.
*/
public void setPredicate(ILdapExpression exp) {
@@ -232,7 +232,7 @@ public class LdapRule implements ILdapRule, IExtendedPluginInfo {
/**
* Returns the predicate expression for the rule.
* <P>
- *
+ *
* @return The predicate expression for the rule.
*/
public ILdapExpression getPredicate() {
diff --git a/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java b/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java
index 0a1dde49f..2c5caf2bd 100644
--- a/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java
+++ b/base/common/src/com/netscape/cmscore/ldap/LdapSimpleExpression.java
@@ -30,9 +30,9 @@ import com.netscape.cmscore.util.AssertionException;
/**
* This class represents an expression of the form var = val,
* var != val, var < val, var > val, var <= val, var >= val.
- *
+ *
* Expressions are used as predicates for publishing rule selection.
- *
+ *
* @author mzhao
* @version $Revision$, $Date$
*/
@@ -45,7 +45,7 @@ public class LdapSimpleExpression implements ILdapExpression {
private boolean hasWildCard;
public static final char WILDCARD_CHAR = '*';
- // This is just for indicating a null expression.
+ // This is just for indicating a null expression.
public static LdapSimpleExpression NULL_EXPRESSION = new LdapSimpleExpression("null", OP_EQUAL, "null");
public static ILdapExpression parse(String input)
diff --git a/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java b/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java
index 453703443..74ac574da 100644
--- a/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java
+++ b/base/common/src/com/netscape/cmscore/ldap/PublisherProcessor.java
@@ -360,7 +360,7 @@ public class PublisherProcessor implements
/**
* Retrieves LDAP connection module.
* <P>
- *
+ *
* @return LDAP connection instance
*/
public ILdapConnModule getLdapConnModule() {
@@ -444,7 +444,7 @@ public class PublisherProcessor implements
mAuthority.removeRequestListener(mLdapRequestListener);
}
} catch (Exception e) {
- // ignore
+ // ignore
}
}
@@ -830,7 +830,7 @@ public class PublisherProcessor implements
+ " published as " + published
+ " in the ldap directory. Cert Record not found. Error: "
+ e
- + " Don't be alarmed if it's a subordinate ca or clone's ca siging cert. "
+ + " Don't be alarmed if it's a subordinate ca or clone's ca siging cert. "
+ "Otherwise your internal db may be corrupted.");
}
}
diff --git a/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnFactory.java b/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnFactory.java
index dc4c86547..1edee3812 100644
--- a/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnFactory.java
+++ b/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnFactory.java
@@ -48,7 +48,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
public static final String PROP_ERROR_IF_DOWN = "errorIfDown";
private int mNumConns = 0; // number of available conns in array
- private int mTotal = 0; // total num conns
+ private int mTotal = 0; // total num conns
private AnonConnection mConns[] = null;
private boolean mInited = false;
@@ -69,7 +69,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
/**
* Constructor for LdapAnonConnFactory
- *
+ *
* @param minConns minimum number of connections to have available
* @param maxConns max number of connections to have available. This is
* the maximum number of clones of this connection one wants to allow.
@@ -135,7 +135,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
protected void init(int minConns, int maxConns, LdapConnInfo connInfo)
throws ELdapException {
if (mInited)
- return; // XXX should throw exception here ?
+ return; // XXX should throw exception here ?
if (minConns <= 0 || maxConns <= 0 || minConns > maxConns)
throw new ELdapException(
@@ -181,10 +181,10 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
}
} catch (LDAPException e) {
// XXX errorCodeToString() used here so users won't see message.
- // though why are messages from exceptions being displayed to
+ // though why are messages from exceptions being displayed to
// users ?
if (e.getLDAPResultCode() == LDAPException.UNAVAILABLE) {
- // need to intercept this because message from LDAP is
+ // need to intercept this because message from LDAP is
// "DSA is unavailable" which confuses with DSA PKI.
log(ILogger.LL_FAILURE,
"Cannot connect to Ldap server. Error: " +
@@ -215,7 +215,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
* If not the max number of connections may be reached prematurely.
* The best thing to put returnConn in a finally clause so it
* always gets called. For example,
- *
+ *
* <pre>
* LDAPConnection c = null;
* try {
@@ -242,7 +242,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
* Returns null if maximum number of connections reached.
* <p>
* The best thing to put returnConn in a finally clause so it always gets called. For example,
- *
+ *
* <pre>
* LDAPConnection c = null;
* try {
@@ -292,7 +292,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
"to " + mConnInfo.getHost() + ":" + mConnInfo.getPort());
}
CMS.debug("LdapAnonConnFactory.getConn(): num avail conns now " + mNumConns);
- //Beginning of fix for Bugzilla #630176
+ //Beginning of fix for Bugzilla #630176
boolean isConnected = false;
if (conn != null) {
isConnected = conn.isConnected();
@@ -321,7 +321,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
* If not the max number of connections may be reached prematurely.
* <p>
* The best thing to put returnConn in a finally clause so it always gets called. For example,
- *
+ *
* <pre>
* LDAPConnection c = null;
* try {
@@ -342,7 +342,7 @@ public class LdapAnonConnFactory implements ILdapConnFactory {
AnonConnection anon = (AnonConnection) conn;
if (anon.getFacId() != mConns) {
- // returning a connection not from this factory.
+ // returning a connection not from this factory.
log(ILogger.LL_WARN, "returnConn: unknown connection.");
}
// check if conn has already been returned.
diff --git a/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnection.java b/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnection.java
index 1dc9723a8..a0d9b2466 100644
--- a/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnection.java
+++ b/base/common/src/com/netscape/cmscore/ldapconn/LdapAnonConnection.java
@@ -42,7 +42,7 @@ public class LdapAnonConnection extends LDAPConnection {
throws LDAPException {
super(connInfo.getSecure() ? new LdapJssSSLSocketFactory() : null);
- // Set option to automatically follow referrals.
+ // Set option to automatically follow referrals.
// rebind info is also anonymous.
boolean followReferrals = connInfo.getFollowReferrals();
diff --git a/base/common/src/com/netscape/cmscore/ldapconn/LdapAuthInfo.java b/base/common/src/com/netscape/cmscore/ldapconn/LdapAuthInfo.java
index b1af367b9..c1822113d 100644
--- a/base/common/src/com/netscape/cmscore/ldapconn/LdapAuthInfo.java
+++ b/base/common/src/com/netscape/cmscore/ldapconn/LdapAuthInfo.java
@@ -108,7 +108,7 @@ public class LdapAuthInfo implements ILdapAuthInfo {
/**
* initialize this class from the config store, and verify the password.
- *
+ *
* @param host The host that the directory server is running on.
* This will be used to verify the password by attempting to connect.
* If it is <code>null</code>, the password will not be verified.
@@ -258,7 +258,7 @@ public class LdapAuthInfo implements ILdapAuthInfo {
/**
* get authentication type.
- *
+ *
* @return one of: <br>
* LdapAuthInfo.LDAP_AUTHTYPE_BASICAUTH or
* LdapAuthInfo.LDAP_AUTHTYPE_SSLCLIENTAUTH
@@ -269,7 +269,7 @@ public class LdapAuthInfo implements ILdapAuthInfo {
/**
* get params for authentication
- *
+ *
* @return array of parameters for this authentication.
*/
public String[] getParms() {
diff --git a/base/common/src/com/netscape/cmscore/ldapconn/LdapBoundConnFactory.java b/base/common/src/com/netscape/cmscore/ldapconn/LdapBoundConnFactory.java
index b4839f7d5..1da965a3a 100644
--- a/base/common/src/com/netscape/cmscore/ldapconn/LdapBoundConnFactory.java
+++ b/base/common/src/com/netscape/cmscore/ldapconn/LdapBoundConnFactory.java
@@ -51,7 +51,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
public static final String PROP_ERROR_IF_DOWN = "errorIfDown";
private int mNumConns = 0; // number of available conns in array
- private int mTotal = 0; // total num conns
+ private int mTotal = 0; // total num conns
private boolean doCloning = true;
private LdapBoundConnection mMasterConn = null; // master connection object.
@@ -92,7 +92,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
/**
* Constructor for LdapBoundConnFactory
- *
+ *
* @param minConns minimum number of connections to have available
* @param maxConns max number of connections to have available. This is
* the maximum number of clones of this connection or separate connections one wants to allow.
@@ -128,7 +128,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
/**
* initialize parameters obtained from either constructor or
* config store
- *
+ *
* @param minConns minimum number of connection handls to have available.
* @param maxConns maximum total number of connections to ever have.
* @param connInfo ldap connection info.
@@ -169,7 +169,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
/**
* makes the initial master connection used to clone others..
- *
+ *
* @exception ELdapException if any error occurs.
*/
protected void makeConnection(boolean errorIfDown) throws ELdapException {
@@ -201,7 +201,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
/**
* makes subsequent connections if cloning is not used .
- *
+ *
* @exception ELdapException if any error occurs.
*/
private LdapBoundConnection makeNewConnection(boolean errorIfDown) throws ELdapException {
@@ -268,7 +268,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
* returnConn() method.
* The best thing to do is to put returnConn in a finally clause so it
* always gets called. For example,
- *
+ *
* <pre>
* LDAPConnection c = null;
* try {
@@ -295,7 +295,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
* Returns null if maximum number of connections reached.
* The best thing to do is to put returnConn in a finally clause so it
* always gets called. For example,
- *
+ *
* <pre>
* LDAPConnection c = null;
* try {
@@ -396,7 +396,7 @@ public class LdapBoundConnFactory implements ILdapBoundConnFactory {
* This is mandatory after a getConn().
* The best thing to do is to put returnConn in a finally clause so it
* always gets called. For example,
- *
+ *
* <pre>
* LDAPConnection c = null;
* try {
diff --git a/base/common/src/com/netscape/cmscore/ldapconn/LdapConnInfo.java b/base/common/src/com/netscape/cmscore/ldapconn/LdapConnInfo.java
index 4ef7d804c..f05fc237e 100644
--- a/base/common/src/com/netscape/cmscore/ldapconn/LdapConnInfo.java
+++ b/base/common/src/com/netscape/cmscore/ldapconn/LdapConnInfo.java
@@ -56,8 +56,8 @@ public class LdapConnInfo implements ILdapConnInfo {
String version = (String) config.get(PROP_PROTOCOL);
if (version != null && version.equals("")) {
- // provide a default when this field is blank from the
- // configuration.
+ // provide a default when this field is blank from the
+ // configuration.
mVersion = LDAP_VERSION_3;
} else {
mVersion = config.getInteger(PROP_PROTOCOL, LDAP_VERSION_3);
@@ -82,7 +82,7 @@ public class LdapConnInfo implements ILdapConnInfo {
mPort = port;
mSecure = secure;
if (mHost == null || mPort <= 0) {
- // XXX log something here
+ // XXX log something here
throw new IllegalArgumentException("LDAP host or port is null");
}
}
@@ -91,7 +91,7 @@ public class LdapConnInfo implements ILdapConnInfo {
mHost = host;
mPort = port;
if (mHost == null || mPort <= 0) {
- // XXX log something here
+ // XXX log something here
throw new IllegalArgumentException("LDAP host or port is null");
}
}
diff --git a/base/common/src/com/netscape/cmscore/ldapconn/LdapJssSSLSocketFactory.java b/base/common/src/com/netscape/cmscore/ldapconn/LdapJssSSLSocketFactory.java
index 4df2fe357..bad9e3b23 100644
--- a/base/common/src/com/netscape/cmscore/ldapconn/LdapJssSSLSocketFactory.java
+++ b/base/common/src/com/netscape/cmscore/ldapconn/LdapJssSSLSocketFactory.java
@@ -33,7 +33,7 @@ import com.netscape.certsrv.logging.ILogger;
/**
* Uses HCL ssl socket.
- *
+ *
* @author Lily Hsiao lhsiao@netscape.com
*/
public class LdapJssSSLSocketFactory implements LDAPSSLSocketFactoryExt {
diff --git a/base/common/src/com/netscape/cmscore/listeners/ListenerPlugin.java b/base/common/src/com/netscape/cmscore/listeners/ListenerPlugin.java
index baedb98de..fbdeca579 100644
--- a/base/common/src/com/netscape/cmscore/listeners/ListenerPlugin.java
+++ b/base/common/src/com/netscape/cmscore/listeners/ListenerPlugin.java
@@ -20,7 +20,7 @@ package com.netscape.cmscore.listeners;
/**
* This class represents a registered listener plugin.
* <P>
- *
+ *
* @author stevep
* @version $Revision$, $Date$
*/
@@ -31,7 +31,7 @@ public class ListenerPlugin {
/**
* Constructs a Listener plugin.
- *
+ *
* @param id listener implementation name
* @param classPath class path
*/
diff --git a/base/common/src/com/netscape/cmscore/logging/AuditEventFactory.java b/base/common/src/com/netscape/cmscore/logging/AuditEventFactory.java
index 438b3abb9..fea638eb6 100644
--- a/base/common/src/com/netscape/cmscore/logging/AuditEventFactory.java
+++ b/base/common/src/com/netscape/cmscore/logging/AuditEventFactory.java
@@ -28,7 +28,7 @@ import com.netscape.certsrv.logging.ILogger;
/**
* A log event object for handling audit messages
* <P>
- *
+ *
* @author mikep
* @author mzhao
* @version $Revision$, $Date$
@@ -48,7 +48,7 @@ public class AuditEventFactory implements ILogEventFactory {
/**
* Creates an log event.
- *
+ *
* @param evtClass the event type
* @param prop the resource bundle
* @param source the subsystem ID who creates the log event
@@ -72,7 +72,7 @@ public class AuditEventFactory implements ILogEventFactory {
/**
* Set the resource bundle of the log event.
- *
+ *
* @param prop the properties
* @param event the log event
*/
@@ -90,7 +90,7 @@ public class AuditEventFactory implements ILogEventFactory {
/**
* Releases an log event.
- *
+ *
* @param e the log event
*/
public void release(ILogEvent e) {
diff --git a/base/common/src/com/netscape/cmscore/logging/AuditFormat.java b/base/common/src/com/netscape/cmscore/logging/AuditFormat.java
index a5ce83251..9ba62babb 100644
--- a/base/common/src/com/netscape/cmscore/logging/AuditFormat.java
+++ b/base/common/src/com/netscape/cmscore/logging/AuditFormat.java
@@ -22,7 +22,7 @@ import com.netscape.certsrv.request.IRequest;
/**
* Define audit log message format
- *
+ *
* @author mzhao
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/logging/LogQueue.java b/base/common/src/com/netscape/cmscore/logging/LogQueue.java
index 90ca05d81..f5b31b082 100644
--- a/base/common/src/com/netscape/cmscore/logging/LogQueue.java
+++ b/base/common/src/com/netscape/cmscore/logging/LogQueue.java
@@ -27,7 +27,7 @@ import com.netscape.certsrv.logging.ILogQueue;
/**
* A class represents a log queue.
* <P>
- *
+ *
* @author mzhao
* @version $Revision$, $Date$
*/
@@ -49,7 +49,7 @@ public class LogQueue implements ILogQueue {
/**
* Initializes the log queue.
* <P>
- *
+ *
*/
public void init() {
mListeners = new Vector<ILogEventListener>();
@@ -71,7 +71,7 @@ public class LogQueue implements ILogQueue {
/**
* Adds an event listener.
- *
+ *
* @param listener the log event listener
*/
public void addLogEventListener(ILogEventListener listener) {
@@ -82,7 +82,7 @@ public class LogQueue implements ILogQueue {
/**
* Removes an event listener.
- *
+ *
* @param listener the log event listener
*/
public void removeLogEventListener(ILogEventListener listener) {
@@ -91,7 +91,7 @@ public class LogQueue implements ILogQueue {
/**
* Logs an event, and notifies logger to reuse the event.
- *
+ *
* @param event the log event
*/
public void log(ILogEvent event) {
@@ -106,7 +106,7 @@ public class LogQueue implements ILogQueue {
// ConsoleError.send(new SystemEvent(CMS.getUserMessage("CMS_LOG_EVENT_FAILED",
// event.getEventType(), e.toString())));
- // Don't do this again.
+ // Don't do this again.
removeLogEventListener((ILogEventListener) mListeners.elementAt(i));
}
}
diff --git a/base/common/src/com/netscape/cmscore/logging/LogSubsystem.java b/base/common/src/com/netscape/cmscore/logging/LogSubsystem.java
index 1cfce4e65..86e7f529c 100644
--- a/base/common/src/com/netscape/cmscore/logging/LogSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/logging/LogSubsystem.java
@@ -35,7 +35,7 @@ import com.netscape.cmscore.util.Debug;
/**
* A class represents a log subsystem.
* <P>
- *
+ *
* @author thomask
* @author mzhao
* @version $Revision$, $Date$
@@ -75,7 +75,7 @@ public class LogSubsystem implements ILogSubsystem {
/**
* Initializes the log subsystem.
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration store
*/
@@ -178,7 +178,7 @@ public class LogSubsystem implements ILogSubsystem {
/**
* Returns the root configuration storage of this system.
* <P>
- *
+ *
* @return configuration store of this subsystem
*/
public IConfigStore getConfigStore() {
diff --git a/base/common/src/com/netscape/cmscore/logging/Logger.java b/base/common/src/com/netscape/cmscore/logging/Logger.java
index 79895e263..b27147f20 100644
--- a/base/common/src/com/netscape/cmscore/logging/Logger.java
+++ b/base/common/src/com/netscape/cmscore/logging/Logger.java
@@ -29,7 +29,7 @@ import com.netscape.certsrv.logging.ILogger;
* A class represents certificate server logger
* implementation.
* <P>
- *
+ *
* @author thomask
* @author mzhao
* @version $Revision$, $Date$
@@ -69,7 +69,7 @@ public class Logger implements ILogger {
/**
* Registers log factory.
- *
+ *
* @param evtClass the event class name: ILogger.EV_SYSTEM or ILogger.EV_AUDIT
* @param f the event factory name
*/
@@ -80,7 +80,7 @@ public class Logger implements ILogger {
//************** default level ****************
/**
* Logs an event using default log level: ILogger.LL_INFO
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param source the source of the log event
* @param msg the one line detail message to be logged
@@ -91,7 +91,7 @@ public class Logger implements ILogger {
/**
* Logs an event using default log level: ILogger.LL_INFO
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -105,7 +105,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param source the source of the log event
* @param level the level of the log event
@@ -117,7 +117,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -132,7 +132,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -145,7 +145,7 @@ public class Logger implements ILogger {
/**
* Logs an event using default log level: ILogger.LL_INFO
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -158,7 +158,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -178,7 +178,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param source the source of the log event
* @param level the level of the log event
@@ -193,7 +193,7 @@ public class Logger implements ILogger {
//*************** the real implementation *****************
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -210,7 +210,7 @@ public class Logger implements ILogger {
//************** default level ****************
/**
* Logs an event using default log level: ILogger.LL_INFO
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param source the source of the log event
* @param msg the one line detail message to be logged
@@ -222,7 +222,7 @@ public class Logger implements ILogger {
/**
* Logs an event using default log level: ILogger.LL_INFO
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -237,7 +237,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param source the source of the log event
* @param level the level of the log event
@@ -250,7 +250,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -266,7 +266,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -280,7 +280,7 @@ public class Logger implements ILogger {
/**
* Logs an event using default log level: ILogger.LL_INFO
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -294,7 +294,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -315,7 +315,7 @@ public class Logger implements ILogger {
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param source the source of the log event
* @param level the level of the log event
@@ -331,7 +331,7 @@ public class Logger implements ILogger {
//*************** the real implementation *****************
/**
* Logs an event to the log queue.
- *
+ *
* @param evtClass What kind of event it is: EV_AUDIT or EV_SYSTEM.
* @param props the resource bundle used for the detailed message
* @param source the source of the log event
@@ -364,7 +364,7 @@ public class Logger implements ILogger {
/**
* Notifies logger to reuse the event. This framework
* opens up possibility to reuse event.
- *
+ *
* @param event a log event
*/
public void release(ILogEvent event) {
diff --git a/base/common/src/com/netscape/cmscore/logging/SignedAuditEventFactory.java b/base/common/src/com/netscape/cmscore/logging/SignedAuditEventFactory.java
index 48570cada..6ba492dc3 100644
--- a/base/common/src/com/netscape/cmscore/logging/SignedAuditEventFactory.java
+++ b/base/common/src/com/netscape/cmscore/logging/SignedAuditEventFactory.java
@@ -29,7 +29,7 @@ import com.netscape.cmscore.util.Debug;
/**
* A log event object for handling system messages
* <P>
- *
+ *
* @author mikep
* @author mzhao
* @author cfu
@@ -50,7 +50,7 @@ public class SignedAuditEventFactory implements ILogEventFactory {
/**
* Creates an log event.
- *
+ *
* @param evtClass the event type
* @param prop the resource bundle
* @param source the subsystem ID who creates the log event
@@ -98,7 +98,7 @@ public class SignedAuditEventFactory implements ILogEventFactory {
/**
* Set the resource bundle of the log event.
- *
+ *
* @param prop the properties
* @param event the log event
*/
@@ -116,7 +116,7 @@ public class SignedAuditEventFactory implements ILogEventFactory {
/**
* Releases an log event.
- *
+ *
* @param e the log event
*/
public void release(ILogEvent e) {
diff --git a/base/common/src/com/netscape/cmscore/logging/SignedAuditLogger.java b/base/common/src/com/netscape/cmscore/logging/SignedAuditLogger.java
index acc2b866f..4b6fd55a2 100644
--- a/base/common/src/com/netscape/cmscore/logging/SignedAuditLogger.java
+++ b/base/common/src/com/netscape/cmscore/logging/SignedAuditLogger.java
@@ -21,7 +21,7 @@ package com.netscape.cmscore.logging;
* A class represents certificate server logger
* implementation.
* <P>
- *
+ *
* @author thomask
* @author mzhao
* @version $Revision$, $Date$
diff --git a/base/common/src/com/netscape/cmscore/logging/SystemEventFactory.java b/base/common/src/com/netscape/cmscore/logging/SystemEventFactory.java
index dfe25f03f..6821fac6f 100644
--- a/base/common/src/com/netscape/cmscore/logging/SystemEventFactory.java
+++ b/base/common/src/com/netscape/cmscore/logging/SystemEventFactory.java
@@ -28,7 +28,7 @@ import com.netscape.certsrv.logging.SystemEvent;
/**
* A log event object for handling system messages
* <P>
- *
+ *
* @author mikep
* @author mzhao
* @version $Revision$, $Date$
@@ -48,7 +48,7 @@ public class SystemEventFactory implements ILogEventFactory {
/**
* Creates an log event.
- *
+ *
* @param evtClass the event type
* @param prop the resource bundle
* @param source the subsystem ID who creates the log event
@@ -72,7 +72,7 @@ public class SystemEventFactory implements ILogEventFactory {
/**
* Set the resource bundle of the log event.
- *
+ *
* @param prop the properties
* @param event the log event
*/
@@ -90,7 +90,7 @@ public class SystemEventFactory implements ILogEventFactory {
/**
* Releases an log event.
- *
+ *
* @param e the log event
*/
public void release(ILogEvent e) {
diff --git a/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java b/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java
index a057484cf..4848238b7 100644
--- a/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java
+++ b/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java
@@ -31,7 +31,7 @@ import com.netscape.certsrv.notification.IEmailFormProcessor;
* '$' is used preceeding a token name. A token name should not be a
* substring of any other token name
* <p>
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/notification/EmailResolverKeys.java b/base/common/src/com/netscape/cmscore/notification/EmailResolverKeys.java
index cd63841eb..7012801c5 100644
--- a/base/common/src/com/netscape/cmscore/notification/EmailResolverKeys.java
+++ b/base/common/src/com/netscape/cmscore/notification/EmailResolverKeys.java
@@ -26,7 +26,7 @@ import com.netscape.certsrv.notification.IEmailResolverKeys;
/**
* Email resolver keys as input to email resolvers
* <P>
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -43,7 +43,7 @@ public class EmailResolverKeys implements IEmailResolverKeys {
/**
* sets a key with key name and the key
- *
+ *
* @param name key name
* @param key key
* @exception com.netscape.certsrv.base.EBaseException NullPointerException
@@ -60,7 +60,7 @@ public class EmailResolverKeys implements IEmailResolverKeys {
/**
* returns the key to which the specified name is mapped in this
* key set
- *
+ *
* @param name key name
* @return the named email resolver key
*/
@@ -72,7 +72,7 @@ public class EmailResolverKeys implements IEmailResolverKeys {
* removes the name and its corresponding key from this
* key set. This method does nothing if the named
* key is not in the key set.
- *
+ *
* @param name key name
*/
public void delete(String name) {
@@ -83,7 +83,7 @@ public class EmailResolverKeys implements IEmailResolverKeys {
* returns an enumeration of the key names in this key
* set. Use the Enumeration methods on the returned object to
* fetch the elements sequentially.
- *
+ *
* @return an enumeration of the values in this key set
* @see java.util.Enumeration
*/
diff --git a/base/common/src/com/netscape/cmscore/notification/EmailTemplate.java b/base/common/src/com/netscape/cmscore/notification/EmailTemplate.java
index bdc16a24e..bd56ec608 100644
--- a/base/common/src/com/netscape/cmscore/notification/EmailTemplate.java
+++ b/base/common/src/com/netscape/cmscore/notification/EmailTemplate.java
@@ -30,8 +30,8 @@ import com.netscape.certsrv.notification.IEmailTemplate;
/**
* Files to be processed and returned to the requested parties. It
* is a template with $tokens to be used by the form/template processor.
- *
- *
+ *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -55,7 +55,7 @@ public class EmailTemplate implements IEmailTemplate {
/**
* Default Constructor
- *
+ *
* @param templateFile File name of the template including the full path and
* file extension
*/
diff --git a/base/common/src/com/netscape/cmscore/notification/ReqCertEmailResolver.java b/base/common/src/com/netscape/cmscore/notification/ReqCertEmailResolver.java
index 330621e7a..de34f7be0 100644
--- a/base/common/src/com/netscape/cmscore/notification/ReqCertEmailResolver.java
+++ b/base/common/src/com/netscape/cmscore/notification/ReqCertEmailResolver.java
@@ -34,7 +34,7 @@ import com.netscape.certsrv.request.IRequest;
* An email resolver that first checks the request email, if none,
* then follows by checking the subjectDN of the certificate
* <p>
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -53,7 +53,7 @@ public class ReqCertEmailResolver implements IEmailResolver {
/**
* returns an email address by using the resolver keys. The
* return value can possibly be null
- *
+ *
* @param keys list of keys used for resolving the email address
*/
public String getEmail(IEmailResolverKeys keys)
@@ -137,7 +137,7 @@ public class ReqCertEmailResolver implements IEmailResolver {
/**
* Returns array of required keys for this email resolver
- *
+ *
* @return Array of required keys.
*/
diff --git a/base/common/src/com/netscape/cmscore/notification/ReqCertSANameEmailResolver.java b/base/common/src/com/netscape/cmscore/notification/ReqCertSANameEmailResolver.java
index 68556dfc0..f3d5e8252 100644
--- a/base/common/src/com/netscape/cmscore/notification/ReqCertSANameEmailResolver.java
+++ b/base/common/src/com/netscape/cmscore/notification/ReqCertSANameEmailResolver.java
@@ -47,7 +47,7 @@ import com.netscape.certsrv.request.IRequest;
* then follows by checking the subjectDN of the certificate, if none,
* then follows by checking the subjectalternatename extension
* <p>
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
@@ -66,7 +66,7 @@ public class ReqCertSANameEmailResolver implements IEmailResolver {
/**
* returns an email address by using the resolver keys. The
* return value can possibly be null
- *
+ *
* @param keys list of keys used for resolving the email address
*/
public String getEmail(IEmailResolverKeys keys)
@@ -258,7 +258,7 @@ public class ReqCertSANameEmailResolver implements IEmailResolver {
/**
* Returns array of required keys for this email resolver
- *
+ *
* @return Array of required keys.
*/
diff --git a/base/common/src/com/netscape/cmscore/policy/AndExpression.java b/base/common/src/com/netscape/cmscore/policy/AndExpression.java
index 459660f1e..9a2274b11 100644
--- a/base/common/src/com/netscape/cmscore/policy/AndExpression.java
+++ b/base/common/src/com/netscape/cmscore/policy/AndExpression.java
@@ -24,9 +24,9 @@ import com.netscape.certsrv.request.IRequest;
/**
* This class represents an expression of the form
* <var1 op val1 AND var2 op va2>.
- *
+ *
* Expressions are used as predicates for policy selection.
- *
+ *
* @deprecated
* @author kanda
* @version $Revision$, $Date$
diff --git a/base/common/src/com/netscape/cmscore/policy/GeneralNameUtil.java b/base/common/src/com/netscape/cmscore/policy/GeneralNameUtil.java
index 7c7162d0c..a3f64915d 100644
--- a/base/common/src/com/netscape/cmscore/policy/GeneralNameUtil.java
+++ b/base/common/src/com/netscape/cmscore/policy/GeneralNameUtil.java
@@ -89,7 +89,7 @@ public class GeneralNameUtil implements IGeneralNameUtil {
* Form a General Name from a General Name choice and value.
* The General Name choice must be one of the General Name Choice Strings
* defined in this class.
- *
+ *
* @param generalNameChoice General Name choice. Must be one of the General
* Name choices defined in this class.
* @param value String value of the general name to form.
@@ -192,7 +192,7 @@ public class GeneralNameUtil implements IGeneralNameUtil {
/**
* Checks if given string is a valid General Name choice and returns
* the actual string that can be passed into form_GeneralName().
- *
+ *
* @param generalNameChoice a General Name choice string.
* @return one of General Name choices defined in this class that can be
* passed into form_GeneralName().
@@ -209,7 +209,7 @@ public class GeneralNameUtil implements IGeneralNameUtil {
theGeneralNameChoice = GENNAME_CHOICE_DNSNAME;
/* X400Address not supported.
- else if (generalNameChoice.equalsIgnoreCase(GENNAME_CHOICE_X400ADDRESS))
+ else if (generalNameChoice.equalsIgnoreCase(GENNAME_CHOICE_X400ADDRESS))
theGeneralNameChoice = GENNAME_CHOICE_X400ADDRESS;
*/
else if (generalNameChoice.equalsIgnoreCase(GENNAME_CHOICE_DIRECTORYNAME))
diff --git a/base/common/src/com/netscape/cmscore/policy/GenericPolicyProcessor.java b/base/common/src/com/netscape/cmscore/policy/GenericPolicyProcessor.java
index 05f8e111a..823c416dc 100644
--- a/base/common/src/com/netscape/cmscore/policy/GenericPolicyProcessor.java
+++ b/base/common/src/com/netscape/cmscore/policy/GenericPolicyProcessor.java
@@ -55,11 +55,11 @@ import com.netscape.cmscore.util.Debug;
* Renewal, Revocation and KeyRecovery and KeyArchival.
* 2. To apply the configured policies on the given request.
* 3. To enable policy listing/configuration via MCC console.
- *
+ *
* Since the policy processor also implements the IPolicy interface
* the processor itself presents itself as one big policy to the
* request processor.
- *
+ *
* @deprecated
* @author kanda
* @version $Revision$, $Date$
@@ -126,7 +126,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
/**
* Returns the configuration store.
* <P>
- *
+ *
* @return configuration store
*/
public IConfigStore getConfigStore() {
@@ -136,7 +136,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
/**
* Initializes the PolicyProcessor
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration of this subsystem
* @exception EBaseException failed to initialize this Subsystem.
@@ -323,7 +323,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
} catch (Throwable e) {
mAuthority.log(ILogger.LL_FAILURE,
CMS.getLogMessage("CMSCORE_POLICY_INIT_FAILED", instanceName, e.toString()));
- // disable rule initialized if there is
+ // disable rule initialized if there is
// configuration error
enabled = false;
c.putString(PROP_ENABLE, "false");
@@ -372,7 +372,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
/**
* Apply policies on the given request.
- *
+ *
* @param IRequest The given request
* @return The policy result object.
*/
@@ -384,9 +384,9 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
if (op == null) {
CMS.debug("GenericPolicyProcessor: apply op null");
// throw new AssertionException("Missing operation type in request. Can't happen!");
- // Return ACCEPTED for now. Looks like even get CA chain
- // is being passed in here with request type set elsewhere
- // on the request.
+ // Return ACCEPTED for now. Looks like even get CA chain
+ // is being passed in here with request type set elsewhere
+ // on the request.
return PolicyResult.ACCEPTED;
}
if (isProfileRequest(req)) {
@@ -920,7 +920,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
// Predicate for the persistent rule can't be changed.
ht.put(IPolicyRule.PROP_ENABLE, String.valueOf(active));
- // put old config store parameters first.
+ // put old config store parameters first.
for (Enumeration<String> oldkeys = oldStore.keys(); oldkeys.hasMoreElements();) {
String k = (String) oldkeys.nextElement();
String v = (String) oldStore.getString(k);
@@ -957,7 +957,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
// Try to initialize this rule.
newRule.init(this, newStore);
- // If we are successfully initialized, replace the rule
+ // If we are successfully initialized, replace the rule
// instance
policyInstance.setRule(newRule);
policyInstance.setActive(active);
@@ -1161,26 +1161,26 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
/**
* Initializes the default system policies. Currently there is only
* one policy - ManualAuthentication. More may be added later on.
- *
+ *
* The default policies may be disabled - for example to over-ride
* agent approval for testing the system by setting the following
* property in the config file:
- *
+ *
* <subsystemId>.Policy.systemPolicies.enable=false
- *
+ *
* By default the value for this property is true.
- *
+ *
* Users can over-ride the default system policies by listing their
* 'custom' system policies under the following property:
- *
+ *
* <subsystemId>.Policy.systemPolicies=<system policy1 class path>,
* <system policy2 class path>
- *
+ *
* There can only be one instance of the system policy in the system
* and will apply to all requests, and hence predicates are not used
* for a system policy. Due to the same reason, these properties are
* not configurable using the Console.
- *
+ *
* A System policy may read config properties from a subtree under
* <subsystemId>.Policy.systemPolicies.<ClassName>. An example is
* ra.Policy.systemPolicies.ManualAuthentication.param1=value
@@ -1221,7 +1221,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
mSystemDefaults = DEF_POLICIES;
}
- // Now Initialize the rules. These defaults have only one
+ // Now Initialize the rules. These defaults have only one
// instance and the rule name is the name of the class itself.
// Any configuration parameters required could be read from
// <subsystemId>.Policy.default.RuleName.
@@ -1268,84 +1268,84 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
/**
* Read list of undeletable policies if any configured in the
* system.
- *
+ *
* These are required to protect the system from being misconfigured
* to the point that the requests wouldn't serialize or certain
* fields in the certificate(s) being checked will go unchecked
* ..etc.
- *
+ *
* For now the following policies are undeletable:
- *
+ *
* DirAuthRule: This is a default DirectoryAuthentication policy
* for user certificates that interprets directory
* credentials. The presence of this policy is needed
* if the OOTB DirectoryAuthentication-based automatic
* certificate issuance is supported.
- *
+ *
* DefaultUserNameRule: This policy verifies/sets subjectDn for user
* certificates.
- *
+ *
* DefaultServerNameRule: This policy verifies/sets subjectDn for
* server certificates.
- *
+ *
* DefaultValidityRule: Verifies/sets validty for all certificates.
- *
+ *
* DefaultRenewalValidityRule: Verifies/sets validity for certs being
* renewed.
- *
+ *
* The 'undeletables' cannot be deleted from the config file, nor
* can the be disabled. If any predicates are associated with them
* the predicates can't be changed either. But, other config parameters
* such as maxValidity, renewalInterval ..etc can be changed to suit
* local policy requirements.
- *
+ *
* During start up the policy processor will verify if the undeletables
* are present, and that they are enabled and that their predicates are
* not changed.
- *
+ *
* The rules mentioned above are currently hard coded. If these need to
* read from the config file, the 'undeletables' can be configured as
* as follows:
- *
+ *
* <subsystemId>.Policy.undeletablePolicies=<comma separated rule names>
* Example:
* ra.Policy.undeletablePolicies=DirAuthRule, DefaultUserNameRule, DefaultServerNameRule, DefaultValidityRule,
* DefaultRenewalValidityRule
- *
+ *
* The predicates if any associated with them may be configured as
* follows:
* <subsystemId>.Policy.undeletablePolicies.DirAuthRule.predicate= certType == client.
- *
+ *
* where subsystemId is ra or ca.
- *
+ *
* If the undeletables are configured in the file,the configured entries
* take precedence over the hardcoded ones in this file. If you are
* configuring them in the file, please remember to configure the
* predicates if applicable.
- *
+ *
* During policy configuration from MCC, the policy processor will not
* let you delete an 'undeletable', nor will it let you disable it.
* You will not be able to change the predicate either. Other parameters
* can be configured as needed.
- *
+ *
* If a particular rule needs to be removed from the 'undeletables',
* either remove it from the hard coded list above, or configure the
* rules required rules only via the config file. The former needs
* recompilation of the source. The later is flexible to be able to
* make any rule an 'undeletable' or nor an 'undeletable'.
- *
+ *
* Example: We want to use only manual forms for enrollment.
* We do n't need to burn in DirAuthRule. We need to configure all
* other rules except the DirAuthRule as follows:
- *
+ *
* ra.Policy.undeletablePolicies = DefaultUserNameRule, DefaultServerNameRule, DefaultValidityRule,
* DefaultRenewalValidityRule
- *
+ *
* The following predicates are necessary:
- *
+ *
* ra.Policy.undeletablePolicies.DefaultUserNameRule.predicate = certType == client
* ra.Policy.undeletablePolicies.DefaultServerNameRule.predicate = certType == server
- *
+ *
* The other two rules do not have any predicates.
*/
private void initUndeletablePolicies(IConfigStore mConfig)
@@ -1375,7 +1375,7 @@ public class GenericPolicyProcessor implements IPolicyProcessor {
return;
}
- // For each rule read from the config file, see if any
+ // For each rule read from the config file, see if any
// predicate is set.
mUndeletablePolicies = new Hashtable<String, IExpression>();
for (Enumeration<String> e = rules.elements(); e.hasMoreElements();) {
diff --git a/base/common/src/com/netscape/cmscore/policy/OrExpression.java b/base/common/src/com/netscape/cmscore/policy/OrExpression.java
index 3b220c100..512bba256 100644
--- a/base/common/src/com/netscape/cmscore/policy/OrExpression.java
+++ b/base/common/src/com/netscape/cmscore/policy/OrExpression.java
@@ -24,9 +24,9 @@ import com.netscape.certsrv.request.IRequest;
/**
* This class represents an Or expression of the form
* (var1 op val1 OR var2 op val2).
- *
+ *
* Expressions are used as predicates for policy selection.
- *
+ *
* @deprecated
* @author kanda
* @version $Revision$, $Date$
diff --git a/base/common/src/com/netscape/cmscore/policy/PolicyPredicateParser.java b/base/common/src/com/netscape/cmscore/policy/PolicyPredicateParser.java
index 568a38e6d..b40a50699 100644
--- a/base/common/src/com/netscape/cmscore/policy/PolicyPredicateParser.java
+++ b/base/common/src/com/netscape/cmscore/policy/PolicyPredicateParser.java
@@ -26,16 +26,16 @@ import com.netscape.cmscore.util.Debug;
/**
* Default implementation of predicate parser.
- *
+ *
* Limitations:
- *
+ *
* 1. Currently parentheses are not suported.
* 2. Only ==, != <, >, <= and >= operators are supported.
* 3. The only boolean operators supported are AND and OR. AND takes precedence
* over OR. Example: a AND b OR e OR c AND d
* is treated as (a AND b) OR e OR (c AND d)
* 4. If this is n't adequate, roll your own.
- *
+ *
* @deprecated
* @author kanda
* @version $Revision$, $Date$
@@ -52,7 +52,7 @@ public class PolicyPredicateParser {
/**
* Parse the predicate expression and return a vector of expressions.
- *
+ *
* @param predicateExp The predicate expression as read from the config file.
* @return expVector The vector of expressions.
*/
@@ -198,7 +198,7 @@ public class PolicyPredicateParser {
* req.set("request", "issuance");
* req.set("id", new Integer(10));
* req.set("dualcerts", new Boolean(true));
- *
+ *
* Vector v = new Vector();
* v.addElement("one");
* v.addElement("two");
@@ -228,8 +228,8 @@ public class PolicyPredicateParser {
* }
* catch (Exception e) {e.printStackTrace(); }
* }
- *
- *
+ *
+ *
* try
* {
* BufferedReader rdr = new BufferedReader(
@@ -249,7 +249,7 @@ public class PolicyPredicateParser {
* boolean result = exp.evaluate(req);
* System.out.println("Result: " + result);
* }
- *
+ *
* }catch (Exception e){e.printStackTrace();}
* }
* }
diff --git a/base/common/src/com/netscape/cmscore/policy/PolicySet.java b/base/common/src/com/netscape/cmscore/policy/PolicySet.java
index 9e7ecdc64..d824d2629 100644
--- a/base/common/src/com/netscape/cmscore/policy/PolicySet.java
+++ b/base/common/src/com/netscape/cmscore/policy/PolicySet.java
@@ -32,7 +32,7 @@ import com.netscape.cmscore.util.Debug;
/**
* Implements a policy set per IPolicySet interface. This class
* uses a vector of ordered policies to enforce priority.
- *
+ *
* @deprecated
* @author kanda
* @version $Revision$, $Date$
@@ -50,7 +50,7 @@ public class PolicySet implements IPolicySet {
/**
* Returns the name of the rule set.
* <P>
- *
+ *
* @return The name of the rule set.
*/
public String getName() {
@@ -60,7 +60,7 @@ public class PolicySet implements IPolicySet {
/**
* Returns the no of rules in a set.
* <P>
- *
+ *
* @return the no of rules.
*/
public int count() {
@@ -70,7 +70,7 @@ public class PolicySet implements IPolicySet {
/**
* Add a policy rule.
* <P>
- *
+ *
* @param ruleName The name of the rule to be added.
* @param rule The rule to be added.
*/
@@ -88,7 +88,7 @@ public class PolicySet implements IPolicySet {
/**
* Remplaces a policy rule identified by the given name.
- *
+ *
* @param name The name of the rule to be replaced.
* @param rule The rule to be replaced.
*/
@@ -106,7 +106,7 @@ public class PolicySet implements IPolicySet {
/**
* Removes a policy rule identified by the given name.
- *
+ *
* @param name The name of the rule to be removed.
*/
public void removeRule(String ruleName) {
@@ -122,7 +122,7 @@ public class PolicySet implements IPolicySet {
/**
* Returns the rule identified by a given name.
* <P>
- *
+ *
* @param name The name of the rule to be return.
* @return The rule identified by the given name or null if none exists.
*/
@@ -137,7 +137,7 @@ public class PolicySet implements IPolicySet {
/**
* Returns an enumeration of rules.
* <P>
- *
+ *
* @return An enumeration of rules.
*/
public Enumeration<IPolicyRule> getRules() {
@@ -147,7 +147,7 @@ public class PolicySet implements IPolicySet {
/**
* Apply policies on a given request from a rule set.
* The rules may modify the request.
- *
+ *
* @param req The request to apply policies on.
* @return the PolicyResult.
*/
@@ -161,7 +161,7 @@ public class PolicySet implements IPolicySet {
// if atleast one of the policies returns a REJECTED, we need to
// return that status. If none of the policies REJECTED
// the request, but atleast one of them DEFERRED the request, we
- // need to return DEFERRED.
+ // need to return DEFERRED.
boolean rejected = false;
boolean deferred = false;
int size = mRules.size();
@@ -235,7 +235,7 @@ public class PolicySet implements IPolicySet {
ILogger.LL_FAILURE,
CMS.getLogMessage("CMSCORE_POLICY_ERROR_RESULT", req.getRequestId().toString(), name,
ex.toString()));
- // treat as rejected to prevent request from going into
+ // treat as rejected to prevent request from going into
// a weird state. request queue doesn't handle this case.
rejected = true;
((IPolicyRule) rule).setError(
diff --git a/base/common/src/com/netscape/cmscore/policy/SimpleExpression.java b/base/common/src/com/netscape/cmscore/policy/SimpleExpression.java
index 892fd6451..cf6e44bb0 100644
--- a/base/common/src/com/netscape/cmscore/policy/SimpleExpression.java
+++ b/base/common/src/com/netscape/cmscore/policy/SimpleExpression.java
@@ -30,9 +30,9 @@ import com.netscape.cmscore.util.Debug;
/**
* This class represents an expression of the form var = val,
* var != val, var < val, var > val, var <= val, var >= val.
- *
+ *
* Expressions are used as predicates for policy selection.
- *
+ *
* @deprecated
* @author kanda
* @version $Revision$, $Date$
@@ -46,7 +46,7 @@ public class SimpleExpression implements IExpression {
private boolean hasWildCard;
public static final char WILDCARD_CHAR = '*';
- // This is just for indicating a null expression.
+ // This is just for indicating a null expression.
public static SimpleExpression NULL_EXPRESSION = new SimpleExpression("null", OP_EQUAL, "null");
public static IExpression parse(String input)
diff --git a/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java b/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java
index 585af5600..54f54e009 100644
--- a/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/profile/ProfileSubsystem.java
@@ -65,7 +65,7 @@ public class ProfileSubsystem implements IProfileSubsystem {
* Initializes this subsystem with the given configuration
* store.
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration store
* @exception EBaseException failed to initialize
@@ -220,7 +220,7 @@ public class ProfileSubsystem implements IProfileSubsystem {
/**
* Returns the root configuration storage of this system.
* <P>
- *
+ *
* @return configuration store of this subsystem
*/
public IConfigStore getConfigStore() {
@@ -312,7 +312,7 @@ public class ProfileSubsystem implements IProfileSubsystem {
/**
* Checks if owner id should be enforced during profile approval.
- *
+ *
* @return true if approval should be checked
*/
public boolean checkOwner() {
diff --git a/base/common/src/com/netscape/cmscore/realm/ACL.java b/base/common/src/com/netscape/cmscore/realm/ACL.java
index 4d7303f9d..5c7defd1d 100644
--- a/base/common/src/com/netscape/cmscore/realm/ACL.java
+++ b/base/common/src/com/netscape/cmscore/realm/ACL.java
@@ -29,7 +29,7 @@ import java.util.Vector;
* An <code>ACL</code> may contain one or more <code>ACLEntry</code>. However, in case of multiple <code>ACLEntry</code>
* , a subject must pass ALL of the <code>ACLEntry</code> evaluation for permission to be granted
* <P>
- *
+ *
* @version $Revision$, $Date$
*/
public class ACL {
@@ -54,7 +54,7 @@ public class ACL {
* Class constructor.
* Constructs an access control list associated
* with a resource name
- *
+ *
* @param name resource name
* @param rights applicable rights defined for this resource
* @param resourceACLs the entire ACL specification. For example:
@@ -78,7 +78,7 @@ public class ACL {
/**
* Sets the name of the resource governed by this
* access control.
- *
+ *
* @param name name of the resource
*/
public void setName(String name) {
@@ -88,7 +88,7 @@ public class ACL {
/**
* Retrieves the name of the resource governed by
* this access control.
- *
+ *
* @return name of the resource
*/
public String getName() {
@@ -97,7 +97,7 @@ public class ACL {
/**
* Retrieves the exact string of the resourceACLs
- *
+ *
* @return resource's acl
*/
public String getResourceACLs() {
@@ -107,7 +107,7 @@ public class ACL {
/**
* Sets the description of the resource governed by this
* access control.
- *
+ *
* @param description Description of the protected resource
*/
public void setDescription(String description) {
@@ -117,7 +117,7 @@ public class ACL {
/**
* Retrieves the description of the resource governed by
* this access control.
- *
+ *
* @return Description of the protected resource
*/
public String getDescription() {
@@ -126,7 +126,7 @@ public class ACL {
/**
* Adds an ACL entry to this list.
- *
+ *
* @param entry the <code>ACLEntry</code> to be added to this resource
*/
public void addEntry(ACLEntry entry) {
@@ -135,7 +135,7 @@ public class ACL {
/**
* Returns ACL entries.
- *
+ *
* @return enumeration for the <code>ACLEntry</code> vector
*/
public Enumeration<ACLEntry> entries() {
@@ -144,7 +144,7 @@ public class ACL {
/**
* Returns the string reprsentation.
- *
+ *
* @return the string representation of the ACL entries in the
* following format:
* <resource name>[<ACLEntry1>,<ACLEntry 2>,...<ACLEntry N>]
@@ -165,7 +165,7 @@ public class ACL {
/**
* Adds an rights entry to this list.
- *
+ *
* @param right The right to be added for this ACL
*/
public void addRight(String right) {
@@ -174,7 +174,7 @@ public class ACL {
/**
* Tells if the permission is one of the defined "rights"
- *
+ *
* @param permission permission to be checked
* @return true if it's one of the "rights"; false otherwise
*/
@@ -184,7 +184,7 @@ public class ACL {
/**
* Returns rights entries.
- *
+ *
* @return enumeration of rights defined for this ACL
*/
public Enumeration<String> rights() {
diff --git a/base/common/src/com/netscape/cmscore/realm/ACLEntry.java b/base/common/src/com/netscape/cmscore/realm/ACLEntry.java
index 8e502b02c..e05abf0b9 100644
--- a/base/common/src/com/netscape/cmscore/realm/ACLEntry.java
+++ b/base/common/src/com/netscape/cmscore/realm/ACLEntry.java
@@ -24,7 +24,7 @@ import java.util.StringTokenizer;
/**
* A class represents an ACI entry of an access control list.
* <P>
- *
+ *
* @version $Revision$, $Date$
*/
public class ACLEntry {
@@ -44,7 +44,7 @@ public class ACLEntry {
/**
* Checks if this ACL entry is set to negative.
- *
+ *
* @return true if this ACL entry expression is for "deny";
* false if this ACL entry expression is for "allow"
*/
@@ -61,9 +61,9 @@ public class ACLEntry {
/**
* Sets the ACL entry string
- *
+ *
* @param s string in the following format:
- *
+ *
* <PRE>
* allow|deny (right[,right...]) attribute_expression
* </PRE>
@@ -74,9 +74,9 @@ public class ACLEntry {
/**
* Gets the ACL Entry String
- *
+ *
* @return ACL Entry string in the following format:
- *
+ *
* <PRE>
* allow|deny (right[,right...]) attribute_expression
* </PRE>
@@ -88,7 +88,7 @@ public class ACLEntry {
/**
* Adds permission to this entry. Permission must be one of the
* "rights" defined for each protected resource in its ACL
- *
+ *
* @param acl the acl instance that this aclEntry is associated with
* @param permission one of the "rights" defined for each
* protected resource in its ACL
@@ -104,7 +104,7 @@ public class ACLEntry {
/**
* Returns a list of permissions associated with
* this entry.
- *
+ *
* @return a list of permissions for this ACL entry
*/
public Enumeration<String> permissions() {
@@ -113,7 +113,7 @@ public class ACLEntry {
/**
* Sets the expression associated with this entry.
- *
+ *
* @param expressions the evaluator expressions. For example,
* group="Administrators"
*/
@@ -123,7 +123,7 @@ public class ACLEntry {
/**
* Retrieves the expression associated with this entry.
- *
+ *
* @return the evaluator expressions. For example,
* group="Administrators"
*/
@@ -134,7 +134,7 @@ public class ACLEntry {
/**
* Checks to see if this <code>ACLEntry</code> contains a
* particular permission
- *
+ *
* @param permission one of the "rights" defined for each
* protected resource in its ACL
* @return true if permission contained in the permission list
@@ -146,7 +146,7 @@ public class ACLEntry {
/**
* Checks if this entry has the given permission.
- *
+ *
* @param permission one of the "rights" defined for each
* protected resource in its ACL
* @return true if the permission is allowed; false if the
@@ -167,13 +167,13 @@ public class ACLEntry {
/**
* Parse string in the following format:
- *
+ *
* <PRE>
* allow|deny (right[,right...]) attribute_expression
* </PRE>
- *
+ *
* into an instance of the <code>ACLEntry</code> class
- *
+ *
* @param acl the acl instance associated with this aclentry
* @param aclEntryString aclEntryString in the specified format
* @return an instance of the <code>ACLEntry</code> class
@@ -217,7 +217,7 @@ public class ACLEntry {
/**
* Returns the string representation of this ACLEntry
- *
+ *
* @return string representation of this ACLEntry
*/
public String toString() {
diff --git a/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java b/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java
index 720d9f52e..b847332c6 100644
--- a/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java
+++ b/base/common/src/com/netscape/cmscore/realm/PKIJNDIRealm.java
@@ -32,19 +32,19 @@ import javax.servlet.http.HttpServletResponse;
/*
* Self contained PKI JNDI Real that overrides the standard JNDI Realm
- *
+ *
* The purpose is to move authentication and authorization code out of the core server.
* This realm can be used standalone with only the dependency of having tomcatjss and jss installed
* and having tomcatjss connectors configured in the tomcat instance.
- *
+ *
* This realm allows for configurable SSL client authentication checking as well
* as checking against the standard PKI ACLs we have configured in our ldap database.
* Those not using a CS instance could either not configure the ACL checking or
* override this class to read in and evaluate their own ACL's.
- *
+ *
* This code makes use and simplifies some existing ACL and authorization code
* from the main server for now.
- *
+ *
*/
public class PKIJNDIRealm extends JNDIRealm {
@@ -123,11 +123,11 @@ public class PKIJNDIRealm extends JNDIRealm {
//Call the getPrincipal method of the base JNDIRealm class
//based on the just calculated uid. During the next call
- // one of our methods to extract and store the user's ldap stored
+ // one of our methods to extract and store the user's ldap stored
//client cert will be invoked
Principal user = getPrincipal(uid);
-
+
//ToDo: Possibly perform some more cert verficiation
// such as OCSP, even though the tomcat jss connector
// can already be configured for OCSP
@@ -154,12 +154,12 @@ public class PKIJNDIRealm extends JNDIRealm {
* otherwise return <code>null</code>.
* Override here to extract the client auth certificate from the
* ldap db.
- *
+ *
* @param context The directory context
* @param username Username to be looked up
- *
+ *
* @exception NamingException if a directory server error occurs
- *
+ *
* @see #getUser(DirContext, String, String, int)
*/
@Override
@@ -175,7 +175,7 @@ public class PKIJNDIRealm extends JNDIRealm {
// Support for SSL client auth does not appear to support
// the userPattern attribute. Certainly another method here
// could be overridden to get this working.
-
+
User certUser = super.getUser(context, username);
if (certUser != null) {
@@ -190,12 +190,12 @@ public class PKIJNDIRealm extends JNDIRealm {
* Return <code>true</code> if this constraint is satisfied and processing
* should continue, or <code>false</code> otherwise.
* override to check for custom PKI ACL's authz permissions.
- *
+ *
* @param request Request we are processing
* @param response Response we are creating
* @param constraints Security constraint we are enforcing
* @param context The Context to which client of this class is attached.
- *
+ *
* @exception IOException if an input/output error occurs
*/
@Override
@@ -254,7 +254,7 @@ public class PKIJNDIRealm extends JNDIRealm {
return allowed;
}
-
+
/**
* Return a List of roles associated with the given User. Any
* roles present in the user's directory entry are supplemented by
@@ -280,10 +280,10 @@ public class PKIJNDIRealm extends JNDIRealm {
return super.getRoles(context, user);
}
-
+
/* Custom variables, see <Realm> element */
- /* Attribute to find encoded Cert in ldap
+ /* Attribute to find encoded Cert in ldap
* "userCertificate" is most common value.
*/
private String certAttrName;
@@ -296,7 +296,7 @@ public class PKIJNDIRealm extends JNDIRealm {
this.certAttrName = certAttrName;
}
- /* Attribute to find encoded acl resources in ldap
+ /* Attribute to find encoded acl resources in ldap
* "aclResources" is most common value.
*/
private String aclAttrName;
@@ -309,7 +309,7 @@ public class PKIJNDIRealm extends JNDIRealm {
this.aclAttrName = aclAttrName;
}
- /* Attribute for base dn of acl resources in ldap
+ /* Attribute for base dn of acl resources in ldap
*/
private String aclBase;
@@ -338,7 +338,7 @@ public class PKIJNDIRealm extends JNDIRealm {
/* Saved user certificate object obtained during authentication
* from the user's LDAP record.
- * Will be accessed later to compare with incoming client auth certificate.
+ * Will be accessed later to compare with incoming client auth certificate.
*/
private X509Certificate storedUserCert;
@@ -547,7 +547,7 @@ public class PKIJNDIRealm extends JNDIRealm {
}
- /* Attempt to get the stored user certificate object and save it for
+ /* Attempt to get the stored user certificate object and save it for
* future reference. This all takes place within one command invocation from
* the getPrincipal method defined here.
*/
@@ -630,7 +630,7 @@ public class PKIJNDIRealm extends JNDIRealm {
// as one of the parameters to the message.
// There may be a way to extract this information at this level.
// The parameter name to scan for could be configured with the Realm.
-
+
private String getACLEntryDataForURL(String requestURI) {
String aclEntryData;
@@ -746,9 +746,9 @@ public class PKIJNDIRealm extends JNDIRealm {
/**
* Parse ACL resource attributes
- *
+ *
* @param res same format as the resource attribute:
- *
+ *
* <PRE>
* <resource name>:<permission1,permission2,...permissionn>:
* <allow|deny> (<subset of the permission set>) <evaluator expression>
@@ -894,14 +894,14 @@ public class PKIJNDIRealm extends JNDIRealm {
return;
}
}
-
+
/**
* Return a String representing the value of the specified attribute.
* Create our own since the super class has it as private
- *
+ *
* @param attrId Attribute name
* @param attrs Attributes containing the required value
- *
+ *
* @exception NamingException if a directory server error occurs
*/
private Vector<String> getAttributeValues(String attrId, Attributes attrs)
@@ -929,7 +929,7 @@ public class PKIJNDIRealm extends JNDIRealm {
}
return values;
}
-
+
/*
* ToDo: Figure out how to do real logging
*/
diff --git a/base/common/src/com/netscape/cmscore/registry/PluginInfo.java b/base/common/src/com/netscape/cmscore/registry/PluginInfo.java
index 681861901..f9f734b72 100644
--- a/base/common/src/com/netscape/cmscore/registry/PluginInfo.java
+++ b/base/common/src/com/netscape/cmscore/registry/PluginInfo.java
@@ -24,7 +24,7 @@ import com.netscape.certsrv.registry.IPluginInfo;
/**
* The plugin information includes id, name,
* classname, and description.
- *
+ *
* @author thomask
*/
public class PluginInfo implements IPluginInfo {
diff --git a/base/common/src/com/netscape/cmscore/registry/PluginRegistry.java b/base/common/src/com/netscape/cmscore/registry/PluginRegistry.java
index 42bb3e68e..95a723785 100644
--- a/base/common/src/com/netscape/cmscore/registry/PluginRegistry.java
+++ b/base/common/src/com/netscape/cmscore/registry/PluginRegistry.java
@@ -65,7 +65,7 @@ public class PluginRegistry implements IPluginRegistry {
* Initializes this subsystem with the given configuration
* store.
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration store
* @exception EBaseException failed to initialize
@@ -251,7 +251,7 @@ public class PluginRegistry implements IPluginRegistry {
/**
* Returns the root configuration storage of this system.
* <P>
- *
+ *
* @return configuration store of this subsystem
*/
public IConfigStore getConfigStore() {
diff --git a/base/common/src/com/netscape/cmscore/request/ARequestQueue.java b/base/common/src/com/netscape/cmscore/request/ARequestQueue.java
index 16db3985c..1d247ab0c 100644
--- a/base/common/src/com/netscape/cmscore/request/ARequestQueue.java
+++ b/base/common/src/com/netscape/cmscore/request/ARequestQueue.java
@@ -76,7 +76,7 @@ import com.netscape.certsrv.request.RequestStatus;
* <p>
* This class also implements the locking operations specified by the IRequestQueue interface.
* <p>
- *
+ *
* @author thayes
* @version $Revision$ $Date$
*/
@@ -94,7 +94,7 @@ public abstract class ARequestQueue
* This method must be implemented by the specialized class to generate a new id from data in the persistant store.
* This id is used to create a new request object.
* <p>
- *
+ *
* @return
* a new RequestId object.
* @exception EBaseException
@@ -112,7 +112,7 @@ public abstract class ARequestQueue
* The implementation of this object can use the createRequest member function to create a new instance of an
* IRequest, and use the setRequestStatus, setCreationTime and setModificationTime functions to set those values.
* <p>
- *
+ *
* @param id
* the id of the request to read.
* @return
@@ -132,7 +132,7 @@ public abstract class ARequestQueue
* <p>
* This function is called when a new request immediately after creating a new request.
* <p>
- *
+ *
* @param request
* the request to add.
* @exception EBaseException
@@ -147,7 +147,7 @@ public abstract class ARequestQueue
* <p>
* Currently there are no hints for what has changed, so the entire request should be updated.
* <p>
- *
+ *
* @param request
* @exception EBaseException
* TODO: this is not implemented yet
@@ -164,7 +164,7 @@ public abstract class ARequestQueue
* <p>
* TODO: return IRequestList -or- just use listRequests as the basic engine.
* <p>
- *
+ *
* @return
* an Enumeration that generates RequestId objects.
*/
@@ -173,7 +173,7 @@ public abstract class ARequestQueue
/**
* protected access for setting the current state of a request.
* <p>
- *
+ *
* @param request
* The request to be modified.
* @param status
@@ -188,7 +188,7 @@ public abstract class ARequestQueue
/**
* protected access for setting the modification time of a request.
* <p>
- *
+ *
* @param request
* The request to be modified.
* @param date
@@ -203,7 +203,7 @@ public abstract class ARequestQueue
/**
* protected access for setting the creation time of a request.
* <p>
- *
+ *
* @param request
* The request to be modified.
* @param date
@@ -218,7 +218,7 @@ public abstract class ARequestQueue
/**
* protected access for creating a new Request object
* <p>
- *
+ *
* @param id
* The identifier for the new request
* @return
@@ -246,7 +246,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.newRequest
* <p>
- *
+ *
* @see IRequestQueue#newRequest
*/
public IRequest newRequest(String requestType)
@@ -282,18 +282,18 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.cloneRequest
* <p>
- *
+ *
* @see IRequestQueue#cloneRequest
*/
public IRequest cloneRequest(IRequest r)
throws EBaseException {
- // 1. check for valid state. (Are any invalid ?)
+ // 1. check for valid state. (Are any invalid ?)
RequestStatus rs = r.getRequestStatus();
if (rs == RequestStatus.BEGIN)
throw new EBaseException("Invalid Status");
- // 2. create new request
+ // 2. create new request
String reqType = r.getRequestType();
IRequest clone = newRequest(reqType);
@@ -313,7 +313,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.findRequest
* <p>
- *
+ *
* @see IRequestQueue#findRequest
*/
public IRequest findRequest(RequestId id)
@@ -342,7 +342,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.processRequest
* <p>
- *
+ *
* @see IRequestQueue#processRequest
*/
public final void processRequest(IRequest r)
@@ -373,7 +373,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.markRequestPending
* <p>
- *
+ *
* @see IRequestQueue#markRequestPending
*/
public final void markRequestPending(IRequest r)
@@ -397,7 +397,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.cloneAndMarkPending
* <p>
- *
+ *
* @see IRequestQueue#cloneAndMarkPending
*/
public IRequest cloneAndMarkPending(IRequest r)
@@ -411,7 +411,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.approveRequest
* <p>
- *
+ *
* @see IRequestQueue#approveRequest
*/
public final void approveRequest(IRequest r)
@@ -455,7 +455,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.rejectRequest
* <p>
- *
+ *
* @see IRequestQueue#rejectRequest
*/
public final void rejectRequest(IRequest r)
@@ -477,7 +477,7 @@ public abstract class ARequestQueue
/**
* Implments IRequestQueue.cancelRequest
* <p>
- *
+ *
* @see IRequestQueue#cancelRequest
*/
public final void cancelRequest(IRequest r)
@@ -509,7 +509,7 @@ public abstract class ARequestQueue
* Should be overridden by the specialized class if a more efficient method is available for implementing this
* operation.
* <P>
- *
+ *
* @see IRequestQueue#listRequests
*/
public IRequestList listRequests() {
@@ -522,7 +522,7 @@ public abstract class ARequestQueue
* Should be overridden by the specialized class if a more efficient method is available for implementing this
* operation.
* <P>
- *
+ *
* @see IRequestQueue#listRequestsByStatus
*/
public IRequestList listRequestsByStatus(RequestStatus s) {
@@ -532,7 +532,7 @@ public abstract class ARequestQueue
/**
* Implements IRequestQueue.releaseRequest
* <p>
- *
+ *
* @see IRequestQueue#releaseRequest
*/
public final void releaseRequest(IRequest request) {
@@ -733,7 +733,7 @@ public abstract class ARequestQueue
} catch (InterruptedException e) {
};
}
- }
+ }
public synchronized void unlock(RequestId id) {
mHashtable.remove(id);
@@ -742,7 +742,7 @@ public abstract class ARequestQueue
}
// instance variables
- Hashtable mHashtable = new Hashtable();
+ Hashtable mHashtable = new Hashtable();
}
*/
@@ -859,7 +859,7 @@ class Request
* This function used to check that the keys obeyed LDAP attribute name
* syntax rules. Keys are being encoded now, so it is changed to just
* filter out null and empty string keys.
- *
+ *
* @param key The key to check
* @return false if invalid
*/
diff --git a/base/common/src/com/netscape/cmscore/request/ARequestRecord.java b/base/common/src/com/netscape/cmscore/request/ARequestRecord.java
index e23d4007c..5f2aa50b2 100644
--- a/base/common/src/com/netscape/cmscore/request/ARequestRecord.java
+++ b/base/common/src/com/netscape/cmscore/request/ARequestRecord.java
@@ -27,7 +27,7 @@ import com.netscape.certsrv.request.RequestStatus;
* The low level (attributes only) version of the database
* record object. This exists so that RecordAttr methods can use
* this type definition,
- *
+ *
* RequestRecord refers both to this class and to RecordAttr objects.
*/
class ARequestRecord {
diff --git a/base/common/src/com/netscape/cmscore/request/CertRequestConstants.java b/base/common/src/com/netscape/cmscore/request/CertRequestConstants.java
index eab41fcd5..9b9391d44 100644
--- a/base/common/src/com/netscape/cmscore/request/CertRequestConstants.java
+++ b/base/common/src/com/netscape/cmscore/request/CertRequestConstants.java
@@ -23,8 +23,8 @@ package com.netscape.cmscore.request;
* as needed.
*/
public class CertRequestConstants {
- // request types - these have string values.
- // made to match policy constants.
+ // request types - these have string values.
+ // made to match policy constants.
public final static String GETCRL_REQUEST = "getCRL";
public final static String GETCACHAIN_REQUEST = "getCAChain";
public final static String GETREVOCATIONINFO_REQUEST = "getRevocationInfo";
@@ -50,7 +50,7 @@ public class CertRequestConstants {
// this has a CRLExtensions value.
public final static String CRLEXTS = "CRLExts";
- // this has a String value - it is either null or set.
+ // this has a String value - it is either null or set.
public final static String DOGETCACHAIN = "doGetCAChain";
// this has a CertificateChain value.
@@ -63,7 +63,7 @@ public class CertRequestConstants {
public final static String CERTIFICATE = "certificate";
// this is an array of EBaseException for service errors when
- // there's an error processing an array of something such as
+ // there's an error processing an array of something such as
// certs to renew, certs to revoke, etc.
public final static String SVCERRORS = "serviceErrors";
diff --git a/base/common/src/com/netscape/cmscore/request/RequestAttr.java b/base/common/src/com/netscape/cmscore/request/RequestAttr.java
index 25734c91e..a48fca1d2 100644
--- a/base/common/src/com/netscape/cmscore/request/RequestAttr.java
+++ b/base/common/src/com/netscape/cmscore/request/RequestAttr.java
@@ -34,7 +34,7 @@ import com.netscape.certsrv.request.ldap.IRequestMod;
abstract class RequestAttr {
/**
- *
+ *
*/
abstract void set(ARequestRecord r, Object o);
diff --git a/base/common/src/com/netscape/cmscore/request/RequestQueue.java b/base/common/src/com/netscape/cmscore/request/RequestQueue.java
index ef13d3c29..95335724a 100644
--- a/base/common/src/com/netscape/cmscore/request/RequestQueue.java
+++ b/base/common/src/com/netscape/cmscore/request/RequestQueue.java
@@ -306,7 +306,7 @@ public class RequestQueue
/**
* Implements IRequestQueue.findRequestBySourceId
* <p>
- *
+ *
* @see com.netscape.certsrv.request.IRequestQueue#findRequestBySourceId
*/
public RequestId findRequestBySourceId(String id) {
@@ -321,7 +321,7 @@ public class RequestQueue
/**
* Implements IRequestQueue.findRequestsBySourceId
* <p>
- *
+ *
* @see com.netscape.certsrv.request.IRequestQueue#findRequestsBySourceId
*/
public IRequestList findRequestsBySourceId(String id) {
@@ -406,7 +406,7 @@ public class RequestQueue
return new SearchEnumeration(this, results);
}
- /**
+ /**
*/
public IRequestList listRequestsByFilter(String f, int maxSize) {
IDBSearchResults results = null;
@@ -476,7 +476,7 @@ public class RequestQueue
dbs = mDB.createSession();
results = dbs.search(mBaseDN, f1);
} catch (EBaseException e) {
- //System.err.println("Error: "+e);
+ //System.err.println("Error: "+e);
//e.printStackTrace();
} finally {
// Close session - ignoring errors (UTIL)
@@ -595,7 +595,7 @@ public class RequestQueue
}
/*
- * return request repository
+ * return request repository
*/
public IRepository getRequestRepository() {
return (IRepository) mRepository;
diff --git a/base/common/src/com/netscape/cmscore/request/RequestRecord.java b/base/common/src/com/netscape/cmscore/request/RequestRecord.java
index 1d066f0ad..3381727e4 100644
--- a/base/common/src/com/netscape/cmscore/request/RequestRecord.java
+++ b/base/common/src/com/netscape/cmscore/request/RequestRecord.java
@@ -267,7 +267,7 @@ public class RequestRecord
* This table contains attribute handlers for attributes
* of the request. These attributes are ones that are stored
* apart from the generic name/value pairs supported by the get/set
- * interface plus the hashtable for the name/value pairs themselves.
+ * interface plus the hashtable for the name/value pairs themselves.
*
* NOTE: Eventually, all attributes should be done here. Currently
* only the last ones added are implemented this way.
@@ -430,10 +430,10 @@ class RequestIdMapper
/**
* A mapper between an request attr set and its LDAP attribute representation.
- *
+ *
* The attr attribute is no longer used. This class is kept for historical
* and migration purposes.
- *
+ *
* @author thayes
* @version $Revision$ $Date$
* @deprecated
@@ -557,7 +557,7 @@ class RequestAttrsMapper
/**
* Implements IDBAttrMapper.mapLDAPAttributeSetToObject
* <p>
- *
+ *
* @see IDBAttrMapper#mapLDAPAttributeSetToObject
*/
public void mapLDAPAttributeSetToObject(LDAPAttributeSet attrs,
@@ -567,7 +567,7 @@ class RequestAttrsMapper
//
// Data is stored in a (single valued) binary attribute
- //
+ //
byte[] value;
LDAPAttribute attr = null;
@@ -609,14 +609,14 @@ class RequestAttrsMapper
/**
* Maps dynamic data for the extData- prefix to and from the extData Hashtable
* in RequestRecord.
- *
+ *
* The data in RequestRecord is stored in a Hashtable. It comes in two forms:
* 1. String key1 => String value1
* String key2 => String value2
* This is stored in LDAP as:
* extData-key1 => value1
* extData-key2 => value2
- *
+ *
* 2. String key => Hashtable value
* where value stores:
* String key2 => String value2
@@ -624,10 +624,10 @@ class RequestAttrsMapper
* This is stored in LDAP as:
* extData-key;key2 => value2
* extData-key;key3 => value3
- *
+ *
* These can be mixed, but each top-level key can only be associated with
* a String value or a Hashtable value.
- *
+ *
*/
class ExtAttrDynMapper implements IDBDynAttrMapper {
@@ -644,10 +644,10 @@ class ExtAttrDynMapper implements IDBDynAttrMapper {
* Decodes extdata encoded keys.
* -- followed by a 4 digit hexadecimal string is decoded to the character
* representing the hex string.
- *
+ *
* The routine is written to be highly efficient. It only allocates
* the StringBuffer if needed and copies the pieces in large chunks.
- *
+ *
* @param key The key to decode
* @return The decoded key.
*/
@@ -693,7 +693,7 @@ class ExtAttrDynMapper implements IDBDynAttrMapper {
/**
* Encoded extdata keys for storage in LDAP.
- *
+ *
* The rules for encoding are trickier than decoding. We want to allow
* '-' by itself to be stored in the database (for the common case of keys
* like 'Foo-Bar'. Therefore we are using '--' as the encoding character.
@@ -706,11 +706,11 @@ class ExtAttrDynMapper implements IDBDynAttrMapper {
* 4) If [-] is preceded or followed by [^a-zA-Z0-9] then
* the - as well as all following [^a-zA-Z0-9] characters are encoded
* as --XXXX.
- *
+ *
* This routine tries to be as efficient as possible with StringBuffer and
* large copies. However, the encoding unfortunately requires several
* objects to be allocated.
- *
+ *
* @param key The key to encode
* @return The encoded key
*/
diff --git a/base/common/src/com/netscape/cmscore/request/RequestRepository.java b/base/common/src/com/netscape/cmscore/request/RequestRepository.java
index 0a4a4ebf9..ed18c7048 100644
--- a/base/common/src/com/netscape/cmscore/request/RequestRepository.java
+++ b/base/common/src/com/netscape/cmscore/request/RequestRepository.java
@@ -36,7 +36,7 @@ import com.netscape.cmscore.dbs.RepositoryRecord;
* TODO: what does this class provide beyond the Repository
* base class??
* <p>
- *
+ *
* @author thayes
* @version $Revision$ $Date$
*/
@@ -49,7 +49,7 @@ class RequestRepository
/**
* Create a request repository that uses the LDAP database
* <p>
- *
+ *
* @param name
* the name of the repository. This String is used to
* construct the DN for the repository's LDAP entry.
@@ -88,7 +88,7 @@ class RequestRepository
* value can be used by the request queue to create the
* name for the request records themselves.
* <p>
- *
+ *
* @return
* the LDAP base DN.
*/
diff --git a/base/common/src/com/netscape/cmscore/request/RequestSubsystem.java b/base/common/src/com/netscape/cmscore/request/RequestSubsystem.java
index 862ddaa68..69c0d0ce9 100644
--- a/base/common/src/com/netscape/cmscore/request/RequestSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/request/RequestSubsystem.java
@@ -39,7 +39,7 @@ import com.netscape.cmscore.dbs.DBSubsystem;
* TODO: review this It provides: + registration of LDAP/JAVA mapping classes with the DBSubsystem + creation of
* RequestQueue storage in the database + retrieval of existing RequestQueue objects from the database
* <p>
- *
+ *
* @author thayes
* @version $Revision$, $Date$
*/
@@ -91,7 +91,7 @@ public class RequestSubsystem
RequestQueue rq = new RequestQueue(name, increment, p, s, n, pendingNotifier);
// can't do this here because the service depends on getting rq
- // (to get request) and since this method hasn't returned it's rq is null.
+ // (to get request) and since this method hasn't returned it's rq is null.
//rq.recover();
return rq;
@@ -105,7 +105,7 @@ public class RequestSubsystem
/**
* Implements ISubsystem.getId
* <p>
- *
+ *
* @see ISubsystem#getId
*/
public String getId() {
@@ -127,7 +127,7 @@ public class RequestSubsystem
/**
* Implements ISubsystem.startup
* <p>
- *
+ *
* @see ISubsystem#startup
*/
public void startup()
diff --git a/base/common/src/com/netscape/cmscore/security/CASigningCert.java b/base/common/src/com/netscape/cmscore/security/CASigningCert.java
index bba12561f..335bd9f37 100644
--- a/base/common/src/com/netscape/cmscore/security/CASigningCert.java
+++ b/base/common/src/com/netscape/cmscore/security/CASigningCert.java
@@ -35,7 +35,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* CA signing certificate.
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/security/CertificateInfo.java b/base/common/src/com/netscape/cmscore/security/CertificateInfo.java
index fc7fb9087..914803223 100644
--- a/base/common/src/com/netscape/cmscore/security/CertificateInfo.java
+++ b/base/common/src/com/netscape/cmscore/security/CertificateInfo.java
@@ -62,7 +62,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* This base class provides methods to import CA signing cert or get certificate
* request.
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
@@ -103,7 +103,7 @@ public abstract class CertificateInfo {
String period = (String)mProperties.get(Constants.PR_VALIDITY_PERIOD);
Date notBeforeDate = CMS.getCurrentDate();
Date notAfterDate = new Date(notBeforeDate.getYear(),
- notBeforeDate.getMonth(),
+ notBeforeDate.getMonth(),
notBeforeDate.getDate()+Integer.parseInt(period));
return new CertificateValidity(notBeforeDate, notAfterDate);
*/
diff --git a/base/common/src/com/netscape/cmscore/security/KRATransportCert.java b/base/common/src/com/netscape/cmscore/security/KRATransportCert.java
index 79988e7d6..7f6632e09 100644
--- a/base/common/src/com/netscape/cmscore/security/KRATransportCert.java
+++ b/base/common/src/com/netscape/cmscore/security/KRATransportCert.java
@@ -30,7 +30,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* KRA transport certificate
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
@@ -86,7 +86,7 @@ public class KRATransportCert extends CertificateInfo {
return sAlg;
}
String alg = (String)mProperties.get(Constants.PR_KEY_TYPE);
-
+
if (alg.equals("RSA"))
return SignatureAlgorithm.RSASignatureWithMD5Digest;
else
diff --git a/base/common/src/com/netscape/cmscore/security/OCSPSigningCert.java b/base/common/src/com/netscape/cmscore/security/OCSPSigningCert.java
index 762db5e90..16ca08b80 100644
--- a/base/common/src/com/netscape/cmscore/security/OCSPSigningCert.java
+++ b/base/common/src/com/netscape/cmscore/security/OCSPSigningCert.java
@@ -35,7 +35,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* OCSP signing certificate.
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/security/PWCBsdr.java b/base/common/src/com/netscape/cmscore/security/PWCBsdr.java
index 32a0e90ed..4017a7869 100644
--- a/base/common/src/com/netscape/cmscore/security/PWCBsdr.java
+++ b/base/common/src/com/netscape/cmscore/security/PWCBsdr.java
@@ -29,7 +29,7 @@ import com.netscape.certsrv.apps.CMS;
import com.netscape.certsrv.logging.ILogger;
import com.netscape.cmscore.base.JDialogPasswordCallback;
-/*
+/*
* A class to retrieve passwords from the SDR password cache
*
* @author Christina Fu
@@ -91,7 +91,7 @@ public class PWCBsdr implements PasswordCallback {
// + mprompt );
}
- /* We are now assuming that PasswordCallbackInfo.getname() returns
+ /* We are now assuming that PasswordCallbackInfo.getname() returns
* the tag we are hoping to match in the cache.
*/
@@ -167,7 +167,7 @@ public class PWCBsdr implements PasswordCallback {
/* The password cache has failed to return a password (or a usable password.
* Now we will try and get the password from the user and hopefully add
- * the password to the cache pw cache
+ * the password to the cache pw cache
*/
public Password getPasswordAgain(PasswordCallbackInfo info)
throws PasswordCallback.GiveUpException {
diff --git a/base/common/src/com/netscape/cmscore/security/PWsdrCache.java b/base/common/src/com/netscape/cmscore/security/PWsdrCache.java
index 6c834d0e0..ef9b4b823 100644
--- a/base/common/src/com/netscape/cmscore/security/PWsdrCache.java
+++ b/base/common/src/com/netscape/cmscore/security/PWsdrCache.java
@@ -44,7 +44,7 @@ import com.netscape.certsrv.base.EBaseException;
import com.netscape.certsrv.logging.ILogger;
import com.netscape.cmsutil.util.Utils;
-/*
+/*
* A class for managing passwords in the SDR password cache
*
* @author Christina Fu
diff --git a/base/common/src/com/netscape/cmscore/security/RASigningCert.java b/base/common/src/com/netscape/cmscore/security/RASigningCert.java
index 581fc8866..ac47055b6 100644
--- a/base/common/src/com/netscape/cmscore/security/RASigningCert.java
+++ b/base/common/src/com/netscape/cmscore/security/RASigningCert.java
@@ -30,7 +30,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* RA signing certificate
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
@@ -92,7 +92,7 @@ public class RASigningCert extends CertificateInfo {
return sAlg;
}
String alg = (String)mProperties.get(Constants.PR_KEY_TYPE);
-
+
if (alg.equals("RSA"))
return SignatureAlgorithm.RSASignatureWithMD5Digest;
else
diff --git a/base/common/src/com/netscape/cmscore/security/SSLCert.java b/base/common/src/com/netscape/cmscore/security/SSLCert.java
index b54f24dc7..b4fea7f89 100644
--- a/base/common/src/com/netscape/cmscore/security/SSLCert.java
+++ b/base/common/src/com/netscape/cmscore/security/SSLCert.java
@@ -30,7 +30,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* SSL server certificate
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
@@ -101,7 +101,7 @@ public class SSLCert extends CertificateInfo {
return sAlg;
}
String alg = (String)mProperties.get(Constants.PR_KEY_TYPE);
-
+
if (alg.equals("RSA"))
return SignatureAlgorithm.RSASignatureWithMD5Digest;
else
diff --git a/base/common/src/com/netscape/cmscore/security/SSLSelfSignedCert.java b/base/common/src/com/netscape/cmscore/security/SSLSelfSignedCert.java
index 1d70e7a1d..8d8e7dfcc 100644
--- a/base/common/src/com/netscape/cmscore/security/SSLSelfSignedCert.java
+++ b/base/common/src/com/netscape/cmscore/security/SSLSelfSignedCert.java
@@ -30,7 +30,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* SSL server certificate
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
@@ -93,7 +93,7 @@ public class SSLSelfSignedCert extends CertificateInfo {
return sAlg;
}
String alg = (String)mProperties.get(Constants.PR_KEY_TYPE);
-
+
if (alg.equals("RSA"))
return SignatureAlgorithm.RSASignatureWithMD5Digest;
else
diff --git a/base/common/src/com/netscape/cmscore/security/SubsystemCert.java b/base/common/src/com/netscape/cmscore/security/SubsystemCert.java
index aede5e4d9..d0ce74490 100644
--- a/base/common/src/com/netscape/cmscore/security/SubsystemCert.java
+++ b/base/common/src/com/netscape/cmscore/security/SubsystemCert.java
@@ -30,7 +30,7 @@ import com.netscape.certsrv.security.KeyCertData;
/**
* Subsystem certificate.
- *
+ *
* @author Christine Ho
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/selftests/SelfTestOrderedInstance.java b/base/common/src/com/netscape/cmscore/selftests/SelfTestOrderedInstance.java
index 2146b290d..62bf09063 100644
--- a/base/common/src/com/netscape/cmscore/selftests/SelfTestOrderedInstance.java
+++ b/base/common/src/com/netscape/cmscore/selftests/SelfTestOrderedInstance.java
@@ -34,7 +34,7 @@ import java.util.StringTokenizer;
* This class implements a single element in
* an ordered list of self test instances.
* <P>
- *
+ *
* @author mharmsen
* @author thomask
* @version $Revision$, $Date$
@@ -63,7 +63,7 @@ public class SelfTestOrderedInstance {
* A "listElement" contains a string of the form "[instanceName]" or
* "[instanceName]:critical".
* <P>
- *
+ *
* @param listElement a string containing the "instanceName" and
* information indictating whether or not the instance is "critical"
*/
@@ -106,7 +106,7 @@ public class SelfTestOrderedInstance {
/**
* Returns the name associated with this self test; may be null.
* <P>
- *
+ *
* @return instanceName of this self test
*/
public String getSelfTestName() {
@@ -116,7 +116,7 @@ public class SelfTestOrderedInstance {
/**
* Returns the criticality associated with this self test.
* <P>
- *
+ *
* @return true if failure of this self test is fatal when
* it is executed; otherwise return false
*/
@@ -127,7 +127,7 @@ public class SelfTestOrderedInstance {
/**
* Sets/resets the criticality associated with this self test.
* <P>
- *
+ *
* @param criticalMode the criticality of this self test
*/
public void setSelfTestCriticalMode(boolean criticalMode) {
diff --git a/base/common/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java b/base/common/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
index 6fac3d9d7..5d56e7a85 100644
--- a/base/common/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/selftests/SelfTestSubsystem.java
@@ -55,7 +55,7 @@ import com.netscape.certsrv.selftests.ISelfTestSubsystem;
/**
* This class implements a container for self tests.
* <P>
- *
+ *
* @author mharmsen
* @author thomask
* @version $Revision$, $Date$
@@ -108,10 +108,10 @@ public class SelfTestSubsystem
/**
* Signed Audit Log
- *
+ *
* This helper method is called to store messages to the signed audit log.
* <P>
- *
+ *
* @param msg signed audit log message
*/
private void audit(String msg) {
@@ -134,7 +134,7 @@ public class SelfTestSubsystem
* substore name prepended in front of the plugin/parameter name). This
* method may return null.
* <P>
- *
+ *
* @param instancePrefix full name of configuration store
* @param instanceName instance name of self test
* @return fullname of this self test plugin
@@ -171,7 +171,7 @@ public class SelfTestSubsystem
* This helper method checks to see if an instance name/value
* pair exists for the corresponding ordered list element.
* <P>
- *
+ *
* @param element owner of this subsystem
* @param instanceName instance name of self test
* @exception EMissingSelfTestException subsystem has missing name/value
@@ -250,7 +250,7 @@ public class SelfTestSubsystem
* List the instance names of all the self tests enabled to run on demand
* (in execution order); may return null.
* <P>
- *
+ *
* @return list of self test instance names run on demand
*/
public String[] listSelfTestsEnabledOnDemand() {
@@ -287,7 +287,7 @@ public class SelfTestSubsystem
/**
* Enable the specified self test to be executed on demand.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @param isCritical isCritical is either a critical failure (true) or
* a non-critical failure (false)
@@ -349,7 +349,7 @@ public class SelfTestSubsystem
/**
* Disable the specified self test from being able to be executed on demand.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @exception EMissingSelfTestException subsystem has missing name
*/
@@ -397,7 +397,7 @@ public class SelfTestSubsystem
/**
* Determine if the specified self test is enabled to be executed on demand.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @return true if the specified self test is enabled on demand
* @exception EMissingSelfTestException subsystem has missing name
@@ -436,7 +436,7 @@ public class SelfTestSubsystem
* Determine if failure of the specified self test is fatal when
* it is executed on demand.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @return true if failure of the specified self test is fatal when
* it is executed on demand
@@ -489,7 +489,7 @@ public class SelfTestSubsystem
/**
* Execute all self tests specified to be run on demand.
* <P>
- *
+ *
* @exception EMissingSelfTestException subsystem has missing name
* @exception ESelfTestException self test exception
*/
@@ -575,7 +575,7 @@ public class SelfTestSubsystem
* List the instance names of all the self tests enabled to run
* at server startup (in execution order); may return null.
* <P>
- *
+ *
* @return list of self test instance names run at server startup
*/
public String[] listSelfTestsEnabledAtStartup() {
@@ -612,7 +612,7 @@ public class SelfTestSubsystem
/**
* Enable the specified self test at server startup.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @param isCritical isCritical is either a critical failure (true) or
* a non-critical failure (false)
@@ -674,7 +674,7 @@ public class SelfTestSubsystem
/**
* Disable the specified self test at server startup.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @exception EMissingSelfTestException subsystem has missing name
*/
@@ -723,7 +723,7 @@ public class SelfTestSubsystem
* Determine if the specified self test is executed automatically
* at server startup.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @return true if the specified self test is executed at server startup
* @exception EMissingSelfTestException subsystem has missing name
@@ -762,7 +762,7 @@ public class SelfTestSubsystem
* Determine if failure of the specified self test is fatal to
* server startup.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @return true if failure of the specified self test is fatal to
* server startup
@@ -815,11 +815,11 @@ public class SelfTestSubsystem
/**
* Execute all self tests specified to be run at server startup.
* <P>
- *
+ *
* <ul>
* <li>signed.audit LOGGING_SIGNED_AUDIT_SELFTESTS_EXECUTION used when self tests are run at server startup
* </ul>
- *
+ *
* @exception EMissingSelfTestException subsystem has missing name
* @exception ESelfTestException self test exception
*/
@@ -957,7 +957,7 @@ public class SelfTestSubsystem
* Retrieve an individual self test from the instances list
* given its instance name. This method may return null.
* <P>
- *
+ *
* @param instanceName instance name of self test
* @return individual self test
*/
@@ -992,7 +992,7 @@ public class SelfTestSubsystem
* Returns the ILogEventListener of this subsystem.
* This method may return null.
* <P>
- *
+ *
* @return ILogEventListener of this subsystem
*/
public ILogEventListener getSelfTestLogger() {
@@ -1002,7 +1002,7 @@ public class SelfTestSubsystem
/**
* This method represents the log interface for the self test subsystem.
* <P>
- *
+ *
* @param logger log event listener
* @param msg self test log message
*/
@@ -1041,7 +1041,7 @@ public class SelfTestSubsystem
* on the "on demand" list (note that the specified self test
* will be appended to the end of each list).
* <P>
- *
+ *
* @param instanceName instance name of self test
* @param isCritical isCritical is either a critical failure (true) or
* a non-critical failure (false)
@@ -1094,7 +1094,7 @@ public class SelfTestSubsystem
* on the "on demand" list (note that the specified self test
* will be removed from each list).
* <P>
- *
+ *
* @param instanceName instance name of self test
* @exception EMissingSelfTestException subsystem has missing name
*/
@@ -1141,7 +1141,7 @@ public class SelfTestSubsystem
* on the "startup" list (note that the specified self test
* will be appended to the end of each list).
* <P>
- *
+ *
* @param instanceName instance name of self test
* @param isCritical isCritical is either a critical failure (true) or
* a non-critical failure (false)
@@ -1194,7 +1194,7 @@ public class SelfTestSubsystem
* on the "startup" list (note that the specified self test
* will be removed from each list).
* <P>
- *
+ *
* @param instanceName instance name of self test
* @exception EMissingSelfTestException subsystem has missing name
*/
@@ -1244,7 +1244,7 @@ public class SelfTestSubsystem
* This method retrieves the name of this subsystem. This method
* may return null.
* <P>
- *
+ *
* @return identification of this subsystem
*/
public String getId() {
@@ -1254,7 +1254,7 @@ public class SelfTestSubsystem
/**
* This method sets information specific to this subsystem.
* <P>
- *
+ *
* @param id identification of this subsystem
* @exception EBaseException base CMS exception
*/
@@ -1278,7 +1278,7 @@ public class SelfTestSubsystem
/**
* This method initializes this subsystem.
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration store
* @exception EBaseException base CMS exception
@@ -1825,7 +1825,7 @@ public class SelfTestSubsystem
/**
* Notifies this subsystem if owner is in running mode.
* <P>
- *
+ *
* @exception EBaseException base CMS exception
*/
public void startup()
@@ -1891,7 +1891,7 @@ public class SelfTestSubsystem
* Returns the root configuration storage of this subsystem.
* This method may return null.
* <P>
- *
+ *
* @return configuration store of this subsystem
*/
public IConfigStore getConfigStore() {
diff --git a/base/common/src/com/netscape/cmscore/usrgrp/CertDNCertUserLocator.java b/base/common/src/com/netscape/cmscore/usrgrp/CertDNCertUserLocator.java
index 8f4cd8841..673146695 100644
--- a/base/common/src/com/netscape/cmscore/usrgrp/CertDNCertUserLocator.java
+++ b/base/common/src/com/netscape/cmscore/usrgrp/CertDNCertUserLocator.java
@@ -34,7 +34,7 @@ import com.netscape.certsrv.usrgrp.IUser;
* the incoming certificate(s) with the certificate(s)
* in the scope. It matches the "certdn" field which contains
* the subject dn of the certificate
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/usrgrp/ExactMatchCertUserLocator.java b/base/common/src/com/netscape/cmscore/usrgrp/ExactMatchCertUserLocator.java
index 871a38435..d9a39afb8 100644
--- a/base/common/src/com/netscape/cmscore/usrgrp/ExactMatchCertUserLocator.java
+++ b/base/common/src/com/netscape/cmscore/usrgrp/ExactMatchCertUserLocator.java
@@ -34,7 +34,7 @@ import com.netscape.certsrv.usrgrp.IUser;
* the incoming certificate(s) with the certificate(s)
* in the scope. It matches the "description" field which contains a
* stringied certificate.
- *
+ *
* @author thomask
* @author cfu
* @version $Revision$, $Date$
diff --git a/base/common/src/com/netscape/cmscore/usrgrp/Group.java b/base/common/src/com/netscape/cmscore/usrgrp/Group.java
index eee2afb43..336e7b029 100644
--- a/base/common/src/com/netscape/cmscore/usrgrp/Group.java
+++ b/base/common/src/com/netscape/cmscore/usrgrp/Group.java
@@ -27,7 +27,7 @@ import com.netscape.certsrv.usrgrp.IUsrGrp;
/**
* A class represents a group.
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java b/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
index a4c4d6854..cd46bcae3 100644
--- a/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/usrgrp/UGSubsystem.java
@@ -56,7 +56,7 @@ import com.netscape.cmscore.util.Debug;
* This class defines low-level LDAP usr/grp management
* usr/grp information is located remotely on another
* LDAP server.
- *
+ *
* @author thomask
* @author cfu
* @version $Revision$, $Date$
@@ -417,7 +417,7 @@ public final class UGSubsystem implements IUGSubsystem {
/**
* builds a User instance. Sets only uid for user entry retrieved
* from LDAP server. for listing efficiency only.
- *
+ *
* @return the User entity.
*/
protected IUser lbuildUser(LDAPEntry entry) throws EUsrGrpException {
@@ -474,7 +474,7 @@ public final class UGSubsystem implements IUGSubsystem {
/**
* builds a User instance. Set all attributes retrieved from
* LDAP server and set them on User.
- *
+ *
* @return the User entity.
*/
protected IUser buildUser(LDAPEntry entry) throws EUsrGrpException {
@@ -1071,7 +1071,7 @@ public final class UGSubsystem implements IUGSubsystem {
* attrCertStr.addValue(getCertificateString(certs[i]));
* }
* attrs.add(attrCertStr);
- *
+ *
* if (user.getCertOp() == OpDef.ADD) {
* attrs.add(LDAPModification.ADD, attrCertBin);
* } else if (user.getCertOp() == OpDef.DELETE) {
@@ -1407,7 +1407,7 @@ public final class UGSubsystem implements IUGSubsystem {
}
Debug.trace("authorization exception: " + errMsg);
// too chatty in system log
- // log(ILogger.LL_FAILURE, errMsg);
+ // log(ILogger.LL_FAILURE, errMsg);
} catch (ELdapException e) {
String errMsg =
"isMemberOfLdapGroup: Could not get connection to internaldb. Error " + e;
diff --git a/base/common/src/com/netscape/cmscore/usrgrp/User.java b/base/common/src/com/netscape/cmscore/usrgrp/User.java
index 89ea3e589..77f9bade4 100644
--- a/base/common/src/com/netscape/cmscore/usrgrp/User.java
+++ b/base/common/src/com/netscape/cmscore/usrgrp/User.java
@@ -28,7 +28,7 @@ import com.netscape.certsrv.usrgrp.IUsrGrp;
/**
* A class represents a user.
- *
+ *
* @author cfu
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/util/Debug.java b/base/common/src/com/netscape/cmscore/util/Debug.java
index 8c41d5bb5..bd10a493c 100644
--- a/base/common/src/com/netscape/cmscore/util/Debug.java
+++ b/base/common/src/com/netscape/cmscore/util/Debug.java
@@ -62,7 +62,7 @@ public class Debug
// if (Debug.ON) {
// System.out.println("..");
// }
- // I want to make sure that any Debug.trace() is not logged to
+ // I want to make sure that any Debug.trace() is not logged to
// System.out if the server is running under watchdog
private static boolean TRACE_ON = false;
@@ -89,13 +89,13 @@ public class Debug
* if the argument to Debug.trace() is an object whose toString() is
* expensive, that this toString() will still be called in any case.
* In such a case, it is wise to wrap the Debug.trace like this:
- *
+ *
* <pre>
* if (Debug.on()) {
* Debug.trace(&quot;obj is: &quot; + obj);
* }
* </pre>
- *
+ *
* @param level the message level. If this is >= than the currently set
* level (set with setLevel() ), the message is printed
* @param t the message to print
@@ -259,13 +259,13 @@ public class Debug
/**
* Set the current debugging level. You can use:
- *
+ *
* <pre>
* OBNOXIOUS = 10
* VERBOSE = 5
* INFORM = 1
* </pre>
- *
+ *
* Or another value
*/
@@ -307,7 +307,7 @@ public class Debug
/**
* Debug subsystem initialization. This subsystem is usually
* given the following parameters:
- *
+ *
* <pre>
* debug.enabled : (true|false) default false
* debug.filename : can be a pathname, or STDOUT
@@ -362,7 +362,7 @@ public class Debug
setLevel(level);
} catch (Exception e) {
// Don't do anything. Logging is not set up yet, and
- // we can't write to STDOUT.
+ // we can't write to STDOUT.
}
}
diff --git a/base/common/src/com/netscape/cmscore/util/FileDialogFilter.java b/base/common/src/com/netscape/cmscore/util/FileDialogFilter.java
index eb1d1097a..c62d7b8b5 100644
--- a/base/common/src/com/netscape/cmscore/util/FileDialogFilter.java
+++ b/base/common/src/com/netscape/cmscore/util/FileDialogFilter.java
@@ -28,7 +28,7 @@ import java.io.FilenameFilter;
* <P>
* Copied verbatium from sun.awt.tiny.TinyFileDialogPeer. Used by RollingLogFile expiration code
* <P>
- *
+ *
* @author mikep
* @version $Revision$, $Date$
*/
diff --git a/base/common/src/com/netscape/cmscore/util/StatsSubsystem.java b/base/common/src/com/netscape/cmscore/util/StatsSubsystem.java
index 222964261..c4d870e39 100644
--- a/base/common/src/com/netscape/cmscore/util/StatsSubsystem.java
+++ b/base/common/src/com/netscape/cmscore/util/StatsSubsystem.java
@@ -33,7 +33,7 @@ import com.netscape.certsrv.util.StatsEvent;
* can be loaded into cert server kernel to perform
* statistics collection.
* <P>
- *
+ *
* @author thomask
* @version $Revision$, $Date$
*/
@@ -72,7 +72,7 @@ public class StatsSubsystem implements IStatsSubsystem {
* Note that individual subsystem should be initialized in a separated thread if it has dependency on the
* initialization of other subsystems.
* <P>
- *
+ *
* @param owner owner of this subsystem
* @param config configuration store
*/
diff --git a/base/common/src/com/netscape/cmscore/util/UtilMessage.java b/base/common/src/com/netscape/cmscore/util/UtilMessage.java
index 8002cfe1f..ce2132dc4 100644
--- a/base/common/src/com/netscape/cmscore/util/UtilMessage.java
+++ b/base/common/src/com/netscape/cmscore/util/UtilMessage.java
@@ -24,7 +24,7 @@ import com.netscape.certsrv.base.MessageFormatter;
/**
* This object is used to easily create I18N messages for utility
* classes and standalone programs.
- *
+ *
* @author mikep
* @version $Revision$, $Date$
* @see com.netscape.certsrv.base.MessageFormatter
@@ -44,7 +44,7 @@ public class UtilMessage {
/**
* Constructs a message event
* <P>
- *
+ *
* @param msgFormat the message string
*/
public UtilMessage(String msgFormat) {
@@ -54,12 +54,12 @@ public class UtilMessage {
/**
* Constructs a message with a parameter. For example,
- *
+ *
* <PRE>
* new UtilMessage(&quot;failed to load {0}&quot;, fileName);
* </PRE>
* <P>
- *
+ *
* @param msgFormat details in message string format
* @param param message string parameter
*/
@@ -73,7 +73,7 @@ public class UtilMessage {
* Constructs a message from an exception. It can be used to carry
* a system exception that may contain information about
* the context. For example,
- *
+ *
* <PRE>
* try {
* ...
@@ -82,7 +82,7 @@ public class UtilMessage {
* }
* </PRE>
* <P>
- *
+ *
* @param msgFormat exception details in message string format
* @param exception system exception
*/
@@ -95,7 +95,7 @@ public class UtilMessage {
/**
* Constructs a message from a base exception. This will use the msgFormat
* from the exception itself.
- *
+ *
* <PRE>
* try {
* ...
@@ -104,7 +104,7 @@ public class UtilMessage {
* }
* </PRE>
* <P>
- *
+ *
* @param exception CMS exception
*/
public UtilMessage(Exception e) {
@@ -117,7 +117,7 @@ public class UtilMessage {
* Constructs a message event with a list of parameters
* that will be substituted into the message format.
* <P>
- *
+ *
* @param msgFormat message string format
* @param params list of message format parameters
*/
@@ -129,7 +129,7 @@ public class UtilMessage {
/**
* Returns the current message format string.
* <P>
- *
+ *
* @return details message
*/
public String getMessage() {
@@ -139,7 +139,7 @@ public class UtilMessage {
/**
* Returns a list of parameters.
* <P>
- *
+ *
* @return list of message format parameters
*/
public Object[] getParameters() {
@@ -150,7 +150,7 @@ public class UtilMessage {
* Returns localized message string. This method should
* only be called if a localized string is necessary.
* <P>
- *
+ *
* @return details message
*/
public String toString() {
@@ -160,7 +160,7 @@ public class UtilMessage {
/**
* Returns the string based on the given locale.
* <P>
- *
+ *
* @param locale locale
* @return details message
*/
diff --git a/base/common/src/com/netscape/cmscore/util/UtilResources.java b/base/common/src/com/netscape/cmscore/util/UtilResources.java
index 6955dda50..9ea7648f5 100644
--- a/base/common/src/com/netscape/cmscore/util/UtilResources.java
+++ b/base/common/src/com/netscape/cmscore/util/UtilResources.java
@@ -22,7 +22,7 @@ import java.util.ListResourceBundle;
/**
* A class represents a resource bundle for miscellanous utilities
* <P>
- *
+ *
* @author mikep
* @version $Revision$, $Date$
* @see java.util.ListResourceBundle
˫h J- E]܉Mīc:7!Hn|*^RX(&ΰl N ,0|I ż[{IύL5jhmfyu: ~P,6jԌQc=տ ѵR rF}&:\@%dbG>pE%(D{LTNQcv=|6z_K3nJ84.2v~nZ5i]0j!1ӀCA۰㩭t$_,j _FlЧwx_Mr~{r|@^S?w~7[%+ p+Vܸ]o01Tp@h4R3f5穧IC` WNApa%7}p\ٙ»R&Sv?"Ygh~lq&>FgLzH/( Nuf";h[QBеX!.u2Ke8>N$8,?(p'vv,F{zQNqcly8NHJ0p1O|@qp [N2zSkV]| EvJA~`u@bV Zق2dfH( ;|j~*שH`WIW{xG6H=,>o(5_p*(ݒ4<.V{^ŠhIWnk'8&5cit_mon燭(L=o µZ ei$jʹ̬KLԦgj*sא&1L/[*R!L !"Ͽ776Ϧf{##/$Fj36$KsftgLcV{3%D9o&92;wvlASu-~©omf؎pDP cD,&A? gN/rT-vM΅WndC|DO]ܕڨ]7t5o|:A+.H +CPV^<[0l-|i갞$J@w;v݉V L}~u  yg!OYF{|in)t kҀl.εʙ#?*s8H=#\U3 ۍA`e> .ژko.%!̨0}W!V@0$ljG̈́{-29YUJ}YjKA+nyߎQSD15;JKU!Pz1M?r!`$k»n xi'eeHHK&޾pİ =kwncmu՟iK=f peqKL r1SHlk 1mJЃʚBC%~t^\-^im,K8G~QF+ q^dj&6aՙTw(u[|KͱVD٣*OPXYDH}+9_KV_- EacsgX&Xf2vEF~PPU+GݣE|D jU4=Xz֟`oհz'_]+:9UPtvl';bx+twjOa/,"\e9ξz{GWE=(ߘԫl,A#h|.@E!FG1 e }} JilPWv3BjI֢PIY Qo;&$lYú5(0gh{tP`&WlS }Yq|9elrK.)Q921{!h~p)!x\b#9ɥAzM?B٥+t4oZlPMu7ʫgRԠ\UįB2 ;cJ^罡oWxㆸ`| " x&@A\ӾUNtw3x'6sX5/INr2M`1/KoKy 䉑;C>uk`hwsS# fXCv6,}3Z}bOOlGHH0UFq_7N=3`V<U  -steZDř\)334lxbuj EVў5!-)< њk@{Dog!dN*+ɒM Kiq:W֬gV3QLTf\5FUhEn9$Ό7 U ew_@ׯM\<ߝ?Q=e 6,.Ȝ>S@ BVnJ+|9!ismrBo|x%h5;kAMU^„]!4D.<<\u`}x(j&FgQ8s&4 |sA/d8!-")>A7:GV[qYM8/$wtfL9!pg+ >P՗N-H:DZ!B*dtpF.xoڋ BQ>XwNbh&.T }ԋ-34n9p6Ae$)~DZe+8vWH.ynTV^sZ5DDgbU(E w1,ue:X9'B+R>:GߧtKteD1jJevqfr BE+J"<\WkH^P f*|8Kw̫xӠFATݥ'Mj5R |fыËqSi((:wm??%QsSfX\h(Gb&t9X6>Kk$Vt=zNRA7D͕ hGoT(IªMF\i)SAIÍI,w|>+'S>^hn]̛,3+jàlE AadQ6{!bϬ{:m/83̙bŵ D|p]g{ GO]6O @C9:#q#i,8oj/i c\'[cVߊ9SaQ=:%lU֙lDW.%9rA9^DqTg}cVa4eS>Y Ǫ-#'&#j}4(wxY|t OsȞIlq SrKx V.-b)1 l 7 ~'HYqY؛. ޒΐ'u姂,հK=K} i—(߶wq@Nms+ n-c,jx5Ma/ r,Ǩ%#By,tF[wȪ3D>b0,>ȬUc.ձw[1a%®2YH;9gKZT0f-$-E7M[XkB7Cs.p4L>zw --saO8F;?~oRuB@!!a0 ԣVE$O9CGilH3ɠJEmy0+S، .R'qM/zo=3ȖP+J ls\od| G"&@VÿO"һ$wn3P2qƸ_/pݏiQµ fQ_( c\5ljYxoQS)2N>[^#XvRYݼDҼV 9⃌,E(ފ-;Q#jtRs@69/^0rG2,!ۡz咞P9 Ln+v'B$ dSK)xgMd\ %YͶ1M`IVg+X" +lP+6ipK5mÐk5WDd|E-ɓh~pO\vW$=upLN ۙaQi 6&k9FSAƅp Ʃ￧(P 7+ Y'_M*Ӥe I/0:Tt4|T6ѻ Y*g`E]_mtU<>an5q?˼)bAwٲ!I ^&KnlB?tV"{ˬXe,X|;(UN,v(y:h2X10> n{}W뾋@O/yzeHv ˺O9Qh)v,{GX\mC4t ; n6j !tG=ŶWƫ?;{lxu1G}ąƳןB,bWmFۧ<]S+ <=Z<̘ uo2V0XdyiFxG]t/LMi56dg+)4dl#Y*~^B_bLuee|z*D(Y3҆ :0N w+_IlF3!\85tmęu)OaUIC[]2S-b/0fI[[ |=Z|B#(Ň>y}R"Z8A\-yG)5;YB4Tp_~~ ~-B~/cM2tE߫晫3y5}uc"*)Rɰ^@Hs!NFc!"ooVl拢]P2L~5pjV= xT]q8m߂ ƟФ )yǵu5J ie>Ҫ:] e,vLw CˆxxjNSOɑh I,>!eGᮑoEo*a)L:]H ;RBtq'PK 8Jۻel oՋuxwٰy&o&ݸV p?:)Ky{NlO{il&{q2g\+]=썚b$F `DUCd '/uWno4C@㍛[Wƀ\i{~-O|OUJ w,FH4Ho\ן'b.Kq,{)&F{I ΄ hmZd'}˽E:4p㿆@PnӳD Q"9TFR 6F? єn7FJ|U|pl~‘,tpD *کup-vӊHOg3yq\Vr^0j0sջ p֢:+Tп~4p trcY+!4`.Y{_ 1 t\UwŧsM~l/8Hi1aojwb!UJzsOPǜ(tVNK HJA,d1N.7~ lmٶ_q6C:_Kxdhi~*ʈS=r2=Iv(ŷi:n4ls_diYzF/==LݾHMA7,[)VotT  $hd;cBjcI$frGˬ=fOx+h29Az!zu:Zxye qQ!ʚQvow+9stn( V]isϻ,>~c# D &޼D]6l[.L 6pexfVqܞlfh2RDmkfWTKUFM>%Z.p 7u)XBH@Ϲ]^󉌴^)jGr2'JHBH4jPE; 8YrZ6RPҸhQjcUf@q+׺;("(T/ĢU,"${B"݋^vno/JbyAlCHq7dч߿!B1vSjiV0h%oī}qTvC+(/[nz`pΈIHd>tU$uB<4'S]3/˶dR_*7z}'uMˊDkU4#;ebA" "(F d +;9{\NQgq >bNb2JBCE\-> bΥ1Ծ yc@}0L{!כ*q0&: !:RUϋ7(jx.娹$]W;̯bt-gAZ%%ނe&F 펩2FM 0= l4zN6@J 1>#Ku>uŴ4 C\kE%fp5FYH,J͵$~5gNޔ7Dĸ<[-l7ea9gG|I#g6}_Xq),=`R2HcÁ\/jAQ&~>pMq+|14p0\O!ɀ[J A- -ؿ-]caަimRP7|nc^CŶe$.`yі޳ 3l'68Q/hiG+=E G[&%*`=!e{WD 瞙|"6>ϪhpC2.}j".Y}L60lgӧ q=M ^N4ģ;n Mj_] eO 9B+4[uT" m&L'E+$1%uA=c w׵9q _ $Rj棿-+?( d8h gRT&i+B{2ǚ |ObοN ydܽ JNg-kpL\ci}e]s5\%\Mmxh8ٟPjo'0l̦] u7j|jE⦐B|a!jm+RXxT@d/jWTb;[jax9v1Ӡ@`ħRb<+G 6 U'X:ĎqA#Vczu]62mD&czq=.aBgyYF'sYG@E96=M_m }A<.QuzfcяP#}q\?8{lw>穀ȥT:(~OS4Hn[q^,J->NS^Sm lLo.FvnyqX@RdA2`1GSd\l\SݏL[-_z8L΂FIS@>]~iI$ޜ?{b'0=<n5bc:l*d4YHg%F;W"M=~dQf4+Bל7\err. tP٬WŖeq-L۬ď#-{7%]B^[ֿ6i":zܵQ @gxY0փ.yhOG!bq|ͳH +([OJND$p(*#}92n<7wuu^jԧSa[r}# ʑ:͹ RR>]Yp9n u&<ԋQڛCy7hbD|@V`9rgJQdev 9lKT4Kn@]D֜& @RS'Bp[cb;#tL ʞϯU qSèYq1Us8횻uZiy :]42-)rj^J|qLS RWqU0riEE(0b[!bTe9_e<]q<=chxn$P9fjLM1y}^ 5X8)N[w*଀pr/ܢTlO]-hbqFR=6NUxݒoY98$.TvOy=X_HpF]q\`x_oAk6]y/I0([ c+AZ]:rk]\ VA xJ瀬>6z*|?ԅE߼j;alFY^/v<)+Uc}'dB]natR[>K\P8T]Cru:WsmgY"vXɃ ) HSճ)4S@ḈWb>H OĦ-z|%I^u .ҪmGD:UӘǑv;1?V¿:1q{1 ֮k{nEh;?VD JA;yAR6ji*O#ڳh~y'j$qsKƹy3[.SB[vpUj P*O.'2TkZ6TޭE,ϖ}A݇}a0C{ %Np6ked]D5YAu١Y*·Hkؗdȱ\ ~PG86ZC/r7u:`(j}l* 4̦L;#x^1TJK 2-4ϮSH {Y^ R[) )[͉ªaM/D/m J]R~ ?*8(^ޠF)xPՓLo/c+^˺Sf @Q3E`Ѫ[%6M87])#)gVK/Te)qt{8a^Nw"5*PBJҟxȜn΢LQw܃D/ry FcojKNwh!߇2jHb nyy@slANM?K3̪A=l`⨨s##eLɆ{ -Mcȧ.<ߋst9U·Bi}b=fUC}b`sI{A09ʔ?{ᄬ*ǭ͋Tud3;ݰ{M%?Ӗq&J'vd34*r:9շoR4T_7ȴS)Yako 'U"'%NAen&NɡO96/"su<%Rc7މ^w$څS teM^xS'm&3<:-i{1ZNzj+^+gs! t6N`v< V'rV%i">|үQ;,WGt6<ӍNca;fwĵrև#Wrjc`x~P`=+X7?ZŋN蓀 Ge6RYi#us pCS e,@U W|2Eh)"{65Yt'%sW)Zk,xg M%0fD.}\Dк V²( n@LrvnoQ ,Yp'XD@14$=gSFo̮gݛv@h=t\qd M}W  rekyÌ[6wP>*|* m` ~{u;:˘KB X`CڒQ`(5=1kwA=\p}`㮸=Z7xH8 yK % -$S}Oإ<ɯ+,9N|J}aTsQVi>.՗T+ =4GԘ|fypX4?t[EH0>+$rw 7jUܙnbE[9tEق&?Ѽ;Mؚ\'"7s~%E$a1'VX,wmxVw沐 a8hirǙ}1RTQ/EΙL}*#3_S\y|+بC,Y|͡Y%kF}a|Cs7[ J6УHN n"~ō]("3IL;-%f>$"UE;`"Jt$/?S_>Ow _T.|}_t?:)hc" Dȸ[5v쑯%r4:Z!a~_B@p+Km:Cmm9ZEG{vD}49@/gٻ1_#/A"ě>EIQAap~+}t(F<7=[uS*C /Vu߻"F^69k#0`NGf0تV[YP S+l6b5ؽIYS7{MI}-kM[Df](PRpGuތX(ඡ-T|-F :qhW[ q}^vvV0'C@٭XdZ)Pq睸z(Q Nn[153,6=!ʞ-/ q(MEc!,SW>u״ {DTm|ܭqP'~Ĕ,ş~Pj :vv|!FRXhnҥ{1S5`!Cؐ]r^':l!)C pҹFp:'YS=8HNTIx@Onpaz,Ȑ UK뗛%ɯ$[瞼 A~z!Knx'IWY+Z k+<pV!E y=g>`b{<FguJ]_ZۘܮMGmg|ڷyO=\f5郩tL;oSd U@ko 8>9.*|J0s}Pm'=˕CT6(UP@ءuM9P>9'E`y !IjxJKlB]0.vtAL|R0-¹Su_<őh;3ҹy u513W{P-^`֝Zz3~ A<32 {_^5!ڤE42zAЩX&="Vv~+)%bΨA Ko^Aυ,S $cԆwiJ zi {6ACR`9TOmFi/؏o'JneNaW>GF{3sMW`儰;Q6w.:E_EtzeR1Sr›+}iŻea\ 'vs1j-$?pF.o6p 3[R)вԤ ֱWƆ8;hA~/ٗ"V.Ծ9.߲>A(c8XPŢ "v Z0a,uu`(>tnLbjr@8ʾul1s?er``V K,A]}XB5QfP`#gYa-pv胶7#܎8q _W)Ll7|@7 |'ή(QćRȉןye*.ǤjDd_$Պ۞O}Ϡ9 LqB0M:@<:i~Vt8]LB-1gL{SmH(h&I=>`/x⒏%!8?^pM]Ґ*yY xޫN`VW%ז+Ĩp_XA:;'%F MFؒ 54Yif-Hź/L^RU=Rt'"۴KD\kKH2DԧOF  (-Vxr}NgY6_[:gsqPu]0Sq1klz"7鴁S>7,A\yǗsK։fɶʆ&$xk -_êjt>P @\}&E!oV2 2TsygAϢE'h KiwENavOb{drId1vKkŵ}lup/,v@"ƂlB4t 3Df`(LWoƛ|J`\t> ùCBXՖ"%rLe,{v7OnsW YJ(^ְ@+ʤv,䃍?e:IE0jN pFƁJ_IyK$2b BwLZX~5o:rLs":3b#(QS)5ܴW›2>qfDV7!uK-Pl1֒HNap-ȅKPib[B X3ՁSR=]08F]*D!kAC6ɡ3Gp%b'cRձ>n0󃗴.[Cz.s)*ش2 5{F&% $DیzsZW@ߌl+QӸY5NT8`,¾aޯ$d X\Û?SXnaq^ 8Co4@R<^iɯHR@nW:# >O11f EHY]ѱ/ l<)~A'( oc~П3hETuۯ(("BCO?%^']d* yA#3?x 'Nŗ9T_,: E0熹&_:P(܌ kj'"wWYQk.D2e_ˌCߗ5Gx J`I *FPJUMYS2yWn5 (5xaLAn=חTsfJ#&9Q/3~%Rg)T{L㞣/; bGʗ5ƴ彩|jLnƸݿ*2EuV3 |P %1]SD<@{TmrF }fe+z)9bGW,S2$ja8q 9CKRf Cv8}&Dcd*1Kp,~㾈U\Me|_cMAQ*j?H`kUݵ–2,50Z+#*o; IbBt:ȪTԻGJ 3@<$4 Mi奀ċ\<,,¶nxjj׌I%FW@/fL1gHC&KY_B}xSѼ2hm*GPvS^*jNV,).@ ogrYznXH}As0,CqQL]Yjr}_t􂪧s~K^}/Y*}W/I@/OvD9\r%=kYA@ Y)AjL^5ѥ⒴ sqJR b{@;ۚ*4rӈ'm }gvt%3ߤ qɪVQ<-nO"9 ir̩Xyu[cz9Ex20۴roOXB$s?[qB! ALgQ(l(Ӵ*>hU\^«`/񑿎0? =6,GRLdNM 0TD+A)ڪVħlqWE@BKLH6㮈$UI8!z:"O0=e rF.xbסvzީ ^yYaxjՍC}V""t$=$/O%}N.ƱE3f':  7_aղN @#nVJZ 0 I$YGҁ0wrA͕(QYɫ0sy/XI -Cē'cџQkL\Je1lQ,.%WY`ML},0mY<ںiY&"bX@Ov(8Y"Y I~w76mQܴ*ohtV0(v[\9sŌ,EO.Rל̯ٻgz%HtgJqPgV2ʯ2pz~l8m+bHXc~fU ^1سSZIm.&YHװNjzqxHHƈ  JsR0S.%. v{B{fWۙ0khr|G%lAiI{줾, lk%'Xt䌍Yj4l2 z壬2{6œ\lJ<AÇt4FjQ:^v*KI5_dahYaɂ$+ZvhsoSA/u^z5csؿ8<w2!I̲Me9?[{dg''y,x:H|M }XGhq1SzG9&&Q]筩)'naVP I%sA?+_o<3JՑY R d6@ ¬:%^_b@A%9K'%k Bm4YI}vТCK {< D2^'&’qݖdI N^ON 楒P̖3k}]?;",$e'IQFcl͹J t[dﬤd ;@:«?jafL-mONXXHZ "VA欥y8: gػ6EAft^0=UZ> MHҺz `%תro'W Z5&*Po7lvj$Ϟ@f_/vs4AKo?)X;ݤfiznD%I+CVZQ1#.=E Ik^P4l(axV7:po8=sjڎ{u`l.,u+. X$13L+Y5TJ~Y{5)kLzcxy&v6@B,eO&Ko'l >IM5nͤ|-M.&$7p~YG<|Ffcn\ΡNxbMFfRt[}ь:y.>ncxjiB05b+.c LyzT_Ey}BkjsHA] `z:!I+pBY_utHDf$BC[ UkՏBnb⊮HFitiI~uTXMs=ai7hc;Hkto?Ycg*{ߒe &S4AZϟ۬ j+F~1Q%օWʋpݲڵyǺ.\,T\9iu[8H9( #+|򲣎+wJ$)43Vgo[^ChQ5N1 .ےvwR-fV x["s@FOР4~{vƫ=E-zHuMDe-Z>V\E00F))ڝK+UsAhm}xR̎RTD# NzKj:f{v*JCpoPTY(^~ʬ^僮rE椟Ї;~ݩ/X6J7+T.[vNksIU[|@2䄦Eɑ\4T.DllN.\g-]4i3݄*$G'K("#Z Gr5,ⳍ_ʫ\ U$|<$z&Kʬ[.'xbd~t#w*Jrtu  |>}aCr0OK_chd '1i}Z4#q*ڄ}SmВTCF(5"h$i(hª.EeڃC/jܪ y0ƇVwX袞aH|x"YBo|֕C~M)Plzsy߿N(YiOJh+jȌ瞣JLk9^I{pqrf0Ԓ7O[g77@t,p``M #3t7X=}V<y͐@a.O 3ke]O)|ʙ܍bQ1OkEYs$ıӂnAYĢcG}axr$=!C}H5#j:/MNS/Y% _n.)ɓ3ݝ@n6vDŽ:hD7SyALŕ,ziMe7܇cI=44xʠ`DwN\#䑗c/F4SM=dۢY9w\(ߣOϞ!+kYTiC9ߛqaDyM[y.Ǘ]㫰N1-<򛞇-c4_Q[ ٟ"!QT)aUuF dɘ<vCj؇8]\[TpK2ױ D>G{jx- |EءP/N.{P'`*hHa]r5q/!TQ1_Kc ږȒ{LR fAVγՎQ-@'s嶝\252z ^ #sCEa|"X}? ̛C| /ȩ3iK6_ H㽼ZwD+\LiL<ǩL_)=2|u]S*tdIS6oWZ=NI@T8)phvp|ݻb/efZDҤgI6 ~$O1~2dRP$,VPx0ՖxWU}H;@Cg5^)sLRgyH (ꟷ>(9Lt"!A*u`Qs;.N0w.Uy݈"+8R`jח!deux=42s64a;A?ugCPtυS1q㲝QCYnFun}bFBrYiWi<ƱW$\vg YKs‹g B'p;7dC-WN= uJwR)@| y9*(wq8z-4bk̲Pxu!3*KPs>B7'hCUM<ȷ1,H5+1] D1V<@SepH>k};9hpFRTeIƠ`尔{ =ent'ҹ%\(47$6B%;R6U:jNd"plH͐%Qq]~WQ@ɵ~mJHG֊EI"1&%7 #6d~}9S㠩_oBZ'íAl.,NlpQj0TSI̻*Ra-Kn{t%pCx9/ N9)vLOcs~s0Z =K?kĖQ'&8$z`j՛[^| oJ 5?#M6tqU W$>DB!mbµy3N(aq|~{::z=*_8n"O5bO^9.hiDt/-ұP+ 6ԫ,HMu# ȑϖȹmR% 5 Qx /=;|uX!6z;GvsQS`ݴ ^ Lo&>"~>rzDeR~Oꫵ7ȿء9틻CNu4BP/ӱ \.ܼsY|/Q=U MTisI1PdRyNtՑ껞YLۏͣ7'ʹtՁF:ZD^1E^- IoN8R@aFJKvv fmf6fB;R`TxsZքݨL$ jg2B^ Țg720#6oPGCݲɉw68t/9ֹvxt0F rҸoܶRiF_#* m'YNܔ25d4PsZA{&ROhl %D63 5\)E50dm=y\&F?҃iD֖,Uҁԓ@vu؈BnەbU&=~\J(z g3M!DxE sR]  A֊L0,)%ە;hQ3/gw 6P1AhuZS= U&7EK)Rpape# f*m'7f*R1} w$p 3-%e%ݯcHҿҟNHCrG*Ӯ8'I1e2iHAo(!o)IХXa TTYQgxWbc}>2Ј;yrXHK Fˈkhi& w[4b$4W<{UEї&!5=M rHfsO 6(" qUc;ZCsODQh?ZNhrrI+V=;/gAcGq.;FAgv(8P_~u<("7𲛞AQk.~k< w[tuS EpN8•+L:&،Y>3C݅  7rb :1z148z3^ :ӌ礓M9[Yj 9|'Ӵnh 5[^46hGbn^(O, zVC4 p%G﷐rw[QWֺQSi3+ #N]T<$nϬ6u5&MRG5dY1C*uH0neO--oDаks>MV]=:8 VS,O1eO:]VLJ` yעzN^F G)Kpҷ(}[_|9겫D՞G)bdR+,Y0ZJ4RD zDaX߰nl@I͵5diL#Hcyf Msۘ"hTKD)HaaA4*[w>j=O}s#MZOB0zPX NG['{h+b\8z'h>|:wKSH0ҫc25&YsHId6WtՁ+s&b'Q1o-}r=M/ lHF 7^e,N+PuJ8>`_pauT@^@XVDDrS.\Yy_how#WjB zfp!zÀ U OD PʧяbV0*V=07hQ}mF(2N.aDzo0rD4Pm@d@CdJRNBXkD vHoJt!QuD].JѸ@XQF"Q*R3!&^=ߝ=ABP]0NSK~&R%_".}l:ND:냮oK=ǽלf)g.)OW+tǷC-4]8 Sn@'CCS@59eZr;I"e+nB Sh ւ9Mw߬Oi79(¿p|Yw 랦țCc6y_xGG(,<#+ֿ4JR0-F8ڇC> ZЕb ,2ZFeRS !*u hAE;!E`wtU,ʥ'\hgX OHC*]S/mq=k.gCP4{8RRQ'LνOUfLߙ$dz/tA@qTwx~o_ "_HQ˔4vnW{y1|$r1}S88ln =#n" (iWPoU^/ /r8f92:|0&L/}B}+9q^ ePhLNo]aڸGXܚn&D2LfxwA.e)C{& G~Ey0̃̃M^1opq?}JFr4rkh[ تng%cGg\Ύ"].`dK--Jxڤ[ L'6:s΀};s T n)u#}7AW|H*Qʴy#d卣 VP7lG2HfWxg1 |[*a9KFO>XKU;$OE"$\͗n!); fjqgC8#ev /&vW6 &|#}BnL{)[&PBE#o9ƌ^t)2:#U Ϙ[Xj鱽NCG|dKǜmbZ7',j )ufMi+‘wixkH"<ޒ3[n -߳*6K낁 oy+}AM6=鄛v+˪!J,r;ivlӃq9[ \@.ӞLa2Woc1{+9bj/vz;muڭS]-$Xhe =*⮉^i&O~ y]wL XƁG&PK䩽hy> ?:sf5Q8 8Ơbl؇Ex|'OG1 } 4m#_v.>"԰ `mߕ {T?pv"O3̀!"ƭtF)6Y 0޽6!0S?_0=fܺ^%)vn7Y"WOLFO(3QLB~h6j-Ŗ"rԀ)|\m#:{ę%ur]|']bYe A#Wx^m4t@a\@{ͻi=DmZޑ)⃌C KON#Օ*pz搜CkPeYږoST&cd>l҇' E1#3CJĘdDKk7ЁbrEXNU^yIX]Ɍ PXߍѓxcs"Mu&2^dP)_&gߞ0K6Zi~BNQ)/, &2㖾\K/+UlȍBg(oKwMc>ZQI0q"(ʼnmYU&Hx*gm~FIFSϏPF^pٛLz{I;ے`[q(5ch - ~rׇL?ae{ϊ5,.buEȿđALX71j~OР+Lr/1O(qZlǚjY(^-25~u;RӃ< 35'pNwjhTgQs*1y`3谆5ED8Ո}TAL`/b#Λ./q^6+YB.I0DU 4x߯L6xtH$d=ec]su QT`F5u686,& OƐkJ&4^7h%#㷋'|޾UNeL?6%W"sl sߐ 손ao1wq<) ]' H:/."unK yH%y5#ВDf2J* ̙2e .J&eK@)\hsP|At6M%ύˊ b>`M : L| apoPD!*DbzvNHuBSI&;q %!U$fL %#e@k\21d\b)B 6Dpq|wLƗIw))/ WҌԫ]v Rsw,9W!=G(5 ݽ>3v:ME;8;]iyEJPjM_ wK/}:4I?~g$- "ZVmcԠXdYДǎ,,V-hFkBr/ˏ I5 t y_sq q׀ND-h _t8Q?5}zC*R ysxrJ^Ň_ϖ@p湩wdJ0kg! KZ9~HivRS! 5"aH T;d]V8 ^5/; ek.jwI^M")&,/alchL9y~ܰLS.x[U.'sMIdp& Qkc/$uW^h25TKh6)~o/_O? {0fvyJ:Q'ÊF,Up8Ll5J*/4Uw>u 2;OO)5&5~FTG:{NG=9i>AzxJ İmځ@f59frP݀R=\ z ,@eK@Uݶ_Ic˳,JA}t5I5zUV}_t2J٨~Lc??7ۋE|ۃЎ q8LЪ g/(g`psh#WUϾ֦FNK[p<=g@й 65vwҝtN~{ɢ5lib&rI=eu1T9c J$w$NV7ƽ(B[MQ H?wfH"QGvMƦPqj-f'}a4q4[j4|:6?3ONʪh᪴r%߼e[=8r蟮nuvEfL!ƙJwpo9㱈\GG)[FI+irpzÈ-Gƭ46G sKgqG9e ,5]ĮS]STQH-Z@OU{\k0gv+dYYNHy(,qJWƋ!yع;Ms$*@bUi RuFynO-A:ۇ[n|*+>jn_ {KaoqG6cU4QG?y`eQiY +9#8 ]To|EԾ>`n}DާGX+Jm58Dl^u#4 # VW˝֞fѶ?`TUހ?;О.}5i ?${WOs!#EH<7~u:h,e~Az7Gmh}GOTUNS|fI=ϡ v@ Rq&n<7LKb//Zw^e6(~K=ۅ^A\c_NRh+a=@F61%rHA}䱩 0iuLy'/p֢G4FWEa b+~{` XG 'wN[][rluqxnZTW>Z 2a34NnɨkĚy'⡯B,_^[h8^+~jrۼӈnHQ`SQɨd y-.ؑ56mUXrsg '^t>$go0eHVOlr ]Xo|4)}~/"c@$W&?L7h. ި >%+>aQ?>[5cߥVhηпd%"NuoB)L5'vf@%TU#1$6!a1'*li;9-g?KM/L?o^i"H c 9F {=];{|Nx?ZoR(>/=evG%Ńi')%sK@H>szB ͠,51!Pdce#j_m@:z(W`R%b ;;TT]P)7X%hd`%(` N;.oѿ5W I+K * ԘG ~:S|~؂bqS& vUmxv⿬6~tue_bիZnټ݉Fq$ml<14AL}~32vANz$5[6-3QUW>%r۪9%~ >)#YC. ^ԏ\#5x Xb{M524 WDb5қΙ.~z"Hh.{M+-ԷSr0b\ż+[q$ [3,XU2RgT> `!0*؏ݽ)ę2.w؁jR)&?d1÷w7MĀ˳&&8"ǗHFi``O(1 BΧK *ohցZټdv9RH30q59R?)OЯ#V gw6(&5b eKx pKd=O-誂׎۞j2R' 9OthQs`L +SE1:毀FFWL;e(qEoG|0W+]u's 9KaZDqoߒHl[,4rbh|s))U7cVNɪ'ꦬUؘoWbMD9a0S/,1zI9Dv+jKrohT7N5Uwn~(Vi•w¬.K`5ӓ2=\tr&%U>3,+: n ‰O'[*GAi|UAޖ l!R,DH_eq"3%^[Ľ7m7u4E}@倱'ʦ(8h@C;z,],bD S6Y02\RsLd8o+3~&o7v&p#8בen}$Ww(6.Ħ[)6=JssD[uV 2Rȑ'TbaRjZ]i{*tUbo4 :֍yHov:ƣt:a[~*2^/tw6g0,> @Ҁ># L7qaYAk sv<>]* {xё:7Stvށϝ4v8 r2x&* ӮLsҞ/nA &EF%sMW~ c)QI &/,5ؓXK? d#RowK?F("1)X+P=.㏗XTq˯B[ ah\o?9ݍۼ35CSaRXJ8E<ѿe݂-(s(԰ş%Fd+@k*\baH7"Q[ƥm˵g6BQ@-k5"c'VXUCO\=.:)F D۫~4 aty8QVN(@rfZF' k759˺2Eu,a0eZ rqI)tB@iKE Y\! _voH[clX)࠹g)^du,y}WHL[TWiTL\G YoBZ)*D;n4b<Ԛsۇx!t}(='`+6> [-Y㷑k;<;E~mb(rWdԼ6"q3 n2rRlƬk;ɀfq}$1JS,0_\K&׺6ϽCK*T #~6_=X}Ự.Y ]u =ZB2 F䴡0f+ǝm3W:2Hq졌*ABW;-ްX'Bhu 87bw"4BR"}b%2'm!يN֝ukiaװ_!̢R,i:{ކ;pX^Ypn%鏖jYS- cs)s[K5,>%і-(ZC: D 5V=Id ɲ#,MM8u^2;ꕥH0y"vc(qKxxHO03&!84khl Srrp,DCl+~P9nAd'ϧ*㐾pqp6y¾l")XGG>kj1%Z&#d򈂂~LC!WӅ^}ݙI I|F,smZ#ѷpեP~'g" ]Az^&%;.4Z[JQbK\ _"yGPٱYߓ[ QRɵ{u7ֱXҺPmbֺQŝ'HTV "W5 y}60?CBXHPZ7Cyi-D81ݻ'8D%p!#bi3 {F+X(&n EUEmfJ>xpy_Pm`8lq*nc>k^xP }bc~M'vSq |DJMZ6PJǸAdGq{s<ל@6߰ J}v:i b.]`BzsYW'gK3{>:9v{zǬG4Ň_iN.,Y 5SGEL3I!˓96k:䬃Ft*%yLG"U >Fb$ª+d1Sv.tuIe{d?8Fj(@qx+5bPصѤ^Ң)59yJPk>'Gaog!-V/gE_C4>oT<P 2/uGvgBhwXFuRTS_7nD/! g@8V889(pɊ)>my$+!:(}BDYyg٠kTj='Y#`qDYٓbrע<͈YIJs \' k>^(w\NL%>]ن|rZh]6ixuע:BX \|JHϒLyP5Dޛ ЧMfOpBenq=`W_Qh>m y֣Q) 'C4bȖNCL\&iy)[Jɳ{̶J;֦p?&{OUC:`Q;;u]œ"yzF"qbY_S~?6R8?I_7 6JJDku*u474.6 LΔ϶Sf$?=i_Atw@E!wQ m~k3J'JqJ3`eqA $[:$ĭzmBV֖">E"%wdt9[S$n3F 0:Q?6ݫ !l7?2Q|ӃTAE`99f nc^m8齽< Qi GZF7/c(D!Zv/Z=YLWGEOu1gH9OJIkXEo@e]PfR%..E$7gd WY?Lj΅4"LZJI1zxA=ʧ#/I6\1Wɪ;i?0.;"i#gsNpPŷN(mG+w>-@:ǘt٩2cLK Cd y'& ۻ#x̜y5]-' ?VLy[Xi֩"׶[)_r<|'?*<+Tg<,xo爌6uW/]X \BWdl]9TM]3],iKS\t"8!vgN$ {VVw8g5ߎMd'ni[eXXu>ŕ$Ҩ%sOSQt4z9A+`J9dtl|S5PwH+*,门$0(J"D&wzVw&Vv CXI)1)` Y`6=k18A #Rgt:Fٶ9 1 2Ya@μAݱI{@TiA#_/Ĺ(bQOCno"[UbJ%,`̏($5_ƥ$&7`^|d0 jTs1qD^24좜=h}㗊4iJ~8hi/f{qg!i]smb>/HaSIN-H-i>k&ħ ߛq_mߦGZXS`^I7:->?˳}ݡjlx+"V`_I̻bmPUs*#B)Q:`ȖG?"OWi@| ( Iu@&HhJz-++ÔF umrj6$F*6ZΟwy`$r S1>WoSͿв*ض;iLa<-8Y$TH8X a)n4U As=b|Chͻc3G3dOd󋝭w!*UC>{:Hx2'G< SB!j>m8 bӄZg@a) hx&h(@@2^I࿩7/ uG©HCa6Mʯv]۸k%+n0^yY1=o6=$ x&vEQ): kWئx:گ'`)xG*,2aކ뚽[Q Yidx)} hC-.ef*3" y ʷi}N+]b nƦ,T_s ΟC/&tk g*'g2vi@% /ٵv~e~1Uj?nRB*n@\WJOY];j;Uc@s4+~|Y c ר@퍨3:6(I>P)JY2gI#qrG#fAUk 'G~5DvгtN:0%P۟!^@#sU{yέX61tMl;T*PcŠPRs&K!;^y Z fiSKDA-DMl0M]U.-l.hf X\rTAgrIz{h[7!7Gw .Wn@>=tV@Pz* QEʧ\Mt<xlJl5baOWgZ ΍_![^Q{_xb( rPxm ;g,17C7ڐΨV^<.F.Le O-08VTy\> u(-^eƑWE lg*fzJGת(BhEeoz>s,񺚾 N[c"Gv'tY,]GA{ P&E o4ؾ+A콯O^au{~ΌU׈ }P'n^;Tp$lj+7"~X-FO5袎7[=Q'iu +J".mS}2)qvq Y/m1&-(g5G 墀*>LOIo4 I*8]g{Nߟ2#ayŃe(wh|IDa!:<[gymދ1^ݝ%;zUERa. \MVaS7`nYQ6b$R/ c8,7J\D "/rZf^٭qV] 7bj#mJ&8o[,йru:U{i.'|iUW?#{!@]; ݛZ~veI-fGu(4aM1%݆yvǼKFQ$ץ6""O0SJ缌-߳1,7Y.5rСɵ]k65D;i_-{‹%bI஫]8g:sL'+v9.W3`Ϋ), k{0g5@&!sK rQkν@x7E2$P?<)M zc{i-0;?dG_|̷(B+woAoYMV C@Ѧ :mCeL[,$3 $ Lfd#jo 1)w r VmP<B*P9}-9:C7V$fD @kGd{[9m̶IIި}yhH 3%HlqA$.J0k zwN)ǞZjgglyV)RPP /_7Z ֒ŬWto@kpfHޙj1Q*6ls瓾C_Ll;ۀESU$лaM;JļX:NܗO8dŢM5a \ jORO!(~pƼ-ϋnZ%=ԍ`,! c2! }4xIIŨPZ4Z:aqe!fN2| v/Ɗvooi+ݐ,!>hs>2;^5oߤPۜs M5%/iĽq<925V&yfNO4PTlEQaG+ &J:!˵t\ pyeS )uܳYwD9/[-Lgx^pcV&WM9"\l&Ngkuy(`D^}A~]t:BJE&)v~ſ:a]HVlx̶Gi|}O]T1p2wr9']QY.$NIe {}f>/]TYo[w&J[1mҫA38LnRf8Η;e΀#_ O̝NE TCoԑf@nĝ$Ӷj=G/ڥ0)fa$R66 }-**/@w۳Y.o>L(*N+FSM" i>͸}ЀFX\zF@2aIv,xBW?@&JrHw_*\p'F3h5WZ#1jQ)TA23sI9eA2^)#^aE_4GqczqF,aS?)ZVfm;"m\Ucc6Մ#c޶R^f 2W/*/AYJ':h 5 >5WC*?8Q8z-鮃CK4i{ؖL |-ڲQTVe%HwC^FqV#~=t zʓ\7SzRٵ/dj3bɔM2j!rPnߍyhY+8FTW߲ƨUc4E4IwJD$,د,v9i L\ٲQd!=vVDrYDc 5iT}CEr+a3?eǛQ+O#?Ԛ5KC]z@&FE nLsG|9>*BWYIP#d,ŭX.:5d&s!LkCqW!!ێl|ߚ/ID7 'IU꤅VO$ygXlZy=-c>z+E}a]lΥ3DZSoF[r u/_Q`'W#&Q:]1$ q^Uox8U,+P W2__ڟP3$6/Ïp^kM_GBʢ\vׯڥyxot WVCJ8oéTI,^xEMnJh8e/뗤#68 Q*{;'$RmvccmбHKt'Β]ϭclf CYHڏ*z\zNٕgy ?`6"c YQZ="i5m7@T.{< vq:%] 1# cz>V,NtʘEw(I5h[`ײZtl0ʼX./-D)/ibInu^GqlWE^6n[E|z5kYo ߝ#5˅\.=fz.UgDؑEW#P_傐_#Y6.?[N9/s9VќސD!XR>`lR`&p/6ϥ9RXi1ܪsFUBgW;؈9bMaɻ7ǖO^#.vyȗF.hԤ1ԁDX Y2 9Bhзn+C8KQ.Oj*_掶Z[C ҟSGps?CL1mbdtBX`yPz%c Ax U{)j6;|J,Ќ` WK.O v01+FM*EbTtiZd4g̠|kن[hwbIEj(z* F}6S!eN[]]ʝe''NbBƒDh.oHT|/'䇡?-l`Xzp)ĸ mʾcT\{MB4j tB!2 :E϶5MA;LJbB#W6HŠf;,_jR KtvYTO'KuEH|Y#付ն=!Afn mP$XZ9ґjВp !hw* n( OO,cdoIN7j'# +PH}]#zE !q k`8s\aƤz'=N]ռ`4 "nZȊV"Tֻ2xON2$FvRUIZ$\:aSVI.f8u|-hnL3/!,ʤ%|LXOuT݋9^G ]/Zj ~#{S]-(AtX9xBi~G6 ⼽1rPeaq[X@q Vˌ"p_\tF9=oHݗcI0wց/d(J >n. ,{OPy} df~j>LC.ܬ,G>Go]j^0s<%Fh|>GcPa^2b¸9[#MӉ IaѮck%F^\K$2| 쭊-+eImNKoXX>#zYy,X *Miwk|Z3I/nVjG ^Sj5\P wӔt5ۂw~ ;}g:h!o pϕ{Q!LpVJ*k, DJ|fTyT-]  CLFmfݰp47W`,%IlD1NYth {@n@_7 yk3s6Aѷ %T+߷Vgh8fI!5VH23] >ި UM/1 :qY cPfX!m{ iN%13s0'JMq(F׶Hfɼ"c w{33  `-'DáN4eL;!#A*<$T 4^`wrBC'c hW V\#zD1z.٨4lOpL*B`շbM:E_BU݂.~-!<ֶfҋ/ =nCj?º$pF0;cZjaMXF_5B>)).3#)^$Y?5հȬ_֬s#ER:H+Q政 Onn)uRxε01"70[?"Z#g;Cea:Id Wh 6Pd-FSۑFGɫ̯e﫦ebf2`K@`Z]0b^$9ALu5 V6 ~8{[u\hFay 4y}6>@ TOÀ7JafϾ ef<pʑ\K[! /4M_v7-q?`QpG-Lܧ"B8BuƔ Ԩ{ϋ 1vݑF<+RB/^_E9T:jՇtk8@yZ' |@33%ȉimw_QVR V۴<rkֽ9u;҉Ġ9-վ{iAA2E|'8r$V%~F+Q@DX8`09)\ g!l&С{$$9(8z?5rC`bWulJX>g{BɊr)fӃ2dm5n2xaM:"\ce tl?S8Tn%rCۣ1y+ˇhd s+sj(.) U%X=EEqq)Ifg1j>,hE F2DV/:P3?Ußq1[,qm-Vh4K[xg ybwRl,ˁϓOISoV^I 954bc3u_XMմ ivLVNBתC=Ď65;]A\ܯRmj'b*d“ k_d[&g""8)Nn 1g>C^%oB8q&ЪEIj&>flD n%,[ug~pxTMߒ+Y@OZ$ݟ.8wo9Qr pa[̂䤷 @ 2 :rMs@%Tv4M1'@asP[A_PLovYQu卵dDOᑳ$QJaoFz>J -ןas++иWD\6]BFUzs G2([3% @EUarץg] 'O_Âhơ5%tKXV1-PhcoMHNJϯrb٫}ҭoeN  tэ;kK m.w*u~dC4PC0}MԠ] b GZNIŢ(+1+L#x0HӚxMYu\XnzIXM!肛|M9K)mHP$ 4Dys[$ĄAb;S݀!&A`*`prB}i@WYzfpd`|qX{,T;Egq@«ϲ7@GVX(HR ۋ 8PR$!vz|(:YgY@{;rw(| 3LP&^md8E5vz9jiܕtSNM!-Dif7bd܄bMu; at~XgebvM⏟eYκi OMSR:뚌l%l=i#C, \it^Zb˚i٠RyCa|4V@Zn #/dy,;E 9 Vˠ5B'd0AZW8itp3)nN ʵR鐳۠u Y'{y_O].YӀvB'&nU(i H d-aT=㓢3x]߈,]SODS?Y?9⺽,E/x7Pe>f41em'm"sTFR]&5u8C,W:U/f84SnV.`fgϗr'mzilO`~@a(r0ZHz`c.oUβW[S-0XvI8hYK}?Rtlf^ȑ|w5XJmR) >F t-XzsnP2a0ReΠb|ۥfʼiT9v Nر<]gkEHA?!EzLQ"=|M3 YHC\HVwy~_RMNf?MsŁ0=ώ '3E$%zY9ʺÄЃ.ubnLM0TM?΂6v$mqIà+j];Лz~ n#]RkdsEmkCQ0 ~i{_q{ IjR|r707Kif̤m1o{JB61lpam ZWj˔u*}eDb>Tag嶤z^Xr,4ʸ8˞.zx_  z ) EV0V"Pqoͥܰ,q!|jhKرts}oޢS9-fS_'a­e6G.qn[:Yxt3Xp=[h<܊2{|ƲҐÇ,MMRCPo_;{^^S\Q: 8{GbRm` Ar)uG"O \ѯ16֨ dg~r5lQ#0^"@œ?eX#p:cXȴ" T^z+NϘVݲܺI&4V&! s)T8CO1d{4eDԽHD+vܙ6 U fs?k{69TȎadCND:\1GWpQC{Q!>*΁}#2|IX Sv ѧj*$t}*5tq; wYiQ'Lc£hu HZ|mw%fTnʨڕL`uРfw!fo܈:478[Ր=7 bU^ՁeVބnW d4 c{c{T&5 'ڗs<ӱ 4JU(^bᖺ_UFm&Y|UBKN.콓:pXg f?m9] 3DK1(u&о@l? a˩~}ʼ rƁZI`tͬ>S (BtD %iE>KKQ%Z "F`zEw ^l |cp5?,0aN r1Q֔Aa9ϭqHyI" R3!ͼssl;}&?% Gb+*Vtr%sPg8AqΖd mnrK[ȕ0_?pDVS/Ʋi8$r 3}nX:x %*m{ȝ|I0_W6V]dYc&2uZ$pcE9@Y;=}Fw֛AH:jgP&Mq"zR]Ε 7$;Z?@5)TqF~=,#r9i'7 LtZ?9>)/ձdP"#~` )P5,0;vqNnZ\6+5jWv't~ ƟT즇#GdTza#y5Ȗ DRUpkn_3z۔PSG^Es6T ؏&nbC$s]i1 kchQMW&`Dl24Ϙ ^m 1J`*jA_NOLm|x3EwTb *>R ֣!3]g9akG6OKhm ӉBR,ObcyPs"<zN'R@AZ0ی RߴJt~VwDbQ@-1ts2>%R hwPG]qq(,*:]54,}QL=ZL0tqbJj:5!X7D-oOyO~b`!|@ s yX'W;J@ ,ȱ>+"ZiXF]zQGQsxP'FZ@t81QzÑ\1jP\ 2ϑe)GӍ%nZIߦ XG}qi׍XĞ BcO[Muӱ_6e),a'Qv{If ]ʖOʹ%7 r,&e$ 6릛R2`Hm3IKSIWa+y~ du'3QoK)?:h/hk/dxOǎPhT~"u/#F'@\"\-8#E *匐lv~>ݴ% x~$Op˕w!5-!#q09kK\X~WSiɈlo|=8kqjvlJqX8J16k 8IT^f` /x$t:eR=0^r0 fV50P:0Nq k6`,cѧXQڅeѼ#vf;[~"н x/=YYپzO<WH8 ͸}9!2mQ\;G` q]W⇹Nc@R{v#sVr+hE֏df3:IŶ`Y{Bnä`V(I`fbG 9=#ēr]gLjMD ~?fWkg3$t%~P{S;=PU4/+pckf^^]HMqsU8?u[.Mc->TCӹ9>%Z"ϰfA`y0up?Ӑ>)tpV%V)0%$: ݏ9rƍ]j_EeH}$ Uɏ̄[d]@ē0$E_:jGknH5V>-"N6 Â9I L|v!]o{Uo_b9j?P ¹" NkBGZ9G;~cJ\KT^EqBئHs:SQV1ZuV\GF_^qC:, Ic ߁G{%3qJAW ~06ȏxy$Fg5N [(mf4 *~h+(0ӑJ;RH&D+aG-oHR}߬=w8< W vsӊ>M Pj*Q%4nґF%+r$2Ⱥ` dG.Fb9#Èq:>.w42_e6ii>b#YZRr.߻V $'ih/J9[.%/?s?׮Q?/o='[m u]ThUzi8M`/I~P08੍N|7@viw}:($zd}<ɋcM_6خ uni]|NnD9̲&Bkh/cPp,rT)qfxYactqM#A_Ҹܾ[mFy<]wE>_ q(2XAޥN5rtз0  ۷ 2[wtWLʅʋ;*:?Ԡ }ޖʡ ttALF)csA*C"+{< g0"`_b!E- LnLWU*[:X:Zu   -"]UR4Gt"ȰI2]j"xHn+hǩp{ PM >l3^zj[mhy5=08*lS ۦN.!%j7R'q-QzZڡ!N;EEּgE98-$9Dt`(دr#㍀3C!ſ̱^8 &]y!aڄ2߇$f4ߍ*F],Ė6J5-S{p8! a_e^lk 9XZk{qk)A ro"Y"wON8]Pxl=tjUvz/QMKb`WN+ȟ^7K[$G7?P"5;K^G"`(誾QZ'+Н#tSIo.*bn5E)N. ?\hדXOUp [Ƞ6n*Β}2Ӣcl0 !k+H-0ŒD,-)֋я~&- 1tK*>TY詎rt*ˇNjA7$ØXþie:t"G?cڟO?(jGJa &ϰM+ҎE1 oU2fo&>Q "492kk_df崟=#r[Sz]XYrِ^݅q Κ?X=/,c;L]M:,  }fVobDXȾlo:vR&o, e͛!ΫPL߀{R )==r{`s]8j;Z\v;gؠŻ6ϝȺsx;`rkF/grmgJqŤ,9ZfhXb 2*p3c%3˾ aK '@%>%`#Gp9de*K% F##:̇g.:V^bHEm% Uv;ZC +[вӎ24%Or[v`2}-3sMrTXM⾷?%!a! I=D9xQ1in 7jZg uvh ƗMGc*-/:|ՆWmj՚w!uaBjm I `e`=LS VΉZ6R|OQU胭2&E5.=@~6"q],5c#`kd2ЉV0d? ] #Fg1Z/S;/X a~Fٔ0tYS{vSD5<߫'l>=pK'n!S_}[qߋHpͶ=+ pfKu5ta7,).S}YI(ڑ&zWm%('wq a+-nQL;Ϋi9vVXڼmܲVxggE6!&'x&5:! (!qa(eȽ-mw O}ցp;[EHHAY-k,SOv޾#oY-7Zݍ RX(M$ӛᏱs!|ɍ~Z!ҾlBiZYjRnA=)l w&3RP,)Ym!+P{l}p؈0~"a[C5ĂD'dZq.ƒ*ۭO{1\3~Fc%q)hGAm_ܼc_|_FխDQ(Q|dCkK0$cR乖gpouɬ4сH2ŹgT_M&sUgM/xG) M^k^c/;)z761M3\j hw\Uvr%{iO $t,WGy:2ْ!SЫ݈N^_kLjޤLNQ)g.P/4=y8Ib OÞLw;MNY4v7~ 2b^uT~`Ky)xg0bsVOXC4T8"/~bE*"6HBaeޱ/?WE(hA)}q=GPO2.Yby춤17'nłiil Zi8-4 ]GƠ7Tu6S)='Bmh`o35C>] fMf1H4Dƌ ͉2̰3T`hݧU{-%FeV>\0M0Sc04oFUpZ!4OE-CLz1cg}~*7½5lfakOߤ?̎m NVmk(/Γ." |}@Lʴ[Y̒>XB/Q,i2|W"Ώ4FN# j-"ح(]i~k~!ԍe+yX9Ăԫ(;SikJ~e ?5%XY[`5REʥXJgB!Cto@bS4IL9Z#!շ vH8LupC`-Ֆj\g0^C?:蜨jj"/ ASNuI/ :Q/7)'5=e Xψx#Q1H Xc-;;24X$ۈRrrh=aR˒o HwS@p8٢L^j'@\}FlV$[H WPqB`e=]xi6z&Ͼ%0* Q??+E.-j\f0/Fp@ /O̍5$Wf2įEaѾ'IwMX|P^T1k0 }蝿oPY,‡zZJb-Jf3~n[]Ϋ]O(rb5)q*+w=3BA,uCUAYX-Y6 {Y}??i`:H7#L6OWޓF^,\RXY~59*W3:DT􉀙UFՃ0 Τv5A8?Q8at$=YHaX Nr(3q~=mnϘ^\p0Oz鮆3TanB#iyFJ7џq#q[Yp-*o@YuϘ}kbZVFհ#{y>fWV`X,gN1es0qIv u /  BxTo%J2~zU;@Z۱kq ED TTHiô7g ܁Ɖ0ܞ1ze=]8Ujkܼ7(Ji :} 8C7^ޜr7:"9Q[&s &{(dK1>.^}bFVPhZS &[0u !A0oACԱ.>Anbeg杽`v|e5Ǩ7y| s<䜺~YOѓ'[@*Kc94]dȦRH-]M|qHr&Z&=Nr@e'ʄrbQۋ"=.^24T5JZ%. >=6 C1r(>7*}yN@ }-5 6◡!i:$}NOЋ:3=n=I$-?R v{h8dTx #D{1]y^P'D WLrNޗ/BhD 70tx.=Ro>8n7tQ*R]#Ii=XĎ[ڠ9nqi2}${^2w~)}iQ_Ɍxѕzq2"9i2~ z&M;[x{MQOJp)A0_R]o'a0C1y63ِxPI2pf9؄rD@u$¸̏I >ܪkK0ESωx@z͝+$ <+2a\HT&4"qm$$ypj7ZsN9\ܠSL>0 KYaўGpe Vğ>2.*)e0c<ڗ̅hnүїZ-C'}"0Rb[ӶJ 9wz5)pm>BffS "ߘ(ڹj JHY`ʒo?2Y~iTyu7qiJ/Q;nlkJ~!1QM $wŀ ER_ ͚hzZU8&oؓ*8Ls OZ>1= Z ]g؍>G84|nss `sb^/*ٕz\(5z.KC23kB':Nĸ+;ǓO3fIR8π`M+alw5vĽA#gkzE6:|~"Qᵊ-ơ?r΁8ym,1UKd!N{.UT_zn}yHAP>+ +3HHg"~X#O{3|wonN(@(@;Cz J/҃=_)Doe R«(]`8&nJ"NՐv<`͉U./m~$>ʵkG۷a<,g5aId +g9ơW2-6lIt7~~ZhVA%8W `lϴ;`9S @ / JVgzU9_8B3:{¢Rb~q7`Ư_ա e#WnӧN}ΒrXU*\.f>&(âL'L9p (/X'F-x:BVM_D5 s,ci@ !^o[2֬ӇMYVi¹vn8@,䰮J{Xz$PւGVւc{qךD(l&pO)˚vQ6-8¤bo㪊*!L߈1f5n Z'QĽj9$!jq-x po :{i&?Ա>mף RBpDB&J8).N)BgS^:NZ=FCe |VnRcӣA(e2:3W]+FAlZvIÄ~X ?gWz5RퟺT?TS+^Ѩ hp2㞯j('Tl+scO ]='Ye3 \f1)3]8Ab"a:Tb< 4h*󌓠qʷmʿl7#^ɬTd V޴᫬v%Zxq`{)i>>Y͗FܜzNg=8*^1yfa=Vx4~XZɸ)`YKE{vcGʼ <;I tp\+`nbu~.zp# mŘo(]~f0kAo7_d ^:~ϓ@;N\- ɦ8\!r@_3^tx;K3N% 7=%e@?ޔ+lCK7S"\Js0* >ax(_'Lyu -U1Ice)'EM+{_t1iS'm)C(2]31Rk)?%9|0'R)/3H(5l̰|[)ra@:}5>.SD\%o&f 4<fX" E"^(BiB=dW~oC!MRh۴˗zgv~Pd;Z$'ԋVA ]`l$A (,$i 2Ě&[|SU Ȗwjjt+xr s"*, G W Y15:@ mI^ucϑ$(?TL(iXy~'`t&;-rxbK^09#O셵;%-PPegQP1m |Ӻ-X]7 ޾OT;cIz9xm4L9Ù3L< k!FXVshqYxq/0t }ӑO !{ 6Onhq<DHCZzZlFʲp8[36Qm6TشY. фӼ)nQNιtei&7h՘h;ỄǾ2"op !%/S7Z36tAky, Hx*sM3YZL9~< ::K*XqyV#@~T ѕ&u8%!ZM\eh;Pz{hى <=-E*~ʪD"oMirc_zܛ>bc̡zr.[</b7R>'l'VEu/GXo(B|?[hdG#De%`s&}Q9>Š.w fܕc1Hf׏Գ}M-V䭬Wl/͕sdm&5PT+fF;<H6~8{%#jZ~Yb=p$t4pB~Q$>\|69BLC~f{* qI [8Uh_ԒdZf;P/a4rCT6r|D>q$[޳,?(3{6f\m%4I4q,ZOVك3^8'TLC ?4gņcZ$HE%U 0lpO1pa|Y$o;VGmQ5LqDg$B!dRFbwkpFǰx|fN~pek_e̔- n )FI?qRl1sk1#)*5$É$4- mA:9b!̅_Iz ;h=y`|=@O^0L[7vi#f/"FN t:2#wou\!xE}^OSr0i%+AihCxVW; ٙ]S 2<̃\W9uuLY㛎ܸ87CXydW 5 ;Hs6省 d5g`ܲ:IrLy.N,ÐM@; C}nE]@8AIP.Et]ěAW|Z|5~7s'vAvB x[|dF3[n9/5P.S[fg7p䶗}qh?l0;(қhލ/دIc`Va7޶ 1z7P >!)jv( D5FD|6FPDz$p0 GD2Ώ tV )I&/㱫F߭.-y%(//XRi8BnIPDOroɻ,erQ;[;ˉ#("lEAYpCq0l1 VE26j@ (,)o<"$܆R5?ЙMn0ZgDL7RSoO{(6ӱ?+Gbv|=Ad]b JwsJ375g5_͹^Q|MRgm@$!Ez s H(x|l#p{XdZz=~=jg/GV*}[1HE#gT/hERZKPu|&"i=kSMN c*WKW؀)$#ݦ :jcy~ʲ%X3έ E,m3gunCT;@&oybr ]Y*E*`{΃H7hu m5EEXX2\7"Oo.)~4q)#TދMCGGq6NS:D( *Xʹ}ae>X_ 5A?ΜХO)'UwB̦vZei g6> v;3rf~8儌;;O>5]:Stul-qx鍊Q O3P׵PTcJWYM uk= 2iuhF(Ygqq OxR헠3XNJ/X堟b aB;$fV`;ݮhf"Fc X3=#6#HA²d,E:.Ĉ/RL oZg]h7m}Ͷ=Wfb8L^ ~CJ8ɮp4  ъ.z`s\% u31A.P%c0W1/+DKyDV9ƣ1z/M z.ݶ_.8MQPm%n/@]3؉fz; '>t t=]$n5"\?:X**9%wzXpxs![Hu)nDMm{KEeea/ereyT^Cg?G>C|$18yX^?Bx;?Ms"r!c㧣Hsh"GB8f'b ]~^$9 S:ygHZD>QٸVŵ#NNȢD0+"v-sʥKM8 S&?к)MbS^6*,teS((w QW<|? ܍S4diu>1LvhqBt:>q3-*~H%S3d\EvuNung=b?1NZ/A GX`O;s7N\y&rWR~Wҡ`fG3vw.w.S j;vG_Rˀ[visF{ b">({"Lݔb)@sǰ<|LK5IK3pJKgldO a0ޤOQi%qgj.Q;VtOvi&>vނ81a%g( rZ<i笅Y_V#IƠ@D=}aw~x?Ԋ})8CHk/38NR` (X!wsH/FS!u(HJMA̶2~Je뻑/)µµ_A9y,d8yG ,&-@:f0_])lJYRV NI&rwgk51 ݃\Q&xBg1m//ۨ"2Ii6QZ5Y&t/gHM =uJZD6[OCm"YjO߀HAax(;B n~]'o jTǷhJB3!!wc\}efj!cUDv`Q]u.o)Ԏ-Ca Hѫ wQ81ݎ_D;jlھ ^QX=N90h*L&D{re,G",|*{@ݳ3>޸D>vu[xft^?/_̼ES67:Ċyp|Jm }?1)M!13=WUFװY"O/bAK|zR'Z/ jέ"Q\NPͣh+|{{U 9߼|/3ٔ䉕dmݫE{ZegQWsvaGJPV),}󸖡LX\m e|ןA'`l,ؔWU׷%0dz`tcN7O\raV7}G֤/)܈Q#_ֹ\0ڛ-ԫ.+!e9.|Jpr }`V6Z!wm+e+V;G{\zluVtlHy5 L+uVY)顁,`B6'(:ax%fs'Vmh1~0lF\} 5DBR u$xF/U(N;;xi";<[nC lj0rJp5c:1hDdw/%CM7pAOyΪLsJQ2Xт¾P1.s5>RJљT7vRG:EфE h-$Qb@"6=̚2};%n >0̈́JL9Os!r7p N Vð\RUb"81~TN N<\(gth߁\Ե5l rÆhXb2?R Mv 侢ڸ=Ez n[TwC$ w 7,[C oAArR|~}HW4rbkU/ Ë'uʉE7O.Voksmɬ}r׀௰Vu HlQZ8S.BVAwe{MK{65Ifʁ%J >xK'cP@MڥaJkj54EV򄂉{:65.YJvاr$$/*ts~Swlyٝw#+s|#\v^imƙg7Bxr.l<]&괮\3sĖacC=7sWTB 5&xv=>}MӍ tȾu ~W^bVwr=净s >4"@6%P`H|`BRXVApIV0b9$(-a6b7BGO0wPKh`VzA bX\Q&zH15J[J\V"IsV|f}Pqtt1FGQȅWˡ!_Yfo&uST Z)p`"2Р 1Zk{!̴(>M^geX}H?@>)*q֜i1ZjˎT(h枃fj.%Ȁq]<ӌ3 .ZZ- u2" I8ψnMi ضS2g웛m_!JI _k c<*GCdR'uItD_%E`ܓ|Ki^lE[5 jڣf#}hh"A{,_o&ڀP~M>(.Me,; d]C:$wriIeey*XbWM͇TTAB͂9+ l2jyKJi+㧌XM$;!LFg]ݠv!%Sqi)\I/(Unz;-t=sd-Wwy3gZLѕ(\i7pX7}6o״?~+,@Is4%1![/wP_gSp*ޜ SIm'R ^u|%,xŀ+QMH~2 _@KF$B <Óa4/sTqo@ u?kRR ElKq \<`@Gz90]-x_Xv0GNC ^*A? 92HŹauv֪tk l9CE b2!źw5˝; $vǚ]`eH`fHy3Pt}[ G0|p;6#V;gϽkG?=aJν~ !G쟵1fN|K|V2azfWN;Wy}XqFUɞ;PHJLt?l{Z[kA 4OyXz.S@yٷ=&d_*EAFDB=U'IdUj_&U,e3ԁzZ3m޺K\nȠtU ]$s^}Y5rREWh6V]ގ䡜r=@_E2>r\ۄ UAe+`s4H+s`C8)$Ep'x@UxˉvC0+' zxPu>D̾Ə'׈v]N:un,.q䷶sbm(ikq8cu]v`A.o](dHˈiwG=2J%&X0:HHkQ<2ԀgPbCGBc=PQ剐Gw'.ިF+/ ~>gWc;IiDQ~ a؊6Ki۝wҁ'/$[Qx "pWSY^vzrKX;]*$}H QeT!d19tL@lr,'iy_ #ϩ; wRcSyDwϤw{أH|`-Trin p#ô! O.Ҽx+ Q^:ոii49C5Ol2KO=9alZex͝CT0h\H>fcmC mo\Eή8b51ij7AT%Mr3x2(a) TxMuLĸ)vQ>E͑~Ad?"a c50l:6po 'O OжƒZ))Q6n#^)50t^|d R$دߖw/ꥣ#lZ5@v:+I>}f!𤋶#$N[iG>tQiݤK2^lwi[ ]sLWB"x>7W}=ө4oG,"Cbڎÿ|Wc&jF!yކzО$CCR X곊s`s- %P93R 6NzłBi:>S5iyA\~M YWwR9)E}f$R0S5Fs9gA,,IF1SH}Y{—x`!B93ǬT?hPUTIPDHV'M"cv̽6WE-y:m6Hᵌ;J741;oHVVjFdd|TK'0ݴ:wBLEX~G52*MuC+ [g*+^b&cuPyrv{w{&8Oj,rP:wX'X۫VKr5z(j}AA1tk=OXOŹ%w!JĆʏU6e+w)h`Z$yIY{7«Cxz?, xz#Ԉ:u_z&H?x nEK- 45_3 _< ԮƄ#w"Af1KoWO&Mݛ`ڂƾ\IuΌzu#8N+UK}X<$Ы4e!F,|hKuϥ FO&wi'j^ %աB;V@6E(%Bsk]^۽:RGzX>}&iuN 3Si0o!)Yd}LAZ_ I>>]5Qlъ/5 +(J~ c+^5 Zu⿋G8 H8D&uw A$Q]ecpodFR`zŝu)1@٫Ƅ~g,C;K%kToH\:]5+:unZ}Bԃx2҃MDd[$֣)CnN"vȄ_<ԋݫ 'kfVTV#))(NYcZ &:4k.|, ϶5mG-1yLZ^Bj!?TIZ(Rpe>up?n$fYAu)?=2~v7'+J\t`82Mð~y=2|=C]Sb1w Q646zAdcVSvo?g2z8mA>raj?e@U]5Sҽ,&f%W@" vS{*[S;^Tcz[N6Ӏrʞܞz vz [آ$.,mfӁ\IJOrz $q>āӵm:L6_}ẺJh[jQ aD;BpP} p'`j$-HdHW;$N tַ@s=!8eÄ477%.oy` c gڟzƷCc]!ܺx-̎OBegy~u IQm1 7Wuv/)M~iBݙ-DOn,8/:Ѱ7 Nieya!Sz]ҝeG27Lwaf˺@{ t@Vw8THHSP9ZF :1?M>; 46RФ\n ¨' tτhll;AC3Feΐ ~ќtɕ Q˿S(͏1`/2}qSMpp&x6獻OoM<B뼹g{î3|ܪRC#>~ ]rmsQAwu6<~ZEs[p2'1"byG 'ŀOy __F8ݬmXxU x(IfQ(]r&Wqغq廛hc?lx%8l%=}ެp5s1Y{æ'Rfn+u@D#>Q=55 Lotm֫ePQ}j LlhSoT(mh&H& ߶M^gK.w[:󋚎^c¹8`wARb-$7z!5 ke&M.[,_ ިFS6F΃_ fZr#-x}wIi$i%D`Է0U{r$JR'cX=XFm緩e=>sQhB4: 2p_h!b%0DB<*BRVkN}z7il>fʆiv>TiՙO:Kc y1ʞd4t]pW^i ē豰" n;R ̌—3q @ٯy@F*H$UͳkjIJ׌/cl50*B}q~8Ԫd ף峧Cվغ!]dh.ءߒk3Buٮ0ܡyM<C. =Q R+mQ)ppiG{*s B-nvJY YAHYJ&Gc,1He8.'h<f6Lmb7*˵c u2k5kY5dO@H黹`g{s=Rf4Pغ JL%wLmgFay?/zךZMn_Ӥ e>k]J;:jѤ~3/:F}BRq1ɑ{/MDj:޻;JʜR9H?G6/u3A -U06nvQC8d4&Ā"]hYa^f"m|u#;hlU"ɧZekaU3P~#_|<=p}.EX~?4s2[7,nCP&aGT8~UGF Q$Q^(hJq!1+Ѱ4\6鎔J\rLN3H&a.ɒ<@ +U 5/- I> ({VȲ;_N8\HN4A{a6fwrqx|񈤰?W`5.{ſbeӟ,iGh>sC%攉*X~AcR04r!ثLj"|8q}~4~=#9HyH*L$mFNw+WwPp lDky32[)َnZx8☦R_(D"kMXt6jgX?\ )f*@FEݒ1df2LL8QLM4o^tQhF{%:M\y&vq=h#b܃LEP#Pp&kIh3aI47Q|Anh2V>Mq&/F{3פl+kGIL )U^Aѷ5ĕ0* y#:~O+m(azd/}S z=$ %Sap1wn5"޲2E6Y=S= ߵ??Pα雾lj?^_J=ZeLپ^~2XUH6LX20o݊DYeTNܷ2#lVi>oоuIZ<><NWI\xO:BaR@ P$I7DߴF揪bDZA4a٩j]̄ YZ /mN? h 5Z8>#AL4n(us.g{ѡ>: ?(~m"7;z;/#޹fц@Uئ,]!J; 5NcT)rMr/ZsBtfpVM ~ -Q[7tmsiV0XaZ!:%*Gda6:kSiŸվZY=YqM ^+:NXO!7ܒmelExg08Rr,V[ÓñDcІ—_ K2>:Q";]ZgľRGbI^iFiwA%EIj1?z}CU1=,RJHI20Z0/0:&ZO2^FK!31Rr! jJB7?@;DHfD _3_Dlu9&u;^b޾}A2g?ș,hV x8X2ܵЂ$O*kבo8[s5U5FLnw6)t*BdM'="<í1Z|~krX^D%sIW礁o9mwdҞe&܏3:S"W 6~E YxA7יF \"rJ݊ *]׵9O]$ϊ"L&+3JN d^c9;[ThZc} ZYK;hvM2XB3oH{Ҡ,60jXnJ|뷏4J?j? jVZ .Y2u7ֳD1a ½GCRkQlJ7Sə(0%+boDWmZdH+jaMMm5-{Oj. HqSxlD(7g`K) |za`=W'r~;@W -}kqUe1Qct:PqDUZЈEۏot:*vR_$ 6xmm_ ]F|K:"|ߴw(3QtuHUG, bmΉbLi0 qÓSܝzw9@)qzL$ĵ`¤7 k`BY(U}ˊa`vnyۀv%lOZAV-u`a*{<ˆ+:pxfi-)8եaza9I58=[ݙsԡBs29?kXpj챬~D ڒceS t#x4zpCyvU$z sZ=j6C.}hu+v)SP~XmۧS۪yJo (3)$xnfL d81b:a{329&#m5Qz d62 vVsxC0I@/8 [|@sdv6>%kb48(tE)?ɜȮKG`૲ " vp͘1m {{R f qdMe ;rÊiMA !Cp8H$i@Mc|9؞ 1cI%кv\cUNb^|뭿EѝZzM*g'׶BI]V/>xPv|n>b\M V)rzV-~&dʁl3<#v^b@/ib IͷS~!3(G>&VdgLj!6|&s}g`י"S\W\jdC)Ґm+ĜE܍@n,ŀ|{'. FOg"kUHg;^mr8BZN9GNkERj{C/8̣#&7yI]ME{|yHUn99߮7~.Hp[4!1NP52"2zn #¯vEנVbv\v!ϿC XA׽E$R)3i pjgMǚbHaWEulz$7일ROY ]2HMƇ,l) !^P7eu~RX3[gXDSh s^H>50!.>d]* !/v [3:| yj爑A9DYQ"ͥj<;_Ϻ"E绽>ktqA?ͺ5S!YoKbI8Ru'p kDbX7Ÿ*Tk-Ť 5/|aouLJ"jITdgQPC4gV yi&vVBwth^?yZɨj2f#w2VmK$p@79%mVLr ͑X?s/68֭p< m| mY/(*:a=[A}'pt5xDÚFg`qb7L)Z֒%X.bL[vUmJ?\ pF[YMlȨ>(gx:):w6W6Yn4> C߼Z2ȳG61a^QC3&i`5$հ?lpb!CDZafKVu鄷=w _/0rb376vJ0Q&SKxjo\Ӌ(@Wq' Y!6TtxBJG%Hq*\~4$m,-G!n`8`a8WPʖ fjQUy9mʂNs+0:-y$FPSǧe4 Pr o fVuugkg5 s8}**(fTkY;L;01CGX}$ߪ9^'F{UU@r5G 5iGqmm(~5&Vp3<tj˅96wjٵ@*]&c^aܵz2˿J`5 c c4$1)%Gګ"<ޤ7}_>Ðw\<92\@Ѳ{r Hr(Q eqYwp4H .J'i h4N;g.et{^ͥλ`\=헡= ߝˇp0-) wAا2?B+#l/2l1wϟ,{*!%,Q>} tF,Ń KbmISvIt浩#pW2o6'Jџ3 7_띤Õ )ue Ys0 ` FT`lh#H5:!$Vz&|WFAk⟳DYSΪZBYVUl=: .8a'=Ip錵J L ,}P\|S%!;Eⶀq&Ҋ(vg.SW~~r#^hS?ߣaxN,f#]Fr ~dcuSA*B ] _pKXסsesd:^APq2ɡDžFg,]ُ 'V6=窩e| /8 30ڀȺZπ;$ 1.3MFGocCp)$ڷ1vAFF>&F7 l9~+E׍izt<}H/ظiݾ8<> GoC`H8ULpλi?V0'&{IZ4:>@~|v/fX:&'|FRAd*26{e@ᮅȚ ER|\"tmKogWo'Ay/^BQ'Mm\t3Y/*Ig(}Rpfu*ɸZDXͺ lzp kY׸LA3.kw]*A51찊/4&[DR>s/xen]򘩻ĿPܿO6]E5>xK cv񈒄t61YŲP_[۔ k0"rP݃#|,)e[ѤТ0[0tm+^YNIY6m>85Wh?Qj/veЕ[EJbsr!Ds\&Ecb&ج Qi6I_[~11j^[>bI~{Od$"S\e6Nq b*)`#}>edz5$qxؠE綊 ˔\sSE)*=">:5a%|k_ T3Ъ/JR 6CNq +OXDlRBR-["gWc>;-] Nh੶z(dnN Iٍv&= #KӸ\MѴ`'HԈg  r 'Jd3p|Pzϣ%-$:a`AcL:4Ji] M a!\7Z%\Q3aTיdۓﵺƹ5Ͼ&r \^$V7H\}G!5}W bw V-e)]3Fq*u[OI5eE4jhW|kjmo|m Yl8icEeDfA.>r _& }iL㚘L_%k/"k7-ߣ3 bDc(}@D멵r+9~ Z9[jTI8 CD\k.\꾿m5\wޫ%A )8u g VmZ>@eiB P&'Z1fRW&V'䒮uc΍ի,myMDjЃmt~'K,![Oz=V„N"/gU 8X" y?$?~N`Z,ND޸#tGڼC)J9ە(,TјܱڒL{buX ]JꩂSþrǪ@1NGꏎ.!X/scR#ElCzƒY'QaqQ]AZ,O@p}<>v#ĩjm)EɊ2˳T&B Wr"B مaO@+{g.;h} mC1 $=eVwԉ[`% ԫ(S"Ɨ%eS3*v8ar4fi> z)aL˺#it]1z $jK3HgZl{(5P#K8~2ݚ'5 2i EcĚĵ{'PnlhiQꢝy"xW ɑl*I"wИE$Qe9i'w.klR9l}-"7ǠXv-i%PwUʭf3[:0w{ӑ6r^p)<|]A=RgUebݐkt*B=X9On*dJ*k=1yrqKeU d E$b\^e(@]z7*pSБ7fqsC־C >ZgmP2#2Mh'7"I9b_Cx $IeOl@9J6QNKvk_ YN}%/L^_Hlv:*yTL0Φvѿ667LsPz5,(luϡ8z ^%m(!`-X* &"4"I<]~_jm |&qp j;E|iX/3R>ÛUstKڝ P=Ms_bJ+f"f;kJr;7]6"vwX??̍ؿ-e/|hCj!st£e  MJ fp5B?KF%J|aRkU()=Sq #^5i+[ؔq-4]$3|v‘ Fk9o5㤂!Քc^ahг#(E=B԰䗍TˍDI?W]oEBLC ,/Nx @>2&yQ[E jipGU?V 㓻^AĠ%GW2|~"x}<8PGhXهJWd`83׵ne0PySB|Ry*'p zC7?%QGI%JF-~@\S& w{EׄvKjvOl'HSےi\V 4M 3/-[N+ ݐ*h*ܪ(_ɍ~t2 )~z+F)h3=#e ۀyuMȧ.zUPfn;ɓ~S15Ayl4x'I6Q7]c+刖cfZKUG ?Kq̵fCإ f]J@X4IZ'H Y6U)EDo? FV1ī/j~c\Lƪ'qu<~鰙#%s86}"Ȯa^ 1Љ.U8`jWUx#bΪ3XayZ5KO؀`bg]_d{gWќ}-<(3#~7пkN6#sQZCgcۋMh+˓I6!G 7+?7FLG)geA74xGq^K-_[Vx+J:dКBce,jTU˿Hbrtxʈu5¥SNtE eTU"Ӊ <6$!$P 8qmN7j1]N}=1NOSvs㤓]?pU왘OAiX}\.Zv 28u/$:UPHRdzQPɐcsWq#$GGp:yp9﾿ |`(v∋)ĚvN556?uߊz@8gAݳ /0ٚMR"&D;M#~eRK:$ԗy`-bJ#b" -t8ǎL& kyYâ+^.0;u&T91sM,Ѧ EKo aj\WI_}d*{&/C穃ꌇK!WDƌĵvqsUUM#*0 7ۿIpÅ4Q}!ܾf\sA<zP_}YTUf:~J8$UvSȺA4^B'WV齲aQjq:| a_0%5M#9J>x|a#6Zb!}ݰ|׆>F|?,}4$a\c'1տRӵe@~O/@pn#aON f\kʊn*RAҖ 摞 kݴy>|6?6||=bSw\іj'yɄx f~d|[x )71D|RdMƆcu"JyšJ[BNJ7ت_N?F.@T7uE:A &s}z/蒞h} i[KO=[?J|o8gݣv6DMCbJ 4Shx8y._mjIu!6PEVkFZPS+Y?Siy"/I ȶK "в֊TBfRupA:7L7IXUhi9~a;` qݸ/4)OܑͮPg,?Aj^զmV(E>pE8pY7UCgZ_vpR =\ڀGL.O{Izȹ|1iW?MB\qs6tpz6\E@iR+`ӏ{, LGEmNeaS%Kc#xF ѳNLU !D7/29AJ).TVyNl`mcN_iYKjiD9&R)~귱U!SRFehʉ B4KadL1fnbXջh-O_MBI /U%$սoe(iU6GP5fa,ɎZ}-D/ Dx#y@S02u)4oZe𚵔!cxtEsЌ G2!\p&f(TVKi*w\i!+:ꢳeSHbl . H)h?LD 3YK:,V%UEŁQ 0$u97+P Fpr2_}&0G5Xi#7J[WD̮>k2@3wEst̛HvZ+= Mh\9(HC2ThDe3\dܒPIF; *Hdm=KAW=N&Y{ ϨCm>w\}Y~t(+pY5G@x0k) l2y de(`bs8YEA|Pf8}嚂JEDB%X;8u4\)K8$m\RS(xI| &*|յJE~}}_᡼-K@\ ֵ[=ȅ5yi~=;-I v;j#ҋp_Ԩ!DɓSw!J4(KIz[T|j?yunA[P#zWn`[I&̚\b+=dnKƵqRt)W^$Sm}]Ⱡgvn3h^ Vl`h}׼hju"],f@-v R7\@O@F>Nx:i~>ڸ84l Ð~cǀ :MQӝEِAKAivIח!?7ƬvV1* 0&?9\QS7^BЪV=9z pLl6C MVĀdaH쉎M #<Jl1r!mԑ,A5E& uC$:i_^5dž>,hF` YKPۂDDQf*vE⏊oϤLt e~;V5`B@O;~fsn73J\!{RU~t~eYZ3׎Tft@,BkJSF~L#ܺ2I'5~:lVńɍ[G q\fMǢ!QtA}+ GgHNC\۬<+qOr#9E@`mz|'IYQu7 O/CW{tg[B;iVX'a{[~bR s,ՙOTod NC̣83uÉG>Iф+Buf7gE 4M>St9jf-0Q}{vpgoB!}Mc!oIrOiw]Ц8~KzǮpYAͽ\^Gn!4 ơ&O {^iŽDڦxd`C^sYWBs QؕжfRuĺӇ??p;^on F;VQgs@9o:2%8c%Lre)[7wR吝;wE58r_\>CY2uF+J.+%hϒ[^=C;I{5+^l=|NmZw`t^~F/QPϤrL]/V %4Yճc1[CݏڻwF/+IVeOf]:1KE&ԫ~͋p^ĊBSL7] s|5 Ԛo;޺w^ɉNu~m&r l :UeLT6c ?FyBfd";;wk|N6e0~;>26:S0 LVjп"!FzەRJEas*vBBe=ا ҏmIei GQ!'Y52 \IQ 9Pj.R Ì5 ^.b$BVL%c= R_m My4P9nƜa!-1g/U2˘/LapV?%c>g3FDW3Yw`//^? ?8'[wx$KԳETs<@}WLNֵKA,7UDMeGh6&9e>-`"sG'n7-P$\"j3P\@]A)V!p(OEjzWDSj%_-tݒc^q1%*h l^pG̗C:b.8h~dcp_"ݮ +Y92"F{?܀l$ܗ![Ka,8R9NNpZi{9d LfQRQ]$;:r v:ΉZE~]#}jl xp㔡>Q3#Jԩ1Dq|;Plz#oKfymx:E6a^4%+2z5l瘶MxJK)7:ӉD4Vu6ߡ%df \T `ڭE\h3^3&mv:sMZ6ڞ6ԫTμJń; `6%DG("[bDlEΓݎ}^_۹SVVx>16gorOjviGӋۧjSeb08.\TqcZH8ӧȝ& `Er(Ѥ?C1#zTJML|in{ܻR^J[f5Doi"du4t{AH6CMzDrna `1KcY{KFu߷Y`Io-J\;y6f ܆HGTeu2d?2}s2Z ؑmܖr3ځ6A4Bo_d (( Ǿ{#HՂfYwT XGPװL|"ڝk[tj:׍#osC 'eԟ *HKhZwۦ5rWf@ >54xmbgz  9ȲK2j5#1Ztcmy;˗K eZVP7r3tL@K\ms7VcmV"w0RH|6e FSQ^n@?m 2rIV/-:$A;Q3QIV|(Pf&glf7 . kvALqvf_Jqޟӟ3-Vv"G.v8J^,VB GR #,-=tzR/cjHWc+ِW L  ^/Li[WeZel*~]nYܘ: t ``YSF 0xX~sewOg0'vK󒝧 @B`Z\ M QDI3*+Xle3#y'˄OF gMaAc]e6(?oTVzŶM_@0>O24T&W3˔2W8V҈xV&,42 ƚs Rr8e;zc~sP. {ml4~ {]_sg$G:W}7&9=1[ٙl!9m6cCjP+qHp{KiBJgņE̫ S`V6NBk . V 0sGV >Bc'OL^󑫥"t6by#{ClIt97$ҷ9nA"?N3.0-#X>v|Ar ݮXKS=hAcL_Ft%º8:g ͉|rwxqgBPYwcvT~BZ` a`0n0ͣOo+PIή43 b ¥El)8 w(-".W}ds?1w`͹S>Ԡ5-z%澽% ळ2{nsoܺF J2 KO,Iy@xfyĢU ay-t)wg4Cxtt*iGHWTfS#rm`KБHp nx;=Ru:%n b-Fދqո"D)tɋAz=k|ݬU-F;()W~"Ͱ!RUtO%2Vch$@,/TXEs{0ajC(X]Th_5]B:wy3e1<7h3%Hojh1lM(ɕd 75J'if11K}xUqy>ODrk8Ze7Q[?g= mMɭ00~d|.7!<̦.͎;|$:bvƞ%00 ܆ή14s d$f ch X[>7T &E,g`  vjdv׿q}U% z|x:"d!JtP7D[hw3|Epw4l XIpvzbov}i@+[uk- ]nFvdx%sΑw)OQꓶE`ώ,; ^:`0tP{OcCZ͛x4(sM[l,9?зM<h~VNi$`ES9uFmfѳh$RA!"2>t ҘkS`j[uHg<*%?T'.u87.W-Dy~[=pmHFr7j =fi\s 9wlY#l W' \H ~e6 Ue"WB٬fvjGrK^'+6-|ܓUJmȯ/&UbQ} T 5CnGbCVi :N%j\26LqmV '36D[I,䊉)[󵤁7@++y:/3\@w08d,+&w,a;# d2=3_ njKn}kgi-:8"AzSHesեX. 'vied%-xTڈ7TǤ%)hW<Ήbj"^ʱƲXՎbjX[ZâƘ[`aEӭFvDT[ӊܬ )AWR%% WFsXnl}[нX{qeHGey>Ѡ$uzRM-RR@ ΀I 6rcx Fbbpӊ` a׶KG.C/%Jr¸C3Fvc :立x"HB}0ET@LXǟ`C)Bludϒ2FhuCC{G߾`=z j5Siёh3[":WֳsL6i&shŤer'$\Hb`.M@ׇçOsMY .ch1)J'2?="VG}L -眝?˝[2slfd[ ׳qܧ6Q²weF^U>=)awÏ-?Paavud$O($JA; Kkls93AJ4~a.ZyOE}02)GA.Eiӭl g:M׳KnƊt _٧ 3nc'|lQ۷h=x`E!&ɼ=zȪƬ+$ 3 g0: h ݈bѤa\+e/ &>CPVZ0i{ҏKv˭>uR.~MbU0.yacd%&|eBK TE^eS@5 bvvAZ=\-|r{1LjپhNJ6xG; t8[cIHGhbSWƴDc O}1~P2xyu5'kyR,CVG{Zزy&xnogIcwj!i^mQEx2.HǯXI%{)v۽h3W̘P @-vЫhUa ڎH,9[LWő` BU @.x4̄L=+/q2p0| V&z%]H"eG·i\Wxw'Av\ mIkuJ&~ Z=M'xL s [,T|!P[9d;ѱJx_I܇ +2,̭xPMFԻM_$pfY.(ꍖa|M ty|(nϱv+Rd`Nz'Gз3(r\w"ND-/7(w|2xp&sX98ETܱ2c\ާE q|\ #ޛfosHm_wk}30e"7@+O (GSoʡM;3bd<&7#iQ;<0ޏÚɑڀh/=օ*&: _2%nt]FYИYvK*hzzZ%-qT\CtM^t+"%ępTn2>MLj7fXQ=}h QiLykC Y`IPUفj47{V:vᗩ@r;CFX._G~@!ܺycr!qld!1)\<<3\7o :[b}hn>;%сשyТ#^ 1.'7 f[GExpAQwGʿrE׬T@**|~<9ck{w+pۉ7tĄȱUapY#f):.?βRl+r;t_)\!/z+ L_v0#0Pqb傦,R?dSgL^̡Mgt6! `0yJze;ȟMWD x6TӂفkTWB7t\wʹW:oHOwg Tnpgq@G  0e_vp!wg#G6Ⱥ2AGd ѭ2STlĊgXm(ݻHygrotsl )G]aLqJ$K6~L=!Np#t|a&嬹tqp' ZC~`h3TZEezذ#eD1-TL;"_$]^r\,B/P5+)V|.3Lj'b<~ho+5Bc6RCO 䛸Mc0Qh:暝Ue* hx|C)BIgq$#/f`6v\wUV Mk$r"4՘^$1cr5ԻHV;)?.Ѫh Rik-YjX5y"R `L.E3$ogq; Ȇ[w--OL#!j `zGF 7xTQKibtՁq[etϚlO 岊/IJ9_7 $9D$szn20!+`fMAv-wY@E }0c˖6߹t9F+sklۤfa 88SK2wGoI.q>VPUh*)b-s8⑤ϭ"* Y w _V%hΥBvEНlÛw )909=ʆQ^=a8+s$mTQ)Uz;!\]AĄU~S u$S)YxqXC} N;%^2:J(1BͶh]J/W LrA1<ZUQ<Д ЛHYNJBa[O*Rz8N|mT?X^<Z# 䄃(yX -?8Xc=D6q*C!聸iۋ/BDE=b#n2N:uאi*"y=v,+s(9o>/AS`FʅgNTT_;:f(EVH_w~><6m9W;yI>u&i +dp}/lӼzԧTm)ݳțϵV4^k}oNhI04wjIӫʗߥڀk%͑kr䞻Wgⳬ{(SK_#sigoQp#%0D~̖ѿ2DrZ5VcZIJ[! az؊C b>7뙇] 읺 MfܘTw$&&ۿy7k&?R<ߴz֒TR^}EAS? Rѝؙmd4^(l~OJ ;*=h 1㒎#/ݙ7 =N%ٲ_ :&Rlc,Y?%Ԃ}*1Rm$'!_ӌfڜSGZKUdiwo1}?Pml0NJ>t+[ E]= 76 3JDUlvgyS߫׈ wK% 0j6XWqZvI!ȊJ B`$ݺH] Lz" 4ϻk~O|Ę#M:d9!՞8`&QT2_l8Bm &z@UviVVb'?N)y"eq29||FM7\H>][TF/߻??nܟo(#Pf{a72;Յ+d֘l! Z`ף?poT'1] \b^Nv<+ВIBu q|9,֙uKx֐\YeyfB33ˉHhNѬc*\g^!+o0ɡȔᙃ;f'_B*2=ڑ\"Oq $w1W*XyM>deCsb"dފ`@3뉈731"%<޸TAA :'DeE)mA1Ƹ}f?M w *`EXSG-˔obeY:@i,E; dMLW JFRC<.Bo8mf A'p P7T )qpFn %D5cݒ!cݒ 6+2Ž 4P!CΗ(8'_{sd탹PFXx9";P݂fq:BQDw)gY⃗idunDx< +;L6ƕ)w╚xnO2uV'@Gnj @/Pvh%Aԍv}pD@yO V|G.tYDX~QĽ1h1nf@id#)(]z@&7By_,z01 {:k K @+'hNS=Nȵwdfe0nj~6kR(*{37˘#bHdM(ʀnHV2!}E==ݡ $,ӭP3R*^jOyc*im}@+ V4[ݭz'rg@J\a14Vk'TmP ("] ¤h,S ԥ'Ly|Q_ɨZL)eGcm~R]Y~˕h74}oPR_nq Ø++hp5svH0Ze9XP+=(@>S D b A)um7xG/΢3:egF1A I sO0ԥh筛n+չ>F>F埒p8IJHh;#;"Dƈcur'pZ'i!KF4S"L>&gVS啅ۙt%;gX27ҬYz桷֝2^(*Lrlm)Fv'X!$տ0dj8)I$DԨ?Xd.\-n49 YbF?ZAp/yEW]\tq'5NO7Eu1^#"./gg{ՖO ‾EsL7qkQERт!T8.Wi3В0Nh\Kh?xmئlSɴ,Eh;l}?=?k@y (/`nƤ6W|aЈ>6-M?Gw->/cciνQo4{ 1u&Ew*WԭҶN8̷DЅY(4Eק]w nce"&+y YEfimw#y5':OxM*sQhy2QΖC_VZщj Hx˯$I_UJs 9e1y77Q`nu2ѨV6OZ<]b,>`+$*z9`![O %>LY&% t#T񶫜8h{g2|nksc]aVFNi8'e( tKFYfv X=Jop)ȚBV`?f^~N t[3qg%VP}bu3C5!e#栻]e*in\|.sdc4 s VZp@y0 f5 nrWd`-D PA ϞO/sl߫ZF%Upgj:VYb'Oz"TtXA7i 9&ƊV9B/{9e Vr/sԍ=#sj{;]I+3UȅrwZ]%gQPZ\n*eWs>)ӧ_7@;@cYp-!"Ͳg?n鴂a -,=G>"spӐK19-#9}<1\E<ӿÙ8@)B,FG-6\9Bg3ǀ(Iml޾m!mYOy5ސf)իid֌kDaAqǘnӮk48!^- oVǿ?CД =j`L \){ɻyMK}\א?Az,aE6 AR&{/Td~}P~D CuTul`Q`V_;+ł"ts">^jm3%+e I 6RTw=/{Q'TQJq;,6)wlQM[;9 LM3tp^F/G O)}̐gcz5~-Ξs\_OI5Wg[|1eiMERӨ,IF>ܧHv *lb$'+N[f ag+b Fi*%Aof跮|eYo,دС꘩9&A `KQS331g6a֒h\Lҥ04,Haڵ(7 廎P4߀S;QefiC CM*$$[IIќAvY*&J?Y:\I[ÂN'iv'Jԋ_4߇<ƃa4y_qrY-_ЇnF>mN5 ocEgu˸>cVܳ]3B:s,!j:ɧʏ|*Xl>HS0I;MDtBfA&XzɂWV$SW;XR?K4fn"BhjL)Gk*̆@,,iK͎ 4&'JF J{e2 I/tFL_jR[4|򰉪^#d ޫ)\_פ,f u ťA%gC 'ich^ U՛׬tC6Rַcv$5v&l3|RՈuGU5S0`S ]7P3~0%"yi]ܙpX=m!5^m 3Wu˝NKtdMNgոT_NcO+Q>z$S{ٝ!?bK7_[cJ8Ns @w 5Tg=?e] <䐤XصCMcRi=@u_`WZFכɐ0o mkҷo֣R!! `)zMB6J u*zi#W.6ʆ | !"D3Z8Ww6|N'[N|[Uj*ĕ $9pƐ‡ֻR1S^Mv`@zOXUw~hiZfx3vu0G1F@&6|s;jۉP6׾cB'Z9'ER'l5J D8J=+z+:xRF |׬(֥ƪ@9p8ߓpo[I".XaaDdE'0rD=l>>M 9uSK#:&LL=kpnqOhV]Q?Eq?7NN]7H"oRjvQO`IE^Ow.rz:6-;]:ji)뀯&~%zX&|RYZ+A-',%H N%EcbOJGeS{w j~4 FWgQX:3ս.]xaN]9@> b(({T !YeoE iﺙxԻutLLo_B+[z'&?=v]*5"NO4r E*,W䌰di (D%-e, W`͘SL.܅ `b\ ,AKEYU6s jub.^r3pnˋfX~ 0X0BNX "=crOq"PK`QN;7"K/iy囒 z'9V9*f=Z8Oqp`(0dym5oC>Ɛm6] p4}L N&(ٰvz\v.mPlL1MI߬F[펒hlEE\t rRtfG)F0%M'el DŌn߾]hv|<X_[I]fE?}[p1ŏ-]gXyZf ckB|I[P̲nD qa(dQ{G.nl&O-6w jmϕ7~΍+rv;+<$pLKti0ts FWrv+^r2MklND%}=M^j ?;0ߤ+ѯ䊺i]@H<*-26;y41ҹ_x9qxܫ*D!hi|PnKѓ+4?AƍĠ6ijV,rWdwi PQ`c7hNh9&pn8iy]J!xdm5c){ap/s j?h8 J"k3 Bykr8 yGdJ$ަb}6[5[*MəC1 ~,PBs+-\JPT -O8l3SLDо_$Anmf#B%Hwܸ8ʫC­W"}{{,ͲK݃B =me% s~s] t.h/2iҤ^ơp^ !xqUe=PW>-[VJ`4lVL谄no~lhW[3+/]lGDÊ~+ ZoDʂS}7֬{Ao{&FٜäE{cNEPIV6\z3n>`&'TȦg)Sc-dDZ@ `Yp72;@Hj9(&\1SOJTEQkDJ^g}q, |6p}[R_ KksN7ڏ-JWe%/޶vo]IYrt3j-/%)}'ҢLLng ")a?Spn-ڮ %T5ZB,u[^ӌ2~b@+,R~Հ6U+;ϙE/.GLD6E*dܨ[G7'śVۗҀ^ջwA6?8kBrv >isly:oѿ j3rAစcbCMXeF.:GV6rTM`kYn̾{w̦> INR6Q zj2tƕ"q%#^ȬdNs}MgSWOeEݏ iY-XF7 F F<DGx"M=5dTsAu6:ciCXRe+^ε{oqPj}:l< Fר?w I 9ipW:R QDgJ{. +NC̶ElplҝF/>0{-X. ~aӑ9xbz17WVc_Յ)_`/*mΐ3_zƽfelhlpkk{҇INxd7YO8gVjrn0wدU(>ן KZHF`P$Q& "MQ\O)$ 09W !*=c:D(x n"FQN5@bbf^Mǂ)B4eSZ%.'X/ZTCSS]^ppwQ[.ƉZS {)y{霕-s7y!ŧME֥*C*{&Utr\|^@~`( HC bu^sq?Bx2pmxu 8pLk 4X@tqKU ٟmR4?:P'_RmB~Th+L,ǀ Ife!eA \ͺ*" Jlg!K=-ZP5܃ d xP'^f!.Ng8_MT_MBીJc\;͎wfYT,8p0zFT fN)Dx(4^8hJTpX\^Vn/dv.(c+TKo~x\SHEf$ , XÎ cQ\j̓oV֧oSe:lV%;ҝA '/r -53 8MR+MӘ>4j\)6'h;ah$Nr*%_nihNd`6iڻG\r rV+Y@Ri_%GVx>=?u͡[ p3 q~P$IؼKEv|{ʷ5K|Ním23nn+K<.fa~wSsޞWz1aԜpZc۸XK *91Ƌ>WfsmQ8} =\V7#S4Og=x76jb 5sq* >,Z\~|-D r56HJG'XlC9:O*_Yso z*Ѧ(gpm' Y;?N7 1h |( /,/𩶆B@YQJRB++'< :>7;LvC$ր3] |O'r-UXaʹx.nT;FRauզc, z\ Z(c9KwT‡qb"li 2hl[(v߭VZEYPbl~gLjZ0Z'  8RM_.ui';w&RFH˰D8Z0>S{ؓb*ëΑ7%֢C y<y1Hra7l QDiXY/MaVګV$B$Ņ .tOquE^wNo|]];#^ͣ# UT|y"ΐ:Wl,;Ol6:>.MXSQR/)_㯗~ԫg|Rю5 h{~$CݟR=i./}-]Asr8ϋG9]5 ElJ5䅿3 #!-<fVLy s+)+7ACH431] 0 C9[FB' Q+ƽvhߏrʯ+*Q3SJ *ZZGcq:oz웺DjEΘ3' ]=wXH!&j/Qq3K/<= Ӎ8_6DnV E}XicC3R?8b}`QLϼxY 6Yo[{v]L%-wxQ0(h!:9|N9\FUFC%niGӷ7xQ5T0*%Z LYy hG50lv eăG1Q#뀦u>Xh<6i:F &bu%,֐k3J /|H֮h.QጉF\ZǏh5ZQWp u|=AÊxw;m=X'^#r& 0c٭.$p7m{eq]:/Q"SflbH/-!2\gH@8=ޗ T{w}}%aEeDgzdDXofkHie31U7Ďt *7IG`' Sxh@lC+UpXhkib&u6XJAWi8P@͑z̤^jJ+5+ E@_>"AZj,`uAaJC"o|<74/0H~㚩U>=1H1L|51/ٚ/$XY2RBwq}GY+*dkwyVo=c)poKBD6sb H3j^͠]7USmg>Vͷ3D5.pfL@iRIX|C#] "d9H2| Wxghs]uj0ȗ a@/-sGוĥ&ԏStV"U;gPt:\ǧE> Mx>$O#0Rc=a6ĭb9T8FybvbGqа7Fb[|$|Zp]Yn2L 2!9G 2a[N5L4 |8 ֭|"-U x1be<Zcj;CNv:=SMa#B(̭!/K_=zbg+T:Mlm w.cVovʹnYW) /jT68xL0Z n/_68]I[!ϓ!]/ZZPWE) `7وy[$?n_*4pF''iMo`ߏLBZ W+ N x#٥I_nm8`br\ dcK3]Z0>>xjyo4sѪ`0iF59#V[>%cׂ̘,yF~S{.ғ1 (Aj\e%k(9m i#$Zսcevt(_ZiE6]ŽTe6f@XM)O9P!]VJZ@_)ubɳlcPzQ?c1&^qy?> K`)DLaI VYeb8Yc!M^)-dwtzwT|;-?FT7QTvߵ G1M? Pb lJZ is0]1ng;*b ;%z}̽'s6j>…Ȕt"$ 0ze8+Nx:x>5; bh #Ώg$ + Wy~txmz`"w{;W0 > "of/0V}4T.^IMr=0S,lku.֕䝂3#obITY)2&6e IE5 MjJql=n9GUk4@cf[8c5Q\P0/զ= b4qKPa[6=Ү]KC(&+ F(X0uI + @Fq 70hֶdd} ނ ia/AK5+G_*:֪)J~ kgC3)7?u=gX0ّ[k$003D=np`mZnje=OF\i3\MA&8nu+/z*Uȶ\"[14 ]BXdD"<ҦSf8C kI蔔B(ы׏sqIXA%DUQhHO}8)[JFY>6h]'7ӣ!Y}[f?w-@nQ(B2@i'3҆ ;w59 "gY+;Rk;_Piv ڠソٹ3L d"vQQuC%6w{".L Մ9p/JF\we5$kcNגLC @1x'U,&)잨L b6:N\"mDq5*@mVňdIS,m[jЈh ދ 'ٟ|KSF&2!/uyLeʝUTQVD5,#fݿtl.bLTab󉆳H h˃M0p^".q]H6TT.Do= Nnom{Y̔GyY<̏?Ci;EKaĘm_'Xy5#ۍMSC!Mk3'Ltl=Y9x#VzԖ~Nq [I{)/-JޫG` M4#Ӻ)qOVŶU|iϪjZ[0 !t/ 穱C&78_֓Ec^WxRi]qGu sB18SYմ&r!d9钁 "}c]]Gfixh;ѿaֈ&bř}Ċ2˽9D˯1Yg`m@3(rBn%?{EG8?fm[m!J}:F;fpy|ڰZujAא-#'2@ # z Ӡ֘Ny6ʥNT? ͱٴb(aC>ohFA Us kn+1#7Fܫulc٤v c rDK˺iu.PR'2J>$/btL &D5^+ݶbղi'F'ƺ(-4Pw8Oe_: 6TY5Ju[6<a/i G8<868~ |%,nZ T)a(?룄` 3{"jSzc{f Wǿ9iD4n)a@umizSW99meQ^mM[P*n cc/j׀1 f^0%\\5w[ņY6-sGZpi fDG[TwKRK}o<<  3w"oZ ]n*ϻOյu>&].Fا{O2W8sɛ#=$Z>0ʙ:@6ȱ;pJ` N n )6w5^3*wɗ&❩uS@m6C+U_}c:6Fl3`9hD ]- ~s%>n[u=ӯTHi<`=[zגtDc9gKGoEbn[bcbG$O BY8%1=E`R ᥨRegP Qn Ճfʲ"ODVu5[٦h_;aaFwuR]YbxWū{b.ib#rztk@>MU~z<Hid9;W1'0dBQȜᥖ`ЇZKԒM6i)-NorXP^XRZL[MRcp>r>aFUGShlvqSff(986GE -R&KC \tVe |MRY$Z-O)U~"cclEz8&oGﻎOiʐ' dW/TÀ][Vt"92PYv{Q&?;LZ)7kE#@4UR|(*.+#[Yk̀ Eg`Rp2/n9rK>,]<[-l5,T*qi+IDN1vWW$i!.ԹaqWkOl 7`pӋ?=C}HtUGJ]-h[e"Æ>_Yh B}s{/`|\C6 9)evFDyj +,\oaD\)Ɨ7MMIHQ,r'<*~vR'z'J /p_2]"CpP6QuUc Xy^50OpfO#,{igY߹#.9LԊ?8M`q:MگoIpiKLV> [Fʁ錂: vYGM#֜WR8"@*|Mٜ5]`g`0 @~s- ߂ <7ʭnm|Rb"«ywMÒĕ߳M*SL͕2HPw0tRE:Ü߿m/MM'Lh FìjG `۲eńm{9Fbf-DOw&b~Z~#8 N{ͅ^B^ݸnqB)b:a:w"xn)~.#HKGLh=a,NO%D4k9lgA<} &i׸y ('QH $Y#U$!f瑅eLjLvtu{fTfJ;WZw83cUy)6VMS*UՕ,gsOr'_PV@1!fsnRUX#7*RM^sôԺ`tos j^kT$a^_<(쮖]BN;R9.G ,2OSJRm,PD tg1u02ƾD $"3if5~YSWX΁ܾSV-,IcExzPfQl @Rㄚkd mM3=O} o+;Rk(Zaut8oV9yRnjdYc?$D^ OWtphd\Ө((SNT(MKZ߱M]:0&˞6X@!ٷ^#OIDiK\O]"LBdVpe휫ȩ*ڰf"A N;Y=w]g8zQ8Lʃ DyIhrcۂyjk~/Ċy38PJA!q+/g[&ީI(B_7+_Dzkt{7YƵ ?>,8,Zos#*" +ֹ5X,z?bjDlMYü10" bk& ~eֲXSR>QB2&9˯EsHr f7fګ6i77֎)8m,%2uݿ56A.i^;fD>0@[(vݖ'稆pPZQf8hdd5Wk=xlwO:(+n&hcn6=*3*֬Gy|\ϴH1u#h[uեJgaU!3%kej&{y{ sçXnyK[{dXIj#e<<^'W|km֎y&6M,Livp-|,*YoKg|!0KVޫpKrjk)k<,T>0ؚ$O۱@(-K]2+]s,tCsXĵKXT}/U?2(S2Ȳ#b[΅~5i/%mf[lǙڕϤJjzz$.GI;Y/f4:s6A'Ao g"'S!Y_NKl_`y 5;7TMѰ$MkknٟIir4WTkw0%ΦK/" z8AG:e^]a8!!sޠJA$Ɵk!雷!Bأr0˔ՑhR>>;][Z4;aFJE75R-l橵 Q<(: I2L{r)K %p5Ԗ>Ά9!Z9A.?r=i9B'sgDC6|p!WL?Z 0JdsEsv:ɦU|X (b4ۏ' y?%(rK 8D!ihn[F~#$"j 3^pXsX+ Yg>wI-JaBQ8x~?=kLe_k5Z<$KH[ 6ɑD(!MO˓$I5ێ-KėHrkU.eI )Z?YvrAQ!<ǔ ՙjL &>ֱ hcrǴǑ?r0'@U*?HޭvϯEDzNQR 8H}E1mb goocyݱ[T6075A,`Uc􅹾vU W+{K$"ʋCvY/Huަnz>6HS&|R=$V+wDcJ6D] tDF1 Oq2"x+͗fb~^7m_&_~ᬂ}onj&{Wi"Fv񕐛w]N!7>K9wGtʾ+FҝPVb{/;fm\\\2OO6şPrOW>*|`:[%0%E0'X[~*+1Zȴ۾ srjWK79\ r>&zctgީtLfti=Bjet9:RDC_SJo?4+{lB4 + onS=2f-LPIT${બkߌ_J(c<Ì#Św&,s8sg/IٔoNX7UKCv'nRo$o$}pk{h0*];$RzYz,]K׽* ~K@=f9yVJsu+^T!~1 mGڡoPK~_,9M]%iioa W>;c'niۂ)LZ41[Q&T/ "mӧti-7h[Tm 33-u*FEC=wD%Ob,mX(iyy2E.!;t)9)rhIx뽼-t큖54{394փXR&NNt()bK GMt *ZOىP9w"m!|:TĤ8K~?:ҳ+K1 =bdZ1F9Hb#8WA6̺Z 8GeX`Bbeg"j,JQs/Elj6q4Mܑ+Z2I?y9"f*NdԓpޛK!tG81I#O0yEMN>sR7d8 7˕'QIj"P1*@y]bؾo8f~)6u;ߜqKD3gvp~Z@ ï&v^>m+}qE0R=e\6Sݺ9BFgQ3lDOMkU` [f^eG4_hSXR.=6 AYInD bMGKd#Yk:OC,Dz,%z~klKlVc{;]L\M;`MH%m>xpp vX\r?۠BSjn'!秚N K< _U3j&׹V'ظ!̲7 1t9j0:v#Y`~(<1EI"ߗou/}e]AbN-*l~D92yW#W,e>iZG1gT# ȟ촩WOKTi}>84_C;& "ǘ Po ):+ؒ;RAV=UxA<-KvzBA&K U)Ie;D,]֖ )nTniqu(ނ Î[b;32 X R)%)VfḶk8P B)B&x \Сr>QJa'RC7;«-7Rd\[LSz\QN2miF!x*M JAXK"9@2Z"ɣ4?ٻ)pr O궶2!kˍ"e%6W5AJ6_sBXQ+Y-&~LIdf~:$/1b5SARuζؼѭ܍=c6Oꕢ1ÊHGn#Fzэ3h tL?*{^}ܕ˜Y),p@ֽӼ)eF;nճha^Hk$w6z*5> 9`! b?uZ2wZl.+Ja8sn2Y!M6ԝEw[9$V1SA_IVYyUD9q91A^5EֵAzk}Yͭc;nuه:1S/8ǖi3Bg6;wusa,>1OʀJc%?ژĸrL|dg:#XL^}x=t[iFaEm]~rUndJ^@ NGz6YoܠZ)$x_}7Ǟ;庥rX/cG}aK݄2cmԿ25U;w=O91KWŔ ]\7JfEU ekKxѣvx"#Qvh޾B72yiH@ ~ܯ_y,Hg2+q’lyRh 1}(WWvh!M(  {hռf*bN{"!媝Hv>0+`tsMn_BnfI}"8<_4I7Dʉp nҜ/єU}˞WJU݂9PP:s(4ٻĦM[DM8#PaV5 9ZMY%O cֹ`HEKޡQ" V}=vAȒ WV|2.] ̫,J"p֨Cf zHL 3M4?,%#\g>1:VӿYn7W|\4D> /4.71O]$u$>j4ݻOmCt1JF}L8#ayΚe"O9/ސʛ(Q]1xAu6RLbIZM i7t$h+IEJtoQ-PwVM6.t۳E@\"Qя1lr9fQx}~R ͆BAA,R$~D2o[k? ";~0[tc"uKFpylzA\Hm<{yq<B{O Z],DZrBAaLfH!{><)V崪9i#-G@^lztk:?bhfZpkZB^G3CXطdIvv}(`NBd̾iX #/P~…eF YX?s6,4!4y{a&ԛ eNMccҖiiaq .D8؉S++sM|War8'ݠl!Pڦ-4^/ ez.DQ[Qq@ !t"ӴWN#d#;FIYmVVZdei:WRf|R[Aٜ?|8zuhzCV{gR[+on˃$zMjcX'?ٍɐonu,LzN0;7D'qEhi9 1%z^[yYis+^,  LO %58`cź3.K5sQyr{bg=@tqw>R q- 24D8%W<-"%mʢzY?q{V [x(>׉0fH v/˙Rd;EIoMS_n|KC{ҡa79Jn&Э2\mTxx& 8K\ p@G-i\ ?y([ N)>SWwKLڧP q zI(Cb}idDJ,*u͕ȅOn:jA5ȢVYJ`ֲD[0{9ᯧ*hu[12HG8W8T!\QՐ؇DFˋ̡酠[oV(SZ +Yr]6X @ 3/h@pCMR,josJA>7"%C(;'h'B{>Puv()Om6iSwvN["WGB3I2V>jU=k hsO>7vJv?Ǖt@JR6R 1_,/.sX}'z+ @Аp(qF7.)un+g~Z|Dk{yjLdzټ Yq"AeWsܜ(xj_qvF3fV74tܯťEKs~%f&7{Bh@.mtmKHp%++G|V쳨j/ AP72`:5E-~M4ѓ,IS[kvij;BY§w% Vm!oO#]r]ZE p=x\ RcS`N:6bȮF8Hrp B(zJ*ճN-h]+Wb+{o6Az,@3 uO2˽4\{|3 rv`sE|gݏDKn^i誯v;.gGX--2nXɪ E-k:5XyrxNXf)OysݺA'J~҈yݻm90rQ `]J̀C)B$A1J׳<&2Vwl.xݲ3uHP 4 0T?P7Hߴ>O/Cckw1[Y% Z Xw HSUMJ dUEx$,uચs!Lє<'sAt̘ǠRXP*~kIEU«*:z߃ Q^r_#6,1`p@TCeOG;dkGn>e.,i)$0Z[{he霎1=;WR}-|V vMu̅jOM-Ns^LJ̼Vg1:35\d%DLOM3;ϙzxwyٽDLnn.Pz- VS8~{B#ebX,^m_T~ Sb.?\uъGxm>(I\$K<;IݙRmȼw$mף_uE: WYxՓ+M;~PtDFNJV\r\X5`2 ` /F.&eLB m}GJDTu$2!}gI8ƚ hi/AlMЭJLۖL_T+@܁@39D`t/ʅ\[QN$DP8XH`hBB#9J8!_ \58{s<]DZ*(PX+4]BtS- ƽԞ{W$,]Ń gMZ)9LJ)3JKYuƯö8!ؿwF갡?`!IXncqhI&qw\(N:, wRS<nf|ۯ)2|ib"ZKppIJ9JxcSw(]\R6,N(* `eQ$-1Эɡl7OɄta UjwVH~m3lx>d:&k`{6^\+%aꁣ])秕m¥+.Rg Ӫ<~R(r5. uw.3/n[7`[m^eQKS ږ|Xh>d}, (H>Rv#kg{sA:6aq\j Lb e .,E\Pޡ:UN." ANMDd`SnjtW<' $׵Jvo +ڲp߈ l6vQN]ñ켙# (;B_5)[j;wD6\G̯{U,1 v`/( x IA$y@+ -I{}tML y/#yO{U)p岤u\ҳŮɡ{p)q-s ):#zBf: gLSbGZjNw _xv<oJens{czoI^#53ڒ4Bj,Ey)eMtP8têH FPpЇ Er&ӯA-PjtCidpo5$Ү$wXkw/t56+uP !Ti$]OA?ʩF" xЛ:~]J6ۄ+ J 5YCKؑѦyez;85ƌkk%p,:ߓfǗ;1_受pn;O[s"K+{ ]+0 ]Hqߴˎ`ڌ>GIM.}V~ACP/1^k4E~2rQ] !2ܤ`YGM| D>5 '>81"5d+HQB2VLP=%a}?dlYX-լܶqde|ΪB]+Bg@4$ɷQVM> F3#qJs4ݒ%c\ gB!xTOiߐocd--F[Ъ`83b`QGM[ܾٿ\Lopb$Sk71#e1vF}'?U ꜕Lߕ~%StO@ѤAa2󊖡o A㪄?ow(pDϻ Yො`fe$u9Obo4Eh,$Q3$Z!=C@҂c1b 8mu֪M^a16alsBhцs%NQGq(uAl6TL8ˡ [L E1^ӺiԥhIKfBdD{0:K-ڟn +\,MB/1NYR41h {*SʍlUn$Dq߳{v|5,ZF&8@@r.vƒ¦( 0D83Cxv=Zc?Be4A/hw}DmPCN;S5ylPr׌ЕP/bqVd}99E"@I8Ѝ6b`}Qj7-L1oR>bX>o#nۡFQCE59,8ҮˆkjZ ؎b+Q!*l.=V*` ECC"ϾpBI#ie힦-o;A "L1CFA+F!2 :Y!W@4RouvsO[y)lV# xWXYEEBS.gk':m16v؃5m{!ϸ~_fn^ kg ژar̰S*aB34!P^kPਘbޒ#bƁ[l +qZ'8y ^t41b3z4 7(z_4n|/sԱeoH4 -xE ̾[+&ZsE"wZrL69Cvn־(ިpq!k]:- $wu:m Ma Cc!ElFC,: 6u0O5':oeBk9 ~1ت:h%D1VqpRmL'7Ljפ)wtm#2EjŅ { *۩A{jLڎb"׊dkq/,^J 5%םķ {}^V̰j$5]|vM(#jwZmf&5 ~ @-ȰwoGlÌK-Xd\ PiK stcIJbMc[T{Q@x^GpEɍt"/g̒EMm1% ӕUGJ>,kRD=mTSx,ߖg2;U,CfD5s.n߿RL0=asO9%%ܭ^dh RXJӗڨQ8IU[ρ`^[zH'j ~݋<߮N+wtDEQ1P4Qsfi+L@BXAtI 2rV!9ٹ'ފ'Db*/g#KB.=$7}`a[o}wdzjHR,^3{xX/M.X||*0b`c'3Bx=rg)$ŧ),4ǔl(Z`7'~GX7ݻ4r+Ĕ=@-o-ԙ6ӦW׿ӂ TO 5HkA+tP/X0lcv\,xkQŁx6{;91~RtiL&Rgaeg[jZE)bBXU2  !ӆ&ύ1;=(0_tr8aDJpD:tȊ \h 11#u|>IPWxGu8(`Ae1[%1uUYV0t} |~L=YRw1і c4oErm$M9 럫w!74EOGG9v1)zܶ,\MsPS-\m u8|Xft٩t9Q {ySJ 6,o/Ty _fzf?`_Gyj} *^KD[zĺ+r4z>~%u,w5D;G~~}N-rbƄuQa^ɠ~Q(Z &ҘKDDRVym/d=g< qQMyc aН%UCY#ȱb{St̄o%|ޏ"erlȉ97}>P*@s3[ɔYtPsyjI%V.|idiQ֥ep={:f*`RbIQB~b{J@ "79&; !jb(fJxB&p+:C2ZB=%Y͓ % k[wPİ2Qgׇ޵{v l/Mi6~+lvREVLԦد(JK:]N#hԷn6ĤoPVyuKAQ꠭̧1< ;ȈjT7-R#͑#Ќgɝye$(]y ,#LnAƌ` ӲFf}m˙f qșT? Wl,:˲e#PP!*a?v g3` m}\t~S[}˙xT(C4{]VmfG;Y=j`ʓR@ "` UR­4E-T©+5Jd卒 DS9,۷7Tpu[Ꞩ%R\kQ%hY'xc]4mQ>ˊVmj&xΪBβen #` ljp`ߓQ1~S&q D?`vzY|P /VS({*8nٽ,[i5 &{J蓪Shh!v5i2? n XyDNyH eID3*$Y|-w~O>8OlERSNY}䒎6b!N# ۓbCfrgJOSp+9ZJ]Xcs|hĢ`Y؆2KR'0v!2L:Q>F./cϴsMVD@0Ǡ"=9R|V*ohl.XmMj\YnumEQڦo43u&i5;|4n6Z4i7FEqypNrOp[m~ܕȁ8(BU4? ~ &&Z~'k~7Z6йJX_ {uwu[aNf4k(>5UL3C?Y!IvmV[ܘ&'g@>-g*u)vM6Ԏ8Hku)hf)m. Z"$Dz\WW`܄HpuG^`Qh!Cn"3y[/aJG/v>G# uX l߈3vmn7kRa9ǫE6 qTE`i+o#%9vׄ,YWk֧5h9D-tV%E+Tl8 W3WbHtQ +%gD_i韭ݚ\XƭW#,brn\jg2 i*9TinԿsa1N7B:ɘA![Z&u:-OM臨{("&//)o4JC녟^ib\oJ(a}g̥iX& 3.-ߍ1c`U+K7nlѶ/Yˍ88໌nI@qT͉2&~MkIEFry"Vᖲ^sFhRdPs^pjT(Z`KbBlBC3ȃ-goR٘霚<$IVemZf{F[aS9' VcxR׫rLu\/[,Ɵ'x(h8}nMOrF!-sߤa}B^ ^]8[\}÷WjTC8/s͘@n%_jMe|O[~X]1`O)rS^,ԵSy{&K>SE+T@>/`OUcnůӾ>To!W#|]_O[wC,tؒ޺;wP%-rBbBs98G]8?d !{_`v> L>Y؋~? Q+rϻ٥K }gEWwpNt\v4FB78/Ī)\`?Ìd/y-+rMыI~% >>s! l<\:``x,!:,ȿd-ߗ WcηݰCA#tWI`f~ZxI:AvZ|D14Qw:CFY_nz'zg!nvN*``by֞ .&Uvr,SX*+}zT_^W^3,J_|qyv,NI7^C#S 8/hW1aAm_ ,tj_Q=zɈ8dr6 k횝@'y5.R̂06gsC Txu4MR?v9 .׆ jƙ%q̺T tcr,>A:FQgH]ݎ9E ?+'QBfqO=muzVULN£gs*{2<ٛgdbj̡ͣd褄BtvN_ g'GW+;!,@gfHл."sp`n =*7inN`F wW,(gykQk8T"u}m6#4{utU%m i,$E!&0S(N8.s1sL%C[ͧ<+(Ze_?3TL KGv/L %8*(|"R6 pq!ISĕ]L*,ٺ#r>Vc +usĈPrIqA΄|X#ć*GQ.s`ǺUӰ8{z֊qE2S83 d:y"+ivR~:ꮺRP#B`y۟JY0\Iš%ޡ[[ V'rdru {cApph鍺lcL*dn\˽;'8@PY\ט V-s#ɟ%nMZ/; Q4EۡDc[6 ^Դ> pU<'ܵW\at"!nopNaXgt+. G!2S٨WBUS:mo͉\Zd-*}\'^f#~Zށ⧘)T,TI^Mc܎l3[wL Ю rϦOU,@|/x0-fzFRCco U#&J\LXꠂ9tkt^Pژϛ |b 2 YRGa/tJ/^x`ugO֩LORon ـM.RCaƚ62L)INP8W +6L9fG5XhZqӣJ r%AH mgպPn@IS;]//%!;?L'l}" l Cn ?d#IJJph$PTZ{}uJ"5*o|r(G'3usGzHuPe$ܼohM8W,r3t.>T@_g ]ǡb8iQ7[l 6R$qYq;JV4G|oCXHw 2*82="!SMSF]gېܷJ'A($>n=^/sަ|[DD"wҠ* }Aj8įsY |7]Nq ãb, GXFj'<pS*,[ϧU».B߮y\Lq('ayA/YVVFluZZC Z Uľf nPЃ9\J|T!TBگY'HX qݑ$a ŠaO*Wn~uU5+浮60a2k/b0g2ovfC}Zl5;tJ4$)ɑU?ҳLuK^R @RHh!}%Yl _2.ւ %LrJQD!MW׏GBX ݃-'V M@;&%ItpPl315Da#xKT_M4Gɕ է׀nM?O1p+d%[Q`JnT8Mݎ'Ǿs+N{pߦ}kG, lbjj$8j␼;|gGJ Q+Eqm( hR,Qj(u6_;͑(`;×F/ڇ֦?/J 4w%#|H9%[R_#i?9sxƈRpz鮯Kp av)uS&۱tu m`(5`*2]ue:^9q4 Fym߲yh%*m`/Vnu f4ۙ5 W&pmT3⮧x.=>'c;kN7ĺFSlt" t bR%[4 ɓYi /92̈Vz% |qQu5j`IRQi"#TLոD@!>Ye#ٶhSWsOHDz,Yi۫ c9bZ5_ھ|뇿1/TQ,,5QN~srGto=5ѿc)AS"$m)+˙~1 kf_U حB_GY!xk2e1ef&3P SkB>*g,-^5y<4ϙ/|$~;kX|)_[U:*c?zHMb/~oĮL ۡnܝG|>gxb 'ZjctP%͈)Radډo-f5y6#ƴj. ocZëդĶCWqelS i  afQ"']_X)*X/=ڂ6 ip ;W;L֤P N/e7m|W I2DZ.fL8'qeA;fCEc-=g!G[&PƟK:f"SK矬FLQ{)}.39k"p yL5 `SEgF2&T B4 A ;Ͱ V+D֠5Ϫm3t g 8+Ev@#^x#(jo 5 QQפDb:a{e= s~{T7 -NnR4,)R#uYfQ`3e+zSplM.q8\)5]\(9Ă='Hh÷"DAaΑ5C/iI. ]0~E6bNviQZZZ]<bN,EOu=!efQlsbqP/fm\aluv\> v14܊{%{u$?QrE=fV gp!CH12; RH@>^Μ%囓mѬ8w6Hlج1R[7!ZveHlRF&<}3dՍчP(v;AihSyH!Ǯi Y>D(*>KJ^) /^tNYa]==W%c>lD݄h _Z ~Y5]4!kQp)#q9$ M`|ؠ-G W)J٥!^|X H /uppGN|8i?ʂl$fb-dϾ@ւAy&8sÀ3S\> ?xc `K00ȗC!\d},A:L_dQdFm$|̣ 9r;aW0LRJ=ׅQXǓJZoF٤p k,=X&a=Qbc輳_"7=gc(lQ#3~\Œ]w'CꜮ,t t*rxtli e3ܝ^BWP݊(j+.8u+ Tdenx#$ZX\m>@'GEʓ/(O>7wN4 MC#mںG`<'I ܬ( mK޷EZ.çՊx=>D}O+^]1snepBbZϢxzU nz#\̜-AjGPτ.lNԎeoZm])x,bWhR@IUsZE2 0̃dd2: GzFp}u0a%B J#؁`QcʧOOH*-zxnPMǂri5t%c@|l4qXbqװg :|r%D$DMwGӀo&BfCqJb U߄?{f/ OQxށbʌ^l3:YH37k%\/ʒs!ډg)ЋcXɠa”n!%DeO'pAl/3J/ :x@BSіm%ܥ}ND*Ϲ;'&xyʜ Ʀ}yvaWTU^q61U%_=C͎1ՙĨ-5нAivxT|\>2is0c⋆s)~Lu3tvo}1CZh|&y?Z&yY_8Fc x˺:,x3p(YҺ)÷K0w\KxU[?+/or>lԦaNzܓBZ$3y !h-Vs۠/%3%(;Eo$5`Gw% ilqNZdi+7a2S|YK >T} q%3Im - - 82;"mP||̝طT}ʅ>#"2z2_Y\ІKܣ1\p锤'CZ5-]M՜jr:~*G6w_ o[A k˨)}b- SA`>~j[X)ZWTF*&!h(Sܴ))KX %tJ `4C8HI ^y/4 :5kaRj= c9(^*[w늊;5 ރkx~*~C K~|@ESRh {FA߂Vͨw̒DλLZ5pXz7S?x-Vsl?|Da#zO>/W:EB;-";1 dCT%Ò P #휾a<""E;hGkXӁr2==:SM,zw^~k! 7PQ-*]_bs?\i3,~ƿr>x|81GCH q'DF~mO`ysR4(k[r|[8@[YUcRz$ĀsoVx>HQHBv{}ɳ'KjIAe֣v+ɩv4&7, :ClٚݏbgCru%K C(5]Oxc*ݾ$5cPk ~63"&ѴAdS(vcX\oF\͂F}@] >WT2`]RN+=__ >AtSW \Nv_֬ި(b&K i(݆tw4ig'eo1h˳Ԡ\%vP ޤV]qO$E`js,ZCY*LF ~+[Ngx|ުiDܥ@ 9yGlY{e kO.K'_ϡ={jz cbv,eA@Tb1K|{>uJlK4<, vO,MY]c>gpwqXabv'PTy:c똂e&HrBEҋ]52EtNw4/?*l-T{A>΂Ů 71_+~L D1s t JZNj&9iZ8͢99q1mG\OX.S (6,,Ec ,Vdԙ!wj77$ NEmثr_#rȋx@{!\)b;)jr蔪 ĀEX0062WsR^LEdex E0|ABww7I. MW6V,TA=Tǚ{y(-, 9Z&;5A&MgЃS(5aHmvA Uٱ!D7Ţ(pg28B4 "R(U |#)\.^S$}k:L9SUZ"#\m(ӣB gr7r#֪@ V&k4q!g9 ._bsnMΟLBM 55;k3Sp]@ k`!%ͺv;P-eğ֍Aj'#<>̘1;dƀ?9;q퀐 r6++5xV is.02΅s:mKc=XDXr+@+#Ƞ\i*%8 HU7gBhTc;'sKumF"d'BVyܼgY Y+Ki{g"j+ȂU=\O|P,6".>Q`XL(wqK!Aj̴#&3(D:=d&-'m ]a`xr¯z{-;i(xQ*\1fw؀klD炯h<=eRK7#v/r-<2l5t8[u[t/A ␼< K#`GF߯>.OnWǼ),݂&ߐHVd0!Yw&:t9d"wM3nUӯl]kdd dju1 lNG3c/P#ϰ^~9,i,lW.p;vݟIڍ'/ѥ &WI!K:r#;viV inve#]SJ/RT$}^V*<_WKX㔷㘤J$uLO{yw!6!=4YA^^Lm =!D9ie=Ba`< rI-&+2M|#GL=K~cdN/Ea3Vڱ.i;  &BUYzJ6Cκ0f9 HXu_Q_N L]p% !5\^ØtY¡H򲘪rJvWO3͈I&u ,F?\!LچG J80G}"֪n5P)poOd,y1`3"v w}P? EE P;X@H-R6) 4FMZ_ O~0Ղ4%g6DcO at+ ixL%#BUKA1 [weI)]pe).2ӡ_:3f9~O)cU!ѓ'z[~- Aǃ$*?WpVdGTU56`c%OKfJ".|=Ay2 DC]ݎD1*ȃڂSF6!-gF,+ؚ/="p:B #LfMů;:j P2pAD|e@cy6(qt:qN]@)_+cɉlSdQt^y K~+B]Nd6a=CUmO{[ML+%"δkbV{FD7U> [Sv֓+ۋV}.hDM WV’IBk ظܿJXcLBAi&oK8x}ؕ| ?%uAx8D$ SNQ4"[֦xjcM*)=ȇщ㗤;זQc\/wf˯ 挽(W[5|}9Ydmec8.&I<άb0Tcm5V:/mzjwAA|%: C(xש,]p\}DS_IZ'$Osv'WVL߿ߜa3bazId-!8[LHz^,tDw e,{aĦ y}6#TɉuDy9 s"`7$MNie yqLeyt)hфP<@4nQhRGR-%UҶ8SCę nDs{cS E9ttdO;ɍJi ԭqf5-cd9cd(e#$cF0q ́#`$tJ1a]a%N6̂IHd+fÖjۅIMH@3Я⑀|^K)q',E-0v rwh޽Dž/m0s`o=(Kڽ9gUJ'Fpr_5$ݾJSt'a;ns4)0"0.V<ӏc£y#jDQ7ᠹej]gbڥ.>Q]2ݬR hGgO?U9oV?X:ԅi|1!KdYA[B ~-}")v^ysPF zTpe4T\IZ_6DI;1Ls0\ L(>%+#Q\Dj-X?nUӅmdz VzVܛ؀b;-q z =BЭlqa9ґ(HgSЉ{ ۓ.i1[KtY L'¦`IAa7n"$ǡs% G^q2 sjqOY.|WW47W r?:#_u2 }wiw+*hQ%*&17v/9v)FuieX3҉mY7,񕻴pj 3\3 }: b]6/t|=b/"ş% |mY3`v{yDkr ٚ1~:xQ·~>87J-z["jUM"Zݍ1 H4F낒[K@4Se9BLf>B i22Uf6{ZU)`|`{K}x^_C;jeoo<8L6F#AW~k+gbP t8D Il .4Yy5`8$br xG3pϊi595T4$ Gr{|,}A#E׺ZBO9 nи2Xp\wc&z5R*7fTϜ@ҐM P)cxJf3-n;V"}J-da]gmC ģ6z5 +GDZcU,w%"-?ﱈx\ u*h?XK|^-7?dhmּn\b٤MDc<٣t}`lb>Iw(CHC/2 YZ9mS{ P I%趈" p| ~|^l?Yě ?<8#ĢFV<].:,JTG _@Et#] y`e[K6&ta5#⑨ugfQ)r*Ww>@gVIVTrgDAiنd͓_tˆ܁*;jL}UP@;+f/c,`Ps?R+yM Sbb-dq$g:\}2:뤸vZmҤfh֘xkoő@vZNUJ crZ6A3Uu#3v 6ˡ#WNE)Q읩2[o{命ŧʇ[Q+4+j7rґ+xuw},P+}(Q ApHteU!pDZ).y:z juzQG\??1k+@ǘm$ \c&BDz h(ѩnƗx f1 N OZ5}lcF'.| ?hՃC_]mσPًF2R@Xވ9?a(Zs{d̡t~+7AI9p'j* } ,9 DG0mǖW;Lz.> +dp`2Ո=9VoA4HGpσ+qe;~7f3;wxpd-qs@k_ؔZ i%6K_KrH 5cP6;ZCyW[U^\b}+,00T1\YH,7WidxB\X> "dF۝) F^7~Zܩ`ux~V\?x}tuf^Bȋ 6[f- '+=bAKyIR nn%.͊+p "qDVQo2 ( aߜ+{]\4K9>93!ȬfOٶuƒzFg\W]cJD3:dٶ 2KL5?`fP֥ )Ré>set7Yb%|fW6P=7!\ŔM <5y !~G[zq?%Ծoc~E~snfDW1Py&;@$,1sj~V:ZTI9;~|;X&g= ,#B4z /;S"87C3@Uiz.}g _ fSip|eO掗jl? )pnd(-80L.} s$֠ngUԍ{PF 5jU$iۣcT-O)U/Z`z!W.{>{B(W_)gzfQrƜmŒO$؂nh‰cvN}{oܳH.[8kp4N"aLL^RHN|۴^9ADVoFF :η>Eaú֪QNSF$G<s6%¡B&`yuGɫ^0 M} x\Lt']78EÉmmzIY "Xuݫ.[0UA:[`!@=bPYc xȴJX\j٥ ^^#=xTl~he.@˚w 1cAۑDn )Kqto4Pu<%kNKv`s/J0`Vn^ HP5%SǬ *皾:咉:߄EAYf@iYS w!J+O(dWy ֦HdPMaf>ѽv2XtgxbX%? tQ91ȶlu.eLD6!iq4 JFis lytt9!(UxdZ`}zTt4 PK]ږ\A{I壜1J5Zf$nEsI8f'Oq~˫@;cnM~ԦFL8 h Q0l 0ykĂKu0yQ럲A3#@90&0Cj쭾a=b%ʛZee ˎV:n8ΓMfv)xW!̶njrj!1O8!铝ܵ̚ߺ!ڽ~?d>~Ac) PikkX'(JpwZkIMh"mS1Ю0I?[Lx|<ߨ /φ!6EL:cIHmôRH/QBsU}1_LYϚZY<?Q=F9|l{(MѕX BX?k Kq(M|duo2qA^͖ORAhFsE^E;T ݄qe3yz0F=Gでg/IȖ-Ɲ۸Gh=M ~C?oDŽ5b`]Ea1a }F'Z5XV ku9WSt,YaQ?f{zZtZ(Ha5pUBO,JdtU3[8j+~,TAkEbJ?_Hq2ށ pZtԭoAoݸ{:jht;E'(Ӗs2IA;<2tt /)_'sDhQKOZ wP?":&]c%#7DfbY'e)R8,~>G%j<:@߫Dwd e m_41UcXJ "kM{;BSz*:cc =8P%Z,˶*;KIZmF!ֲnZGT}F|9q|k!-/@FU𗏇 U\?ŷ$%5Wώ]jm=F=㚞n}hy֑eg( aLw"ʣ|س%2mC䤣V'/ x%.% $-2x6 ZkA~4> GY:kѳ ҰJRrV U:Ӊ5iFn% IwFy?[kg~"&&|ykD"$Kk䕥%u :\v*,/cyԅ^yۺj\8dw~o@tb#! cE|l?U׶ٮ[ض%M0x2xC\UUGrܒ62wKyZ\Lb8\$3jrȣ[uQ;ܹnO ;<:euc;o5 ?g/m*,X26@O8Ѽ~#5yӿRb h:*YIE_LtM'VGC5 jwd1aLz| -ؒ׿y&;;_4;]ظ,k1ƤqRSZWmbF*H}:*>tc_]2 )K;/?2n .MV[JrJ)?bBOf\ -n՘R8n>3;w%d/lʔ59:4Ώ"\(HF(צaR!Ct*; פw`?{7C79*TECyк,ry?\Qd {hx?O9|5^0bS#hs+Y 7q#/1P{рokzm+sYni[͵#VFWDvQM@g(_zqMXrC/G@y)dyeG/@u)We~ώj6Ύn/څGJDĐrc,'Sp\':: QӃt#ЏS}.'#ao Aa<yKӇs\ 7E]ܢ^8A|gx_>Y6SڕZ;YFVݬd`kՄXH%B}LG'gVu#9k#wu!NK-B@GBv52&YtyuyVO8+VB| /%&Kͅ)g$H aFy.Fs N3^£#"r,dbҚݶn~毙+@SO[;@OwF'Vлw(fVk2  Nw4ZeT_F&1mhK)cM-CMB~v ֑G4ߙCpR}0e5x,egb= X#dЂ1-P}ӄ"XdL_* Ĝ4\\~l5kdMSVъoEqPYQ`;S| GUoaDNa+ʧ25,AѢ"tlM52pڝf AghFPAJQwQ& ÇT.ht*ژIy6-7ԩs.\QIJyY;&a<ā4|:c??Xo*Ù_L'iS/q[JaX! ^ŋFG'˴vay6n$Iކ?YCVĊ%D`x΂y_GxxmT3Wugq^U c6'! L븊s%7cPh?bg<=L~)B{<ϕw<6wXz#"Bs$bXgkT?{x[VhV,%e W ̠c84ޢ߮+Q78qMOw LblvV` D]wڎm+յ7PQ0IC -f`zZ.!* JH[ S]eQ}I Oc.uG/Ҷ$--;p::v3cA %L‰\|%C63uLC?z~<+!n,݁Ƽm΢?^*%R6`-sku1V+ ^ !ŖH=pA ck}kJ%`4qu@雠hU+dҶ"#8XI րߎGĘU-L='-jȣ' m)-}ىwkb{ xi@n`2c/(VʹsL5N>NS=ὣY860 Zۂ^t|aV׼s)7ѰO6ePJWJEdS[wzbK3Lk[{f')A/ P/X4(;˦Izd[/TE>ԑ4` c3kKj_H-3'ԗn<~UՊ-,J +Li뿛2 >}&lA+L-sc0q &r-?MQބwQ9)VbWh"$ d`^I_skɅbqC p&p](1v'QBö[n}NxLύ^ {)NW $\:4U\^b+Y/i9۠HuWadP)7P$]"P ܲR),"z`u-jt:sE RQCZ6Zcvicu)n[Վ:iN+4$L [M G :W*@ 'v{~48MQF%|P &JJ3ν)?B+-LC)*#&P`ylǚ!Ǐiu˺:6,د@4{;mWJY٪:ZipTkv^:LFM>׃P䖩LA(]eNQ>7,h8JةC:PS${3o:Yؖi`n{<3/m_.HzK 4ÁDPu bӑ[ig}BKNG@r:! m}T Կ"}X_/1EZ`?(&r@+*kUD$Vfs>0[*)^`# ;Vp}Zom>MQeNgikң* Qn5¾ &ho?5hIY?ڮ4بenW@* B!HieoKTq'xRTٌ3Zy=OSu"!"@ 3z)vlnd@aCX5"|I_iby'bp/D육6##_iVENQ7ACvS`oF!t8T S Y3IG/@ʞ׊ \g KUPP0,\J]E6; |J7%ecDWU#UھuVA@34/Sܰ:ŽHg R&I~vBt&NΡA\3.4ؓ\qH*Rv}Dn^˯ƕv` l܀iuB PҮ62V^aؐŞO鏳fy,FJ&1ne/d邠m&ր;-`&\Jt}X5oe84+R wZcرw+`55dʹ m Czfx B2Fj!ӯx:s)y߲~D&/\(yJDSqv}] MnbљWD^?-EPQC"abPT3T;XY< at]V9a(*wy5u0^2%tE:p)D7j M^F>nRm[#YK0?R>ӊ3JyM6o3<[-ug~.ڕO"kz駳V{T&,b`1g5i^mS-W@C\ԣ x2nk2\ (0hM+%/fr(>㘴UA 4+{ҼZ ٬[CҘ +4 .GG.&kp #TDzʇG \3§iYqM]RqO]Q;[g*x1u,UJG`ha)Db>:qO4/.w>:K?6:Geg"XoBIT]a^`HEolwQz*tڽHy@9HFs $9H^Mn03M(rɐ}4]-[H;y*ݭ{h c@,Eɡj}XAmL0gvMDA6wE]c*ޗޮs៸VmΗt&9h mmѓd 7=z]g?v] ӎC#( ?" ufl!h):&s&k?ٻ6h}xYԟ_1i=~q^DcrjQ;M`,hv! b%R-4J1 99$8͟r~xj1Eឯzzk]OOke3召ُ+1rQ5sꟜr @7`|٨[)t٥y a+Y keՀNg/!=Yf`| 3p8U!HC0[5/52_]|B'61|7bS5ax(gژܡBmViI*G!e\C1Gqjz'^DEx, 8-tJo(5+=!IFʯ ;N w+ܒaW Nwe_. w3>+qnl]F('`01H:oI(@\w4jݜDn* y#A3|lтfԱ3 ']ot"mbTio>L EeY&%G3H}̴h5V2p~c0 )+*{dOI敲VĨmbRXsцWnOe?4ǾP$`7׊e+mmB _\!Qd1o0KW+t?Y4aX?̍']t\$WBhTk6]]dOyJƠ] OOIWz!x*|`[uVJN*躢w+NJOlU6њ0d3{͉cgեiWh-H,1[F_BDNSh2;Wa]†'5ωYsX-[l m[7ZC@*i9pu&l@N #^D $p]E| J옄'va9nA4ó50VW_%*+@_vi'кRwCM9I٢ON[ZF i0NH{atH%.xjkW~|sL"mͅT`^,,{ 55|ƨBio|@V%ᾁ>ZQ 'R 2,j/8!ígJxW-CxM]_=X7iΔ~u p &~icUoLq Օ! ]>{=~̄zSjKjwz_!ibsE]w iYR!|6Np ȹVaR^E&yyenkG3%חlդgH$S dX8lIW1̀n`o8"Q 8~fߎ!/nqdMU862Po{q5~xH(= tPUAW;K&Ǿ٬XRz@+ևbcJrtv4i/d6?>.=_}3eH0B ]mͬ[`GcɱnS3okrۀ'%VOգe+l΂/J1(OP>0ay lB暛jy|0q\u/&IƳ9T4⥘ѽ5ɽVU26-LAmޗ_ne8oPz?/zF RV#҃ W p $!F&p@w~o.kTI@-]\KJl @!W e'1|sۈ!w9~GqMSgQp7;!կb/ov&ctTwzk5x{Ց<"?^L;U`Hj҈>0 >mow-J|,p{p%aBIb*$P'KztSҗvh}Y=HBFxU,DTWi[.) 鋎Qbǡb6'I[jF 5W@iU^J"e'ڄ"rl&*I1:hػV`u,a@B)JYRjcyŘG9sv;nc0Ԇ#/Mz.$vzpUb<;s6 ol]/o<"C3ܓ Xs`yD Pe%wДdFR<%+iy;ZͤXPČZ0`M~fΫZoOX5'OMV BؿL<Ȯ=mj9Jk-5=0245F u+Jlju$ěS)oPgK*aSq/Yj-޼1klkċf֟1}~OJKbO̲W22i59!1)\ vVh&Y  #X~+ɳSHm+=gyZOJ&65\_yr9뭮NH-@shv"r^ 3k^ :85BhN9&1 ;aa rf0{yOPϚP_х{Di lmQWga6P#⧐ع-P3ϵE5mɇa4KFxtc$pSez@d,|xcp-F~y~'糁rebO0ZkղɑF(r32w7rs Ͼnu֍)93\?&V"H7~toF.-ĄOw^ '0k{pk3cPGd_`WIJb>0k>ԭ Wrirʶ4Iw5Ҫ0P2dkra왪 vሀl̀kB 3XxNgV73Ycn܈h̊PKaRV3zieOplk,53&懕1|nX6FY#J7FL[㱟4z=|\*Г=f?%GN/<e8I}ޯ YC["#NQsny*f@!;nnk7zKE*; .ct{Z{R;'_M&6 QV?r߉,⒔b= >: =kmV/K "Cf;7=д'uBc_Ɵ|KB Da'pSa#ГaU.BbQ܍^ >N;ςc{-!<0>˜{z@Vp=9MoG3!]=:KQE&3-JzΞR'kk2l#Ʋ5Mdm_Q4:+ڌ|z~XnzWSAllYn+nxգYیܩhG.R"}J HC~wimnߡ?#=w?NH>kՊ%%G N AǗnH "Rr&#|fswTO@Obs\ C jӽA9Ad GԮkcS':jZ֬%{p(g Y(p:-j"2C]˧Nk,xXGQlƨjFsWhIs߇.+ɂC!M 褸#핣nQX(S8cSeU$Ӟx\D$r4 ڱ] H?jT'컟E|$i/dC"c yd!*C,aoG1$L/-pHx{ab{ ?yٵr y)1:f ƦMyZgjQf% g֚^}2℺MZxjq?SfqQÚhjK"7:`PʈP ]B,^dD˳IٍopReϯQݩ2>a?|FHV#QdՏHgpzyabͼ`>t *h=6Be;=)TV(Rb/'% @4 lb,Blmj$7p/"*i`E:o|_2S\$eAOͧPyٽy:D1 dN7ʸG𢽁=(ѐ@QQ}q~ Ơv/mgl:*krţM7z|e|>;*]p$|qcX3_^Sv߷7qՔ Ȩ@^:S`,'ӈ"4fo {-K푇2yf/t oV C~7{RaPg?N6~$22[vVN!HQaj\C_pV5h$wP- c\Ų ht⏋xtPީ6<}$)X>R2P7aUIܬ^7*kٚ2.S_ݤM/\۝\`9iNtobNLI+v [wLib-'dfX'J:'9K ?6bq]N phe? Uq_ĝ&*}(bsrқMsd EG@iB''$bg~~~w? v016>)&ky(LdY"i)icW)-Hs:nU8gqA!-铍l'KxX|ȎGuPmp fѡVM0%lX5ŬO%8:S;iCfԵZsfƣ[Y>w +x+Fe Ssz=`k+""d&g_Hl&Ī͖M qO7$bL孽@B,B}. IPUO_m6A0wGdE@5 K5TۈEƃ& >G/̨ ݱ+U4  >)3/la?c^wK.9_YRw"Kwg KRu;﵏*(YwVt.pz& |--VGlOx|Tw^QH?"ʄ@Mv/6]Lo|̟/NQȕ N}V@iK/\ŃqV- *ŧܠKE n_:ۄJMh.wC 64F>M*Sn/?P1m60B ۶cĀ21FXE]i{T)Tz_x3$.l6dxA=Qgq f386EauڂlW~\x'u-񪒚۟J nRT@ H6&Xڍ2h/δA:BUR NM'wZJQ5Z>"oedSǶNs _w|x/:L"o'/?U/t2 gV%ԧMP 8Ǧsxz?mޭwѢPʋ"4x\VG"WYF1y|+GnE?諵G ;*g^ԝABX!J\+ʇ'o8:jL9a3_ F?Lz(O\P.Ȱ܉WJ&*뵮X4T¢i}O]<[_ $pP8M-Yvs 8p=Y꧞x}eș_i\ރ{^1-OS'ERu~֌2q7 :D:43ev*;<2nκ||KSµf@Yf6UhpAgxCR" rh $w&v\oD OîY($$}f42wAgsT(@D0.Y- 9uEiLO*Pj<\kz q,wjO>YBh4/ɏM ~9Tk.U%CKGXy;р x d(O'ٵ,Ǜ38ï1yӄ勪Cͨ ,)#@ł!F1{QNK$+`z^9wMc+/u^*zszy =<>Er&~*wS L{h{aX|06!_sY 9ꄍx!M| aLh DX  "Ǻ~x ucUd;W C^{1a.2,iչ~@NOLMou.z" vUl-!r PJO"mY[-QHSRbYj:< =ufd ;5= E;n԰q\xX:Cf9W|K%uaX~:yD(4l ċkͨ>xƉ' CpTW~2F5Dž8{e}`lG ,T$0їB9ڥ= Xz͏Q7̌o㪦'^Jylɫ~L킊F< _?$_K03( #$< ys<!o5WClnͥdd3$(g V ind袻.EZl\I;1i|T6ZÍ^(t-\Ykp4@ v/ݑrrH?#d*u|w!8ϗBZ)*o'6Tvz=Ty\D(cr#_l?]\]Sn!'0Il¯1cW1CX1uI{`oőit >s)dyϾ^&`E/>eVىQ~2eU^fʡnpì11tߣĢp0!XwTwAnG;*,vӬi,}E3䗍5;3t>CKnIts7b(#O拀:Ìެ@9wĄw!eGPxH i>)+㣑=S1+]rM nvmy:ߤb-Dh5hZzG.xd:"Ԇa6Oy\.<Mtr]^2Qu LG*,&5K8Ow U &t>yfxK9_`OұFIhkJo܌9Kkkzq<(@vy1e?yųI"E @e&lk.ËYk6΂8FC"+w枹@Pm &}>YXV<fm*F39QIlƦ3<Ý\{"N)HdeW,{rֶR;?sBwxdj#m@Y !m$KŖ|&9ct"Q׍E bo=ciݗ2niyҵ̡(G!Qw;gCN{`m?D5EX'*z8b/AA45L҉Wi.聵䬒ǽ;W]`}}6n|fyzS2.BIM+wV'|!b>IЅ/&Tr*=[>,͟ZΫ1<a%@RT 5&D,&W3L:Fl>VXtL0L޻lfMfhˌ-|i+cSx͓OYZq<801vϱjMW8_y ^rvfU=b?{KfZ*"y"lԠgaڂv,mr gLNt})創\Y*8WNHHڧOH*S\Ap0C$Рn_zY=Dx|큗Ӟeyc Ul ? f8ibNO0S"2+c/VNlwȭIkMcF.hKu)s,.q^퓱V!SH|-WŠ_gOW|s*JI֑{qSV[POS~ٓYwIc-|ػ\;|07i<%"ۺ~Hc$;݁`u>v?2A_?/if(uEG?}yO&pNV ) ͤ]OV+Ӳjnr(K3>/q{mi)yîNYg }EEs"[MrCbt > sH806@2M)p,/$ϫvk%vTwA8NbS|[zyLEo42(D8k7CVu}| meZ'wy2/~U96hxr8O@x( ~`ZoI ?F]3O*϶_^ES}4LșϢ"$Ha::t)#Ieh`;EK3>$DfO:2 ԙ^ƁgiJ®&|ٸ}~dJ.n/]vja|$a`>fw/w^EFd8soEC>,>,WM'{Ad*?`dEIGr`]lq,a@ iuvB)C@JaM0gE!]76LIʣvp#i>ՉhESwyWggS8X ?d(!ܲi7eL^?61k:]|4(D=.*boٞj7Y,2 8 e+?Š_m2f8C5a#K6R"" {&NF > }'F[%ߠsͻn=1!]sR62& %qh-h1] &$[@ƚ)Bg_g<7̞Go 78|\Tu/u#-w7GaS5 w?qi5[iw.ީy(9[b-.S sugfP gx s.I&KWn<}zB9΀ & \/hG?S_$ hͶ zu;cbrfc{x[O^%yGl_z?$7)[(1+eܓKTk'i& ˰fLM~r2%ycW ՛{ ㄘnjs$P\΂@e6fv8V`?íԯGp] ]V%J.;:!|ʱfF=$Ŋ?/TeLUq]QsU6a5گe܇NkiV@*kŸ'#JH/0XV[cm 06xi>"0 3RfJcHd_a%!_+ZSmeAp*S"wSZZU5- z2 jW&uٖV/eQ+jGa߄I,R;Ne<ה>@qjo,BnS2c)H90wk_glqFQiz 7c7r''B*PcCWm8Uf6NA2Ipڌq'6Io"씩@{Sco48d0sO["  *9h/ޗiW3V$';HI7 e"F٪b*S_.ۥyHl,D#_ɋʒ6VO^$*Q`0ɌI}CBU5I:|*_Q/mL,+sZ?$ y^S{[R??J$ j5{>ɇ3g/̅:,}PʹLO䴪; * cE+A!\N㌃%Ā%nu4|OX^q"[Xh s凢{S#Jʔ0J!Ԉj5TnPup8qR2 Mťl:b391"b#jb,IKe²  O`J!97mP"HKɓH.H-:|ko -nYf4[#bFH-em-O܃g׍2x^)Ѯ+9A#xXϝNYsd /"u\1.G5Yʤ?J0tVFSv&NG?4@ڮhTLH =,T gew LI ں,Oˣ5q+4Ӛ8 ]B%9: uZIkd4hEQW~73vm2-.C8UV>|s/إMh "C9F.i+2\l/8{SƌB̧84m+M:8~AkPU&9Doa48>K  eH .m(GoL4nW_PHr;$ &[bD˘;vdW: 'g'ygW tQPZSsy,ɺuCEX/lA#_iMt~P;xD~#(%9;V?ݖ~܃ " [!&Gqw-~?oWmŋ9YX/=gZ4i2,+" 6圈'f Oa/fBkLe1Կ/NU%Q ax a_r< J* 9 u\-b?I|yZќYY}`UlLFpXX0҄zTg.kd)QD(4GUk5c+8C/[gjMu f%ib<'tQebQ췽v ?fvf(J{.6h_(mA ޔէ1n5È5}/@ ~<\[vluL!y:5j%ekư:.ᦘx]Cd/|3͂H/;>y;s=h/a&`b[UkY(cStBXo0fAril<+b^mʗObYcWJ/pd_4*aҧI5ٶ0-,Y))vr"(|r9(NߒN0˥ӚG(qh4'jVD% hْ$u ćOR@]o3p] 3NKc/@C a}LjqWy)VI+;yT 2K oq(-7rO)NPM4zP?ՠgÞ6#sϣ.S i "LCIϯra;If,,{<0!TXޤᶟƜ# yBq`ޫT!5adbnVjo`Ὁ}5ZHc {ej59q;7Pj5;x'_&hę(.EP'OL|םDܢf;qìĨG 1OmF5K\;2A>=,7Sux0` aؚl\srh;aΦP ,5CFoYFRH:,wP %Pp'v|qbecvgNz%rk qc4c-A,u tt֦ VnrLHBM7ܙ\XZXofy[O>) ˔P'b 9SŁEJI=L9!Hkcm23)S ּlT_gPkyZ{p)L.Yz蕘uduJ!,>ýڼf~I|-w;qJZ)XVV(,9qNI8?M⡉^tX p3TIo1p驵ځ'' @6F㛃̟#*A븙vR/{ۀ۴$IJU(Ō3,}s 5JmT=jױIEI&7ۉSs ?:Ƶ@ٯrQ},f$~@ ~Z$M]%5gCPɑ3$pLOgWW `*< !hDЉƱ8`JgペpPqcϫjqPyQDlLCey=4Z0P5 dbYFVl}SFn|$B Ť& 8,c:QbJ4!u,0&9 eF&Iwq|Y1x&rl*'p#[s?iv8*(%bz,5r9R?9kžJC=<ݐ3 S$Ų:L3@HAה6v 7̈́aj8QyQa4ga⢩aX Q֖Я ͦ5?e$hG\V'LB=Tw$yQU"-óWʈޔ`W>jIOwI6llb3~V91._6Fwִ\b*fn+ןz1'@K&+ oÌ$4W[Pƃ:Nӌϸj{.y`gjUxJL̅yJQJo ;6u*~}' ֜fnb*I;v%OU~!m,k݋7'mK*d!W oM6LEt;&wՑ$z.&L7" J5d,4g';k%w/qt`B9nuB܄i]fxx\52 +=w&uaȺ]\Q43(?PYpy[U& bƒϿx_%B.2h$9yu=EeRY{ZD 02B+k}501_wAZ55Nô핰FN,%0^Oz1x@'?ktsrV'âPD!Ii@$-IruTXϨy'g^  =J!`bQ\sYթ#V={WX}H%XAW 9|QB|H5W+9u?؍,aC׷U3ykFUPxس}9lM {C6p}9d֖DR]58OG^E~ !6SwRjkVd|) Y[/!d5N-ah/~`u˒0nTFM9|y;ٔIy }kSL{z_mLjpaFb&z-:6VNXZ3:Ÿi@n&[`^suc-ϗ1:ٟ)(iW9O]6iP<'Og@zʛ4!8VA61 ni?3`,Nџb QoIu?:FUzac;rqmuq^>e zYv@^%طL = v[Ԫ̣+wci5~ =OHG.ԦcAR8֕Qy Oxey!:pL?Zmjlݢ*@;gJURZ?֥Qe6'`.OJMsv9=0+L!MIb!ZUBS!]u 9{+'`FBԑ $Ő$yrHDhJQK2 (%5F\\!tm D=!wRy ] | 9#R /P !ECSZ ~nt'Tf8Px(n]F~H][$#-Ⱦ۔xf`X !H>~CSa6"znR"/,k%vuD Ob=yC=QNC iR׶V1 fH~)/ -'js+zR6"`鐓xV&ؗ@@؇>r'ָ fM ){dwZWWJ y`lH<ڗb:Q ~ΌdUB>vh[rI >M%~adhʵ$Y/|umEM,JߖqwKlO,3N7X^&ZNz7o=eHmH |J{xORZ5U۵xY&!GNiF5>@kWI6PdVlh7 %xpefՃ<%>Q) U#d;"N>!?ϐ:+ؔ@E06kN\I/16Qr&}' Ub;`VQ:p/=dCr[\1CrNeS΀۸vBc!)1x{J@ * >s13_6azбER"XCt".c=1GQpYn);|-X4٩y4B]+SyB5~-M&`_WucK,r0g1#%N,Ur\1mqU؋z3\o"j.326NI1-SbʌTVW/^?``f8dOG ]sZ,銳6ufk(ApNyQ E~{ʱ bOt5[r+0-T+S|TDO$6MpҮ>@3?7S2*QbD XçwObCaH줊e} 8#Ԇ|*GI1/$-k3Z[0zamWrQLncY J9@|MhRx1|?Ge~N(#fBԞw8t_8o` ;UrhTz; R@9#UޣytQK)IlOe;@Zq3e1Lǡۂ:83ؤ2MIs~+J*ճ#H=4) D"Kt)?1r6%TiMS߫VĪ|#{EaC%*Uyڟ-4SEgc1Ǖ0$*z vΆFӾ;X~;5O]=o?bY`ǒS zb#jGt V(9C9tۀϋ+0-O$PyWŮf] SK2~ { p#q(E4m;ux6_&gfRb'[9{% iƜݡIןf@n)ürK"Z^DCxp,Ďx RROVYҊH^zi>%J:Xm o NFcZe~gN @k4`MGBbF_ָ{: Pfj2,=|]e`砏Q@[9XzPmLeYhi>d13~%G[2'UȯDc^8]eJUACPrĝ̏|Z!gCI2|{q@U%R0TÄT(n-@.r.앖LC^oGVKH5ϳ!B^{ybu\2?zmX9Q6hBbX:vWi+Q.it'׵;dCV_y%kf!-IY%)2P'~ldS@ɇ?$PS-X~] /K_l@PkE2*XJ(7>u؋W$ n nk\^M'wX|"~pfiMYc-x 9qFǽi.d,49Ԝk@3n'34p$KQJG?EHpj!gg,L Ѳg7D4Y9\@u5kxuj=cA44gHgnU'Ap-Pȸ&Q. \a6iy#':&?wׯueE〕Yξ"4cdo~P/3KF#|z?ܾLbO_ `1zkʱUomo)5Lܣ[rۯS Cnwz1 u8#Rm,k,6݊@6vkxtxxTC+H>ekF;$5yy'-sW0-h#>y퍂hkefgGÀLx>`O|azr}b6 ,BiDʆ_x Gk24)/.ͻK9qŻA l$'tA-Q$?,fQG&#NYv V:5#jk-i3M.7j9C+.u0mWU15Hn@걛ܿVT\1qe`dy!θt( 刍,mZ2#Aa=MyƎw%Sêp2iSD=V}\D&X.yW^rB%V;J8m!6D+˱c֨ 3m@?V,:~)[~kn\xۮ_XPz={DNu Q|ыְaY5J'{vnh"O;nOM79i1W(^yne@Vˤ(|HHAKp+7LN|-JB$}RqPcUOKZ:hӐ@bTA)U!yps7 0z 3s G}wa1z^ߡ2ΐQ!k5=`$ᤐX߃O|e UO0L-oB[s:)T4g/F6wQך]3vHJW9 "V1e9#l~N݈?B5 YwE8m)jUIyʣy4Nt?}깲@Jݳi,d ]^eR[1Ш`~झ0w9 ˽hWEu.DkYT~WʛR%M\̷7kA\B6daezi`nooYGbg69 Hm~]_#m_!P;WBN6fuHOӇ`1o=Z aT}S1J-C$5Xk|Ā'Is (jb0)` 75,!{oէJ;lң5լi{#ޞ 4ъOfU"Zph'Jֱ9,F/{ $n:?fы@>o.2\N{)' (tsv-)i$RdO5=,rYIsDL"&Hw({ 9mͣJJ'j6}eYCKBdkoA3i!'{j矾%pC("&iB2*M`n IYAex\7sVub\,gz̒arί7=fd^hѷ܊n+ 7EL*&vb;uU4_0|Fp}^mo1ޗ\rRg,%$pF =G̋p^ ;^M]tCA 8\s!" Kӊ:&8*E/u1yode<̍H[i(16'b ?>-"Z hɜG^ k1(֫z1G!MhQYxs!AugeO=5⡻@%N |=}N, 43< Ry(VfE~C"9QY; |,V6`"X") MLs6plhe LsqO1g~Z>|^xHunORёCIߤ 7\L}I38%ߙn PD21h7BP-IDSljꞃһƃ/HR+u‹EiR`LdoYRkZ?9 kC__Q-q-Ž{{ib]x90$S>Ȓ]>etN_̎jv͡k8+R⍟b+s[ӏF @iF5vՒ߂*m!ǢI/e$u\cg%}#-";ǭX,¥XՠD'xxGNo:8za}px~+UZMg0^4a@?7DV!BBuq"@ih&ø#v!="\ؒ,} `{7?z]ItNj|_!VU8iIE"wP8AhOO`,:;SkhBh4s0nmĦbxOzmgTSP gF+bGL7+9]v%;{rsC:qqImT`L;@-4 qʦڒj̋u=T& QA^'N%fjp4~۰O3;jEP=;hOGTgL>= tΙ|=ڍ7$ʵldd|QʞiK $DV)HϙAg"v,I ^ZwbTAW rZغ!HDc჊+[xJa%3d$C rLCp2fh",Pik^-G%X~O&箍7c!/NLo+ yV(xϯV/@!WmP"SfT˰bQđͪ1U&WaC@E۔, dCICij~Dۙr&Ϛ/vԈgɍx׶DbjE:`b7 7FS3! +dbNE'~⥬}9UUpu Mv/y^}cd;@|0&?jxb5=*7?OoM;Z_x!,l8 p, ;Df9/Sq˼itA>ۋ —7./j rP.K>8 v׿=PU˛8۬eSEL`ѽR)Pjz2:jz[B.h%TBB(Dje6iK郜8j& 7@Ǘ;tg 2?ZIڻ<^_K 'L2 ߳A˨{n Fyj{ C\EZ0?xi$UF굈#g9;ۿSInxS=QEo~l+=k`a>`&-:ZGH U,B"}D*>|{F=PZRd |CރsY|c}Y \e>}p8L]΁X#`?m`Xp'3è$,׭){o,f&8O bsmTgs,Fk?K׏-T>t{ћFc @iKB-#ͼ+'u:5X̬pMj5:.JBvQTLQfwh٤B!u;r6U%dzt%&[w*QW2s0T3輼Q*Iw&\|%[qNBf3F %f~ %DIIg/-[29tv_/M,AJ xbAStdmى0aHihƖ{;Hҋ1{ȴx "N'fGnX^yW+oSs. WD̛0!M(ݙC{{.R?]xPɁ'^FoSQWN}ͩx:0XBygZhN.Zl;c?nd;.a#<oedf0OՑ%%VE5zȱk{xHxҀ5x;Z.xP ո@XQ^W[y~ 0t"߈Dmz4P+Ixl7%{ 7~ 'CW]g`dm:sP$s $ y41Ё`Rh}vQtE0$u)!Zxzms ?hz~1GN_ŋl cUJt䑴[-O _%e|r)ՙVA#O p:#Yו}mؓbp=ER"PQ Cf'OѠjp@7ã@k}]g_\ZlK 6иHd{o\-@ %Oh^btþӬQ(vv#&j}!lߤJ$y(@87xGQ!_%F9 cJ\ ~L"ͮtϸT#tArxt.RnPۀNmcMh{-AU=e%)X}@#Z(2]7F$#\r6C =WE²OF3a+˝wr:F|#!%t`-%_{wX,?Nϳ͕O]`Yҷ/{l~PQK*<ꉻ+E`H_2] k8WuK&rYǬf_{jFDҐ|OS М ֯~nymx8]b6ifeꂆl*on,B%ׅIv'kq:8!tCMH^"iJxLTJ ~ˬca;{ubI@˩hAW5lLD[~pM1 v#}Uk뙩$D|VmlVe; kMhP+iQ).g I>[}Lt$K~<( D*zm}2qP>ٖ^7P5M{cy'.)P#P}^;> q;͸'D Vh/`A.i4=;(I"_ Yi}^kEkK@kIS=m6P'y+4.ikYX;.)F7N!s =m W><ܞw NF>@ͭ\do\}* [,9/kzیy`Hq-mSmA>_J^sv;*yCybJMznd$zlR̓К }H ͮQ آBJx?j{ R^cj%|ؾ.>ɿn^r«6iLo,rʃΜo6qD8` CGwRY.++WEP]=!sH?>H ]_N1EvעƒiwLxQY^^)Ƈvu3E9,i_"Nض2yS9nT ȜԼD~D LJEK;x<)m,:GH#rAT4L !`"R`Y&71C+Pm#a4H7Fiff1U>1 >!,,<g({K_:myaqpȨ|4{nLq ׈ˬ_PV~L"&HEpvPg.ӳ erg^VX&:̋P 5N_'4#ҿIfmCYlh_$΂~^^2,||)VGwIwx{p65Ɛs 5;X!MN1~H%]Lyfl\_m%@BTM@a;rƮ(-Ձ" I_2½$NkS!5Zs:T].,ԊL2R,{@|~aa[,Nrg& +WڷGlWKq0п@qҿLiF M:oc`كΏE%SI/?;p҆oבӜ4 ~pF06͖ZlrGkA =p Ӡˊ0K8:fHR0cSUrsמ:-s%:w6U^ +Y RsǦ8@Zbj/Mp5VA&w]u zJ2pݺfcq%jWnV qυHT9\h-iV!%fQQG=: ,ſEQ|I{P JA|JA;޳/7#@n, ]Y8L1QIӹ&@{_e`nsPCf!*u!ҁGL.0$G]ʳ B%[sKV>=qٛssU,&3Jwo_ ݽTw=`lK"k~lh1 goU,"΋kM VB`Uڥ] q2-nGaj[+^9*YC L!tX4^aTo F;`2d2a4>fC67]Jjau&A@io` _Qdv!Ƙ[UW:_6s%:0k ;!4(1/)9)eq90ʸagx^z'N }W"ީi:&me5C>S p?"u@L{(5E++lJ턪+x :H@/;dK]k+Ss_^ՙ^ \_מ=VA~XXi%ђU Hhۓ!zXZcTPe=`p_mV~_ʚT4tk7}c:Yϧi*B:SZϕk1^瑃H<ΐ㝚#2‡u)8Ag`|``za`nZvGy[*C &!UIgۣu.<]eK³f7_a?_?u9Кf\U7ţ=L{"RϨvMpr%xcjuf)h"6²9Pwn5h?Q ƽ0tL&ק?tɕ;@Z(~ _}& l."_\V*h}zZJ5&<7?abtREAY v3au#|,Q-H_.#X ;zC6'8?8)?/YU1 }#v('>ARIy!a]M&Y9(Jwok<!UKG@π #|i"NB)I#I;|6$>#Iks .SL|n}G-N5otP"|-|mN ;$dVTVؐ9We%rL+>!X$0 + bz^~V D}sBR{U^ACc=˹IZE ]SV׶dyb 2ʽX_9{P-  KɬBh,J?=-݅geH-\fIH'g9aNeCU /R̨VTN,m1 )$ͧ! ̟.E˖ޠ<w&,M4ji3- \Da[tY+``'v$|럒e[gd#`c6ؼGS¨CIJҥ]JIHmf0WLpWRC^y%(JxK7qk97Aq&gReY3LtCb؇ˏR#~37A3*ӲCM9Nj\0'IA]}Q԰N{#it I_*d5u@B!02ꤷ(U /;sBA%>&I%E=Kh2Bs+ߔPRIݰ2o{gPO׃q؉2sQ:Z $fݎpc{^cGrl:{-,2A Vi( @6A!Ӳ?dZzVʪً䩃xyk-*@"&F>ɴP~D1GFt,_6G3޴s+QRP\AZnf uqFAg=2n)morLih *_ZBcM֗,BTpLȃbsbd)N3;L>@-I2O6{SsQU+ߩz##3ʒ;%X4L3/<Qh= MgCx"z.{ /~=Q w|ŠfR+uqhECzkϐV5ZX[+GnbVN?p"2-@@Vaf}AZ{ &U#R65_iə&dvhyQ $`.&lw$G AM%7EW6rB=Wkv&ؠj,]\rc0Boa 72̍ bU`' 6hƅF8ͣTܛr%28LJC釞B"6~=dN|`*IJ7n(h4u&ϳ_flS@[ g.an5)J ;duJ*e-XآqEba*w J>,]W0`#eZ7,Yl<c'=fGF 狂)@}s&P09"g)`wqDCo\G mo9Red2ˋɿѵ…s2*"9osL{3w_'K G;h|MB5Dƨ\6a{o&g\p.UR{KWX\P0vǃd-lސqWK5Au9m?Hm_k1KAxc8:I\!GI-ڳ >MmC(̲|f3 Qy:#ݟ4t#U@.c`~H?%L+P@b|\ w^ɥyyPt^6oiyDYj^?gRPŰ!5\04xxWB ^֔fVkv[$SR1*b.3۵h7q-DIhjR+ A҈?wP/Sɳ ,߿Q=#+dk6Dx|U >Q,8(͇ V>~ˢ 6ve] RwҤD1AǤ" G\4YC7 kBXH%52MLN\7V>7e }\S]eZExZSHPGk*nDc Rƿ\gXSEX(4)$EݵqXOQ`rbV&} k\!E#5N͵ZƦnyxEB>-nF؛FBi@ٙQ-ͣO[C7aoطF(`֦c"X؇ UQ>I:G,t]\WDCLs,0e_?r|D_ *~f6R(vM mύe}RA4BB&TjjǘRZk$RA'2qYIQJW,EނmwD•:^"4.ij򙀍_ ";9|;\os_\>N'%$WX u؁Uиط#qr:4&2s.GL\|m):(ۘ`LL:)oF-߄vuI[,Ls" ̐_r;a0b8033 gt,[v_ny M,рI՟56;i]U"2` m\ [3X̚!F2 )p"c;͗)XE?4ܘcCƍ7]V,.%CO뒎a)Ӭ}N^|vj<`˜xVS,\]W+N` .>h?q5T<O߉Wq.տ@OڈT@IL+v{2w(~O?u|o )EEolhL^fRyk+Lq8䶽]kd 5ѹmE㓜-GU8U ;5+o x'֊ -k.5wujBҩvT tA(fZfg<,N>@Yu{FRRsbй<7d/=9StHsd+e7"Y,k'%È/7BèdyB7SQz $-˂oG (Y, YQZDGTM@%'F ֢fl+XDo=ˏe҉ƥzҶ>P/]](qcFm7Y _tyαs|VICzҾ$E:sg"_|˘xC>Z(ٿ G2=iL>8 ^=K F ݽp| ʵv[^e# ~gu{H E?LZ$Qqhr&y/NgFv{+9]:\igtAǏ[5{ᮬ&Dohzaܛp.D%40TCsߝj)cjʓKm/)r)N؏(h?s4%A)CEDۅsA=f@{?H {j='?+ylRkNMzm*]t_}Nk~ 7)_u4y·{Q40S.Ǥ"i+u~oӌ̨BXp}$Iա s,{b!T~ϴ'ꅹ4\RiОpt<> w7,_D,}L[!ܷ|\@XvM9WØR! Unhz+Ur{/ ^9-uE(0h'4!guRa&t$#r2˸tQ<79~(RJ4,seP{%^0"ӝ)tUs.:g6'\h#w eSʇQ5ρjϙN'9[p1C~)Tpn'i2/O K YB޽o)~ev 7z0mppLzi rO@)WSM];^템t0G{__ ^"8_ڎ=`a&fJYӱ#A@" (,pru{;(賣sU]}k'p{JL+~ܐsnL2+}mN}EPP`np;et{C[x ]wBwLsѸPwպyخD(i0!ᓠh” Vcc'*4C]$|Sd1PKG5|qlh%S6>{n΃cdfK~mq-,VJPX"Fa|̇?yHmFbN̂F=ve&; 6_SkC`E{ t'Hypi3R1~FBm1#뛋|vJ+7}X"xDogX87w'_7kE o >g5[55=Xc [U?CgdBw+Q[OYcťjc˟Fu.x=G 8%/BHGOcLzR3?\q̮-/C{C93'@狳ߙHvXNf >EjxڧndCjvt=;GFR,Tս~IiOx1 t,=d {{5bݺ3i2+4JJ&Ѽ[An9;[7JZXaDOKGd0G{+}ۑz-J+gf?ev(ڸJwi1v.E0sqѧt%b!f@Շ)GtBSu5wE@eMG(+%'$AJg].`:P|Q2_(ccLtéb!|uO=R$zF&d! d0Nkf|(:Yk(P[QTN[O6{3E !gxC r0þp|} ]~~6n@sX!p5oCQp=\KȠi4GI)Q- `8Hɰ]C^63)@}ZUPw)Vw><ROO,Zpֿ_Nٽr \s, x@`}}cPS(W> E)iOf!? 1b,pI[ &CSϰeQR0+V5K7,}/BH Aw:~?byg8W䰏hu(lTltxX"P s[arJ,/n>F,R4K⹑ A;LS+|VyCVS4wev497^E Q:@mazw X*4~`|ɺ`:]"-Crv#X`Heʂq`t`~X%(_BW;LI(]^{zQaZȺdpcL!FSu2bpGQgEy1k `*eTs.Yk:W\@+ Q8`Yc"7Eg/BƠ-Lz?pOBkqE*/J!gO*w0 LšdЅ$m]T s[yEB8S::ѧvIWabȊh:Hd w5qM"]5pQU> `˯xZ0hx8;?_c0//~8z@~XU҄/c4$R>qMNL1 x!_&|1{=FE~w϶9}(Ɏ-/ʞ`iJk 2WzGA? SCPKѳʧ lO?%e'#䎓/لܤSeٯP\n3Q$07A~/WhEze7jt3jJ@)ˑ3%ؼG̈́~+f_"6Hq??`'~dvgū;Z{OQQe 7-90,nޛ}%FnKuW] "'l;J ӆCo%>' Z#fȑUAp?cyl-!'V{$=߷M̶1\ThRcf ~#4RW}[;fuU)WN]*IӖ$/N 4[f M uƉC?nY)\ bʜop^Iy;WO0KrPڤŻ&DH8b\FaZ|n0jBT2( %%Pu/aP|jK{N6 Ow;$#ycp9ƊcH|kŏ8U:Z _b#ә8@4壠-VC ~tF~$yv OWfm BLYB)h422.Xɝ}Bk-5[ :O0(yۛhrTCG0+_ ai'OIs` @ed]ןW?(ʎʾrD_e!v1҆#!p֧Rl[U7?myҍp=.jRUHwcdAR%[?-璥}px^uBV^!g(וFѷ/y}稯EЪ(Ëޓܱ m'4鋱/5AD$ĚFz|n(W,=soSō%ōx3qbƧ<GUxһt9X4Dl>m|=?MnrzSMm^@dB>pԀպ~zÅO]А&NuV;njcp~!bGla^yk8e<ŕuH Qld7LULslP4)1h>yX&~|'C%:w8ƜDy5`3u6M (@0Wn:Fd@1*Du:cWwZFDli$Łvo{c/_KWUUfVia'=8u3h!u /nlrZhL]]pU^VHS$aɊ#b G9dʮ(6@n*Xtw6G3vO"w6Z̴7ktYy/ f4 X m3,ZJ/ȏr2~J5*F$]OQ]4nmŁ]5 2C2:M:LV YESSdPM骻mz7B$_ Fu ώč^. z̗[.|6$`zV[~L1`Z3Aew^+mbǥH"l#O3A痊0KY4V%M i.XU !p>CHu @a{QLի?al4T dD,#-Qi)7 wjBjoզ {5}Tun 4)PɌܨY'p׺4S5Ors`yґ£6ƥ/A)Pu/R z3ƩҎ B iRm'ͳDHlg;14aH:+㍯D%~a!KIV%Ohu I:,dy(~j;!rRmJrj[g I*FSY"~ܒ(HeYs'ӄPNMKBE̦VwiepxV}q@q-d%C6604N KVM25iCl#z)Ų:zk2oղlvt짃GXr^P@ں';g)(YAj`kiZod T 0+-E^%JCw^6 N)tNi5:}xH-X,}Cȭƥ 83a3>2P x0XL9Yꯅr5ݳJiY؀3nKC$x;徴̘ fhf54bsdb`%CM$QrȖ kImVpTJ`\M`zble9@O˓ԩձmQ$kb!?AF>|>PεN8OҁQH^fUu:$՟E{B.+{ Z 7UHiҼ]L[ \JyEaV7i`HCiӛ)e6+=și-O|M>1DNтCɲy ^4ReC:$>Ʋ#b\jv=`ޞ8od y.%jD)3=k^pG|c[N.J.xbB\Qd@CÛe!~0 F{nd%p$8;?`@ 1%P[f47U˒¿Rk-܏y4N,*rfC쓝 ͣG=f|3+ u9Z]zޠ-3ƭ¹3߂d)S(!.tFOAx @LZhA3 RoÍbKE y3֋= ;|h-:1lϹSE"di=OV \Yf1::d2 S>_RdXF=ޮ/0}:@?'lb[ލk;DDzLt׸! yI,ڌM3]vLJ0Ȯ ̇O\P[C/tIn@A?a8b-V3|#gЍ`,8׬e7(EOrue`N]wJıhQ[#,>,$ N3Hm 0LR){VNs)_Tǿ+SB).cx.R puO,~wOm;]n?xR?-ph$)FfX@U(uсa^]c14;bw4>}:1_:5=-P^I!ё 6 dGe66,P_..`_骭p~F5EMhY ``I -]ΏWV/O ? \ѴT8Q3]vy\Hv:qq=`|婁L\) +`7rjR=-P7 ).\C q5gP)BWV- 5PhR&$0'S.wv tQdV衅<-^N X"ؼSObE$RxފS16sK[ovAt=1CKk5Tj}9Sσ50mw*~c32B|_{ REﻓ] aщ:MQPf )fo V0릌LZsKq=)=~|{_:TPކmN'fGLGD/Ϸ1no+t9ն?=У-H.bPW2j il+QVeC] BHPWvQQHn\ҿ/%"XE!E2@vL7[o_&vȩ|by&d;[,}CsEiK&厤TK-]J LOh y,tU<%Jg^yDDU~u͌=Ǩ-bJCT(y~eR'r\luǍ %~%hUDGӌ22/p $'Ao^Oۿ<砍wnauQ} LEH0O*˦=x؅o! un,f\:Q;O. j!N&Y[$NQXǭ:g"W'j {ݎ7%`LzJ>=T6IA*x !17* JX&h+'С5A&z=RLBF_P/4E$O?չ 46w6~02:I\tNayQ0,BisU ;5wjjk* z?E3 I$b"akyOڎ7L:ݳ ){%ĕ&LD鹅'2bB?vMm^_ DR~! `$c V * R͚QEʎ|Bh Јag{6^\ϥ$f!gJМC_zU+&p/`zJ,/ h!#pI' / z]e"쾂WgVK[mtj 'm󗊽&BMBQξӓa^6Uh,BYQ" # !̓ QNd2R4NRc{Z13XN1O|!'ia~R;doӒ%k -:1iS.H^'~ ˟,Rj@i1Kd$3T7z ,ʼnŁ:A+R?1i/_T`J5 Qjz1hա" S8O9i\C'bW^ZKSd bz@3xZo[8Q9zDX#&/nƔȟ vGf![I |(MWfڎI>'mFq&lgr΍}pNs&Z 2)x73r]^x^Nv{٪<@}5H9&DW?2`(stJ,_E?ؙ, ?^U5PIFC?bV"fܙ/XہqO\'dͩߖx:t3;ހMs?Bpk9F|JM؜C W|Ub 0XHQ]n՗=# AEۇO1u[`@~UY6QN=;D``Jün oonmrj٣SE,$ D|R,4M (VEzi4 q~t]{T8_~MYC'`_h4'7Ky||ypnǂ';_*q,GšH;^,&u*PqWܠǎ`l};L~zcwq8X0f6-;'xhahiگr?lt@GeЫpS+-IWwYn)眑$ffN ƢzvϪVp[3`,"~WKJQwTPCwiţPi[QhrxiX/Y8t?>GozGd4,5VkP(sv˶+ pg7KJg[B*N{<7('JSBC;i_ Ț'W^DRƪC&H @̕%9,Q9n8os(揕/RZ=ɓ{K mS' i\]o@TOKf̼2Eȅ/Mu^^k>lV:+DH5/1AZ LJĬ:8syr^>d=~V`{Y{6K&7^Y~[o?y{7 cp@^>xEzǼ *U½hwyXe!کp/ ,z/k>t8LOKZP *c6xɎ_uU"bE'd03v5 Ծ~h$΀e"Y-.AHm8B13U@5% x_a_xhR W= B8m"}#I;3LT.k򝦞()#8jmV4˕ˍ|'lkx\"}"*'u$e=*4A{NanR{{`l]jRoᾉ[o^ !YŠ1/ 8HЦ2Y&L_9kMՖ[ckH7CNp04 `{P;Y&BEt]=_Jm t R9\0KpS_ Z 'ߺ:!}O[Oh䖸deqdE1c/32a"27HFP>qjzמ]^2ѸCABfq.UktYYSOo A7`R^2%~pc7Ol*IYJMb=Qڝ>T8WT(7zl.+S!>fH3T1׊_!u׉ւ^Yvy).:S3Y6ٲ uۈS7o[EL"7 ,*3h¸Wr53iBbL:R&5{JK7Kϓ_F 2_CGXE@/#â0Zc. ?UVM $DY<ƞ0 {*WZ\vdN&$T[dwx-ʻh<,e$7%ti3w ,kp'^q".|6@ڻ=V[ЧUGjY@߀j(ȶǚeY\.1f(j㢦UU٩w-#ƭ8[[dn_0Jv%+N3\/l y+,&yqcE-6gĐ$[o.ҝ#Y+4z \tj;Qψ 'Y'>'H6gcUqxDO(ׅo1y (lZ;s;nٜ݅[D\M#R Re&MZ_fJz.SG 2 /ţ 9Zk.Mm2O+w()ޚx9@Ͽ.n>LWl pyٜmz鎄_0bIv-pG 3/eR\1 ('4ZtCAA~ň+QMF=Dwhh˔9㓨ٶv?&Sc.bںJYYPwUGa\j*k!3t7/yu'_ƣHJoޝb )[.LJyRՒ;Z_AXt(\˥mfzb!QMYF]BP޴9f^K~ThcXeh1VhDex .[Js"R!%yqRb&ZcUnxM!H6s7*ymř) {t"u7٨"3sv.ϱQw8 |x#3϶BVn\P =ho]|2=ڴdoŅp.FY:V߻N_Ƭ&,Ciŧ]νK1?cqVѱNt),nX{292Gn vJU޿E#!; hxmz3jEdf37[M% i(w-+D/WQEA6τvxsUtjVwIiQpյؖJ%2j;NI:Wfhr<&<+@@CՖ2kp8FwHC#P4 $dT7eXe;HoR]6rJjg\Wtdqv{X7;p|jB nXW.VV9Hq9qFxyl0d$!t20wa"jW\+&J\ (\:~QIx!`ݼ*ٽ!Ie>&wO3 ۱d -bDotk*6(-M;`.c~TGIR I&*hD|Ba 0uhTɶa6۸^`9fbZAk2l0ҕ'Fl:@X7ّ7II<? [d!Nb6GMXdFG8u)hVh.}h0 n3Hc͏IfO* a>B0uf$UU"ɇ )ˊ=%(-sR:ٲDv~'iƍ zs6ۆ1ٙ9V)t8 Зvm{ / ?jmKg!:ㆧm&%'d'sl3l& Ltl~=t>|ևq)$`[*tp`B[BTGxvk֤,_F{Q7˱uƉVm55Ad/wÿy{;~IR3[ڪap^8/E TEx"[,V3{vJD8dg 0!}ϫ[HI *{Z᪢{RiefL;<z6`S d 15=܌O 8޷Hr#b[-{AS`,#E vpAE oYuѵü)2UUb>t#@iR6.Mjnhnr!qK3:/KC[=IZ-$R*<箞Dkc4!#ŽBT]$0Y6i*q[.U ش`]*FawzMr16Lċ~+=X+d!w<]l:ێe'(?h tńۉ~O\tJ'kakIoWd!W/3M%9x?Mㄮn˰LmĿ9&ڬx!]g1pS}"0ߐ U+׭8Ygy0\@l`KNx,(K]ӥJ 6(J61Bd__M,u>og~+<zCTL;  bzQvWb>':ʤTS'+N ?}1ӝ |,h.K RMiVڨϵbgdX>:eBh ^;UZ ]5̛1q l^mGo?] dG_i]}qjbiYTIN >Ʀʑ#ٟ ; oNoaH%hȢEs5jwhV2=|^1HZ4 X=*TP.:av),6;ڧOʶ1kVqZ%^9y/-{F"E=CϖO.]U/}/=a;vl7`_ԵELfA*T9w!XxcܞgҨͿ1q:%5})Ԍfd@=ۃfܯ6l`{:M޽cX=B{ d sA}8~iq-e7FuSSW4]ݧ@>Kc1Ul'3,KmvŎx(*<FS2\eu~u #q('8,@-/!"ёx!χ͸?|SWM7Z)&a E+>[&)gݰ(Ϡb68+3Ud\Bn. ' ?WkDAW:cij'ɻipaw<0d SṿGFUBsk5_E34aKE+E蘦? X[oD;]<ۂ".B?SU oDyp7lo)dEoO&B13we2lϾ;èIzs}7%ݞWo":P^fZfEP\O$؊jZf՞41@3>YPMe/2qߦ'ɢblnBɍz $"&ڥnukᨕpTu*Ցddj4.k6[S$ '$LRȷxp׽n)4oQI/lϩ4耲[@Ƕm [ ݦ`-i4=BlV\|Ai9~GèۿPTc,HDdĨF/#n^6MWK_ \X_ѭ+q X\)Ee+bC$#wDȭoGm2^4ao^ϳmwL5PV#9N#_֛``Vb H/aBk՟K"&{$$=VE$GrvZFSjā2;f=#҈xz^d IKnLhN`Y0̧Azl\QA"#VpSLѡa=!/@ϼ;]I9ج} \$ 6wBK?8\w";ho,Ac wK-R[wAx%s5 ^cCtf sm8@PyݍIs7{&z2<6ݚ#Dj]hfOC )8A o|3|iͱ дlة"CqP,p;T_od0L 䣆!t\"=6 * &}wVtY.+7{x2E5GQI㽔"!;t5>m绪>F&^,@zƒ vu#7N'2tEm<-ftRtݒd]j#pr\1q.X#Nm7*(lk;Coe0q" JTr}}R{L j ǶIBwkeK'aU_@@DLwd됀"^m'`R+Vk2*Ln[]"NQ?TT_.(Al5rjFa,J2Vɞ9Gn}fo]RF~xQ- j QX}CHÝ#[#4 C1p\ nE#\We `И >챪0 Ҫ(X.Ϗ ʔ""#jVayMU'{qd*();Ot亪ˑs5b@ݛ)6xĴ4MV{7;g3g.9hꎭEm!4~ath~|ܧ15`c23Zn07if(ǫLLn0~kC& JFX:2q )d{du)w6%7=+,;x<3IAhkF1YYf?w,vKW-4_Vpuq$w7cu€JH/!vA>>`hf_){nB6Un+NBMGi' $By2\ 2Oj I՛@"Pg>| A7b.~0v[mҳgytzݾ5n \$PW+-F!eOyGuex"Ϊ#4 J܅Gzo~vD WR(䌜 |9QҗB5D,-#4@6ښZtź1@kOni I\0jJ}vԉs;IWΡ3"c_7ޔI-d]U>ֈ2Ry7wƨu2NiV|,:k޹%P{y+Em]-=x溱YIK<)1]BEdzY^d$Q4{]EBNAqsF.%o/EdGj_d$p5JdGA l| $gn l9<#Qf +E0BQ޺jP<0܏ǺekGҤ%R.6n|ُpD#O,3hQ@s~\V/lm{ ڹ2]JP֩1Th;pfitQj<7};z;g騪⻤~Hbv*W\o2 u©brwA6FF7l"JA:5_^5~RrNt2&ݺU D 6}J~H6c-4/CGj6.ޓ}!+1`JzGMK0R1 ]Ȇ_UE_Y:nO?*=ad-~R-6Dإ'G|9X?U 4ABz֞9̌vU 8^/Pa]CMQ"X P۾#R W=}"*u2]V~Kqo]㕀B*1]1z"ɖ?ڽ`+Ŗ} ++x -27Fu4d%L<=i"9fR1HۅWbG'JEe<.2NE!CQ% `3ʭw,4~[mNtd}7Zhq!#ޢ$ ؋ ؀- vbfSؘ+I?AdQǩZ \UK2e2Jϛ-$ZZSs|e#7y2$&Ё.=P*SzB%JE@_]v1fGCRq3\PՀx=G6-!ɧ5⿝,mW(ǯg#zk]ě(pO N%TY\xVn:p=:Qx Wb$;77qFBbŊᲞ[%Q#$3(Y|~{)r|"XG"Ŗ,dHk} fVO@*T&"D /Oώ`KMUUSGSš-Bbo:If^*6+WeAuXeziI4+ÖM3=@ & Xav\jJԕ$QK_<<{|6C@q6DHq[1n@Y%u6&!(˭zu]D^EՠiiQ\}tpQ6\@Ţ qc?vè%(s)+_e]-p /ѹ[!M=;>N*>gcwKba^"CykO Kn3$ NfȆRTd|ɕ$IuZ*==y?%*FK84+?69/z'WD&XZF?w!tŤ,ujBT[:zmwC6P%,v5|c\>9yrJ3cբp@#M֢{cuZ3VBX ]2 ޞHAʰoS{)+#g\`x:;FpijZMkAXƑ1EG5'v_z8'v/GʉꗑAXq̶*5>o$#3r )%.)pz(87LY.=Ƕ'WS'^/Ld#ʆ?~o3eԻ6Lj\ 6ا؀V#t"&R#gt|=a/`:؊Q%9 XBr8},GjIУ4 7,8mA[n({a@5u]Pa$ sI/m޷IO|O}Y/ih3*]챚Rmx{THltdկ?Ƃs܌LQEZ͙W|Tk2>O4#7fEZup E) @L&14:?xGK@]CML<~>ʳAfS^<kfh3kkgBΔ "3zÅ~̔;`E.z)vw^ h9=G*E& l!_^-dC.cX {ߜ6t N4 X1y*4%Et6d(NR9 }TmIv"\zg~B/f0 /a,8x>lʽ?C[Y5/y]KspXzedE=o)/#oJF0&ڣ󓞳uKcvI [=zWCa8&Q?kX)9 FD'o^V`z >M X*a}Xz<:Mr_ Я,a8$ ~.!nL{KW "݊V}?cͬ6>5gY=<h+?AѢ7.IǙ'N^oh*wJ5I#$P 5%%~z{)u }sˣ hugbt:LOh2xd?)OGΙWe?R)E%vf@jO';M"Lb.VY ZsW F5VX'GAzYL,}Q+7jN^x5I*ILw66m j15<< ġߺ&S`iv zGF57PHwvV:DY>/`U/&blRזZ~i+p4v`yPy'%lPVeڞ:q1}("흻Պ67PƤvl7t]YJ vi pZ21K >K3o/ڻcF@V©Zh`9/1a|jU:ʰʕK|MD55Rt~\f/`ƫFg'};>O()xGad_ɞFE]kk7(cs!Sy FS;ifDI5K;08%c'*; {p_c 8~߉؃/\ =W&{^(q9mޠCveCȻmFWiyTluDA9R9@EaK6wߐ-! r9*e Ya=W-r O:yOJi=܈5bV4}bٺb*WnKZz8 ߝ Úpona:,JA0vG])$q [i_c{>qhlxO < !m|7]N0cz֖;6 "WS@zv>hjA=D.H@%#2_&z"/Dr !̹1iصGPh _;z{r/4#_H+<i!C܊*Oz gk3fs 6SI))B5bY?v/ Pk9rIy)_Ip0- *Ҙ|se3̫}SSAIg[|oq5Y[i[Ԋ-)%*_)RyS.LLS9~ucT5ŇLm=}\U8C֎Xh"BJت) Xۥ MuY6/ĥEb8CqH6G"˺V1dCB%qoO:!!YTT{sĽRkn̏ށy'bl3c_lEқTN`s wG%|L$d%# MIso kT @ `*?c$_= ;\~|Cg!E^ai4o!BR i#@GmBJ~GHx(X'!&3mm^JQ?FH[1ك1KHoCmn\~,} J 7NY>`[JDUV] RjVFxݏfF"SK hAxr !,/x{'".17ʬ;zeEעVa_rV+P&#:?֗ wg$o\Gֵ$kh";I+fq"Mt G?]~VP\*8%. xP}=ZtWLA8*ٜ4A)~+16MRʩnZ.<"#ݬ"جLHX.?_[kO6dN{v WNY.!,rvS)(钦 Z_XssWg7gѢD[@Wa ,ئ)g<ȘT~m+JN:ba$x/}KBfw>۷8IvW Zf;cR0-y{ݷ|";Y?㊡_Kش~ecֆ|\~% 3MݦLydRL^1Y^O_ajI hRom1VPVyj7:m݁Х`#^?{^]1/5d5^-T6~(xL@"ynQ K (c{h]m\vqO0qx܌iVO_ب=Tۇvt8-r-Rmѕm+ޥRWȎxZ`@UJ3?<TiMQ ٧`1|=*0cϝutW|>m xن{m:ILlHf^* Z_2`f#IxG"Sq.ujcvA.)?Z͂GlDo $\[ oa2%:#߼81AWfEY> 7dϽBZWY,Zos,~ڧ21~nkh3&LE\ۻd=XZF#J .-{PcU1U4 4|PUɫĞ ~"3(4ҁsf3|6h`FD9&վo|Mqq$roE#W ь͝N>u.EY LӖM k65M]SܺGR'5$@:ĿUg:W9pwNe:L[3͊ nu(v%O2YfxLq;Vw.]>5jr6w/Bxp|˃BB[A(kȕJ+q{|.Ud,tt4:U{PlwR谂:9qdň. 'x^l B@|x>E皋D}āfWѺqsTJRhKqLn0Zq},T҄4&%R 9=ݶ$xQ`P7"0oP\Q^*Te kwmCv0SF뾆0xftmp=Hٙn3 I!'W??pD76a:|.nHa@jj|SSc(l+Ec6#B;YۢЄ!A;,LjZճ_V͜ M㳛[iӻqجhJ-ޏ=3M#HH>aO )\X;rI{ ~~OM<(n"fn/ªHJ*òIsOI%w<"CbT,ԡP8 H!6fʚ mB|<8:*U1!Au\wDvIg* oAfm \W/+yӥ`"}_/QZ%54Sukk]T\nn|1} *e2(<]Qcu]-㇆,$kz6oEd,!_Rl}Q./Brk /&5Q8ѭ^%V{Åh:m9 تA}$Ji[S|Jg>US19=eBJ&?r]jF0QiE12aֈtj,8 ̺.yAdO2C;9ߨ(~91,XJ:iOlDfy}:%K_aDh j&"z2r;^L* KV9~a+ޑ }M?DC˥] "\l@fshBtRh"A^C)31uQꘟ|и̧C6$ \ U|o{@([g- FKRI䟃vdR(BĠUv/✗_ra?!2|(4G hYs^:]>,w1ª&FY3trstPX#–Қ4@A&;e)rWg:AJkBHF֣z{$JN2&{ YS jΘvΕ؃S*] E8!t9Sk?+!OL@kO* ԲI% GM~1M`0jm,n$xVvUkk.sӔj7MP3ᅙPxb3QqL@'SA*8.gZz$VʷD`/( \_`n9)^ D?BNE:}c)?kalIqlP [ :M 8`A+k߀^cg>]79I$= ڙ;0yk"uY*8DS~fUkzqCO-J;/`{t3_ GL9i+b<`(^6\=3d ղ~aD6Zw:L|o -s%Jfk}YEOy=ߕ:\3VvM e5;ژJa7rS ~2݆oO7-#I^rҘNYkov@5_Iߺ5Ȏ? C OB&[u+bPFx{gZ L$tC4ąޤ&fSAu[kՀ*fjאw|YD"upzfH 9Wh=qi],XQQ-;cun˺ N/a$[ )X8 6{VWCFVl/qLk,(ÝAz*3GTr(`d*uJT֍SY+OcIi.hBv-[s]3k t_I9VݨUWFxA*~n]YiջySxY Zj{Oo4j2\ʦ{1N4m>7y̬[5E*m\{xx^oMU_ƒH]DaGT2*.¬Q%0 ÈV  )_Jl7Pr+H+e[L/7Wߝ!>WD16ȷ76YoDB6I償bG9M6A\f{'vO~8&u0-B!^4d |f|C;ۚ?aQ#k? tE  k=ȭTc!*%eo *1FƼ*FV:gzd=hXU0` /`f[ dFc""Tl0$X4:!jސ6Hr${ϨFnY ~y/dtI65QJ:@am{{vpvR@ ^yC:I#  :} S"|mNz ՄxOxU#o!qMP%;M%@7) :o7GJ)U2ᬭXu^y3Rbf EO>ۯk'D]:EdLTtIV3[N|`.ZNwLҌxa6ý5+2 ix].6?%g2ѩe EIއlUh(<uw5n\B-i{dC'Vox:twl+m?1^v~7#gX@zRꔑnԭȘc@uAӔy'j +N^Q?>ֱSfgC>d_{Yai@ׁi/ju}9s7%s7^wYKJSukb)FOA D֝@#f4Z)lV WO6_[gEѾj3+^ʠVUY\`^/Y[uoʃ-O1"pH ٍm^Gh}Ls>8:8k~gŊ(أbk*<3S^\uubUd<~nwX~ޤQm#pSckpr9 A"-(J~@rb+B򃩬ܲ>2$G~u-PS$=?GLP*M {2N|== @36'cO\_42_t:H\盌/ӚX̘H͚VّiR=}UNoW,HqZtm1y^9ţ*@3C 3fg?ѳܪ`iu?קz lPA&ёŘy˫,f;R jI"zv-g OW;$~)4}E`: /8Ch&_ux}wTU`]qSj4#F@(avU`pMx2&7 38KN0"G{r*,NHj~]YkOـmO1`{m fWd `lwѩ(Lj73d"*֑nF~[\N`@VhcweHńy"E?90\2Tݮ}S<4v#E` }9vP/ Rn۰Bk/nAd5pH~#KoKr,%{%+ DZ/=irU!!m7"M' ʤ?ÓatWF]dAֹՔߐ= (t1!@3*vQ_B~~%F^-)uZ&f@GmK\ FвZ?縤= 8%ܣd $豪a_`Hc=l#Ixwʖ٩\&,GfU$g9ŵ=@W ᷿t[ ,J+0"&P\)ư/Ȋ_x^y:E0LK)nJVqsd&ZA=Уe׳t.)F(:n7)~ Bqop0m nc?*=[scd8+b=xxU5Y~TkX=4XKׄ>Kh? NB?3($$/.I}I>u< Jk(eeb{˜tpFĹV[l6%pD.r %(JX9>6#qcT,b"?CfUNE}o +L/U~!d7۲#{WCkI Iq!D?|#sCm0 Mtt!R8ډ :q9Jϋ(&h);Ԍ>u(4EsH,ڥfg[wNz'SZ翓!1'HSֿHb:84=N9K/tPd Z;^\6}0Ycώ|(|3rsɘȖAf5+ @E$7*uZh@łg T5x'ҵ}u*7?=-#7]Lk9`aI_Xf ~lL&Tڿ_Uw ]q]KkX?Y-=9%$$GUduVu(C;T‡CK,м cMO<-j[ T(XZ ۔:7Keo؝WL_O^sax:*oy }Z6cx.&QCӖ0/Oע-8dDpxnn#{u0m!grWO&jݟ^h)SS!Fi8zC83/vc|"¶ ~ Kt_MFM}xpn˨n YXa5M>*dÒs+T iȞ3Q{ 'nO14rsHy5}I}#X9zj4lrYmN)!d(m_rs `1}-lJy>v#pG:ΖKPP f=yp^ݙ=Vnǚ2 ΥA{w\=4RLG]  vޒ !ZkGx"+'QicjSd݉rQj9HLz@j$rO ϯÍuhx&,LAvI߹ItsZ 'Z̛5S/”Ho}dzrL'd4W4 e=z'/Jӫ{8}1R-Zʫz'> W|KUfo7ҒhEp䱴4"ER2VlVr'Z&N d[g5@t{y@䨋B H]@fWvdנ_l]|p5Զb K8aQGoX%Ahgd`®O V4Es!d#6n;<iA"[Ĉ ]|S/GܶU=Z Ȍ#cu`]Q>Q*}VT|Jl7`58֖'Z.Ļ=D,ZO{9ejTS& x<T/<xd;N#fn: .:):=~ |w\4WMcivPI>5$N;VjCl 3rVol~ۙ7,nkzYJ(|R?h)M6u!L0Lh=NbVLPg$p'`܊%Z( c4׌)݆0vN5H*{uiE)KvZoSyɓkPR掬"dզrJg5Df>\VnyV>"+0$6es\J;J:_H X2fl5O3FU/ET>^c J1(@]%?f$V").b /";A[9gD,۝pQ,\i`sw4Gum*r0k~6{ɠwvbȩNGYYԛn/k2Gˈ;zǤzx $#4~lW=Ptԧ,j"UV3Yvgx<7 nwjx]=+gM=G!aBF^L3MvKj?+lRnإ)^hVT,c:RZh,}>)R0_{B71,WYkC|`4&iZwy!UBA\&юOv¦+7_q2ӈ~VȈ+.P q{*$bcP@/_CKW*D/E8YS+FVuR6잴77-HX&ⸯMyF\.(0Ql>r9#Q6Pܻ{n -EE#ˀ(EIF^~^gU u u~'nAS>DKㄒ#X;jXu!# F5!*ǂO(k}[}:x=~c5s% LdD{h.N|i&ú SG-(;6m|XoF6dW88CGa bCA( <1.ϑZ]ʋ8[8Gd+O1~;;*{BCo-֣@͆}H0l y v.(זq__'gC8$]O;ΔIBc0jtb~.Cĩ_u/l@t1zp3AD̓򮅯X{0lclWe,SW$!&a0+ 827CbHϨ]B¬zisxA8XF3UǠ],u9j:/Uӣ-BOtWib '$#1@0^^agd`ff#'^߶:9:glꍻqVdW؏WMİEz-ROB^z}9%?n9P[T0!`klh\tfֺHj27wPAc"|&{/fwq2N{hZ/+<_>50٬VI]^%3{5_%]?O`Gv{DקLRr,oU<*j .lͳH "0xmJ1̑V@&nIy4I?'!}?zQ>eJ=3黾,(=q.dJ̱tQf~r%$å4Յm{od@sAT'F,~f~>Nk 0XOo'@^ӞIk>{|x[]*8~j^ ]s{EU[(We"H6[mϚ }xd]-y o>p0^wn K鴡59lLkEj⃻ @Yx_orgЌMH4tI 76g.L&Aj}{ubR:#z|9@}L)e|uL nՖfQ^E*0f۲S.qoQz&L c֓Q='ֻ96:/.ep÷UftYj& c-Ͱ$#POlDNQ#ދ XޜZJ9̑=_fzQoGsfwf ; qyP* ۜVPa}聯V@ӉjP`e_%3R;!Ԛ ge n(DSk%/]wGpfg]o}gf V$m ͡I\&(`-(:u=N_R!Ì7_Rri?/:f]*Ր@I2%(8wJ2{Jdއ2K[]n63_Nm9H5ER^hEHkDEMȞxXZT6Ŋװ۠^؈Qԃ>f%ShjXJq@)lY>bBK-^-cT<Үu kw+" gJ/]!b|O7DwW}B59#ѧq[56 d?jσQuKoVfAV^3Pv(P}IAF0Bd-vRvb8}nKid_PwG4d}HYB}QR)E[/ZhS͎,**Ƀ'")|& Dow@ p$G;j5L!>Ff6:Cʕ&v'팟M,b짭ۈ&2}(G͒v"-x}lpPb3_(Ye=YJ'$fq#N^Cn}%&ES\T_Iދ)z1K yjh$%=ȩG \= 7 &P`KɎV >?3h[šiLڸB8^A7n(|S F1&Hd4:H!*Ш .'_uI57P͡WFJ}jgoPBohXz ׫LL@աbTpWSgUB*Xٟq$12|"3斏-k;B`w$=ټOrn!z h7x2 nLгu4fo_ ŰwzCͩTv$0tS$EOQԺapB1븑rE+y Wm:ٝ ?mV>|n&bUrH ~E9*$5+]Ȏ7MBjNem-4$𮝴]] i-FPLƣA/A`A|b t(&Y*~tX+@7`+貹@J9 `ư:#g?ȲIC kCUJJ'qZ8, PmoE3nP^wG-%W(Z^L6&I5mQ3|^fML,Q14%ޭm+aT҇5Ӻ,vh6yO̅r.YK/0_#V\փ1T,hXrS-FǴxZHl4 ȸmwyJq< n_t+?Łr݌66}`MQa LMĒfgUtڧO͎Eض[/dª :,(`2~3DlCi6(@1sEY ܂3YV'NDNPC3ؤ3+xL uPK'b:]4ٜbYo s 1_YBZ~LpS!1vr $(Ƿ~o!NM#T iօia7b7! pЬE ?_O7ޒ. )`bx<ǯя.DΛ t\WQWr\MuyIx 1:־49 xBubI6+Tm/Z dzoR'ۗ#?P"\kw_&-z̶zN-;TtD`6;e ?0(}?J&V;%#N:.ż^o.-[vXD2`Ekq0$G $qws;Ȑ#AX<5Y{x/$k[\<럆!-U ~­A ؛ɥ ;DA5Ep-~@Ȟ&i!Pl=|(3WCOYOPZ0ʳ0{:1P.S(n'a LC ڑ&jޙIO (V+($ :ļSJ)Uk`5ݠ! VO2 [4Zg퓇=dfƬgܦϹ!?Q6 ۴ ⭱wO[n%Za4t+v*!gV>y!M,RTFPrN̔;1;)"^sz1H/r<Tm" #<͇tx_5j lR0T;i]V۰" ⿝Kw"b&QƋF. kJWO7'R)4߰y/$]H!o dtά__ȕښ3/ s2];KnG4;p=dh!_Xi9tw s/ɵNukm GInWAZ`X&mqw7%k\>t9[ =O`K{TO; -C#i%>a$Yu}+x|RRiԚ4lj`Ou >K<(YeJ㢴:_[4 ch+yuK{L:b_vC]ٓ!ΎS-YGd#+<6am!pd "fA͵cG3?)iQ 9Էu'> 3IC}BJ懱H-2hD%4GyhezlEvO W;]tq‡Ʈ&:~?v}94o8AA8 %9ݖHeAI~{NRS^b5}pzǂV`V,盗ef.R 'Þ.ׯu8@RTj\⍵;ΈʐI/~$ұ9{&gvwawexv<'J #|YK0 3h뛦eMZva#|FP6Jb1<GJ}J%v*E$$ C} WD'j՜Pf1J)k,N=|X; 1ն D@+t|RRD,jwq{0̙h.}'N䂫njal(X%7+gyq}0^QOMCkMpg_\c" 094gcQwV{j}#1~P)JDkՔً]Τ>PwѻKƵ gJ(ڬ, ĨF%}ZhenbZ.;Fwqvalv7t"%4ё+dpc/p3[{P׃䀬&rɨv(LO20'·[m87$ZUn1S.lΒ2 $QVq4?Dy̯1ɢʈ?s gFl:X]GF=j7Mp@`%}* =}b:NWH^>_IyF0uއ/}'B6y Ⱥ4⛞}>(xֿQb/JWCaKc+\tJ2VֽQ@ Dn"Gx` 4 tݹ~-[J'H8SӈG3vOlx%CVϴ Td$V2/ul1Þyv><1.W hg&F5gQA "\5F^LO?4ꖺ(MFyV1R*Ż62S4 !ʮdޱ1_z|O.ձȴ0up뎒u<d`-]VTBUHe)k F]q>1SP3NU(Sdb.3m@}d%(Mj$L5Tѵ? Fpڷ~/Iʠ?|lף KR﬎ײG&oT(X6G)F0 ΗRZ(QB$ 'PB."GQ6.XJ_$ )R=M8\@Q# ~7˦GO. _35t3)vև/ȸiu4ZFo]\L\yoFS {yGBaξ TUQ)\0ڪY{hi>g"U'$dP١H)PjpExt]fa+n[z>T8*wkO\GG38}bza^f fx?V+?/&^ M ה=2j<&Y2ƹ{j 1e`>EcUb;sm|s1rz} =&xaxZd@׆Dƨ[m(' ‰gƮW4.Qo/Pg^\,V%w~`2ɧmѮ YҮ3P_Ev][xM/8Zx|?cًO37,(n GzNUl,Yu};.g0<9R#D݉ʯcFU',j}IF|/nt @"j⤨43qo 0$J`"b|+HV.qZJ׼O*$U.`6( -2vȖعUMIBQ^@eUbxɍgrx Y@򯵃|"oCQvhlievn^S D;WfWmz! N#pr8x֜AOF%BƽWA.%Hϖd1FU={Wa˗ޮEYJ/~Zp~u֥]]5&+qb5G'3f^GL #HMُϾk`ـԮ)brٸ.f$xK^Ţ U0SnM'ALאCkwq6DnovIAsyru|2Ize@#:Tǰ>nHog4"+3MIj`'\)8^_j:l4}@o'EC1OFeXcn.ܷcRik,;޶kƇS>즏L.) U"(rN>HVy[;F/`T+u1Mg[ HS[ "Yd,[I[.)!u}D&қvi/f{&fx<~7ФݳO4~ ^+O zN@Is &iMrm@]qʗ2U|lG(ҀI߳L f*]N'rF1"Cx._Ῡ®Yӂ8`ZCRjBqZ@t-൬k]3&MRT6"Y9t[a Bf0$.N[ӷPVGm@r)Q@GLmx ٗH,؀pew NH3j<H.q}oۓ|-ܱwC'r6-`:6]h6}љцʀQ:I NA̞}^N %|_37!8C4bq'C 3^=ӑ- Lv+e2c=]Dۂºd:Mq7LӲ'>iN j LM̏EV(SIYDYݐJ6$d\1Wzð(ٸ_7mʩE]j?߲zKfbα/yO [@5\,2oDtGBrQq |_"ts;fż;!88$x0nrZ<9oY@7-EKȻsʎzב廬ÎG[Q1d)rΙĕ8nZg㠻4pp-ӹN(&6t0yLT؆O] d f!N<_N/qH OW:s{ìlh$`?YD EWtBitvc(_㰛I;ŁWc&]7$2 꼆i~M%nS?a8 PiN5xqCXF$ i *Z8A /@1CŖl'@E[rgy\AD?@SOY-_Ρ* cQMiT">TQpL-C/3OdA;aჂk.)Sh ړ:,W"Ԥ;]<꫰@27%)#(dqҫclOJfzDƭt% hȊ<}WiU[[y׶ \4qQfbGX'KN9Û i,)otQصj-o9L@q4 *O&A ŸIPL<@HZ= wi(гiyoӔiS2p2uLdŇy{K!3l~TL:*R9Yf]&k|qŭz*v'H s<j KEݚ Fl"|O0Cf=\0ȿC9aqV;N72Y:dM+’U!esÚL;ȳ>=3WtQo/ ^gЃ<ң_;9u+pݐ)öv d]DCaճME`7>&s I&hpR+#{\gjk%Aʝ` oQ*pRc|jf}EY"(Ԋ|!P噷Ђߟ1peE 9k٤ede$`v\!;:8@jKaN/CjXՎ9}d4@]'F"HNBR%pHDG!?FtPZ>y##> %7"PoWT'dj EhMT*Yn&p@Yn5Y`]qR9f(3 Lnsv?6 Ғ C7"*XXXS0͎׉'L dyirM|-.H:$2Lݕ?Ҍ`%^D'% XZO;a5l*o?ܣVNqMI,3%Vݠ#)|?+*?0DXIw;Vz2v8 /—I$rK 7}c/"d_䯞\-ZMVl*0}\A\8 49˲V=F!:ѧerU zںn.09PBAxU~U^(0||2jq@k1߆T':M~hۮta]u& F%)hm׈gg5&҉!E;[4kHE+Xxz;MTeΟDNA"x^fk;3PѨ L ɰY^SbNMyޕ6Y]cY(zO{Dz`I<ޜ1̊oľ$νITxXdn X<|yX$1ˊ G:ڽ:*xsJ`ƣlߜ| V| 6ipX`G"^1ƫ]nJT 퐑([3 Tɭ;$ Bl:?[g\(PCt>AQ+ n=iJkX V n0Վ5&Yzf$i(WM=׼ddgRIV! iĸUup؄ܔcɋit,f&pg-^K ‡{^+&*N3j={1pa(8ې:6;%XZmXOq ›G9T \C#L8T9SjȢ>b;wͶ-6񊁐Y7ޏ,MCiy^З'Wv)rhwh,SH`3V7͠ag{.YqoCͣ,XŒCv*,Om1̨Fw`tTG3nA@ 8Q5dM;VB2R_ TNNV|S+wmzpNƀs^no׼=Y쨗y2@ ʪE:f$ ) sI+-BBU"x@įe_x2{ %B}OͳJn ;Te9=F.Q\٦)i9'_Y\p8u] iUW-:B'+Ӛ2<BYXeO$WrȋƧB) ^A8b9yzN5pߛ&n$cOT놛Arg=zaMw4M IM_}9,;"SNbz#1 S-FTt;ͰTYɼ϶{*ZO,Fc<2Lr`m߾ZGbm"̟[I^ ѓᆧ=e*#V |nRG?Pؑ #xۊ:&X$.F3L..3~n CۮE7HS(OXTJ6gVCAv9("=՛Eˆ.m.QŹS"ExJ(?~^#Lɑϵ Zm/hؐ [ ,C]]u0-Jh7Kl @\g"^RKy'zy"=󅋩q6~1 1XdBllz@^*0gcK Z )۽'ij+Migގ!vxI!aNs05IfK=`3oP3X}J1@ N3{dH8P1\S++)h1?,9pG#F^]'1&~ΪMCM{k0_Đ2**ZTkmpYV/ d=eiuBA{n2zv0j{zPOdz Ar3<cbcm[*UÜqś"O[OP,ߝHM)QpW™zȄD:`uHxs"=6pQX%'0"j/  ⰀB y$̸Ea4!>Q -݌s]KVx\ byǐ*I*#to- DWW_P%<ݿa"9ms5Oҧ+ORgm̸d|مzi+L<Pdz|v`C*҄0LL 45ᇞ5HbKbpͦ \ '%^y!Jt9vGA  -w+ӗ:Tah( Y`zu`VPm|Q[Gbxm%Ǽ-j&~%QІI9ߦ/jh_qPaX$#'LV?b *yJ)pZxa3¬!(]7zplBA62dc@qU*)D:[}:. h,,?*NYuGY"ʩwoo]su!nq6.#{JE܏/nkR^:h+[,% EUUrq  Q˧. /8?"^$)VEd0n>2L@4(jE ݢq4 Pl sRS4r$W> Phaf𗍫WOĕo^^go'tUY뮰ǯH;yGwBgڦ̸y",.LM^,5-V9Zˆ!neOEsÞgGGZW Ge`Rkx,)PN-ARZ)}Q0<ҩ[|▣jf_2??rKFȽ~Qd>_},C!i^OЀ^{&$S)tpSJDs WI:jKjNII_lm[}>:nwfU+E56y) e6S8mS炓)|D${P;%v4M[>[evPѹ݉$KlxǗfB7ƍ;]f>>KR%&! )xYKcd\ e`,dJN|SWK3y1iKBa %CC%=IjxroޯӏxH V`#6W?%awp_ݥr&{;T^? }lɏw?!bV$'H  jqsV冑 UB呄hHj:Pŧ%\ԴWZ;NH!%0~Ϧ=6'+r Ng ӈQ>޹25ƽ]pB2Ɔ-r,Nm;%L{t?0W!\jv[jtJ{X{놜|"`b_BoJCJ/2rbY+G&C6 38`۵w XX YUgl0O $3BORNdxlj5R~' ɲ/g[p]"0ޕg@F/D62, H:A{t|B0Kg, ?d̄rOo p1ɍAOyʸ ތYOd#m+sctg]'ߎɎQ땫_@νny9jYKU"ʔhBl :>Z(Zg#'B: P!6 qt^!\@;֒ zHN3m4|Yn%p|isr;7 (a4Q&j@zI޳WMLW2&@7ȇ>O|ȥTSaF&pi/...CK?81fO:)ʈzV{4m\IϪ9\# 47[6V|NFjpo9)= w2wFr#tWvjv}QmwѼCҷRic|[ Ss׌;Tʇ0)/pnU(+9OR|emW5> DMEcADyFED!7O"e -п%G(o00?8{'  Dg ^n/MAc+;sekDF P&1"8ryA"[Z"ZiJx5 Z787: 9Ĥ,?GC-nxi:ׁ<o@q-\rL\^ 5ܨpeMs[,(;FGOpDw =lDtOOևgk,iou;[Wūai< ;w&x0*ܾ`. `7Y#){(ap| _&|˼)&:ġV52y\YG[  |^#G^:Lr1fĚpךǥq/لbuf߁JD+97Ս>583a!! 1ݵ*۴HQB@3zIcZ`4P~󔻕'ag%ޗQBMu?ՙ#/5|knUlć&9ҮJqDwB/a$L%H6IK,K֖GO\^LXS9|ڵڻBs!C܋` \:iu4m!<%j^D09*}jrjj\c'6Y?(JK%(Mn kIqGE6?,CeWw6ڊ19j!m<g 0>aKt W Bx2X[2ĝCy:ȈRnIΊ,Vf^rW݀2&h%V˻3ThR^[UsWW;5C5=p;CcFʷT'bEi ;|B[aO.:[*̊".fdb ެGuɞtr]`hhR@*ʈFH#yUHI~4'GDS&f"lӝ ?o$Kq=+?Z)DNS* l%P4H QSҢ]'HIv|:v34dzסWSPh]lӲ =ڌLA ;VFIxΎ@s&6E(0O"?% 乘ލ?q~W?'~,QRqmYBRnqh~'T`O:Svq.[TK2\5a msb7MJ572C}lҝ9V_M3M_o z Hi!#b,451^a4ZM=1R4ms.gsܘb11 ;vݥ/P w&Y ďMa$ʂ1#(TuetPVϛlYO^T g(N{ͦSZAV|f;% PpR, fN;'ѿҌx^|8g:u:M,"և7@f?3J)SYx1QxDAΡ## -[(Кø~PlQV3z;Uhl*74>EC6W٥ޚx2BIZ{ޑV_2C6 :Udrnv7a'+ӈXHư2NJ:A0au*yGB뼀&0$XpǂZf |T4ih9\*]Lu!1)k~\N12r8sPկD7 k{7; "*5Z뉦^o^셌0@ wb K%͠S 8JBhb-c$j36 E@1zZmf4%z1QA?"nk{>EUhq-d$yTz11a7vGK$o pb1~ƣ.0| %ˬp"pNIW$z\ցC0Bm!_jfbIw2=5`-WEq?Y%h3UFүrYpF:t J*l o(~ST<ІZ5݁'Zf48!n2 gBNR(Ҩ܉l8ЈIRB=@nق+L,|j*P$%g?>`g$.9!46X?= 3zSe(o9,`X`@cEǧt:=u'%+V%$_l9\V#z#FGWИg(Xr: 2T履 4r@Nc (\6=+;sFv$AHw!d!XF3OUաCpx6xy!ڂօ:vhOP.aI22;(C{.ׂ0&4j>~sU P:)pQ VˬpT|{$p &f7 VFg6L+S3KnQbļ\H"+ξ(B ZUV瀴'|Uo5F%;zLg?HG'{3#i=j:KX,$TNg@4g MF߉ ։ЃC ]3Ӓ⹌n5q>n>qX^o^˚ŢP+!t|rlIZS>ܫQCyZe)]luzR%KC]@7RÞ.-/d4/aiRx]_w1PiQ M쭲֦3llqJ!#Y$&V/\͋+.βU'D M_0@1:d`|6c3 ($""9H !&=!:(K\HAA{ ̳)5lloeV  !BHĪ~GYFb{vPe6{iF`;fdl,-s$;R)s |ơ`LDÆ&2V٩0 8i:HZדєF PjuϜYDEқQ:fo]z 3"Љ0 =[Du3Tɑ%:2dε3hջ^4'5ߨPMCm9+kg h#W7#|T S9BmRetxRtid/`6Ȫpz Vep,y*d@ZݜCufi\ւ?h]ccJxlڻBڧG`[5"Y58;/<(Cb5Ӿ"%L{J*Y}5h"i]@$8M# 'q1C0ϘJ;cpeV jA fNMN cBO$?<W\j_TGfa1RXʊ/Pp0 PU/tzʰK\IFHj,ӡMݛDy IA5xC`zMֈjT*!&EuGEsp}Rl N/zESMH^CN)GZ_fKd6e゛ڂ_3CaV%ރd.m&`>( Ӟ"o'7|t:by1sJ>¶=ZwNJ7/{83H@7 Cl|.DJ.}v`LGya+ $HKna#Caǥp j~/f+ !ΎboX|b{ |oduG1 "9kI'!$U˛o \xġ]ij&;l@!km=J83Km7-\6-x*w}Tw"Smk,xqROeY|ϧ(>ƁM y̓Zjvs­,a&EY5~c:ʏ#@nObkM u!?/׭_1 hU5؉Dg_UddA<1 6yyZ ~a?.npw]Ԇ 4O"D '8#E/G=>%+aߪ-:v"χo2SWc|[O 7v̤Q^Ϣ{o{{Y7[F#<&/C-TvU+NYsmF9<"-x3/_Ȣʶ"5*2-TJ5 Oz#C;$vߴaŨ`!VV&@JP>I}(Tz#Vl,Q@qȅ/3% ^j?HVW=7d-lg^4vtYB@`O{䉌TxFEǣSPt_&v ELСFbWs)DP= *d40ei_(ܬ.8XQrU2V%AY FDs1.~M] ^ ZQ#pĮ<<-N7EtZ[:;w|=>|~h g&}%dd0}$Q玹+'E'!Php4"Gko2쵏V0:+" =Iܢ.D3r.X2b\4%Y8dT RẏWJ< q󷕘=:8\TJotF2oej"X~@(3~/o]a~cE"h=\rr`,ҿ6G s˒(oa-RmBl!Yb.cNkW3>RWfsқ@q,iKȩB,eZ'$m2Q]6Ƿ4R^^ t/0 aH6}E{5~/17#SkJ~sj "vdMmtS-؟<Δ>EwlԠU`\]`ߩ`~1z6nMtHFy[zhkU䦾sSi,MoY~(qM?'>md ǍiTс tP~846թaaVLm("O*MtXZ1peLF#8]f(d]r拨_~7WSbë&xTṕvΊ*7Rc jo, [ 4iok8r54n5{eȠ'>kc3Vj ?z ~ &'HQ ID|z 09y$T׉Z{Ԙ$7s@6%dLCbD?P#&d3e Tքl.X]:8׹O> OVZGtl&fPHrobu ŇE~ʆ܅! ]?Ib.moR9$.}MSp{xtZ^p6+b,/hVRna!,J9BE\b7{<*]wwg')> &jv#2j0CUK^N/m4PYt3{nr s!I{=]Rx5^с쀍 Z`Z?҈TKW9'&zh=ހ. qOZ-w]:6F1) ~AK#eyanU.=G} |$:@|-=}*@\HV Gh\L<3a O$8(ٻl6x DL!^1J'ߌ4MavU n#&'w1EgV㬗Ut=x4>:#j8:re}'GVZ&(#=S]\yȫ3~EU6iA߆BWS(5~MA8{IjO!HFJWr7jTy& ސCď62W )/S]0q䑅Hqk(E7 glT4.;5MMYL;Μ$!#| XlS5XQuf}@y8 `ڙ#ּE'WOs.Bdn4jC> {i9ȿ]W3j 3r_5eJf;1g6L>ŀbB_L(DF,t@g n8G{D'tif9@˥84'-MAH2a!Q՘ȶHBR`şG }9NYX%hlן|(*14lw}Č8HXވS۬HL\8e|t& qyoug!*פv" SyJ~qt$kCzzJO^WU=z à}e+:8^ y%m@K9h) 0T6߻)@orŃˈ,ԟq4A r/@mY*&g"̯"dt̅Hmۛ8tD72zw=$PҚ2+&[%y20R䖙* RZn4yulxC:\B>eG|E:]W]N5E9ۦB-)]#Fjh;pnIS ccʩN% 5 b~cMwQ>7<+FMG\./IgMxOXF}߀:ت#uG0 G'oނON2u'4O&r%H2PUb+_DR)OUsyavo:'C7х 97lū_j`brad|PLɽ}A6eJ~5 ]΢t3ċBn*846zKΐ'hsUӰ5oYwRIdǸ'^m.4u$J@aX֯WjT[W%h#6z6 T#Q0B"9CfAxW|9EUXM'dx;t#fwv8{FlF| e}c^EjuR0KHk5 &M_tݱE:Y]7VRndR[r ˅]Tq97$Ni&VI | JۭU f.8 UEqp}뭜0,N4Dਅ2-;DgqA`Yl )J#-|@UL66W[ 5v9_ՈRn`7T}Xϑ6`5ɖ*ס0zUU yz|E+xgtm'k#IWzGUn!(W%4W?P-T&_ , &J&н ,z\շqغJÊ&d2_y҅{3An*hȄI(KAֱ,Q^pO $j9#i"ؑ6PB bHT.a$_ZDW# ו,Q@&mReAAu ً'oHLt&z!Ω&>W:M:3i+]FqV;"C-z;$ŦYmEjچfm^7Q`^BeԊ~|\Qǫ5\{n #Eh +Vy=ʻ/7*K%Po+}5d{ۇzjЙLl=%4:׏SfګFҕMNSbiJ5KxF>?+k[+?i0.(dLsxI:G tK;I]maTl]m%ucရA ! 8 p7-Qvs^u]X~J̑N:"2sxXj}pekQ0 F~rJwuPpmf>}ij< zp]BbX)ya U)%ĸ ]J-Nwz+>٤U^Qiu']|%X1JG6'pkr8fj'۳"T @b>o%!(LG λWٵ1 ?q^UUa5?`ĂE+B wJY)\,,"W+A Fs¦*bV/Ky8! x_&?Y ¥W^/-qm̋~RNgBXuΫ}9Խ{iEj>E =P[k [IÑ/mtX3`f'tyw p!`%ޏ acBu lե+&7/*dpGIoO` ߂l+>U\A s:P q1F%%xvE Z'uX9}[_!|l=9op.9s`:SF bx=] ңHGf BC9 oRStsCu Fˏ9FzUl1vD|Rq.eeC$$-KSeEA^0x6Nіؠ-Ar<:4l`4gmo]""7':DqQ?#pϏWJ] xlF`st"}px ȉ$KU.g2kZ?i2O^2$5gGmM@$O#uKXC͍iB$XucOV@{ɏ8U XCӁCAqUPf=Y'"TTOso&R5*V࠼`~p h (,T$56GDOkRGFp<\Y'FR(4@;yXibN7qZZoR SϹ߆@[|}SQn/fhv"89q{^Cz֌(lS>XܭV\c{ %f-QQ8iI'O[,%Tne޳Aps ?wKjddfF΍Y6_`V@Xp⨍amjvaX:}b4ZOtwAxk!ǻ\ڮzJ(?*Z0d%rH4tmPYپ>2p==pr2r8.famk~˶[]<3Yhʑ`QPsl<t;nuc:>DY~YRIGCT[&#'Qs3=(.fسсs,6T N{zU/`),9 UDɴGTHa(XH,ݓObߖ8}A+oKNV 5#9Wڬc&Aa " ` Y=\L"X'FYid chBN&0d`S+w!nن yKTa=AfX fBFq1:K⧱R/$Ip9}SRj'c BQ(=ὟsQc%AlcElwg9Apwѥu}]/ehT 4(@4T̈klĸL*U.`dDi{b-!FU[opB @Q  C]$hl՛yoP: V1N0 jhT0ӑB(MU'V,9à5CSMx.z^Dݎa, ^ 6OT2֨pz;1uDd3CT)(X&F(C;4.b6!((@~ B3?'^G%]p3>*_U b`>sC4Ջ6j5~/ =OHI}%,UHXȑzNɡˉB1 OhR`$xvNfH +^5ou\~OceQcf\Gm.x\!y륲8g5h p8,V!*Vl \uZbhy=S_GVA n˸\Fj7/$\W")s:EɲKiK,ausz*ik@A Ga ?5PM@q"ZRӥ?W]a>;(]'U}jdÂmP/dej !ZԟNH?x.ۉlc&PUM'/g(a$bKPeHD4 +g,lN,>@ }J0gD?%&X.S0ga`x bJ-;{; t'lJN@C`0sΖT @X얺~Z=: lPzCz@b HF6@H<ÂC,Wy;ֈƱ{h2m.QŚ{5.AG1KUNP[5`rE30w2# -;z{RZ.zF9hcZD2>cYFH)4]:R% L"lg;+(ŲX+|a0/s\NA#.*Ј{ny:TQ&W`4=J'bbF屘fLxzҭEn@S:.DGCP^gUZM%7Ye$PXdb{bֽ证4Vjx ;e(r |1vXKCy;MwihD_MI@cFrw31Pz@Vņ/B;ʖ{E`@*?»l-}Ҥ nE!QvN"Lh~fX,佄c`ƍ]qpFݮ ਂyWh&^-į^j=66޿)w]Be k4\sV;a[F*n-I;a->FPj|~̺9&tzVZ ე +Ǖc(3ͺ?t%PڟB?$b#UyjfAƞ;3Y :ɻ:hbBx#Z .*6:4y8.b0;Lqj[s}Fت~X3S+٫TvGJPz7_IQxc]v[}j Y)rĴcE4q'6f4F(9]=\)"A3EUd IZAݫ:)Hs^4iFX(t}k 9 jڄ(ЅޝTd%z fsHp@dhڋ]l |EV >t)C84bfh߈‡s)MrtVuT 2ymOq |4|a@cUـ4H;b%׋2cnzņ db J[㙻u ?ՖI֗8Yv˝VԜ)iP<ΪH' zFJO~Ϩ,iﰰ1}=n )[ E ` n.`zMM6pX~sg1jj`-\׆b k;JHLbufP(um!:ҕ'ewӓ) D߹{}VG'avSgV:1C| !|НGg5޴m1ɹygSpDٓ(Gl1e> sbN<]uU?TVwZSb1,|v |"Qt^^[0e6N.DBk^"K_{QTCj8(awT|*O!y2ƯG4jB[p='P.3L\Y$)$8<`aV7 *c+UMB9VwOb@\ܝongt;Rpx+Rԟ_??EͅZp዇ep;3B3GEfD$XNK!IU,ͅ. >e/O9,`he#r@}0ԾjG+LKUۋ &;@C ~/͟f2~wz3uIwZ-ͻš=~:11/-x!fX x!Wt/狎 `=/joQB>oy/ WsA}k_? oGK=ʚ-"[;'Ĵq9:3X3l3;O,94j9ZXݪrT; {p倄!jV z_S޻\51sT.8@{_ۇ@;Q5d1(DLJOZ GY_yv7F"*4J;1y{ QD+A Ia _Fu׃ v>;CK1<ي<T lK*񦎕%΂~! `N#T@ӬR`ruKN(NcCe)Ӡ%r\)@ŢU.HiR(<J]Q`d㮚ݷWScȃZ@3Ќ% yko4[Qr )0$z _#LݧwCt`{WcvR8r*fvh"Y8Ԧ`>xsvcpg 2wcʜk!#a(^t NB+nv>{>%3#|CŒm4.$kd3O+isfX.ma_ A;!*g҅tq⢓@HHЗ;- J։k* iBMʽ;-' ~hGN%b}z? Xwʽ-A^GՑMrhԯ?w!0j5,╠BYqހ13Gtktw8@MU}P-Gc$w"Wpbxx1oP$Ky7N1؊Q>\ =}Ξs*N" θYc,oov(|oyIfa/\SS PL=l=55E p˭nS쥓}8T?:!{r\&faSϸ@C/~;Vk> 6#O417`V 7ֳ'P9x!{b| 0ӳ:s/KN{qs?hr뱎RECUy$-yƽ"ctSM̙վ-w rBSa\7긏bF"/T/O`n|΁ =+TufE;y[6QF~]V–~SY eۯ aH n+>t!324~+$Rde;%^|Er*]%g"ֈ;!3c*?dTcI TP ?/*^-C$(MtWM|5$Jv0,WC[pAժd_~o(PvQ[Kw):kCWMnLëAp)Z-9Lrc%K;a/4g}D3Z(K{sQe z+ #\ d" +HV؎`* dz55$TK1X_Ixӑ<: cO:ό!隋 :cej:~+>,bXJLQ96mjibpBc[;yBgrgAXȻvǕa;S˧펌P߶QS/S N Eؐ9]CݬW-B&c9ff~g~7V(qQ1#=Vm/UQuQ4.Se-a.9jdF lS1xkTjyDU *GRӚr^a Ebzx\&a{44D.boɽB{ :ͷ|cB-UB>C&26U:TՋ}r m#Q-8z1k]T|kބ2Esm~!X,dK4GP!U;j='E ispl"4iW增bS 7#Aibz;a=<1[72 qn+u'9Vnص7Oʲ$ vա̓ZeBEQ$&j u] :i\$S7a2ҿ g|x]ӈ8Uu.IAඌcנ#ts?pX;a1,a=x%)XKRqB t4vnp;yWm=gU͎lϋ<۔D+8AT!V ],kѰ"zEJLB -`wtn! j# rM;<^q*J/|~գtZ20NkEyiL;~NHc?(N\FШ)#C\WÙ8;7k4d>4fdPV3l[2])&)Q2tT໓7cUHw})..G􋣥l7yĶ0ڳW5bo 2*F tC0KR46ư%ny 4 1lN}7vMi_>MG(ٖYfvpО?5FMR8 C=YO!H܆t슻'gM{qk$4UK[φ%t58bw@'*T"8l T>3#rߒwpPyb}1a8wC߳>ַj'9jY_U,3F,)]g_j?$6 RbL*yH.Mwx/T qcFȋ >8VǘFEa`aP{-?7.Bi(.UEƾt,R=Dɳ9I8ɘu4 lO^yqS;A3F9l%=KS_Het 6 9|'w*ӈ>0?(<ڔHyW֥Dm$Lě-n+er };@5B; $U_VF[u'y~^\rؔxJ^Q;sks!tѼfcЀ _vnY{=aΕ.تQo' וҭ9T(3H#i\fn !yKohΧ?3Kז?fR6\ݴ%WivV#웃(qe[CRB?Œn(Je[fx2lj?!o&X/Yz'#AAQR{Ou+Q%HjfWs0 uWO=LAN'>0}jHr4Yb~@[ntіU1z~%<然j_pQ0ɎHzZucdN\Y򵜮p.f#So1WʲgH=RҎ.hc4cۨRS5|so0蚁9/0:bv\n~͜^)Ys)7wrDpFpjw4PIM3O3%\;5Ц;M9\r ҙ[H`7DQJt?X-b+Dr3“m7З*|Ro44]a'}lhR #泑7>˾z Wy^S?Kt⊞=4:\v%aN^R8O/qs6?64\[r7t*56%]4uB;:p"GSg EuCN; zGO8^5 3 UkU/͖TiP}x-W[D\rjskTк HkqptM,z9>mJw(wX@FX8<z[&~I,chB S-ْ:N޷ҩVP"N] ?\.%ؗSstT1ѾxTqL9[͟5$wN cB8h7UXTb4:|kv>Li;}#Fmz@P|pbȚ|2 =: ?<|Xo^[yx8i[(4.4[h^1巷狸; UG |(dP`[4Mp!o.cmlٚ4֗홴caC"ew%͗h°6D[{~Ws)8[|i=}T—kJF т:Z2È>MXF_izo;[[pk! 6i %z ҫ~@OXQՋ@~ O˱A Q*`gY8ٛi##[,f $wj[] 3VS ,ʂm=@m9M6 t Lֹ.3b3BV*U Tΰu\1,NȚ%qv#2?m*H,$%jU2iA!f]SfcnXj;9Hkխ~euboXDk zyFxjp*x"NԤ xv~Q"0֤qʸլݻUi wbj&'yuK9Ɲ3 ȍ<Ò@R ?jh# >;xђ+,1򛒥 ~;j8aQT(Z2$îjVZ;~KduDUρۚD&=_o"nKeR׎=Lk6[X놐?2o<2o-faHþ`vVAV?"j!!Pu%} GK42M+|S9dEF4#Eo9yp}@? (ѧ.&t ̶^SgF釒TiwȇM,mw