pax_global_header00006660000000000000000000000064132240160720014507gustar00rootroot0000000000000052 comment=cf41767dfbb849f9c05bcdfc7fcb6a37c90b2ad0 cmst-cmst-2018.01.06/000077500000000000000000000000001322401607200140205ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/000077500000000000000000000000001322401607200147635ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/000077500000000000000000000000001322401607200164325ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/cmstapp.pro000066400000000000000000000052031322401607200206230ustar00rootroot00000000000000# We need the qt libraries, we want compiler warnings on, and this is a release version of the program CONFIG += qt CONFIG += warn_on CONFIG += release CONFIG += nostrip # Widgets needed for QT5, QT += widgets QT += dbus QT += network QT += core # cmst variables include(../../cmst.pri) TEMPLATE = app TARGET = cmst target.path = /usr/bin INSTALLS += target # dbus DBUS_ADAPTORS += ./code/agent/org.monkey_business_enterprises.agent.xml DBUS_INTERFACES += ./code/agent/org.monkey_business_enterprises.agent.xml DBUS_ADAPTORS += ./code/counter/org.monkey_business_enterprises.counter.xml DBUS_INTERFACES += ./code/counter/org.monkey_business_enterprises.counter.xml # header files HEADERS += ../resource.h HEADERS += ./code/control_box/controlbox.h HEADERS += ./code/agent/agent.h HEADERS += ./code/agent/agent_dialog.h HEADERS += ./code/counter/counter.h HEADERS += ./code/scrollbox/scrollbox.h HEADERS += ./code/notify/notify.h HEADERS += ./code/peditor/peditor.h HEADERS += ./code/provisioning/prov_ed.h HEADERS += ./code/vpn_prov_ed/vpn_ed.h HEADERS += ./code/trstring/tr_strings.h HEADERS += ./code/iconman/iconman.h HEADERS += ./code/vpn_agent/vpnagent.h HEADERS += ./code/vpn_agent/vpnagent_dialog.h HEADERS += ./code/vpn_agent/vpnagent_adaptor.h HEADERS += ./code/vpn_agent/vpnagent_interface.h HEADERS += ./code/shared/shared.h # forms FORMS += ./code/control_box/ui/controlbox.ui FORMS += ./code/agent/ui/agent.ui FORMS += ./code/scrollbox/ui/scrollbox.ui FORMS += ./code/peditor/ui/peditor.ui FORMS += ./code/provisioning/ui/provisioning_editor.ui FORMS += ./code/vpn_prov_ed/ui/vpn_prov_editor.ui FORMS += ./code/vpn_agent/ui/vpnagent.ui # sources SOURCES += ./code/main.cpp SOURCES += ./code/control_box/controlbox.cpp SOURCES += ./code/agent/agent.cpp SOURCES += ./code/agent/agent_dialog.cpp SOURCES += ./code/counter/counter.cpp SOURCES += ./code/scrollbox/scrollbox.cpp SOURCES += ./code/notify/notify.cpp SOURCES += ./code/peditor/peditor.cpp SOURCES += ./code/provisioning/prov_ed.cpp SOURCES += ./code/vpn_prov_ed/vpn_ed.cpp SOURCES += ./code/trstring/tr_strings.cpp SOURCES += ./code/iconman/iconman.cpp SOURCES += ./code/vpn_agent/vpnagent.cpp SOURCES += ./code/vpn_agent/vpnagent_dialog.cpp SOURCES += ./code/vpn_agent/vpnagent_adaptor.cpp SOURCES += ./code/vpn_agent/vpnagent_interface.cpp SOURCES += ./code/shared/shared.cpp # resource files RESOURCES += ../../cmst.qrc ## Place all object files in their own directory and moc files in their own directory ## This is not necessary but keeps things cleaner. OBJECTS_DIR = ./object_files MOC_DIR = ./moc_files sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro cmst-cmst-2018.01.06/apps/cmstapp/code/000077500000000000000000000000001322401607200173445ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/agent/000077500000000000000000000000001322401607200204425ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/agent/agent.cpp000066400000000000000000000163521322401607200222530ustar00rootroot00000000000000 /**************************** agent.cpp ******************************** Code for the user agent registered on DBus. When the connman daemon needs to communicate with the user it does so through this agent. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include "./agent.h" # include "../resource.h" # include "./code/trstring/tr_strings.h" // header files generated by qmake from the xml file created by qdbuscpp2xml # include "agent_adaptor.h" # include "agent_interface.h" // defines # define ERROR_RETRY "net.connman.Agent.Error.Retry" # define ERROR_CANCELED "net.connman.Agent.Error.Canceled" # define ERROR_LAUNCHBROWSER "net.connman.Agent.Error.LaunchBrowser" // constructor ConnmanAgent::ConnmanAgent(QObject* parent) : QObject(parent) { // members uiDialog = new AgentDialog(qobject_cast (this) ); input_map.clear(); b_loginputrequest = false; // Create Adaptor and register this Agent on the system bus. new AgentAdaptor(this); QDBusConnection::systemBus().registerObject(AGENT_OBJECT, this); } /////////////////////////////////////// PUBLIC Q_SLOTS//////////////////////////////// // // Called when the service daemon unregisters the agent. QT deals with cleanup // tasks so don't need much here void ConnmanAgent::Release() { //qDebug() << "Agent Released"; return; } // Called when an error has to be reported to the user. Show the // error in a QMessageBox void ConnmanAgent::ReportError(QDBusObjectPath path, QString s_error) { (void) path; if ( QMessageBox::warning(qobject_cast (parent()), tr("Connman Error"), tr("Connman returned the following error:
%1
Would you like to retry?").arg(TranslateStrings::cmtr(s_error)), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) == QMessageBox::Yes) this->sendErrorReply(ERROR_RETRY, "Going to retry the request"); else return; } // // Called when it is required to ask the user to open a website to proceed // with login handling void ConnmanAgent::RequestBrowser(QDBusObjectPath path, QString url) { (void) path; // Send the url to the dialog to have the user the necessary information, return if canceled. if (this->uiDialog->showPage1(url) == QDialog::Rejected) this->sendErrorReply(ERROR_CANCELED,"User cancelled the dialog"); return; } // // Called when trying to connect to a service and some extra input is required from the user // A dialog is displayed with the required fields enabled (non-required fields are disabled). QVariantMap ConnmanAgent::RequestInput(QDBusObjectPath path, QMap dict) { (void) path; // Take the dict returned by DBus and extract the information we are interested in and place in input_map. this->createInputMap(dict); // Send our input_map to the dialog to have the user supply the necessary information // needed to continue. Return if canceled. QMap rtn; rtn.clear(); if (this->uiDialog->showPage0(input_map) == QDialog::Rejected) this->sendErrorReply(ERROR_CANCELED,"User cancelled the dialog"); else uiDialog->createDict(rtn); // create a return dict and send it back to connman on DBus return rtn; } // // Called when the agent request failed before a reply was returned. Show // a QMessageBox void ConnmanAgent::Cancel() { QMessageBox::information(qobject_cast (parent()), tr("Agent Request Failed"), tr("The agent request failed before a reply was returned.") ); return; } /////////////////////////////////////// PUBLIC FUNCTIONS //////////////////////////////// // // Function to put all of input fields received via DBus:RequestInput into a // QMap where key is the input field received and value is // generally blank but can be used for informational text. // // If we asked to log the input request create the log file in /tmp/cmst/input_request.log void ConnmanAgent::createInputMap(const QMap& r_map) { // Initialize our data map input_map.clear(); // QFile object for logging QTextStream log; QDir d(IPT_REQ_LOG_PATH); QFile logfile(d.absoluteFilePath(IPT_REQ_LOG_FILE)); if (b_loginputrequest) { if (!logfile.open(QIODevice::WriteOnly | QIODevice::Text)) b_loginputrequest = false; else log.setDevice(&logfile); } // Run through the r_map getting the keys and the few values we are interested in. QMap::const_iterator i = r_map.constBegin(); while (i != r_map.constEnd()) { // Lets see what the values contain, but first make sure we can get to them. if (b_loginputrequest) log << "Agent: " << "Map Key = " << i.key() << "\n"; if (! i.value().canConvert() ) return; const QDBusArgument qdba = i.value().value(); if (qdba.currentType() != QDBusArgument::MapType ) { if (b_loginputrequest) log << "Agent: " << "Error - QDBusArgument as the value is not a MapType\n"; return; } // The r_map.value() is a QDBusArgument::MapType so extract this map into a new QMap called m. qdba.beginMap(); QMap m; m.clear(); if (b_loginputrequest) log << "Agent: " << "Extracting the DBusArgument Map...\n"; while ( ! qdba.atEnd() ) { QString k; QVariant v; qdba.beginMapEntry(); qdba >> k >> v; qdba.endMapEntry(); m.insert(k, v.toString()); if (b_loginputrequest) log << "{ " << k << " , " << v.toString() << "}\n"; } // while qdba.endMap(); // Browse through QMap m and get things we need to look at // Types we don' really care about. We ignore "optional" and "alternate" requirements // and only extract the "mandatory" and "informational" requirements with values if (m.contains("Requirement") ) { QString val = QString(); if ( m.value("Requirement").contains("mandatory", Qt::CaseInsensitive) || m.value("Requirement").contains("informational", Qt::CaseInsensitive) ) { if (m.contains("Value") ) val = m.value("Value"); } // if mandatory or informational // create our input_map entry input_map[i.key()] = val; } // if requirement ++i; } // while logfile.close(); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/agent/agent.h000066400000000000000000000047421322401607200217200ustar00rootroot00000000000000/**************************** agent.h ********************************** Code for the user agent registered on DBus. When the connman daemon needs to communicate with the user it does so through this agent. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef CONNMANAGENT # define CONNMANAGENT # include # include # include # include # include # include # include # include "./code/agent/agent_dialog.h" # define AGENT_SERVICE "org.cmst" # define AGENT_INTERFACE "net.connman.Agent" # define AGENT_OBJECT "/org/cmst/Agent" class ConnmanAgent : public QObject, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", AGENT_INTERFACE) public: ConnmanAgent(QObject*); inline void setLogInputRequest(bool b) {b_loginputrequest = b;} public Q_SLOTS: void Release(); void ReportError(QDBusObjectPath, QString); void RequestBrowser(QDBusObjectPath, QString); QVariantMap RequestInput(QDBusObjectPath, QMap); void Cancel(); private: AgentDialog* uiDialog; QMap input_map; bool b_loginputrequest; void createInputMap(const QMap&); public: inline void setWhatsThisIcon(QIcon icon) {uiDialog->setWhatsThisIcon(icon);} }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/agent/agent_dialog.cpp000066400000000000000000000267451322401607200236010ustar00rootroot00000000000000/****************** agent_dialog.cpp *********************************** Code to manage the agent user interface. When the connman daemon needs to communicate with the user it does so through the agent. The agent has a QDialog as a class member, and agent_dialog.cpp manages that dialog. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include # include # include "./agent_dialog.h" # include "./code/trstring/tr_strings.h" AgentDialog::AgentDialog(QWidget* parent) : QDialog(parent) { // setup the user interface ui.setupUi(this); // data members cli_browsers.clear(); cli_browsers << "lynx" << "w3m" << "links" << "elinks"; gui_browsers.clear(); gui_browsers << "google-chrome" << "google-chrome-unstable" << "chromium" << "opera" << "brave"; // blink based gui_browsers << "firefox" << "seamonkey"; // gecko based gui_browsers << "qupzilla" << "luakit" << "dwb" << "jumanji" << "midoir" << "surf" << "vimprobable"; // webkit based gui_browsers << "konqueror" << "dillo" << "xdg-open"; // other // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); connect (ui.checkBox_hide_passphrase, SIGNAL(clicked(bool)), this, SLOT(hidePassphrase(bool))); connect (ui.checkBox_wps_no_pin, SIGNAL(clicked(bool)), this, SLOT(useWPSPushButton(bool))); connect (ui.pushButton_launch_browser,SIGNAL(clicked()), this, SLOT(launchBrowser())); connect (ui.lineEdit_browser, SIGNAL(textEdited(const QString&)), this, SLOT(enteringBrowser())); // find the PATH of the current environment sys_env_path = QString(); QProcessEnvironment se = QProcessEnvironment::systemEnvironment(); if (se.keys().contains("PATH")) { sys_env_path = se.toStringList().at(se.keys().indexOf("PATH")); sys_env_path.remove("PATH="); } } ///////////////////////////////////////////////// Public Functions ///////////////////////////////////////////// // // Function to show page 0 of the stackWidget // imap - is map of QStrings with input keys that connman has requested the user to fill in, and any values // that it has sent back for informational purposes. Return the accept state of the dialog int AgentDialog::showPage0(const QMap& imap) { // set all input widgets to disabled this->initialize(); // turn on the boxes that need to be filled in if (imap.contains("Passphrase")) { ui.lineEdit_passphrase->setEnabled(true); ui.lineEdit_passphrase->setText(imap.value("Passphrase") ); ui.checkBox_hide_passphrase->setEnabled(true); } if (imap.contains("PreviousPassphrase")) { ui.lineEdit_old_passphrase->setEnabled(true); ui.lineEdit_old_passphrase->setText(imap.value("PreviousPassphrase") ); } if (imap.contains("SSID")) { ui.lineEdit_ssid->setEnabled(true); ui.lineEdit_ssid->setText(imap.value("SSID") ); } if (imap.contains("Name")) { ui.lineEdit_hidden_name->setEnabled(true); ui.lineEdit_hidden_name->setText(imap.value("Name") ); } if (imap.contains("Userame")) { ui.lineEdit_wispr_username->setEnabled(true); ui.lineEdit_wispr_username->setText(imap.value("Username") ); } if (imap.contains("Password")) { ui.lineEdit_wispr_password->setEnabled(true); ui.lineEdit_wispr_password->setText(imap.value("Password") ); } if (imap.contains("Identity")) { ui.lineEdit_eap_identity->setEnabled(true); ui.lineEdit_eap_identity->setText(imap.value("Identity") ); } if (imap.contains("WPS")) { ui.lineEdit_wps_pin->setEnabled(true); ui.lineEdit_wps_pin->setText(imap.value("WPS") ); ui.checkBox_wps_no_pin->setEnabled(true); } this->ui.stackedWidget->setCurrentIndex(0); return this->exec(); } // // Function to show page 1 of the stackWidget // url - is the url that the user needs to open // Return the accept state of the dialog int AgentDialog::showPage1(const QString& url) { // set all input widgets to disabled this->initialize(); // show the url connman is requesting we connect to ui.lineEdit_url->setText(url); // find browser executables QStringList sl_browsers; if (! sys_env_path.isEmpty() ) { QStringList sl_loop = sys_env_path.split(':'); QStringList sl_targets = cli_browsers; sl_targets.append(gui_browsers); sl_browsers.clear(); for (int i = 0; i < sl_loop.size(); ++i) { QDir dir = QDir(sl_loop.at(i)); sl_browsers.append(dir.entryList(sl_targets, QDir::Files|QDir::Executable)); } // for dir in path } // if path not empty // add found browsers to the listView ui.listView_browsers->setModel(new QStringListModel(sl_browsers)); connect (ui.listView_browsers->selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), this, SLOT(updateBrowserChoice(const QModelIndex&, const QModelIndex&))); ui.listView_browsers->setEnabled(true); this->ui.stackedWidget->setCurrentIndex(1); return this->exec(); } // // Function to extract the input data from the QLineEdit's in the dialog and put it into // a QMap. The QMap is sent to this function as a reference and is modified by the function. void AgentDialog::createDict(QMap& r_map) { // Initialize the map r_map.clear(); // Create the dict entries if (! ui.lineEdit_passphrase->text().isEmpty() ) r_map["Passphrase"] = ui.lineEdit_passphrase->text(); if (! ui.lineEdit_ssid->text().isEmpty() ) r_map["SSID"] = ui.lineEdit_ssid->text().toLatin1(); if (! ui.lineEdit_hidden_name->text().isEmpty() ) r_map["Name"] = ui.lineEdit_hidden_name->text(); if (! ui.lineEdit_wispr_username->text().isEmpty() ) r_map["Username"] = ui.lineEdit_wispr_username->text(); if (! ui.lineEdit_wispr_password->text().isEmpty() ) r_map["Password"] = ui.lineEdit_wispr_password->text(); if (! ui.lineEdit_eap_identity->text().isEmpty() ) r_map["Identity"] = ui.lineEdit_eap_identity->text(); if (! ui.lineEdit_wps_pin->text().isEmpty() ) r_map["WPS"] = ui.lineEdit_wps_pin->text(); return; } ///////////////////////////////////////////////// Private Functions ///////////////////////////////////////////// // // Function to initialize the fields in the dialog box, everything is disabled to start void AgentDialog::initialize() { // QList of widget pointers QList list; list.clear(); list.append(ui.lineEdit_passphrase); list.append(ui.lineEdit_old_passphrase); list.append(ui.checkBox_hide_passphrase); list.append(ui.lineEdit_ssid); list.append(ui.lineEdit_hidden_name); list.append(ui.lineEdit_wispr_username); list.append(ui.lineEdit_wispr_password); list.append(ui.lineEdit_eap_identity); list.append(ui.lineEdit_wps_pin); list.append(ui.checkBox_wps_no_pin); list.append(ui.listView_browsers); // set disabled true for all widgets in the list and clear contents for (int i = 0; i < list.size(); ++i) { list.at(i)->setDisabled(true); if (qobject_cast (list.at(i)) != NULL ) qobject_cast (list.at(i))->clear(); if (qobject_cast (list.at(i)) != NULL ) qobject_cast (list.at(i))->setChecked(false); } } ///////////////////////////////////////////////// Private Slots ///////////////////////////////////////////// // // Slot to show or obscure the passphrase void AgentDialog::hidePassphrase(bool checked) { checked ? ui.lineEdit_passphrase->setEchoMode(QLineEdit::Password) : ui.lineEdit_passphrase->setEchoMode(QLineEdit::Normal); } // // Slot to use WPS PushButton Authentication // Called when ui.checkBox_wps_no_pin is checked or unchecked void AgentDialog::useWPSPushButton(bool checked) { if (checked) ui.lineEdit_wps_pin->clear(); ui.lineEdit_wps_pin->setDisabled(checked); } // // Slot to enter whats this mode // Called when the ui.toolButton_whatsthis clicked() signal is emitted void AgentDialog::showWhatsThis() { QWhatsThis::enterWhatsThisMode(); } // // Slot to set browser as the chosen item in the list // Called when ui.listView_browsers selectionChanged() signal is emitted // void AgentDialog::updateBrowserChoice(const QModelIndex & current, const QModelIndex & previous) { (void) previous; ui.lineEdit_browser->setText(current.data().toString()); } // // Slot to clear selection in the browser list view // Called when ui.lineEdit_browser textEdited() signal is emitted void AgentDialog::enteringBrowser() { ui.listView_browsers->selectionModel()->clearSelection(); } // // Slot to launch the selected browser // Called when ui.pushButton_launch_browser is pressed void AgentDialog::launchBrowser() { // variables QProcess* process = new QProcess(this); // find installed terminals that we can deal with QStringList sl_terminals = QStringList(); if (! sys_env_path.isEmpty() ) { QStringList sl_loop = sys_env_path.split(':'); QStringList sl_targets; sl_targets << "roxterm" << "xterm"; for (int i = 0; i < sl_loop.size(); ++i) { QDir dir = QDir(sl_loop.at(i)); sl_terminals.append(dir.entryList(sl_targets, QDir::Files|QDir::Executable)); } // for dir in path } // if path not empty // Code below assumes that every browser will take a URL as an argument QString chosenBrowser = ui.lineEdit_browser->text(); if (cli_browsers.contains(chosenBrowser, Qt::CaseSensitive) ) { // Support 2 terminals, roxterm and xterm. This probably won't work right if // someone uses XDG-OPEN and it happens to point to a cli browser QStringList sl_args = QStringList(); if (sl_terminals.contains("roxterm")) { sl_args << "-T" << "Web Login" << "--execute" << chosenBrowser << ui.lineEdit_url->text(); process->startDetached(QString("roxterm"), sl_args); } else if (sl_terminals.contains("xterm")) { sl_args << "-T" << "Web Login" << "-e" << chosenBrowser << ui.lineEdit_url->text(); process->startDetached(QString("xterm"), sl_args); } else QMessageBox::information(qobject_cast (parent()), QString(TranslateStrings::cmtr("cmst")) + tr(" Information"), tr("You have requested the %1 browser, but we cannot find a terminal program to open it with. " \ "Currenty we can start %1 using these terminals: roxterm and xterm." \ "

To continue you need to manually open a terminal and then enter: \"%1 %2\"").arg(chosenBrowser).arg(ui.lineEdit_url->text()) ); } else { process->startDetached(chosenBrowser, QStringList(ui.lineEdit_url->text()) ); } return; } cmst-cmst-2018.01.06/apps/cmstapp/code/agent/agent_dialog.h000066400000000000000000000045321322401607200232340ustar00rootroot00000000000000/**************************** agent_dialog.h *************************** Code to manage the agent user interface. When the connman daemon needs to communicate with the user it does so through the agent. The agent has a QDialog as a class member, and agent_dialog.cpp manages that dialog. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef AGENT_DIALOG_H # define AGENT_DIALOG_H # include # include # include # include "ui_agent.h" // The class to control the agent UI based on a QDialog class AgentDialog : public QDialog { Q_OBJECT public: // members AgentDialog(QWidget*); // functions int showPage0(const QMap&); int showPage1(const QString&); void createDict(QMap&); private: // members Ui::Agent ui; QString sys_env_path; QStringList cli_browsers; QStringList gui_browsers; // functions void initialize(); private slots: void hidePassphrase(bool); void useWPSPushButton(bool); void showWhatsThis(); void updateBrowserChoice(const QModelIndex&, const QModelIndex&); void enteringBrowser(); void launchBrowser(); public: inline void setWhatsThisIcon(QIcon icon) {ui.toolButton_whatsthis->setIcon(icon);} }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/agent/cpp2xml.sh000077500000000000000000000002551322401607200223700ustar00rootroot00000000000000#!/bin/bash # # script to convert the header file to cpp # # -M all public slots # -P all properties qdbuscpp2xml -M -P agent.h -o org.monkey_business_enterprises.agent.xml cmst-cmst-2018.01.06/apps/cmstapp/code/agent/org.monkey_business_enterprises.agent.xml000066400000000000000000000015501322401607200307100ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/cmstapp/code/agent/ui/000077500000000000000000000000001322401607200210575ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/agent/ui/agent.ui000066400000000000000000000445321322401607200225240ustar00rootroot00000000000000 Agent 0 0 450 587 Agent Input 0 Passphrase Qt::Horizontal 181 20 <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> true <html><head/><body><p>Type the passphrase here.</p></body></html> true <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> &Hide Passphrase O&ld Passphrase lineEdit_old_passphrase &Passphrase lineEdit_passphrase Hidden Network &Name lineEdit_hidden_name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> true Service Set Identifier &SSID lineEdit_ssid true Wireless Internet Service Provider roaming (WISPr) &Username lineEdit_wispr_username <html><head/><body><p>WISPr username.</p></body></html> true Passwor&d lineEdit_wispr_password <html><head/><body><p>WISPr password.</p></body></html> true Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> true &Identity lineEdit_eap_identity WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> Use Push &Button Authentication Qt::Horizontal 85 20 0 0 &WPS Pin lineEdit_wps_pin 0 0 <html><head/><body><p>Enter a WPS pin.</p></body></html> true Browser Login Requested Choose or enter a browser: <html><head/><body><p>ConnMan is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p><p><span style=" font-weight:600;">Brave Browser Users:</span> Note that Brave does not seem to accept a URL to start with. After the browser starts you will need to enter the URL manually. </p></body></html> Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> true <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> Launch &Browser Qt::Vertical 20 40 <html><head/><body><p>What's This</p></body></html> ... :/icons16x16/images/16x16/help.png:/icons16x16/images/16x16/help.png Qt::Horizontal 328 20 <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel pushButton_accept clicked() Agent accept() 289 630 233 500 pushButton_cancel clicked() Agent reject() 375 630 380 487 cmst-cmst-2018.01.06/apps/cmstapp/code/control_box/000077500000000000000000000000001322401607200216745ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/control_box/controlbox.cpp000077500000000000000000003747741322401607200246220ustar00rootroot00000000000000/**************************** controlbox.cpp *************************** Code to manage the primary user interface to include the QDialog the user interfaces with and the system tray icon. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ /********************************************************************** * NOTE TO PEOPLE HACKING ON THE CODE * * Prior to 2015.11.12 text returned by connman was translated and then * stored in the various maps. After that date the code was revised so * that text is stored in the maps exactly as connman returns it and * is then translated when it needs to be displayed. * ***********************************************************************/ # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include "../resource.h" # include "./controlbox.h" # include "./code/scrollbox/scrollbox.h" # include "./code/peditor/peditor.h" # include "./code/provisioning/prov_ed.h" # include "./code/vpn_prov_ed/vpn_ed.h" # include "./code/trstring/tr_strings.h" # include "./code/shared/shared.h" // headers for system logging # include # include # include # define DBUS_PATH "/" # define DBUS_CON_SERVICE "net.connman" # define DBUS_VPN_SERVICE "net.connman.vpn" # define DBUS_CON_MANAGER "net.connman.Manager" # define DBUS_VPN_MANAGER "net.connman.vpn.Manager" // Custom push button, used in the technology box for powered on/off // This is really a single use button, after it is clicked all idButtons // are deleted and recreated. Once is is clicked disable the button. idButton::idButton(QWidget* parent, const QDBusObjectPath& id) : QFrame(parent) { // margins const int m_left = 5; const int m_top = 0; const int m_right = 5; const int m_bottom = 0; // create the button button = new QToolButton(this); button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); obj_id = id; button->setCheckable(true); button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); connect (button, SIGNAL(clicked(bool)), this, SLOT(buttonClicked(bool))); // create the box QHBoxLayout* layout = new QHBoxLayout(this); layout->setContentsMargins(m_left, m_top, m_right, m_bottom); layout->setAlignment(Qt::AlignCenter); layout->addWidget(button, 0, 0); return; } void idButton::buttonClicked(bool checked) { this->setDisabled(true); emit clickedID (obj_id.path(), checked); return; } // main GUI element ControlBox::ControlBox(const QCommandLineParser& parser, QWidget *parent) : QDialog(parent) { // set the Locale (probably not necessary since the default is the system one anyway) QLocale::setDefault(QLocale::system() ); // setup the user interface ui.setupUi(this); // set the window title setWindowTitle(TranslateStrings::cmtr("connman system tray")); // data members q16_errors = CMST::No_Errors; properties_map.clear(); services_list.clear(); technologies_list.clear(); wifi_list.clear(); peer_list.clear(); vpn_list.clear(); agent = new ConnmanAgent(this); vpnagent = new ConnmanVPNAgent(this); counter = new ConnmanCounter(this); trayiconmenu = new QMenu(this); tech_submenu = new QMenu(tr("Technologies"), this); info_submenu = new QMenu(tr("Service Details"), this); wifi_submenu = new QMenu(tr("WiFi Connections"), this); vpn_submenu = new QMenu(tr("VPN Connections"), this); mvsrv_menu = new QMenu(this); settings = new QSettings(ORG, APP, this); notifyclient = 0; onlineobjectpath.clear(); socketserver = new QLocalServer(this); socketserver->removeServer(SOCKET_NAME); // remove any files that may have been left after a crash socketserver->listen(SOCKET_NAME); trayiconbackground = QColor(); trayicon = new QSystemTrayIcon(this); iconman = new IconManager(this); // set a stylesheet on the tab widget - used to hide disabled tabs QFile f0(":/stylesheets/stylesheets/tabwidget.qss"); if (f0.open(QIODevice::ReadOnly | QIODevice::Text)) { QString qss = QString(f0.readAll()); f0.close(); ui.tabWidget->setStyleSheet(qss); } // set a stylesheet on the offlinemode toolbutton. Until 2017.12 this // was a label to display a pixmap. It is now a QToolButton, but I want the // picture to show the current state (transmitting or airplane), not the // state that will happen if you push the button, for instance typical // play/pause behavior in a media player. If I advertise this is a button // I'll get complaints that the pictures are backwards, so hide that fact // by making it look like a label with the stylesheet. QFile f1(":/stylesheets/stylesheets/airplane.qss"); if (f1.open(QIODevice::ReadOnly | QIODevice::Text)) { QString qss = QString(f1.readAll()); f1.close(); ui.toolButton_offlinemode->setStyleSheet(qss); } // Read saved settings which will set the ui controls in the preferences tab. this->readSettings(); // Set the iconmanager color iconman->setIconColor(QColor(ui.lineEdit_colorize->text()) ); // Constructor scope bool, set to true if we are using start options bool b_so = (! parser.isSet("bypass-start-options") && ui.checkBox_usestartoptions->isChecked() ); // Enable or disable preferences group box (changed via ui signal/slot after the constructor) ui.groupBox_startoptions->setEnabled(ui.checkBox_usestartoptions->isChecked()); // Restore window if retain_state is checked and we have not bypassed it on the command line if (! parser.isSet("bypass-restore-state") && settings->value("CheckBoxes/retain_state").toBool() ) { settings->beginGroup("MainWindow"); resize(settings->value("size", QSize(700, 550)).toSize() ); move(settings->value("pos", QPoint(200, 200)).toPoint() ); ui.splitter01->restoreState(settings->value("splitter_01").toByteArray() ); ui.tabWidget->setCurrentIndex(settings->value("current_page").toInt() ); settings->endGroup(); } // Make sure the controlbox will fit onto small acreens QSize sz_target = (qApp->desktop()->availableGeometry(this)).size(); QSize sz_source = this->sizeHint(); sz_target.scale(sz_target.width() - 100, sz_target.height() - 100, Qt::KeepAspectRatio); // give me a little buffer if (sz_source.width() > sz_target.width() || sz_source.height() > sz_target.height() ) { sz_source.scale(sz_target.width(), sz_target.height(), Qt::KeepAspectRatio); resize(sz_source); move(25, 25); } // set a flag if we sent a commandline option to log the connman inputrequest agent->setLogInputRequest(parser.isSet("log-input-request")); vpnagent->setLogInputRequest(parser.isSet("log-input-request")); QDir d(IPT_REQ_LOG_PATH); d.mkpath(IPT_REQ_LOG_PATH); if (d.exists(IPT_REQ_LOG_FILE)) d.remove(IPT_REQ_LOG_FILE); // Set icon theme if provided on the command line or in the settings if (parser.isSet("icon-theme") ) { if (parser.value("icon-theme").isEmpty() ) { if (QIcon::themeName().isEmpty() ) QIcon::setThemeName(INTERNAL_THEME); } // if else QIcon::setThemeName(parser.value("icon-theme") ); } // if parser is set else { if (b_so && ui.checkBox_systemicontheme->isChecked() ) { if (ui.lineEdit_icontheme->text().isEmpty() ) { if (QIcon::themeName().isEmpty() ) QIcon::setThemeName(INTERNAL_THEME); } // if else QIcon::setThemeName(ui.lineEdit_icontheme->text() ); } // if else QIcon::setThemeName(INTERNAL_THEME); } // else // Set the window icon. If an icon was installed to /usr/share/icons/hicolor/48x48/apps // use that, otherwise use a freedesktop.org named one if (QFile::exists("/usr/share/icons/hicolor/48x48/apps/cmst.png") ) this->setWindowIcon(QIcon("/usr/share/icons/hicolor/48x48/apps/cmst.png") ); else this->setWindowIcon(QIcon::fromTheme("preferences-system-network") ); // Set the whatsthis icons ui.toolButton_whatsthis->setIcon(iconman->getIcon("whats_this")); agent->setWhatsThisIcon(iconman->getIcon("whats_this")); vpnagent->setWhatsThisIcon(iconman->getIcon("whats_this")); // set a flag if we want to use XFCE or MATE custom code. // Currently (as of 2014.11.24) this is only used to get around a bug between QT5.3 and the XFCE system tray // Even then the fix may not work, but for now keep it in. b_usexfce = (parser.isSet("use-xfce") ? true : (b_so && ui.radioButton_desktopxfce->isChecked()) ); b_usemate = (parser.isSet("use-mate") ? true : (b_so && ui.radioButton_desktopmate->isChecked()) ); // Fake transparency if (parser.isSet("fake-transparency") ) { bool ok; trayiconbackground = QColor(parser.value("fake-transparency").toUInt(&ok, 16) ); if (! ok) trayiconbackground = QColor(); } // if parser set else if (b_so && ui.checkBox_faketranparency->isChecked() ) { trayiconbackground = QColor(ui.spinBox_faketransparency->value() ); } // if else trayiconbackground = QColor(); // set counter update params from command line options if available otherwise // default params specified in main.cpp are used. Set a minimum value for // each to maintain program response. uint minval = ui.spinBox_counterkb->minimum(); uint setval = 0; if (parser.isSet("counter-update-kb") ) { bool ok; setval = parser.value("counter-update-kb").toUInt(&ok, 10); if (! ok) setval = minval; } // if parser set else if (b_so && ui.checkBox_counterkb->isChecked() ) { setval = ui.spinBox_counterkb->value(); } // else if counter_accuracy = setval > minval ? setval : minval; // number of kb for counter updates minval = ui.spinBox_counterrate->minimum(); setval = 0; if (parser.isSet("counter-update-rate") ) { bool ok; setval = parser.value("counter-update-rate").toUInt(&ok, 10); if (! ok) setval = minval; } // if parser set else if (b_so && ui.checkBox_counterseconds->isChecked() ) { setval = ui.spinBox_counterrate->value(); } counter_period = setval > minval ? setval : minval; // number of seconds for counter updates // Hide the minimize button requested if (parser.isSet("disable-minimize") ? true : (b_so && ui.checkBox_disableminimized->isChecked()) ) ui.pushButton_minimize->hide(); // operate on settings not dealt with elsewhere ui.pushButton_provisioning_editor->setVisible(ui.checkBox_advanced->isChecked() ); ui.pushButton_vpn_editor->setVisible(ui.checkBox_advanced->isChecked() ); ui.groupBox_process->setVisible(ui.checkBox_advanced->isChecked() ); enableRunOnStartup(ui.checkBox_runonstartup->isChecked() ); // Create the notifyclient, make four tries; first immediately in constructor, then // at 1/2 second, 2 seconds and finally at 8 seconds notifyclient = new NotifyClient(this); this->connectNotifyClient(); QTimer::singleShot(500, this, SLOT(connectNotifyClient())); QTimer::singleShot(2 * 1000, this, SLOT(connectNotifyClient())); QTimer::singleShot(8 * 1000, this, SLOT(connectNotifyClient())); // setup the dbus interface to connman.manager if (! QDBusConnection::systemBus().isConnected() ) logErrors(CMST::Err_No_DBus); else { con_manager = new QDBusInterface(DBUS_CON_SERVICE, DBUS_PATH, DBUS_CON_MANAGER, QDBusConnection::systemBus(), this); if (! con_manager->isValid() ) logErrors(CMST::Err_Invalid_Con_Iface); else { // Access connman.manager to retrieve the data this->managerRescan(CMST::Manager_All); // register the agent shared::processReply(con_manager->call(QDBus::AutoDetect, "RegisterAgent", QVariant::fromValue(QDBusObjectPath(AGENT_OBJECT))) ); // if counters are enabled connect signal to slot and register the counter if (parser.isSet("enable-counters") ? true : (b_so && ui.checkBox_enablecounters->isChecked()) ) { QList vlist_counter; vlist_counter.clear(); vlist_counter << QVariant::fromValue(QDBusObjectPath(CNTR_OBJECT)) << counter_accuracy << counter_period; QDBusMessage reply = con_manager->callWithArgumentList(QDBus::AutoDetect, "RegisterCounter", vlist_counter); if (shared::processReply(reply) == QDBusMessage::ReplyMessage) connect(counter, SIGNAL(usageUpdated(QDBusObjectPath, QString, QString)), this, SLOT(counterUpdated(QDBusObjectPath, QString, QString))); } // enable counters else { ui.tabWidget->setTabEnabled(ui.tabWidget->indexOf(ui.Counters), false); } // connect some dbus signals to our slots QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, DBUS_PATH, DBUS_CON_MANAGER, "PropertyChanged", this, SLOT(dbsPropertyChanged(QString, QDBusVariant))); QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, DBUS_PATH, DBUS_CON_MANAGER, "ServicesChanged", this, SLOT(dbsServicesChanged(QList, QList, QDBusMessage))); QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, DBUS_PATH, DBUS_CON_MANAGER, "PeersChanged", this, SLOT(dbsPeersChanged(QList, QList, QDBusMessage))); QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, DBUS_PATH, DBUS_CON_MANAGER, "TechnologyAdded", this, SLOT(dbsTechnologyAdded(QDBusObjectPath, QVariantMap))); QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, DBUS_PATH, DBUS_CON_MANAGER, "TechnologyRemoved", this, SLOT(dbsTechnologyRemoved(QDBusObjectPath))); // clear the counters if selected this->clearCounters(); // VPN manager. Disable if commandline or option is set vpn_manager = NULL; if (parser.isSet("disable-vpn") ? true : (b_so && ui.checkBox_disablevpn->isChecked()) ) { ui.tabWidget->setTabEnabled(ui.tabWidget->indexOf(ui.VPN), false); ui.pushButton_vpn_editor->setDisabled(true); } // if parser set else { vpn_manager = new QDBusInterface(DBUS_VPN_SERVICE, DBUS_PATH, DBUS_VPN_MANAGER, QDBusConnection::systemBus(), this); if (! vpn_manager->isValid() ) { ui.tabWidget->setTabEnabled(ui.tabWidget->indexOf(ui.VPN), false); ui.pushButton_vpn_editor->setDisabled(true); logErrors(CMST::Err_Invalid_VPN_Iface); } else { ui.tabWidget->setTabEnabled(ui.tabWidget->indexOf(ui.VPN), true); ui.pushButton_vpn_editor->setEnabled(true); shared::processReply(vpn_manager->call(QDBus::AutoDetect, "RegisterAgent", QVariant::fromValue(QDBusObjectPath(VPN_AGENT_OBJECT))) ); } // else register agent } // else normal vpn manager } // else have valid connection } // else have connected systemBus // add actions to groups minMaxGroup = new QActionGroup(this); minimizeAction = new QAction(tr("Mi&nimize"), this); maximizeAction = new QAction(tr("Ma&ximize"), this); minMaxGroup->addAction(minimizeAction); minMaxGroup->addAction(maximizeAction); exitAction = new QAction(tr("&Exit"), this); moveGroup = new QActionGroup(this); moveGroup->addAction(ui.actionMove_Before); moveGroup->addAction(ui.actionMove_After); // connect signals and slots - actions and action groups connect(minMaxGroup, SIGNAL(triggered(QAction*)), this, SLOT(minMaxWindow(QAction*))); connect(tech_submenu, SIGNAL(triggered(QAction*)), this, SLOT(techSubmenuTriggered(QAction*))); connect(info_submenu, SIGNAL(triggered(QAction*)), this, SLOT(infoSubmenuTriggered(QAction*))); connect(wifi_submenu, SIGNAL(triggered(QAction*)), this, SLOT(wifiSubmenuTriggered(QAction*))); connect(vpn_submenu, SIGNAL(triggered(QAction*)), this, SLOT(vpnSubmenuTriggered(QAction*))); connect(exitAction, SIGNAL(triggered()), qApp, SLOT(quit())); connect(moveGroup, SIGNAL(triggered(QAction*)), this, SLOT(moveButtonPressed(QAction*))); connect(mvsrv_menu, SIGNAL(triggered(QAction*)), this, SLOT(moveService(QAction*))); connect(ui.actionRescan, SIGNAL (triggered()), this, SLOT(scanWiFi())); connect(ui.actionIDPass, SIGNAL (triggered()), this, SLOT(wifiIDPass())); connect(ui.actionOffline_Mode, SIGNAL(toggled(bool)), this, SLOT(toggleOfflineMode(bool))); // connect signals and slots - ui elements connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); connect(ui.comboBox_service, SIGNAL(currentIndexChanged(int)), this, SLOT(getServiceDetails(int))); connect(ui.pushButton_exit, SIGNAL(clicked()), exitAction, SLOT(trigger())); connect(ui.pushButton_minimize, SIGNAL(clicked()), minimizeAction, SLOT(trigger())); connect(ui.checkBox_hideIcon, SIGNAL(clicked(bool)), this, SLOT(toggleTrayIcon(bool))); connect(ui.pushButton_connect, SIGNAL(clicked()), this, SLOT(connectPressed())); connect(ui.pushButton_vpn_connect, SIGNAL(clicked()), this, SLOT(connectPressed())); connect(ui.pushButton_disconnect, SIGNAL(clicked()), this, SLOT(disconnectPressed())); connect(ui.pushButton_vpn_disconnect, SIGNAL(clicked()), this, SLOT(disconnectPressed())); connect(ui.pushButton_remove, SIGNAL(clicked()), this, SLOT(removePressed())); connect(ui.pushButton_aboutCMST, SIGNAL(clicked()), this, SLOT(aboutCMST())); connect(ui.pushButton_aboutIconSet, SIGNAL(clicked()), this, SLOT(aboutIconSet())); connect(ui.pushButton_aboutOtherArt, SIGNAL(clicked()), this, SLOT(aboutOtherArt())); connect(ui.pushButton_aboutQT, SIGNAL(clicked()), qApp, SLOT(aboutQt())); connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(cleanUp())); connect(ui.pushButton_license, SIGNAL(clicked()), this, SLOT(showLicense())); connect(ui.pushButton_change_log, SIGNAL(clicked()), this, SLOT(showChangeLog())); connect(ui.tableWidget_services, SIGNAL (cellClicked(int, int)), this, SLOT(enableMoveButtons(int, int))); connect(ui.checkBox_hidecnxn, SIGNAL (toggled(bool)), this, SLOT(updateDisplayWidgets())); connect(ui.checkBox_hidetethering, SIGNAL (toggled(bool)), this, SLOT(updateDisplayWidgets())); connect(ui.checkBox_systemtraynotifications, SIGNAL (clicked(bool)), this, SLOT(trayNotifications(bool))); connect(ui.checkBox_notifydaemon, SIGNAL (clicked(bool)), this, SLOT(daemonNotifications(bool))); connect(ui.pushButton_configuration, SIGNAL (clicked()), this, SLOT(configureService())); connect(ui.pushButton_provisioning_editor, SIGNAL (clicked()), this, SLOT(provisionService())); connect(ui.pushButton_vpn_editor, SIGNAL (clicked()), this, SLOT(provisionService())); connect(socketserver, SIGNAL(newConnection()), this, SLOT(socketConnectionDetected())); connect(ui.checkBox_runonstartup, SIGNAL(toggled(bool)), this, SLOT(enableRunOnStartup(bool))); connect(ui.toolButton_colorize, SIGNAL(clicked()), this, SLOT(callColorDialog())); connect(ui.lineEdit_colorize, SIGNAL(textChanged(const QString&)), this, SLOT(iconColorChanged(const QString&))); connect(ui.checkBox_enablesystemtraytooltips, SIGNAL(clicked()), this, SLOT(updateDisplayWidgets())); connect(ui.pushButton_IDPass, SIGNAL(clicked()), this, SLOT(wifiIDPass())); // Install an event filter on all child widgets. Used to control // tooltip visibility QList childlist = ui.tabWidget->findChildren(); for (int i = 0; i < childlist.count(); ++i) { childlist.at(i)->installEventFilter(this); } // Tray icon - disable it if we specifiy that option on the commandline or in // the settings, otherwise set a singleshot timer to create the tray icon. if (parser.isSet("disable-tray-icon") ? true : (b_so && ui.checkBox_disabletrayicon->isChecked()) ) { trayicon = NULL; ui.checkBox_hideIcon->setDisabled(true); this->updateDisplayWidgets(); qApp->setQuitOnLastWindowClosed(true); // not running systemtray icon so normal close this->showNormal(); // no place to minimize to, so showMaximized } // if else { const short mintrigger = 100; // Minimum time (milliseconds) to wait before starting the tray icon. We advertise zero, but not really. int timeout = 0; if (parser.isSet("wait-time") ) { bool ok; timeout = parser.value("wait-time").toInt(&ok, 10); if (! ok) timeout = 0; } // if parser set else if (b_so && ui.checkBox_waittime->isChecked() ) { timeout = ui.spinBox_waittime->value(); } timeout *= 1000; if (timeout < mintrigger) timeout = mintrigger; if (parser.isSet("minimized") ? true : (b_so && ui.checkBox_startminimized->isChecked()) ) { QTimer::singleShot(timeout, this, SLOT(createSystemTrayIcon()) ); } // if showMinimized else { this->showNormal(); QTimer::singleShot(timeout, this, SLOT(createSystemTrayIcon()) ); } // else showNormal } // else } ////////////////////////////////////////////////// Public Functions ////////////////////////////////// ////////////////////////////////////////////////// Public Slots ////////////////////////////////////// // // slot to display an about box for this program void ControlBox::aboutCMST() { QMessageBox::about(this, tr("About %1").arg(TranslateStrings::cmtr("cmst")), tr("
%1 is a program to interface with the Connman daemon and to provide a system tray control." "
Version %2" "
Release date: %3" "
Copyright c %4
by" "
Andrew J. Bibb" "
Vermont, USA" "
Contributors:" "
Brett Dutro" "
Adam Fontenot" "
Lester Bico" "
Yaohan Chen" "
Translations:" "
Jianfeng Zhang (Chinese)" "
sqozz (German)" "
Ilya Shestopalov (Russian)" "
Build Information:" "
Compiled using QT version %5" /*"
Built %6 - %7"*/) .arg(TranslateStrings::cmtr("cmst")) .arg(VERSION) .arg(RELEASE_DATE) .arg(COPYRIGHT_DATE) .arg(QT_VERSION_STR) /*.arg(__DATE__) .arg(__TIME__)*/ ); } // // slot to display an about box for the icons we used void ControlBox::aboutIconSet() { QMessageBox::about(this, tr("About AwOken"), tr("
This program uses the AwOken icon set version 2.5" "

Released under the" "
Creative Commons" "
Attribution-Share Alike 3.0" "
Unported License" "
http://creativecommons.org/licenses/by-sa/3.0/legalcode" ) ); } // // slot to display an about box for the icons we used void ControlBox::aboutOtherArt() { QMessageBox::about(this, tr("About Other Artwork"), tr("
This program uses artwork from Freepik obtained from www.flaticon.com:" "

Released under the Flaticon Basic License" "
https://file000.flaticon.com/downloads/license/license.pdf" "

Artwork files:" "
  • radio.png
  • " "
  • basic-plane.png
  • " ) ); } // // slot to display the program license void ControlBox::showLicense() { QString s = readResourceText(":/text/text/license.txt"); if ( s.isEmpty() ) s.append(tr("%1 license is the MIT (Expat) license.").arg(TranslateStrings::cmtr("cmst"))); QMessageBox::about(this, tr("License"), s); } // // slot to display the change log of the program void ControlBox::showChangeLog() { QString s = readResourceText(":/text/text/changelog.txt"); if ( s.isEmpty() ) s.append(tr("%1 change log is not available.").arg(TranslateStrings::cmtr("cmst"))); ScrollBox::execScrollBox(tr("ChangeLog"), s, this); } ////////////////////////////////////////////Private Slots //////////////////////////////////////////// // // Slot to update all of our display widgets void ControlBox::updateDisplayWidgets() { // each assemble function will check q16_errors to make sure it can // get the information it needs. Only check for major errors since we // can't run the assemble functions if there are. if ( ((q16_errors & CMST::Err_No_DBus) | (q16_errors & CMST::Err_Invalid_Con_Iface)) == 0x00 ) { // rebuild our pages this->assembleTabStatus(); this->assembleTabDetails(); this->assembleTabWireless(); this->assembleTabVPN(); this->assembleTabCounters(); if (trayicon != NULL ) this->assembleTrayIcon(); ui.pushButton_movebefore->setEnabled(false); ui.pushButton_moveafter->setEnabled(false); } // if there were no major errors return; } // // Slot to move the selected service before or after another service. // Called when an item in mvsrv_menu is selected. QAction act is the // action selected. void ControlBox::moveService(QAction* act) { // See if act belongs to a service QString ss; QDBusObjectPath targetobj; for (int i = 0; i < services_list.size(); ++i) { ss = getNickName(services_list.at(i).objpath); // the items in mvsrv_menu are in the same order as services_list if (ss == act->text() ) { targetobj = QDBusObjectPath(services_list.at(i).objpath.path()); break; } // if } // for // make sure we got a targetobject, if not most likely cancel pressed if (targetobj.path().isEmpty()) return; // get enough information from tableWidget_services to identify the source object QList list; list.clear(); list = ui.tableWidget_services->selectedItems(); if (list.isEmpty() ) return; // apply the movebefore or moveafter message to the source object QDBusInterface* iface_serv = new QDBusInterface(DBUS_CON_SERVICE, services_list.at(list.at(0)->row()).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); if (iface_serv->isValid() ) { if (mvsrv_menu->title() == ui.actionMove_Before->text()) { shared::processReply(iface_serv->call(QDBus::AutoDetect, "MoveBefore", QVariant::fromValue(targetobj)) ); } else { shared::processReply(iface_serv->call(QDBus::AutoDetect, "MoveAfter", QVariant::fromValue(targetobj)) ); } // else } // iface_srv is valid // clean up iface_serv->deleteLater(); return; } // // Slot called if the movebefore or moveafter button was pressed void ControlBox::moveButtonPressed(QAction* act) { mvsrv_menu->setTitle(act->text()); mvsrv_menu->popup(QCursor::pos()); return; } // // Slot to enable the movebefore and moveafter buttons, and to prepare the poupup menu // Called when a cell is clicked in ui.tableWidget_services void ControlBox::enableMoveButtons(int row, int col) { (void)col; // variables bool b_validsource = false; bool b_validtarget = false; // create the menu to show if a user selects one of the buttons mvsrv_menu->clear(); for (int i = 0; i < services_list.size(); ++i) { QAction* act = mvsrv_menu->addAction(getNickName(services_list.at(i).objpath) ); // inspect the service, can only move if service is favorite, ready or online // vpn services can be moved (I was wrong thinking they could not), see https://01.org/jira/browse/CM-620 if (services_list.at(i).objmap.value("Favorite").toBool() && (services_list.at(i).objmap.value("State").toString() == "online" || services_list.at(i).objmap.value("State").toString() == "ready") ) { if (i == row) { act->setDisabled(true); // can't move onto itself b_validsource = true; } else { act->setEnabled(true); b_validtarget = true; } // else } // if else act->setDisabled(true); } // for // add a cancel option mvsrv_menu->addSeparator(); mvsrv_menu->addAction(tr("Cancel")); // enable the buttons if source and target both valid ui.pushButton_movebefore->setEnabled(b_validsource && b_validtarget); ui.pushButton_moveafter->setEnabled(b_validsource && b_validtarget); return; } // // Slot to update the service label when this->counter is updated. Other labels in page 4 receive signals directly void ControlBox::counterUpdated(const QDBusObjectPath& qdb_objpath, const QString& home_label, const QString& roam_label) { // Don't update the counter if qdb_objpath is not the online service if (! qdb_objpath.path().contains(onlineobjectpath) ) return; // Set the labels in page 4 if (! qdb_objpath.path().isEmpty() ) { QMap map; for (int i =0; i < services_list.size(); ++i) { if (services_list.at(i).objpath == qdb_objpath) { map = services_list.at(i).objmap; break; } // if } // for ui.label_counter_service_name->setText(tr("Service: %1").arg(getNickName(qdb_objpath)) ); ui.label_home_counter->setText(home_label); ui.label_roam_counter->setText(roam_label); } else ui.label_counter_service_name->setText(tr("Service: %1").arg(tr("Unable to determine service")) ); return; } // // Slot to connect a wifi or vpn service. Called when ui.pushButton_connect // or ui.pushButton_vpn_connect is pressed. // For VPN's this connects the service, not the vpnconnection. It appears that connman_vpn takes // the vpnconnections and creates one service for each. The vpnconnection part could be connected by // using vpn connection interface, but not really worth it since connman automatically creates a // a service for us. void ControlBox::connectPressed() { // Process wifi or vpn depending on who sent the signal QTableWidget* qtw = NULL; if (sender() == ui.pushButton_connect) qtw = ui.tableWidget_wifi; else if (sender() == ui.pushButton_vpn_connect) qtw = ui.tableWidget_vpn; else return; // If there is only one row select it if (qtw->rowCount() == 1 ) { QTableWidgetSelectionRange qtwsr = QTableWidgetSelectionRange(0, 0, 0, qtw->columnCount() - 1); qtw->setRangeSelected(qtwsr, true); } // If no row is selected then return( QList list; list.clear(); list = qtw->selectedItems(); if (list.isEmpty() ) { QMessageBox::information(this, tr("No Services Selected"), tr("You need to select a service before pressing the connect button.") ); return; } // send the connect message to the service. TableWidget only allows single selection so list can only have 0 or 1 elments QDBusInterface* iface_serv = NULL; if (qtw == ui.tableWidget_wifi) { iface_serv = new QDBusInterface(DBUS_CON_SERVICE, wifi_list.at(list.at(0)->row()).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); iface_serv->setTimeout(5); } else if (qtw == ui.tableWidget_vpn) { iface_serv = new QDBusInterface(DBUS_CON_SERVICE, vpn_list.at(list.at(0)->row()).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); } else return; // really not needed iface_serv->setTimeout(5); // need a short timeout to get the Agent QDBusMessage reply = iface_serv->call(QDBus::AutoDetect, "Connect"); if (reply.errorName() != "org.freedesktop.DBus.Error.NoReply") shared::processReply(reply); iface_serv->deleteLater(); return; } // // Slot to disconnect a wifi or VPN service. Called when ui.pushButton_disconnect // or ui.pushBotton_vpn_disconnect is pressed void ControlBox::disconnectPressed() { // Process wifi or vpn depending on who sent the signal QTableWidget* qtw = NULL; if (sender() == ui.pushButton_disconnect) qtw = ui.tableWidget_wifi; else if (sender() == ui.pushButton_vpn_disconnect) qtw = ui.tableWidget_vpn; else return; // If there is no item is selected run through the list looking for // services in "online" or "ready" state. If more than one is found // break as we will have to use the one currently selected. int cntr_connected = 0; int row_connected = -1; if (qtw->selectedItems().isEmpty() ) { int itemcount = 0; QMap map; if (qtw == ui.tableWidget_wifi) itemcount = wifi_list.size(); else if (qtw == ui.tableWidget_vpn) itemcount = vpn_list.size(); else return; // line is not really needed for (int row = 0; row < itemcount; ++row) { if (qtw == ui.tableWidget_wifi) map = wifi_list.at(row).objmap; else if (qtw == ui.tableWidget_vpn) map = vpn_list.at(row).objmap; else return; // line is not really needed if (map.value("State").toString() == "online" || map.value("State").toString() == "ready" ) { ++cntr_connected; row_connected = row; } if (cntr_connected > 1 ) break; } // for // Nothing selected, online or ready so return now if (cntr_connected == 0) return; // If only one entry is connected or online, select it if (cntr_connected == 1 ) { QTableWidgetSelectionRange qtwsr = QTableWidgetSelectionRange(row_connected, 0, row_connected, qtw->columnCount() - 1); qtw->setRangeSelected(qtwsr, true); } // cntr_connected == 1 } // if there are no currently selected items // If no row selected return QList list; list.clear(); list = qtw->selectedItems(); if (list.isEmpty() ) { QMessageBox::information(this, tr("No Services Selected"), tr("You need to select a service before pressing the disconnect button.") ); return; } // Send the disconnect message to the service. TableWidget only allows single selection so list can only have 0 or 1 elments QDBusInterface* iface_serv = NULL; if (qtw == ui.tableWidget_wifi) iface_serv = new QDBusInterface(DBUS_CON_SERVICE, wifi_list.at(list.at(0)->row()).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); else if (qtw == ui.tableWidget_vpn) iface_serv = new QDBusInterface(DBUS_CON_SERVICE, vpn_list.at(list.at(0)->row()).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); else return; // this line really not needed shared::processReply(iface_serv->call(QDBus::AutoDetect, "Disconnect") ); iface_serv->deleteLater(); return; } // // Slot to remove (unset the Favorite property, clear passphrase if one exists) of a Wifi service // Called when ui.pushButton_remove is pressed void ControlBox::removePressed() { // if no row selected return QList list; list.clear(); list = ui.tableWidget_wifi->selectedItems(); if (list.isEmpty() ) { QMessageBox::information(this, tr("No Services Selected"), tr("You need to select a Wifi service before pressing the remove button.") ); return; } // send the Remove message to the service QDBusInterface* iface_serv = new QDBusInterface(DBUS_CON_SERVICE, wifi_list.at(list.at(0)->row()).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); QDBusMessage reply = iface_serv->call(QDBus::AutoDetect, "Remove"); shared::processReply(reply); iface_serv->deleteLater(); return; } // dbs slots are slots to receive DBus Signals // // Slot called whenever DBUS issues a PropertyChanged signal void ControlBox::dbsPropertyChanged(QString prop, QDBusVariant dbvalue) { // save current state and update propertiesMap QString oldstate = properties_map.value(prop).toString(); properties_map.insert(prop, dbvalue.variant() ); // refresh display widgets updateDisplayWidgets(); // offlinemode property if (prop == "OfflineMode") { notifyclient->init(); if (dbvalue.variant().toBool()) { notifyclient->setSummary(tr("Offline Mode Engaged")); notifyclient->setIcon(iconman->getIconName("offline_mode_engaged") ); notifyclient->setBody(tr("All network devices are powered off, now in Airplane mode.") ); } else { notifyclient->setSummary(tr("Offline Mode Disabled")); notifyclient->setIcon(iconman->getIconName("offline_mode_disengaged") ); notifyclient->setBody(tr("Power has been restored to all previously powered network devices.") ); } this->sendNotifications(); } // if contains offlinemode // state property if (prop == "State") { // local variables QString state = dbvalue.variant().toString(); // send notification if state is not ready or online notifyclient->init(); notifyclient->setSummary(tr("Network Services:") ); if (state == "ready" || state == "online") { if (oldstate != "ready" && oldstate != "online") { notifyclient->setBody(tr("The system is online.") ); notifyclient->setIcon(iconman->getIconName("state_online") ); this->sendNotifications(); } // if } // if else { notifyclient->setBody(tr("The system is offline.") ); notifyclient->setIcon(iconman->getIconName("state_not_ready") ); this->sendNotifications(); } // else // execute external program if specified if (! ui.lineEdit_afterconnect->text().isEmpty() ) { if( (state == "ready" || state == "online") && (oldstate != "ready" && oldstate != "online") ) { QString text = ui.lineEdit_afterconnect->text(); text = text.simplified(); QStringList args = text.split(' '); QString cmd = args.first(); args.removeFirst(); QProcess* proc = new QProcess(this); proc->startDetached(cmd, args); } // if online or ready and not online before } // if lineedit not empty } // if state change return; } // // Slot called whenever DBUS issues a ServicesChanged signal. When a // Scan method is called on a technology the results of that scan are // signaled through this slot. This is also called when the sort order // of the services list changes. It will not be called when a property // of a service object changes. void ControlBox::dbsServicesChanged(QList vlist, QList removed, QDBusMessage msg) { // process removed services if (! removed.isEmpty() ) { for (int i = 0; i < services_list.count(); ++i) { if (removed.contains(services_list.at(i).objpath) ) { QDBusConnection::systemBus().disconnect(DBUS_CON_SERVICE, services_list.at(i).objpath.path(), "net.connman.Service", "PropertyChanged", this, SLOT(dbsServicePropertyChanged(QString, QDBusVariant, QDBusMessage))); services_list.removeAt(i); } // if } // for } // if we needed to remove something // process added or changed servcies // Demarshall the raw QDBusMessage instead of vlist as it is easier.. if (! vlist.isEmpty() ) { QList revised_list; if (! getArray(revised_list, msg)) return; // merge the existing services_list into the revised_list // first find the original element that matches the revised for (int i = 0; i < revised_list.size(); ++i) { arrayElement revised_element = revised_list.at(i); arrayElement original_element = {QDBusObjectPath(), QMap()}; for (int j = 0; j < services_list.size(); ++j) { if (revised_element.objpath == services_list.at(j).objpath) { original_element = services_list.at(j); break; } // if } // j for // merge the new elementArray into the existing if (! original_element.objpath.path().isEmpty()) { QMapIterator itr(revised_element.objmap); while (itr.hasNext()) { itr.next(); original_element.objmap.insert(itr.key(), itr.value() ); } // while // now insert the element into the revised list QDBusConnection::systemBus().disconnect(DBUS_CON_SERVICE, original_element.objpath.path(), "net.connman.Service", "PropertyChanged", this, SLOT(dbsServicePropertyChanged(QString, QDBusVariant, QDBusMessage))); revised_list.replace(i, original_element); QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, revised_element.objpath.path(), "net.connman.Service", "PropertyChanged", this, SLOT(dbsServicePropertyChanged(QString, QDBusVariant, QDBusMessage))); } // if original element is not empty } // i for // now copy the revised list to services_list services_list.clear(); services_list = revised_list; } // revised_list not empty // clear the counters (if selected) and update the widgets clearCounters(); // update the widgets updateDisplayWidgets(); return; } // // Slot called whenever DBUS issues a Peerschanged signal. See note above about // scan results being signaled here. void ControlBox::dbsPeersChanged(QList vlist, QList removed, QDBusMessage msg) { // Set the update flag bool b_needupdate = false; // Process changed peers. Demarshal the raw QDBusMessage instead of vlist as it is easier. if (! vlist.isEmpty() ) { QList revised_list; if (! getArray(revised_list, msg)) return; // if revised_list is not the same size as the existing peer_list // then we definetely need an update if (revised_list.count() != peer_list.count() ) b_needupdate = true; // merge the existing peers_list into the revised_list // first find the original element that matches the revised for (int i = 0; i < revised_list.size(); ++i) { arrayElement revised_element = revised_list.at(i); arrayElement original_element = {QDBusObjectPath(), QMap()}; for (int j = 0; j < peer_list.size(); ++j) { if (revised_element.objpath == peer_list.at(j).objpath) { original_element = peer_list.at(j); break; } // if } // j for // merge the new elementArray into the existing if (! original_element.objpath.path().isEmpty()) { QMapIterator itr(revised_element.objmap); while (itr.hasNext()) { itr.next(); b_needupdate = true; original_element.objmap.insert(itr.key(), itr.value() ); } // while // now insert the element into the revised list revised_list.replace(i, original_element); } // if original element exists } // i for // now copy the revised list to peer_list peer_list.clear(); peer_list = revised_list; } // vlist not empty // process removed peers if (! removed.isEmpty() ) { for (int i = 0; i < peer_list.count(); ++i) { if (removed.contains(peer_list.at(i).objpath) ) peer_list.removeAt(i); } // for } // if we needed to remove something // update the widgets if (b_needupdate) updateDisplayWidgets(); return; } // // Slot called whenever DBUS issues a TechonlogyAdded signal // There must be an internal counter for technologies, first time a // technology is changed we get a signal even if we've already run // getTechnologies. After that first time we never get this signal. // Use this this to catch real additions, which we defined as something // we don't already have from getTechnologies. void ControlBox::dbsTechnologyAdded(QDBusObjectPath path, QVariantMap properties) { // iterate over the properties map and replace connman text with translated text QMapIterator itr(properties); while (itr.hasNext()) { itr.next(); properties.insert(itr.key(), itr.value() ); } // map iterator // construct an arrayElement arrayElement ae = {path, properties}; bool newelem = true; // first see if the element exists, if so replace it for (int i = 0; i < technologies_list.count(); ++i) { if (path == technologies_list.at(i).objpath) { technologies_list.replace(i, ae); newelem = false; break; } // if } // for // if it is a new element add it if (newelem) { technologies_list.append(ae); } updateDisplayWidgets(); return; } // // Slot called whenever DBUS issues a TechonlogyAdded signal void ControlBox::dbsTechnologyRemoved(QDBusObjectPath removed) { for (int i = 0; i < technologies_list.count(); ++i) { if ( removed == technologies_list.at(i).objpath ) { technologies_list.removeAt(i); break; } // if } // for updateDisplayWidgets(); return; } // // Slots called from objects. The previous slots were called from Manager // // Slot called whenever a service object issues a PropertyChanged signal on DBUS void ControlBox::dbsServicePropertyChanged(QString property, QDBusVariant dbvalue, QDBusMessage msg) { QString s_path = msg.path(); QVariant value = dbvalue.variant(); QString s_state; // replace the old values with the changed ones. for (int i = 0; i < services_list.count(); ++i) { if (s_path == services_list.at(i).objpath.path() ) { QMap map = services_list.at(i).objmap; map.remove(property); map.insert(property, value ); arrayElement ae = {services_list.at(i).objpath, map}; services_list.replace(i, ae); s_state = map.value("State").toString(); break; } // if } // for // process errrors - errors only valid when service is in the failure state if (property =="Error" && s_state == "failure") { notifyclient->init(); notifyclient->setSummary(QString(tr("Service Error: %1")).arg(value.toString()) ); notifyclient->setBody(QString(tr("Object Path: %1")).arg(s_path) ); notifyclient->setIcon(iconman->getIconName("state_error") ); notifyclient->setUrgency(Nc::UrgencyCritical); this->sendNotifications(); } // if state property changed sync the online data members. if (property == "State") { if (value.toString() == "online") { onlineobjectpath = s_path; } // else if (s_path == onlineobjectpath) { onlineobjectpath.clear(); } // else if object went offline // Send notification if vpn changed for (int i = 0; i < vpn_list.count(); ++i) { if (s_path == vpn_list.at(i).objpath.path() ) { notifyclient->init(); if (value.toString() == "ready") { notifyclient->setSummary(QString(tr("VPN Engaged")) ); notifyclient->setIcon(iconman->getIconName("connection_vpn") ); } else { notifyclient->setSummary(QString(tr("VPN Disengaged")) ); notifyclient->setIcon(iconman->getIconName("onnection_not_ready") ); } notifyclient->setBody(QString(tr("Object Path: %1")).arg(s_path) ); notifyclient->setUrgency(Nc::UrgencyNormal); this->sendNotifications(); break; } // if } // for } // if property contains State // update the widgets updateDisplayWidgets(); return; } // // Slot called whenever a technology object issues a PropertyChanged signal on DBUS void ControlBox::dbsTechnologyPropertyChanged(QString name, QDBusVariant dbvalue, QDBusMessage msg) { QString s_path = msg.path(); // replace the old values with the changed ones. for (int i = 0; i < technologies_list.count(); ++i) { if (s_path == technologies_list.at(i).objpath.path() ) { QMap map = technologies_list.at(i).objmap; map.remove(name); map.insert(name, dbvalue.variant() ); arrayElement ae = {technologies_list.at(i).objpath, map}; technologies_list.replace(i, ae); break; } // if } // for updateDisplayWidgets(); return; } // Slot to rescan all WiFi technologies. Called when ui.actionRescan // is triggered. Action is called from rescanwifi buttons and from // the context menu. // Results signaled by manager.ServicesChanged(), except for peer // services which will be signaled by manager.PeersChanged() void ControlBox::scanWiFi() { // Make sure we got the technologies_list before we try to work with it. if ( (q16_errors & CMST::Err_Technologies) != 0x00 ) return; // Run through each technology and do a scan for any wifi for (int row = 0; row < technologies_list.size(); ++row) { if (technologies_list.at(row).objmap.value("Type").toString() == "wifi") { if (technologies_list.at(row).objmap.value("Powered").toBool() ) { setStateRescan(false); ui.tableWidget_services->setCurrentIndex(QModelIndex()); // first cell becomes selected once pushbutton is disabled qApp->processEvents(); // needed to promply disable the button QDBusInterface* iface_tech = new QDBusInterface(DBUS_CON_SERVICE, technologies_list.at(row).objpath.path(), "net.connman.Technology", QDBusConnection::systemBus(), this); iface_tech->setTimeout( 8 * 1000); // full 25 second timeout is a bit much when there is a problem QDBusMessage reply = iface_tech->call(QDBus::AutoDetect, "Scan"); iface_tech->deleteLater(); } // if the wifi was powered } // if the list item is wifi } // for return; } // Slot to loop through all WiFi technologies and set or reset the // id and password. Called from the ui.pushButton_IDPass and from // toggleTethered(). void ControlBox::wifiIDPass(const QString& obj_path) { // Make sure we got the technologies_list before we try to work with it. if ( (q16_errors & CMST::Err_Technologies) != 0x00 ) return; // Run through each technology looking for Wifi for (int row = 0; row < technologies_list.size(); ++row) { if (technologies_list.at(row).objmap.value("Type").toString() == "wifi") { if (technologies_list.at(row).objpath.path() == obj_path || obj_path.isEmpty() ) { QDBusInterface* iface_tech = new QDBusInterface(DBUS_CON_SERVICE, technologies_list.at(row).objpath.path(), "net.connman.Technology", QDBusConnection::systemBus(), this); shared::ValidatingDialog* vd01 = new shared::ValidatingDialog(this); vd01->setLabel(tr("Technology: %1

    Please enter the WiFi AP SSID that clients will
    have to join in order to gain internet connectivity.").arg(technologies_list.at(row).objpath.path()) ), vd01->setValidator(CMST::ValDialog_min1ch); vd01->setText(technologies_list.at(row).objmap.value("TetheringIdentifier").toString() ); if (vd01->exec() == QDialog::Accepted) { if (vd01->getText() != technologies_list.at(row).objmap.value("TetheringIdentifier").toString()) { shared::processReply(iface_tech->call(QDBus::AutoDetect, "SetProperty", "TetheringIdentifier", QVariant::fromValue(QDBusVariant(vd01->getText()))) ); } } // if accepted vd01->deleteLater(); if (! technologies_list.at(row).objmap.value("TetheringIdentifier").toString().isEmpty() ) { shared::ValidatingDialog* vd02 = new shared::ValidatingDialog(this); vd02->setLabel(tr("Technology: %1

    Please enter the WPA pre-shared key clients will
    have to use in order to establish a connection.

    PSK length: minimum of 8 characters.").arg(technologies_list.at(row).objpath.path()) ); vd02->setValidator(CMST::ValDialog_min8ch); vd02->setText(technologies_list.at(row).objmap.value("TetheringPassphrase").toString() ); if (vd02->exec() == QDialog::Accepted) if (vd02->getText() != technologies_list.at(row).objmap.value("TetheringPassphrase").toString() ) shared::processReply(iface_tech->call(QDBus::AutoDetect, "SetProperty", "TetheringPassphrase", QVariant::fromValue(QDBusVariant(vd02->getText()))) ); vd02->deleteLater(); } // if // cleanup iface_tech->deleteLater(); } // if wifi match } // if tech is wifi } // for return; } // // Slot to globally turn power off to all network adapters // Called when ui.checkBox_devicesoff or ui.toolButton_offlinemode is clicked void ControlBox::toggleOfflineMode(bool checked) { if ( ((q16_errors & CMST::Err_No_DBus) | (q16_errors & CMST::Err_Invalid_Con_Iface)) != 0x00 ) return; shared::processReply(con_manager->call(QDBus::AutoDetect, "SetProperty", "OfflineMode", QVariant::fromValue(QDBusVariant(checked ? true : false))) ); return; } // // Slot to toggle the visibility of the tray icon // Called when ui.checkBox_hideIcon is clicked void ControlBox::toggleTrayIcon(bool b_checked) { if (trayicon != NULL ) { if (b_checked) { trayicon->setVisible(false); ui.pushButton_minimize->setDisabled(true); } // if else { trayicon->setVisible(true); ui.pushButton_minimize->setDisabled(false); } // else } //if return; } // // Slot to toggle the powered state of a technology // Called when our custom idButton in the powered cell in the page 1 technology tableWidget is clicked void ControlBox::togglePowered(QString object_id, bool checkstate) { QDBusInterface* iface_tech = new QDBusInterface(DBUS_CON_SERVICE, object_id, "net.connman.Technology", QDBusConnection::systemBus(), this); shared::processReply(iface_tech->call(QDBus::AutoDetect, "SetProperty", "Powered", QVariant::fromValue(QDBusVariant(checkstate))) ); // cleanup iface_tech->deleteLater(); return; } // // Slot to toggle the tethering state of a technology // Called when our custom idButton in the tethered cell in the page 1 technology tableWidget is clicked void ControlBox::toggleTethered(QString object_id, bool checkstate) { QDBusInterface* iface_tech = new QDBusInterface(DBUS_CON_SERVICE, object_id, "net.connman.Technology", QDBusConnection::systemBus(), this); // See if this is a wifi technology, get the ID and Pass if necessary bool ok = true; for (int row = 0; row < technologies_list.size(); ++row) { if (technologies_list.at(row).objpath.path() == object_id) { if(technologies_list.at(row).objmap.value("Type").toString() == "wifi") { QString sid = technologies_list.at(row).objmap.value("TetheringIdentifier").toString(); QString spw = technologies_list.at(row).objmap.value("TetheringPassphrase").toString(); if (sid.isEmpty() || spw.isEmpty() ) wifiIDPass(object_id); } // if technology is wifi } // if object_id } // for // Send message if everything is ok if (ok) { shared::processReply(iface_tech->call(QDBus::AutoDetect, "SetProperty", "Tethering", QVariant::fromValue(QDBusVariant(checkstate))) ); } // cleanup iface_tech->deleteLater(); return; } // // Slot to minimize the input window. QWidget.hide() if the tray icon // is visible, QWidget.showMinmized() if the tray icon is not visible. // Do it this way as otherwise there is no way to get the dialog back if // the tray icon is not shown. // called when actionMinimize is activated void ControlBox::minMaxWindow(QAction* act) { if (act == minimizeAction ) { this->writeSettings(); if (trayicon != NULL ) trayicon->isVisible() ? this->hide() : this->showMinimized(); else this->showMinimized(); } // if minimizeAction else if (act == maximizeAction) { this->showNormal(); } // Called from the systemtrayicon context menu. Actions are // created dynamically and we don't know them up front. Actions here // we want to open the details page and set the combo box to display // information on the service. else { ui.tabWidget->setCurrentIndex(1); ui.comboBox_service->setCurrentIndex(ui.comboBox_service->findText(act->text()) ); this->showNormal(); } return; } // // Called from the systemtrayicon context menu. Actions are // created dynamically and we don't know them up front. Actions here // are to power and unpower technologies void ControlBox::techSubmenuTriggered(QAction* act) { // find the techology associated with the action and toggle its powered state for (int i = 0; i < technologies_list.count(); ++i) { if (technologies_list.at(i).objmap.value("Name").toString() == act->text() ) { togglePowered(technologies_list.at(i).objpath.path(), act->isChecked() ); break; } // if } // for return; } // // Called from the systemtrayicon context menu. Actions are // created dynamically and we don't know them up front. Actions here // we want to open the details page and set the combo box to display // information on the service. void ControlBox::infoSubmenuTriggered(QAction* act) { ui.tabWidget->setCurrentIndex(1); ui.comboBox_service->setCurrentIndex(ui.comboBox_service->findText(act->text()) ); this->showNormal(); return; } // // Called from the systemtrayicon context menu. Actions are // created dynamically and we don't know them up front. Actions here // connect to a wifi service. void ControlBox::wifiSubmenuTriggered(QAction* act) { // find the wifi service associated with the action. for (int i = 0; i < wifi_list.count(); ++i) { if (getNickName(wifi_list.at(i).objpath) == act->text() ) { QDBusInterface* iface_serv = new QDBusInterface(DBUS_CON_SERVICE, wifi_list.at(i).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); QString state = wifi_list.at(i).objmap.value("State").toString(); if (state == "online" || state == "ready") { shared::processReply(iface_serv->call(QDBus::AutoDetect, "Disconnect") ); } else { iface_serv->setTimeout(5); QDBusMessage reply = iface_serv->call(QDBus::AutoDetect, "Connect"); if (reply.errorName() != "org.freedesktop.DBus.Error.NoReply") shared::processReply(reply); } iface_serv->deleteLater(); break; } // if } // for return; } // // Called from the systemtrayicon context menu. Actions are created // dynamically and we don't know them up front. Actions here connect // to a VPN service. void ControlBox::vpnSubmenuTriggered(QAction* act) { // find the VPN service associated with the action for (int i = 0; i < vpn_list.count(); ++i) { if (getNickName(vpn_list.at(i).objpath) == act->text() ) { QDBusInterface* iface_serv = new QDBusInterface(DBUS_CON_SERVICE, vpn_list.at(i).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); iface_serv->setTimeout(5); QString state = vpn_list.at(i).objmap.value("State").toString(); QDBusMessage reply; if (state == "ready") reply = iface_serv->call(QDBus::AutoDetect, "Disconnect"); else reply = iface_serv->call(QDBus::AutoDetect, "Connect" ); if (reply.errorName() != "org.freedesktop.DBus.Error.NoReply") shared::processReply(reply); iface_serv->deleteLater(); break; } // if } // for return; } // // Slot to get details of the selected service and write it into ui.label_details // Called when the ui.comboBox_services currentIndexChanged() signal is emitted. void ControlBox::getServiceDetails(int index) { // Make sure we were sent a valid index, can happen if the comboBox is // cleared and for whatever reason could not be reseeded with entries. if (index < 0 ) return; // variables bool b_editable = services_list.size() > 0 ? true : false; // Get the QMap associated with the index stored in an arrayElement QMap map = services_list.at(index).objmap; // Some of the QVariants in the map are QMaps themselves, create a data structure for them QMap submap; // Get a QFileInfo associated with the index and display the connection QFileInfo fi = services_list.at(index).objpath.path(); ui.label_details_connection->setText(tr("Connection: %1").arg(fi.baseName()) ); // Start building the string for the left label QString rs = tr("
    Service Details:
    "); if (getNickName(services_list.at(index).objpath).isEmpty() ) b_editable = false; rs.append(tr("Service Type: %1
    ").arg(TranslateStrings::cmtr(map.value("Type").toString())) ); rs.append(tr("Service State: %1
    ").arg(TranslateStrings::cmtr(map.value("State").toString())) ); rs.append(tr("Favorite: %1
    ").arg(map.value("Favorite").toBool() ? tr("Yes", "favorite") : tr("No", "favorite")) ); rs.append(tr("External Configuration File: %1
    ").arg(map.value("Immutable").toBool() ? tr("Yes", "immutable") : tr("No", "immutable")) ); if (map.value("Immutable").toBool() ) b_editable = false; rs.append(tr("Auto Connect: %1
    ").arg(map.value("AutoConnect").toBool() ? tr("On", "autoconnect") : tr("No", "autoconnect")) ); rs.append(tr("
    IPv4
    ")); shared::extractMapData(submap, services_list.at(index).objmap.value("IPv4") ); rs.append(tr("IP Address Acquisition: %1
    ").arg(TranslateStrings::cmtr(submap.value("Method").toString(), "connman ipv4 method string")) ); rs.append(tr("IP Address: %1
    ").arg(submap.value("Address").toString())); rs.append(tr("IP Netmask: %1
    ").arg(submap.value("Netmask").toString())); rs.append(tr("IP Gateway: %1
    ").arg(submap.value("Gateway").toString())); rs.append(tr("
    IPv6
    ")); shared::extractMapData(submap, services_list.at(index).objmap.value("IPv6") ); rs.append(tr("Address Acquisition: %1
    ").arg(TranslateStrings::cmtr(submap.value("Method").toString(), "connman ipv6 method string")) ); rs.append(tr("IP Address: %1
    ").arg(submap.value("Address").toString())); QString s_ipv6prefix = submap.value("PrefixLength").toString(); if (s_ipv6prefix.isEmpty() ) rs.append(tr("Prefix Length:
    ")); else rs.append(tr("Prefix Length: %1
    ").arg(submap.value("PrefixLength").toUInt())); rs.append(tr("IP Gateway: %1
    ").arg(submap.value("Gateway").toString())); rs.append(tr("Privacy: %1
    ").arg(TranslateStrings::cmtr(submap.value("Privacy").toString())) ); rs.append(tr("
    Proxy
    ")); shared::extractMapData(submap, services_list.at(index).objmap.value("Proxy") ); QString s_proxymethod = TranslateStrings::cmtr(submap.value("Method").toString(), "connman proxy string" ); rs.append(tr("Address Acquisition: %1
    ").arg(s_proxymethod) ); if (s_proxymethod == "auto" ) { rs.append(tr("URL: %1
    ").arg(submap.value("URL").toString()) ); } else if (s_proxymethod == "manual" ) { rs.append(tr("Servers:
      %1
    ").arg(submap.value("Servers").toStringList().join("
      ")) ); rs.append(tr("Excludes:
      %1
    ").arg(submap.value("Excludes").toStringList().join("
      ")) ); } // write the text to the left display label ui.label_details_left->setText(rs); // Start building the string for the right label rs = tr("
    Name Servers
    "); rs.append(map.value("Nameservers").toStringList().join("
    ") ); rs.append(tr("

    Time Servers
    ")); rs.append(map.value("Timeservers").toStringList().join("
    ") ); rs.append(tr("

    Search Domains
    ")); rs.append(map.value("Domains").toStringList().join("
    ") ); rs.append(tr("

    Ethernet
    ")); shared::extractMapData(submap, services_list.at(index).objmap.value("Ethernet") ); rs.append(tr("Connection Method: %1
    ").arg(TranslateStrings::cmtr(submap.value("Method").toString(), "connman ethernet connection method")) ); rs.append(tr("Interface: %1
    ").arg(submap.value("Interface").toString()) ); rs.append(tr("Device Address: %1
    ").arg(submap.value("Address").toString()) ); rs.append(tr("MTU: %1
    ").arg(submap.value("MTU").value()) ); rs.append(tr("
    Wireless
    ")); QStringList sl_tr; for (int i = 0; i < map.value("Security").toStringList().size(); ++i) { sl_tr << TranslateStrings::cmtr(map.value("Security").toStringList().at(i) ); } // for rs.append(tr("Security: %1
    ").arg(sl_tr.join(',')) ); if (! map.value("Strength").toString().isEmpty() ) rs.append(tr("Strength: %1
    ").arg(map.value("Strength").value()) ); rs.append(tr("Roaming: %1
    ").arg(map.value("Roaming").toBool() ? tr("Yes", "roaming") : tr("No", "roaming")) ); rs.append(tr("
    VPN Provider
    ")); shared::extractMapData(submap, services_list.at(index).objmap.value("Provider") ); rs.append(tr("Host: %1
    ").arg(submap.value("Host").toString()) ); rs.append(tr("Domain: %1
    ").arg(submap.value("Domain").toString()) ); rs.append(tr("Name: %1
    ").arg(submap.value("Name").toString()) ); rs.append(tr("Type: %1
    ").arg(submap.value("Type").toString()) ); // write the text to the right display label ui.label_details_right->setText(rs); // enable or disable the editor button ui.pushButton_configuration->setEnabled(b_editable); return; } // // Slot to enter whats this mode // Called when the ui.toolButton_whatsthis clicked() signal is emitted void ControlBox::showWhatsThis() { QWhatsThis::enterWhatsThisMode(); } //////////////////////////////////////////// Protected Functions ////////////////////////////////// // // Close events for this dialog. If there is a systemtray and it is visible // then a close event will only minimize (for instance clicking the X in a // window bar. If there is no system tray or there is one but it is not // visible then close the program. void ControlBox::closeEvent(QCloseEvent* e) { if (trayicon != NULL ) { if (trayicon->isVisible() ){ this->hide(); e->ignore(); } // if visible } // if there is a tray icon else e->accept(); return; } // // Key event for this dialog. If escape is pressed, minimize instead of close if // applicable. void ControlBox::keyPressEvent(QKeyEvent* e) { if (e->key() == Qt::Key_Escape && trayicon != NULL && trayicon->isVisible()) { this->hide(); return; } QDialog::keyPressEvent(e); } // // Event filter used to filter out tooltip events if we don't want to see them // in eventFilters return true eats the event, false passes on it. bool ControlBox::eventFilter(QObject* obj, QEvent* evn) { (void) obj; if (evn->type() == QEvent::ToolTip) { if (ui.checkBox_enableinterfacetooltips->isChecked()) return false; else return true; } // event is a tooltip return false; } //////////////////////////////////////////// Private Functions //////////////////////////////////// // // Function to rescan connman properties, technologies and services // Int return value is the errors encountered // This function is now really misnamed. Originally we called it a lot, but now // everything is dealt with using DBus signals so it is only called at startup // as an initial scan. int ControlBox::managerRescan(const int& srv) { if ( ((q16_errors & CMST::Err_No_DBus) | (q16_errors & CMST::Err_Invalid_Con_Iface)) == 0x00 ) { // Reset the getXX errors, always a chance we could read them after // a previous error. Don't actually believe it, but just in case. q16_errors &= ~CMST::Err_Properties; q16_errors &= ~CMST::Err_Technologies; q16_errors &= ~CMST::Err_Services; // Access connman.manager to retrieve the data if (srv & CMST::Manager_Technologies) { if (! getTechnologies() ) { logErrors(CMST::Err_Technologies); } // if else { // connect technology signals to slots for (int i = 0; i < technologies_list.size(); ++i) { QDBusConnection::systemBus().disconnect(DBUS_CON_SERVICE, technologies_list.at(i).objpath.path(), "net.connman.Technology", "PropertyChanged", this, SLOT(dbsTechnologyPropertyChanged(QString, QDBusVariant, QDBusMessage))); QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, technologies_list.at(i).objpath.path(), "net.connman.Technology", "PropertyChanged", this, SLOT(dbsTechnologyPropertyChanged(QString, QDBusVariant, QDBusMessage))); } // for } //else } // if technolgies if (srv & CMST::Manager_Services) { if (! getServices() ) { logErrors(CMST::Err_Services); } // if // connect service signals to slots else { for (int i = 0; i < services_list.size(); ++i) { QDBusConnection::systemBus().disconnect(DBUS_CON_SERVICE, services_list.at(i).objpath.path(), "net.connman.Service", "PropertyChanged", this, SLOT(dbsServicePropertyChanged(QString, QDBusVariant, QDBusMessage))); QDBusConnection::systemBus().connect(DBUS_CON_SERVICE, services_list.at(i).objpath.path(), "net.connman.Service", "PropertyChanged", this, SLOT(dbsServicePropertyChanged(QString, QDBusVariant, QDBusMessage))); } // for } // else } // if services if (srv & CMST::Manager_Properties) { if (! getProperties() ) logErrors(CMST::Err_Properties); } } // if return (q16_errors & CMST::Err_Properties) | (q16_errors & CMST::Err_Technologies) | (q16_errors & CMST::Err_Services); } // // Function to assemble status tab of the dialog void ControlBox::assembleTabStatus() { // Global Properties if ( (q16_errors & CMST::Err_Properties) == 0x00 ) { QString s1 = properties_map.value("State").toString(); if (s1 == "online") { ui.label_state_pix->setPixmap(iconman->getIcon("state_online").pixmap(QSize(16,16)) ); } // if online else { if (s1 == "ready") { ui.label_state_pix->setPixmap(iconman->getIcon("state_ready").pixmap(QSize(16,16)) ); } // if ready else { ui.label_state_pix->setPixmap(iconman->getIcon("state_not_ready").pixmap(QSize(16,16)) ); } // else any other state } // else ready or any other state s1 = TranslateStrings::cmtr(s1); s1.prepend(tr("State: ") ); ui.label_state->setText(s1); bool b1 = properties_map.value("OfflineMode").toBool(); QString s2 = QString(); if (b1) { s2 = tr("Engaged"); ui.toolButton_offlinemode->setIcon(iconman->getIcon("offline_mode_engaged") ); } // if offline mode is engaged else { s2 = tr("Disabled"); ui.toolButton_offlinemode->setIcon(iconman->getIcon("offline_mode_disengaged") ); } // else offlinemode disabled s2.prepend(tr("Offline Mode ")); ui.label_offlinemode->setText(s2); } // properties if no error // Technologies if ( (q16_errors & CMST::Err_Technologies) == 0x00 ) { QString st = QString(); bool bt; ui.tableWidget_technologies->clearContents(); ui.tableWidget_technologies->setRowCount(technologies_list.size() ); ui.tableWidget_technologies->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Fixed); ui.tableWidget_technologies->horizontalHeader()->setSectionResizeMode(4, QHeaderView::Fixed); if (ui.checkBox_hidetethering->isChecked() ) { ui.tableWidget_technologies->hideColumn(4); ui.tableWidget_technologies->hideColumn(5); ui.pushButton_IDPass->setHidden(true); } else { ui.tableWidget_technologies->showColumn(4); ui.tableWidget_technologies->showColumn(5); ui.pushButton_IDPass->setHidden(false); } for (int row = 0; row < technologies_list.size(); ++row) { QTableWidgetItem* qtwi00 = new QTableWidgetItem(); st = technologies_list.at(row).objmap.value("Name").toString(); qtwi00->setText(TranslateStrings::cmtr(st) ); qtwi00->setTextAlignment(Qt::AlignCenter); ui.tableWidget_technologies->setItem(row, 0, qtwi00) ; QTableWidgetItem* qtwi01 = new QTableWidgetItem(); st = technologies_list.at(row).objmap.value("Type").toString(); qtwi01->setText(TranslateStrings::cmtr(st) ); qtwi01->setTextAlignment(Qt::AlignCenter); ui.tableWidget_technologies->setItem(row, 1, qtwi01); idButton* qpb02 = new idButton(this, technologies_list.at(row).objpath); connect (qpb02, SIGNAL(clickedID(QString, bool)), this, SLOT(togglePowered(QString, bool))); if (technologies_list.at(row).objmap.value("Powered").toBool()) { qpb02->setText(tr("On", "powered") ); qpb02->setIcon(QPixmap(":/icons/images/interface/golfball_green.png")); qpb02->setChecked(true); } else { qpb02->setText(tr("Off", "powered") ); qpb02->setIcon(QPixmap(":/icons/images/interface/golfball_red.png")); qpb02->setChecked(false); } ui.tableWidget_technologies->setCellWidget(row, 2, qpb02); QTableWidgetItem* qtwi03 = new QTableWidgetItem(); bt = technologies_list.at(row).objmap.value("Connected").toBool(); qtwi03->setText( bt ? tr("Yes", "connected") : tr("No", "connected") ); qtwi03->setTextAlignment(Qt::AlignCenter); ui.tableWidget_technologies->setItem(row, 3, qtwi03); idButton* qpb04 = new idButton(this, technologies_list.at(row).objpath); connect (qpb04, SIGNAL(clickedID(QString, bool)), this, SLOT(toggleTethered(QString, bool))); if (technologies_list.at(row).objmap.value("Tethering").toBool()) { qpb04->setText(tr("On", "tethering") ); qpb04->setIcon(QPixmap(":/icons/images/interface/golfball_green.png")); qpb04->setChecked(true); } else { qpb04->setText(tr("Off", "tethering") ); qpb04->setIcon(QPixmap(":/icons/images/interface/golfball_red.png")); qpb04->setChecked(false); if (technologies_list.at(row).objmap.value("Type").toString() == "ethernet") qpb04->setDisabled(true); else qpb04->setEnabled(technologies_list.at(row).objmap.value("Powered").toBool() ); } ui.tableWidget_technologies->setCellWidget(row, 4, qpb04); QTableWidgetItem* qtwi05 = new QTableWidgetItem(); QString sid = technologies_list.at(row).objmap.value("TetheringIdentifier").toString(); QString spw = technologies_list.at(row).objmap.value("TetheringPassphrase").toString(); if (sid.isEmpty() ) sid = "--"; if (spw.isEmpty() ) spw = "--"; qtwi05->setText(QString("%1 : %2").arg(sid).arg(spw) ); qtwi05->setTextAlignment(Qt::AlignCenter); ui.tableWidget_technologies->setItem(row, 5, qtwi05); } // technologies for loop // resize the columns to contents ui.tableWidget_technologies->resizeColumnToContents(0); ui.tableWidget_technologies->resizeColumnToContents(1); ui.tableWidget_technologies->resizeColumnToContents(3); } // technologies if no error // Services if ( (q16_errors & CMST::Err_Services) == 0x00 ) { QString ss = QString(); ui.tableWidget_services->clearContents(); ui.tableWidget_services->setRowCount(services_list.size() ); if (ui.checkBox_hidecnxn->isChecked() ) { ui.tableWidget_services->hideColumn(3); } else { ui.tableWidget_services->showColumn(3); ui.tableWidget_services->horizontalHeader()->resizeSection(1, ui.tableWidget_services->horizontalHeader()->defaultSectionSize()); } for (int row = 0; row < services_list.size(); ++row) { QTableWidgetItem* qtwi00 = new QTableWidgetItem(); ss = getNickName(services_list.at(row).objpath); qtwi00->setText(TranslateStrings::cmtr(ss) ); qtwi00->setTextAlignment(Qt::AlignCenter); ui.tableWidget_services->setItem(row, 0, qtwi00); QTableWidgetItem* qtwi01 = new QTableWidgetItem(); ss = services_list.at(row).objmap.value("Type").toString(); qtwi01->setText(TranslateStrings::cmtr(ss) ); qtwi01->setTextAlignment(Qt::AlignCenter); ui.tableWidget_services->setItem(row, 1, qtwi01); QTableWidgetItem* qtwi02 = new QTableWidgetItem(); ss = services_list.at(row).objmap.value("State").toString(); qtwi02->setText(TranslateStrings::cmtr(ss) ); qtwi02->setTextAlignment(Qt::AlignCenter); ui.tableWidget_services->setItem(row, 2, qtwi02); QTableWidgetItem* qtwi03 = new QTableWidgetItem(); QFileInfo fi = services_list.at(row).objpath.path(); qtwi03->setText(fi.baseName() ); qtwi03->setTextAlignment(Qt::AlignVCenter|Qt::AlignLeft); ui.tableWidget_services->setItem(row, 3, qtwi03); } // services for loop // resize the services columns to contents ui.tableWidget_services->resizeColumnToContents(0); ui.tableWidget_services->resizeColumnToContents(1); ui.tableWidget_services->resizeColumnToContents(2); } // services if no error return; } // // Function to assemble details tab of the dialog. Only fill in the // ui.comboBox_service widget. The detail portion will be filled in // by the getServiceDetails() slot whenever the comboBox index changes. void ControlBox::assembleTabDetails() { // variables int newidx = 0; QString cursvc = QString(); // if the combobox has any items in it save the nick name of the service we are viewing if (ui.comboBox_service->count() > 0) cursvc = ui.comboBox_service->currentText(); // initilize the page2 display widgets ui.comboBox_service->clear(); ui.label_details_left->clear(); ui.label_details_right->clear(); // services details if ( (q16_errors & CMST::Err_Services) == 0x00 ) { // populate the combobox for (int row = 0; row < services_list.size(); ++row) { QString ss = getNickName(services_list.at(row).objpath); ui.comboBox_service->addItem(TranslateStrings::cmtr(ss) ); if (TranslateStrings::cmtr(ss) == cursvc) newidx = row; } // services for loop ui.comboBox_service->setCurrentIndex(newidx); } // services if no error return; } // // Function to assemble the wireless tab of the dialog. void ControlBox::assembleTabWireless() { // initilize the table ui.tableWidget_wifi->clearContents(); ui.tableWidget_wifi->setRowCount(0); int rowcount = 0; // Make sure we got the services_list before we try to work with it. if ( (q16_errors & CMST::Err_Services) != 0x00 ) return; // Run through the technologies again, this time only look for wifi if ( (q16_errors & CMST::Err_Technologies) == 0x00 ) { int i_wifidevices= 0; int i_wifipowered = 0; for (int row = 0; row < technologies_list.size(); ++row) { if (technologies_list.at(row).objmap.value("Type").toString() == "wifi" ) { ++i_wifidevices; if (technologies_list.at(row).objmap.value("Powered").toBool() ) ++i_wifipowered; } // if census } // for loop ui.label_wifi_state->setText(tr(" WiFi Technologies:
    %1 Found, %2 Powered").arg(i_wifidevices).arg(i_wifipowered) ); } // technologis if no errors // Run through each service_list looking for wifi services wifi_list.clear(); for (int row = 0; row < services_list.size(); ++row) { QMap map = services_list.at(row).objmap; if (map.value("Type").toString() == "wifi") { wifi_list.append(services_list.at(row)); ui.tableWidget_wifi->setRowCount(rowcount + 1); QTableWidgetItem* qtwi00 = new QTableWidgetItem(); qtwi00->setText(getNickName(services_list.at(row).objpath) ); qtwi00->setTextAlignment(Qt::AlignCenter); ui.tableWidget_wifi->setItem(rowcount, 0, qtwi00); QLabel* ql01 = new QLabel(ui.tableWidget_wifi); if (map.value("Favorite").toBool() ) { ql01->setPixmap(iconman->getIcon("favorite").pixmap(QSize(16,16)) ); } ql01->setAlignment(Qt::AlignCenter); ui.tableWidget_wifi->setCellWidget(rowcount, 1, ql01); QLabel* ql02 = new QLabel(ui.tableWidget_wifi); if (map.value("State").toString() == "online") { ql02->setPixmap(iconman->getIcon("state_online").pixmap(QSize(16,16)) ); } // if online else { if (map.value("State").toString() == "ready") { ql02->setPixmap(iconman->getIcon("state_ready").pixmap(QSize(16,16)) ); } // if ready else { ql02->setPixmap(iconman->getIcon("wifi_tab_state_not_ready").pixmap(QSize(16,16)) ); } // else any other state } // else ready or any other state ql02->setAlignment(Qt::AlignCenter); ql02->setToolTip(TranslateStrings::cmtr(map.value("State").toString()) ); ql02->installEventFilter(this); ui.tableWidget_wifi->setCellWidget(rowcount, 2, ql02); QTableWidgetItem* qtwi03 = new QTableWidgetItem(); QStringList sl_tr; for (int i = 0; i < map.value("Security").toStringList().size(); ++i) { sl_tr << TranslateStrings::cmtr(map.value("Security").toStringList().at(i) ); } // for qtwi03->setText(sl_tr.join(',') ); qtwi03->setTextAlignment(Qt::AlignCenter); ui.tableWidget_wifi->setItem(rowcount, 3, qtwi03); QProgressBar* pb04 = new QProgressBar(ui.tableWidget_wifi); pb04->setMinimum(0); pb04->setMaximum(100); pb04->setOrientation( Qt::Horizontal); pb04->setValue(map.value("Strength").value() ); if (QColor(ui.lineEdit_colorize->text()).isValid() ) { QPalette pl = pb04->palette(); pl.setColor(QPalette::Active, QPalette::Highlight, QColor(ui.lineEdit_colorize->text()) ); pb04->setPalette(pl); } QWidget* w04 = new QWidget(ui.tableWidget_wifi); QHBoxLayout* l04 = new QHBoxLayout(w04); l04->addWidget(pb04); w04->setLayout(l04); l04->setAlignment(Qt::AlignCenter); l04->setContentsMargins(7, 5, 11, 5); ui.tableWidget_wifi->setCellWidget(rowcount, 4, w04); ++rowcount; } // if wifi cnxn } // services for loop // resize the services column 0 to 4 to contents ui.tableWidget_wifi->resizeColumnToContents(0); ui.tableWidget_wifi->resizeColumnToContents(1); ui.tableWidget_wifi->resizeColumnToContents(2); ui.tableWidget_wifi->resizeColumnToContents(3); // enable the control buttons if there is at least on line in the table bool b_enable = false; if ( wifi_list.count() > 0 ) b_enable = true; ui.pushButton_connect->setEnabled(b_enable); ui.pushButton_disconnect->setEnabled(b_enable); ui.pushButton_remove->setEnabled(b_enable); setStateRescan(b_enable); return; } // // FUnction to assemble the VPN tab of the dialog void ControlBox::assembleTabVPN() { // initilize the table ui.tableWidget_vpn->clearContents(); ui.tableWidget_vpn->setRowCount(0); int rowcount = 0; // Make sure we've been able to communicate with the connman-vpn daemon if ( ((q16_errors & CMST::Err_Invalid_VPN_Iface) != 0x00) | (vpn_manager == NULL) ) { ui.tabWidget->setTabEnabled(ui.tabWidget->indexOf(ui.VPN), false); return; } // Make sure we got the services_list before we try to work with it. if ( (q16_errors & CMST::Err_Services ) != 0x00 ) return; // Run through each service_list looking for vpn services vpn_list.clear(); for (int row = 0; row < services_list.size(); ++row) { QMap map = services_list.at(row).objmap; if (map.value("Type").toString() == "vpn") { vpn_list.append(services_list.at(row)); ui.tableWidget_vpn->setRowCount(rowcount + 1); QMap providermap; shared::extractMapData(providermap, services_list.at(row).objmap.value("Provider") ); QTableWidgetItem* qtwi00 = new QTableWidgetItem(); qtwi00->setText(getNickName(services_list.at(row).objpath) ); qtwi00->setTextAlignment(Qt::AlignCenter); ui.tableWidget_vpn->setItem(rowcount, 0, qtwi00); QLabel* ql01 = new QLabel(ui.tableWidget_vpn); ql01->setText(TranslateStrings::cmtr(providermap.value("Type").toString()) ); ql01->setAlignment(Qt::AlignCenter); ui.tableWidget_vpn->setCellWidget(rowcount, 1, ql01); if (map.value("State").toString() == "association") { QProgressBar* pb02 = new QProgressBar(ui.tableWidget_vpn); pb02->setMinimum(0); pb02->setMaximum(0); pb02->setOrientation( Qt::Horizontal); pb02->setFormat("Connecting"); // set the stylesheet on pb02 QFile f0(":/stylesheets/stylesheets/vpn_connecting.qss"); if (f0.open(QIODevice::ReadOnly | QIODevice::Text)) { QString qss = QString(f0.readAll()); if (QColor(ui.lineEdit_colorize->text()).isValid() ) { qss = qss.left(qss.lastIndexOf('}') ); qss.append(QString("background-color: %1;").arg(ui.lineEdit_colorize->text()) ); qss.append('}'); } f0.close(); pb02->setStyleSheet(qss); } ui.tableWidget_vpn->setCellWidget(rowcount, 2, pb02); } // if association else { QLabel* ql02 = new QLabel(ui.tableWidget_vpn); if (map.value("State").toString() == "ready") { ql02->setPixmap(iconman->getIcon("state_vpn_connected").pixmap(QSize(16,16)) ); } // if ready else { ql02->setPixmap(iconman->getIcon("state_not_ready").pixmap(QSize(16,16)) ); } // else any other state ql02->setAlignment(Qt::AlignCenter); ql02->setToolTip(TranslateStrings::cmtr(map.value("State").toString()) ); ql02->installEventFilter(this); ui.tableWidget_vpn->setCellWidget(rowcount, 2, ql02); } // else not association QLabel* ql03 = new QLabel(ui.tableWidget_vpn); ql03->setText(providermap.value("Host").toString() ); ql03->setAlignment(Qt::AlignCenter); ui.tableWidget_vpn->setCellWidget(rowcount, 3, ql03); QLabel* ql04 = new QLabel(ui.tableWidget_vpn); QFileInfo fi = services_list.at(row).objpath.path(); ql04->setText(fi.baseName() ); ql04->setAlignment(Qt:: AlignCenter); ui.tableWidget_vpn->setCellWidget(rowcount, 4, ql04); ++rowcount; } // if vpn cnxn } // services for loop // resize the services column 0 to 3 to contents ui.tableWidget_vpn->resizeColumnToContents(0); ui.tableWidget_vpn->resizeColumnToContents(1); ui.tableWidget_vpn->resizeColumnToContents(2); ui.tableWidget_vpn->resizeColumnToContents(3); // enable the control buttons if there is at least on line in the table bool b_enable = false; if ( vpn_list.count() > 0 ) b_enable = true; ui.pushButton_vpn_connect->setEnabled(b_enable); ui.pushButton_vpn_disconnect->setEnabled(b_enable); return; } // // Function to assemble the counters tab of the dialog. void ControlBox::assembleTabCounters() { // Text for the counter settings label ui.label_counter_settings->setText(tr("Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time.") \ .arg(counter_accuracy) \ .arg(counter_period) ); return; } // // Function to assemble the tray icon tooltip text and picture. Called // mainly from updateDisplayWidgets(), also from createSystemTrayIcon() void ControlBox::assembleTrayIcon() { QString stt = QString(); int readycount = 0; QIcon prelimicon; if ( (q16_errors & CMST::Err_Properties & CMST::Err_Services) == 0x00 ) { // count how many services are in the ready state for (int i = 0; i < services_list.count(); ++i) { if (services_list.at(i).objmap.value("State").toString() == "ready") ++readycount; } // readycount for loop if ((properties_map.value("State").toString() == "online") || (properties_map.value("State").toString() == "ready" && readycount == 1) ) { if ( (q16_errors & CMST::Err_Services) == 0x00 ) { QMap submap; if (services_list.at(0).objmap.value("Type").toString() == "ethernet") { shared::extractMapData(submap, services_list.at(0).objmap.value("Ethernet") ); stt.prepend(tr("Ethernet Connection
    ","icon_tool_tip")); stt.append(tr("Service: %1
    ").arg(getNickName(services_list.at(0).objpath)) ); stt.append(tr("Interface: %1").arg(TranslateStrings::cmtr(submap.value("Interface").toString())) ); prelimicon = iconman->getIcon("connection_wired"); } // if wired connection else if (services_list.at(0).objmap.value("Type").toString() == "wifi") { stt.prepend(tr("WiFi Connection
    ","icon_tool_tip")); shared::extractMapData(submap, services_list.at(0).objmap.value("Ethernet") ); stt.append(tr("SSID: %1
    ").arg(getNickName(services_list.at(0).objpath)) ); QStringList sl_tr; for (int i = 0; i < services_list.at(0).objmap.value("Security").toStringList().size(); ++i) { sl_tr << TranslateStrings::cmtr(services_list.at(0).objmap.value("Security").toStringList().at(i) ); } // for stt.append(tr("Security: %1
    ").arg(sl_tr.join(',')) ); stt.append(tr("Strength: %1%
    ").arg(services_list.at(0).objmap.value("Strength").value()) ); stt.append(tr("Interface: %1").arg(TranslateStrings::cmtr(submap.value("Interface").toString())) ); quint8 str = services_list.at(0).objmap.value("Strength").value(); if (str > 80 ) prelimicon = iconman->getIcon("connection_wifi_100"); else if (str > 60 ) prelimicon = iconman->getIcon("connection_wifi_075"); else if (str > 40 ) prelimicon = iconman->getIcon("connection_wifi_050"); else if (str > 20 ) prelimicon = iconman->getIcon("connection_wifi_025"); else prelimicon = iconman->getIcon("connection_wifi_000"); } // else if wifi connection else if (services_list.at(0).objmap.value("Type").toString() == "vpn") { shared::extractMapData(submap, services_list.at(0).objmap.value("Provider") ); stt.prepend(tr("VPN Connection
    ","icon_tool_tip")); stt.append(tr("Type: %1
    ").arg(TranslateStrings::cmtr(submap.value("Type").toString())) ); stt.append(tr("Service: %1
    ").arg(services_list.at(0).objmap.value("Name").toString()) ); stt.append(tr("Host: %1
    ").arg(TranslateStrings::cmtr(submap.value("Host").toString())) ); prelimicon = iconman->getIcon("connection_vpn"); } // else if vpn connection } // services if no error } // if the state is online // else if state is ready else if (properties_map.value("State").toString() == "ready") { prelimicon = iconman->getIcon("connection_ready"); stt.append(tr("Connection is in the Ready State.", "icon_tool_tip")); } // else if if ready // else if state is failure else if (properties_map.value("State").toString() == "failure") { // try to reconnect if service is wifi and Favorite and if reconnect is specified if (ui.checkBox_retryfailed->isChecked() ) { if (services_list.at(0).objmap.value("Type").toString() =="wifi" && services_list.at(0).objmap.value("Favorite").toBool() ) { QDBusInterface* iface_serv = new QDBusInterface(DBUS_CON_SERVICE, services_list.at(0).objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); shared::processReply(iface_serv->call(QDBus::AutoDetect, "Connect") ); iface_serv->deleteLater(); stt.append(tr("Connection is in the Failure State, attempting to reestablish the connection", "icon_tool_tip") ); } // if wifi and favorite } // if retry checked prelimicon = iconman->getIcon("state_online"); stt.append(tr("Connection is in the Failure State.", "icon_tool_tip")); } // else if failure state // else anything else, states in this case should be "idle", "association", "configuration", or "disconnect" else { prelimicon = iconman->getIcon("connection_not_ready"); stt.append(tr("Not Connected", "icon_tool_tip")); } // else any other connection state } // properties if no error // could not get any properties else { prelimicon = iconman->getIcon("connection_error"); stt.append(tr("Error retrieving properties via Dbus")); stt.append(tr("Connection status is unknown")); } // Set the tray icon. If the trayiconbackground color is valid and // there is a valid alpha channel convert the alpha to the background // color to get our fake transparency. Fake transparency can be set as a command // line option so trayiconbackground is set up in the constructor. // Otherwise just convert the image to ARGB32 which seems to be required // for the icons to display in Plasma5. // First convert from a QIcon through QPixmap to QImage QPixmap pxm = prelimicon.pixmap(prelimicon.actualSize(QSize(22,22)) ); QImage src = pxm.toImage(); QImage dest = QImage(src.width(), src.height(), QImage::Format_ARGB32); QPainter painter(&dest); if (trayiconbackground.isValid() && src.hasAlphaChannel() ) { painter.setCompositionMode(QPainter::CompositionMode_Source); painter.fillRect(dest.rect(), trayiconbackground); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); } // if img has alpha channel and background color valid else { painter.setCompositionMode(QPainter::CompositionMode_Source); } // else just make an ARGB32 copy painter.drawImage(0, 0, src); prelimicon = QIcon(QPixmap::fromImage(dest)); trayicon->setIcon(prelimicon); // Set the tool tip (shown when mouse hovers over the systemtrayicon) if (ui.checkBox_enablesystemtraytooltips->isChecked() ) trayicon->setToolTip(stt); else trayicon->setToolTip(QString()); // Don't continue if we can't get properties if ( (q16_errors & CMST::Err_Properties & CMST::Err_Technologies & CMST::Err_Services) != 0x00 ) return; // Assemble the submenus for the context menu // tech_submenu. tech_submenu->clear(); for (int i = 0; i < technologies_list.count(); ++i) { QAction* act = tech_submenu->addAction(technologies_list.at(i).objmap.value("Name").toString() ); act->setCheckable(true); act->setChecked(technologies_list.at(i).objmap.value("Powered").toBool() ); QString ttstr = QString(tr("

    %1 Properties
    ").arg(TranslateStrings::cmtr(technologies_list.at(i).objmap.value("Name").toString())) ); ttstr.append(tr("Type: %1").arg(technologies_list.at(i).objmap.value("Type").toString()) ); ttstr.append(tr("
    Powered ")); technologies_list.at(i).objmap.value("Powered").toBool() ? ttstr.append(tr("On")) : ttstr.append(tr("Off")); ttstr.append("
    "); technologies_list.at(i).objmap.value("Connected").toBool() ? ttstr.append(tr("Connected")) : ttstr.append(tr("Not Connected")); ttstr.append(tr("
    Tethering ")); technologies_list.at(i).objmap.value("Tethering").toBool() ? ttstr.append(tr("Enabled")) : ttstr.append(tr("Disabled")); act->setToolTip(ttstr); } // i for // info_submenu info_submenu->clear(); for (int j = 0; j < services_list.count(); ++j) { QAction* act = info_submenu->addAction(getNickName(services_list.at(j).objpath) ); if (services_list.at(j).objmap.value("Type").toString() == "ethernet" ) { if (services_list.at(j).objmap.value("State").toString() == "online") act->setIcon(iconman->getIcon("connection_wired")); else if(services_list.at(j).objmap.value("State").toString() == "ready") act->setIcon(iconman->getIcon("connection_ready")); else act->setIcon(iconman->getIcon("connection_not_ready")); } // if wired else if (services_list.at(j).objmap.value("Type").toString() == "wifi" ) { if (services_list.at(j).objmap.value("State").toString() == "online" || (properties_map.value("State").toString() != "online" && (services_list.at(j).objmap.value("State").toString() == "ready" && readycount == 1)) ) { quint8 str = services_list.at(j).objmap.value("Strength").value(); if (str > 80 ) act->setIcon(iconman->getIcon("connection_wifi_100") ); else if (str > 60 ) act->setIcon(iconman->getIcon("connection_wifi_075") ); else if (str > 40 ) act->setIcon(iconman->getIcon("connection_wifi_050") ); else if (str > 20 ) act->setIcon(iconman->getIcon("connection_wifi_025") ); else act->setIcon(iconman->getIcon("connection_wifi_000") ); } // if we want to show a wifi signal symbol else if(services_list.at(j).objmap.value("State").toString() == "ready") act->setIcon(iconman->getIcon("connection_ready")); else act->setIcon(iconman->getIcon("connection_not_ready")); } // else if wifi else if (services_list.at(j).objmap.value("Type").toString() == "vpn" ) { if (services_list.at(j).objmap.value("State").toString() == "ready") act->setIcon(iconman->getIcon("connection_vpn")); else if (services_list.at(j).objmap.value("State").toString() == "association") act->setIcon(iconman->getIcon("connection_vpn_acquiring")); else act->setIcon(iconman->getIcon("connection_not_ready")); } // else if vpn else if (services_list.at(j).objmap.value("State").toString() == "ready") act->setIcon(iconman->getIcon("connection_ready")); else if (services_list.at(j).objmap.value("State").toString() == "failure" ) act->setIcon(iconman->getIcon("connection_failure")); else act->setIcon(iconman->getIcon("connection_not_ready")); } // j for // wifi_submenu. wifi_submenu->clear(); for (int k = 0; k < wifi_list.count(); ++k) { QAction* act = wifi_submenu->addAction(getNickName(wifi_list.at(k).objpath) ); act->setCheckable(true); QString state = wifi_list.at(k).objmap.value("State").toString(); if (state == "online" || state == "ready") act->setChecked(true); QString ttstr = QString(tr("

    %1
    ").arg(getNickName(wifi_list.at(k).objpath)) ); ttstr.append(tr("Connection : %1").arg(TranslateStrings::cmtr(state)) ); ttstr.append("
    "); ttstr.append(tr("Signal Strength: %1%").arg(wifi_list.at(k).objmap.value("Strength").toInt()) ); ttstr.append("
    "); wifi_list.at(k).objmap.value("Favorite").toBool() ? ttstr.append(tr("Favorite Connection")) : ttstr.append(tr("Never Connected")); ttstr.append("
    "); QStringList sl_tr; for (int m = 0; m < wifi_list.at(k).objmap.value("Security").toStringList().size(); ++m) { sl_tr << TranslateStrings::cmtr(wifi_list.at(k).objmap.value("Security").toStringList().at(m) ); } // for ttstr.append(tr("Security: %1").arg(sl_tr.join(',')) ); if (wifi_list.at(k).objmap.value("Roaming").toBool() ) ttstr.append(tr("
    Roaming")); ttstr.append(tr("
    Autoconnect is ")); wifi_list.at(k).objmap.value("AutoConnect").toBool() ? ttstr.append(tr("Enabled")) : ttstr.append(tr("Disabled")); act->setToolTip(ttstr); } // k for // vpn_submenu if ( (q16_errors & CMST::Err_Invalid_VPN_Iface) != 0x00 || vpn_manager == NULL) { vpn_submenu->setDisabled(true); return; } vpn_submenu->clear(); for (int l = 0; l < vpn_list.count(); ++l) { QAction* act = vpn_submenu->addAction(getNickName(vpn_list.at(l).objpath) ); act->setCheckable(true); QString state = vpn_list.at(l).objmap.value("State").toString(); if (state == "ready") act->setChecked(true); QString ttstr = QString(tr("

    %1
    ").arg(getNickName(vpn_list.at(l).objpath)) ); ttstr.append(tr("Connection : %1").arg(TranslateStrings::cmtr(state)) ); act->setToolTip(ttstr); } // for return; } // Handler for left click on tray icon void ControlBox::iconActivated(QSystemTrayIcon::ActivationReason reason) { //Only handling left click case if(reason == QSystemTrayIcon::Trigger) { //Show the window if it is currently hidden/minimized if(this->isHidden() || this->isMinimized()) { minMaxWindow(maximizeAction); } //Otherwise hide the window else { minMaxWindow(minimizeAction); } } } void ControlBox::enableRunOnStartup(bool enabled) { QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QString HOME = env.value("HOME"); QString XDG_CONFIG_HOME = env.value("XDG_CONFIG_HOME", QFileInfo(QDir(HOME), ".config").absoluteFilePath()); QFileInfo autostart_dir_info(QDir(XDG_CONFIG_HOME), "autostart"); QFileInfo autostart_file_info(QDir(autostart_dir_info.absoluteFilePath()), "cmst-autostart.desktop"); QFile user_autostart_file(autostart_file_info.absoluteFilePath()); if (enabled) { QCryptographicHash hasher(QCryptographicHash::Sha1); QFile fileToCopy("/usr/share/cmst/autostart/cmst-autostart.desktop"); if (user_autostart_file.exists()) { hasher.reset(); hasher.addData(&fileToCopy); QByteArray orig_file_hash = hasher.result(); hasher.reset(); hasher.addData(&user_autostart_file); QByteArray user_autostart_file_hash = hasher.result(); if (orig_file_hash == user_autostart_file_hash) { return; } if (!user_autostart_file.remove()) { return; } } // Copy the autostart file (create the target directory first if needed) QDir dir = autostart_file_info.dir(); if (! dir.exists() ) dir.mkdir(autostart_file_info.path() ); fileToCopy.copy(autostart_file_info.absoluteFilePath()); } // if enabled else { if (!autostart_file_info.exists()) { return; } user_autostart_file.remove(); } } // Slot to save GUI settings to disk void ControlBox::writeSettings() { settings->beginGroup("MainWindow"); settings->setValue("size", this->size() ); settings->setValue("pos", this->pos() ); settings->setValue("current_page", ui.tabWidget->currentIndex()); settings->setValue("splitter_01", ui.splitter01->saveState()); settings->endGroup(); settings->beginGroup("CheckBoxes"); settings->setValue("hide_tray_icon", ui.checkBox_hideIcon->isChecked() ); settings->setValue("devices_off", ui.checkBox_devicesoff->isChecked() ); settings->setValue("retain_settings", ui.checkBox_usestartoptions->isChecked() ); settings->setValue("retain_state", ui.checkBox_retainstate->isChecked() ); settings->setValue("services_less", ui.checkBox_hidecnxn->isChecked() ); settings->setValue("technologies_less", ui.checkBox_hidetethering->isChecked() ); settings->setValue("enable_interface_tooltips", ui.checkBox_enableinterfacetooltips->isChecked() ); settings->setValue("enable_systemtray_tooltips", ui.checkBox_enablesystemtraytooltips->isChecked() ); settings->setValue("enable_systemtray_notications", ui.checkBox_systemtraynotifications->isChecked() ); settings->setValue("enable_daemon_notifications", ui.checkBox_notifydaemon->isChecked() ); settings->setValue("reset_counters", ui.checkBox_resetcounters->isChecked() ); settings->setValue("advanced", ui.checkBox_advanced->isChecked() ); settings->setValue("retry_failed", ui.checkBox_retryfailed->isChecked() ); settings->setValue("run_on_startup", ui.checkBox_runonstartup->isChecked()); settings->endGroup(); settings->beginGroup("LineEdits"); settings->setValue("colorize_icons", ui.lineEdit_colorize->text() ); settings->endGroup(); settings->beginGroup("StartOptions"); settings->setValue("enable_counters", ui.checkBox_enablecounters->isChecked() ); settings->setValue("disable_tray_icon", ui.checkBox_disabletrayicon->isChecked() ); settings->setValue("disable_vpn", ui.checkBox_disablevpn->isChecked() ); settings->setValue("use_icon_theme", ui.checkBox_systemicontheme->isChecked() ); settings->setValue("icon_theme", ui.lineEdit_icontheme->text() ); settings->setValue("start_minimized", ui.checkBox_startminimized->isChecked() ); settings->setValue("disable_minimized", ui.checkBox_disableminimized->isChecked() ); settings->setValue("use_wait_time", ui.checkBox_waittime->isChecked() ); settings->setValue("wait_time", ui.spinBox_waittime->value() ); settings->setValue("use_counter_update_rate", ui.checkBox_counterseconds->isChecked() ); settings->setValue("counter_update_rate", ui.spinBox_counterrate->value() ); settings->setValue("use_fake_transparency", ui.checkBox_faketranparency->isChecked() ); settings->setValue("fake_transparency_color", ui.spinBox_faketransparency->value() ); settings->setValue("desktop_none", ui.radioButton_desktopnone->isChecked() ); settings->setValue("desktop_xfce", ui.radioButton_desktopxfce->isChecked() ); settings->setValue("desktop_mate", ui.radioButton_desktopmate->isChecked() ); settings->endGroup(); settings->beginGroup("ExternalPrograms"); settings->setValue("run_after_connect", ui.lineEdit_afterconnect->text() ); settings->endGroup(); return; } // // Slot to read GUI settings to disk void ControlBox::readSettings() { settings->beginGroup("CheckBoxes"); ui.checkBox_hideIcon->setChecked(settings->value("hide_tray_icon").toBool() ); ui.checkBox_devicesoff->setChecked(settings->value("devices_off").toBool() ); ui.checkBox_usestartoptions->setChecked(settings->value("retain_settings").toBool() ); ui.checkBox_retainstate->setChecked(settings->value("retain_state").toBool() ); ui.checkBox_hidecnxn->setChecked(settings->value("services_less").toBool() ); ui.checkBox_hidetethering->setChecked(settings->value("technologies_less").toBool() ); ui.checkBox_enableinterfacetooltips->setChecked(settings->value("enable_interface_tooltips").toBool() ); ui.checkBox_enablesystemtraytooltips->setChecked(settings->value("enable_systemtray_tooltips").toBool() ); ui.checkBox_systemtraynotifications->setChecked(settings->value("enable_systemtray_notications").toBool() ); ui.checkBox_notifydaemon->setChecked(settings->value("enable_daemon_notifications").toBool() ); ui.checkBox_resetcounters->setChecked(settings->value("reset_counters").toBool() ); ui.checkBox_advanced->setChecked(settings->value("advanced").toBool() ); ui.checkBox_retryfailed->setChecked(settings->value("retry_failed").toBool() ); ui.checkBox_runonstartup->setChecked(settings->value("run_on_startup").toBool()); settings->endGroup(); settings->beginGroup("LineEdits"); ui.lineEdit_colorize->setText(settings->value("colorize_icons").toString() ); settings->endGroup(); settings->beginGroup("StartOptions"); // Changed disable counters to enable counters. Figure out what the user wanted // and adjust accordingly if (settings->contains("disable_counters") ) { ui.checkBox_enablecounters->setChecked(! settings->value("disable_counters").toBool() ); settings->remove("disable_counters"); } else { ui.checkBox_enablecounters->setChecked(settings->value("enable_counters").toBool() ); } ui.checkBox_disabletrayicon->setChecked(settings->value("disable_tray_icon").toBool() ); ui.checkBox_disablevpn->setChecked(settings->value("disable_vpn").toBool() ); ui.checkBox_systemicontheme->setChecked(settings->value("use_icon_theme").toBool() ); ui.lineEdit_icontheme->setText(settings->value("icon_theme").toString() ); ui.checkBox_startminimized->setChecked(settings->value("start_minimized").toBool() ); ui.checkBox_disableminimized->setChecked(settings->value("disable_minimized").toBool() ); ui.checkBox_waittime->setChecked(settings->value("use_wait_time").toBool() ); ui.spinBox_waittime->setValue(settings->value("wait_time").toInt() ); ui.checkBox_counterseconds->setChecked(settings->value("use_counter_update_rate").toBool() ); ui.spinBox_counterrate->setValue(settings->value("counter_update_rate").toInt() ); ui.checkBox_faketranparency->setChecked(settings->value("use_fake_transparency").toBool() ); ui.spinBox_faketransparency->setValue(settings->value("fake_transparency_color").toInt() ); ui.radioButton_desktopnone->setChecked(settings->value("desktop_none").toBool() ); ui.radioButton_desktopxfce->setChecked(settings->value("desktop_xfce").toBool() ); ui.radioButton_desktopmate->setChecked(settings->value("desktop_mate").toBool() ); settings->endGroup(); settings->beginGroup("ExternalPrograms"); ui.lineEdit_afterconnect->setText(settings->value("run_after_connect").toString() ); settings->endGroup(); return; } // // Slot to create the systemtray icon. Really part of the constructor // and called by a single shot QTimer. void ControlBox::createSystemTrayIcon() { // Search for a tray icon, don't read XDG_CURRENT_DESKTOP for the tray type bool b_dtaware = qApp->desktopSettingsAware(); qApp->setDesktopSettingsAware(false); // We still need to make sure there is a tray available if (QSystemTrayIcon::isSystemTrayAvailable() ) { // Create the outline of the context menu. Submenu contents are defined in the // assembletrayIcon() function. trayiconmenu->clear(); trayiconmenu->setTearOffEnabled(true); trayiconmenu->setToolTipsVisible(true); tech_submenu->setToolTipsVisible(true); info_submenu->setToolTipsVisible(true); wifi_submenu->setToolTipsVisible(true); vpn_submenu->setToolTipsVisible(true); trayiconmenu->addMenu(tech_submenu); trayiconmenu->addMenu(info_submenu); trayiconmenu->addMenu(wifi_submenu); trayiconmenu->addMenu(vpn_submenu); trayiconmenu->addSeparator(); trayiconmenu->addAction(ui.actionRescan); trayiconmenu->addAction(ui.actionOffline_Mode); trayiconmenu->addSeparator(); trayiconmenu->addAction(maximizeAction); trayiconmenu->addAction(minimizeAction); trayiconmenu->addSeparator(); trayiconmenu->addAction(tr("Cancel"), this, SLOT(closeSystemTrayTearOffMenu()) ); trayiconmenu->addAction(exitAction); trayicon->setContextMenu(trayiconmenu); connect(trayicon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason))); // We need this if someone is running the program from the tray popup menu. // The main UI is fine without it, but if you call up the agent dialog and then // close that seems to be treated as the last window. qApp->setQuitOnLastWindowClosed(false); // Assemble the tray icon (set the icon to display) assembleTrayIcon(); // QT5.3 and XFCE don't play nicely. Hammer the XFCE tray up to // maxtries to get a valid icon geometry. // QT5.4 update, may be fixed but leave option in for now if (b_usexfce || b_usemate) { const int maxtries = 125; int i; for (i = 0; i < maxtries; ++i) { trayicon->setVisible(true); //qDebug() << "icon geometry: " << trayicon->geometry(); if ((trayicon->geometry().left() > 0 || trayicon->geometry().top() > 0) && trayicon->geometry().width() > 1) break; trayicon->setVisible(false); qApp->processEvents(); } // hammer loop if (i == maxtries - 1) { qDebug() << QString("Failed to get a valid icon from the systemtray in %1 tries").arg(maxtries); ui.pushButton_minimize->setDisabled(true); trayicon = 0; // reinitialize the pointer } // if we hit the end of the loop } // if use xfce // Sync the visibility to the checkbox ui.checkBox_hideIcon->setEnabled(true); trayicon->setVisible(true); } // if there is a systemtray available // else no systemtray available else { ui.checkBox_hideIcon->setDisabled(true); trayicon = NULL; QMessageBox::warning(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Warning"), tr("
    Unable to find a systemtray on this machine." "

    The program may still be used to manage your connections, but the tray icon will be disabled." "


    If you are seeing this message at system start up and you know a system tray exists once the " "system is up, try starting with the -w switch and set a delay as necessary. The exact wait time will vary " "from system to system." ) ); // Even if we want to be minimized we can't there is no place to minimize to. this->showNormal(); } // else // Restore the desktopAware qApp->setDesktopSettingsAware(b_dtaware); // sync offlinemode checkbox and action b1ased on the saved value from settings if (settings->value("CheckBoxes/devices_off").toBool() ) { ui.actionOffline_Mode->trigger(); } // Lastly update the display widgets (since this is actually the last // line of the constructor.) this->updateDisplayWidgets(); return; } // // Function to show notifications (if desired by the user). Called from // the functions we connect dbus signals to, for instance dbsPropertyChanged(), // The notifyclient class is used to store data for display from both // the systemtrayicon and the notification server. void ControlBox::sendNotifications() { // if we want system tray notifications if (ui.checkBox_systemtraynotifications->isChecked() && QSystemTrayIcon::isSystemTrayAvailable() ) { QSystemTrayIcon::MessageIcon sticon = QSystemTrayIcon::NoIcon; if (notifyclient->getUrgency() == Nc::UrgencyCritical) sticon = QSystemTrayIcon::Warning; else sticon = QSystemTrayIcon::Information; if (notifyclient->getBody().isEmpty() ) trayicon->showMessage(TranslateStrings::cmtr("cmst"), notifyclient->getSummary(), sticon); else trayicon->showMessage(TranslateStrings::cmtr("cmst"), QString(notifyclient->getSummary() + "\n" + notifyclient->getBody()), sticon); } // if we want notify daemon notifications if (ui.checkBox_notifydaemon->isChecked() && notifyclient->isValid() ) { notifyclient->sendNotification(); } return; } // // Function to query connman.manager.GetProperties // Return a bool, true on success, false otherwise bool ControlBox::getProperties() { // call connman and GetProperties QDBusMessage reply = con_manager->call("GetProperties"); shared::processReply(reply); // call the function to get the map values properties_map.clear(); return getMap(properties_map, reply); } // // Function to query connman.manager.GetTechnologies // Return a bool, true on success, false otherwise bool ControlBox::getTechnologies() { // call connman and GetTechnologies QDBusMessage reply = con_manager->call("GetTechnologies"); shared::processReply(reply); // call the function to get the map values technologies_list.clear(); return getArray(technologies_list, reply); } // // Function to query connman.manager.GetServices // Return a bool, true on success, false otherwise bool ControlBox::getServices() { // call connman and GetServices QDBusMessage reply = con_manager->call("GetServices"); shared::processReply(reply); // call the function to get the map values services_list.clear(); return getArray(services_list, reply); } // // Function to extract arrayElements from a DBus reply message (that contains an array). // This data type is returned by GetServices and GetTechnologies. // // Return value a bool, true on success, false otherwise // A QList of arrayElements is sent by reference (called r_list here) // and is modified by this function. r_msg is a constant reference // to the DBus reply message. bool ControlBox::getArray(QList& r_list, const QDBusMessage& r_msg ) { // make sure r_msg is a QDBusArgument if ( ! r_msg.arguments().at(0).canConvert() ) return false; // make sure the QDBusArgument holds an array const QDBusArgument &qdb_arg = r_msg.arguments().at(0).value(); if (qdb_arg.currentType() != QDBusArgument::ArrayType ) return false; // iterate over the QDBusArgument pulling array elements out and inserting into // an arrayElement structure. qdb_arg.beginArray(); r_list.clear(); while ( ! qdb_arg.atEnd() ) { // make sure the argument is a structure type if (qdb_arg.currentType() != QDBusArgument::StructureType ) return false; arrayElement ael; qdb_arg.beginStructure(); qdb_arg >> ael.objpath >> ael.objmap; qdb_arg.endStructure(); r_list.append (ael); } // while qdb_arg.endArray(); return true; } // Function to extract a QMap from a DBus reply message (that contains a map). // This data type is returned by GetProperties // // Return value a bool, true on success, false otherwise. // The map is sent by reference (called r_map here) and is modified by this function. // r_msg is a constant reference to the DBus reply message. bool ControlBox::getMap(QMap& r_map, const QDBusMessage& r_msg ) { // make sure r_msg is a QDBusArgument if ( ! r_msg.arguments().at(0).canConvert() ) return false; // make sure the QDBusArgument holds a map const QDBusArgument &qdb_arg = r_msg.arguments().at(0).value(); if (qdb_arg.currentType() != QDBusArgument::MapType ) return false; // iterate over the QDBusArgument pulling map keys and values out qdb_arg.beginMap(); r_map.clear(); while ( ! qdb_arg.atEnd() ) { QString key; QVariant value; qdb_arg.beginMapEntry(); qdb_arg >> key >> value; qdb_arg.endMapEntry(); r_map.insert(key, value); } qdb_arg.endMap(); return true; } // // Function to log errors to the system log. Functionallity provided // by syslog.h and friends. void ControlBox::logErrors(const quint16& err) { // store the error in a data element q16_errors |= err; // Log the error in the system log // LOG_PID Include PID with each message // LOG_CONS Write to console if there is a problem writing to system log // LOG_USER User Level Message // LOG_ERR Error condition // LOG_WARNING Warning contition // Defined in resource.h // LOG_NAME Name to display in the log openlog(qPrintable(LOG_NAME), LOG_PID|LOG_CONS, LOG_USER); switch (err) { case CMST::Err_No_DBus: syslog(LOG_ERR, "%s", tr("Could not find a connection to the system bus").toUtf8().constData() ); QMessageBox::critical(this, tr("%1 - Critical Error").arg(TranslateStrings::cmtr("cmst")), tr("Unable to find a connection to the system bus.

    %1 will not be able to communicate with connman.").arg(TranslateStrings::cmtr("cmst")) ); break; case CMST::Err_Invalid_Con_Iface: syslog(LOG_ERR, "%s",tr("Could not create an interface to connman on the system bus").toUtf8().constData()); QMessageBox::critical(this, tr("%1 - Critical Error").arg(TranslateStrings::cmtr("cmst")), tr("Unable to create an interface to connman on the system bus.

    %1 will not be able to communicate with connman.").arg(TranslateStrings::cmtr("cmst")) ); break; case CMST::Err_Properties: syslog(LOG_ERR, "%s", tr("Error reading or parsing connman.Manager.GetProperties").toUtf8().constData() ); QMessageBox::warning(this, tr("%1 - Warning").arg(TranslateStrings::cmtr("cmst")), tr("There was an error reading or parsing the reply from method connman.Manager.GetProperties.

    It is unlikely any portion of %1 will be functional.").arg(TranslateStrings::cmtr("cmst")) ); break; case CMST::Err_Technologies: syslog(LOG_ERR, "%s",tr("Error reading or parsing connman.Manager.GetTechnologies").toUtf8().constData() ); QMessageBox::warning(this, tr("%1 - Warning").arg(TranslateStrings::cmtr("cmst")), tr("There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.

    Some portion of %1 may still be functional.").arg(TranslateStrings::cmtr("cmst")) ); break; case CMST::Err_Services: syslog(LOG_ERR, "%s", tr("Error reading or parsing connman.Manager.GetServices").toUtf8().constData() ); QMessageBox::warning(this, tr("%1 - Warning").arg(TranslateStrings::cmtr("cmst")), tr("There was an error reading or parsing the reply from method connman.Manager.GetServices.

    Some portion of %1 may still be functional.").arg(TranslateStrings::cmtr("cmst")) ); break; case CMST::Err_Invalid_VPN_Iface: // NOTE: this error is logged to the system log only, no message is presented to the user (issue #155). Done // this way because it will happen when someone does not compile ConnMan with VPN support, or if they don't // have the connman-vpn daemon running. We're figuring this would be more than likely intentional and not an // error the user would need to be concerned about. If he is the error will show in the system log. syslog(LOG_ERR, "%s",tr("Could not create an interface to connman-vpn on the system bus").toUtf8().constData()); break; default: break; } closelog(); return; } // // Function to read text contained in a resource file. Input is a const char* to the resource, // Return value is a QString of the text QString ControlBox::readResourceText(const char* textfile) { QString rtnstring = QString(); QFile file(textfile); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QTextStream in(&file); while (!in.atEnd()) { rtnstring.append(in.readLine() ); } // while } // if return rtnstring; } // // Function to clear the counters if selected in the ui. Called from the constructor // and from dbsServicesChanged void ControlBox::clearCounters() { if (ui.checkBox_resetcounters->isChecked() && ! onlineobjectpath.isEmpty() ) { QDBusInterface* iface_serv = new QDBusInterface(DBUS_CON_SERVICE, onlineobjectpath, "net.connman.Service", QDBusConnection::systemBus(), this); shared::processReply(iface_serv->call(QDBus::AutoDetect, "ResetCounters") ); iface_serv->deleteLater(); } return; } // // Function to return a nick name for a service. Typically return the // Name property. For wired ethernet Name comes back as Wired, and for // hidden wifi networks this is blank. In those cases create a // nickname and return it. QString ControlBox::getNickName(const QDBusObjectPath& objpath) { for (int i = 0; i < services_list.size(); ++i) { if (services_list.at(i).objpath == objpath) { QMap submap; if (services_list.at(i).objmap.value("Type").toString() == "ethernet") { shared::extractMapData(submap, services_list.at(i).objmap.value("Ethernet") ); if (submap.value("Interface").toString().isEmpty() ) return services_list.at(i).objmap.value("Name").toString(); else return QString(TranslateStrings::cmtr(services_list.at(i).objmap.value("Name").toString()) + " [%1]").arg(submap.value("Interface").toString() ); } // if type ethernet else if ( services_list.at(i).objmap.value("Type").toString() == "wifi" && services_list.at(i).objmap.value("Name").toString().isEmpty() ) return tr("[Hidden Wifi]"); else return services_list.at(i).objmap.value("Name").toString(); } // if objpath matches } // for return QString(); } // Slot to connect to the notification client. Called from QTimers to give time for the notification server // to start up if this program is started automatically at boot. We make four attempts at finding the // notification server. First is in the constructor of NotifyClient, following we call the connectToServer() // function. void ControlBox::connectNotifyClient() { //initialize the counter static short count = 0; ++count; if (count > 1 ) { // if we have a valid notifyclient return now if (notifyclient->isValid() ) return; // else try to connect again else notifyclient->connectToServer(); } // if count > 1 // setup the notify server label if we were successful in finding and connecting to a server if (notifyclient->isValid() ) { QString name = notifyclient->getServerName().toLower(); name = name.replace(0, 1, name.left(1).toUpper() ); QString vendor = notifyclient->getServerVendor(); vendor = vendor.replace(0, 1, vendor.left(1).toUpper() ); QString lab = tr("%1 version %2 by %3 has been detected on this system.

    This server supports desktop Notification Specification version %4") .arg(name) .arg(notifyclient->getServerVersion() ) .arg(vendor) .arg(notifyclient->getServerSpecVersion() ); ui.label_serverstatus->clear(); ui.label_serverstatus->setDisabled(true); ui.groupBox_notifications->setToolTip(lab); } // not successful, try again or abandon if counter is at limit else { if (count < 4) { ui.label_serverstatus->setText(tr("Attempt %1 of 4 looking for notification server.").arg(count)); } // try again else { ui.label_serverstatus->setText(tr("Unable to find or connect to a Notification server.")); ui.checkBox_notifydaemon->setChecked(false); ui.checkBox_notifydaemon->setEnabled(false); } // else last time ui.groupBox_notifications->setToolTip(""); ui.groupBox_notifications->setWhatsThis(""); } // else we don't have a valid client. return; } // The following two functions are somewhat similar. ConfigureSerivce opens a dialog to tweak // defaults set by Connman. All settings are read and written by Connman into files that Connman // creates. // // Provisioning creates a provision file that takes precedence over anything Connman creates. It // is required for certain types of networks, for instance Eduroam. The provisioning file must be // created manually before trying to connect via Connman. Disk reads and writes are handled by // a program (this one) and not by Connman. // // Slot to open a dialog to configure the selected service void ControlBox::configureService() { // Make sure the index is real if (ui.comboBox_service->currentIndex() < 0 ) return; // Create a new properties editor PropertiesEditor* peditor = new PropertiesEditor(this, services_list.at(ui.comboBox_service->currentIndex()) ); // Set the whatsthis button icon peditor->setWhatsThisIcon(iconman->getIcon("whats_this")); // call then clean up peditor->exec(); peditor->deleteLater(); return; } // // Slot to open the provisioning editor to create a configuration (provisioning) file // Called whenever ui.pushButton_provisioning_editor or ui.pushButton_vpn_editor // is pressed. void ControlBox::provisionService() { if (qobject_cast(sender()) == ui.pushButton_provisioning_editor) { ProvisioningEditor* reditor = new ProvisioningEditor(this); // Set the whatsthis button icon reditor->setWhatsThisIcon(iconman->getIcon("whats_this") ); // call then clean up reditor->exec(); reditor->deleteLater(); } else if (qobject_cast(sender()) == ui.pushButton_vpn_editor) { VPN_Editor* veditor = new VPN_Editor(this); // Set the whatsthis button icon veditor->setWhatsThisIcon(iconman->getIcon("whats_this") ); // call then clean up veditor->exec(); veditor->deleteLater(); } return; } // // Slot called when a connection to the local socket was detected. Means another instance of CMST was started // while this instance was running. void ControlBox::socketConnectionDetected() { this->showNormal(); return; } // // Slot to tidy up the place at close. Called when the QApplication::aboutToQuit() signal is emitted void ControlBox::cleanUp() { // close and delete the socket server socketserver->close(); socketserver->deleteLater(); // write settings this->writeSettings(); // unregister objects if (con_manager->isValid() ) { // agent shared::processReply(con_manager->call(QDBus::AutoDetect, "UnregisterAgent", QVariant::fromValue(QDBusObjectPath(AGENT_OBJECT))) ); // counter - only have a signal-slot connection if the counter was able to be registered if (counter->cnxns() > 0) { shared::processReply(con_manager->call(QDBus::AutoDetect, "UnregisterCounter", QVariant::fromValue(QDBusObjectPath(CNTR_OBJECT))) ); } // if counters are connected to anything } // if con_manager isValid if (vpn_manager != NULL) { if (vpn_manager->isValid() ) { shared::processReply(vpn_manager->call(QDBus::AutoDetect, "UnregisterAgent", QVariant::fromValue(QDBusObjectPath(VPN_AGENT_OBJECT))) ); } // ivpn_manager isValid } // not null return; } // // Slot to open the color selection dialog and request input. void ControlBox::callColorDialog() { QColor color = QColorDialog::getColor(QColor(ui.lineEdit_colorize->text()), this, tr("Colorize Icons")); if (color.isValid() ) ui.lineEdit_colorize->setText(color.name() ); return; } // // Slot to process things when the user changes the icon color void ControlBox::iconColorChanged(const QString& col) { iconman->setIconColor(QColor(col) ); this->updateDisplayWidgets(); ui.toolButton_whatsthis->setIcon(iconman->getIcon("whats_this")); agent->setWhatsThisIcon(iconman->getIcon("whats_this")); vpnagent->setWhatsThisIcon(iconman->getIcon("whats_this")); return; } // // Slot to set the enabled/disabled state of the rescan wifi controls void ControlBox::setStateRescan(bool state) { ui.pushButton_rescanwifi01->setEnabled(state); ui.pushButton_rescanwifi02->setEnabled(state); ui.actionRescan->setEnabled(state); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/control_box/controlbox.h000077500000000000000000000157501322401607200242510ustar00rootroot00000000000000/**************************** controlbox.h ***************************** Code to manage the primary user interface to include the QDialog the user interfaces with and the system tray icon. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef CONTROLBOX_H # define CONTROLBOX_H # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include # include "ui_controlbox.h" # include "./code/agent/agent.h" # include "./code/counter/counter.h" # include "./code/notify/notify.h" # include "./code/iconman/iconman.h" # include "./code/vpn_agent/vpnagent.h" // Two of the connman.Manager query functions will return an array of structures. // This struct provides a receiving element we can use to collect the return data. struct arrayElement { QDBusObjectPath objpath; QMap objmap; }; // // custom QFrame containing a QToolButton that will emit a button id class idButton : public QFrame { Q_OBJECT public: idButton (QWidget*, const QDBusObjectPath&); inline void setText (const QString& text) {button->setText(text);} inline void setIcon (const QPixmap& pixmap) {button->setIcon(pixmap);} inline void setChecked (bool checked) {button->setChecked(checked);} signals: void clickedID(QString, bool); private: QToolButton* button; QDBusObjectPath obj_id; private slots: void buttonClicked(bool); }; // // The main program class based on a QDialog class ControlBox : public QDialog { Q_OBJECT public: ControlBox(const QCommandLineParser&, QWidget* parent = 0); public slots: void aboutCMST(); void aboutIconSet(); void aboutOtherArt(); void showLicense(); void showChangeLog(); protected: void closeEvent(QCloseEvent*); void keyPressEvent(QKeyEvent*); bool eventFilter(QObject*, QEvent*); private: // members Ui::ControlBox ui; quint16 q16_errors; QMap properties_map; QList services_list; QList technologies_list; QList wifi_list; QList peer_list; QList vpn_list; ConnmanAgent* agent; ConnmanVPNAgent* vpnagent; ConnmanCounter* counter; NotifyClient* notifyclient; short wifi_interval; quint32 counter_accuracy; quint32 counter_period; QDBusInterface* con_manager; QDBusInterface* vpn_manager; QSystemTrayIcon* trayicon; QMenu* trayiconmenu; QMenu* tech_submenu; QMenu* info_submenu; QMenu* wifi_submenu; QMenu* vpn_submenu; QMenu* mvsrv_menu; QActionGroup* minMaxGroup; QActionGroup* moveGroup; QAction* minimizeAction; QAction* maximizeAction; QAction* exitAction; bool b_usexfce; bool b_usemate; QSettings* settings; QString onlineobjectpath; QLocalServer* socketserver; QColor trayiconbackground; IconManager* iconman; // functions int managerRescan(const int& srv = 0); void assembleTabStatus(); void assembleTabDetails(); void assembleTabWireless(); void assembleTabVPN(); void assembleTabCounters(); void assembleTrayIcon(); void sendNotifications(); bool getProperties(); bool getTechnologies(); bool getServices(); bool getArray(QList&, const QDBusMessage&); bool getMap(QMap&, const QDBusMessage&); void logErrors(const quint16&); QString readResourceText(const char*); void clearCounters(); QString getNickName(const QDBusObjectPath&); private slots: void updateDisplayWidgets(); void moveService(QAction*); void moveButtonPressed(QAction*); void enableMoveButtons(int,int); void counterUpdated(const QDBusObjectPath&, const QString&, const QString&); void connectPressed(); void disconnectPressed(); void removePressed(); void dbsPropertyChanged(QString,QDBusVariant); void dbsServicesChanged(QList, QList, QDBusMessage); void dbsPeersChanged(QList, QList, QDBusMessage); void dbsServicePropertyChanged(QString, QDBusVariant, QDBusMessage); void dbsTechnologyPropertyChanged(QString, QDBusVariant, QDBusMessage); void dbsTechnologyAdded(QDBusObjectPath, QVariantMap); void dbsTechnologyRemoved(QDBusObjectPath); void scanWiFi(); void wifiIDPass(const QString& obj_path = QString() ); void toggleOfflineMode(bool); void toggleTrayIcon(bool); void togglePowered(QString, bool); void toggleTethered(QString, bool); void minMaxWindow(QAction* = 0); void techSubmenuTriggered(QAction* = 0); void infoSubmenuTriggered(QAction* = 0); void wifiSubmenuTriggered(QAction* = 0); void vpnSubmenuTriggered(QAction* = 0); void getServiceDetails(int); void showWhatsThis(); inline void trayNotifications(bool checked) {if (checked) ui.checkBox_notifydaemon->setChecked(false);} inline void daemonNotifications(bool checked) {if (checked) ui.checkBox_systemtraynotifications->setChecked(false);} inline void closeSystemTrayTearOffMenu() {trayiconmenu->hideTearOffMenu();} void iconActivated(QSystemTrayIcon::ActivationReason reason); void enableRunOnStartup(bool enabled); void writeSettings(); void readSettings(); void createSystemTrayIcon(); void connectNotifyClient(); void configureService(); void provisionService(); void socketConnectionDetected(); void cleanUp(); void callColorDialog(); void iconColorChanged(const QString&); void setStateRescan(bool); }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/control_box/ui/000077500000000000000000000000001322401607200223115ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/control_box/ui/controlbox.ui000066400000000000000000003223641322401607200250530ustar00rootroot00000000000000 ControlBox 0 0 689 697 530 475 Dialog true 0 0 <html><head/><body><p><br/></p></body></html> 0 true Qt::LeftToRight &Status true 0 0 647 466 Qt::Horizontal 40 20 <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable Qt::Horizontal 506 20 <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Qt::Horizontal 466 20 0 0 16 16 true <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> ... true Qt::Vertical 5 0 0 <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> Technologies 0 0 QAbstractItemView::NoEditTriggers false false QAbstractItemView::NoSelection false false false false 75 true false false Name Type Powered Connected Tethering ID:Password <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an Qt::Horizontal 293 17 <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less 0 0 <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services 0 0 QAbstractItemView::NoEditTriggers false false QAbstractItemView::SingleSelection QAbstractItemView::SelectRows false false true 100 75 true false false Name Type State Connection false <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Move Before false <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Move After Qt::Horizontal 40 20 <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less false <html><head/><body><p>This page will show the details of the service selected in the box at the top. If the selected service is not in the READY or ONLINE state then most of the details will be blank. </p><p>You may override service details by using the <span style=" font-weight:600;">Configuration</span> button at the bottom right. </p></body></html> &Details 75 true Ser&vice comboBox_service <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p><br/></p></body></html> true 0 0 647 385 0 0 Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop Qt::Vertical 20 40 Qt::Horizontal 40 20 <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration <html><head/><body><p><br/></p></body></html> &Wireless <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> QAbstractItemView::NoEditTriggers false false QAbstractItemView::SingleSelection QAbstractItemView::SelectRows false false 5 80 true false false Name Favorite Connected Security Signal Strength Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> Remove <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an 0 0 <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State Qt::Horizontal 40 20 <html><head/><body><p><br/></p></body></html> &VPN VPN Services true <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect true <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect Qt::Horizontal 40 20 <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> QAbstractItemView::NoEditTriggers false false QAbstractItemView::SingleSelection QAbstractItemView::SelectRows false false 5 false 80 true false false Name Type State Host Connection <html><head/><body><p><br/></p></body></html> &Counters true 0 0 647 466 <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: 0 1 <html><head/><body><p><br/></p></body></html> Home true 0 0 603 156 0 0 <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Counter not available. Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true 0 1 <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming true 0 0 603 156 0 0 Counter not available. Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop true <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: true &Preferences true 0 0 633 578 Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection Qt::Vertical 20 40 <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups true true <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications true <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options false <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> QAbstractSpinBox::PlusMinus 5 86400 10 10 <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> Disable Tray Icon false <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB false <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> QAbstractSpinBox::PlusMinus 1 60 false <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> QAbstractSpinBox::PlusMinus 256 32768 64 1024 <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> Start Minimized <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> Wait Time <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'monospace';">Command Line Option: </span><span style=" font-family:'monospace'; font-weight:600;">-c</span><span style=" font-family:'monospace';"> or </span><span style=" font-family:'monospace'; font-weight:600;">--enable-counters</span></pre><p>Enable Connman RX and TX counters. Counters are experimental in Connman and enabling them will write a large amount of data to the system logs.</p><p>Counters are turned off by default, and is a change from the way it was originally. Up to and including version 2017.09.19 counters were enabled by default. All versions subsequent to that counters are disabled by default.</p></body></html> Enable Counters <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> Fake Transparency false <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> QAbstractSpinBox::PlusMinus true 16777215 16 false <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> true <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> true Qt::Vertical 20 40 <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific <html><head/><body><p>Default is no desktop specific code.</p></body></html> None true <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-n</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-vpn</span></pre><p>Disable VPN. This will hide the VPN tab and will also skip trying to make a connection to connman-vpn. The later is useful if your Connman was built with the --disable-vpn feature.</p></body></html> Disable VPN <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-M</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-minimized</span></pre><p>Disable the minimize button. Use when you want to have the window manager have sole control of minimizing the interface.</p></body></html> Disable Minimized true Notifications 1 0 Server Status true true <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface true <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls false true <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options true <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) 1 0 <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> true <html><head/><body><p>Open the color selection dialog. </p></body></html> ... Qt::UpArrow <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> Aw&Oken A&rtwork <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g Qt::Vertical 20 250 true 0 0 537 466 <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> true Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse Qt::Vertical 20 40 <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit Qt::Horizontal 40 20 <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize Move Before Move After Rescan true Offline Mode IDPass Set ID and Password for tethered wifi tabWidget comboBox_service pushButton_connect pushButton_disconnect pushButton_remove tableWidget_wifi scrollArea_home_counter scrollArea_roaming_counter pushButton_aboutCMST pushButton_aboutIconSet pushButton_aboutQT pushButton_license pushButton_change_log scrollArea toolButton_whatsthis pushButton_exit pushButton_minimize checkBox_advanced clicked(bool) groupBox_process setVisible(bool) 80 193 508 512 checkBox_advanced clicked(bool) pushButton_vpn_editor setVisible(bool) 134 198 246 601 checkBox_advanced clicked(bool) pushButton_provisioning_editor setVisible(bool) 79 202 149 601 pushButton_rescanwifi01 clicked() actionRescan trigger() 82 291 -1 -1 pushButton_movebefore clicked() actionMove_Before trigger() 85 442 -1 -1 pushButton_moveafter clicked() actionMove_After trigger() 173 442 -1 -1 checkBox_waittime toggled(bool) spinBox_waittime setEnabled(bool) 486 270 632 272 checkBox_usestartoptions toggled(bool) groupBox_startoptions setEnabled(bool) 182 92 492 314 checkBox_systemicontheme toggled(bool) lineEdit_icontheme setEnabled(bool) 475 181 632 182 checkBox_faketranparency toggled(bool) spinBox_faketransparency setEnabled(bool) 501 360 632 362 checkBox_counterkb clicked(bool) spinBox_counterkb setEnabled(bool) 501 300 632 302 checkBox_counterseconds clicked(bool) spinBox_counterrate setEnabled(bool) 501 330 632 332 actionOffline_Mode triggered(bool) checkBox_devicesoff setChecked(bool) -1 -1 600 64 pushButton_rescanwifi02 clicked() actionRescan trigger() 329 83 -1 -1 actionOffline_Mode triggered(bool) toolButton_offlinemode setChecked(bool) -1 -1 55 151 checkBox_devicesoff clicked(bool) actionOffline_Mode trigger() 600 66 -1 -1 toolButton_offlinemode clicked(bool) actionOffline_Mode trigger() 55 151 -1 -1 cmst-cmst-2018.01.06/apps/cmstapp/code/counter/000077500000000000000000000000001322401607200210235ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/counter/counter.cpp000066400000000000000000000170441322401607200232140ustar00rootroot00000000000000/**************************** counter.cpp ******************************** Code for the connection counter registered on DBus. When registered the connman daemon will communicate to this object with signals. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include "./counter.h" # include "../resource.h" // header files generated by qmake from the xml file created by qdbuscpp2xml # include "counter_adaptor.h" # include "counter_interface.h" // constructor ConnmanCounter::ConnmanCounter(QObject* parent) : QObject(parent) { // data members home_data = QVariantMap(); roam_data = QVariantMap(); // Create Adaptor and register this Counter on the system bus. new CounterAdaptor(this); // Try to register an object on the system bus QDBusConnection::systemBus().registerObject(CNTR_OBJECT, this); } /////////////////////////////////////// PUBLIC FUNCTIONS //////////////////////////////// // // Function to return a QString for display in a label // map is the member map (home_data or roam_data) we wish to get QString ConnmanCounter::getLabel(const QVariantMap& map) { // Set TX bytes to Bytes, KB, MB, or GB depending on size const int b_cutoff = 1024 * 1.875 ; // size in Bytes to change units from Bytes to KB const int k_cutoff = 1024 * 1024 * 1.875 ; // size in Bytes to change units from KB to MB const int m_cutoff = 1024 * 1024 * 1024 * 1.875 ; // size in Bytes to change units from MB to GB QString datafield; if (map.value("TX.Bytes").toLongLong() < b_cutoff ) datafield = tr("%L1 Bytes").arg(map.value("TX.Bytes").toLongLong()); else if (map.value("TX.Bytes").toLongLong() < k_cutoff) datafield = tr("%L1 KB").arg(static_cast(map.value("TX.Bytes").toLongLong()) / (1024), 0, 'f', 1); else if (map.value("TX.Bytes").toLongLong() < m_cutoff) datafield = tr("%L1 MB").arg(static_cast(map.value("TX.Bytes").toLongLong()) / (1024 * 1024), 0, 'f', 1); else datafield = tr("%L1 GB").arg(static_cast(map.value("TX.Bytes").toLongLong()) / (1024 * 1024 * 1024), 0, 'f', 1); // Create a label with the total number of packets [errors and dropped] sent. QString rtn = tr("Transmit:
    TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4") .arg(tr("%Ln Packet(s)", 0, map.value("TX.Packets").toLongLong()) ) .arg(datafield) .arg(tr("%Ln Packet(s)", 0, map.value("TX.Errors").toLongLong()) ) .arg(tr("%Ln Packet(s)", 0, map.value("TX.Dropped").toLongLong()) ) ; // Set RX data bytes to Bytes, KB, MB or GB if (map.value("RX.Bytes").toLongLong() < b_cutoff ) datafield = tr("%L1 Bytes").arg(map.value("RX.Bytes").toLongLong()); else if (map.value("RX.Bytes").toLongLong() < k_cutoff) datafield = tr("%L1 KB").arg(static_cast(map.value("RX.Bytes").toLongLong()) / (1024), 0, 'f', 1); else if (map.value("RX.Bytes").toLongLong() < m_cutoff) datafield = tr("%L1 MB").arg(static_cast(map.value("RX.Bytes").toLongLong()) / (1024 * 1024), 0, 'f', 1); else datafield = tr("%L1 GB").arg(static_cast(map.value("RX.Bytes").toLongLong()) / (1024 * 1024 * 1024), 0, 'f', 1); // Append to the label the total number of packets [errors and dropped] received. rtn.append(tr("

    Received:
    RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4") .arg(tr("%Ln Packet(s)", 0, map.value("RX.Packets").toLongLong()) ) .arg(datafield) .arg(tr("%Ln Packet(s)", 0, map.value("RX.Errors").toLongLong()) ) .arg(tr("%Ln Packet(s)", 0, map.value("RX.Dropped").toLongLong())) ); // Append the time title rtn.append(tr("

    Connect Time:
    ") ); // Calculate the connection time and add it to the end of the label. int num_d = 0; short num_h = 0; short num_m = 0; short num_s = 0; int etime = map.value("Time").toInt(); num_d = etime / (24 * 60 * 60); if (num_d > 0 ) { rtn.append(tr("%n Day(s)", 0, num_d) ); rtn.append(" "); } etime = etime % (24 * 60 * 60); num_h = etime / (60 * 60); if (num_h > 0 || num_d != 0) { rtn.append(tr("%n Hour(s)", 0, num_h) ); rtn.append(" "); } etime = etime % (60 * 60); num_m = etime / (60); if (num_m > 0 || num_d != 0 || num_h != 0) { rtn.append(tr("%n Minute(s)", 0, num_m) ); rtn.append(" "); } etime = etime % (60); num_s = etime; if ( num_s > 0 || num_d != 0 || num_h != 0 || num_m != 0) rtn.append(tr("%n Second(s)", 0, num_s) ); // Return the string return rtn; } /////////////////////////////////////// PUBLIC Q_SLOTS//////////////////////////////// // // Called when the service daemon unregisters the counter. QT deals with cleanup // tasks so don't need much here void ConnmanCounter::Release() { //qDebug() << "Counter Released"; return; } // // Called when there is a change in counter values void ConnmanCounter::Usage(QDBusObjectPath qdb_objpath, QVariantMap home, QVariantMap roaming) { // First time through connman will send home and roaming fully loaded. After that only // items that change are sent. We need to keep the data as a class member QMapIterator i(home); while (i.hasNext()) { i.next(); home_data[i.key()] = i.value(); } QMapIterator j(roaming); while (j.hasNext()) { j.next(); roam_data[j.key()] = j.value(); } // Emit signal with object and labels to display emit usageUpdated(qdb_objpath, getLabel(home_data), getLabel(roam_data) ); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/counter/counter.h000066400000000000000000000043041322401607200226540ustar00rootroot00000000000000/**************************** counter.h ********************************** Code for the connection counter registered on DBus. When registered the connman daemon will communicate to this object with signals. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef CONNMANCOUNTER # define CONNMANCOUNTER # include # include # include # include # define CNTR_SERVICE "org.cmst" # define CNTR_INTERFACE "net.connman.Counter" # define CNTR_OBJECT "/org/cmst/Counter" class ConnmanCounter : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", CNTR_INTERFACE) public: ConnmanCounter(QObject*); QString getLabel(const QVariantMap&); inline int cnxns() {return receivers(SIGNAL(usageUpdated(const QDBusObjectPath&, const QString&, const QString&)));} signals: void usageUpdated(const QDBusObjectPath&, const QString&, const QString&); public Q_SLOTS: void Release(); void Usage(QDBusObjectPath, QVariantMap, QVariantMap); private: QVariantMap home_data; QVariantMap roam_data; }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/counter/cpp2xml.sh000077500000000000000000000003031322401607200227430ustar00rootroot00000000000000#!/bin/bash # # script to convert the header file to cpp # # -M all public slots # -P all properties # -S all signals qdbuscpp2xml -M -P counter.h -o org.monkey_business_enterprises.counter.xml cmst-cmst-2018.01.06/apps/cmstapp/code/counter/org.monkey_business_enterprises.counter.xml000066400000000000000000000011051322401607200316460ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/cmstapp/code/iconman/000077500000000000000000000000001322401607200207705ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/iconman/iconman.cpp000066400000000000000000000436171322401607200231330ustar00rootroot00000000000000/**************************** iconman.cpp ****************************** Class to manage icons and allow the user to provide substitutions based on the the system theme. Copyright (C) 2015-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include "./iconman.h" # include # include # include # include # include # include # include # include # include # include # include # include // Constructor IconManager::IconManager(QObject* parent) : QObject(parent) { // Setup the config path and file name (where we the store icon_def file) // APP defined in resource.h QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QString home = env.value("HOME"); cfg = QString(env.value("XDG_CONFIG_HOME", QString(QDir::homePath()) + "/.config") + "/%1/%1.icon").arg(QString(APP).toLower() ); // Set the qrc data member qrc = QString(":/text/text/icon_def.txt"); // Initialize icon_map icon_map.clear(); // Make the local conf file if necessary this->makeLocalFile(); // Create the icon_ map. QFile f1(qPrintable(cfg) ); if (!f1.open(QIODevice::ReadOnly | QIODevice::Text)) { #if QT_VERSION >= 0x050400 qCritical("Error opening icon_def file: %s", qUtf8Printable(cfg) ); # else qCritical("Error opening icon_def file: %s", qPrintable(cfg) ); # endif } QTextStream in(&f1); QString line; while (!in.atEnd()) { line = in.readLine(); line = line.simplified(); if (line.startsWith("[icon]", Qt::CaseInsensitive) ) { IconElement ie; QString iconame; do { line = in.readLine(); if (line.startsWith("icon_name", Qt::CaseInsensitive) ) iconame = extractValue(line); else if (line.startsWith("resource", Qt::CaseInsensitive) ) ie.resource_path = extractValue(line); else if (line.startsWith("colorize", Qt::CaseInsensitive) ) ie.colorize = extractValue(line); else if (line.startsWith("fdo_name", Qt::CaseInsensitive) ) ie.fdo_name = extractValue(line); else if (line.startsWith("theme_names", Qt::CaseInsensitive) ) ie.theme_names = extractValue(line).split(',', QString::SkipEmptyParts) ; } while ( ! line.isEmpty() ); icon_map[iconame] = ie; } // if [icon] } // while not atEnd() f1.close(); return; } ////////////////////////////// Public Functions //////////////////////////// // // Function to return a QIcon based on the name provided QIcon IconManager::getIcon(const QString& name) { // Data members IconElement ie = icon_map.value(name); QIcon ico = QIcon(); // If the internal theme is being used (and the user has not // messed up the local config file) use that first. if (QIcon::themeName() == INTERNAL_THEME) { if (buildResourceIcon(ico, ie.resource_path, ie.colorize) ) return ico; } // if using internal theme // Next look for a user specified theme icon if (ie.theme_names.size() > 0 ) { for (int i = 0; i < ie.theme_names.size(); ++i) { if (buildThemeIcon(ico, ie.theme_names.at(i) ) ) return ico; } // for } // if theme_names.size() > 0 // Next look for a freedesktop.org named icon if (! ie.fdo_name.isEmpty() ) { if (buildThemeIcon(ico, ie.fdo_name) ) return ico; } // if freedesktop name not empty // Then look for hardcoded name in the users config dir if (buildResourceIcon(ico, ie.resource_path, ie.colorize) ) return ico; // Last stop is our fallback hard coded into the program buildResourceIcon(ico, getFallback(name), ie.colorize); return ico; } // // Function to return a QString containing the fully qualified icon name or resource path QString IconManager::getIconName(const QString& name) { // Data members IconElement ie = icon_map.value(name); // If the internal theme is being used (and the user has not // messed up the local config file) use that first. if (QIcon::themeName() == INTERNAL_THEME ) { const QString res_path = ie.resource_path.section(' ', 0, 0).simplified(); if (QFileInfo(res_path).exists() ) return res_path; } // if using internal theme // Next look for a user specified theme icon if (ie.theme_names.size() > 0 ) { for (int i = 0; i < ie.theme_names.size(); ++i) { QString theme_icon = ie.theme_names.at(i).section('|', 0, 0).simplified(); if (QIcon::hasThemeIcon(theme_icon) ) { QStringList filter_list; filter_list << "24x24" << "22x22" << "16x16"; QString rtn = findQualifiedName(theme_icon, filter_list); if (! rtn.isEmpty() ) return rtn; } // if has ThemeIcon } // for } // if namelist contains entries // Next look for a freedesktop.org named icon if (! ie.fdo_name.isEmpty() ) { QString theme_icon = ie.fdo_name.section('|', 0, 0).simplified(); if (QIcon::hasThemeIcon(theme_icon) ) { QStringList filter_list; filter_list << "24x24" << "22x22" << "16x16"; QString rtn = findQualifiedName(theme_icon, filter_list); if (! rtn.isEmpty() ) return rtn; } // if has ThemeIcon } // if freedesktop name not empty // Then look for hardcoded name in the users config dir if (! ie.resource_path.isEmpty() ) { const QString res_path = ie.fdo_name.section(' ', 0, 0).simplified(); if (QFileInfo(res_path).exists() ) return res_path; } // Last stop is our fallback hard coded into the program const QString res_path = getFallback(name).section(' ', 0, 0).simplified(); return res_path; } ////////////////////////////// Private Functions //////////////////////////// // // Function to make an icon from resource file(s). A reference to the Icon // is sent to this function and is modified by this function. If the name // argument contains a | the name to the left is used for the "on" state // and the next name is used for the "off" state. Additional text is ignored. // return true if we could find the resource files bool IconManager::buildResourceIcon(QIcon& icon, const QString& name, const QString& s_col) { // constants from name const QString name_on = name.section('|', 0, 0).simplified(); const QString name_off = name.section('|', 1, 1).simplified(); // see if we need to colorize QColor qc_col = QColor(); if (s_col.contains("yes", Qt::CaseInsensitive) || s_col == "1" ) qc_col = icon_color; else if (s_col.size() == 6) qc_col.setNamedColor(QString("#" + s_col) ); // check to see if the names exist, if they do build the icon if (QFileInfo(name_on.section(' ', 0, 0)).exists() ) { if (! name_off.isEmpty() ) { if (QFileInfo(name_off.section(' ', 0, 0)).exists() ) icon.addPixmap(processArt(name_off, qc_col), QIcon::Normal, QIcon::Off); } // if name_off not empty icon.addPixmap(processArt(name_on, qc_col), QIcon::Normal, QIcon::On); return true; } // if name_on exists return false; } // // Function to make an icon from theme file(s). A reference to the Icon // is sent to this function and is modified by this function. If the name // argument contains a | the name to the left is used for the "on" state // and the next name is used for the "off" state. Additional text is ignored. // return true if we could find the theme files bool IconManager::buildThemeIcon(QIcon& icon, const QString& name) { const QString name_on = name.section('|', 0, 0).simplified(); const QString name_off = name.section('|', 1, 1).simplified(); // check to see if the names exist, if they do build the icon if (QIcon::hasThemeIcon(name_on) ) { QList sizes; if (! name_off.isEmpty() ) { if (QIcon::hasThemeIcon(name_off) ) { sizes = QIcon::fromTheme(name_off).availableSizes(QIcon::Normal, QIcon::On); for (int i = 0; i < sizes.count(); ++i) { QPixmap pix02 = QIcon::fromTheme(name_off).pixmap(sizes.at(i), QIcon::Normal, QIcon::On); icon.addPixmap(pix02, QIcon::Normal, QIcon::Off); } //for } // if name_off else return false; } // if name_off not empty sizes = QIcon::fromTheme(name_on).availableSizes(QIcon::Normal, QIcon::On); for (int i = 0; i < sizes.count(); ++i) { QPixmap pix01 = QIcon::fromTheme(name_on).pixmap(sizes.at(i), QIcon::Normal, QIcon::On); icon.addPixmap(pix01, QIcon::Normal, QIcon::On); } // for return true; } // if name_on exists return false; } // // Function to return the resource name of an icon. Read from the resource file // and only used in case the user has totally messed up his local copy of the // cmst.icon file QString IconManager::getFallback(const QString& name) { // Variables QString rtnstr = QString(); // Open the resource file for reading QFile f0(qrc); if (!f0.open(QIODevice::ReadOnly | QIODevice::Text)) { #if QT_VERSION >= 0x050400 qCritical("Error opening resource file: %s", qUtf8Printable(qrc) ); #else qCritical("Error opening resource file: %s", qPrintable(qrc) ); #endif return rtnstr; } // Look for icon in the resource file and extract the resource value QTextStream in(&f0); QString line; while (!in.atEnd()) { line = in.readLine(); line = line.simplified(); if (line.startsWith("[icon]", Qt::CaseInsensitive) ) { QString key = ""; QString val = ""; do { line = in.readLine(); if (line.startsWith("icon_name", Qt::CaseInsensitive) ) key = extractValue(line); else if (line.startsWith("resource", Qt::CaseInsensitive) ) val = extractValue(line); } while ( key.isEmpty() || val.isEmpty() ); if (key == name) { rtnstr = val; break; } // key = name } // if [icon] } // while not atEnd() f0.close(); return rtnstr; } // // Function to make a local version of the configuration fiqle void IconManager::makeLocalFile() { // constants const int maxloop = 50; // Get information about the last installed icon def file from the settings QSettings* settings = new QSettings(ORG, APP, this); settings->beginGroup("IconManager"); QString lastmd5 = settings->value("last_installed_icon_def_file").toString(); settings->endGroup(); // Get the MD5 sum of the current QFile src(qrc); src.open(QIODevice::ReadOnly); QCryptographicHash hash(QCryptographicHash::Md5); hash.addData(&src); src.close(); QString currentmd5 = QString::fromLatin1(hash.result().toHex() ); // If the user's local conf file exists if (QFileInfo::exists(cfg) ) { if (lastmd5 == currentmd5) { // this should be the typical case settings->deleteLater(); return; } // MD5 sums don't match so make a backup of the existing local file else { // Find a backup name we can use int ctr = 0; QString bak; do { bak = QString(cfg + ".%1").arg(++ctr, 2, 10, QChar('0')); } while (QFileInfo::exists(bak) && ctr <= maxloop); // Now make the backup QFile f_cfg(cfg); if (ctr <= maxloop && f_cfg.copy(bak) ) { QMessageBox::StandardButton dia_rtn = QMessageBox::information(0, QString(APP), tr("A new icon definition file will be installed to %1 and a backup of the old definition file has been created as %2 \

    If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. \

    If the original was never customized or you just wish to delete the backup now you may select Discard to delete the backup or Save to retain it.").arg(cfg).arg(bak), QMessageBox::Save | QMessageBox::Discard, QMessageBox::Save); if (dia_rtn == QMessageBox::Discard) if (! QFile::remove(bak)) #if QT_VERSION >= 0x050400 qCritical("Failed to remove the backup file: %s", qUtf8Printable(bak) ); #else qCritical("Failed to remove the backup file: %s", qPrintable(bak) ); #endif } // if creating a backup copy worked else { #if QT_VERSION >= 0x050400 qCritical("Failed creating the icon definition backup file: %s", qUtf8Printable(bak) ); #else qCritical("Failed creating the icon definition backup file: %s", qPrintable(bak) ); #endif settings->deleteLater(); return; } // else creating a backup failed so return, don't continue // Have a backup, now create the new file QFile::remove(cfg); QFile s(qrc); if (s.copy(cfg) ) { QFile::setPermissions(cfg, QFileDevice::ReadOwner | QFileDevice::WriteOwner); settings->beginGroup("IconManager"); settings->setValue("last_installed_icon_def_file", currentmd5); settings->endGroup(); } // if creating new file worked else { #if QT_VERSION >= 0x050400 qCritical("Failed creating a new icon definition file: %s", qUtf8Printable(qrc) ); #else qCritical("Failed creating a new icon definition file: %s", qPrintable(qrc) ); #endif } // failed creating the new file (next step is return so no reason to call it here) } // qrc is different than the last installed } // if local icon_def exists // Local icon_def does not exist so create the directory (if need be) and copy the icon_def file else { QDir d; if (d.mkpath(QFileInfo(cfg).path()) ) { QFile s(qrc); if (s.copy(cfg) ) { QFile::setPermissions(cfg, QFileDevice::ReadOwner | QFileDevice::WriteOwner); settings->beginGroup("IconManager"); settings->setValue("last_installed_icon_def_file", currentmd5); settings->endGroup(); } // if creating new file worked else #if QT_VERSION >= 0x050400 qCritical("Failed creating a new icon definition file: %s", qUtf8Printable(qrc) ); #else qCritical("Failed creating a new icon definition file: %s", qPrintable(qrc) ); #endif } // if mkpath returned true else #if QT_VERSION >= 0x050400 qCritical("Failed creating directory %s for the icon definition file.", qUtf8Printable(QFileInfo(cfg).path()) ); #else qCritical("Failed creating directory %s for the icon definition file.", qPrintable(QFileInfo(cfg).path()) ); #endif } // else local icon_def did not exist settings->deleteLater(); return; } // // Function to extract the value in the data line. The value is the part // after the = sign, with all white space and comments removed. Argument // sv is the entire line containing the value. QString IconManager::extractValue(const QString& sv) { QString s = sv.section('=', 1, 1); s = s.section("#", 0, 0); return s.simplified(); } // // Function to extract the key in the data line. The key is the part // before the = sign, with all white space removed. Argument sk is the // entire line containing the key QString IconManager::extractKey(const QString& sk) { QString s = sk.section('=', 0, 0); return s.simplified(); } // Function to colorize an icon. Called from buildResourceIcon and if we // get here we've already checked that the resource exists QPixmap IconManager::processArt(const QString& res, const QColor& color) { // Extract the parts of the icon const QString base = res.section(' ', 0, 0); const QString over = res.section(' ', 1, 1); QImage src = QImage(base); QImage dest = QImage(src.width(), src.height(), QImage::Format_ARGB32); QPainter painter(&dest); // Colorize the base (if specified) if (color.isValid() ) { painter.setCompositionMode(QPainter::CompositionMode_Source); painter.fillRect(dest.rect(), color); painter.setCompositionMode(QPainter::CompositionMode_DestinationAtop); painter.drawImage(0, 0, src); } else { painter.setCompositionMode(QPainter::CompositionMode_Source); painter.drawImage(0, 0, src); } // Now add overlays - overlay names have the same name as the icon they // need to overlay. if (! over.isEmpty() ) { QFileInfo fi = QFileInfo(over); if (fi.exists() ) { QImage ovl = QImage(fi.absoluteFilePath() ); painter.setCompositionMode(QPainter::CompositionMode_SourceOver); painter.drawImage(0, 0, ovl); } } return QPixmap::fromImage(dest); } // // Function to find an icon file somewhere in the system. Return value is // the fully qualified path to the icon file if found, a null string otherwise. // // iconname - the icon name to search for // filter - a string list containing an order preference for subdirectory names to return // to search for, // // Called from the getIconName function QString IconManager::findQualifiedName(const QString& iconname, const QStringList& sl_filter) { // variables QStringList sl_results = QStringList(); // get search paths QStringList sl_dirs = QIcon::themeSearchPaths(); if (sl_dirs.size() < 1) return QString(); // iterate over the search paths for (int i = 0; i < sl_dirs.size(); ++i) { QDirIterator dit(QString(sl_dirs.at(i) + '/' + QIcon::themeName()) , QDirIterator::Subdirectories); while (dit.hasNext()) { QFileInfo fi(dit.next()); if (fi.completeBaseName() == iconname) sl_results << fi.canonicalFilePath(); } // while } // for // search the list for icons matching the filter list and return first found if (sl_results.size() < 1) return QString(); if (sl_filter.size() < 1) return sl_results.at(0); for (int i = 0; i < sl_filter.size(); ++i) { for (int j = 0; j < sl_results.size(); ++j) { if (sl_results.at(j).contains(sl_filter.at(i)) ) return sl_results.filter(sl_filter.at(i)).at(0); } // j for } // i for // if no filter matches return sl_results.at(0); } cmst-cmst-2018.01.06/apps/cmstapp/code/iconman/iconman.h000066400000000000000000000046171322401607200225750ustar00rootroot00000000000000/**************************** iconman.h ****************************** Class to manage icons and allow the user to provide substitutions based on the the system theme. Copyright (C) 2015-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef ICON_MANAGER # define ICON_MANAGER # include # include # include # include # include # include # include # include "../resource.h" struct IconElement { QString resource_path; QString colorize; QString fdo_name; QStringList theme_names; }; class IconManager : public QObject { Q_OBJECT public: // members IconManager(QObject* parent); // functions QIcon getIcon(const QString&); QString getIconName(const QString&); inline void setIconColor(const QColor& col) {icon_color = col;} private: // members QMap icon_map; QString cfg; QString qrc; QColor icon_color; // functions bool buildResourceIcon(QIcon&, const QString&, const QString&); bool buildThemeIcon(QIcon&, const QString&); QString getFallback(const QString&); void makeLocalFile(); QString extractValue(const QString&); QString extractKey(const QString&); QPixmap processArt(const QString&, const QColor&); QString findQualifiedName(const QString&, const QStringList& = QStringList() ); }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/main.cpp000077500000000000000000000203031322401607200207750ustar00rootroot00000000000000/**************************** main.cpp ********************************* C++ main routine. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include # include # include # include # include # include # include "./control_box/controlbox.h" # include "../resource.h" // Create a signal handler to catch ^C from console void signalhandler(int sig) { if(sig == SIGINT || sig == SIGTERM) { qApp->quit(); } return; } int main(int argc, char *argv[]) { QApplication::setApplicationName(LONG_NAME); QApplication::setApplicationVersion(VERSION); QApplication::setOrganizationName(ORG); QApplication::setDesktopSettingsAware(true); QApplication app(argc, argv); // make sure only one instance is running QLocalSocket* socket = new QLocalSocket(); socket->connectToServer(SOCKET_NAME); bool b_connected = socket->waitForConnected(500); socket->abort(); delete socket; if (b_connected) { qDebug() << QCoreApplication::translate("main.cpp", "Another running instance of CMST has been detected. This instance is aborting"); return 1; } // setup the command line parser QCommandLineParser parser; parser.setApplicationDescription(QApplication::translate("main.cpp", "Connman System Tray.") ); QCommandLineOption bypassState(QStringList() << "b" << "bypass-restore-state", QCoreApplication::translate("main.cpp", "Bypass restoring the window state if restoring window state is specified in the settings file.") ); parser.addOption(bypassState); QCommandLineOption bypassStartOptions(QStringList() << "B" << "bypass-start-options", QCoreApplication::translate("main.cpp", "Bypass restoring any start options in the settings file.") ); parser.addOption(bypassStartOptions); QCommandLineOption disableCounters(QStringList() << "c" << "enable-counters", QCoreApplication::translate("main.cpp", "[Experimental] Enable data counters.") ); parser.addOption(disableCounters); QCommandLineOption disableTrayIcon(QStringList() << "d" << "disable-tray-icon", QCoreApplication::translate("main.cpp", "Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification.") ); parser.addOption(disableTrayIcon); parser.addHelpOption(); QCommandLineOption useIconTheme(QStringList() << "i" << "icon-theme", QCoreApplication::translate("main.cpp", "Use an icon theme from your system."), QCoreApplication::translate("main.cpp", "Icon Theme Name"), QString("") ); parser.addOption(useIconTheme); QCommandLineOption logInputRequest(QStringList() << "l" << "log-input-request", QCoreApplication::translate("main.cpp", "Log the connman inputRequest for debugging purposes.") ); parser.addOption(logInputRequest); QCommandLineOption startMinimized(QStringList() << "m" << "minimized", QCoreApplication::translate("main.cpp", "Start the GUI minimized in the system tray.") ); parser.addOption(startMinimized); QCommandLineOption disableMinimize(QStringList() << "M" << "disable-minimize", QCoreApplication::translate("main.cpp", "Disable the minimize button. Use when you want to have the window manager have sole control of minimizing the interface.") ); parser.addOption(disableMinimize); QCommandLineOption disableVPN(QStringList() << "n" << "disable-vpn", QCoreApplication::translate("main.cpp", "Disable VPN support.") ); parser.addOption(disableVPN); parser.addVersionOption(); QCommandLineOption waitTime(QStringList() << "w" << "wait-time", QCoreApplication::translate("main.cpp", "Specify the wait time in seconds before starting the system tray icon."), QCoreApplication::translate("main.cpp", "seconds"), "0"); parser.addOption(waitTime); QCommandLineOption counterUpdateKb (QStringList() << "counter-update-kb", QCoreApplication::translate("main.cpp", "[Experimental] The number of kb that have to be transmitted before the counter updates."), QCoreApplication::translate("main.cpp", "KB"), "1024" ); parser.addOption(counterUpdateKb); QCommandLineOption counterUpdateRate (QStringList() << "counter-update-rate", QCoreApplication::translate("main.cpp", "[Experimental] The interval in seconds between counter updates."), QCoreApplication::translate("main.cpp", "seconds"), "10" ); parser.addOption(counterUpdateRate); // Added on 2015.01.04 to work around QT5.4 bug with transparency not always working QCommandLineOption fakeTransparency(QStringList() << "fake-transparency", QCoreApplication::translate("main.cpp", "If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB)"), QCoreApplication::translate("main.cpp", "RRGGBB"), "0x222222" ); parser.addOption(fakeTransparency); // Added on 2014.11.24 to work around a bug where QT5.3 won't show an icon in XFCE, My fix may not work, but keep it in for now. If this gets fixed in // QT5.4 keep the command line option so users start up commands don't break, but make it a NOP. QCommandLineOption useXFCE(QStringList() << "use-xfce", QCoreApplication::translate("main.cpp", "Use XFCE specific code.") ); parser.addOption(useXFCE); // Added on 2014.12.16 to work around a similar bug where QT5.3 won't show an icon in MATE. QCommandLineOption useMATE(QStringList() << "use-mate", QCoreApplication::translate("main.cpp", "Use MATE DE specific code.") ); parser.addOption(useMATE); // Setup translations QTranslator qtTranslator; qtTranslator.load("qt_" + QLocale::system().name(), QLibraryInfo::location(QLibraryInfo::TranslationsPath)); app.installTranslator(&qtTranslator); QTranslator cmstTranslator; if (cmstTranslator.load("cmst_" + QLocale::system().name(), ":/translations/translations" ) ) { app.installTranslator(&cmstTranslator); } // else use en_US as it contains Connman strings properized and some singular/plural strings else if (cmstTranslator.load("cmst_en_US", ":/translations/translations" ) ) { app.installTranslator(&cmstTranslator); } // Make sure all the command lines can be parsed // using parse() instead of process() as process stops on an error if an option needs a value // and it is not specified, even if we provide a default. We're supposed to catch errors if we // use parse(), but parse.errorText() returns an empty string on this. Bag the error checking // for now. parser.parse(QCoreApplication::arguments() ); QStringList sl = parser.unknownOptionNames(); if (sl.size() > 0 ) parser.showHelp(1); if (parser.isSet("help") ) parser.showHelp(1); if (parser.isSet("version") ) { #if QT_VERSION >= 0x050400 parser.showVersion(); #else QTextStream out(stdout); out << qPrintable(LONG_NAME) << " " << qPrintable(VERSION) << endl; return 0; #endif } // signal handler signal(SIGINT, signalhandler); // Showing the dialog (or not) is controlled in the createSystemTrayIcon() function // called from the ControlBox constructor. We don't show it from here. ControlBox ctlbox(parser); return app.exec(); } cmst-cmst-2018.01.06/apps/cmstapp/code/notify/000077500000000000000000000000001322401607200206545ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/notify/notify.cpp000066400000000000000000000272451322401607200227020ustar00rootroot00000000000000/**************************** notify.cpp ******************************** Code for a notify client to interface with a desktop notification server. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include # include "./notify.h" #define DBUS_NOTIFY_SERVICE "org.freedesktop.Notifications" #define DBUS_NOTIFY_PATH "/org/freedesktop/Notifications" #define DBUS_NOTIFY_INTERFACE "org.freedesktop.Notifications" // constructor NotifyClient::NotifyClient(QObject* parent) : QObject(parent) { // Data members s_name.clear(); s_vendor.clear(); s_version.clear(); s_spec_version.clear(); sl_capabilities.clear(); b_validconnection = false; current_id = 0; file_map.clear(); this->init(); // Create our client and try to connect to the notify server if (! QDBusConnection::sessionBus().isConnected() ) qCritical("CMST - Cannot connect to the session bus."); // else try to connect to a notification server else connectToServer(); // Signals and slots connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(cleanUp())); return; } /////////////////////////////////////// PUBLIC FUNCTIONS //////////////////////////////// // // Function to connect to a notification server. void NotifyClient::connectToServer() { // return now if we already have a valid connection if (b_validconnection) return; notifyclient = new QDBusInterface(DBUS_NOTIFY_SERVICE, DBUS_NOTIFY_PATH, DBUS_NOTIFY_INTERFACE, QDBusConnection::sessionBus(), this); if (notifyclient->isValid() ) { b_validconnection = true; getServerInformation(); getCapabilities(); QDBusConnection::sessionBus().connect(DBUS_NOTIFY_SERVICE, DBUS_NOTIFY_PATH, DBUS_NOTIFY_INTERFACE, "NotificationClosed", this, SLOT(notificationClosed(quint32, quint32))); QDBusConnection::sessionBus().connect(DBUS_NOTIFY_SERVICE, DBUS_NOTIFY_PATH, DBUS_NOTIFY_INTERFACE, "ActionInvoked", this, SLOT(actionInvoked(quint32, QString))); } // if connection is valid else { notifyclient->deleteLater(); b_validconnection = false; } // else connection not valid } // // Function to initialize data members that are used to hold information sent to the server void NotifyClient::init() { s_summary.clear(); s_app_name.clear(); s_body.clear(); s_icon.clear(); i_urgency = Nc::UrgencyNormal; i_expire_timeout = -1; b_overwrite = true; return; } // // Function to send a notification to the server. There is basically a one to one correspondence // of arguments to the org.freedesktop.Notifications.Notify method. The arguments are mandatory // and must be arranged from outside this class. The getxxx functions may be used to obtain server // information for this purpose. ///////// COMMENTED OUT SINCE WE DON'T USE IT IN CMST ///////////////////// //void NotifyClient::notify (QString app_name, quint32 replaces_id, QString app_icon, QString summary, QString body, QStringList actions, QVariantMap hints, qint32 expire_timeout) //{ //// make sure we have a connection we can send the notification to. //if (! b_validconnection) return; //QDBusReply reply = notifyclient->call(QLatin1String("Notify"), app_name, replaces_id, app_icon, summary, body, actions, hints, expire_timeout); //if (reply.isValid() ) //current_id = reply.value(); //else //#if QT_VERSION >= 0x050400 //qCritical("CMST - Error reply received to the Notify method: %s", qUtf8Printable(reply.error().message()) ); //#else //qCritical("CMST - Error reply received to the Notify method: %s", qPrintable(reply.error().message()) ); //#endif //return; //} // Convienence function to send notifications. This function does some processing // of the arguments. In these functions: // expire_timeout: The amount of time in milliseconds the message is shown. // A value of -1 means timeout is based on server's settings. // overwrite : Will overwrite the previous message sent from this function. // It will not overwrite notifications sent by other programs. // // // Show notification with summary, app_name, and body text void NotifyClient::sendNotification () { // make sure we have a connection we can send the notification to. if (! b_validconnection) return; // variables QString app_name = s_app_name; quint32 replaces_id = 0; QString app_icon = ""; QString body = ""; QString summary = s_summary; QStringList actions = QStringList(); QVariantMap hints; int expire_timeout = i_expire_timeout; // set replaces_id if (b_overwrite) replaces_id = current_id; // assemble the hints hints.clear(); hints.insert("urgency", QVariant::fromValue(static_cast(i_urgency)) ); //if (! app_icon.isEmpty() ) hints.insert("image-path", QVariant::fromValue(app_icon)); // make sure we can display the text on this server if (sl_capabilities.contains("body", Qt::CaseInsensitive) ) { body = s_body; if (! sl_capabilities.contains ("body-markup", Qt::CaseInsensitive) ) { QTextDocument td; td.setHtml(body); body = td.toPlainText(); } // if server cannot display markup } // if capabilities contains body // process the icon, if we are using a fallback icon create a temporary file to hold it QTemporaryFile* tempfileicon = NULL; if (! s_icon.isEmpty() ) { if (QFile::exists(s_icon) ) { tempfileicon = new QTemporaryFile(this); tempfileicon->setAutoRemove(false); if (tempfileicon->open() ) { QPixmap px = QPixmap(s_icon); px.save(tempfileicon->fileName(),"PNG"); app_icon = tempfileicon->fileName().prepend("file://"); } // if tempfileicon could be opened } // if s_icon exists as a disk file // assume s_icon exists as a theme icon, don't check it here. That // check needs to be done in the calling program. else app_icon = s_icon; } // if s_icon is not empty QDBusReply reply = notifyclient->call(QLatin1String("Notify"), app_name, replaces_id, app_icon, summary, body, actions, hints, expire_timeout); if (reply.isValid() ) { current_id = reply.value(); if (file_map.contains(current_id) && tempfileicon != NULL) { if (b_overwrite) { file_map.value(current_id)->remove(); delete file_map.value(current_id); file_map.remove(current_id); } // if else { tempfileicon->remove(); delete tempfileicon; tempfileicon = NULL; } // else } // if contains current_id and not NULL if (tempfileicon != NULL) file_map[current_id] = tempfileicon; } // if reply is valid else #if QT_VERSION >= 0x050400 qCritical("CMST - Error reply received to the Notify method: %s", qUtf8Printable(reply.error().message()) ); #else qCritical("CMST - Error reply received to the Notify method: %s", qPrintable(reply.error().message()) ); #endif return; } /////////////////////////////////////// PRIVATE FUNCTIONS//////////////////////////////// // // Function to get information about the server and write results to data members void NotifyClient::getServerInformation() { // return if we don't have valid connection if (! b_validconnection) return; // get the server information QDBusMessage reply = notifyclient->call(QLatin1String("GetServerInformation")); if (reply.type() == QDBusMessage::ReplyMessage) { QList outargs = reply.arguments(); s_name = outargs.at(0).toString(); s_vendor = outargs.at(1).toString(); s_version = outargs.at(2).toString(); s_spec_version = outargs.at(3).toString(); } else { if (reply.type() == QDBusMessage::InvalidMessage) qCritical("CMST - Invalid reply received to GetServerInformation method."); else if (reply.type() == QDBusMessage::ErrorMessage) #if QT_VERSION >= 0x050400 qCritical("CMST - Error reply received to GetServerInforation method: %s", qUtf8Printable(reply.errorMessage()) ); #else qCritical("CMST - Error reply received to GetServerInforation method: %s", qPrintable(reply.errorMessage()) ); #endif } // else some error occured return; } // // Function to get the capabilities of the server and write to a qstringlist data member void NotifyClient::getCapabilities() { // return if we don't have valid connection if (! b_validconnection) return; // get the server capabilities QDBusReply reply = notifyclient->call(QLatin1String("GetCapabilities") ); if (reply.isValid()) sl_capabilities = reply.value(); else #if QT_VERSION >= 0x050400 qCritical("CMST - Error reply received to GetCapabilities method: %s", qUtf8Printable(reply.error().message()) ); #else qCritical("CMST - Error reply received to GetCapabilities method: %s", qPrintable(reply.error().message()) ); #endif return; } // // Function to force a close of a notification void NotifyClient::closeNotification(quint32 id) { // return if we don't have valid connection if (! b_validconnection) return; QDBusMessage reply = notifyclient->call(QLatin1String("CloseNotification"), id); if (reply.type() == QDBusMessage::InvalidMessage) qCritical("CMST - Invalid reply received to CloseNotification method."); else if (reply.type() == QDBusMessage::ErrorMessage) #if QT_VERSION >= 0x050400 qCritical("CMST - Error reply received to CloseNotification method: %s", qUtf8Printable(reply.errorMessage()) ); #else qCritical("CMST - Error reply received to CloseNotification method: %s", qPrintable(reply.errorMessage()) ); #endif return; } /////////////////////////////// PRIVATE SLOTS ///////////////////////////////////// // // Slot called when a notification was closed void NotifyClient::notificationClosed(quint32 id, quint32 reason) { (void) reason; if (file_map.contains(id) ) { file_map.value(id)->remove(); delete file_map.value(id); file_map.remove(id); } return; } // // Slot called when some action from the notification is invoked // RIght now we don't do anything with the information void NotifyClient::actionInvoked(quint32 id, QString action_key) { (void) id; (void) action_key; //qDebug() << "Action invoked signal received" << id << action_key; return; } // // Slot to tidy up things, mainly the temp files created if we made icons // Called when qApp issues an aboutToQuit signal void NotifyClient::cleanUp() { QMapIterator itr(file_map); while (itr.hasNext()) { itr.next(); file_map.value(itr.key())->remove(); delete file_map.value(itr.key() ); file_map.remove(itr.key() ); } return; } cmst-cmst-2018.01.06/apps/cmstapp/code/notify/notify.h000066400000000000000000000110341322401607200223340ustar00rootroot00000000000000/**************************** notify.h ********************************** Code for a notify client to interface with a desktop notification server. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ /* Usage is very similar to notify-send. Create a notifyclient instance. * During creation the constructor will try to connect to a notification * server. You can test if this was successful by calling the isValid() * function. If sussessful you may also use the getxxx functions to * return information about the server. * * To send a notification initialize the client using the init() function. * Set the items you wish to send using the setxxx functions. To show * the notification call sendNotification(). * * This class may also be used to store the information you saved to be * retrieved by the various getxxx functions. This information can be used * for instance to show a popup from the systemtray icon. */ # ifndef NOTIFY_CLIENT # define NOTIFY_CLIENT # include # include # include # include # include # include # include # include // Used for enum's local to this program namespace Nc { enum { // urgency levels UrgencyLow = 0, UrgencyNormal = 1, UrgencyCritical = 2 }; } // namespace class NotifyClient : public QObject { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.freedesktop.Notifications") public: NotifyClient(QObject*); inline bool isValid() {return b_validconnection;} inline QString getServerName() {return s_name;} inline QString getServerVendor() {return s_vendor;} inline QString getServerVersion() {return s_version;} inline QString getServerSpecVersion() {return s_spec_version;} inline QStringList getServerCapabilities() {return sl_capabilities;} inline void setSummary(QString s) {s_summary = s;} inline void setAppName(QString s) {s_app_name = s;} inline void setBody(QString s) {s_body = s;} inline void setIcon(QString s) {s_icon = s;} inline void setUrgency(int i) {i_urgency = i;} inline void setExpireTimeout(int i) {i_expire_timeout = i;} inline void setOverwrite(bool b) {b_overwrite = b;} inline QString getSummary() {return s_summary;} inline QString getAppName() {return s_app_name;} inline QString getBody() {return s_body;} inline QString getIcon() {return s_icon;} inline int getUrgency() {return i_urgency;} inline int getExpireTimeout() {return i_expire_timeout;} void connectToServer(); void init(); void sendNotification(); private: // members QDBusInterface* notifyclient; QString s_name; QString s_vendor; QString s_version; QString s_spec_version; QStringList sl_capabilities; bool b_validconnection; quint32 current_id; QString s_summary; QString s_app_name; QString s_body; QString s_icon; int i_urgency; int i_expire_timeout; bool b_overwrite; QMap file_map; // functions void getServerInformation(); void getCapabilities(); void closeNotification(quint32); private slots: void notificationClosed(quint32, quint32); void actionInvoked(quint32, QString); void cleanUp(); }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/peditor/000077500000000000000000000000001322401607200210125ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/peditor/peditor.cpp000066400000000000000000000362651322401607200232000ustar00rootroot00000000000000/****************** peditor.cpp *********************************** Code to manage the Properties Editor dialog. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include "./peditor.h" # include "./code/shared/shared.h" # include "./code/trstring/tr_strings.h" #define DBUS_SERVICE "net.connman" PropertiesEditor::PropertiesEditor(QWidget* parent, const arrayElement& ae) : QDialog(parent) { // Setup the user interface ui.setupUi(this); // Data members objpath = ae.objpath; objmap = ae.objmap; sl_ipv4_method << "dhcp" << "manual" << "off"; sl_ipv6_method << "auto" << "manual" << "off"; sl_ipv6_privacy << "disabled" << "enabled" << "prefered"; // misspelling prefered is necessary sl_proxy_method << "direct" << "auto" << "manual"; // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); connect(ui.pushButton_resetpage, SIGNAL(clicked()), this, SLOT(resetPage())); connect(ui.pushButton_resetall, SIGNAL(clicked()), this, SLOT(resetAll())); connect(ui.pushButton_ok, SIGNAL(clicked()), this, SLOT(updateConfiguration())); connect(ui.comboBox_ipv4method, SIGNAL(currentIndexChanged(int)), this, SLOT(ipv4Method(int))); // Setup comboboxes ui.comboBox_ipv4method->addItems(TranslateStrings::cmtr_sl(sl_ipv4_method) ); ui.comboBox_ipv6method->addItems(TranslateStrings::cmtr_sl(sl_ipv6_method) ); ui.comboBox_ipv6privacy->addItems(TranslateStrings::cmtr_sl(sl_ipv6_privacy) ); ui.comboBox_proxymethod->addItems(TranslateStrings::cmtr_sl(sl_proxy_method) ); // Setup the address validator and apply it to any ui QLineEdit. // The lev validator will validate an IP address or up to one white space character (to allow // editing of the line edit). const QString s_ip4 = "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"; const QString s_ip6 = "(?:[0-9a-fA-F]{1,4})"; const QString s_dom = "((?!-)[A-Za-z0-9-]{1,63}(?setValidator(lev_4); ui.lineEdit_ipv4netmask->setValidator(lev_4); ui.lineEdit_ipv4gateway->setValidator(lev_4); ui.lineEdit_ipv6address->setValidator(lev_6); ui.lineEdit_ipv6gateway->setValidator(lev_6); // now QLineEdits that allow multiple addresses QRegularExpression rx46d("\\s?|((" + s_ip4 + "(?:\\." + s_ip4 + "){3}|"+ s_ip6 + "(?::" + s_ip6 + "){7}|" + s_dom + ")(\\s*[,|;|\\s]\\s*))+"); QRegularExpressionValidator* lev_m = new QRegularExpressionValidator(rx46d, this); ui.lineEdit_nameservers->setValidator(lev_m); ui.lineEdit_timeservers->setValidator(lev_m); // initialize and populate submaps ipv4map.clear(); ipv6map.clear(); proxmap.clear(); shared::extractMapData(ipv4map, objmap.value("IPv4.Configuration") ); shared::extractMapData(ipv6map, objmap.value("IPv6.Configuration") ); shared::extractMapData(proxmap, objmap.value("Proxy.Configuration") ); // Seed initial values in the dialog. ui.checkBox_autoconnect->setChecked(objmap.value("AutoConnect").toBool() ); ui.lineEdit_nameservers->setText(objmap.value("Nameservers.Configuration").toStringList().join("\n") ); ui.lineEdit_timeservers->setText(objmap.value("Timeservers.Configuration").toStringList().join("\n")); ui.lineEdit_domains->setText(objmap.value("Domains.Configuration").toStringList().join("\n")); // ipv4 page if (! ipv4map.value("Method").toString().isEmpty() ) { ui.comboBox_ipv4method->setCurrentIndex(sl_ipv4_method.indexOf(QRegularExpression(ipv4map.value("Method").toString())) ); } ui.lineEdit_ipv4address->setText(ipv4map.value("Address").toString() ); ui.lineEdit_ipv4netmask->setText(ipv4map.value("Netmask").toString() ); ui.lineEdit_ipv4gateway->setText(ipv4map.value("Gateway").toString() ); // ipv6 page if (! ipv6map.value("Method").toString().isEmpty() ) { ui.comboBox_ipv6method->setCurrentIndex(sl_ipv6_method.indexOf(QRegularExpression(ipv6map.value("Method").toString())) ); } ui.spinBox_ipv6prefixlength->setValue(ipv6map.value("PrefixLength").toUInt() ); ui.lineEdit_ipv6address->setText(ipv6map.value("Address").toString() ); ui.lineEdit_ipv6gateway->setText(ipv6map.value("Gateway").toString() ); if (! ipv6map.value("Privacy").toString().isEmpty() ) { ui.comboBox_ipv6privacy->setCurrentIndex(sl_ipv6_privacy.indexOf(QRegularExpression(ipv6map.value("Privacy").toString())) ); } // proxy page if (proxmap.value("Method").toString().isEmpty() ) ui.comboBox_proxymethod->setCurrentIndex(-1); else ui.comboBox_proxymethod->setCurrentIndex(sl_proxy_method.indexOf(QRegularExpression(proxmap.value("Method").toString())) ); ui.lineEdit_proxyservers->setText(proxmap.value("Servers").toStringList().join("\n") ); ui.lineEdit_proxyexcludes->setText(proxmap.value("Excludes").toStringList().join("\n") ); ui.lineEdit_proxyurl->setText(proxmap.value("URL").toString() ); if (ui.comboBox_proxymethod->currentIndex() < 0) ui.stackedWidget_proxy01->setCurrentIndex(0); else ui.stackedWidget_proxy01->setCurrentIndex(ui.comboBox_proxymethod->currentIndex() ); // disable pages not needed for a service (mainly vpn) if (objmap.value("Type").toString() == "vpn") { ui.ipv4->setDisabled(true); ui.ipv6->setDisabled(true); } } ///////////////////////////////////////////////// Private Slots ///////////////////////////////////////////// // // Slot to enter whats this mode // Called when the ui.toolButton_whatsthis clicked() signal is emitted void PropertiesEditor::showWhatsThis() { QWhatsThis::enterWhatsThisMode(); } // // Function to clear the contents of the specified page. If the page // argument is less than one (default value is -1) then clear the // current toolbox page. Called when ui.pushButton_resetpage is clicked() void PropertiesEditor::resetPage(int page) { // find the page (index) to clear. int toolboxindex = ui.toolBox_peditor->currentIndex(); if (page >= 0 ) toolboxindex = page; switch (toolboxindex) { case 0: ui.checkBox_autoconnect->setChecked(objmap.value("AutoConnect").toBool() ); break; case 1: ui.lineEdit_nameservers->clear(); break; case 2: ui.lineEdit_timeservers->clear(); break; case 3: ui.lineEdit_domains->clear(); break; case 4: ui.comboBox_ipv4method->setCurrentIndex(0); ui.lineEdit_ipv4address->clear(); ui.lineEdit_ipv4netmask->clear(); ui.lineEdit_ipv4gateway->clear(); break; case 5: ui.comboBox_ipv6method->setCurrentIndex(0); ui.spinBox_ipv6prefixlength->setValue(0); ui.lineEdit_ipv6address->clear(); ui.lineEdit_ipv6gateway->clear(); ui.comboBox_ipv6privacy->setCurrentIndex(0); break; case 6: ui.comboBox_proxymethod->setCurrentIndex(0); ui.lineEdit_proxyurl->clear(); ui.lineEdit_proxyservers->clear(); ui.lineEdit_proxyexcludes->clear(); break; default: break; } // switch return; } // // Slot to reset all pages. Called when ui.pushButton_resetall // is clicked(). void PropertiesEditor::resetAll() { for (int i = 0; i < ui.toolBox_peditor->count(); ++i) { this->resetPage(i); } return; } // // Slot to update the configuration then exit. Called when ui.pushButton_ok // is clicked. Step through each page of the QToolBox and send any entries // to connman. void PropertiesEditor::updateConfiguration() { // Some variables QString s; QStringList sl; QList vlist; QMap dict; QDBusInterface* iface_serv = new QDBusInterface(DBUS_SERVICE, objpath.path(), "net.connman.Service", QDBusConnection::systemBus(), this); QList lep; QStringList slp; // QCheckboxes // Only update if changed if (ui.checkBox_autoconnect->isChecked() != objmap.value("AutoConnect").toBool() ) { vlist.clear(); vlist << "AutoConnect"; vlist << QVariant::fromValue(QDBusVariant(ui.checkBox_autoconnect->isChecked()) ); shared::processReply(iface_serv->callWithArgumentList(QDBus::AutoDetect, "SetProperty", vlist) ); } // QLineEdits (nameservers, timeservers and domains) lep.clear(); slp.clear(); lep << ui.lineEdit_nameservers << ui.lineEdit_timeservers << ui.lineEdit_domains; slp << "Nameservers.Configuration" << "Timeservers.Configuration" << "Domains.Configuration"; for (int i = 0; i < lep.count(); ++i) { s = lep.at(i)->text(); s.replace(',', ' '); s.replace(';', ' '); s = s.simplified(); if (s.isEmpty() ) sl.clear(); else sl = s.split(' '); // Only update if an entry has changed. if (sl != objmap.value(slp.at(i)).toStringList()) { vlist.clear(); vlist << slp.at(i); vlist << QVariant::fromValue(QDBusVariant(sl) ); shared::processReply(iface_serv->callWithArgumentList(QDBus::AutoDetect, "SetProperty", vlist) ); } // if } //for // ipv4 if (ui.ipv4->isEnabled() ) { // Only update if an entry has changed. if ((ui.comboBox_ipv4method->currentText() != TranslateStrings::cmtr(ipv4map.value("Method").toString()) ) | (ui.lineEdit_ipv4address->text() != TranslateStrings::cmtr(ipv4map.value("Address").toString()) ) | (ui.lineEdit_ipv4netmask->text() != TranslateStrings::cmtr(ipv4map.value("Netmask").toString()) ) | (ui.lineEdit_ipv4gateway->text() != TranslateStrings::cmtr(ipv4map.value("Gateway").toString())) ) { vlist.clear(); lep.clear(); slp.clear(); dict.clear(); if (ui.comboBox_ipv4method->currentIndex() >= 0) { vlist << "IPv4.Configuration"; dict.insert("Method", sl_ipv4_method.at(ui.comboBox_ipv4method->currentIndex()) ); lep << ui.lineEdit_ipv4address << ui.lineEdit_ipv4netmask << ui.lineEdit_ipv4gateway; slp << "Address" << "Netmask" << "Gateway"; for (int i = 0; i < lep.count(); ++i) { s = lep.at(i)->text(); s = s.simplified(); // really should not be needed with the validator if (s.isEmpty() ) break; dict.insert(slp.at(i), s); } // for vlist << QVariant::fromValue(QDBusVariant(dict) ); shared::processReply(iface_serv->callWithArgumentList(QDBus::AutoDetect, "SetProperty", vlist) ); } // if there is a valid index } // if ipv4 changed }// ipv4 page is enabled // iqv6 if (ui.ipv6->isEnabled() ) { // Only update if an entry has changed. if ((ui.comboBox_ipv6method->currentText() != TranslateStrings::cmtr(ipv6map.value("Method").toString()) ) | (static_cast(ui.spinBox_ipv6prefixlength->value()) != ipv6map.value("PrefixLength").toUInt() ) | (ui.lineEdit_ipv6gateway->text() != TranslateStrings::cmtr(ipv6map.value("Privacy").toString()) ) | (ui.lineEdit_ipv6address->text() != TranslateStrings::cmtr(ipv6map.value("Address").toString()) ) | (ui.comboBox_ipv6privacy->currentText() != TranslateStrings::cmtr(ipv6map.value("Gateway").toString())) ) { vlist.clear(); lep.clear(); slp.clear(); dict.clear(); if (ui.comboBox_ipv6method->currentIndex() >= 0) { vlist << "IPv6.Configuration"; dict.insert("Method", sl_ipv6_method.at(ui.comboBox_ipv6method->currentIndex()) ); dict.insert("PrefixLength", QVariant::fromValue(static_cast(ui.spinBox_ipv6prefixlength->value())) ); dict.insert("Privacy", sl_ipv6_privacy.at(ui.comboBox_ipv6privacy->currentIndex()) ); lep << ui.lineEdit_ipv6address << ui.lineEdit_ipv6gateway; slp << "Address" << "Gateway"; for (int i = 0; i < lep.count(); ++i) { s = lep.at(i)->text(); s = s.simplified(); // really should not be needed with the validator if (s.isEmpty() ) break; dict.insert(slp.at(i), s); } // for vlist << QVariant::fromValue(QDBusVariant(dict) ); shared::processReply(iface_serv->callWithArgumentList(QDBus::AutoDetect, "SetProperty", vlist) ); } // if there is a valid index } // if ipv6 changed } // if ipv6 enabled // proxy // Only update if an entry has changed. if ((ui.comboBox_proxymethod->currentText() != TranslateStrings::cmtr(proxmap.value("Method").toString()) ) | (ui.lineEdit_proxyservers->text() != proxmap.value("Servers").toStringList().join("\n") ) | (ui.lineEdit_proxyexcludes->text() != proxmap.value("Excludes").toStringList().join("\n") ) | (ui.lineEdit_proxyurl->text() != proxmap.value("URL").toString()) ) { vlist.clear(); lep.clear(); slp.clear(); dict.clear(); vlist << "Proxy.Configuration"; dict.insert("Method", sl_proxy_method.at(ui.comboBox_proxymethod->currentIndex()) ); lep << ui.lineEdit_proxyurl << ui.lineEdit_proxyservers << ui.lineEdit_proxyexcludes; slp << "URL" << "Servers" << "Excludes"; for (int i = 0; i < lep.count(); ++i) { s = lep.at(i)->text(); s = s.simplified(); // URL is a single string if ( i == 0 ) { if (s.isEmpty() ) s.clear(); dict.insert(slp.at(i), s); } // if // remanider are an array of strings else { if (s.isEmpty() ) sl.clear(); else sl = s.split(' '); dict.insert(slp.at(i), sl); } //else } // for vlist << QVariant::fromValue(QDBusVariant(dict) ); shared::processReply(iface_serv->callWithArgumentList(QDBus::AutoDetect, "SetProperty", vlist) ); } // if proxy changed // cleanup iface_serv->deleteLater(); this->accept(); } // // Slot to hide or show boxes based on ipv4 method void PropertiesEditor::ipv4Method(int idx) { // variables if (idx == 1 ) { // index 1 is manual ui.label_ipv4address->show(); ui.label_ipv4netmask->show(); ui.label_ipv4gateway->show(); ui.lineEdit_ipv4address->show(); ui.lineEdit_ipv4netmask->show(); ui.lineEdit_ipv4gateway->show(); } else { ui.label_ipv4address->hide(); ui.label_ipv4netmask->hide(); ui.label_ipv4gateway->hide(); ui.lineEdit_ipv4address->hide(); ui.lineEdit_ipv4netmask->hide(); ui.lineEdit_ipv4gateway->hide(); } return; } cmst-cmst-2018.01.06/apps/cmstapp/code/peditor/peditor.h000066400000000000000000000044661322401607200226430ustar00rootroot00000000000000/**************************** peditor.h *************************** Code to manage the Properties Editor dialog. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef PROPERTIES_EDITOR_H # define PROPERTIES_EDITOR_H # include # include # include # include # include # include # include "ui_peditor.h" # include "./code/control_box/controlbox.h" // The class to control the properties editor UI based on a QDialog class PropertiesEditor : public QDialog { Q_OBJECT public: // members PropertiesEditor(QWidget*, const arrayElement&); private: // members Ui::Peditor ui; QDBusObjectPath objpath; QMap objmap; QMap ipv4map; QMap ipv6map; QMap proxmap; QStringList sl_ipv4_method; QStringList sl_ipv6_method; QStringList sl_ipv6_privacy; QStringList sl_proxy_method; // functions private slots: void showWhatsThis(); void resetPage(int page = -1); void resetAll(); void updateConfiguration(); void ipv4Method(int); public: inline void setWhatsThisIcon(QIcon icon) {ui.toolButton_whatsthis->setIcon(icon);} }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/peditor/ui/000077500000000000000000000000001322401607200214275ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/peditor/ui/peditor.ui000066400000000000000000000663621322401607200234510ustar00rootroot00000000000000 Peditor 0 0 306 484 Property Editor true true 0 0 288 192 &General <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect Qt::Vertical 20 40 0 0 288 192 <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers Qt::Vertical 20 40 0 0 288 192 <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Timeservers Qt::Vertical 20 40 0 0 288 192 <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains Qt::Vertical 20 40 0 0 288 192 IPv&4 <html><head/><body><p>The IPv4 address to use for this connection.</p></body></html> <html><head/><body><p>The IPv4 address to use for this connection.</p></body></html> Address <html><head/><body><p>The IPv4 gateway for this connection. This field is optional and may be left blank</p></body></html> <html><head/><body><p>The IPv4 netmask for this connection.</p></body></html> Netmask <html><head/><body><p>The IPv4 gateway for this connection. This field is optional and may be left blank</p></body></html> Gateway <html><head/><body><p>The IPv4 netmask for this connection.</p></body></html> Method Qt::Vertical 20 40 0 0 288 192 IPv&6 2 <html><head/><body><p>Enable or disable the IPv6 privacy extension as described in RFC 4941,</p><p><span style=" font-weight:600;">Disabled</span>: privacy extension is disabled and normal autoconf addresses are used.</p><p><span style=" font-weight:600;">Enabled</span>: the system prefers to use public addresses over temporary addresses.</p><p><span style=" font-weight:600;">Prefered</span>: privacy extension is enabled and the system prefers temporary addresses over public addresses.</p><p><br/></p></body></html> Qt::Vertical 20 40 <html><head/><body><p>Enable or disable the IPv6 privacy extension as described in RFC 4941,</p><p><span style=" font-weight:600;">Disabled</span>: privacy extension is disabled and normal autoconf addresses are used.</p><p><span style=" font-weight:600;">Enabled</span>: the system prefers to use public addresses over temporary addresses.</p><p><span style=" font-weight:600;">Prefered</span>: privacy extension is enabled and the system prefers temporary addresses over public addresses.</p><p><br/></p></body></html> Privacy <html><head/><body><p>The IPv6 gateway for this connection. This field is optional and may be left blank</p></body></html> Gateway lineEdit_ipv6gateway <html><head/><body><p>The prefix length of the IPv6 connection.</p></body></html> 255 <html><head/><body><p>The IPv6 gateway for this connection. This field is optional and may be left blank</p></body></html> <html><head/><body><p>The prefix length of the IPv6 connection.</p></body></html> Prefix Length spinBox_ipv6prefixlength <html><head/><body><p>The IPv6 address to use for this connection.</p></body></html> <html><head/><body><p>The IPv6 address to use for this connection.</p></body></html> Address lineEdit_ipv6address Qt::Vertical 20 40 Method 0 0 288 192 <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy 1 2 281 189 Method 2 URL <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> Qt::Vertical 20 108 Servers <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Qt::Vertical 20 40 Qt::Horizontal <html><head/><body><p>What's This</p></body></html> Qt::Horizontal 40 20 <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All Qt::Horizontal 40 20 true <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel checkBox_autoconnect lineEdit_nameservers lineEdit_timeservers lineEdit_domains comboBox_ipv4method lineEdit_ipv4address lineEdit_ipv4netmask lineEdit_ipv4gateway comboBox_ipv6method comboBox_ipv6privacy spinBox_ipv6prefixlength lineEdit_ipv6address lineEdit_ipv6gateway comboBox_proxymethod lineEdit_proxyurl lineEdit_proxyservers lineEdit_proxyexcludes toolButton_whatsthis pushButton_resetpage pushButton_resetall pushButton_ok pushButton_cancel pushButton_cancel clicked() Peditor reject() 239 434 226 -14 comboBox_ipv6method currentIndexChanged(int) stackedWidget_ipv601 setCurrentIndex(int) 201 194 255 218 comboBox_proxymethod activated(int) stackedWidget_proxy01 setCurrentIndex(int) 263 244 239 368 cmst-cmst-2018.01.06/apps/cmstapp/code/provisioning/000077500000000000000000000000001322401607200220725ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/provisioning/prov_ed.cpp000066400000000000000000000631371322401607200242460ustar00rootroot00000000000000/****************** prov_ed.cpp *********************************** Code to manage the Provisioning Editor dialog. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include # include # include # include # include # include # include "./prov_ed.h" # include "../resource.h" # include "./code/trstring/tr_strings.h" # include "./code/shared/shared.h" // // Provisioning Editor constructor ProvisioningEditor::ProvisioningEditor(QWidget* parent) : QDialog(parent) { // Setup the user interface ui.setupUi(this); // Data members menubar = new QMenuBar(this); ui.verticalLayout01->setMenuBar(menubar); con_path = "/var/lib/connman"; statusbar = new QStatusBar(this); ui.verticalLayout01->addWidget(statusbar); statustimeout = 2000; i_sel = CMST::ProvEd_No_Selection; // Setup the buttongroup bg01 = new QButtonGroup(this); bg01->addButton(ui.pushButton_open); bg01->addButton(ui.pushButton_save); bg01->addButton(ui.pushButton_delete); // Add actions to actiongroups (signals from actiongroups are connected to slots) group_template = new QActionGroup(this); group_template->addAction(ui.actionTemplateEduroamLong); group_template->addAction(ui.actionTemplateEduroamShort); group_template->addAction(ui.actionTemplateeap_peap); group_template->addAction(ui.actionTemplateeap_tls); group_template->addAction(ui.actionTemplateeap_ttls); group_freeform = new QActionGroup(this); group_freeform->addAction(ui.actionGlobal); group_freeform->addAction(ui.actionGlobalName); group_freeform->addAction(ui.actionGlobalDescription); group_freeform->addAction(ui.actionService); group_freeform->addAction(ui.actionWifiPrivateKeyPassphrase); group_freeform->addAction(ui.actionWifiIdentity); group_freeform->addAction(ui.actionWifiPassphrase); group_freeform->addAction(ui.actionWifiPhase2); group_combobox = new QActionGroup(this); group_combobox->addAction(ui.actionServiceType); group_combobox->addAction(ui.actionWifiEAP); group_combobox->addAction(ui.actionWifiPrivateKeyPassphraseType); group_combobox->addAction(ui.actionWifiSecurity); group_combobox->addAction(ui.actionWifiHidden); group_combobox->addAction(ui.actionServiceIPv6Privacy); group_validated = new QActionGroup(this); group_validated->addAction(ui.actionServiceMAC); group_validated->addAction(ui.actionWifiSSID); group_validated->addAction(ui.actionServiceNameServers); group_validated->addAction(ui.actionServiceTimeServers); group_validated->addAction(ui.actionServiceSearchDomains); group_validated->addAction(ui.actionServiceDomain); group_validated->addAction(ui.actionWifiName); group_selectfile = new QActionGroup(this); group_selectfile->addAction(ui.actionWifiCACertFile); group_selectfile->addAction(ui.actionWifiClientCertFile); group_selectfile->addAction(ui.actionWifiPrivateKeyFile); group_ipv4 = new QActionGroup(this); group_ipv4->addAction(ui.actionServiceIPv4Off); group_ipv4->addAction(ui.actionServiceIPV4DHCP); group_ipv4->addAction(ui.actionServiceIPv4Address); group_ipv6 = new QActionGroup(this); group_ipv6->addAction(ui.actionServiceIPv6Off); group_ipv6->addAction(ui. actionServiceIPv6Auto); group_ipv6->addAction(ui.actionServiceIPv6Address); // Add Actions from UI to menu's menu_global = new QMenu(tr("Global"), this); menu_global->addAction(ui.actionGlobal); menu_global->addSeparator(); menu_global->addAction(ui.actionGlobalName); menu_global->addAction(ui.actionGlobalDescription); menu_service = new QMenu(tr("Service"), this); menu_service->addAction(ui.actionService); menu_service->addSeparator(); menu_service->addAction(ui.actionServiceType); menu_service->addAction(ui.actionServiceDomain); menu_service->addAction(ui.actionServiceMAC); menu_service->addSeparator(); menu_service->addAction(ui.actionServiceIPv4Off); menu_service->addAction(ui.actionServiceIPV4DHCP); menu_service->addAction(ui.actionServiceIPv4Address); menu_service->addSeparator(); menu_service->addAction(ui.actionServiceIPv6Off); menu_service->addAction(ui. actionServiceIPv6Auto); menu_service->addAction(ui.actionServiceIPv6Address); menu_service->addAction(ui.actionServiceIPv6Privacy); menu_service->addSeparator(); menu_service->addAction(ui.actionServiceNameServers); menu_service->addAction(ui.actionServiceTimeServers); menu_service->addAction(ui.actionServiceSearchDomains); menu_wifi = new QMenu(tr("WiFi"), this); menu_wifi->addSeparator(); menu_wifi->addAction(ui.actionWifiName); menu_wifi->addAction(ui.actionWifiSSID); menu_wifi->addSeparator(); menu_wifi->addAction(ui.actionWifiSecurity); menu_wifi->addAction(ui.actionWifiPassphrase); menu_wifi->addAction(ui.actionWifiHidden); menu_wifi->addAction(ui.actionWifiPhase2); menu_wifi->addSeparator(); menu_wifi->addAction(ui.actionWifiEAP); menu_wifi->addAction(ui.actionWifiIdentity); menu_wifi->addSeparator(); menu_wifi->addAction(ui.actionWifiCACertFile); menu_wifi->addAction(ui.actionWifiClientCertFile); menu_wifi->addSeparator(); menu_wifi->addAction(ui.actionWifiPrivateKeyFile); menu_wifi->addAction(ui.actionWifiPrivateKeyPassphrase); menu_wifi->addAction(ui.actionWifiPrivateKeyPassphraseType); menu_template = new QMenu(tr("Templates"), this);menu_template->addAction(ui.actionTemplateEduroamShort); menu_template->addAction(ui.actionTemplateEduroamLong); menu_template->addAction(ui.actionTemplateEduroamShort); menu_template->addSeparator(); menu_template->addAction(ui.actionTemplateeap_peap); menu_template->addAction(ui.actionTemplateeap_tls); menu_template->addAction(ui.actionTemplateeap_ttls); // add menus to UI menubar->addMenu(menu_global); menubar->addMenu(menu_service); menubar->addMenu(menu_wifi); menubar->addMenu(menu_template); // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); connect(ui.pushButton_resetpage, SIGNAL(clicked()), this, SLOT(resetPage())); connect(bg01, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(requestFileList(QAbstractButton*))); connect(group_template, SIGNAL(triggered(QAction*)), this, SLOT(templateTriggered(QAction*))); connect(group_freeform, SIGNAL(triggered(QAction*)), this, SLOT(inputFreeForm(QAction*))); connect(group_combobox, SIGNAL(triggered(QAction*)), this, SLOT(inputComboBox(QAction*))); connect(group_validated, SIGNAL(triggered(QAction*)), this, SLOT(inputValidated(QAction*))); connect(group_selectfile, SIGNAL(triggered(QAction*)), this, SLOT(inputSelectFile(QAction*))); connect(group_ipv4, SIGNAL(triggered(QAction*)), this, SLOT(ipv4Triggered(QAction*))); connect(group_ipv6, SIGNAL(triggered(QAction*)), this, SLOT(ipv6Triggered(QAction*))); } /////////////////////////////////////////////// Private Slots ///////////////////////////////////////////// // // Slot called when a member of the QActionGroup group_selectfile void ProvisioningEditor::inputSelectFile(QAction* act) { // variables QString key = act->text(); QString title; if (act == ui.actionWifiCACertFile) title = tr("File Path to the CA Certificate File"); if (act == ui.actionWifiClientCertFile) title = tr("File Path to the Client Certificate File"); if (act == ui.actionWifiPrivateKeyFile) title = tr("File path to the Client Private Key File");; QString fname = QFileDialog::getOpenFileName(this, title, QDir::homePath(), tr("Key Files (*.pem);;All Files (*.*)")); // return if the file name returned is empty (cancel pressed in the dialog) if (fname.isEmpty() ) return; // put the path into the text edit key.append(" = %1\n"); ui.plainTextEdit_main->insertPlainText(key.arg(fname) ); return; } // // Slot called when a member of the QActionGroup group_validated is triggered void ProvisioningEditor::inputValidated(QAction* act) { // variables QString key = act->text(); // create the dialog shared::ValidatingDialog* vd = new shared::ValidatingDialog(this); // create some prompts and set validator if (act == ui.actionServiceMAC) {vd->setLabel(tr("MAC address.")); vd->setValidator(CMST::ValDialog_MAC);} if (act == ui.actionWifiSSID) {vd->setLabel(tr("SSID: hexadecimal representation of an 802.11 SSID")); vd->setValidator(CMST:: ValDialog_Hex);} if (act == ui.actionServiceNameServers) {vd->setLabel(tr("List of Nameservers")); vd->setValidator(CMST::ValDialog_46d, true);} if (act == ui.actionServiceTimeServers) {vd->setLabel(tr("List of Timeservers")); vd->setValidator(CMST::ValDialog_46d, true);} if (act == ui.actionServiceSearchDomains) {vd->setLabel(tr("List of DNS Search Domains")); vd->setValidator(CMST::ValDialog_Dom, true);} if (act == ui.actionServiceDomain) {vd->setLabel(tr("Domain name to be used")); vd->setValidator(CMST::ValDialog_Dom);} if (act == ui.actionWifiName) {vd->setLabel(tr("Enter the string representation of an 802.11 SSID.")); vd->setValidator(CMST::ValDialog_Wd);} // if accepted put an entry in the textedit if (vd->exec() == QDialog::Accepted) { QString s = vd->getText(); key.append(" = %1\n"); // format strings with multiple entries if (vd->isPlural() ) { s.replace(',', ' '); s.replace(';', ' '); s = s.simplified(); s.replace(' ', ','); } ui.plainTextEdit_main->insertPlainText(key.arg(s) ); } // cleanup vd->deleteLater(); return; } // // Slot called when a member of the QActionGroup group_combobox is triggered void ProvisioningEditor::inputComboBox(QAction* act) { // variables QString key = act->text(); QString str; bool ok; QStringList sl; // create some prompts if (act == ui.actionServiceType) {str = tr("Service type."); sl << "ethernet" << "wifi";} if (act == ui.actionWifiEAP) {str = tr("EAP type."); sl << "tls" << "ttls" << "peap";} if (act == ui.actionWifiPrivateKeyPassphraseType) {str = tr("Private key passphrase type."); sl << "fsid";} if (act == ui.actionWifiSecurity) {str = tr("Network security type."); sl << "psk" << "ieee8021x" << "wep" << "none";} if (act == ui.actionWifiHidden) {str = tr("Hidden network"); sl << "true" << "false";} if (act == ui.actionServiceIPv6Privacy) {str = tr("IPv6 Privacy"); sl << "disabled" << "enabled" << "preferred";} QStringList sl_tr = TranslateStrings::cmtr_sl(sl); QString item = QInputDialog::getItem(this, tr("%1 - Item Input").arg(TranslateStrings::cmtr("cmst")), str, sl_tr, 0, false, &ok); key.append(" = %1\n"); if (ok) ui.plainTextEdit_main->insertPlainText(key.arg(sl.at(sl_tr.indexOf(QRegularExpression(item)))) ); return; } // // Slot called when a member of the QActionGroup group_freeform is triggered // Freeform strings may have spaces in them. For strings that cannot have spaces // use validated text and set b_multiple to false. void ProvisioningEditor::inputFreeForm(QAction* act) { // variables const QLineEdit::EchoMode echomode = QLineEdit::Normal; QString str; bool ok; QString key = act->text(); // create some prompts if (act == ui.actionService) str = tr("Tag which will replace the * with
    an identifier unique to the config file."); if (act == ui.actionGlobalName) str = tr("Enter the network name."); if (act == ui.actionGlobalDescription) str = tr("Enter a description of the network."); if (act == ui.actionWifiPrivateKeyPassphrase) str = tr("Password/Passphrase for the private key file."); if (act == ui.actionWifiIdentity) str = tr("Identity string for EAP."); if (act == ui.actionWifiPassphrase) str = tr("RSN/WPA/WPA2 Passphrase"); if (act == ui.actionWifiPhase2) str = tr("Phase 2 (inner authentication with TLS tunnel)
    authentication method."); if (act == ui.actionGlobal) { key.append("\n"); ui.plainTextEdit_main->insertPlainText(key); } else { act == ui.actionService ? key = "[service_%1]\n" : key.append(" = %1\n"); // get the string from the user QString text = ""; text = QInputDialog::getText(this, tr("%1 - Text Input").arg(TranslateStrings::cmtr("cmst")), str, echomode, "", &ok); if (ok) ui.plainTextEdit_main->insertPlainText(key.arg(text)); } // else return; } // // Slot called when a member of the QActionGroup group_ipv4 is triggered void ProvisioningEditor::ipv4Triggered(QAction* act) { // variables QString s = "IPv4 = %1\n"; QString val; // process action if (act == ui.actionServiceIPv4Off) ui.plainTextEdit_main->insertPlainText(s.arg("off") ); if (act == ui.actionServiceIPV4DHCP) ui.plainTextEdit_main->insertPlainText(s.arg("dhcp") ); if (act == ui.actionServiceIPv4Address) { QMessageBox::StandardButton but = QMessageBox::information(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Information"), tr("The IPv4 Address, Netmask, and optionally Gateway need to be provided." \ "

    Press OK when you are ready to proceed."), QMessageBox::Ok | QMessageBox::Abort,QMessageBox::Ok); if (but == QMessageBox::Ok) { shared::ValidatingDialog* vd = new shared::ValidatingDialog(this); vd->setLabel(tr("IPv4 Address")); vd->setValidator(CMST::ValDialog_IPv4); if (vd->exec() == QDialog::Accepted && ! vd->getText().isEmpty() ) { val = vd->getText(); vd->clear(); vd->setLabel(tr("IPv4 Netmask")); vd->setValidator(CMST::ValDialog_IPv4); if (vd->exec() == QDialog::Accepted && ! vd->getText().isEmpty() ) { val.append("/" + vd->getText() ); vd->clear(); vd->setLabel(tr("IPv4 Gateway (This is an optional entry)")); vd->setValidator(CMST::ValDialog_IPv4); if (vd->exec() == QDialog::Accepted && ! vd->getText().isEmpty() ) { val.append("/" + vd->getText() ); } // if gateway accpted ui.plainTextEdit_main->insertPlainText(s.arg(val) ); } // if netmask accepted } // if address accepted vd->deleteLater(); } // we pressed OK on the information dialog } // act == actionServiceIPv4Address return; } // // Slot called when a member of the QActonGroup group_ipv6 is triggered void ProvisioningEditor::ipv6Triggered(QAction* act) { // variables QString s = "IPv6 = %1\n"; bool ok; QString val; // process action if (act == ui.actionServiceIPv6Off) ui.plainTextEdit_main->insertPlainText(s.arg("off") ); if (act == ui.actionServiceIPv6Auto) ui.plainTextEdit_main->insertPlainText(s.arg("auto") ); if (act == ui.actionServiceIPv6Address) { QMessageBox::StandardButton but = QMessageBox::information(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Information"), tr("The IPv6 Address, Prefix Length, and optionally Gateway need to be provided." \ "

    Press OK when you are ready to proceed."), QMessageBox::Ok | QMessageBox::Abort,QMessageBox::Ok); if (but == QMessageBox::Ok) { shared::ValidatingDialog* vd = new shared::ValidatingDialog(this); vd->setLabel(tr("IPv6 Address")); vd->setValidator(CMST::ValDialog_IPv6); if (vd->exec() == QDialog::Accepted && ! vd->getText().isEmpty() ) { val = vd->getText(); int i = QInputDialog::getInt(this, tr("%1 - Integer Input").arg(TranslateStrings::cmtr("cmst")), tr("Enter the IPv6 prefix length"), 0, 0, 255, 1, &ok); if (ok) { val.append(QString("/%1").arg(i) ); shared::ValidatingDialog* vd = new shared::ValidatingDialog(this); vd->setLabel(tr("IPv6 Gateway (This is an optional entry)")); vd->setValidator(CMST::ValDialog_IPv6); if (vd->exec() == QDialog::Accepted && ! vd->getText().isEmpty() ) { val.append(QString("/" + vd->getText()) ); } // if gateway was accepted ui.plainTextEdit_main->insertPlainText(s.arg(val) ); } // if prefix provided } // if address accepted vd->deleteLater(); } // we pressed OK on the informaion dialog } // act == actionServiceIPv6Address return; } // // Slot called when a member of the QActionGroup group_template is triggered void ProvisioningEditor::templateTriggered(QAction* act) { // variable QString source; // get the source string depending on the action if (act == ui.actionTemplateEduroamLong) source = ":/text/text/eduroam_long.txt"; else if (act == ui.actionTemplateEduroamShort) source = ":/text/text/eduroam_short.txt"; else if (act == ui.actionTemplateeap_peap) source = ":/text/text/eap-peap.txt"; else if (act == ui.actionTemplateeap_tls) source = ":/text/text/eap-tls.txt"; else if (act == ui.actionTemplateeap_ttls) source = ":/text/text/eap-ttls.txt"; else return; // get the text QFile file(source); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QByteArray ba = file.readAll(); // append the template to the textedit ui.plainTextEdit_main->appendPlainText(QString(ba) ); } // if return; } // // Slot to enter whats this mode // Called when the ui.toolButton_whatsthis clicked() signal is emitted void ProvisioningEditor::showWhatsThis() { QWhatsThis::enterWhatsThisMode(); } // // Function to clear the contents of the textedit void ProvisioningEditor::resetPage() { ui.plainTextEdit_main->document()->clear(); return; } // // Slot to request a file list from the roothelper. // Roothelper will emit an obtainedFileList signal when finished. This slot // is connected to the QButtonGroup bg01 void ProvisioningEditor::requestFileList(QAbstractButton* button) { // initialize the selection if (button == ui.pushButton_open) i_sel = CMST::ProvEd_File_Read; else if (button == ui.pushButton_save) i_sel = CMST::ProvEd_File_Write; else if (button == ui.pushButton_delete) i_sel = CMST::ProvEd_File_Delete; else i_sel = CMST::ProvEd_No_Selection; // request a list of config files from roothelper QList vlist; vlist << QVariant::fromValue(con_path); QDBusInterface* iface_rfl = new QDBusInterface("org.cmst.roothelper", "/", "org.cmst.roothelper", QDBusConnection::systemBus(), this); iface_rfl->callWithCallback(QLatin1String("getFileList"), vlist, this, SLOT(processFileList(const QStringList&)), SLOT(callbackErrorHandler(QDBusError))); iface_rfl->deleteLater(); return; } // // Slot to process the file list from /var/lib/connman. Connected to // the obtainedFileList signal in roothelper void ProvisioningEditor::processFileList(const QStringList& sl_conf) { // variables bool ok; QString filename = ""; QList vlist; QDBusInterface* iface_pfl = new QDBusInterface("org.cmst.roothelper", "/", "org.cmst.roothelper", QDBusConnection::systemBus(), this); // If we are trying to open and read the file if (i_sel & CMST::ProvEd_File_Read) { // display dialogs based on the length of the stringlist switch (sl_conf.size()) { case 0: QMessageBox::information(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Information"), tr("

    No configuration files were found.
    You may use this dialog to create one."), QMessageBox::Ok, QMessageBox::Ok); break; case 1: QMessageBox::information(this, tr("%1 - Information").arg(TranslateStrings::cmtr("cmst")), tr("
    Reading configuration file: %1").arg(sl_conf.at(0)), QMessageBox::Ok, QMessageBox::Ok); filename = sl_conf.at(0); break; default: QString item = QInputDialog::getItem(this, tr("%1 - Select File").arg(TranslateStrings::cmtr("cmst")), tr("Select a file to load."), sl_conf, 0, // current item 0 false, // non-editable &ok); if (ok) filename = item; break; } // switch // if we have a filename try to open the file if (! filename.isEmpty() ) { vlist.clear(); vlist << QVariant::fromValue(con_path); vlist << QVariant::fromValue(filename); iface_pfl->callWithCallback(QLatin1String("readFile"), vlist, this, SLOT(seedTextEdit(const QString&)), SLOT(callbackErrorHandler(QDBusError))); } // if there is a file name } // if i_sel is File_Read // If we are trying to delete the file else if (i_sel & CMST::ProvEd_File_Delete) { // // user will have to select the file to delete it switch (sl_conf.size()) { case 0: QMessageBox::information(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Information"), tr("
    No configuration files were found.
    Nothing will be deleted."), QMessageBox::Ok, QMessageBox::Ok); break; default: QString item = QInputDialog::getItem(this, tr("%1 - Select File").arg(TranslateStrings::cmtr("cmst")), tr("Select a file to be deleted."), sl_conf, 0, // current item 0 false, // non-editable &ok); if (ok) filename = item; break; } // switch // if we have a filename try to delete the file if (! filename.isEmpty() ) { vlist.clear(); vlist << QVariant::fromValue(con_path); vlist << QVariant::fromValue(filename); iface_pfl->callWithCallback(QLatin1String("deleteFile"), vlist, this, SLOT(deleteCompleted(bool)), SLOT(callbackErrorHandler(QDBusError))); } // if there is a file name } // if i_sel is File_Delete // If we are trying to save the file else if (i_sel & CMST::ProvEd_File_Write) { QString item = QInputDialog::getItem(this, tr("%1 - Select File").arg(TranslateStrings::cmtr("cmst")), tr("Enter a new file name or select
    an existing file to overwrite."), sl_conf, 0, // current item 0 true, // editable &ok); if (ok) { filename = item.simplified(); // multiple whitespace to one space filename = filename.replace(' ', '_'); // replace spaces with underscores } // if ok // if we have a filename try to save the file if (! filename.isEmpty() ) { vlist.clear(); vlist<< QVariant::fromValue(con_path); vlist << QVariant::fromValue(filename); vlist << QVariant::fromValue(ui.plainTextEdit_main->toPlainText() ); iface_pfl->callWithCallback(QLatin1String("saveFile"), vlist, this, SLOT(writeCompleted(qint64)), SLOT(callbackErrorHandler(QDBusError))); } // if there is a file name } // if i_sel is File_Save // cleanup i_sel = CMST::ProvEd_No_Selection; iface_pfl->deleteLater(); return; } // // Slot to seed the QTextEdit window with data read from file. Connected to // fileReadCompleted signal in root helper. void ProvisioningEditor::seedTextEdit(const QString& data) { // clear the text edit and seed it with the read data ui.plainTextEdit_main->document()->clear(); ui.plainTextEdit_main->setPlainText(data); // show a statusbar message statusbar->showMessage(tr("File read completed"), statustimeout); return; } // // Slot to show a statusbar message when a file delete is completed void ProvisioningEditor::deleteCompleted(bool success) { QString msg; if (success) msg = tr("File deleted"); else msg = tr("Error encountered deleting."); statusbar->showMessage(msg, statustimeout); return; } // // Slot to show a statusbar message when a file write is completed void ProvisioningEditor::writeCompleted(qint64 bytes) { // display a status bar message showing the results of the write QString msg; if (bytes < 0 ) msg = tr("File save failed."); else { if (bytes > 1024) msg = tr("%L1 KB written").arg(bytes / 1024); else msg = tr("%L1 Bytes written").arg(bytes); } statusbar -> showMessage(msg, statustimeout); return; } // // Slot to handle errors from callWithCallback functions void ProvisioningEditor::callbackErrorHandler(QDBusError err) { QMessageBox::critical(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Critical"), QString(tr("DBus Error Name: %1

    String: %2

    Message: %3")).arg(err.name()).arg(err.errorString(err.type())).arg(TranslateStrings::cmtr(err.message()) ), QMessageBox::Ok, QMessageBox::Ok); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/provisioning/prov_ed.h000066400000000000000000000056311322401607200237060ustar00rootroot00000000000000/**************************** prov_ed.h *************************** Code to manage the Provisioning Editor dialog. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef PROVISIONING_EDITOR_H # define PROVISIONING_EDITOR_H # include # include # include # include # include # include # include # include # include # include # include "ui_provisioning_editor.h" // The class to control the properties editor UI based on a QDialog class ProvisioningEditor : public QDialog { Q_OBJECT public: ProvisioningEditor(QWidget*); private: // members Ui::Provisioning ui; int i_sel; QMenuBar* menubar; QMenu* menu_global; QMenu* menu_service; QMenu* menu_wifi; QMenu* menu_template; QActionGroup* group_template; QActionGroup* group_freeform; QActionGroup* group_combobox; QActionGroup* group_validated; QActionGroup* group_selectfile; QActionGroup* group_ipv4; QActionGroup* group_ipv6; QButtonGroup* bg01; QStatusBar* statusbar; int statustimeout; QString con_path; private slots: void inputSelectFile(QAction*); void inputValidated(QAction*); void inputComboBox(QAction*); void inputFreeForm(QAction*); void ipv4Triggered(QAction*); void ipv6Triggered(QAction*); void templateTriggered(QAction*); void showWhatsThis(); void resetPage(); void requestFileList(QAbstractButton*); void processFileList(const QStringList&); void seedTextEdit(const QString&); void deleteCompleted(bool); void writeCompleted(qint64); void callbackErrorHandler(QDBusError); public: inline void setWhatsThisIcon(QIcon icon) {ui.toolButton_whatsthis->setIcon(icon);} }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/provisioning/ui/000077500000000000000000000000001322401607200225075ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/provisioning/ui/provisioning_editor.ui000066400000000000000000000263271322401607200271540ustar00rootroot00000000000000 Provisioning 0 0 374 484 Provisioning Editor true <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open false true <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save false Qt::Vertical <html><head/><body><p>Delete a config file.</p></body></html> &Delete false Qt::Horizontal 40 20 <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page false <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> Qt::Horizontal 40 20 <html><head/><body><p>Exit the dialog.</p></body></html> E&xit false [global] Name Description [service_*] true Type true MAC true Nameservers true Timeservers true SearchDomains true Domain Name true SSID true EAP true CACertFile true ClientCertFile true PrivateKeyFile PrivateKeyPassphrase true PrivateKeyPassphraseType Identity true Phase2 Passphrase true Security true Hidden Eduroam (long) Eduroam (short) true IPv4 Address true IPv4 Off true IPV4 DHCP true IPv6 Address true IPv6 Off true IPv6 Auto IPv6.Privacy EAP-PEAP EAP-PEAP EAP-TLS EAP-TLS EAP-TTLS EAP-TTLS pushButton_exit clicked() Provisioning reject() 351 737 310 -23 cmst-cmst-2018.01.06/apps/cmstapp/code/scrollbox/000077500000000000000000000000001322401607200213535ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/scrollbox/scrollbox.cpp000077500000000000000000000042321322401607200240720ustar00rootroot00000000000000/**************************** scrollbox.cpp *************************** Dialog to display text to the user. Kind of like a neutered QMessageBox except it has scroll bars built in. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include "./scrollbox.h" // constructor // Most of the interface is defined in the ui ScrollBox::ScrollBox(QWidget *parent) : QDialog(parent) { // setup the user interface ui.setupUi(this); // initialize the display text ui.label_displaytext->clear(); } ////////////////////////////////////////////// Public Functions ////////////////////////////////////// // void ScrollBox::execScrollBox(QString title, QString text, QWidget* parent) { ScrollBox scrollBox (parent); scrollBox.setDisplayText(text); scrollBox.setWindowTitle(title); scrollBox.exec(); } ////////////////////////////////////////////////// Public Slots ////////////////////////////////////// // // Slot to set the display text void ScrollBox::setDisplayText(const QString& s) { ui.label_displaytext->setText(s); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/scrollbox/scrollbox.h000077500000000000000000000033351322401607200235420ustar00rootroot00000000000000/**************************** scrollbox.h ***************************** Dialog to display text to the user. Kind of like a neutered QMessageBox except it has scroll bars built in. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef SCROLLBOX_H # define SCROLLBOX_H # include # include "ui_scrollbox.h" // The main program class based on a QDialog class ScrollBox : public QDialog { Q_OBJECT public: ScrollBox(QWidget*); static void execScrollBox(QString, QString, QWidget*); public slots: void setDisplayText(const QString&); private: // members Ui::ScrollBox ui; }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/scrollbox/ui/000077500000000000000000000000001322401607200217705ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/scrollbox/ui/scrollbox.ui000066400000000000000000000053641322401607200243460ustar00rootroot00000000000000 ScrollBox 0 0 397 488 Scrollbox true true 0 0 377 440 TextLabel true Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse Qt::Vertical 20 40 Qt::Horizontal QDialogButtonBox::Ok buttonBox accepted() ScrollBox accept() 248 254 157 274 buttonBox rejected() ScrollBox reject() 316 260 286 274 cmst-cmst-2018.01.06/apps/cmstapp/code/shared/000077500000000000000000000000001322401607200206125ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/shared/shared.cpp000066400000000000000000000214471322401607200225740ustar00rootroot00000000000000/**************************** shared.cpp *************************** Functions shared across various classes Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF C * ONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include "../resource.h" # include "./shared.h" # include "./code/trstring/tr_strings.h" // // Function to process the reply from a dbus call. QDBusMessage::MessageType shared::processReply(const QDBusMessage& reply) { if (reply.type() != QDBusMessage::ReplyMessage) { QMessageBox::warning(0, QString(TranslateStrings::cmtr("cmst") + qApp->translate("processReply", " Warning") ), qApp->translate("processReply", "
    We received a DBUS reply message indicating an error.
    " "

    Error Name: %1

    Error Message: %2") .arg(reply.errorName()) .arg(TranslateStrings::cmtr(reply.errorMessage())) ); } // if reply is something other than a normal reply message return reply.type(); } // // Function to extract the data from a QDBusArgument that contains a map. // Some of the arrayElements can contain a QDBusArgument as the object // instead of a primitive (string, bool, int, etc.). This function // will extract the data from the QDBusArgument and write it into a map. // // Return value a bool, true on success, false otherwise. // The map is sent by reference (called r_map here) and is modified by this function. // r_var is a constant reference to the QDBusArgument. // bool shared::extractMapData(QMap& r_map, const QVariant& r_var) { // make sure we can convert the QVariant into a QDBusArgument if (! r_var.canConvert() ) return false; const QDBusArgument qdba = r_var.value(); // make sure the QDBusArgument holds a map if (qdba.currentType() != QDBusArgument::MapType ) return false; // iterate over the QDBusArgument pulling map keys and values out r_map.clear(); qdba.beginMap(); while ( ! qdba.atEnd() ) { QString key; QVariant value; qdba.beginMapEntry(); qdba >> key >> value; qdba.endMapEntry(); r_map.insert(key, value); } // while qdba.endMap(); return true; } // // Validating Dialog - an input dialog knockoff with a validated lineedit. // In addition to the usual input validation the dialog will only enable // the OK button when the input is completely validated.. // Constructor shared::ValidatingDialog::ValidatingDialog(QWidget* parent) : QDialog(parent) { // build the dialog label = new QLabel(this); lineedit = new QLineEdit(this); lineedit->setClearButtonEnabled(true); buttonbox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this); buttonbox->button(QDialogButtonBox::Ok)->setDisabled(true); // disable OK until input validates this->setSizeGripEnabled(true); QVBoxLayout* vboxlayout = new QVBoxLayout; vboxlayout->addWidget(label); vboxlayout->addWidget(lineedit); vboxlayout->addWidget(buttonbox); this->setLayout(vboxlayout); // signals and slots connect(buttonbox, SIGNAL(accepted()), this, SLOT(accept())); connect(buttonbox, SIGNAL(rejected()), this, SLOT(reject())); connect(lineedit, SIGNAL(textChanged(QString)), this, SLOT(textChanged())); connect(lineedit, SIGNAL(returnPressed()), this, SLOT(accept())); } // Slot to set the lineedit validator. If plural is true multiple values can // be supplied separated by comma, semi-colon or white space void shared::ValidatingDialog::setValidator(const int& vd, bool plural) { // setup a switch to set the validator const QString s_ip4 = "(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])"; const QString s_ip6 = "(?:[0-9a-fA-F]{1,4})"; const QString s_mac = "(?:[0-9a-fA-F]{1,2})"; const QString s_hex = "[0-9a-fA-F]*"; const QString s_int = "[0-9]*"; const QString s_dom = "((?!-)[A-Za-z0-9-]{1,63}(?setValidator(lev_4); } break; case CMST::ValDialog_IPv6: { QRegularExpression rx6(s_start + s_ip6 + "(?::" + s_ip6 + "){7}" + s_end); QRegularExpressionValidator* lev_6 = new QRegularExpressionValidator(rx6, this); lineedit->setValidator(lev_6); } break; case CMST::ValDialog_MAC: { QRegularExpression rxm(s_start + s_mac + "(?::" + s_mac + "){5}" + s_end); QRegularExpressionValidator* lev_m = new QRegularExpressionValidator(rxm, this); lineedit->setValidator(lev_m); } break; case CMST::ValDialog_46: { QRegularExpression rx46(s_start + "(" + s_ip4 + "(?:\\." + s_ip4 + "){3}|" + s_ip6 + "(?::" + s_ip6 + "){7})" + s_end); QRegularExpressionValidator* lev_46 = new QRegularExpressionValidator(rx46, this); lineedit->setValidator(lev_46); } break; case CMST::ValDialog_Hex: { QRegularExpression rxh(s_start + s_hex + s_end); QRegularExpressionValidator* lev_h = new QRegularExpressionValidator(rxh, this); lineedit->setValidator(lev_h); } break; case CMST::ValDialog_Int: { QRegularExpression rxint(s_start + s_int + s_end); QRegularExpressionValidator* lev_int = new QRegularExpressionValidator(rxint, this); lineedit->setValidator(lev_int); } break; case CMST::ValDialog_Dom: { QRegularExpression rxdom(s_start + s_dom + s_end); QRegularExpressionValidator* lev_dom = new QRegularExpressionValidator(rxdom, this); lineedit->setValidator(lev_dom); } break; case CMST::ValDialog_Wd: { QRegularExpression rxwd(s_start + s_wd + s_end); QRegularExpressionValidator* lev_wd = new QRegularExpressionValidator(rxwd, this); lineedit->setValidator(lev_wd); } break; case CMST::ValDialog_min1ch: { QRegularExpression rx1char(s_start + s_ch + "{1,}" + s_end); QRegularExpressionValidator* lev_1char = new QRegularExpressionValidator(rx1char, this); lineedit->setValidator(lev_1char); } break; case CMST::ValDialog_min8ch: { QRegularExpression rx8char(s_start + s_ch + "{8,}" + s_end); QRegularExpressionValidator* lev_8char = new QRegularExpressionValidator(rx8char, this); lineedit->setValidator(lev_8char); } break; case CMST::ValDialog_46d: { QRegularExpression rx46d(s_start + "(" + s_ip4 + "(?:\\." + s_ip4 + "){3}|" + s_ip6 + "(?::" + s_ip6 + "){7}|" + s_dom + ")" + s_end); QRegularExpressionValidator* lev_46d = new QRegularExpressionValidator(rx46d, this); lineedit->setValidator(lev_46d); } break; default: lineedit->setValidator(0); break; } // switch return; } // // Slot to check if the text can be validated // Called when the lineedit emits a textChanged() signal void shared::ValidatingDialog::textChanged() { // enable OK button if text can be validated buttonbox->button(QDialogButtonBox::Ok)->setEnabled(lineedit->hasAcceptableInput() ); return; } // // Slot to initialize the dialog children // Called when dialog finished() signal is triggered void shared::ValidatingDialog::initialize() { lineedit->clear(); lineedit->setValidator(0); lineedit->setInputMask(QString()); lineedit->setModified(false); lineedit->setFocus(Qt::OtherFocusReason); buttonbox->button(QDialogButtonBox::Ok)->setDisabled(true); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/shared/shared.h000066400000000000000000000045041322401607200222340ustar00rootroot00000000000000 /**************************** shared.h *************************** Functions shared across various classes Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef CMST_SHARED # define CMST_SHARED # include # include # include # include # include # include # include # include # include namespace shared { // // Class for an QInputDialog knockoff with validator class ValidatingDialog : public QDialog { Q_OBJECT public: ValidatingDialog(QWidget*); inline void setLabel(const QString& s) {label->setText(s);} void setValidator(const int&, bool plural = false); inline QString getText() {return lineedit->text().trimmed();} inline void setText(const QString& s) {lineedit->setText(s);} inline void clear() {initialize();} inline bool isPlural() {return plural;} private slots: void textChanged(); void initialize(); private: // members QLabel* label; QLineEdit* lineedit; QDialogButtonBox* buttonbox; bool plural; }; QDBusMessage::MessageType processReply(const QDBusMessage& reply); bool extractMapData(QMap&,const QVariant&); } #endif cmst-cmst-2018.01.06/apps/cmstapp/code/trstring/000077500000000000000000000000001322401607200212205ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/trstring/tr_strings.cpp000066400000000000000000000125531322401607200241300ustar00rootroot00000000000000/**************************** tr_strings.cpp *************************** Class to manage and present strings that need to be translated. These are typically not inline strings, rather strings used globally or strings returned by third parties, for instance, Connman. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include "./tr_strings.h" // Constructor TranslateStrings::TranslateStrings(QObject* parent) : QObject(parent) { // The stringlist is not actually used for anything other than a means // to mark strings for translation. QStringList sl; sl.clear(); // Global strings sl << tr("connman system tray", "Main Window Title"); sl << tr("cmst", "Abbreviated Program Name - used for QMessageBox titles"); // Connman strings sl << tr("idle", "connman state string"); sl << tr("association", "connman state string"); sl << tr("configuration", "connman state string"); sl << tr("ready", "connman state string"); sl << tr("online", "connman state string"); sl << tr("disconnect", "connman state string"); sl << tr("failure", "connman state string"); sl << tr("offline", "connman state string"); sl << tr("system", "connman type string"); sl << tr("ethernet", "connman type string"); sl << tr("wifi", "connman type string"); sl << tr("bluetooth", "connman type string"); sl << tr("cellular", "connman type string"); sl << tr("gps", "connman type string"); sl << tr("vpn", "connman type string"); sl << tr("gadget", "connman type string"); sl << tr("p2p", "connman type string"); sl << tr("wired", "connman type string"); sl << tr("direct", "connman proxy string"); sl << tr("manual", "connman proxy string"); sl << tr("auto", "connman proxy string"); sl << tr("psk", "connman security string"); sl << tr("ieee8021x", "connman security string"); sl << tr("none", "connman security string"); sl << tr("wep", "connman security string"); sl << tr("wps", "connman security string"); sl << tr("Invalid arguments", "connman error string"); sl << tr("Permission denied", "connman error string"); sl << tr("Passphrase required", "connman error string"); sl << tr("Not registered", "connman error string"); sl << tr("Not unique", "connman error string"); sl << tr("Not supported", "connman error string"); sl << tr("Not implemented", "connman error string"); sl << tr("Not found", "connman error string"); sl << tr("No carrier", "connman error string"); sl << tr("In progress", "connman error string"); sl << tr("Already exists", "connman error string"); sl << tr("Already enabled", "connman error string"); sl << tr("Already disabled", "connman error string"); sl << tr("Already connected", "connman error string"); sl << tr("Not connected", "connman error string"); sl << tr("Operation aborted", "connman error string"); sl << tr("Operation timeout", "connman error string"); sl << tr("Invalid service", "connman error string"); sl << tr("Invalid property", "connman error string"); sl << tr("disabled", "connman privacy string"); sl << tr("enabled", "connman privacy string"); sl << tr("prefered", "connman privacy string - known misspelling but needed to avoid breaking code"); sl << tr("preferred", "connman privacy string"); sl << tr("auto", "connman ethernet connection method"); sl << tr("manual", "connman ethernet connection method"); sl << tr("dhcp", "connman ipv4 method string"); sl << tr("manual", "connman ipv4 method string"); sl << tr("off", "connman ipv4 method string"); sl << tr("fixed", "connman ipv4 method string"); sl << tr("auto", "connman ipv6 method string"); sl << tr("manual", "connman ipv6 method string"); sl << tr("6to4", "connman ipv6 method string"); sl << tr("off", "connman ipv6 method string"); sl << tr("openconnect", "connman vpn connection type"); sl << tr("openvpn", "connman vpn connection type"); sl << tr("vpnc", "connman vpn connection type"); sl << tr("l2tp", "connman vpn connection type"); sl << tr("pptp", "connman vpn connection type"); return; } // // Function to return a stringlist with entries translated QStringList TranslateStrings::cmtr_sl(const QStringList& sl_src) { QStringList sl_rtn; sl_rtn.clear(); for (int i = 0; i < sl_src.count(); ++i) { sl_rtn << TranslateStrings::cmtr(sl_src.at(i) ); } return sl_rtn; } cmst-cmst-2018.01.06/apps/cmstapp/code/trstring/tr_strings.h000066400000000000000000000034601322401607200235720ustar00rootroot00000000000000/**************************** tr_strings.h *************************** Class to manage and present strings that need to be translated. These are typically not inline strings, rather strings used globally or strings returned by third parties, for instance, Connman. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef TRANSLATE_STRINGS # define TRANSLATE_STRINGS # include # include # include class TranslateStrings : public QObject { Q_OBJECT public: // members TranslateStrings(QObject*); // functions static inline QString cmtr(const QString& str, const char* disamb = 0) {return tr(qPrintable(str), disamb);} static QStringList cmtr_sl(const QStringList&); }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/000077500000000000000000000000001322401607200213255ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/cpp2xml.sh000077500000000000000000000015601322401607200232530ustar00rootroot00000000000000#!/bin/bash # # script to convert the header file to cpp # # -M all public slots # -P all properties # # Adaptor and interface code is generated here because the QT autogenerator # creates an adaptor class based on the last part of the interface name. # So net.connman.Agent and net.connman.vpn.Agent both create an adaptor # named AgentAdaptor. This compiles fine, but Mr. Linker does not like it. # Generate the vpn adaptors and interfaces here and then change all instances of # AgentAdaptor to VPNAgentAdaptor. # qdbuscpp2xml -M -P vpnagent.h -o org.monkey_business_enterprises.vpnagent.xml qdbusxml2cpp org.monkey_business_enterprises.vpnagent.xml -a vpnagent_adaptor qdbusxml2cpp org.monkey_business_enterprises.vpnagent.xml -p vpnagent_interface sed -i 's/AgentAdaptor/VPNAgentAdaptor/g' vpnagent_adaptor.h sed -i 's/AgentAdaptor/VPNAgentAdaptor/g' vpnagent_adaptor.cpp cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/org.monkey_business_enterprises.vpnagent.xml000066400000000000000000000013611322401607200323170ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/ui/000077500000000000000000000000001322401607200217425ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/ui/vpnagent.ui000066400000000000000000000204461322401607200241310ustar00rootroot00000000000000 VPNAgent 0 0 345 433 VPN Agent Input Username lineEdit_username <html><head/><body><p>WISPr username.</p></body></html> true Password lineEdit_password <html><head/><body><p>WISPr password.</p></body></html> true Host true Name true OpenConnect CA Cert. true Client Cert. Cookie Server Cert. true VPN Host <html><head/><body><p>What's This</p></body></html> ... :/icons16x16/images/16x16/help.png:/icons16x16/images/16x16/help.png Qt::Horizontal 328 20 <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel Qt::Vertical 20 40 Save Credentials lineEdit_username lineEdit_password lineEdit_host lineEdit_cacert lineEdit_clientcert lineEdit_cookie lineEdit_servercert lineEdit_vpnhost pushButton_accept pushButton_cancel toolButton_whatsthis pushButton_accept clicked() VPNAgent accept() 229 405 227 -10 pushButton_cancel clicked() VPNAgent reject() 313 396 318 -12 cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent.cpp000066400000000000000000000155131322401607200236600ustar00rootroot00000000000000 /**************************** vpnagent.cpp ******************************** Code for the user agent registered on DBus. When the connman vpn daemon needs to communicate with the user it does so through this agent. Copyright (C) 2016-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include "./vpnagent.h" # include "../resource.h" # include "./code/trstring/tr_strings.h" // header files generated by qmake from the xml file created by qdbuscpp2xml # include "./vpnagent_adaptor.h" # include "./vpnagent_interface.h" // defines # define ERROR_RETRY "net.connman.vpn.Agent.Error.Retry" # define ERROR_CANCELED "net.connman.vpn.Agent.Error.Canceled" // constructor ConnmanVPNAgent::ConnmanVPNAgent(QObject* parent) : QObject(parent) { // members uiDialog = new VPNAgentDialog(qobject_cast (this) ); input_map.clear(); b_loginputrequest = false; // Create Adaptor and register this Agent on the system bus. new VPNAgentAdaptor(this); QDBusConnection::systemBus().registerObject(VPN_AGENT_OBJECT, this); return; } /////////////////////////////////////// PUBLIC Q_SLOTS//////////////////////////////// // // Called when the service daemon unregisters the agent. QT deals with cleanup // tasks so don't need much here void ConnmanVPNAgent::Release() { //qDebug() << "Agent Released"; return; } // Called when an error has to be reported to the user. Show the // error in a QMessageBox void ConnmanVPNAgent::ReportError(QDBusObjectPath path, QString s_error) { (void) path; if ( QMessageBox::warning(qobject_cast (parent()), tr("Connman Error"), tr("Connman returned the following error:
    %1
    Would you like to retry?").arg(TranslateStrings::cmtr(s_error)), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) == QMessageBox::Yes) this->sendErrorReply(ERROR_RETRY, "Going to retry the request"); else return; } // // Called when trying to connect to a service and some extra input is required from the user // A dialog is displayed with the required fields enabled (non-required fields are disabled). QVariantMap ConnmanVPNAgent::RequestInput(QDBusObjectPath path, QMap dict) { (void) path; // Take the dict returned by DBus and extract the information we are interested in and place in input_map. this->createInputMap(dict); // Send our input_map to the dialog to have the user supply the necessary information // needed to continue. Return if canceled. QMap rtn; rtn.clear(); if (this->uiDialog->showPage(input_map) == QDialog::Rejected) this->sendErrorReply(ERROR_CANCELED,"User cancelled the dialog"); else uiDialog->createDict(rtn); // create a return dict and send it back to connman on DBus return rtn; } // // Called when the agent request failed before a reply was returned. Show // a QMessageBox void ConnmanVPNAgent::Cancel() { QMessageBox::information(qobject_cast (parent()), tr("Agent Request Failed"), tr("The agent request failed before a reply was returned.") ); return; } /////////////////////////////////////// PUBLIC FUNCTIONS //////////////////////////////// // // Function to put all of input fields received via DBus:RequestInput into a // QMap where key is the input field received and value is // generally blank but can be used for informational text. // // If we asked to log the input request create the log file in /tmp/cmst/input_request.log void ConnmanVPNAgent::createInputMap(const QMap& r_map) { // Initialize our data map input_map.clear(); // QFile object for logging QTextStream log; QDir d(IPT_REQ_LOG_PATH); QFile logfile(d.absoluteFilePath(IPT_REQ_LOG_FILE)); if (b_loginputrequest) { if (!logfile.open(QIODevice::WriteOnly | QIODevice::Text)) b_loginputrequest = false; else log.setDevice(&logfile); } // Run through the r_map getting the keys and the few values we are interested in. QMap::const_iterator i = r_map.constBegin(); while (i != r_map.constEnd()) { // Lets see what the values contain, but first make sure we can get to them. if (b_loginputrequest) log << "\nVPN_Agent: "<< "Map Key = " << i.key() << "\n"; if (! i.value().canConvert() ) return; const QDBusArgument qdba = i.value().value(); if (qdba.currentType() != QDBusArgument::MapType ) { if (b_loginputrequest) log << "\nVPN_Agent: Error - QDBusArgument as the value is not a MapType\n"; return; } // The r_map.value() is a QDBusArgument::MapType so extract this map into a new QMap called m. qdba.beginMap(); QMap m; m.clear(); if (b_loginputrequest) log << "\nVPN_Agent: " << "Extracting the DBusArgument Map...\n"; while ( ! qdba.atEnd() ) { QString k; QVariant v; qdba.beginMapEntry(); qdba >> k >> v; qdba.endMapEntry(); m.insert(k, v.toString()); if (b_loginputrequest) log << "{ " << k << " , " << v.toString() << "}\n"; } // while qdba.endMap(); // Browse through QMap m and get things we need to look at // Types we don' really care about. We ignore "optional" and "alternate" requirements // and only extract the "mandatory" and "informational" requirements with values if (m.contains("Requirement") ) { QString val = QString(); if ( m.value("Requirement").contains("mandatory", Qt::CaseInsensitive) || m.value("Requirement").contains("informational", Qt::CaseInsensitive) ) { if (m.contains("Value") ) val = m.value("Value"); } // if mandatory or informational // create our input_map entry input_map[i.key()] = val; } // if requirement ++i; } // while logfile.close(); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent.h000066400000000000000000000047411322401607200233260ustar00rootroot00000000000000/**************************** vpnagent.h ********************************** Code for the user agent registered on DBus. When the connman vpn daemon needs to communicate with the user it does so through this agent. Copyright (C) 2016-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef CONNMAN_VPN_AGENT # define CONNMAN_VPN_AGENT # include # include # include # include # include # include # include # include "./code/vpn_agent/vpnagent_dialog.h" # define VPN_AGENT_SERVICE "org.cmst" # define VPN_AGENT_INTERFACE "net.connman.vpn.Agent" # define VPN_AGENT_OBJECT "/org/cmst/VPNAgent" class ConnmanVPNAgent : public QObject, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", VPN_AGENT_INTERFACE) public: ConnmanVPNAgent(QObject*); inline void setLogInputRequest(bool b) {b_loginputrequest = b;} public Q_SLOTS: void Release(); void ReportError(QDBusObjectPath, QString); QVariantMap RequestInput(QDBusObjectPath, QMap); void Cancel(); private: VPNAgentDialog* uiDialog; QMap input_map; bool b_loginputrequest; void createInputMap(const QMap&); public: inline void setWhatsThisIcon(QIcon icon) {uiDialog->setWhatsThisIcon(icon);} }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent_adaptor.cpp000066400000000000000000000032131322401607200253640ustar00rootroot00000000000000/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.monkey_business_enterprises.vpnagent.xml -a vpnagent_adaptor * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #include "vpnagent_adaptor.h" #include #include #include #include #include #include #include /* * Implementation of adaptor class VPNAgentAdaptor */ VPNAgentAdaptor::VPNAgentAdaptor(QObject *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } VPNAgentAdaptor::~VPNAgentAdaptor() { // destructor } void VPNAgentAdaptor::Cancel() { // handle method call net.connman.vpn.Agent.Cancel QMetaObject::invokeMethod(parent(), "Cancel"); } void VPNAgentAdaptor::Release() { // handle method call net.connman.vpn.Agent.Release QMetaObject::invokeMethod(parent(), "Release"); } void VPNAgentAdaptor::ReportError(const QDBusObjectPath &in0, const QString &in1) { // handle method call net.connman.vpn.Agent.ReportError QMetaObject::invokeMethod(parent(), "ReportError", Q_ARG(QDBusObjectPath, in0), Q_ARG(QString, in1)); } QVariantMap VPNAgentAdaptor::RequestInput(const QDBusObjectPath &in0, const QVariantMap &in1) { // handle method call net.connman.vpn.Agent.RequestInput QVariantMap out0; QMetaObject::invokeMethod(parent(), "RequestInput", Q_RETURN_ARG(QVariantMap, out0), Q_ARG(QDBusObjectPath, in0), Q_ARG(QVariantMap, in1)); return out0; } cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent_adaptor.h000066400000000000000000000035571322401607200250440ustar00rootroot00000000000000/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.monkey_business_enterprises.vpnagent.xml -a vpnagent_adaptor * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #ifndef VPNAGENT_ADAPTOR_H #define VPNAGENT_ADAPTOR_H #include #include QT_BEGIN_NAMESPACE class QByteArray; template class QList; template class QMap; class QString; class QStringList; class QVariant; QT_END_NAMESPACE /* * Adaptor class for interface net.connman.vpn.Agent */ class VPNAgentAdaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "net.connman.vpn.Agent") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "") public: VPNAgentAdaptor(QObject *parent); virtual ~VPNAgentAdaptor(); public: // PROPERTIES public Q_SLOTS: // METHODS void Cancel(); void Release(); void ReportError(const QDBusObjectPath &in0, const QString &in1); QVariantMap RequestInput(const QDBusObjectPath &in0, const QVariantMap &in1); Q_SIGNALS: // SIGNALS }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent_dialog.cpp000066400000000000000000000144651322401607200252040ustar00rootroot00000000000000/****************** vpnagent_dialog.cpp *********************************** Code to manage the agent user interface. When the connman daemon needs to communicate with the user it does so through the agent. The agent has a QDialog as a class member, and agent_dialog.cpp manages that dialog. Copyright (C) 2016-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include # include # include # include "./vpnagent_dialog.h" # include "./code/trstring/tr_strings.h" VPNAgentDialog::VPNAgentDialog(QWidget* parent) : QDialog(parent) { // setup the user interface ui.setupUi(this); // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); } ///////////////////////////////////////////////// Public Functions ///////////////////////////////////////////// // // Function to extract the input data from the QLineEdit's in the dialog and put it into // a QMap. The QMap is sent to this function as a reference and is modified by the function. void VPNAgentDialog::createDict(QMap& r_map) { // Initialize the map r_map.clear(); // Create the dict entries if (! ui.lineEdit_username->text().isEmpty() ) r_map["Username"] = ui.lineEdit_username->text(); if (! ui.lineEdit_password->text().isEmpty() ) r_map["Password"] = ui.lineEdit_password->text(); if (! ui.lineEdit_host->text().isEmpty() ) r_map["Host"] = ui.lineEdit_host->text(); if (! ui.lineEdit_name->text().isEmpty() ) r_map["Name"] = ui.lineEdit_name->text(); if (! ui.lineEdit_cacert->text().isEmpty() ) r_map["OpenConnect.CaCert"] = ui.lineEdit_cacert->text(); if (! ui.lineEdit_cookie->text().isEmpty() ) r_map["OpenConnect.Cookie"] = ui.lineEdit_cookie->text(); if (! ui.lineEdit_servercert->text().isEmpty() ) r_map["OpenConnect.ServerCert"] = ui.lineEdit_servercert->text(); if (! ui.lineEdit_vpnhost->text().isEmpty() ) r_map["OpenConnect.VPNHost"] = ui.lineEdit_vpnhost->text(); if (ui.checkBox_savecredentials->isEnabled() ) r_map["SaveCredentials"] = ui.checkBox_savecredentials->isChecked(); return; } // // Function to show the dialog. // imap - is map of QStrings with input keys that connman has requested the user to fill in, and any values // that it has sent back for informational purposes. Return the accept state of the dialog int VPNAgentDialog::showPage(const QMap& imap) { // set all input widgets to disabled this->initialize(); // turn on the boxes that need to be filled in if (imap.contains("Username")) { ui.lineEdit_username->setEnabled(true); ui.lineEdit_username->setText(imap.value("Username") ); } if (imap.contains("Password")) { ui.lineEdit_password->setEnabled(true); ui.lineEdit_password->setText(imap.value("Password") ); } if (imap.contains("Host")) { ui.lineEdit_host->setEnabled(true); ui.lineEdit_host->setText(imap.value("Host") ); } if (imap.contains("Name")) { ui.lineEdit_name->setEnabled(true); ui.lineEdit_name->setText(imap.value("Name") ); } if (imap.contains("OpenConnect.CaCert")) { ui.lineEdit_cacert->setEnabled(true); ui.lineEdit_cacert->setText(imap.value("OpenConnect.CaCert") ); } if (imap.contains("OpenConnect.Cookie")) { ui.lineEdit_cookie->setEnabled(true); ui.lineEdit_cookie->setText(imap.value("OpenConnect.CaCert") ); } if (imap.contains("OpenConnect.ServerCert")) { ui.lineEdit_servercert->setEnabled(true); ui.lineEdit_servercert->setText(imap.value("OpenConnect.ServerCert") ); } if (imap.contains("OpenConnect.VPNHost")) { ui.lineEdit_vpnhost->setEnabled(true); ui.lineEdit_vpnhost->setText(imap.value("OpenConnect.VPNHost") ); } if (imap.contains("SaveCredentials")) { ui.checkBox_savecredentials->setEnabled(true); } return this->exec(); } ///////////////////////////////////////////////// Private Functions ///////////////////////////////////////////// // // Function to initialize the fields in the dialog box, everything is disabled to start void VPNAgentDialog::initialize() { // QList of widget pointers QList list; list.clear(); list.append(ui.lineEdit_username); list.append(ui.lineEdit_password); list.append(ui.lineEdit_host); list.append(ui.lineEdit_name); list.append(ui.lineEdit_cacert); list.append(ui.lineEdit_clientcert); list.append(ui.lineEdit_cookie); list.append(ui.lineEdit_servercert); list.append(ui.lineEdit_vpnhost); list.append(ui.checkBox_savecredentials); // set disabled true for all widgets in the list and clear contents for (int i = 0; i < list.size(); ++i) { list.at(i)->setDisabled(true); if (qobject_cast (list.at(i)) != NULL ) qobject_cast (list.at(i))->clear(); if (qobject_cast (list.at(i)) != NULL ) qobject_cast (list.at(i))->setChecked(false); } } ///////////////////////////////////////////////// Private Slots ///////////////////////////////////////////// // // Slot to enter whats this mode // Called when the ui.toolButton_whatsthis clicked() signal is emitted void VPNAgentDialog::showWhatsThis() { QWhatsThis::enterWhatsThisMode(); } cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent_dialog.h000066400000000000000000000041131322401607200246360ustar00rootroot00000000000000/**************************** vpnagent_dialog.h *************************** Code to manage the agent user interface. When the connman daemon needs to communicate with the user it does so through the agent. The agent has a QDialog as a class member, and agent_dialog.cpp manages that dialog. Copyright (C) 2016-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef VPN_AGENT_DIALOG_H # define VPN_AGENT_DIALOG_H # include # include # include # include "ui_vpnagent.h" // The class to control the agent UI based on a QDialog class VPNAgentDialog : public QDialog { Q_OBJECT public: // members VPNAgentDialog(QWidget*); // functions void createDict(QMap&); int showPage(const QMap&); private: // members Ui::VPNAgent ui; // functions void initialize(); private slots: void showWhatsThis(); public: inline void setWhatsThisIcon(QIcon icon) {ui.toolButton_whatsthis->setIcon(icon);} }; #endif cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent_interface.cpp000066400000000000000000000014101322401607200256670ustar00rootroot00000000000000/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.monkey_business_enterprises.vpnagent.xml -p vpnagent_interface * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #include "vpnagent_interface.h" /* * Implementation of interface class NetConnmanVpnAgentInterface */ NetConnmanVpnAgentInterface::NetConnmanVpnAgentInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent) : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent) { } NetConnmanVpnAgentInterface::~NetConnmanVpnAgentInterface() { } cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_agent/vpnagent_interface.h000066400000000000000000000041651322401607200253460ustar00rootroot00000000000000/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp org.monkey_business_enterprises.vpnagent.xml -p vpnagent_interface * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #ifndef VPNAGENT_INTERFACE_H #define VPNAGENT_INTERFACE_H #include #include #include #include #include #include #include #include /* * Proxy class for interface net.connman.vpn.Agent */ class NetConnmanVpnAgentInterface: public QDBusAbstractInterface { Q_OBJECT public: static inline const char *staticInterfaceName() { return "net.connman.vpn.Agent"; } public: NetConnmanVpnAgentInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); ~NetConnmanVpnAgentInterface(); public Q_SLOTS: // METHODS inline QDBusPendingReply<> Cancel() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Cancel"), argumentList); } inline QDBusPendingReply<> Release() { QList argumentList; return asyncCallWithArgumentList(QStringLiteral("Release"), argumentList); } inline QDBusPendingReply<> ReportError(const QDBusObjectPath &in0, const QString &in1) { QList argumentList; argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); return asyncCallWithArgumentList(QStringLiteral("ReportError"), argumentList); } inline QDBusPendingReply RequestInput(const QDBusObjectPath &in0, const QVariantMap &in1) { QList argumentList; argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); return asyncCallWithArgumentList(QStringLiteral("RequestInput"), argumentList); } Q_SIGNALS: // SIGNALS }; namespace net { namespace connman { namespace vpn { typedef ::NetConnmanVpnAgentInterface Agent; } } } #endif cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_prov_ed/000077500000000000000000000000001322401607200216655ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_prov_ed/ui/000077500000000000000000000000001322401607200223025ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_prov_ed/ui/vpn_prov_editor.ui000066400000000000000000000646071322401607200260750ustar00rootroot00000000000000 VPN_Prov 0 0 418 574 VPN Provisioning Editor true <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open false true <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save false Qt::Vertical <html><head/><body><p>Delete a config file.</p></body></html> &Delete false Qt::Horizontal 40 20 <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page false <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> Qt::Horizontal 40 20 <html><head/><body><p>Exit the dialog.</p></body></html> E&xit false [global] Name Name of the network. Description Description of the network. Provider PPTP Provider L2TP Provider VPNC Provider OpenVPN Provider OpenConnect PPTP.User PPTP User Name. PPTP.Password PPTP Password. PPPD.EchoFailure Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). PPPD.EchoInterval Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. PPPD.Debug Debug level. PPPD.RefuseEAP Deny EAP authorization? PPPD.RefusePAP Deny PAP authorization? PPPD.RefuseCHAP Deny CHAP authorization? PPPD.RefuseMSCHAP Deny MSCHAP authorization? PPPD.RefuseMSCHAP2 Deny MSCHAPV2 authorization? PPPD.NoBSDComp Disables BSD compression? PPPD.NoDeflate Disable deflate compression? PPPD.RequirMPPE Require the use of MPPE? PPPD.RequirMPPE40 Require the use of MPPE 40 bit? PPPD.RequirMPPE128 Require the use of MPPE 128 bit? PPPD.RequireMPPEStateful Allow MPPE to use stateful mode? PPPD.NoVJ Disable Van Jacobson compression? L2TP.User L2TP User Name. L2TP.Password L2TP Password. L2TP.BPS Maximum bandwidth to use. L2TP.TXBPS Maximum transmit bandwidth to use. L2TP.RXBPS Maximum receive bandwidth to use. L2TP.LengthBit Use length bit? L2TP.Challenge Use challenge authentication? L2TP.DefaultRoute Add a default route to the system routing tables, using the peer as the gatewa? L2TP.FlowBit Sequence numbers included in the communication? L2TP.TunnelRWS The window size of the control channel (number of unacknowledged packets, not bytes) L2TP.Exclusive Use only one control channel? L2TP.Redial Redial if disconnected? L2TP.RedialTImeout Wait n seconds before redial. L2TP.MaxRedials Give up redial tries after X attempts. L2TP.RequirePAP Require the remote peer to get authenticated via PAP? L2TP.RequireCHAP Require the remote peer to get authenticated via CHAP? L2TP.ReqAuth Require the remote peer to authenticate itself? L2TP.AccessControl Only accept connections from specified peer addresses? L2TP.AuthFile Authentication file location. L2TP.ListenAddr The IP address of the interface on which the daemon listens. L2TP.IPsecSaref Use IPsec Security Association tracking? L2TP.Port Specify which UDP port should be used. PPPD.NoPcomp Disable protocol compression? PPPD.UseAccomp Disable address/control compression? PPPD.ReqMPPE Require the use of MPPE? PPPD.ReqMPPE40 Require the use of MPPE 40 bit? PPPD.ReqMPPE128 Require the use of MPPE 128 bit? PPPD.ReqMPPEStateful Allow MPPE to use stateful mode? VPNC.IPSec.ID Your Group username. VPNC.IPSec.Secret Your group password (cleartext). VPNC.Xauth.Username Your username. VPNC.Xauth.Password Your password (cleartext). VPNC.IKE.Authmode IKE authentication mode. VPNC.IKE.DHGroup Name of the IKE DH Group. VPNC.PFS DH gropup to use for perfect forward secrecy. VPNC.Domain Domain name for authentication. VPNC.Vendor Vendor of your IPSec gateway. VPNC.LocalPort Local ISAKMP port to use. VPNC.CiscoPort Local UDP port number to use. VPNC.AppVersion Application version to report. VPNC.NATTMode NAT-Traversal method to employ. VPNC.DPDTimeout Send DPD packet after not receiving anything for n seconds VPNC.SingleDES Enable single DES encryption. VPNC.NoEncryption Enables using no encryption for data traffic. OpenVPN.CACert Certificate authority file. OpenVPN.Cert File containing peer's signed certificate. OpenVPN.Key File containing local peer's private key. OpenVPN.MTU MTU of the tunnel. OpenVPN.NSCertType Peer certificate type (server/client). OpenVPN.Proto Protocol type (udp/tcp-client/tcp-server). OpenVPN.Port TCP/UDP port number. OpenVPN.AuthUserPass File containing the user:password credentials. OpenVPN.AskPass Get certificate password from console or file? OpenVPN.AuthNoCache Don't cache --askpass or --auth-user-pass values? OpenVPN.Cipher Encrypt packets with cipher algorithm: OpenVPN.Auth Authenticate packets using algorithm: OpenVPN.CompLZO Use fast LZO compression (yes/no/adaptive). OpenVPN.RemoteCertTls Require peer certificate signed (client/server). OpenVPN.ConfigFile OpenVPN config file that can contain extra options. OpenConnect.ServerCert SHA1 certificate fingerprint of the final VPN server. OpenConnect.CACert File containing other certificate authorities. OpenConnect.ClientCert Client certificate file, if needed for web authentication. OpenConnect.MTU Request MTU from server to use as MTU of tunnel? OpenConnect.Cookie Read cookie from standard input? OpenConnect.VPNHost The final VPN server to use after completing web authentication. Import Configuration pushButton_exit clicked() VPN_Prov reject() 351 737 310 -23 cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_prov_ed/vpn_ed.cpp000066400000000000000000001137731322401607200236600ustar00rootroot00000000000000/****************** vpn_ed.cpp *********************************** Code to manage the VPN Provisioning Editor dialog. Copyright (C) 2016-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include # include # include # include # include # include # include # include # include "./vpn_ed.h" # include "../resource.h" # include "./code/trstring/tr_strings.h" # include "./code/shared/shared.h" // // This class is derived from the ProvisioningEditor class, There are a few improvements // mainly in more efficient packaging of the text data into each QAction. // // In this class: // QAction->text() contains the key for the Connman config file and display // text for the menus. NOTE: This text cannot be translated. // QAction->toolTip() contains the text displayed in dialogs // // I've also removed the template section since the new group_provider actions // ask for all mandatory fields for each type of connection. // // Constructor VPN_Editor::VPN_Editor(QWidget* parent) : QDialog(parent) { // Setup the user interface ui.setupUi(this); // Data members menubar = new QMenuBar(this); ui.verticalLayout01->setMenuBar(menubar); vpn_path = "/var/lib/connman-vpn"; statusbar = new QStatusBar(this); ui.verticalLayout01->addWidget(statusbar); statustimeout = 2000; i_sel = CMST::ProvEd_No_Selection; // Setup the buttongroup bg01 = new QButtonGroup(this); bg01->addButton(ui.pushButton_open); bg01->addButton(ui.pushButton_save); bg01->addButton(ui.pushButton_delete); // Add actions to actiongroups (signals from actiongroups are connected to slots) group_provider = new QActionGroup(this); group_provider->addAction(ui.actionProviderOpenConnect); group_provider->addAction(ui.actionProviderOpenVPN); group_provider->addAction(ui.actionProviderVPNC); group_provider->addAction(ui.actionProviderL2TP); group_provider->addAction(ui.actionProviderPPTP); group_freeform = new QActionGroup(this); group_freeform->addAction(ui.actionGlobal); group_freeform->addAction(ui.actionGlobalName); group_freeform->addAction(ui.actionGlobalDescription); group_freeform->addAction(ui.actionPPTP_User); group_freeform->addAction(ui.actionPPTP_Password); group_freeform->addAction(ui.actionPPPD_Debug); group_freeform->addAction(ui.actionL2TP_User); group_freeform->addAction(ui.actionL2TP_Password); group_freeform->addAction(ui.actionVPNC_IPSec_ID); group_freeform->addAction(ui.actionVPNC_IPSec_Secret); group_freeform->addAction(ui.actionVPNC_Xauth_Username); group_freeform->addAction(ui.actionVPNC_Xauth_Password); group_freeform->addAction(ui.actionVPNC_Domain); group_freeform->addAction(ui.actionVPNC_AppVersion); group_freeform->addAction(ui.actionOpenVPN_Cipher); group_freeform->addAction(ui.actionOpenVPN_Auth); group_combobox = new QActionGroup(this); group_combobox->addAction(ui.actionVPNC_IKE_Authmode); group_combobox->addAction(ui.actionVPNC_IKE_DHGroup); group_combobox->addAction(ui.actionVPNC_PFS); group_combobox->addAction(ui.actionVPNC_Vendor); group_combobox->addAction(ui.actionVPNC_NATTMode); group_combobox->addAction(ui.actionOpenVPN_NSCertType); group_combobox->addAction(ui.actionOpenVPN_Proto); group_combobox->addAction(ui.actionOpenVPN_CompLZO); group_combobox->addAction(ui.actionOpenVPN_RemoteCertTls); group_yes = new QActionGroup(this); group_yes->addAction(ui.actionPPPD_RefuseEAP); group_yes->addAction(ui.actionPPPD_RefusePAP); group_yes->addAction(ui.actionPPPD_RefuseCHAP); group_yes->addAction(ui.actionPPPD_RefuseMSCHAP); group_yes->addAction(ui.actionPPPD_RefuseMSCHAP2); group_yes->addAction(ui.actionPPPD_NoBSDComp); group_yes->addAction(ui.actionPPPD_NoDeflate); group_yes->addAction(ui.actionPPPD_RequirMPPE); group_yes->addAction(ui.actionPPPD_RequirMPPE40); group_yes->addAction(ui.actionPPPD_RequirMPPE128); group_yes->addAction(ui.actionPPPD_RequirMPPEStateful); group_yes->addAction(ui.actionPPPD_NoVJ); group_yes->addAction(ui.actionL2TP_LengthBit); group_yes->addAction(ui.actionL2TP_Challenge); group_yes->addAction(ui.actionL2TP_DefaultRoute); group_yes->addAction(ui.actionL2TP_FlowBit); group_yes->addAction(ui.actionL2TP_Exclusive); group_yes->addAction(ui.actionL2TP_Redial); group_yes->addAction(ui.actionL2TP_RequirePAP); group_yes->addAction(ui.actionL2TP_RequireCHAP); group_yes->addAction(ui.actionL2TP_ReqAuth); group_yes->addAction(ui.actionL2TP_AccessControl); group_yes->addAction(ui.actionL2TP_IPsecSaref); group_yes->addAction(ui.actionPPPD_NoPcomp); group_yes->addAction(ui.actionPPPD_UseAccomp); group_yes->addAction(ui.actionPPPD_ReqMPPE); group_yes->addAction(ui.actionPPPD_ReqMPPE40); group_yes->addAction(ui.actionPPPD_ReqMPPE128); group_yes->addAction(ui.actionPPPD_ReqMPPEStateful); group_yes->addAction(ui.actionVPNC_SingleDES); group_yes->addAction(ui.actionVPNC_NoEncryption); group_yes->addAction(ui.actionOpenVPN_AuthNoCache); group_yes->addAction(ui.actionOpenConnect_MTU); group_yes->addAction(ui.actionOpenConnect_Cookie); group_validated = new QActionGroup(this); group_validated->addAction(ui.actionPPPD_EchoFailure); group_validated->addAction(ui.actionPPPD_EchoInterval); group_validated->addAction(ui.actionL2TP_BPS); group_validated->addAction(ui.actionL2TP_TXBPS); group_validated->addAction(ui.actionL2TP_RXBPS); group_validated->addAction(ui.actionL2TP_TunnelRWS); group_validated->addAction(ui.actionL2TP_RedialTImeout); group_validated->addAction(ui.actionL2TP_MaxRedials); group_validated->addAction(ui.actionL2TP_ListenAddr); group_validated->addAction(ui.actionL2TP_Port); group_validated->addAction(ui.actionVPNC_LocalPort); group_validated->addAction(ui.actionVPNC_CiscoPort); group_validated->addAction(ui.actionVPNC_DPDTimeout); group_validated->addAction(ui.actionOpenVPN_MTU); group_validated->addAction(ui.actionOpenVPN_Port); group_validated->addAction(ui.actionOpenConnect_ServerCert); group_validated->addAction(ui.actionOpenConnect_VPNHost); group_selectfile = new QActionGroup(this); group_selectfile->addAction(ui.actionL2TP_AuthFile); group_selectfile->addAction(ui.actionOpenVPN_CACert); group_selectfile->addAction(ui.actionOpenVPN_Cert); group_selectfile->addAction(ui.actionOpenVPN_Key); group_selectfile->addAction(ui.actionOpenVPN_ConfigFile); group_selectfile->addAction(ui.actionOpenConnect_CACert); group_selectfile->addAction(ui.actionOpenConnect_ClientCert); group_selectfile->addAction(ui.actionOpenVPN_AuthUserPass); group_selectfile->addAction(ui.actionOpenVPN_AskPass); // Add Actions from UI to menu's menu_global = new QMenu(tr("Global"), this); menu_global->addAction(ui.actionGlobal); menu_global->addSeparator(); menu_global->addAction(ui.actionGlobalName); menu_global->addAction(ui.actionGlobalDescription); menu_OpenConnect = new QMenu(tr("OpenConnect"), this); menu_OpenConnect->addAction(ui.actionProviderOpenConnect); menu_OpenConnect->addSeparator(); menu_OpenConnect->addAction(ui.actionOpenConnect_ServerCert); menu_OpenConnect->addAction(ui.actionOpenConnect_CACert); menu_OpenConnect->addAction(ui.actionOpenConnect_ClientCert); menu_OpenConnect->addSeparator(); menu_OpenConnect->addAction(ui.actionOpenConnect_MTU); menu_OpenConnect->addAction(ui.actionOpenConnect_Cookie); menu_OpenConnect->addSeparator(); menu_OpenConnect->addAction(ui.actionOpenConnect_VPNHost); menu_OpenVPN = new QMenu(tr("OpenVPN"), this); menu_OpenVPN->addAction(ui.actionProviderOpenVPN); menu_OpenVPN->addAction(ui.actionOpenVPN_Import); menu_OpenVPN->addSeparator(); menu_OpenVPN->addAction(ui.actionOpenVPN_CACert); menu_OpenVPN->addAction(ui.actionOpenVPN_Cert); menu_OpenVPN->addAction(ui.actionOpenVPN_Key); menu_OpenVPN->addSeparator(); menu_OpenVPN->addAction(ui.actionOpenVPN_MTU); menu_OpenVPN->addAction(ui.actionOpenVPN_NSCertType); menu_OpenVPN->addAction(ui.actionOpenVPN_Proto); menu_OpenVPN->addAction(ui.actionOpenVPN_Port); menu_OpenVPN->addSeparator(); menu_OpenVPN->addAction(ui.actionOpenVPN_AuthUserPass); menu_OpenVPN->addAction(ui.actionOpenVPN_AskPass); menu_OpenVPN->addAction(ui.actionOpenVPN_AuthNoCache); menu_OpenVPN->addSeparator(); menu_OpenVPN->addAction(ui.actionOpenVPN_Cipher); menu_OpenVPN->addAction(ui.actionOpenVPN_Auth); menu_OpenVPN->addAction(ui.actionOpenVPN_CompLZO); menu_OpenVPN->addAction(ui.actionOpenVPN_RemoteCertTls); menu_OpenVPN->addSeparator(); menu_OpenVPN->addAction(ui.actionOpenVPN_ConfigFile); menu_VPNC = new QMenu(tr("VPNC"), this); menu_VPNC->addAction(ui.actionProviderVPNC); menu_VPNC->addSeparator(); menu_VPNC->addAction(ui.actionVPNC_IPSec_ID); menu_VPNC->addAction(ui.actionVPNC_IPSec_Secret); menu_VPNC->addAction(ui.actionVPNC_Xauth_Username); menu_VPNC->addAction(ui.actionVPNC_Xauth_Password); menu_VPNC->addSeparator(); menu_VPNC->addAction(ui.actionVPNC_IKE_Authmode); menu_VPNC->addAction(ui.actionVPNC_IKE_DHGroup); menu_VPNC->addAction(ui.actionVPNC_PFS); menu_VPNC->addSeparator(); menu_VPNC->addAction(ui.actionVPNC_Domain); menu_VPNC->addAction(ui.actionVPNC_Vendor); menu_VPNC->addAction(ui.actionVPNC_LocalPort); menu_VPNC->addAction(ui.actionVPNC_CiscoPort); menu_VPNC->addAction(ui.actionVPNC_AppVersion); menu_VPNC->addAction(ui.actionVPNC_NATTMode); menu_VPNC->addAction(ui.actionVPNC_DPDTimeout); menu_VPNC->addSeparator(); menu_VPNC->addAction(ui.actionVPNC_SingleDES); menu_VPNC->addAction(ui.actionVPNC_NoEncryption); menu_L2TP = new QMenu(tr("L2TP"), this); menu_L2TP->addAction(ui.actionProviderL2TP); menu_L2TP->addSeparator(); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionL2TP_User); menu_L2TP->addAction(ui.actionL2TP_Password); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionL2TP_BPS); menu_L2TP->addAction(ui.actionL2TP_TXBPS); menu_L2TP->addAction(ui.actionL2TP_RXBPS); menu_L2TP->addAction(ui.actionL2TP_LengthBit); menu_L2TP->addAction(ui.actionL2TP_Challenge); menu_L2TP->addAction(ui.actionL2TP_DefaultRoute); menu_L2TP->addAction(ui.actionL2TP_FlowBit); menu_L2TP->addAction(ui.actionL2TP_TunnelRWS); menu_L2TP->addAction(ui.actionL2TP_Exclusive); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionL2TP_Redial); menu_L2TP->addAction(ui.actionL2TP_RedialTImeout); menu_L2TP->addAction(ui.actionL2TP_MaxRedials); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionL2TP_RequirePAP); menu_L2TP->addAction(ui.actionL2TP_RequireCHAP); menu_L2TP->addAction(ui.actionL2TP_ReqAuth); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionL2TP_AccessControl); menu_L2TP->addAction(ui.actionL2TP_AuthFile); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionL2TP_ListenAddr); menu_L2TP->addAction(ui.actionL2TP_IPsecSaref); menu_L2TP->addAction(ui.actionL2TP_Port); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionPPPD_EchoFailure); menu_L2TP->addAction(ui.actionPPPD_EchoInterval); menu_L2TP->addAction(ui.actionPPPD_Debug); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionPPPD_RefuseEAP); menu_L2TP->addAction(ui.actionPPPD_RefusePAP); menu_L2TP->addAction(ui.actionPPPD_RefuseCHAP); menu_L2TP->addAction(ui.actionPPPD_RefuseMSCHAP); menu_L2TP->addAction(ui.actionPPPD_RefuseMSCHAP2); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionPPPD_NoBSDComp); menu_L2TP->addAction(ui.actionPPPD_NoPcomp); menu_L2TP->addAction(ui.actionPPPD_UseAccomp); menu_L2TP->addAction(ui.actionPPPD_NoDeflate); menu_L2TP->addAction(ui.actionPPPD_NoVJ); menu_L2TP->addSeparator(); menu_L2TP->addAction(ui.actionPPPD_ReqMPPE); menu_L2TP->addAction(ui.actionPPPD_ReqMPPE40); menu_L2TP->addAction(ui.actionPPPD_ReqMPPE128); menu_L2TP->addAction(ui.actionPPPD_ReqMPPEStateful); menu_PPTP = new QMenu(tr("PPTP"), this); menu_PPTP->addAction(ui.actionProviderPPTP); menu_PPTP->addSeparator(); menu_PPTP->addAction(ui.actionPPTP_User); menu_PPTP->addAction(ui.actionPPTP_Password); menu_PPTP->addSeparator(); menu_PPTP->addAction(ui.actionPPPD_EchoFailure); menu_PPTP->addAction(ui.actionPPPD_EchoInterval); menu_PPTP->addAction(ui.actionPPPD_Debug); menu_PPTP->addSeparator(); menu_PPTP->addAction(ui.actionPPPD_RefuseEAP); menu_PPTP->addAction(ui.actionPPPD_RefusePAP); menu_PPTP->addAction(ui.actionPPPD_RefuseCHAP); menu_PPTP->addAction(ui.actionPPPD_RefuseMSCHAP); menu_PPTP->addAction(ui.actionPPPD_RefuseMSCHAP2); menu_PPTP->addSeparator(); menu_PPTP->addAction(ui.actionPPPD_NoBSDComp); menu_PPTP->addAction(ui.actionPPPD_NoDeflate); menu_PPTP->addAction(ui.actionPPPD_NoVJ); menu_PPTP->addSeparator(); menu_PPTP->addAction(ui.actionPPPD_RequirMPPE); menu_PPTP->addAction(ui.actionPPPD_RequirMPPE40); menu_PPTP->addAction(ui.actionPPPD_RequirMPPE128); menu_PPTP->addAction(ui.actionPPPD_RequirMPPEStateful); // add menus to UI menubar->addMenu(menu_global); menubar->addMenu(menu_OpenConnect); menubar->addMenu(menu_OpenVPN); menubar->addMenu(menu_VPNC); menubar->addMenu(menu_L2TP); menubar->addMenu(menu_PPTP); // connect signals to slots connect(ui.toolButton_whatsthis, SIGNAL(clicked()), this, SLOT(showWhatsThis())); connect(ui.pushButton_resetpage, SIGNAL(clicked()), this, SLOT(resetPage())); connect(bg01, SIGNAL(buttonClicked(QAbstractButton*)), this, SLOT(requestFileList(QAbstractButton*))); connect(group_provider, SIGNAL(triggered(QAction*)), this, SLOT(createProvider(QAction*))); connect(group_freeform, SIGNAL(triggered(QAction*)), this, SLOT(inputFreeForm(QAction*))); connect(group_combobox, SIGNAL(triggered(QAction*)), this, SLOT(inputComboBox(QAction*))); connect(group_yes, SIGNAL(triggered(QAction*)), this, SLOT(inputYes(QAction*))); connect(group_validated, SIGNAL(triggered(QAction*)), this, SLOT(inputValidated(QAction*))); connect(group_selectfile, SIGNAL(triggered(QAction*)), this, SLOT(inputSelectFile(QAction*))); connect (ui.actionOpenVPN_Import, SIGNAL(triggered()), this, SLOT(importOpenVPN())); } /////////////////////////////////////////////// Private Slots ///////////////////////////////////////////// // // Slot called when a member of the QActionGroup group_selectfile void VPN_Editor::inputSelectFile(QAction* act) { // variables QString key = act->text(); QString filterstring = tr("All Files (*.*)"); QString filepath = QDir::homePath(); if (act == ui.actionL2TP_AuthFile) filepath = "/etc/l2tpd/l2tp-secrets"; if (act == ui.actionOpenVPN_AuthUserPass) filterstring = tr("User:Pass Files (*.up *.txt *.conf);;All Files (*.*)"); filepath = "/etc/openvpn"; if (act == ui.actionOpenVPN_CACert) filterstring = tr("CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*)"); if (act == ui.actionOpenVPN_Cert) filterstring = tr("Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*)"); if (act == ui.actionOpenVPN_Key) filterstring = tr("Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*)"); if (act == ui.actionOpenVPN_ConfigFile) filterstring = tr("Config Files (*.ovpn *.conf *.config);;All Files (*.*)"); filepath = "/etc/openvpn"; if (act == ui.actionOpenConnect_CACert) filterstring = tr("Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*)"); if (act == ui.actionOpenConnect_ClientCert) filterstring = tr("Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*)"); QString fname = QFileDialog::getOpenFileName(this, act->toolTip(), filepath, filterstring); // return if the file name returned is empty (cancel pressed in the dialog) if (fname.isEmpty() ) return; // put the path into the text edit key.append(" = %1\n"); ui.plainTextEdit_main->insertPlainText(key.arg(fname) ); return; } // // Slot called when a member of the QActionGroup group_validated is triggered void VPN_Editor::inputValidated(QAction* act, QString key) { // variables if (key.isEmpty() ) key = act->text(); // create the dialog shared::ValidatingDialog* vd = new shared::ValidatingDialog(this); // create some prompts and set validator if (key == "Host") {vd->setLabel(tr("VPN server IP address (ex: 1.2.3.4)")), vd->setValidator(CMST::ValDialog_46, false);} else vd->setLabel(act->toolTip() ); if (act == ui.actionPPPD_EchoFailure) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionPPPD_EchoInterval) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionL2TP_BPS) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionL2TP_TXBPS) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionL2TP_RXBPS) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionL2TP_TunnelRWS) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionL2TP_RedialTImeout) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionL2TP_MaxRedials) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionL2TP_ListenAddr) vd->setValidator(CMST::ValDialog_46, false); if (act == ui.actionVPNC_LocalPort) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionVPNC_CiscoPort) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionVPNC_DPDTimeout) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionOpenVPN_MTU) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionOpenVPN_Port) vd->setValidator(CMST::ValDialog_Int, false); if (act == ui.actionOpenConnect_ServerCert) vd->setValidator(CMST:: ValDialog_Hex, false); if (act == ui.actionOpenConnect_VPNHost) vd->setValidator(CMST::ValDialog_46, false); // if accepted put an entry in the textedit if (vd->exec() == QDialog::Accepted) { QString s = vd->getText(); key.append(" = %1\n"); // format strings with multiple entries if (vd->isPlural() ) { s.replace(',', ' '); s.replace(';', ' '); s = s.simplified(); s.replace(' ', ','); } ui.plainTextEdit_main->insertPlainText(key.arg(s) ); } // cleanup vd->deleteLater(); return; } // // Slot called when a member of the QActionGroup group_combobox is triggered void VPN_Editor::inputComboBox(QAction* act) { // variables QString key = act->text(); QString str = act->toolTip(); bool ok; QStringList sl; // create some prompts if (act == ui.actionVPNC_IKE_Authmode) sl << "psk" << "cert" << "hybrid"; if (act == ui.actionVPNC_IKE_DHGroup) sl << "dh1" << "dh2" << "dh5"; if (act == ui.actionVPNC_PFS) sl << "nopfs" << "dh1" << "dh2" << "dh5" << "server"; if (act == ui.actionVPNC_Vendor) sl << "cisco" << "netscreen"; if (act == ui.actionVPNC_NATTMode) sl << "natt" << "none" << "force-natt" << "cisco-udp"; if (act == ui.actionOpenVPN_NSCertType) sl << "client" << "server"; if (act == ui.actionOpenVPN_Proto) sl << "udp" << "tcp-client" << "tcp-server"; if (act == ui.actionOpenVPN_CompLZO) sl << "adaptive" << "yes" << "no"; if (act == ui.actionOpenVPN_RemoteCertTls) sl << "client" << "server"; QStringList sl_tr = TranslateStrings::cmtr_sl(sl); QString item = QInputDialog::getItem(this, tr("%1 - Item Input").arg(TranslateStrings::cmtr("cmst")), str, sl_tr, 0, false, &ok); key.append(" = %1\n"); if (ok) ui.plainTextEdit_main->insertPlainText(key.arg(sl.at(sl_tr.indexOf(QRegularExpression(item)))) ); return; } // // Slot called when a member of the QActionGroup group_yes is triggered // This slot is easy, every action sent is set to "yes" void VPN_Editor::inputYes(QAction* act) { if (QMessageBox::question (this, tr("%1 - Verify Option").arg(TranslateStrings::cmtr("cmst")), act->toolTip(), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) ui.plainTextEdit_main->insertPlainText(QString(act->text() + " = yes\n") ); return; } // // Slot called when a member of the QActionGroup group_freeform is triggered // Freeform strings may have spaces in them. For strings that cannot have spaces // use validated text and set b_multiple to false. void VPN_Editor::inputFreeForm(QAction* act, QString key) { // variables const QLineEdit::EchoMode echomode = QLineEdit::Normal; QString str; bool ok; if (key.isEmpty() ) key = act->text(); // create some prompts if (key == "Name") str = tr("User defined name for the VPN"); else if (key == "Domain") str = tr("Domain name for the VPN Service\n(example: corporate.com)"); else if (key == "Networks") str = tr("Networks behing the VPN link, if more than one separate by a comma.\n" "Format is network/netmask/gateway, and gateway can be omitted.\n" "Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16\n\n" "Networks = entry is optional and may be left blank."); else str = act->toolTip(); if (act == ui.actionGlobal) { key.append("\n"); ui.plainTextEdit_main->insertPlainText(key); } else { key.append(" = %1\n"); // get the string from the user QString val= ""; val = QInputDialog::getText(this, tr("%1 - Text Input").arg(TranslateStrings::cmtr("cmst")), str, echomode, "", &ok); if (ok) ui.plainTextEdit_main->insertPlainText(key.arg(val)); } // else return; } // // Slot to enter whats this mode // Called when the ui.toolButton_whatsthis clicked() signal is emitted void VPN_Editor::showWhatsThis() { QWhatsThis::enterWhatsThisMode(); } // // Function to clear the contents of the textedit void VPN_Editor::resetPage() { ui.plainTextEdit_main->document()->clear(); return; } // // Slot to request a file list from the roothelper. // Roothelper will emit an obtainedFileList signal when finished. This slot // is connected to the QButtonGroup bg01 void VPN_Editor::requestFileList(QAbstractButton* button) { // initialize the selection if (button == ui.pushButton_open) i_sel = CMST::ProvEd_File_Read; else if (button == ui.pushButton_save) i_sel = CMST::ProvEd_File_Write; else if (button == ui.pushButton_delete) i_sel = CMST::ProvEd_File_Delete; else i_sel = CMST::ProvEd_No_Selection; // request a list of config files from roothelper QList vlist; vlist << QVariant::fromValue(vpn_path); QDBusInterface* iface_rfl = new QDBusInterface("org.cmst.roothelper", "/", "org.cmst.roothelper", QDBusConnection::systemBus(), this); iface_rfl->callWithCallback(QLatin1String("getFileList"), vlist, this, SLOT(processFileList(const QStringList&)), SLOT(callbackErrorHandler(QDBusError))); iface_rfl->deleteLater(); return; } // // Slot to process the file list from /var/lib/connman. Connected to // the obtainedFileList signal in roothelper void VPN_Editor::processFileList(const QStringList& sl_conf) { // variables bool ok; QString filename = ""; QList vlist; QDBusInterface* iface_pfl = new QDBusInterface("org.cmst.roothelper", "/", "org.cmst.roothelper", QDBusConnection::systemBus(), this); // If we are trying to open and read the file if (i_sel & CMST::ProvEd_File_Read) { // display dialogs based on the length of the stringlist switch (sl_conf.size()) { case 0: QMessageBox::information(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Information"), tr("
    No configuration files were found.
    You may use this dialog to create one."), QMessageBox::Ok, QMessageBox::Ok); break; case 1: QMessageBox::information(this, tr("%1 - Information").arg(TranslateStrings::cmtr("cmst")), tr("
    Reading configuration file: %1").arg(sl_conf.at(0)), QMessageBox::Ok, QMessageBox::Ok); filename = sl_conf.at(0); break; default: QString item = QInputDialog::getItem(this, tr("%1 - Select File").arg(TranslateStrings::cmtr("cmst")), tr("Select a file to load."), sl_conf, 0, // current item 0 false, // non-editable &ok); if (ok) filename = item; break; } // switch // if we have a filename try to open the file if (! filename.isEmpty() ) { vlist.clear(); vlist << QVariant::fromValue(vpn_path); vlist << QVariant::fromValue(filename); iface_pfl->callWithCallback(QLatin1String("readFile"), vlist, this, SLOT(seedTextEdit(const QString&)), SLOT(callbackErrorHandler(QDBusError))); } // if there is a file name } // if i_sel is File_Read // If we are trying to delete the file else if (i_sel & CMST::ProvEd_File_Delete) { // // user will have to select the file to delete it switch (sl_conf.size()) { case 0: QMessageBox::information(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Information"), tr("
    No configuration files were found.
    Nothing will be deleted."), QMessageBox::Ok, QMessageBox::Ok); break; default: QString item = QInputDialog::getItem(this, tr("%1 - Select File").arg(TranslateStrings::cmtr("cmst")), tr("Select a file to be deleted."), sl_conf, 0, // current item 0 false, // non-editable &ok); if (ok) filename = item; break; } // switch // if we have a filename try to delete the file if (! filename.isEmpty() ) { vlist.clear(); vlist << QVariant::fromValue(vpn_path); vlist << QVariant::fromValue(filename); iface_pfl->callWithCallback(QLatin1String("deleteFile"), vlist, this, SLOT(deleteCompleted(bool)), SLOT(callbackErrorHandler(QDBusError))); } // if there is a file name } // if i_sel is File_Delete // If we are trying to save the file else if (i_sel & CMST::ProvEd_File_Write) { QString item = QInputDialog::getItem(this, tr("%1 - Select File").arg(TranslateStrings::cmtr("cmst")), tr("Enter a new file name or select
    an existing file to overwrite."), sl_conf, 0, // current item 0 true, // editable &ok); if (ok) { filename = item.simplified(); // multiple whitespace to one space filename = filename.replace(' ', '_'); // replace spaces with underscores } // if ok // if we have a filename try to save the file if (! filename.isEmpty() ) { vlist.clear(); vlist<< QVariant::fromValue(vpn_path); vlist << QVariant::fromValue(filename); vlist << QVariant::fromValue(ui.plainTextEdit_main->toPlainText() ); iface_pfl->callWithCallback(QLatin1String("saveFile"), vlist, this, SLOT(writeCompleted(qint64)), SLOT(callbackErrorHandler(QDBusError))); } // if there is a file name } // if i_sel is File_Save // cleanup i_sel = CMST::ProvEd_No_Selection; iface_pfl->deleteLater(); return; } // // Slot to seed the QTextEdit window with data read from file. Connected to // fileReadCompleted signal in root helper. void VPN_Editor::seedTextEdit(const QString& data) { // clear the text edit and seed it with the read data ui.plainTextEdit_main->document()->clear(); ui.plainTextEdit_main->setPlainText(data); // show a statusbar message statusbar->showMessage(tr("File read completed"), statustimeout); return; } // // Slot to show a statusbar message when a file delete is completed void VPN_Editor::deleteCompleted(bool success) { QString msg; if (success) msg = tr("File deleted"); else msg = tr("Error encountered deleting."); statusbar->showMessage(msg, statustimeout); return; } // // Slot to show a statusbar message when a file write is completed void VPN_Editor::writeCompleted(qint64 bytes) { // display a status bar message showing the results of the write QString msg; if (bytes < 0 ) msg = tr("File save failed."); else { if (bytes > 1024) msg = tr("%L1 KB written").arg(bytes / 1024); else msg = tr("%L1 Bytes written").arg(bytes); } statusbar -> showMessage(msg, statustimeout); return; } // // Slot to handle errors from callWithCallback functions void VPN_Editor::callbackErrorHandler(QDBusError err) { QMessageBox::critical(this, QString(TranslateStrings::cmtr("cmst")) + tr(" Critical"), QString(tr("DBus Error Name: %1

    String: %2

    Message: %3")).arg(err.name()).arg(err.errorString(err.type())).arg(TranslateStrings::cmtr(err.message()) ), QMessageBox::Ok, QMessageBox::Ok); return; } // Slot to prompt and create a new Provider section void VPN_Editor::createProvider(QAction* act) { // common mandatory fields if (act == ui.actionProviderOpenConnect) ui.plainTextEdit_main->insertPlainText("\n[provider_openconnect]\nType = OpenConnect\n"); else if (act == ui.actionProviderOpenVPN) ui.plainTextEdit_main->insertPlainText("\n[provider_openvpn]\nType = OpenVPN\n"); else if (act == ui.actionProviderVPNC) ui.plainTextEdit_main->insertPlainText("\n[provider_vpnc]\nType = VPNC\n"); else if (act == ui.actionProviderL2TP) ui.plainTextEdit_main->insertPlainText("\n[provider_l2tp]\nType = L2TP\n"); else if (act == ui.actionProviderPPTP) ui.plainTextEdit_main->insertPlainText("\n[provider_pptp]\nType = PPTP\n"); inputFreeForm(act, "Name"); inputValidated(act, "Host"); inputFreeForm(act, "Domain"); inputFreeForm(act, "Networks"); // individual provider mandatory fields if (act == ui.actionProviderVPNC) inputFreeForm(ui.actionVPNC_IPSec_ID, "VPNC.IPSec.ID"); if (act == ui.actionProviderOpenVPN) { inputSelectFile(ui.actionOpenVPN_CACert); inputSelectFile(ui.actionOpenVPN_Cert); inputSelectFile(ui.actionOpenVPN_Key); } return; } // // Slot to import an OpenVPN configuration file void VPN_Editor::importOpenVPN() { // Variables QString filterstring = tr("OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*)"); QString filepath = QDir::homePath(); QStringList taglist = (QStringList() << "ca" << "cert" << "key" << "tls-auth"); // To start things off we need some input from the user ui.plainTextEdit_main->insertPlainText("\n[provider_openvpn]\nType = OpenVPN\n"); inputFreeForm(ui.actionProviderOpenConnect, "Name"); inputValidated(ui.actionProviderOpenConnect, "Host"); inputFreeForm(ui.actionProviderOpenConnect, "Domain"); inputFreeForm(ui.actionProviderOpenConnect, "Networks"); QString fname = QFileDialog::getOpenFileName(this, tr("Select the configuration file to import"), filepath, filterstring); // Return if the file name returned is empty (cancel pressed in the dialog) if (fname.isEmpty() ) return; // Read the source file QFile sourcefile(fname); if (sourcefile.open(QIODevice::ReadOnly | QIODevice::Text)) { QString contents = QString(sourcefile.readAll()); sourcefile.close(); // Setup the data directories // APP defined in resource.h QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); QFileInfo fi(fname); // need to extract the baseName QDir target_dir = QDir(QString(env.value("XDG_DATA_HOME", QString(QDir::homePath()) + "/.local/share") + "/%1/openvpn/%2").arg(QString(APP).toLower()).arg(fi.baseName()) ); if (! target_dir.exists()) target_dir.mkpath(target_dir.absolutePath() ); // Extract all the certs and keys for (int i = 0; i < taglist.count(); ++i) { int snipfrom = contents.indexOf(QString("<%1>\n").arg(taglist.at(i)) ); int snipto = contents.indexOf(QString("").arg(taglist.at(i)), snipfrom + QString("<%1>\n").arg(taglist.at(i)).size()) + QString("").arg(taglist.at(i)).size(); if (snipfrom != snipto && snipfrom >= 0 && snipto >= 0) { QString substring = contents.mid(snipfrom, snipto-snipfrom); contents.remove(snipfrom, snipto-snipfrom); // Write the cert or key to a file QFile outfile(QString(target_dir.absolutePath() + "/%1%2") .arg(taglist.at(i) == "cert" || taglist.at(i) == "key" ? "client" : taglist.at(i) ) .arg(taglist.at(i) == "ca" || taglist.at(i) == "cert" ? ".crt" : ".key") ); if (outfile.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream outstream(&outfile); substring.remove(QString("").arg(taglist.at(i)) ); substring.remove(QString("<%1>\n").arg(taglist.at(i)) ); outstream << substring; outfile.close(); if (taglist.at(i) == "ca") ui.plainTextEdit_main->insertPlainText(QString(ui.actionOpenVPN_CACert->text() + " = " + outfile.fileName() + "\n") ); else if (taglist.at(i) == "cert") ui.plainTextEdit_main->insertPlainText(QString(ui.actionOpenVPN_Cert->text() + " = " + outfile.fileName() + "\n") ); else if (taglist.at(i) == "key") ui.plainTextEdit_main->insertPlainText(QString(ui.actionOpenVPN_Key->text() + " = " + outfile.fileName() + "\n") ); } // if outfile opened for writing else { QMessageBox::critical(this, QString("%1 - Critical").arg(TranslateStrings::cmtr("cmst")), tr("Unable to write %1 - Aborting the import").arg(outfile.fileName() ), QMessageBox::Ok, QMessageBox::Ok); return; } // else outfile failed to open } // if a tag was found } // for each tag // If auth-user-pass will be in the conf file ask to remove it if (contents.contains("auth-user-pass\n", Qt::CaseSensitive) ) { if (QMessageBox::question (this, tr("Keep --auth-user-pass"), tr( "The conf file will contain the auth-user-pass entry which will require " "prompts sent to stdout and a reply on stdin. This cannot be handled by " "Connman nor by CMST.

    If this entry is removed you will need to create a " "\"user:pass\" file in order to have Connman make the VPN connection. In the " "next step you will be asked if you want to create this file and you will prompted " "for the user name and password.

    Do you wish to remove this entry?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) contents.remove("auth-user-pass\n"); } // if contents contains auth-user-pass // If there is anything left write it to a conf file contents = contents.trimmed(); if (! contents.isEmpty()) { QFile outfile(QString(target_dir.absolutePath() + "/%1%2") .arg(fi.baseName()) .arg(".conf") ); if (outfile.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream outstream(&outfile); outstream << contents; outfile.close(); ui.plainTextEdit_main->insertPlainText(QString(ui.actionOpenVPN_ConfigFile->text() + " = " + outfile.fileName() + "\n") ); } // if outfile opened for writing else { QMessageBox::warning(this, QString("%1 - Warning").arg(TranslateStrings::cmtr("cmst")), tr("Unable to write conf file %1").arg(outfile.fileName() ), QMessageBox::Ok, QMessageBox::Ok); } // else outfile (conf) failed to open } // if contents not empty // Copy the original conf file for safekeeping if (target_dir.exists(fi.fileName()) ) target_dir.remove(fi.fileName()); sourcefile.copy(target_dir.absoluteFilePath(fi.fileName()) ); // Check to see if a user:pass file needs to be created. if (QMessageBox::question (this, tr("Create User:Password File"), tr("Do you wish to create a user:password file for this connection?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::Yes) { bool b_continue = false; QString pass; QString user = QInputDialog::getText(this, tr("User"), tr("Enter the user name for this connection."), QLineEdit::Normal, "", &b_continue); if (b_continue) { pass = QInputDialog::getText(this, tr("Password"), tr("Enter the password for this connection."), QLineEdit::Normal, "", &b_continue); } // if if (b_continue) { QFile outfile(QString(target_dir.absolutePath() + "/%1%2") .arg(fi.baseName()) .arg(".up") ); if (outfile.open(QIODevice::WriteOnly | QIODevice::Text)) { QTextStream outstream(&outfile); outstream << user << "\n" << pass << "\n"; outfile.close(); ui.plainTextEdit_main->insertPlainText(QString(ui.actionOpenVPN_AuthUserPass->text() + " = " + outfile.fileName() + "\n") ); } // if outfile (up) could be opened for writing else { QMessageBox::warning(this, QString("%1 - Warning").arg(TranslateStrings::cmtr("cmst")), tr("Unable to write user:password file %1").arg(outfile.fileName() ), QMessageBox::Ok, QMessageBox::Ok); } // else outfile (up) failed to open } // b_continue - we have user and pass } // messagebox yes - we wanted to create a user:pass file } // If sourcefile opened for reading else { QMessageBox::critical(this, QString("%1 - Critical").arg(TranslateStrings::cmtr("cmst")), tr("Unable to read %1 - Aborting the import").arg(sourcefile.fileName() ), QMessageBox::Ok, QMessageBox::Ok); return; } // else sourcefile failed to open // Print a done message QMessageBox::information(this, QString("%1 - Information").arg(TranslateStrings::cmtr("cmst")), tr("OpenVPN import is complete. The provisioning file may now be saved."), QMessageBox::Ok, QMessageBox::Ok); return; } cmst-cmst-2018.01.06/apps/cmstapp/code/vpn_prov_ed/vpn_ed.h000066400000000000000000000060421322401607200233130ustar00rootroot00000000000000/**************************** vpn_ed.h *************************** Code to manage the VPN Provisioning Editor dialog. Copyright (C) 2016-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef VPN_PROVISIONING_EDITOR_H # define VPN_PROVISIONING_EDITOR_H # include # include # include # include # include # include # include # include # include # include # include # include # include # include "ui_vpn_prov_editor.h" // The class to control the properties editor UI based on a QDialog class VPN_Editor : public QDialog { Q_OBJECT public: VPN_Editor(QWidget*); private: // members Ui::VPN_Prov ui; int i_sel; QMenuBar* menubar; QMenu* menu_global; QMenu* menu_OpenConnect; QMenu* menu_OpenVPN; QMenu* menu_VPNC; QMenu* menu_L2TP; QMenu* menu_PPTP; QActionGroup* group_provider; QActionGroup* group_freeform; QActionGroup* group_combobox; QActionGroup* group_yes; QActionGroup* group_validated; QActionGroup* group_selectfile; QActionGroup* group_template; QButtonGroup* bg01; QStatusBar* statusbar; int statustimeout; QString vpn_path; private slots: void inputSelectFile(QAction*); void inputValidated(QAction*, QString s = QString()); void inputComboBox(QAction*); void inputYes(QAction*); void inputFreeForm(QAction*, QString s = QString()); void showWhatsThis(); void resetPage(); void requestFileList(QAbstractButton*); void processFileList(const QStringList&); void seedTextEdit(const QString&); void deleteCompleted(bool); void writeCompleted(qint64); void callbackErrorHandler(QDBusError); void createProvider(QAction*); void importOpenVPN(); public: inline void setWhatsThisIcon(QIcon icon) {ui.toolButton_whatsthis->setIcon(icon);} }; #endif cmst-cmst-2018.01.06/apps/resource.h000077500000000000000000000075571322401607200170040ustar00rootroot00000000000000/**************************** resource.h ******************************* Header file that contains program #defines. It used to be that we kept all program update and version information in this single file. Now we've moved a lot of that to txt files inside the /text directory which are compiled in as a resource. This seems to result in a faster compile, but we now have manage information in two locations. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ #ifndef RESOURCE_H #define RESOURCE_H ///////////////////////////////// Program Values /////////////////////// // // Program Info (may be visible, but don't mark for tranalation) #define VERSION "2018.01.06-1" #define RELEASE_DATE "6 January 2018" #define COPYRIGHT_DATE "2013-2018" // Program Values: // QApplication (not user visible) // QSettings (visible in filesystem only) // System Logging (visible in system logs only) #define LONG_NAME "CMST - Connman System Tray" #define ORG "cmst" #define APP "cmst" #define LOG_NAME "CMST" // Program Values - Misc. (not user visible) #define SOCKET_NAME "cmst_single_app_socket" #define INTERNAL_THEME "CMST_Icon_Theme" #define IPT_REQ_LOG_PATH "/tmp/cmst" #define IPT_REQ_LOG_FILE "input_request.log" //////////////////////////// CMST Namespace///////////////////////////// // Used for enum's local to this program namespace CMST { enum { // errors No_Errors = 0x00, Err_No_DBus = (1 << 0), // Can't find DBus Err_Invalid_Con_Iface = (1 << 1), // Invalid interface Err_Properties = (1 << 2), // There was an error reading connman.Manager.GetProperties Err_Technologies = (1 << 3), // There was an error reading connman.Manager.GetTechnologies Err_Services = (1 << 4), // There was an error reading connman.Manager.GetServices Err_Invalid_VPN_Iface = (1 << 5), // Invalid interface // methods Manager_Properties = (1 << 1), // scan for properties Manager_Technologies = (1 << 2), // scan for technologies Manager_Services = (1 << 3), // scan for services Manager_All = (CMST::Manager_Properties | CMST::Manager_Technologies | CMST::Manager_Services), // provisioning editor ProvEd_No_Selection = 0x00, ProvEd_File_Read = (1 << 0), ProvEd_File_Delete = (1 << 1), ProvEd_File_Write = (1 << 2), // validating dialog validator input ValDialog_None = 0x00, ValDialog_IPv4 = 0x01, ValDialog_IPv6 = 0x02, ValDialog_MAC = 0x03, ValDialog_46 = 0x04, ValDialog_Hex = 0x05, ValDialog_Int = 0x06, ValDialog_Dom = 0x07, ValDialog_Wd = 0x08, ValDialog_min1ch = 0x09, ValDialog_min8ch = 0x0a, ValDialog_46d = 0x0b, }; // enum } // namespace CMST #endif cmst-cmst-2018.01.06/apps/rootapp/000077500000000000000000000000001322401607200164475ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/code/000077500000000000000000000000001322401607200173615ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/code/main.cpp000066400000000000000000000031141322401607200210100ustar00rootroot00000000000000/**************************** ***************************** main program for the roothelper application Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include "./roothelper/roothelper.h" //# include "../resource.h" int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); RootHelper roothelper; QTimer::singleShot(0, &roothelper, SLOT(startHelper())); return app.exec(); } cmst-cmst-2018.01.06/apps/rootapp/code/roothelper/000077500000000000000000000000001322401607200215445ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/code/roothelper/cpp2xml.sh000077500000000000000000000003111322401607200234630ustar00rootroot00000000000000#!/bin/bash # # script to convert the header file to cpp # # -M all public slots # -P all properties # -S all signals qdbuscpp2xml -M -P roothelper.h -o org.monkey_business_enterprises.roothelper.xml cmst-cmst-2018.01.06/apps/rootapp/code/roothelper/org.monkey_business_enterprises.roothelper.xml000066400000000000000000000017121322401607200330770ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/rootapp/code/roothelper/roothelper.cpp000066400000000000000000000125041322401607200244350ustar00rootroot00000000000000/**************************** roothelper.cpp *************************** Code for the root helper registered on DBus. When registered the CMST provisioning editor will communicate with object using signals. As the name implies roothelper is run as the root user, since we need to read and write to /var/lib/connman. This program is started by DBus and the configuration files necessary to make that happen are in the system dir. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # include # include # include # include # include # include "./roothelper.h" // header files generated by qmake from the xml file created by qdbuscpp2xml # include "roothelper_adaptor.h" # include "roothelper_interface.h" // constructor RootHelper::RootHelper(QObject* parent) : QObject(parent) { // Create RootHelperadaptor new RoothelperAdaptor(this); // Data members b_connected = false; return; } ///////////////////// Public Slots ///////////////////////////////////// // // Slot to start the event loop void RootHelper::startHelper() { // Try to register a service on the system bus if (! QDBusConnection::systemBus().registerService("org.cmst.roothelper")) { qDebug() << tr("Failed to register service org.cmst.roothelper - there may be another instance running."); QCoreApplication::instance()->exit(1); } // Try to register an object on the system bus if (! QDBusConnection::systemBus().registerObject("/", this)) { qDebug() << tr("Failed to register roothelper object on the system bus."); QCoreApplication::instance()->exit(2); } // if we made it this far we have a connection and are registered on the system bus. b_connected = true; return; } // // Slot to get a list of all files in /var/lib/conmann the were created // by CMST. These files will end in .cmst.config QStringList RootHelper::getFileList(const QString& path) { // make sure the path is allowed if (! pathAllowed(path) ) return QStringList(); // variables QDir dir = QDir(path); QStringList filters; filters << "*.cmst.config"; // get a list of all .cmst.config files and return it return dir.entryList(filters, QDir::Files, QDir::Name); } // // Slot to read a file from disk QString RootHelper::readFile(const QString& path, const QString& fn) { // make sure the path is allowed if (! pathAllowed(path) ) return QString(); // open the file for reading QFile infile(QString(path + "/%1.cmst.config").arg(sanitizeInput(fn)) ); if (! infile.open(QIODevice::ReadOnly | QIODevice::Text)) return QString(); // read the file into a QByteArray QByteArray ba = infile.readAll(); // cleanup and exit infile.close(); return QString(ba); } // // Slot to delete a disk file bool RootHelper::deleteFile(const QString& path, const QString& fn) { // make sure the path is allowed if (! pathAllowed(path) ) return false; // delete the file and emit a signal with the result return QFile::remove(QString(path + "/%1.cmst.config").arg(sanitizeInput(fn)) ); } // // Slot to write the file to disk qint64 RootHelper::saveFile(const QString& path, const QString& fn, const QString& data) { // make sure the path is allowed if (! pathAllowed(path) ) return -1; // open the file for writing QFile outfile(QString(path + "/%1.cmst.config").arg(sanitizeInput(fn)) ); if (! outfile.open(QIODevice::WriteOnly | QIODevice::Text)) return 0; // write the file and emit a signal when done qint64 bytes = outfile.write(data.toLatin1() ); // cleanup and exit outfile.close(); return bytes; } /////////////////////////////////////////////// Private Functions ////////////////////////////////////////// // // Function to take a file name, which may contain a path and extension, and return only the file name QString RootHelper::sanitizeInput(QString instr) { // return a null string if instr is empty if (instr.isEmpty() ) return QString(); // extract the name and return it QFileInfo fi(instr); return fi.baseName(); } // // Function to determine if the path is allowed bool RootHelper::pathAllowed(QString path) { if (path == "/var/lib/connman") return true; else if (path == "/var/lib/connman-vpn") return true; return false; } cmst-cmst-2018.01.06/apps/rootapp/code/roothelper/roothelper.h000066400000000000000000000045611322401607200241060ustar00rootroot00000000000000/**************************** roothelper.h ***************************** Code for the root helper registered on DBus. When registered the CMST provisioning editor will communicate with object using signals. As the name implies roothelper is run as the root user, since we need to read and write to /var/lib/connman. This program is started by DBus and the configuration files necessary to make that happen are in the system dir. Copyright (C) 2013-2018 by: Andrew J. Bibb License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ***********************************************************************/ # ifndef ROOTHELPER # define ROOTHELPER # include # include # include # include class RootHelper : public QObject, protected QDBusContext { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "org.cmst.roothelper") public: RootHelper(QObject* parent = 0); public slots: void startHelper(); QStringList getFileList(const QString&); QString readFile(const QString&, const QString&); bool deleteFile(const QString& , const QString&); qint64 saveFile(const QString&, const QString&, const QString&); inline bool isConnected() {return b_connected;} // may not actually use this private: // members bool b_connected; //functions QString sanitizeInput(QString); bool pathAllowed(QString); }; #endif cmst-cmst-2018.01.06/apps/rootapp/rootapp.pro000077500000000000000000000026601322401607200206640ustar00rootroot00000000000000# We need the qt libraries, we want compiler warnings on, and this is a release version of the program CONFIG += qt CONFIG += warn_on CONFIG += release CONFIG += nostrip # Widgets needed for QT5, QT += dbus # cmst variables include(../../cmst.pri) TEMPLATE = app TARGET = cmstroothelper target.path = $$CMST_LIB_PATH INSTALLS += target conf.path = /etc/dbus-1/system.d conf.files = ./system/distro/$$CMST_BUILD_DISTRO/org.cmst.roothelper.conf INSTALLS += conf service.path = /usr/share/dbus-1/system-services service.files = ./system/org.cmst.roothelper.service service.extra = echo "[D-BUS Service]" > ./system/org.cmst.roothelper.service; echo "Name=org.cmst.roothelper" >> ./system/org.cmst.roothelper.service; echo "Exec=$$CMST_LIB_PATH/cmstroothelper" >> ./system/org.cmst.roothelper.service; echo "User=root" >> ./system/org.cmst.roothelper.service INSTALLS += service # dbus DBUS_ADAPTORS += ./code/roothelper/org.monkey_business_enterprises.roothelper.xml DBUS_INTERFACES += ./code/roothelper/org.monkey_business_enterprises.roothelper.xml # header files HEADERS += ./code/roothelper/roothelper.h # sources SOURCES += ./code/main.cpp SOURCES += ./code/roothelper/roothelper.cpp ## Place all object files in their own directory and moc files in their own directory ## This is not necessary but keeps things cleaner. OBJECTS_DIR = ./object_files MOC_DIR = ./moc_files sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro cmst-cmst-2018.01.06/apps/rootapp/system/000077500000000000000000000000001322401607200177735ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/system/distro/000077500000000000000000000000001322401607200212775ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/system/distro/arch/000077500000000000000000000000001322401607200222145ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/system/distro/arch/org.cmst.roothelper.conf000066400000000000000000000011461322401607200270030ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/rootapp/system/distro/debian/000077500000000000000000000000001322401607200225215ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/system/distro/debian/org.cmst.roothelper.conf000066400000000000000000000011461322401607200273100ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/rootapp/system/distro/gentoo/000077500000000000000000000000001322401607200225725ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/system/distro/gentoo/org.cmst.roothelper.conf000066400000000000000000000011441322401607200273570ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/rootapp/system/distro/slackware/000077500000000000000000000000001322401607200232535ustar00rootroot00000000000000cmst-cmst-2018.01.06/apps/rootapp/system/distro/slackware/org.cmst.roothelper.conf000066400000000000000000000011461322401607200300420ustar00rootroot00000000000000 cmst-cmst-2018.01.06/apps/rootapp/system/notes.txt000066400000000000000000000003071322401607200216640ustar00rootroot00000000000000org.cmst.roothelper.conf goes into /etc/dbus-1/system.d/ org.cmst.roothelper.service goes into /usr/share/dbus-1/system-services/ The .service file is generated by rootapp.pro during "make install" cmst-cmst-2018.01.06/apps/rootapp/system/org.cmst.roothelper.service000066400000000000000000000001251322401607200252710ustar00rootroot00000000000000[D-BUS Service] Name=org.cmst.roothelper Exec=/usr/lib/cmst/cmstroothelper User=root cmst-cmst-2018.01.06/apps/rootapp/system/org.cmst.roothelper.service.example000066400000000000000000000001251322401607200267230ustar00rootroot00000000000000[D-BUS Service] Name=org.cmst.roothelper Exec=/usr/lib/cmst/cmstroothelper User=root cmst-cmst-2018.01.06/cmst.pri000066400000000000000000000005711322401607200155050ustar00rootroot00000000000000# define a build distro isEmpty( DISTRO ) { DISTRO = arch } CMST_BUILD_DISTRO = $$DISTRO # define a path for user libraries (the roothelper program) CMST_LIB_PATH = $$(USE_LIBPATH) isEmpty ( CMST_LIB_PATH ) { CMST_LIB_PATH = "/usr/lib/cmst" } # define a path for the man page CMST_DOC_PATH = $$(USE_MANPATH) isEmpty ( CMST_DOC_PATH ) { CMST_DOC_PATH = "/usr/share/man" } cmst-cmst-2018.01.06/cmst.pro000077500000000000000000000041271322401607200155170ustar00rootroot00000000000000# Need a make file to make other make files TEMPLATE = subdirs SUBDIRS = ./apps/cmstapp ./apps/rootapp # cmst build variables include(cmst.pri) # translations TRANSLATIONS += ./translations/cmst_en_US.ts TRANSLATIONS += ./translations/cmst_ru_RU.ts TRANSLATIONS += ./translations/cmst_zh_CN.ts TRANSLATIONS += ./translations/cmst_de_DE.ts TRANSLATIONS += ./translations/cmst_pl_PL.ts TRANSLATIONS += ./translations/cmst_it_IT.ts TRANSLATIONS += ./translations/cmst_es_ES.ts TRANSLATIONS += ./translations/cmst_es_CO.ts TRANSLATIONS += ./translations/cmst_fr_FR.ts # non-application files which need to be installed # # documentation (manpage) documentation.path = $$CMST_DOC_PATH/man1 documentation.files = ./misc/manpage/cmst.1.gz documentation.CONFIG = no_check_exist documentation.extra = gzip --force --keep ./misc/manpage/cmst.1 INSTALLS += documentation # application icons - exists(./images/application/cmst-icon.png) { LIST = 16 20 22 24 32 36 40 48 64 72 96 128 192 256 384 512 for(a, LIST) { icon$${a}.path = /usr/share/icons/hicolor/$${a}x$${a}/apps icon$${a}.files = ./images/application/$${a}x$${a}/cmst.png INSTALLS += icon$${a} } exists(./images/application/scalable/cmst.svg) { iconsvg.path = /usr/share/icons/hicolor/scalable/apps iconsvg.files = ./images/application/scalable/cmst.svg INSTALLS += iconsvg } } else { system(sed -i 's/Icon=cmst/Icon=preferences-system-network/g' "./misc/desktop/cmst.desktop") system(sed -i 's/Icon=cmst/Icon=preferences-system-network/g' "./misc/desktop/cmst-autostart.desktop") } # license license.path = /usr/share/licenses/cmst license.files = ./text/LICENSE INSTALLS += license # appdata appdata.path = /usr/share/metainfo appdata.files = ./misc/appdata/org.cmst.cmst.appdata.xml INSTALLS += appdata # desktop file desktop.path = /usr/share/applications desktop.files = ./misc/desktop/cmst.desktop !isEmpty(DESTDIR) { desktop.extra = gtk-update-icon-cache /usr/share/icons/hicolor } INSTALLS += desktop # autostart desktop file autostart.path = /usr/share/cmst/autostart autostart.files = ./misc/desktop/cmst-autostart.desktop INSTALLS += autostart cmst-cmst-2018.01.06/cmst.qrc000066400000000000000000000033771322401607200155070ustar00rootroot00000000000000 text/eap-peap.txt text/eap-tls.txt text/eap-ttls.txt text/changelog.txt text/icon_def.txt text/eduroam_long.txt text/eduroam_short.txt text/license.txt stylesheets/airplane.qss stylesheets/tabwidget.qss stylesheets/vpn_connecting.qss translations/cmst_de_DE.qm translations/cmst_it_IT.qm translations/cmst_pl_PL.qm translations/cmst_zh_CN.qm translations/cmst_ru_RU.qm translations/cmst_en_US.qm images/interface/radio.png images/interface/basic-plane.png images/raw_art/blank.png images/raw_art/network-vpn-acquiring.png images/raw_art/stock_lock.png images/interface/golfball_green.png images/interface/golfball_red.png images/raw_art/application-exit1.png images/raw_art/info2.png images/raw_art/network-idle.png images/raw_art/network-offline.png images/raw_art/network-transmit-receive.png images/raw_art/nm-signal-00.png images/raw_art/nm-signal-25.png images/raw_art/nm-signal-50.png images/raw_art/nm-signal-75.png images/raw_art/nm-signal-100.png images/overlay/overlay-warningnet9.png cmst-cmst-2018.01.06/images/000077500000000000000000000000001322401607200152655ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/000077500000000000000000000000001322401607200175705ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/128x128/000077500000000000000000000000001322401607200205255ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/128x128/cmst.png000066400000000000000000001573701322401607200222160ustar00rootroot00000000000000PNG  IHDRgAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cIDATxwUUOihBhrIA%#*`@11AA H9s9;ss;;y}YV[oUƿƿ! cjPsTeDt3' 0@؀p 7tJ pm`@Ysp bAmQRw?Dͳ/=oy1ëϾO:k1GMVvhÂgj~ |M7h^+/V&[aeޟ]H,nZV p~9h ]go(eKYzڟЖ{&{Sn_oVwcV VYi_!VFZYV3B]|Ğ߃7.7$tY_f7\Po`&(IѬ W{=oBgg \Sq~ChFgg~a[a+7[i-ybfe{5|`@7~+w|0wQ W_ fљe*@bvT*INOv!{<ߚT=7#beu8J~1~K}b/{7Zb-czSZ4L4mF|<ꦜyۻ9gQ ٯ_ 9BwNe<\GP|O|{a=w?p+?WMVlUgRnd$ n]M~1%$/H[:<Yr嬂Jy<$W7oaCB'@#῅EFG?ŋp{-wWƟ}{ *}>ςb-Fs|wX`9'TUg Cg__9̂wkOav@ϫck[=x=/_%N6bNmV Yx(ۢQ[[bbϿc_QZ A,!~=&^ .6;N_ /?ޟv $5}A[{lۦH{=߹ Bw:̶Y=<~j±!>If<~9e).ct'?~*-PHV8V@Q  14&w_:[ ~2}2H`(@cֺ1 C# h kܨ$O=~[WI*NfHgl8륌BQIǿ\?fz;1fd5J ϳ6~_l?ZiE}ftXo譱~ u5FZw!YOhh1>Uj6Hk6lqYclh@_rVU6TE[~W[q'7֍Zy~c}S 夙,+rШg7 w׸`>b_==o]idA6Ml';RUu$72Wf( ogr͵҂mߤ[0W pttrs˕TfmU86юl}%<)pvh35zm3&rPDY, F .@3 ]&X?"V!r6wؚt}]#/Q ѹ4G. (HwPt,p,ñg: sl`(ӸDi+}v勔@ d=aGˑ@n{{RTU"^/mÐS:)){Uj j 0a,覭|ҞO i]3O{d͖]'m\N89F+Q~6+S87ΨZ~@dw9O u+ƪ>0@cj❘IPoX.rmE+۝M Y;5c#Hmt-4h䌼 04CZ9\b:ۀ:Kս7>ia_~t2 ԥv7=o }ɄnOh[,i5 fa%c0@ ,I5%U@x޼nݢ?d u%VHZ"}争H?I"$\ `M`|Q(`f$0laC=?+Q<;u77+ $J?ʺ d" aJ7NGkU īđ?hhm6\ w'&՚z}P3/@z u, gO#?9dי G .~o.-c~ NKu [ jHҍf] Z؂b9Y^$F`]R, 8א'fDX |&%1͑^RV?6찊LFII@pR3M@Ma yu&9b@ p)+_=m9Dc0fZڶY<)uw F:yf4#jG@k>GG{z"~ i4zqg iz@=7p@9Cz@#Rl1zȚm  :|JA rW*0Ftu֘ mdH]Ť$ԥJ?H| t e41y zD%$7A ( N>0aM~N ~ѕE>vW:瑱=O,yݴYV` +D!o 0 ~m?Q~>yE~OıZ 0]W#_2nlۏ/ɡm2Ia|JqHh.W)  ׸ ѝ,/΀nz̐xtt 5z'4 @75ݭ?MT} _|cP[#eA'+u,Wl"ָE=fGr1!>*p9ԄWW¾o;nzT0|; ˈq%jH)$ZjZ9ޜg+fh`R33 2G}=MP =o~lpqc^ne0vw6NYyȼYJ`Ԝ k d:o`-:k0  Iiqlq=UPKYKx ͂=&ғPV{#CVwk;~xh_=@Q}OnLʿ߀wx.{yC3M$Аh:nu5-ܮN{p-X#{~9sWߵ=nE^aULT/aR*HSi߉+h7dԵF<-R% HR _qeKs ghљ uN& TH&SHձ.0]Kz7ہ핿 g2`Mg++XC=V{ &F-0gfD,OqUz^F^ T{1T`$@҉B@5 U$8»D9\`q| H k< ϝy~ 2{W 76C yL51g,_Y|հTfi`8uM9ieBh/du { +4-BЫ ,dfPsgq~μr-#~c~ =0neVf &eU_uo# GD?gLlC3mir,+!R&WwGz `8xW )}@GAY:lɴᱫ( dcG }I*{9<6$9'B H92ъ6k35R~R@:g -_/›ʶU^d;c1O%5{@9o17t jmàm L'׀s7:wY& f;q] p__o%pY|pW LqJo8[{Nwpi8\}p ǡpɪbvÊ>{&4O/W??Mv[>8Q`)j =ؔijp'Ο[tSr't`.L&Ghk2 7o]^i4څ?=ЗcCu^:\/- +~~v w[wmsλ[6O.w 8O;pϻ_9yuS) !^;ܒ,"!e0ݭ{z' |;3Ag(Kܲn }N_/' g3ɹn;=>2\||!PGц%b[F.C_6\Q+zm_0 vXoȿՒ`\kc ?O>E 0N_3zL&_s m8d-iШ[15ò[%sa(8 6M}à N,P $S K5 |(y/gŠw{`piU\J8' @KiFkG,o{@'{WDv$-@Ӑ@~@fZmu& h{x4Z_&xPp>y⠍G4N'˧մ$7Aw}4[0xg4RZ6xv4 7$M o*|nz'X $D)E? qʯzT>v>:pP.8/`4MGekLl GEpͿ}wWAwɉ(vv6̵w!Do5pzeh6\0@o^2u5C?[OB;Wm9?nae!`,[!'6\/ A0R@.akTjs‱Q[V ǿm5CڹkơvŽA> n}m|-]$AZUG&xnz?{@}ΣGIPGKkw P4D+jQ4=9 < ZG/`4}T@x\ZhzH?Auե5hѻAOhYZi8xMoJdBMh.pԻXðBGA9Q+Bx N'SG7B@rmc@%^VViDX{Ηf4~(QO[O^*@cjN+-H;w~ }/ݼ'AZINSz([ )elL_eⷺD wּ,|Q&2Ӓ N &4z6נ#>!LV))A_M0vY! Y2*EGZyxVFlJ;6_*qlt![oOW_Ah,W=to3E7 hN*i֠>$ }{ADqg@=qeD=&MAAP5Ffu/EA_> JύZ~>,&(rrY }t[ȧigB(mr¼wM1PV_]#Xi:uMؖWxw篊krnɋ/ܸEpkE0|D,H3N ڂUZdi6tq y*~׏r`AF Og.8`=x][oxU+fb^ n6@&L` Wn;u vRfs+44hE:Yx[Z|t6S2\ MIgpmٸۚ"!~Zה3&dޗQcfD@΂]7AF Em1\A#uC 6#xJYx)d|Fz>| :lv:6*b?D לE>|yGc‘c,1)i> $(dH:XN-G#V dotJ}^+?rY,z`OeM6T^#nSaog@zp|@N`@N%5hn aGw l^TX>7Au z &6Q3@k(zpdՠw҈A&n/ w7 ~ ^W t ; ;{|Q AyEQw1) @1J'Xw%98!z8Z Pt H -ȃC{djMlVXQۗACވd6 \[#ߴ|i}+م]jEK]6Αϝ9SdOgg&`Ls&[\ *2mmfLX~~$,uzפmUDlF|Ͽ|wׇNCTe{7eX= SyӾS& qؘzR?jne*5oT" 8EqH@4`ekI#VR=e'"@X0<-w 㳿T11;tuzYo@AXw y4[S h`o@$HM e0t9F؅-ϙ]$3H\}L%cI`#jPd>?  נu1= pX[`D0S@4eYAcX@u&PS7BS !4(bg 0bTLH e(8~=[/pۙ^>}3ĵ&  `'~6Bݎ977оwS^@LFUfMY-`4Q Ӻx@u89/pL O 80rMV? $繃PoaĽ1_VU1!=0t=7̴`0&#n5XLЯY; S\*M \u@*1`csfG Pts0>mp;XB @ 8%qu9hH 3t+FyuW0a0)쾒kuВUp 8(upyU2x :Hejq $$6rT] [ש"s2m__mowK`J~8J3~^v{8~ջT_,X t̖_}"o`PxU-oٍ3)p˰'v?bFdL[߬`Vf _?L+S @}$tT.i^riqYh[. O?-хMyBUA`ۋ󀲠{Әd|I*הhm" /ak@-n9|Hdn\Ӥ7)`?Wx@^'E$$/d+pLH 9҉ʑBa@I.*\ QSK"|1wݴ(X İON0s@sr,`9g@s{'dAp6 GPH*P*ӚlX_5AyγDւ[Um wz ( lz4\m3}#d#:5o3ɘ[i \6 }=Э޻"tmz" mp=+^w;l9iˡan $.c[67v?_xO |9"YЌ7_A3%nk&A6j] HOPM+PB~rû_ wazƴV$R^n;&(chOnbv3dmYT>驋,v(GR32pty$$rG2׀#V& JI:d;/, / P@4҈"G1.@( PF: (C2ŀ*diS6^@Э Ґ0y(*5 t' _Ii;,{BQ`8L! j']m;9_]N/Fx$ll9`E+3j- ñΚáԕ5 ddt.O }&5 J~[p*Iүץ (xͅ ^p+(qы8+w1;Ɍv?W\_w:@>d lB@2o 2@ҫ Z@kH6A Co˂n]Cˍ`vfbˋ* tʷ2 @ap\ p:iYe9~/mbX( x0@<+9 oY e6m`{փKÄ:0.$d*wH#"]HCmārOWPXuh/@Ҟ%  CYO!{>xWdot^(>Qپ@-_.Cng" jj`qˏ|_cBg(h^. f:D :~ 4l=Vi·"DȚ !O .'`e쮕};>6.bSѷ͊Z=n4cФUe[ʦ⍦R) 5]dGen*hS-@`YLfJw1 xd([x6>I(y$cV\ ] )y`;{ ;q߉1+xt mR䰍J,px\ 'ׁkԣ<ȏZaBc0\{/'݅CD+A>@ʓ~ t}Fq9Q^e+iޟJ%քgw0S]=sk![Ŵ( @֋ =S*-ne92WZ h))s@/pz2 WI8;x ~Vɗv+x%(<%(&_ZJ8wFLY{u,wQw7Z4vks;"@Γ] 8 \(~O.}@'4IM*  sX? R'7/-ֽ {%Ch;Bg6mjl ..Eô.>8oÚ`2Ks0S 1JO ,;. H *f7~ Ho`0v'lbIGt/ $ֺ1 0'*TL`Ą 47n۰`>l2UX%2.;æ%*oXea-tǰbگUiS0 )b^.][LL_ǏV q:_R'35D87a@MS:@3qtoa0ُ?pct@'G:Sc3r'{{V,438>g*(-J;L6X 0`YM==09UQS/U/X:vk 2Aj @wBzR ޕiGA{/2ӗ(PSz"ͨݠx 3;άѰǷ΃v+88JJ[hVРS2nϊW AMF c @盅%ajEbv䢠IoM@>Ї16`U 0yYL4d$M|ϟe@$/mv\1fav(Ye@f8L 90Ncj;@~=5ÜY ca,.,6L7=@eD)l70. ܓV_ڧ=_=!V>|t[ /$FYkeIDS9 **;s^k1ەlzs  9w.͎^|94)~_\>a%p}_tڐmfj+r`MkLJO_n859sw:k^+/ =>s3x7Ig:hgHy}z(K7<`/@]C h%ؑCΜc;6L{Vϫ G|,T8 պK>YʟBlZ R`:@ETXe%bԚvƄ0DfL`c^+1шcFjH 81Hu@G j J7k1<6iw31t~yR&.rM4DN۬Bie@b0J |"&n* c;a؁;'m{ N 7o:nޓq6(, >lIt|>aS ;< WT:o{2F|4q^KhHieGpշ/ TkY,ݜ33is%tQy:xcGOq7PypL x;t5PW4mjxK .w;sN~=hEM Hi$A34Io@G,2tBuɲ@qriE.YhÒ!\A5HY8kM" B k$N+uQNr@0F2Ӽ7'^'W< fxC..&_1& dਉKaMde䧼I2ĈZiֹ) ~f) 9#`-n8x !̠, K_5ua3} M N9 wpŔ><˖e!lY-`Zޅӭm4tgV}5W&C: :} V~mg\~3 A_X5إHS!pLo2gt6h=Eqoc藺W{qD#60l;2<>~as5aֆ[/ KI">z y6!]oR@!/H#xtLM,y!}i]2.F WaR^2)̂%!~fIa߃g] 62 $$3ypN H \ş,_;(FSPB#BͰg#AfaRPйam <'$- z&4B[ Iju.CoA`t@s;} 0pwr^J<@fL])Ն ɸ87]cw}N?g7\2=.Vԩt^CӄTBV7wwc!IR(S"lEGLWgOM kEWRF.މ=c[6"aOz@?Nj O3 =eH= o|aBoèkal:WU Gwtx5cg^ ok?=zk:dޛS;7HTRODWpNȽZhAs>B2^k 4mN4Ձ4N é )7m=2^ƀ|%? $)&{dHy9, (PVAaKK" ~nJ}Iqi,'\g[q}-} \q&xg6YW$-; Sndddp;ܟ*S&).AN)p˻2d_ r2NLg (^p9(A*K NI>YNsd|礂ZRTt;E@Rnk`lru*䂳sl(qO=}xMÏYУ]1cd[ZqIG o-j@spxpsˎ4Qx=g@ +𽕖q5Úe#y&x V&bG6V] QK}zN=ɇ6i2mMcr6,T.qSh9< Y?B˰ɂ=-aͶ=McEk zu0yp3H$h3IЗK _hB T4 P;-}@^29+@H@VI@< ,3 Y0, 1N^>IZn<lu:AJ8Ý>nm{np s s]3Fr 8YR$]|&&AZ~IQY[~bi}\΂ skXrR: ɔ@#^ԓ*dq"AsIu + 8AGN%NO\i B~qvBzٯչk>;Rf~ ?8`=7@2D$uuo亱dB!#`D"R&%Ҍ,,륱(: J0@_NO@MΨz٦ %^\;:D1/h rk/] z6d$(ǔR,( \/ t3h\3su1C+жy5ywh;Z毂Y_'8oξx,Gá>Q2I<4(MՆZ v4Y@:{Td kHe6.qH%R@$)T<ՀV&>Nqy_DJI !< c3HL[4$׹DGAbs[$ɉ=Rm RRN Hy[2˙3WeVHnj"LwGh)ŻIzL)d< R$DHՍZ $]be?p),@ `q΀L2 !r ]"0S AN vkN%`ۗ}cUqÛ݃&7e{$8H]r@1r8m sbv|*gFQUrv@ Dh?, ],(8/>/*A?I|0آm?5)b6]>0&[3X5zVK~9Nxi3=ȀǍ6B ``&UXM2A˚T%U.սT~2;?{bo8\3'.?v1{, 44X:hq2:06rFuaiUBqA>#4Q"@,B(OC]PZJg҆fi)>'Ԓ$yY+@ҜTyN{>թTߊ_~m#'uM`!n[({5TfMBDgBp 8s~@N~pe.'Ap l5%)%y=)RB:]i^NQ4pa˺mHU&{}rq@O ǝdgF7:-d> 4d+eɨC @m Ou Fr{ϣ!{aqn7y`c9\׉8^F\t~-ͦϻX# xe@a>DJWš`h%ndГ%w'&5 CF&OkaRfYRhcC/J̩x Ŗjds:UvBL89r&pz^sWU4.,qj.\{(b h+ݠ@S @[CqP֔`-tH4Tm`:&ؒmVcu \~.X=jzHdyQ7*Xׂ@o9&KIdHRd;Px'$r ()r`E7G4V+2S@]EE\q-؞S|g/[tV,rLBae& @Kl X9(ͦ#@I4LASwt/ϼvd {îFz9Ц[ @9۬_!#rvz4o536A0zRKд0+@BuaS]vZ&P)@zߢW7Yeo_@~i;jtfj:PFrP]Nyim@.i<´bƧSu= >3V9l-aBCE cw`ePv`1 T4|$ n  @Z?Z0q x FXDU{x m޻TRO?\6]$ jk2CLCqWՆO!X7sd|S2 9k9^͐w  ,rYY$)3\A*'vH5:) ArYW2cW2Bywo^VWKߗl}av aߓ,|fX`_t]0v]U-,'gT'Z8'k |f(~ICi'ۊ—l7lKKw@  = w:c^ȅdF۩Eέ6_7N^^h2Tk4rیYO@IvRm& ҸePUmQZ5,Ů@>[}:CkLbN 91i\xDsLXy@b:c I`*1,<Z @?(:Cǭ \}Lbo&o`0&52S4&)PAh9 nO( PxMP+LF"Xbl;qε)3t7z# s Ex@0pMG/ȭ{[ [:~v˧7>{^?zn?j66ZJ{~ksS_ 5/Z\e K1 1󲲘p*1˥Lmk\0]e1aJ@ Yy^ԅ&ǧC"O~_r^?Y(*mIP |r#v=2`>0\p0 sc}O 1\7vU k7Xp9-hC`#*SA+Z/hQ)!] CǗ. (D рBT5!>ejz 'Eb0BH.&׊G 7wzW^?({zn+&&Mei=LN{^{ /Dښs4=n @^}[Zy>ǡcv2|#0M`/^9zm7_]oMJu` @j 'ϊ>hSpS M-z2@fT'ɖn^ە52aUv6 ,0Ia{7)1 nl.c*$YkC0NrY.#E%ѯARQ>CQb I)*ao7(zb0A-5PW9LTML弝̾!fh5#~`]6M/ڵyj2= m%K&)j엛pW 7vvk - .a> :^u{~{jbX;5HyrsO` _r @Q 65d`;*iWqehPi^#}M ))ƪYH[Y % rFHYS_ dl#mWvrr[!Zaw 1s-&]@d̪5Є$!/qP@Ku< d|k-4{^*yēW0r1YacLe̸ A^4A,1z_LQ>@[DN[ڤD $ #v"&b|ԋ3@߀gAgb;1Ci¾nK])q=>IIǤ܆crmk5[jv M_[#1iLjYc0|;nsox`v8sgr X0%MfZV`Q-˻C3x벑M+5maS%̀pN| QiO$^6nDqѰ&EJCnՌ415@ vԴ&[jOLLΐ;>  ΝK8SA7+VZpPCFck @}x+Xi+|aۄMŀP(ځԠA?Y\Mg Ĕd3kL%@_`!w&T|OnǟŤƘq3*&}7$T`3 0LLL10ˇم1yC1Z<>?+G@Ls> &$b`wbCUl{]L֚mBe_[4\;cWA?8]ܥr }ĸHywy^ ^y"ʹ%fd- 1 ^ mػ$~{cw|Uh6Do>1rV˫"n gm&1;,Qy@K"Y[>Atr9kiRxI)b^tVڊٽ$<l )"@3YKaAQp4\׭7y?W'WF??af48_Ywi6dP)Qݬ>A ̦>biІ9P[!,G5IL- Iƺ(N%o\עim׽tHsк\Xe1.C,fGI91w1-0Z&,_ɨS;Eq[( htA7("eS "PT~7;wVZ`Ϸ}WJ\8| wμ@: cZ8%Ǹ-l=`[[1%+#:*P8s(knm~0 sn&e[ ;d+mş{!I1Idn w,-Ydܓ{Rv(x'2'Du2iWrwP(#ikIh*Ԗסe!PV HXxCi?Qy˟ @ηM4P~pЫpQS ȦwJu~ (eOwXq?D% &H fRV7>b@dJ=lB-u^ n Y4t Kʰ1Y sYl 0A6c=`1X~ H:&M׿,n2f6_uHa9ehI}dL Nn,UjaFŔʒF("RU\(W=ݳLMg?RN~m%)L 7g1,&GC0ȜX ;+M[%I;'%cW3 pAPv+XeͰԶI1<-,-}eY ?®k7~+t}|/ U,Q{J}wukkƍ9.SJ8`rE:Hg `-AqضQICygvuR S ">R2&?$t#8H瀱q1^)Q BLn[m ~ rg1>us2J,4LyL b_J' Ym]9LH(~"0yְ|cۊ5)%$K@9/]L oǥÃ%dze0 _]䛵fxAv`<`0.ܮ#~SԹsl$ߑ ޼,aP]T*枬ӈ ۝N)fvԀ>I2l/>/4ǽd"$W*vڞu:fX v >t sBΟ&~`[,ŵI'!DfJ P(]҇@ N?FK1Aߢ'EBy o hbt6nW Dv3ytx;cAg0;xhuLl^< I)sz iҊZ=$pЋ.<Ձh q .9 R8 :6Jq&_MyV 2h O>bR^6-ؒXjw;͝pjKG$p;3b:$I[bRĸ6T 52.jܑA׹A9aK"֖Y~1?͚b~ Kh8/9h=NH6dO.M>cm7cM -l[1k\$  }0p &VF"m) @ ӗ@f@1pnHY-;>=9`!*IWs8A?d5:/j73;)+lI'*Ab@a >E0PK'qtpEz>Xc=]~^fzAk{z}ʯ'=A?c&b}Tf|,t><(i p9K qg%H?YptHmp&;o8Gws@XFo;#>Uz |:8d3+ GpݵVUg#%g>/O39ƃFv8 n_pk;@A@ }&K?5&T~T0?ˠrΦޒOijC٥jOLAR1`)["4aAu^%., u. xbɏ-~,p?\v$$8AԵ)?F{>|3F nn1`8[ւ1]D|7gzz>oGKn\Ka! g5W.b@a0ḋ|u2bGF, , 4Y\Pы9ϑ !κ_kvb# ̅|Ӣ[geܜg p 5l=wQ5I{4sI P ADU࣐iF=\&}M x 1d/HLХ% ?W RD,$)@!nDR @1JēR_NG RLI HiD2A$[| CIb\dId9ormd5U~.?\Er %TA(pFHI.QI$-HԗBrʀl'drAVJ+'.WF@zH$"7)$`b& xt s߽Tb 2;=]i  Wvpzk-hs8IH:,<)꾺WR{lZ^ NK%QN<pQ4n̖w&oU1xYa( /evm:.|tLq^PQ PkMܜM;Q@OBݖ*T|Y0 8k>/r{wHX)'㿺r{Bvҥ0$ԑ`IVYS"ǜ@5'qΝN~jN+W-JI 񎩄sײif}N(,86H3ve|G9'` :@39kGɒk ׌ By k 筂7 NwUp;=}Rc!plqۯذ*Y{!uyxVWhV؄eVpp:;L_wpF N,ǽ4gjJmKZ h}7*\7wC?3_4+!+T1&@NQ]YyNJ4e>(bwdw[d+Vm.EE pd `ҁ lϼ TlaDL0V&H! T!S|`@ 2RpRRĀDS)#A9)*(K.HRhleR (G9*cj@ub"s@]JPZH'`~%8 Җ:29$ L}\RݩRGRe$DHTufN '$H.{5R!{^m<Ԧv1 [%1n~Ѧr\<ƞˆsmƥ2@[:/owfMxƐ3--포wWUx9P)#@ nUjL66O'm w}P{cY 0cM_u:+c.]75*z& D U<t1^K)oWiCj/%s6Hi'^z̊KTT$9SdH=?I Lg8T p5 U~$(_GN3iCC {qP q41٤M{NrLfb` a2gq[/r+4`u~%/l txҤ]H%, d]Ne tV 4\*L7 򸼧<(>& _s z@3 hjqԣ Fgj71Yx\RH'ReTD,ŜA#e9rs_?$Fv;ox39aH'!lLx6GZm-#u,ńYn}Kꉲ-uۚ{74i01# vv>@4twǥ{A:Kb\N5Ʉu;#P4͝ /༳ @^6`B:LadGy1l#.@՛Li,u5M Cww#-"H"Ht" "*))CwNϬqxv9߹_/_kfbf+>LSc@NyUGnu73Z_\3KlYĚזLEE,?%6~N[d(\8s Y(yRSA:j+(L:fդEqC J55o!P8onq8jҘsX8vYdrJ;GI4?)͇=0MN/i ,50gtĘ,<3˔|Ұ( &%D҄@&r`A* 7%MU0)%-Rf)3!&t1chTg9 6_n*`0?s8G5 y)f2Ife)pHu)EA^8'"2 -d98 eHaI(o4Tw:G sg3ө u|iϓ iTO)BcЎ5H5J;QYO'}npgrֽբHU'JFۦm|ӗEA-HaSSwh; !3unȷhuᒢ^|@r/&b`g_$ `~DZ`lr;[9Rʿ鋉P-<)|sԕ{+*l# |dnL1HFU)fvIC(d =X{@Wbd2R [6MjX |9l3zpV(3#bI J:$]_H&kv-nA݊}w-Xj.8;PLj|#` MQYLw(ɦ#:܉h;hct}o5HJf/R!xpvS& 9% $%8;FL@vj ̂6]5mSw&o>QmlW|ͺ8YS;{~qfL@}u[ 急'ߐ']%LHK-Jj@mTC>1Ы{P0o''CNNBwlߝ8 @~rAa'U0G-Q>.[']NLA/0> H8/`FaWowR0 ɽKrvDl<~7x?P"9Ņf όڑM<0]ᥧ+bnbn L& CE xܚ7HJl 4Z T1h ιPq6tG! gC$eP~#\꣺)`Y >h<<69Sz+@wk9 o}E½/ ucX*Ī\g:[T}ƌ%3|lMwqO> Hj5<~ \ Ƿ+Ja^Wo7DIELF@1cAv;v!{`ư]6I:xA־c~0Vt0-IʘpvƐp~ZSuCϜWy}R0\m%;/*% 3m!xYZB,qhhWpl6@y=ȿx /9(40n!Zbԕ^F`Y:?q$pyMs qz}nq,1fV3b?LFu0wPJ{ܳ9-?x0 PK m7X`n@٩~yAOG~fC( Pߔ"*6 %jA Ɂ6sW^-d+ޝ@HqT=py$ דbur0۬1ˏlǓ.OKK))>{Ө04#]}F͊&N딠k)HSr@1+Jn%#~~oE즜/s`)I6ȷ0V{RQLS 3XisVz#7Y` 0X*oi|}VVo"o!󌹳Y vTH*z`'}AkEEǏesZc(4$r;yKNEk9LY{ZԱKoxS }]4s@<\a8B٩fQ%F~\^ݧ`f7r 0dCS?n^W9 s J=ݣ`9sӖQC0Xz0eQZhn.`ڂL/;/` 2a}w| 2U4; :.yZ~ DZ~AA(/~ ʘk+qP . 4aܑiE,cW,4[«iLw0ޛ"}Z~64+G'AB1+4| d  qS[<~Tc&!7VR)?+:N 0QVCZU74,?˸*@mܳn4DUt3Yw iym)ފHKZ/`p8,7~|?c:"jR|bI?]`&۸ pXcs :] K8ә+ou^DeNJ?ݜE@KWSv9F to kد|o1joʘ*[RQS=o'4hzw>JbLтW7+I])@%DWTeu)JZ6-'/k.j:{W5Ol}2 *fMLئ`^ͳ$+]]qIDAT!^;ITcf}sEk1UhZ8Wͯdr4V*?kQu-TJӽ<&FVn AL G!*RFd0d3`t$;T+Td$H d7LOSʱ׍.>|->ׂWN֮ΏB\s}fVצ?ߒ 3\yƸEuC7P՞Y:TVQWZ`ʹ48f[mwlpKTtoޫ eEKO?k,6f6*Cx'#N<6B>-Z3gF ouy;4} muDeuFAKtlCJzL$A| , L 31Trlpd-s O@PA qH &H Td2EЌ_ثgV}yWPi c~qOy?Z N䠐mݷ%$oBLN/C6s )S4Rbx7j{uIC&I´SUH< "&-2B'/m_ OX|-n0/Z3[;d3Ŗ;0Np}gЊpna[ >YHǡ8о޸+mʪP%ǃJeT9T3-o(EVH?:(`rH>2[n K~}Y 6P+[*v R oT9Ť/Ja(3D) ;Haǖg'\^S94XP{ Ł(}i@R(t^CqA^| `rZp\f`tGtO RI @ BA~=yE :25hWSЎ L;>VFqv}?geļ@yj> K׉>-Z i180$V s0;ok;d$YNsy? ^ c} >qU sT#Q guwJ ,Ago ^Ιpދ! u#0TM9Kײ^>vL:B48zW}I'zY@ ;6Zfmf3jPM\Ѩnw洍V麷/Cu7<9{߸ Sp +us_IxrYHS;h U5$)/̈GއW?m~_ D0ƘSFA>^ʅU,,[je] +/9)<1Rv=rB&5`? )Je%|їJ`p(xtCwE7AiI:/ syZ\a WZ"H5p:"Y pmmwVíNj?xxE闏ýOg?]G]zQj@\ b>:'_9Q*o_R$T(4r'@+LAtbV7=*Ö R0/!s oD{ by3g4i*_KE})hNd)d-N!Լ<剒J9B۪i)"L{dUn ph@Y)dNKf<4:yv+\,~Mtxu0h3ek`J )-.j2J3@ViC8pBk:5< ;lu:$eUp88P\@U0Z9 &=jef|@Lf LTl:/ ` @Q QKg4jBcfWR o /}U9 *$vDSgoL !wN_fp xh`WP1(<[9z1Pٝai m|gsZ]Vj)3>{;tZ_pk 휫~ނAR} ,JpRCw1l'dNhVk1`D縭AMf?5P)o(jS踰A5: \` Jddwb. yݰFXt2%井%&[m{7P`> _e;k!eIƗN uTStFKLf`4`"٤@ /P˰kh9::ŽOp'7‘ǝ ;]z2z;߃4t 8Ytv3ȹ||o9wes@n:E3'H rɩ7΋ võwBnwp:䖳ꡎ>3,voU,jilulmܠ5#6SDHs;p8'@qEN%9 &FnN)Y'Opjg:6P IƔC!qWRYM5m; r JiWČP-&t…ۉ/+'|`&m+} 8Sb9VRT;ddm4Mȑq#S^,4g/l2i^(`j -aОPϕ\z@|Lq 2KNKq}bͲ8xѵLr^\[nʽlM}c*X/ʽK/"~eЕa%H^PRst5~JvIjTJ*\hTV=x I;SpNC`sO,?x9u|ԒfR |d N39'Y%$DsGy$NR 49'% .7@zJ+qWy8`r#ow瞾ONo*@[p/Eqs쵱Fgtt?# j. 'pgSAιS]r\e\L_dM 0}dbٟۿ |;$nTxIGXϙdMf,uMe'W- qs}nJw >tȒqM+4x /*ԧ`Y.Bݽ6b툙sm!\|oׁN/BSDŽLg6r6L?##}4C?Ffig#C@%̡gh2ڶ -$3d[8~2 Rme?9Nh\"ӄ\5x_@S˗cŠ9` M+e8@:,)eU\"Pɷ@ I~))WJ:a$fN\ ODFBu[.v| |nՍbO0Hܴ * l'sp&ł/YTf Ls( g$Bgl/Ď;v,|9<>4CW'dp[-0uE$^l3vl9׍oƻ ݭ|oyw0.Q"$c [=3]5*=4,^7S7$5HvRN &9r]nr*% ?ԕЖ L %| Z@HɋU))9cFw}|I%#[@G"9k{AAkh6[%ΰ,onl ᓤAaܩyPC{gAQ9 :9A31CbM(L+s#LOHz/+41=5ڇ]vhRG3?aEH#[48oj晩  ?1eg }j5-{b-0W}>3ýo&FYV#N=M*SBdB@6$p̤0K& Lf˱7`l76*U\MDI%TS3-s-Iz@ڸWf8:ʀ3=/vA5_*8 0֛ WeRjҦ)kFʃ DN@7Dr( af5@ɽ?eLX:}ۊxvsd 0#)̓ Q5{ u!U@& / LIlrf;pE  ! 5 !!dM!`rh*3*:-(SUx0*Wp?jI>|Ѿ%sDf[[1~M0dg܁ *Y5AO@'I"`ȵxd+G4ŵ^!0*Nasv@){ny,n%6LD%s̠x'5٣c1)/ hR&q-(ݺ ɦ 02&o}#`e0g*4o&Lg")&V)oҸuA֘;r!"˥6gO5IC4`anO@E(űhĂ*t +K'uq} | ;ځ5h9t(gc.;5 3>ъ ZXi1@L p <r`'q?҈0VaKo2ÀMm|&,)$7p; cRF"Nlkpyπ3#Ł[O8 f!)Y0yXd6/2q P8|F@9c| '-Y5.%14 ؠ}Rc߷>:U1Dkz|=!8<"w 2kvO7 .aڸz(b3!F =ɶԦ=X |Q 'Ga!Ӊ?z^6, ^sD{5x+d/ѱ'U}U Td G/ܙz$=h p-2d)  pux^Ő0HW*[øj1(ě UN dogA.pV{K`)1Y f=(f=wF/@顣ށ^hq-P<3Л9j)f9,?H[[)U$}l!YKajo GOs8ŒD7kZil~?3m VH8⤎b]NF9g2=cyZ&nc7龸ᯯKY>g:U (?NftVqU7ਵ;ФqzS~6I\w?]p8#Uq{?AQ]@6J,7]CFmy~a柳"x4MLr 8=. >k5(6_v9:.,'-P{#B626ʕ}_{V pƛ/4E^R)4Xd+8c3@vnn@nRK;G&{ %0(D[4dI)CDte yG-f=@+7.Q{{N'-ls \xl2(_(P6Kd|E rgq1N9psQDOu)0n/c_jX[442/b%S/YL|ekeʙʃO-7څwdW)@ypTkJldtXƯO1[4);<`[!fQ/׽ ,oV?% y6heq^3Q"`dTܖnngP*rhOHVR(8;=U^@|]`\?}\@qɺ !L7:쬗;,FQjm%ĉTPfp5/oN <NAffϞv[S,{^bZ[AΩZo,<Ъn@ 4@)s T$H& TK- <5v}~H7(#9=$DP JMR7ەIu3ZHñTJmnS0͂ s`6Qx0-P[h:|HRL% +@ PZ۱ɜqg2| _<\IaP($xkCsP)E|U=v)@m^mL!}m/ ˞n޻9$F%MT/f> <#2`2I8]7-}J '*]^Z!!--O@mp¡,( !T9@}xLQOPH'%Dwbh/HkŖ_uւ9ɔ^ p_PF346Xi9 q0d|Dzۡծ!)7We]rO{7S<)aՀk6\9fvv~_vTT}P!5h{ʀU0W:$EnbV&ѹ\߫0L){ cg~x26z3Q{oL[2R^H8w$  7O݋7봃v^kY{aoK{>:>0Dψ y:-.`?߼ߕݧW4Ŀ5ƘYb>7X R9 #_}3ɢWyCN"8# %\q WYR\g [ _jǐ?0`iÀK@/`ݔnzllwhdN{D۲$:7tw,MK=p~3|g_gޑOgȇZɟhqa.ӞnsSX36oxA` )Ifx['5ʴ !j&EU{zw'[P/*pbH`[Y,,Ci<_ O{ؾ$NO%nS;/NCM緜J[+=oњ=vڀ![-;xO?N=T(z r7LM ^H^/[ǥF()5tI9|"u$Tvbfo<Ŗ/.o\!<$V]U'XA͘yIHVa)v<ђH sNf~8-`$M7+gx?b(];KMQ'^{C57 TJL!+0y` L.xbVa_ZW Rޜs?Ft/э_̦axZ`r:§]kךK‡f_EmP`Ga/Ƕ/u &>%A> f }HI== ]LH O(+aEfx_,֓ZyuD0'm x}l' z(C|0gAܽx9W*~P甝7v'I3B5ZoGFohE)YrYg2|%C'w>QrQ;^!?ciqC#gOҼqg̘R8}RL#_pigUbisHpCϭS[PF>kQ; h5p>M YiH\EӼՆ U-66c[N9P˥RRH/ t9RGȹNW C۸{nC xؑ#XjmLOZ]34Jum):y٫'eON,\biUڕz z%n;ܘon~p48z *`_T8@gJ %4z'jOjd7;mX/L#Bmd-0vL+^ cf {`DxfȱQHtl1O:Y Tu'pzBAL11^dlpDwo9]_0po~,Sҫfj֊#;N_x-}*(w(&XlQ'? ̮Pz<@fiuSP /9 MwstCJP}(*H  /H pRZE[1Ԁ.g[ hCo׿ gu/?XHl[[3\^;\w̠ \r*Ts` $x ƞ@EIdyY`+A`x)~;o/P9$+_31m~"=/ݷM~y@>pZePfD%2[Vi=@+}iHB`7{_ ?8N X!j&4;<@8y sݟSÿ^~Hp1c>$9DWؚכhEç5`>t:=)NC:6K {2'e%e .5`5mHV}OzԾӾK'}i 扫sW$}ù&\vo;vaÖHF׊Z[#zz3*N ֛Xxe0YO 0*/oi:vdT\R֒:Wb ﵴ3p#ݬ@i0P8 *Yo@ G 4`^wY lLZ;;m8_\3UNYm5J췧]! vCrOS yNWX헧3<+1c=?qc $I8&t:<!;b!lA!i վPI i.zn;@nh) |~ݻUqȞ|0<7F%IX0nAh rUsp-z"6]쥼Ehd9܅.*arZѴRf~_sLCفG3O}Km~o<-@q0vlm{=gO`C3 ;[̼Wd[Fv=Ee䢦_arߦR٨,컹)We k {Go`|)u"Dy4j'P^sJq{S+Yq xopY$(Qe;Q„Jzrx2MS* /ʚ : ->LF+_0YM{Jnkd'IN8\4>^|pnRSSCK.rBG mQAz d.+6< /bxD/J{^7~ ԝ0mWf4<:^SfS>%V#y~K*YPzŋ, T`NQ|9!,9?)_Z6 LU`ɛ΋^~)R4w߳! 5|kC?uZ<=f|x)Ӄo8| T  c'3N)w[ |߁nvǎ/5ݺap;y!oPq!O$Tݗd6d`O({m2m~p$Zݐv}ΙbĴ4y a5l=O.~[AUk< qOU+Fr^OZgZ?D}z{M&9la5ۗ+]Q%%_}JJ~]t Pt@>BL @vuziړl/<7prBDiH`e*͞wƂ\ΛiTLP.,d͜."5W[)`w +uA\0%+I҄3Pl\R%h=18 ylv#d9qgHW@t.U4%bp_ nN~Q{)a¹ GSwӷPɕX1Z;pMȗ>eM<Q8 `Vk)@Q'B;{p 8$WFT9- LZqoER^v/ ܫ%Aaմ2zj?8YBs `Gv$a|Mh#JҪGׯ;Em#*%qt?n2Ruݡ;aχ Z| %\+5 }gBf07{ 7Š'Ko__x6JwynHSd}61U5?hܬ2{iՙ'Σ4ЂA_yCSHi܏|&x`2Sʚ-Z!/22'i rN0xNZ g`@J@(z ;LP RC6H-3[^s aܣ>α8<^ؾ`gwiz-N5Jm 2n!X^>;t7?YlMu={óJO=x /W=;#BF1!p\H ,^OHT(N4?nlj &A%Ko1:ջ\[|Vj+x|%={?"kpKZ]]uԠbn}U)Zv18P(ddA(~^'kS^3+,ʽ*įg3uޯw޸=tqn@&^ m8 wtASߊb^u_w㲤 eJs(ZV>d84 ඙k:+s߀Sڴ1@nVJ eZA5t=Gb.sRK8ts^NNk uVyםqrꀯV:/p^8AH rKs||S|~FT͓spp.ʷON@MU2 jC( 4rp~fXtx]Z^'5O~ ^`5Ef ,GC`!襠RAiD{kJPYkzͱٿYL 5m{-+@鶮'!^Ι/?14xƓAf6Y6TA 3pǩXQFYt)[^vԚPh꽹'=,0. jކ玜Ts@fgb^ Q-y}kނlb 4؞yl#q4i`4(InXJpbV!LbJ__ mo6ugt6Af%npnIw zoLi3|)ȇ0 6rs787$3|霔cϬg,pւq:;yW 9M5_'\No/S4_[Do/o.ɛ|{ "=vpH |y| ;υPыk|LYJ|}q0iW[oՅL"f5n`SdN\/ncHcJ=~yԍUYb<>WҦu2am*fR)s6]h}@/@ѯ=.4jbohZk[2;GQނp &OzmBežmOh̿?Ձow2'[fVsI/9}@rf?Ld>w+w|: B+}w.٭ $ > ,;i䮚?e4P)U)%M27KHw(尔 |Wh+!EˠwAzcB/!P@:J/` ]M0Q;H$|? %LQsbٔQ7aQ-OÃ6O?#"6Y$Ys*9!`G[!!`W|}6ڙgL h_S'F:mOऒwXO6tod9e4TO*LtM&cw/2FZyt,yuXY 6-۫\ˢ.[x~UwX׃UҬN6L;s[}33~Rg&5N{9vAs/Y ZO@"Pwi(n/j PP7*CbHIݝ מ<8t\mypʑ>x<4s__e :8o9ǥ/n:N|W;Luoo"8d6w9 $g]߫\)w)/\;v')G'/\ 2ϙ/yx䛫_miQ#~O[#z=moi +6MgثBtX_»9I{rMqF4,ϾJc~:5?dOYo{1 : \5ӟx>JL^hѾ45ORR ١4m?"wC5k6 0dN/d!+k7t< s% wr&ځ `zKvs4ve 過AABl go\ '㮧\tE䷨*pÉzgo ^-rƁ/sɹ Tu_FF΀!t"&S]|< ?E'oY¶AX4s}P_ M 4g֍ֱb1^/X&Xr3.IhI*<}Ayg̗ WOL1b!%]P_E괛*OE)W^)i@3FDT<fuõ﭂>fa'Bax~L)_rzZFF-Q.;fk!|9ܮIòx`)XϯsyvJO0)LaA .d+(`3>0Pb}cu @=z8Ϳ ׀`/aKb[bEK-L93~[`%_b%gk5~nT-5_ó6a] !J.}֭}x JG׃nkgE ^Q5Cbucs: )yy h`Cٓ@׵T' ^(qċµ n2N~{K 6g$& T$j4 X^ZNI éOzPb o59d7_Z62?]P-d]nh;sLW3Miv3lW )a᧵{M~6~Я;:hğg  L ?ʆ%В$B-`z-=<7yww 9ACEUl=>\_0,ޤB^iYS#0ŁwNhAfQd4Jͪ jٗ|Y7g]- k{ }NGe?\1xtI)uac-VH ;_|bWYіCW92Xtj{嵬$u;jb*aR weޙu :8 =肬7^:Im3/Gx`z'%گu̶H7]f`3vXtxcS`X6~9n}Hi4 x.i2p R@}GMM%*:y[zaQ[cR^z8:S!k֔ퟦoC6ʰ/71!mᔋSm|kMoȼ|W ndگ[IxR4;`^`d)~j)QMR '4헵`=Tڕ賓a.6j> ʜIK %%y@Z̓֫•%ZAAPpؓ y?xq_0s>>L>;vS d.aio~i-cA%!vZxڲk\bf&BLޞeqf?|ܧNaP 6ixwvS1@z1PVmNIŸ_ԛTSe"MaҚd{+ޟ6zM^R$(hyRg5زm,f)>Cϖ!''!2|WuQ˵˾nOt>RP-$HrGO9jKrHYT:MKBw=Nu~gY|wz[ؿ]AZL diyo}73^*~7bg'.ѱ`:rFV;k(zǏD62~tUUSvlՌs1CF'Gt'W֦QKhK2CέGo4&'ë07ajm7_ 8@rUC) ڻz.8-~MkS򩢒,"@e왪p)=,{m#X'%|v`QDSR;s䖢F$|v곥hƵ}M'7[*G>sRr5Jc3jsݶeO $}r{j%訕Hs,3߱H̀nqɛۭ5[{zd-?u˭j/ 8sO''@SOtaNX jn[Vњ6en6Z&6ܵ7} ϗS?kܲZ5[ iJ wⷁ He$4r@N҈PRBt* @*[nZS9d;UG6=z.hݾmuh TlDj='v<0f)vN]?i=? .4{ >0߳u$# -s4Jny`S;\̧vr ~xX&s3KS:\s塛A2tWyǾbyKɨXQ)M_QESKCwTp~{֘3̨@~8g!UI4֦cHYMjf"pa(`euBUɑV5;TU=f{ ]gJukXUbl7?RLf7U\fY >r]H7Շuz!tbOڐ;oeIR~*'y,6C.@bӈHQ5`mN6~t{o9ӣco'<1VmXJuֶ,r }"f5Ipv>=vO K̏on&,NOXQ.׭Ydc ]F(ύ6#g ek2YS?j'J653ga3 \Qo:h6d"E Y`;vLşflhO @h%;*-"u$IUx$F{wԕ;6Y"49j9fn*K@7Um {AiU}`3;\,wB,BdS6~X4m)#:oi;?v-Ҁ6m/G=ld H뭱o@ -+BOiLnB$@]wĕG!4 ^J-UUo Ujn4  x5oc{mOךz~%DOO m |<ijq_YN}`x[^`}g.T>䒢>f|<{vN?-[&Hћ*$z$%ya}L{5PyCד<'pW…qWRÕ7߿VV5uw6^x 2YZ}eFl" ƞu-vZc=y2.$ Dx31j2Trdٜm5Y}}K?:hqVA#9oH[y4H6st>cb-~ !U,;a7i[4=樽> Ȼx<~W:x|GO<rk6+[|hc7pGV"u3+ϊ퇨1{ 6K܄pH40,e}Rf K}7ռqbSs8}t&Gy)R:8Wd)Tϰ2b'o뙏z~Lcݨl`=ڭW &Yփ.hSUcO6ZLc-vq=) s%cVv-$3- `)Z1(bL_;`!*Q[}^{bq8:|[ pJki+ ,q28Ж5H؋ͤĎg}nqAdэ~_@Kߵ// '>h2~7@q?n,Ftm^0=?J=7ѝ$jPvZ'XG4 El>;gy<tprpJ8?8}S\o R:leib!ځ\@7 h=+[o40͛t^Jz PŘDZ[l{zr7A7Bn773hzq G=-|C {E?ךݩ{w')ɾt'2\>ۥp;n u9o[, Y~H&[2@qI.C~q=?tt0A,6Si[KT< @Pޠp7Y_ N puuӷa#"TQڙX { z di81+$+`_Bjnw o$T[k2+NX>L:T%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/16x16/000077500000000000000000000000001322401607200203555ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/16x16/cmst.png000066400000000000000000000034761322401607200220430ustar00rootroot00000000000000PNG  IHDROc#"gAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cIDATHǥU{PU=eE6hDV T0,0S&4Sì&DC{1F"*PB &wUtv^Xhh~~CbC$т W3t/=,12&>ys&?-*TL[1$0'ݷo{Š#YIMC9Q)"I^G#??x[GLYn8{gCA-iXKΨSFJh8z~xSLģK)1_ CVn[jE j2x@5],i݃Y :1IꇞId{<|U!?POt\+(kTV8gH{Iڈc@ω9k:p;'H#⣰hj4=Q`Xd;xwi'-! ,S|T)0,G3.V2c߀gI;Fn{3*/ TYIQ:|ն$6W4mM)W]*l:*϶^~`&^5. #M 5ڬt'^Ydf8It!X/r;(Zz"09gN!t1i_uSUz@j.bkwQqلht@ib 8p0=\c1o\yNf@Sws3攚HNL*@F;dmŃh4lxQM{z]0d'v)ImȳY1'.|hp8&.)vQG/+h9xHFSLl5}iɶϪR ̀zS k͝z} zTVPيq瀿G}O"K d*6Ujm !Q\Ha.~S%$0rkr.dFmʁO|tִCÑ~=yCcQ-tjulc|{[۹!I=0]PVxtaV KfZR> ֖ Ey*VqH+Ix7ȳꘗxN׹?Uzuo$~+(Hz9һR\Zw$ENݞI%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/192x192/000077500000000000000000000000001322401607200205275ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/192x192/cmst.png000066400000000000000000003725221322401607200222160ustar00rootroot00000000000000PNG  IHDRLDgAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cIDATxu6zgݕ$@pwHpwww ,܂{pwIBѝ>y߽Zkuͫg=1ꩪbղZVHX-))RŪE_GDD=Wj3dX-R:zށN4VǭGVݣx~IPm݅@WQae7ZPԍKFbBWlQ*6ïgUMz"^?W\W,^YS:fu_-eX-P) {nG~Vn k lk?t!9k6 o*y-ϔ?Ϗ)SJUJ+TUKWdRo^>_:[zݾ|~rg,?Uۗ&L_7=J[՛nQ/~K快vT Os `uv ,Z˗_r}~\~|r*ߕa]U{٥_VUU֥KT߽jUdKJ](?\[)W뿖2v}",Xq"|֠NYj-aH!m G1}^R?j,xL]!lڊ{hU)T(OtBxr]δW^Rۼ >.be ̋AT|+0;;U/fZ6 AGAT/^ޠZ+cv}LpfRH!VE4r=P @6Zr>+RJAEk<˫=N f']fVn6-wՄب4Ea{K_ F.:OYƊ[Yvc٘U_Guueqyrس}TݺJ犯Pu۪V_V۽jUd{`T~*oK5H)AT$"joj2Q8%ha.<+SI%¾Em$N±Xx0EVEUu-ק0ZGUȿVMjL C_Dp֐ytꟿ^WR%1wH' \#B]5OT܋\ Aۡ,®]72b۾4;=s- ^ݱ4oGNZc ~hg{ԧ&=ŤӗN]fo>#fVYzזP:{Zf2j.Cu5J]|]=Q&2Xf1ĄXI}k7;p{i޷̦G򴦷7ۈ6}=-F5۪% _WT8fJuKo{ezPoK=ZPp +(7t /)j%qY#YQH!D2X ww'ViX8=j/.% zw~+uiSRW )xSQ!Y@UЫIڦ@Į7;ۃJqxiVE-ۓ~Yk=b'. Gz֌ӊBkerKkwh#\tX @c4WW4R[]^j:4+KÿD4r1byfb&a&K/Z\4*1/ϥ[~_鲤Σ̺v}im移=MMϫP$pa):ҏe0`e _#p|ɥAޥ' 7MW׍lp V= ǐ-D"5(g -SJnEѱ@.qQZnzB@$WPDgCMZ&?{Κ[G;>+uɚ OETv^*s"LQN:{t=󼙞F 9]xצ?޻1l9c7:>ZwlOhc"{N-aOލd+in\ Ѡ0BJB=Eec\V*n,tnz] #7@YI0'=?k\ǒJEjUSTïJ#!WO'bGL3\X%"UƕWVOo|U?eEzA3=8uvCb'GbGTLm;[˖ښzuZt<@먯7GC55A]G-E URd*) UTQUE$0X\˰BX%r1J0S1B104R*F2->2gyߥwIuܝ>"&gp7I.=7p[_Pf4{ NƅqhF<`Qݱq>!.sgŶ&Yc'b']muMA 55ցh6f!4ByCT j PR*U [ UT(jp, j ꨫuWeijke)Bu Q#Z&a&`F'|w_) fXzTk ϑnnzy̓3n)Nf!4 ݆Aّl:_}ow. cVmԸe;%ѷFQZFAαc!8(q$Ą Do-JJp~ ˧6*QEN\ݏjU84Hց_^QKbU7i~ҺEm:%/rO2.8[ WX8tCq s;[xi nrb\N%x. w@Gd[8֊Mt 6RotPOZ*:h2Bu<51lU1+̈́4t9a%n9ifmfgYhY+Tʑd¿9ꨆZڨڪGtꢓB:訃Zhjh 4BX[\M3$u12c07W^7/󤿦=+>ҙKIy ]M].ǖtiCw;5oWw\ҝz1¾jtB Y.,-+S[e]ج ގ džLeemv1#|e?$Z6u{ C#S [?Ƚ*c!Ttֵئ4͂x@9^o}K?杯=6o.v1,΋bfǺDžAg8"z裛݈͵5@/R5#Y.*&'Fіa_,o 5_tWihRLwF64x3fabn>foZj9V"*PO}5MAzۇ&eSL1SQG{#%@czdgCIgg8) +5"0fcaJT+S? 5Vh.ZX7:`+unYWcQ4!1BwSq6-S M;=:cb\le}5Q+57qe) vninKl!O]H;k81]#5rA |/؊k=tT9jԯ?6@ZhL>miTVt,dt.;u Qķ⠚SXt|?/ohzvER?7dPֿQ,!mSxҹys|۷WIaq*맂$C P4^U[~C] 䥲x41 0]Y"k$j,3?DUJdK'+Hb#cĆHq>a{qqvxĆq(2Ԝ`-!KzL`Ħĉ.E;:nzz Zjg>*;Z[~LJ/jinlR[ҖfzyڠS0N؋ɏiͭ9{lr#/~Ndvm;xmv[AM**%k<~ lS S!jgEA pyL;)سMq?/$Ѯׄt0WǾ=r=nˋ[SPɝӶDWF ؤhyEmno??:g{6&NKӗVދdSb YmOďRk\bYl7U(+o(|EgE;w&NjEc*qqp y%N"W]Y\V6#)с8=SHSZD? Wĩ6bX {EsVf,tWͺif9Føiz?݇ I:!5"us҇Z؁47NsHZ]8-MG>}[ج?}:NGnBvZ{ӭx2 Lѧ$ͻ`rT+K]oV$FW!J(4 )KlvsZ#. kKdCy\t;[  X /}9ו(sUqfΙvP:Sk+YΒ#ONžUwbx?*W8>VΏ'vw6n0/#|&40F \_%%ҧ4tcIuN>MM'WIo,Hn8u6`!}FQN7k Q+hIܡ钒LdՙS(Q]*i(QZFKKeuAA?-qmJ d* WQ$]hWPMD(H5(>oT-<q |KY}+Alc.S̊Gt+1Վ8'r q>Yq8/Nqkz5݈X"RWWg_ O\U })֍;Z؂4Şi2cl~$vN0YohEW߱񍵸g灩uS|l۽W-VyIȜ+ʑ@g+cy?+$BUsORJ_9ImxE e2/lχ# ϩ_v*vN*a Xf6x';s}߾,SXL1:{ǰCϢh敘G̊b񑳽G{ƽ觫3VeI~/']it'1mjJkcǧ/iHZ6#Ӄ| "MLmp`=4CeR N ERJt$ uO5UZ]t$mnQiDI ߠFKzv=ukU=jXcYS6_Dv`Tcy{|E㗞t0 .|~Bw*]#ӢT-%+7Wdu9u׈{2 )]EmN16[&Ci'gL\c]qj[iD6atTz&m:Ҵ8N(O?FhK, JUOHS1=Y$?Uʟ-/Ml".ӏՏK{zI'w97\57{]ok6gV5v@jg%]>oUc`#/?kg2r,<8%{R(z;ѽȊeƱb%[fq,"֋Yĩ% ;4ZQ=c1*$~s]`_[L>&dDMiORE:4$6M hVIU\}4uZ^Fj-}zݺ}:pxnTk gi@$GWYbfZ+(Ym NR'"↶?ZV;) ~_[|դŐ- ]N04.3G XԂk_VLSC|ݳ_o-qU̍dĬX8,&d=@2ވژΘC$Cݎ+.LCvMO"}fI7!陴|4S0}Bj ǧ' ?9ҹi W7hxaucczl}u7+?'Rc>8|~:Wf~G)'_]L,qD ىE"N.'{棣5qX="ȮbqltdFxhSOL\nEqڎ!i{|dHx=G4] -ΤwSTtyI1]1i44,.#6G=\8>S7(J} z눊!{;{ u^Έn>B Ѳ/d;vW!f _ MOE?hLn+bef8+· 4p׫7%(FEFӣ-- [*&dgؔ8(džf.Dx%XJ:^"H~w=JgOZf)ҤTݩ'icҳ F4V~Tz|Z[~/|t%s _7?ֿ6Wl5k{gݚV[ǭI_Z Ma Kڌt1GN"դgImǗEq<`1 bg3%US^Ob8 O棃w~ ^XCna;d<]/=;ĝd7fGFAvB4"b)ٱA&v"Ը:?XH|aI{=;vLH&iiFI>}I$}Fe^555Ե\8[Qqڔ˖,CYdU * ED\v̟k"C iw@M.2|A]^`G6 Δ Ӷ`n*&Go2۽,kZ݀?'ycKñ;qc#%:FbZŜxcrlF_ zNcR4&&=;_ k1>Y4tMFZn7is&OJz|P(-!pB戳l6iW5mF.'ryFz5b?4 u%u/}R@MjCDؔt9U6I@Uhh.Q= $vW8ʮՋ0l R߿URumvθ^u=Nr,2oC ێ[ؗqݦo'{6fAFFATnƖddc=q^4!{ ĉ.Zis;#qt%/:Zkgb ZWMb-K$bo3bfz$hw+7[ozpoےwٲVYQ@^ a0մ:(0g*KY/pi\>,dAY%m\-mf:{&lc,#!fĵ1#]dFl@ >q|݉r!;jO? >j5S6']S[Ʒ vbIǦRN)i M )fm6{gKNl};%޺ξ& _*V٤O #N'#1EAIP8H] -u1(ƤK+h^_ Qt'Ey.۔Zat'PL+; ~WDi@;r?~O/?NyVpOx{}Rm:Ak\ϥ,wr@613Bfĕٮ1lh%"ohW8E#/W!͵OJ -$mo?BH/@~giI >zMk:o~tpwm& 6.qei곂!KV=QYDٷ^Ҹ8. :DFdK^֙;rTnd4$w(ć.exU[Mԛ.C{51,/Y-i~j&G$?KǦw/I+vXU}|nW¿J_DfW%DKzr?| i=r]9.i}RFڰ#M*At%F_yhI_{ %D$+"8Iv[ynĩxÉ۩5":O[Зr%-ΨVA%p&0:>Svg0|~}٥蕍R Hf}'Yt]lM)wF%4Km~qVK%.VROHW)6q$-UNɐ~>Nۭ7) #,Ͷ\Xů?_4982rpʨ瓎.ܦm ٍzE-y'__^"]TU#(GsbDvK1%%[?&DSzGMbn\+w<|SO8Kŏ3s}&].P%-O"; u7Af1Lؘ'V$\^HKJ0444?,~ԈTt'SLR2hCj[J_u&}F ~G'FG$=OjԌkb_tȯ^DKD݊l] gAĤ|BQ"!ls~-ޒ=4?UM:5ԤkևJQ3&MEKb8 '*:0'YHo%v:Dڑ7& M/fΥ4& }w!B#tcSmX%Mbu G?Jk/ ^fհsbzy9鯐f7匽Qh[\>t0Gt'gf6W/'1II12)lu;ȉYxN1w-`Fofޣ ._-n/?({ǒqK/S+ˢn޸"w4^K#Ruٮ3PsKGqqƥL~isS Gˈ CV4"¨CJI;\QJ_xL3~i=Ezk4|9>6E#|CzgFtB:ўj˫ߓ^k.MӢ]YqYtiQ%/qQ8>QfWW KH%Mq?ń}Y2%O2 'gNJUL߲{lz; n|s}GoYdG-\k$1/.uQKߠxMq]6y*Z& NYWȟN!][rQzReK Gv?F_&ZY`ttS1!+UB$/H"b*ǟQYM9o|;N1#_OYlH\>a!SM b+fC\Ě&x< 6|'CxF;y+#;#]NWYG:$E^F܊47H^3hωp3S=lNdajPyueÕh^/M뵬noTul]UB}Bc+m˿FX_Ɛ!SUyY{j/b+ls% J\P }+8,*RSf)3hKz+pf0rE &9L*k%?~|_:A"[p?BlқǢ'oɤQ<_w؞Ct٧Y8x ˶%.i2CuuohzԞs;9K~qa~bbDLqD/ΊEڥzi[F۔1ybF~ifelk<-9N(_Qo/;&] Z\v7 U 0qab8z,: Sĺo W=z;c+|x#Ff]գ!D,1lL0Zgqi֤bt>nosUlstϻw8ң-ٕE\3 Ɗ/=e;|Z bj]ۦƴ&= |T^IC2Mmj\JQ8+ۣ$;)IW̐2=.:tSE)2ǿ &RZ}At;|fr['.xb.qQ͈}Cc!sb(qE7Q-k '+>Tr#M[ެ3oe{:37=1і/f+++;*+Ͷӫv"ec]|_NZds6єjUdURz+!;1]I% *R}Qj6 ;+Vdoce\'I3]NJ}aYܭ#.-iW+fR*ݠԽɋ뼿 ux1#=)$ޒG+⦘u'1C\C; ijt6i|V &M)^J{ap6} ٢*4i[;l\O;לk}ԌEGg-ʖ 4#Mˤ &eWEjbu֍}I'6I+.;яl1ۋ&!.s}ECG_ϰbT^Nm0Om1OGfzwV]l:6V5HG_Ԧ&_iahkGT}- xht%),@U"*b*xH N\_ ϡ^84H֝X )"X8(e,3E7۔,ttfMZXwn;f\ܫ;`. tmMEkiofd㽊Ҏ &>!&1}b.I6+Kz7Лs>5i_ɿKM!)#^f>t4ya'm'5k\ǝ^ˌ=$KzE17- +H-YYA/f姤sAGޅC/ݼWYU!m(M~/R%x`'?2/2ǿ88w(n}rkN-Ǣ2z/lo?ލ9Ag؍t6i+nKϥ[NE '0]^fߕ:ץu\˓n贗+6z r]g=Y}ެ\V4\edDu_7˺dVi mIٱov+ĶNDOOڊ9k{`X/ĮY"cG5Ki܃m&W}gv@x#."_iZ4DxTGV[Yr~?1ik ߲8:ƛdeU,ZA nP/XmhءΛF`Kݩ5]N 5UݷgT.jTL8!{5gi}*沈V+_fńʿ<*KwZJ.\-X4nNKfK/z.{yϖp믘.'يDe_{d*fTL6)zfFeiEz$]K0)$52&VӯkX/^_xI3}]Zx˷SwSG*S]BLf#~4GB˝沯qWw!G Ҡ"ﷂZ7u/[A^|9a5OYU`п?R|! u:|`q5hk^N!)y1:q~߈ 1@V1oK^y6~JcVAvSL5~Dnsa?J2i!M^$9tl~kI>rWy4Eț/߇|emYҫλn™#h~îbAӖ6GN;6;}|\A-nGY%Qϒ97vaxyB~y7#߾Hݤ+tX235;C.l.vSwlT19꒽ ;]1=zƷђhXHN\NsI'*Io7,(AN8em>#v^ڃ<yEE6Jb_Dα+tͰ%&==E̍PbفlZ:E׸ p Z {^mW-Џ8,vZ4F6zCcp&Pg v!2edȈFfQ4nFDX15FbFtܻgc"86lPl@|O5$u'~Q/*͈7nćj 0_ oFC'H87(=Jl8t%H/j'CMH/G-mqFVKx2m7ޯ9WiݛMk\E*8OK;Ѵ\PUQr'ƛ>tVaƖ`п8B.2&D~iH:wc!Q2*Fbbo ҶN1v;g75p*&{?Ħd/؜,&g=5}MAqĺFxE? HǤ "_oO",U?"#ԻbЌ'?[qTBglKjD>(j@^t%)p9L~&g*B1\k9sO>kޝeq6uDTV4$5b MYJl`T~NibXdFu qK~ܔ疷ȳ/?ܛYE67*c7JlC<v &'&Ç;ziW'ӱ/3*/B~z*)H&*_񮽷^{*K?JŠJTG^}sٰMRt6)fb!i>L'kƦjDu f4l=[s;gkwL|zኩw{?/^71OAwd'iM6'Z6El D[mZKu"AEjIj{ 颴 z:ϡhKOaXm iuZ@x 㢇xѧ-L25D5Y@uߤQhf7|~#}븗"`w5#㤫8y»}!#ҏn$.N)[8v4 H1i*>Ou'W 3S1]N4> /l;m5\CjXz ͋߀3ȇhfBd]ED]D=^\J[bm +R:)Y(s/G<V{AZ5saR{jЛr]rZڪw[a`DEgA6p猼,}qA qpƛ7{|dŧv7oGv$;6~V尹mG]3d~Hդsӧ篦b~z*(: *篲ղoΣ;TٙM>7Jk OZ`ԋԢtkbQ ~Um\~=F>͞CT*haH`(%|T u6÷|o 9bԖ¤NOoj|s1?N*U^>f[%>"cCtIoҨGmRSb4M'KƎ~>l:&2m뚪+uGtqDlN눺i CϴVXO[>wJ3JH!-=A8"mtiYz*"kEZN-LۧƧ/l4i!~twKHuVTbpXwZhvnHC^| j_ue5!{οTHX\>LT S4ۍQXip= 0BEAt#Ke;Uڛ(6*Mx^LPQ5 .׫Wx|u^UNLicU`cVF@q?i_عM^K銂'_ n8%=ծp _ Ye?E؉5dŬ؝Їшx&8DϐnNg8tU:}#5%& %D\/zaaw6>qM_!URe+[9T-(+= a^βAGtMz+ 6? ݉0'Z;8q,Q͡$=oX`[r3#TWD> 7cgBv->d۟Ecֳqẍ́72ǔY2r?97M;a+~\yΊVT~ߠ E55ĔjkIWMcZitFI$0ۓƧGTiQZHvdT-X^t#jb0D6#S4X wSt6f]f5LA7L$-LomPKihhn\@~GjڢwyPKW-}BӫuQAcv]Zht}΢ɳu7jfs෴-`ۑ|a~ \G'&x,4c.Mm%ԑ-3t" 覠޽p6*U]?%٭x}A@*BUtH?K=||Ҏ x)Q;)'#W-g)j;f\ o;/9|.{^o,qP,>{ny' /a\L6?e^8+~`j vOztaO ]Yqy_aזKWE_VڅǪހ_J=dUy*zr]R9k!J=VoE!},9)4`#pǮ˞:kgi !_pjv/Z0tf'{-ٗ(&k`aQ'FŤ؉Iܯk|gi3IMEHUۤӎ%:a\2}y־ǚ^cjj|F_yTJ|fQdBjIE8?5锴7Ii1y[T윞p jhX `t.7Y7:?Y/G>:OI]QU#^/HⲸ\.2..HGfh`21Wi$Ǒb q 4YR󣆇tJ g6"NJdZD}Pd+-z?.j2elE볰Wu\ևk,^ꊳYqF7GFN|i֌X#:^Y-2bIv|S>@c6ë^}jv{ڿ5Q{j~nZnDMjӉ9O[N3)+e1E=H`Or`ʃX|iYzt8F!T5X:L4tÆIVeji6 SmwҊ8&.BCOz vn4PLcSmcwSmT%7ZX/7~qN.Qre/B\EqM-Rcqϖ)m]* ϟO(ݜ'5L8x!8ܐcLM3bWQOt-Qy4!~ӳ"a:1QPld&"GG3pk:=^%HbXNōD+ %DG*d) %pkb%F_DFbe5SޥZv}5šy#q-~, I{`vZ`^.#.tOI/yEC(;+$[+L$+{:̯HBXR;ΤHBlt5]E:>=n'e+pZvZ!HgT;mS4-^HDZ>q*zDi :X],UԲZ>D9bg ,"-egE̋mI3y|]|wڒ ҈U0*jN^eK}/Mvz(C?[wrۅ{jB Ż?zCgVtŀE҆8x H{BBY^8?v?[Vq]/d5]#>ٱȨw\fupR#?HSH&(_޿ ']~;~CV^IT^A~/ym;|U ^ Ct#U?!4 Ԑ\otH551j[>͢h6T]-3M:i4(nŦGh#KG)]g8$^ƗH-m%}qęP G{LK`+;ǰVqmyC)MЛ)/+#uQػ5/WSc6ďŠi xJ"QpǢv,ħ 3lfy+ZagRZz5Lt5$]8iz!XnztXZ2D:_Ru}JHuuW^7).B2{Zu>CGFm`yx8n0Nۀg/ەE dPZWJ]02'S6R13^˿<ïrq;xemDwj|#xf=wvhWcŦACA8\)U c)%իVAw73Opp::CbޖdG@zDTK_f7ɡ=56x3g]cb|DhՊQhƲ8*6'rG4#3tDٯxۮfN:ӻ҄cz Gkq6Ϻ3uzqQ y 9KE"ۓDj[@=%'?vpښ]ЙڦI+{cSk쓺I:ҧ N;iXyiMdMM UǓn5'#;hI6b5"2cӭ##m R3O,"iN|c RXll-AXl&F3͢Y} uj\%rpM-$]C!= w)QP^U)ZiS!~}Ff I L>D XDjsecm K-Ot?[' V~\;5wq^g"5IS%JMFטA'gk6E/$Ԗ9_u]e.ߘkǕOHB-E^X[=!$!$!}vt1gs:}|+s;nhlooǠ8$C9;dS<:kbhC>O#_,2wC9󊢚o%O?W)߶RϮ]ĶW5F(\S`wl^= Log(@ @p|n; C>u_?6 5ėiv"(d{3z' b>roQt*髴үi2Pқ\Džm=.|vg{5ߦ)ߟW֜rMIq&@QtXH?]mob?D*Q˯j`q̰?a%4ZskRtFGKkOVi)`ʘZ};mQNmƺv^q0ϸ-v6=z&N5"}Dޖ< -b8;B8nassMwe-DU~GAYU{'vzdߗRym!+8]s;.WMuO~Ւ~~kyjU<4ni]97JJ=.VW i3㐮.ϻx12v{_{{1f 8v@* I,[:!ގCc-1ҹh|XԂtYg2ܷ6[u1,D,הW]Hb-񐼕D;].V21蘪,ތuHO(tAmc?CqLl֤qL72,0&YyV&X3 kM2#[ ]kH4`t]S7Ruen1$UZ?=Iڐ,Mס:%F[46Z$Qjja~X~2Uq0jXnx9FC M#gښc,q.675]Dl&ꏝW,q;HDMR7@KrmCb6-]TI2+juӝT!ڥ-Doۑݭ2Ei|W`f{|>x2,@M :aZ}la88Q ?؆>CNDh,#{xq xGa+EjߎRuY,7g9Q65Us8_ʯ) <{Vʩ-nǎԹqϼȱ |<}Fe2;;Tߴv {GrQ6Fk./&[Bm tM3vW.DzvCWz70V75巉ڸ얨#^"}N6leT`▘<OcH=g^&ݔ>+E'#ݝL~Nۜod78ni #Ŧ9 *%VMTg2G&eD|w]{^' |bLW,L̦c ̵"TZn.2=}H5Ik.k}b/-!2V345^ Tk%in^Cڨ"mT4WJV6 -uqWBR5Hש%NIR˵RElezUP̲"L̓8Rі0CQtkJF7a+0!xQ1P!42vJ(V]QK[;.Zli#sCOߛ1OxԴ4l[hƛoqEaClUlΊ{9*B\Wy&Gz,#Z]J%_*OGi >|WU﯄Ԋ!]֥A+Gi=zEa+Xc͌{j\]g.| -5:@jw-{.nVy86m!e97NDլ VoOVtlF|*cU͗c7՗:F6oƖQmm `p%ۻԴ`hIjx7F.ߥCG;l8_(ݞڑ=56Y)J87*c1/їap"b5nI3WbOzh#1ыR|aŘ#3ָZ}䳧O }LԽ_~v'6;VUt +3Y/LbUj:S)):DzM`v YsIf8Mt{xHߚ!-1DeVZVXVH,ޠH?u[ CW Q#54P 5T IZ VK-bJc˔RݭZ]\mfyD#Tab%v2^-Lm%iFj*tF2E#1YC45w RtC0xCP4LsQǤJ쎲)G}Iߘgcf͊oHߙci2f[i2$:ꩇEil[6`+c81].n{Y"w9̿mf`Y * 3 uYn 霛+ tGř.˟s«zn Avq/e%Gѷʩ/5Ff5Gs_x7?չIiM Ǹ>[V_w{2lc!t~il)_^~;(ʜKXPgh_R/:z*Oi 'v70F4b=9u%q|^;F7.qC*7D E#b,1V^dd;r F?_kPcy3Ғ2oM5&U)6'# w^K$- $LtVXN1%?yFtHchq7hlqE`[~Ai%Xhd]%o|(\rdV*Y"]Žrդ[J, ,-G_;hJ"WEhjkyXƖM,1M,gg 8}.e4,Lq@y휦[4 kmN3@hfCb1gqhh9Ƚ5V 5]ՌNiZMc,OqV` VcjwĘ)~#:'ĔBt.ّdcGDKMXPh<\1{A鳊V}˖qg lӊ?AL\}b#ԍiڤ/ {ܖ#^4ej>U٨?؊ow6czխX×Ԗ vޝzy!2W\upn qJ-\K:i?K)R~0廜VI[/~pkKZLĜ[\_N/Ouz&Ǡb\ !i7pG!.T@&=ڽ?I7-ubqt"NYQ"Cc)c,`CHb boF76SC霴7pbMu;lPf;.۞Ïf+hr:~. d7I鿂lܴq8Ծ i- (AJSo&դ0HjS Lӈx2.1irz =TͨS.qɦNz"6/ HUF̸#4#{1Sq|PJs0 1Cv"dZ֪<,)֜ɳV>N%R̳R̵RIC-!}̴'Q$*+r̓'9(OUꆃ,5[l*~BmI|0B;J1۪7N/P:Q?YZ` AY;Pja6&[{ckU8ZU[.Wk(FZi̋0z'j%`\"Od)&.$BvYD-Q+3udq?lY+|ϝJT<dVL/18t\M {8vY>-b<[_k!ή]紥]iUǶ4uηs[A[ wB VǼlk<<^t}4-=tc2]b0Gtfɞ.fVQ]Լ>ӓ;;>@~}+T X Ս9fSʽzϭL~q#L;q\mwRExɗO!m G&5).gbyꋻ̴ .OKꟾ L::=mZ])OOs '6Qr㕿QzGdxNz-u2YPƔl!6x3pjQи+!li~1B\gqT*\wL"64+y֪5Gw'gLo`2PvO|)x'xԷxt~oz=IۨtIG(\޿2ҝ!էdcp/͕KK+aQ_\r%U63弟;rSvKR L#>hx_b;.ttǨ/ReـsY{D+`(r*RR-ҢZy$IwalĊt+-N--H'K[y餸/H;{>kz4XuaZz'=Igct<GzY4P>[YF2;7ɱҴ463~EeZ1\1./@څ#ZaSKĄ5Q9ɶ1* Bи"by<঩VBLR )+!^lDſ$M'>HM#&Zs M%0Mń2>Ì\ǬbGRךhQt+[QܹPEl ZKR&ji֎8N#gG\ Zߢg|KV@4#'֐5Aܬ{,PC9 3^ڐ (Y' _z;9fPjPbj΅ec8!M[[uRH_ #Z~ 4{&!fh[doGeצURDZdX:8ݓ*IX4twSdS[Q)^)Zg`> %?#W'+HEݎ+K91].rC9>_Ĭ&mNvs|ŠIlXG(;bQl!4LJۖt7d?7R4TҬ47aidڵ\ߏfnIZĥPq}N9]3Z,ݕ|Ր.SLt{yOsڎײ[޴54]~lM7~18-6k 1&%M&yUr*rͱXb]Rqf&d;V\`έU%;5hKχJ}WQyQcA!}"/+ i~|^+6%+0%]壦=J3G9f? (ǐl4SU~Kis+s~ x|)w+_."f4?f[Ѵ~!lq|=?5V_VWE-F+Js{7\Tu fǗ_$i↘D|cQb)1U1xXu<=<+ q}Az.#N+͔ =>IDAT_IWMiyROIӎI!jӈNDY]DsD"F,Y|‚1C_gAEinb߹c Vi^|>חU qCČ1L->#=IǷiaJk+ iJ5r5bXb@csl }Q[zڑK7pD4"Y"49[)YTB %6Q&qQZatE+[vzh7їl /F|C(;V UW (7ف]!P ٜ/['+@Vx~a{J?@l 14΁9|0加#0 iDJKҚ|o]E!}uS*湢w)/*C<qGn߼vW{<=K%: Q 1x[13IK,0ٖL{wƒ>I+_&Q{giwfҊ)O(/'Z7oGpcy-it*^?4ǖӑK68 w845ąG{8؉ƐSl_:n,-p >|H6(6U7"EE~teTpq&K(`Ŏl$1.cH?:CMV^Q.W o(72Y^j9ZNM$jջ QJpJbb} =}U" q0Ys%?LmZ, 1?{V=WmވyMm*jt^Ba5_:-jUn+6O g}!jC4M!Ă i y iFS_]i)FeildC!Lpv׵qލߒݬ(iooM^f-Ga!?w^ryE??N?-gdoʑ_P⮙'qxn0]2{dD#ODe\cO]k(?Iھ%=;3kUr[^)ܿa٩ZY%z/ Yai]]giCI,i^5|$6|[}wJVc>1h]z AYϚPtU'3C5lq)sZG]*N=5g{c*l4Ĕ+94^+d$&RS閔Arޞ8*JmSx3 6)>Җގ{?Z?տ^Z]~&OXװ<EDz[qvM~Bi|b=4}+*5Gr@S8uk&1_/9gr{M⾹Tw;o㿼x}֗~K[pE_S!}{d=)=3pZuJD߸;.ŭj쟎vq_;Ѓ8T?7lG-g;5 NSW؞l*u jdJ{TI{ў8,*kHԷKt!vG\eE۲ລW-Đ..W/lRf[}JMnq -wfMisK9vk27־Qj֥SFR^>z9^&yKD[y$gGU[#tq_v9i6-sn #71{cOT;: ۓ~7瘮-{ybM,ǜ=}O/"}H/NYr}Y5`R*/Zs#,;PyĪ+biUҦXv)Y hEZΧiZo ӿ =7(x\ eVMݯ]^xwkN 49`0*3SJy@Q z] <9~)}^%ĥ1ؕ9M z3v%gXLjt QnVRyHzc?ʊ+rl{UHohv WOgᢗәo}S݇{Ӛ|5dk׭48=-U.n5v(z]c84u/ gXmt֛8Aۈ'cEliL$z\k݈C}KmJ4-sb}lbElðc& UbZdbY :Ό Yva+aڙo8yľ FW[4؊#6nCRoYËi8npFV ^Cup{|ꬤNkjNZ1>}yEP㶊5QU95SQUjRcg*n+=V@?kO6*)kBc4jʷz#iyZ!ZcĆ7kT}lء wÀ)zfmǮf[Śdr]>q}Qkum/־fsn[{a|ͫ*17c ݫ|lH GEh-Ʃ]:jS&5⏰5}iwwfO1b-hiFÛzE9l >N8/w'_*5*.xCiK07*IU⺪}yD_xXkx7w/v4=/y#ў]z+=n\&S}K0]嵜R)ϠU+Im|^%A|Am;mwq^f;Z/ƌC'>7譯*z/ c!X-O>%MQjFK@/dY \_I GS'fʪV:A>'Q ;=ObJ<+F|eDˣ=K4'v#uF]R$B66;&{l˼1 vBs/Jl9'<4r Vnb\:3@S:JMJf$]%}fD##vq!YX1=d(1?*$3 D%1$7sv'٣k6흭#U:0u4Yl`^7'N̶#:e _Y +|1jNPz%See?(]\=ފ_lP4"/,O*jF5ANy"o5+ 7x!OMކ84wsbt`/r M94؍@s1] ՔkV55y!~|'v$8bkp:9)ו[&IZ\X3xk%ke_8'. ­&{ߍ&uK&҇陴5_ +_n#USҁ\)*L!=GjKy1R=#}3cE92]f |*`hw=cT+w}YRixt#hmgb8glCK,B2nECǖNui%Nj^sQzMԋIhLF5).%2$Ń~!(7hfE&9v9q)0R+Վ--~14ej%ﯱhcƑYbف1'm}eq`JnS=.:!^ͺ;al,YbYVD6}X"fg|- ņՉkbQNb)4FE%12~)t[;cD;Zjw+FTD/&i16~ [}עO@6Od2&*U.36d{vFĜDhYJ]zY;bAlMFs;ŭY7bbvy%Z6>ۀ1,[ןMmdCL/}jǢY-ˊ<D!Fy'>%Nm/w [/ Ŵ&Ȧү 3Y!;Wztukܬfzn(^n)ѺJ]ua}dA9r@a6O86JFWpOyi~Ԃky]'abS)ϫqf]~]W8'^&&&9''nȅZ7t|Jz)⯤?C҅>?7-_al۰OqRemߥܗ0Ԉ)Q.c mfL`Z9׈RKw#_-YكU_) 5.y~d;=l tS%ʳ\Idml-=E6KI{kfiԄZG{[N *S_fqJȮ"s3ݒ}HԳȺdGd}v;-mN:gg{dMk{և쯥nVY/ct>Q_:BV+~Ⱥy#Dlv6OZ丂l;%XIt!fvƑ[Mg Vіc[e*&Qv-!!XFԍogyx;3[L!&y/f3Mf8-9DF,Qz'}tP;gwwn%q[̾~q۲ټmf<+ftسb5/WT"'\C&-$iOGOe9?}r^ŒZΡmaG_q!v'/A%?_B[,b .5,+1/Z|n#TOG#2VB?Y_lul7VXeMRәޡ'Vk ;bwbq_%Z%+ ݈qfW#3*=uidWWl^4[kȶA~DU[@͎$[]],A<сԩt(QggUǬ'qhz.M#*GjGXGT:cl!Fx-@ 5&=J$;%E\]NGͦ,OǛEVps=q.)N+8ẗ gK;+z'YrF]v6VE?ï[2 ._]%9 k+\Ѣb_9;C.4kΒ2^ \$Gȍ4ݬ4e%,_}B%8>~/p[aukWibr(Dor68|e }*)/pX<$53 Ot(~5I9Υ_Mi qwz>dcKtD=wkMOxLNI#,BKP_ڒc:Q!ATKQ6<sIu|[W>4+g\yo/̑scg9?1˩|{ȍR#;MGm8-OoS9N[Y}X~Dn3~ {cKיS?5ۭ]>E"\mcm&8;X쨷:mf{&+kmsVIv]64m6bVjO:4J .ǡZèL=*D 4E 4C{;;sOxx=bvt#G8hۘˈ}?g+ݓcikvxٱ +I#./v_FWWۅjk~v;3v((}Snys>4'瓾7oD;ZkķqojG SԳ4^BtHݭNW(//\=~ϧwQ]~ruszj1[ӳuɎ]o./}`V';O ,Sd bZ R;=fӛ/'urAqBLBj`ytu`5c :ǻqqZeGƻRL}ݰ>-6kXZWK{Sݠ|*~S]tIIUf1{Iei4*;_=lή ^bÅ"< rQbIˈO֓y@ڿHl;9<5.\u#c̘71zbJ;'R9Qvȧ^{^yT׿nz1݂z8%_w"Ƥ5ϞG3묳 q 蕞L7&eq.*Lߣfg'5G%=MtpIZ#i[!ٮ!Nԃڃk-_ji˿wͮk9x7S-B k @>r|+)x+ f Ńri%佅x) |ks'@Zgʱ#/MO;*]O &ѯ aҺ_6-lr-Ϭ|*ϙt*^2o3s{w'UŽWB(pCr]/z>xsN#~:*H|c} ݭ52zO"ݚ472Mc~r袾Wm{" (Y>USNy+& m|\U^-Bi2)K ϤC]K5-A7Yj qB,&;Ą2F?>玈r!s !J(6ZMibvY"kmh(_Q]BkxRTMiqU:cԌZ'=!#9nğW<ձwuW-z}u5K/^:h]o!|T]:`ԻL|LYW- gCZS jYUvuGǯi<Բus}A:2=PF/=HcIz!tuZHBtPzxmB mt+Mg4\S^pivCM~G,?7Fwpڏ}TS?G鴡ՇuƆ ؓ)i{fGDj^R" -]r@bҵ#7 8⠼:EсT^>RM(h]c6?^2̑k ˊ`CHX˧'[AÄ3):E]z B[L7 < npZ&kՠmuFW# ߀۝7:KD7Nk[w:h ˍ:^Oy&LnZA:}4ïwv{Q{5V~-wS@AydD(Fg҉גVQv Ҩai4间WIڐMK`h@z.TSs53gFhk17>#[ nƃqeBtۈqU_]VAbsBgOsOt ޒKA%@g$kGy+l@klE4JKظ¶/iPc^pĖ寷|}fRӆ#w_̢Yz.^[~mXr'KeIW.e+^+~zj_ڰ֏p;.DECOגZC( 9~b8ݩ=iBex&.蝝EQ#;=hr%K/!;?;U^h3nsCv_pEyeI0jS!'aӓyFQ |8ڟA {U4i`%c|Ij*݇kk;f:AoWMi{F#~T6٬ Q;5Ʒ;49KPqg|HC.?7 G~w@f+ވø'9/pnt:lC`dQw+y=coNT҄V !>Z9sܑX_ƝYW,c|(DSh%E5!GxybI$&}%xǾ&0|;o [*.t7~Ͽ|Cqk%gޢ ~s@|Q3a78?~ V88n"`H&֦RIipy<5U3}nrM)>ϫ4rRS]I)omiKIMS'Қ.MvD2 х :R&+6.$;2Xb 3r<8'NJt qߖ!7Fo9-~tfYRdR:ܽ@,3!WX[M]ȓWRטؚhYn{(Ov$Dsnc'kgz|TLQxѮq[Z 馴J75 >|3zr<;Moh}sOdTqg]wwaypTyRu-ϩb$[?K~|wqk҂˜EjYHyp7 qN?>r2x]ͱ UT]_sYs%}.HcJآpo-kq: c"o o}*K]֬bxv:>(R+cXr6IwC;mu,wҥr,$9|0[. v|SĜlͿD߹eiX4-Dj돼oԣgsWq1NZCM]&$=H7KHM֧V4C%5Y-гoR9kORY"KYn }%mJZK@4m6_J0ݱ\ sc3Zgnҗ8Xa(?>t(1%hcy:n55?!Db`"C=VOvq DX/_Dlwl`o;v.Č:N9!ը_ ,W8IW)d+qcilGn+@YDh/ c^+GzOx7AͣC.~C -Y,DkuM.ں=mһ'.zeEu_zwWߒ )T7bn6Jy'=rxzH(:+S]soTRnk筙 9vlǹZXwDw:Ec ,ّOv*L !ȫ f⚷)tt&֪,'?yE.9[(M,g qAA7>J^fұ.P$ќ_ޛĸowMw_݋`E R#H.0*ߥraO˽*G}r,W `ݸBԩBaj1́{L֋ِ}0fw;5.cj+Lbrt2o]ixf.KoHӬܚ/mlH3Upw٧NW(6ieN5HImHGB:>K,Ds~IzBGR9=!tH?&FR lDt J6CW{̱mUӴ/-2d"~2b@ ҭ;76n):=CԎbo1$Kmvv҆h;j7Y#bilm-cmlܡW Qio[,%\~DG|A4g$]'4h'h]TGEm^|/7:S\|IFWePz" fp֪C9/,=Q)ϺEOqn{nq'qڃK߯=rQc.սZ0&{{x{gw犻źa+/+/AX VzEloSUCzM7+SUX r-v'vJ&M_ŖD2wB3zg 鑎E} 5"_6XgxS v"VAWVӑrOvZɃR79.Gӂ2ikcHw_|'\{/wGHI59zbiRBV'f$9s0RwЃYZ+)^qꪩpryzE6{%/͝5sK?s63mn Hp搊1@Fr~ys|'䟳6_Pe',<|Sc>#"sw x#/8.,ZAwonE;;}ߨ`ج.yZmlm[`!EdڿP%SDoӮ0Ԃzz[¯~r u!m EK(+֍%xh~?p孷Yri,rmmVЎ]WP9dGǞ̷ag)c*jC;h,t ts, OCck~6߶ѹܓgymcFܦrmh:=5 m]d!q@;:toTq.8r~2t4KTR Xi(wj PZ3K-&7dYߒ.630t1\'uMAW] ]Ig:-&(E ̌n3iLLt yIU.[W{ @NC A*$EL9+*FbsdArys]6<}tq// Kڸtd_i;[ |l'8.2-wo~d`ѧ#GHw^5S¢;G,ăOԶˑ46 7 ٠!nF+`n齰q,DoUk`Ӓ“W߸I!oysdp,apd}}7A; h5cI> n./g6T% NPgF Qkqw p ÏdLM@ARA6݁QVr>Hs2t3` A "[$6mmXw5H=BKR d5󁦠HC ueh[.wA۰G^UrRΑFVb?KOYJ1@OR.L(b)(%( H%dTR MPRy2( Tn|Hd%& k@%hxh<@A%$ בJ!BM(g]\&\kM4ٌQ_@`.@$ǭ pXul*/o:z[F+pѨxT0b@$֤d3c+{VV 9/iE]fS ƒIk은I0脃s K&Vube6p_KNsj8 sl(<mO~yQ+t 84®^^* JnڎUk~$;A#Rv!SC }*MXKՐ$۝ppNuعcU%> W>Y;`xSג47,B;[[7ΔtuCpM~Zn$7mf=)-9x_zA/,>Eia䰀nLc6ϊA?1n_|o@gDܖ_qc0SK IƒWf9 H<"S <]dID*]A7  Fr)q.`"1Y-h$M@^,!HOg> }AS2kk1t=h7;4գ4M[PM sK5PC"r;G*ݤ@QEf ґLN Z@# %E(!R_F6h.( =Z6PAEK H xBMTI1K5TS '*V@@>ER(D)shP R@$JP- Ts(\.e!'@NSCr,Ip$d6(,nY$ÃM΀,>o_Jy@\32[6{?zA>y4sqbHӹ1\б6g囎{{'g'Q<>6#ܵ42 ^'=(p<+|(rqXL1 5C7lNz =HVs?0r\ 29r. \qG&Nxm ǘQ:@[l@Z/4(RVE1dx'<U}F)S`.4v5%W( \G>A '@le95P(K[&$BJ@5dlp8ᚺ')ē #/QI!CRu;Hd&8 Hci] nc(r0 k^xys@,{zJ6lx\k–Q&C\N #( -5mN-û@SHLv7uAdr&v& \ }6 ^^/'Ϋsg21[pB,@s_! caӮmBO+ xZz&ĽlU   s1ME3 KR",&8!"U]MPmƸPM]Xuo?VSK^ AWԩ, pFUbE1]^`hty9!-ԇ5 ޾&? y{9aP .sPA`6E?> y$¦q$NuҺ戱M O8~f:0b{ȧp) wK_w0Czgs Г3"Ob%: O9iN>.c4ps g<ТwpYϰouEf){ۜ̿:ĉez.AaYwk6U^#U`.e?>?wm,Hyf XwlĞf1.~ܫ<d "|\ꂜr-Ynjhҏ /鋼 l4 錓 c9(ɤS)1g'=F 7b,n1UF1gmL7as1΍1\/lm@ LŰxָ @vP,OeO=vǽ=н ;`;&U۱`_wAZi&Lf?5]=d+ǰ $Zc"gX Xp^AtM2,ԫ!pʜᒻmH-keB3yT9e7 nv8wYȣ-Dgu؉ŸAfEtb# vIԩ^T \?^yHPGVP~lRw!BSӷ1MOSg$?:,.uK ^M_]O5 E(xpsY>],&c/ϊAjkVbNYi$r]Zw{V% :{Ip$X':iAPr(ju+FR'Ph1ؠ^7iYSoK/kkDCw^pA΍> e8Ԓw0gw$Yp3;w_;&p{lO {r cTCa,ґX~{nݬJ`,]Xt i#4~gqWHoT %9oЬEÍi9d>@'n1cz y+\mt<=:̝o :j_c0>s@߂*}8Z,Ø`[ObXW;"d+7?a<RnNc'pK^; .c&K@K ?d b}oO1ش\^Dm%;A`l)  \Z`j)NݳaBCi#~^G pbd۝i5\g=sŶMNhFwЍn/Sz WF2b} 6K?>?Rqo`x_Ya7*3ZY)rNÏs~?Sp!@`Lp~`#KQ@`oj탳d n'F7;d;`Mw9I,1o=k;+αMWZk=緡ѥ0oRm.sAڱ]2CG܌E< }*>m10?pӎN0o!t'YrF%3r8:h ep|eP<7C.6ݗ\@B(` ZI HunR,yjȧ 1$0H470K"l A(~eg#Alp0G5_d?ꇠg1i4}XuVWu$LȟT*8%@{X^ ^S4\{8Ld/?6AsX> C;`7)~ h.BR`B 42J7F!'*<  k9(>N#5 ;濬e*)~1fob`gӁ pou9M,`/_ :ÐmZ~a#W~+8vɹ&ˠ8>uyRZjfouˑ}qCᔪOwò, ~ǫd=޿k;%5a9JqCS8_bx+xzw?E^&!eڑe"pI.qtLCYlЌ~O%KHm}KD;W-,:k:TR`Ţ]5">͵b!ӒnqVe*Ъp݀IY\i,(J l*qqE-/svJ7ʼnK괚|i4%MV9(vۡ^ȣ:nVxq#Nh 7|@ xN^j{!rxĴȫ >;--Lp//Ig7"jF94) {dڒF}MI ]A>tPZH?\I:;A'M}7$t9Z n2k z4Ui+B=۽I UN-A} 'a ӓ82o+, 2KG.vUPT.(,HTKw.HfK<\9EX~+zʟ -b)yb t\IV#!$Gs*A:Ā\JQ2vH;/`TҘRy^ 2'4H5xE/Q !B=.V{ {@c^$kx!d{T`+noL{^#hH-9[x@~^z`)*eޏ0`I>䊷;kOZFzh-]-Nh.]n5Tebh㤁EsI 1(p^;e/FSi5wqZi1 9.Z^O !L9*9 ́ۀ߽# #lMaQJPt JSX&[>_K V~{嘆R="#dGUЃX;&p9mP\ASxT$#;Ἐg7dxCv(*dNA[I/#Sc8U*NcFI֩n v@[F<7ײ1J`_I!~Y/@j1%O՚T6rXYn/r2{bY+/e13ۤ-sAFIP\թ<ny M 3 ̉[z ,j< qd"j*hdK=x@foN1IwK O r 2nNCDI$gɒkf)4D4-9Ũ hJ 'A瓨W! rR!-@jq: d4b9 O 9K4Vq\|7B 0NJh4JiQD.tjRFmI^K>+{=*e9HwX t]6x߁${z@18 oC8ls=À{Ts|Qn]V̈xuy^^rFk r= .hv-(gZƱRֺrrsdh{Iˠ :,oeCo;?u-\B/5J&1u=vܼ"wPWT}MhQ+b|E4nS7zڙd;h+lsn. ,*I:w^bҟr.(;z޲ aX+0P_> VH=Sr-~$1+]e,m7TR7_w?G@,4];̍2_kR塪ׁ^Đ TK -Iu/5A2I"J, ́tq3ЛB  Iti (s\I3h0* qd|K# <$!` ȧ# /Y|@w_SM'ۀ'A汕@Je@:'i O8 Q$u+MS KrYJ YFBj 8zy0B&/ efY@_FvV %ʫ7-(;_d$ZrH% Y! W@"( &TIHwwdw l⽖@zT:y3`7{9@>x]ᅨ<}aRTs@ΓOd|c, O:%uakw@S”Jqdҩꆹ$0.d5!M3z WՉz8RsT#,?_r(ߴa(t̿Lۃ2f ^5eMJs`u_u€IS, ލy=!41G횫:=7K rYz@u_oԨS_BgĘ1Q@~gރ&~Tഝޓ~KYяBsewip7, fu f^mCH/o㇤E{C C U4@R7~ذ) R> 2Mnd'p\ *G'8C14p,AOj@t ϒG6E`=|rkrljQ@92<=C54%e_'r-% "@sQAzQD{?ynͧH |J܀N @r@)T%@s<5 ԥ mC4?0[C2ʁ1RN_ YJXZH!0DvH:Be4ȭRG|rI'@wW39Tk" `l>^ z"♢ Js=P@OkXAnn;o::مD*݆k<3;ʑ^;}K~oq/OkӢvτOHjPZEؼ݇GmtLYB{m Q^DAihg; wrSAhE/ #-r9$!ugX9lXO?v7ZK#;Ո=۪D[qy>sf[3`wA!wбNt.aSꨃp)4d t'Bڛ]X(F㡇X^'CH/'$þo?(0H+J|(9 $F~9&Cd>gXg @#iFW +4 QJ5E&st؃gu@x ά/WU<( Lc9 4T|^],&>à6:lӹ9zMFzٚ-O#)uJ<@4  :KH;И&z6P 4>ՠ\9@3S%^@  @ΤAAz.hoF n@nA:s5A+z5AsJ9Hwt9h68g u+i }B=%AѻT/tAsDˍ;wބO}H@.911>i9}Ri pFGd̀,os9[:Glރ@${'aq{H쥮@jx 诲w=TNĸ(H' 7횆QMAK=so@w;_ ]f]DjY' z)L{(לDx֊6"XUЫ[S@GI6ň&H wc[3`z?@LBxXM9nrghjM1 09\gЛ|nAyB~P OH:4ܝ\ ,totor~SmMs~']qmN8r@]z_Tل%6 .oI!ج#g#-  $̛ @A ۀ Ae.B<icvp I@ TpkM7FmHNgxzk S8fM&'=E`? (*)4Ӡǀ1B h_vjгh}11mQ5BП\)ZZK5 h{IF%p>jN. $ TXAPHtR%s7@&Az(e;#kuu7h J_Nc2 vg9:t"A}7D@@# Op\Pb2 JMO Ni!AP(c-R@ԗK@Dā7h2_@tbiA-Pd@{5j4ў2t h? hr9]*3Щ?,y^d:ZcxwDXI< xSLh}] ] H :] yyםIDATgj P824)6@^:wڐ[+5I'1wB:o.A@~8[&zOCqfhUI "M=hEo$S<i*.u ^/WY!%+6#a>4 y'}P~[ aǡ)KtQn\EE&jy܄Y9G8H<լ .Њ-p~=\ OЇt+M,H|ֺ c!4 B>S?o=m8 lA F_i%}.Yv󵔀,d$Cl *oP29)K[A~R@')@7ɗ }eAF"oxJ) &~< Dz8( +Ă T;;F|/>x4D-Dk7 wq+X%r]i؎}vb%WO1A4< S&TL;z'D$U;R]8m$&^b7'pȭ/aިy?RVԨ@ 2iN#Xٮ>Fl3iJ >]$vgn. X|xpQ# 23z3b ]X3LL6nbkZd~ź7 x坊 IO<7|i 9 Bwcs3-leraz2yC2\62EGeQ f0|r>'T-.&!׬}guY^: ^S4I) 'u,0;N 0I-TBBޭ~VzUuL?/4@ 5EM wŶ3 EךTÙ">8r: g-K)ΗNDŽ6iІ`ZGzZhL-4:s&er?t$PX 1n/%TC!g(cg;GDzx;g~ X&ူQ[Kj U.ˣq/$I ^=eWX`3~ Ftv@+ tN@MM @=m&]U2?1pZIcҴ&a/nENZ{} @W^+4ΧnOԍe}S'Z/@}>?TgGO>x:PKBsS&_dz9 ,-|K%/u!Ymwᶨ{{$#VX%3\}%f/8k?ae\k0ZH%EAy)}R8ڇU I? $MA7RdqA{[К]~tLS@a+@M m&Z ,1k,wId5(;>L s!c>pvc @1ȹ@h`/f&4VII9>EW}2S<V  #AFcjF?v@_LY4 Rm,g{snuWm颷~犜&U ѷyUEpAȸ\c,pkv5Gvg:g0N;B3Y w?\yCUzt{vKWݣzEnAT:$M lW:ƒ#w?>R6W;,1:裶&?<&;:X*@?ե(hd+K^vr+hfhS~d:Ѯ2M׽=*}afik]B+@YcA&,!`h_@{1-a0JH1 1s 5.23Z;JԶ"@[Sb*Ѐ,JȒ"d1GX9 d#G$t&8,d`w a~)$m G '4\ yAZcЏ^l9qIov }]>F۫>GX N n9~u&m*}λȍ2r4j_@tTŐA,n sZSt3V̭]fL-csJOEvMڠg cM:&[077Z; fR>"vlz <{ wAU 8:uN*F6FJy>$kV b0[b5 x(j|ր.HQl%}b'+Z4Җ-Zlnn?t!f#{? -߂8^K@R 4S$}[AYBH;hH.4{t 9 rP8 W_Oo(8H:pќGp $(N͈s=1E&Ђ{4֔HIJȤr&vH3{HG# Hy: 70Pim; 2*۰J&`֙Mvqykϼ>_Z& Nmg࡬YOedNpP~`_WyF:uCQ*x53h_lf**x@Zf]4)fgٝ6 8KeX3ov :9Y%<Rߏ4'I:s-"^̯&CAbɴBkz5mNȇQgg+Sh\u7q9o-3~ޮ+.?[${u  t9ꈴs]Ka.+NNU ;_9|c9ՃXwm6uYbʡ,6!cb,ay |O|iH ;Y2ڱ39&{sMCG\vLGV_I 㯄ܼ"~@/ ́~y|h~1apˬ{%i,t0~JAutCj zPS5i ]ӴfƗ7ᥤrB`{\ xs+nq}coze/Q>cUQo\::s)r KECҒ̏rd/>guPzmsخ~K9YDukwq5w>9|`ɱW3ڳWza?%?X_߫Bi$ Z4`[@73D`~s@?'YAΖz֓J pxI灜G i (wb2A"6J HoQ B(!%x\gW 'V$M|ZAЇ D<|J 'C d4$45[St9@Po?H&@_zH=A"/1Sx 6% JW~P,Yi|$s2raDL⪓5S 7ѻəta"] >p|7ǵosh L `2|üm YIR^#GX3VKM3ii&S] fudznngZFǝ2cQt%www3~Afr>Fo g9 ,{8{soTxqNǣ窖/}[_ AIXET:6qs#dO5O ¥ 7'8tЗkp3!)继mёškZֺnu>gz|堻L⸿P! @4Y3Ki=?Z ..Y!{Z f~dـRX{ ;Gǜ: 3O^:٠o46>;5MuƁ:Vh5RA"|TA7F2J}2@Kp2 @'Xӷ(%= I"B @jXN Pl@K$bSJ- ZD*6b  I_H!H.0nlFZAo/G r. ([A)hh t/nf(y'<gKgGxQrXA'I̓?[y!V5%:M NRm_;uͱK(|*"l/u2:hڱ6hW;G招mnuaCkҲ s*\WA8]T]tA7ps Κv0[R@7 +q&NgtC5^еgmED8LW~&_k]گv?皩s-XC #U5j^_s2:zo4m | w MoybFiΫM2ykvCG \˱|> 6ru .1ǸQYP/ {r kGܚjO>m\p%M}&mvmSVjhVzyE+?ΔilMZyrBQ z/AkCZ g3EPHJ!ʚ֬m`tHƁ°ΠYR=gih6#՚E@Vi0Fu7h d7 Q]H _B'$l!EDBZ,K1@4Ԥ6ԒTxR 4'_FCL6u $R@v&ui( hLC)a1h_4 I҉@^Ѝ (vLdpHҚ1a sK^[eo A~6cs6~9F}mNB \#0j7ۇ UʅI$ _WxL׌w҉&O*rI@ja/8msmNcx%0>rrngx碊{_a5n^$K #x-8✽PsXZΫR.Wh|z}})\_npko_m2J,kl]]'@3֛ Fz@cii QD H2N鴠H Is+ZJ 5I:^9y" X"J | mc9RWK5H6$Cr lr c17]} {MWˉyup(?@eNWrKk;Ιjc[>>MhmVk6xW5u=gv0av&ziX2MKÌk Ysi69h5Y9Y'Va @Xπ4n`&=OL/nޡrP ҨphZc %&ueil Wy@iԟ;\; Y4Ϸ]#0|:3ε d4ʞٱ;d|08 J"wC?gCb{ oW +]Pw{!M[ODΌ0.=|Uxc!]!@p8O^x[POح}_GM9c Wu#r+dje@M%zx\&Oꏬm+u!ȧ@>݉t"- ݅Βf,ؕqcC7yxaԪ4 Lc+8=,gvFW8M;)"a~t 3r;!@$S7<Jmb4 AҒ6 ҉ $.L,:3.nDg IGOW9EHmhn9 !B h— K-cA:HGa+) X+nw_6Yl`]kxdυ"cġƃ@ȡE 6!pGefTe99OUGj~5k@kwwW/+Cea y(VMag}gv?qq0*p4)>XѦrzЯoUűwN8Z*sʒ%6#cv捤 ԙH,wղWA)7xsݐˍL \S<δ(3KD=h=6]toa՟T. R蟻гEC+m~83 q3qvukX=je0{Om4c^k, ]hچaJA޿  Yp=<"п4ءt0|<`"okJ:I9ٻw4hFٝg4 '~őILgE?c5!(IwsUnr;6k_M5ߙ0?0f?G"34zS48H3R 0@4)+G' s4@ @G@Z`  1PۍQ < y!҉T:S H$@d#mh Gg}=> G? )QA |4^OJ44t&J=jZʥto0 \1Fƃ7Gf~eW(;Sn@X$,!.7L`w-GFmX?A\3a#<ob2Ҭ!S WӫzE=Zj?R*Q_HȑMcߘGrdu3uUnAclr-Af;6&ծ`ފ)ygm5^{W_I'ƽѭ c-G[/&)Ы,whMթ10mRh l j W'ֽ&q anJ=л"лl: rhQ+o_L|(L#՘gnϿiplf6U1jc$I[۰jgG6u뭝QwL2jWC- t,)Ж]t|DLEz\ZZuI>0V*d0u [Ads0=ؤn3>֠lų2d<.NdQ yr Sz~.S[̫@/KC9hҍt@" hN &K@FH.BMzL>#V.&Ћ% 2̛ FF"ی`Й[B*N9PC]r.c R_@&e4;=} pOyJA`{? y ,moc7ZzWKu5mK$оqq{c|dֈן{@XeUPoD{ym㼔&`o6AO<ՃJJ+ P ~%|>^2LNt܉l5 bc.8XsR6!ЬqeYs86bqQ \ByRdD]n׏)pm%}Y-H4,]G삅OWoZ >^ڿ Xs|_; fD7?]oHI`%X_Au~_3BݝH? ஓ(tfu"Θ 6gM΅NaeL>m'۹[]$ݱs=~4"`Pڟ],6vXתڧv9ntu*m'Xv׆9~ܥ_3 %WoIZ` pfljQ@?! YW" i6<<,d*  @3E~3[@ Or GswFy@@ZhB ɓxJ:pCg2A [rc @*/2Mz]/𵌓x)2x@Fw;W@ck-xs;iM[ 9잯K@7.p/[w} ou& rt}t]5Yj_.:hj@93f5;UX)r_{dt|:30zc1>m i8ePawB0WhLhGvQ(6 ִMgft8<>h.uRwaZ?L ]Dh3`WOw5c_&q9k`wpG0,9wg@41Ei5h e7f :{KQy Ŗ ^ we a^+Rn7!o*`WX୰+/Ӳ/&bX/&(.q6;IE+Mꡝ &O__!pF_r!8ś5[!weseʓ {<ܲҔE0u٦s3icQH/]\l.\5>g1+-ijcֶݢ x8t%yRN*KAAh2Ł{!mEt<@eKY"rR Bxp[W$^$#H-  5㊖(m8N,P)F/M24tYEIi/|E(2c D>{7H %]Q\.Aw#]ζHznYIrTJ]pqWzpzJk-RXn drIH/chs^  R%Y:=xksr3]io5ZrjgS*ssUfgh> 8SV9]뇁|} l K@ZY> j)EhO YKU<+* ^iGm 5w9{˶F}y?@eUx 91@@k+#i@s.\Zӎ  r^BH'AjbR~=|hXy@*Cx`'MmăƠU)E2E+rH"@}emy@ƀ*DfًbN/XpaXn@iWUltd-H[wؤ3+Wk^UZ]W[լM7]$5*F4އ1M AI@"'^@H@ݐ GA^)G/oUyP..twcYSXC.q|DNLs֔a.:L7Q `rNZ8 #c܆M1F[AI($$@%'\ PJ`;m/2&uR^$U. -?OZ%{Ä[25Wʽ5;u5kScYJlq,_z$ TUW} g*wf_54M?~(N/#09!St._Β .h4y,t$ k8EM%ςd0G˪@ih6.63S@]U"@ƢA"+O  ﺆww0X@n{Mjg0UEx\͓eXu W:Lʓq}?? ۗ\' |CKNNsFH`BK%&c!dNHW^|ga!~ķ}o|[3Xވ{57(H$8T s=ƭ]NW5ӝn ^bI,ach]vV:vNvҞ0GfNrmTM T5q.PjW.͜#'|Ob]+ E^Q/mbK+Wte7"V#8<1=.(9źb=&}vX2F8o@v/`:@p2B*ÖݻcK0t?f~xr\:)\/7Q'XN@!ծ 3Ż q|ۺ*Ăԡ #Ґ֠ē $A#^yygsލI0թ3`%~ Cmia c'L^a)Y41lܻp ur | s!cd58?aS/Ϝrl3d̗UQh++k ^m`䓚 k"{SyA~#oft>AnI1"x5eGx%} Y"$HwΫ K Y#3 ǽ@^*ûhW%N ?== Gቬ)S%]8 Vh5ܵӍZ@O_[XBn Sߥ@"K_npEZ˟ZLQYYj<=t^}\4x}r+φ|ǚG|ۡܒΊ!#g'￴e1VU5iS|Ζ=%gvY EA3t qּս*ޫ_>+u.>1;ZXSIo8X|bM<t&C)/K_2Z|@k~w@y7JCPBfƗ\}m~r:QYl ]s=! (͂M"$pA^Dub>ra:6&7 Ѳn 5=?DyӖ1/% uz߽WrNL8dr۰ eauRrPVqM'ehy _@]uPNjF`LSݲ1 UloׅH?}b[S3=B@Z!~o0iZ UpXt MP.]pL؂d-T#[l [Zq'a_ Yd!끧AFzd=xoC`~#.@{=f\fw^ /y Y <>Ts[dR^Jj^8)r@zuH; vg}9"Q7/v8@@s<'7y'郙EA%;]U~+H-Yx*4;6g?=8{FU轠~`;4?_ MqW74#5`lf 巃rM+VV(YC rIAy9@R'N1ob.{psݵiSࣗ*.B\<#cBI3JVR\" !7T^u5\{q)p2 ZóI H\dMRrtX?y!H$Aҁ ?!s9j;4njz[NۑA[rVƮ7"5@tmy *F9;1oǽ@Uj,=/>rt.~M;RSFh2@N:ȓ<)5&RLoj4y(*<Zֻ,u`ώNN{^ ͏> &m RŢB˘=6@3Bk < ' ۓWv>`G#5M7܊ rY q K{M[N?; /;QưꃷB.e6).w[+'R\x$+2^d*(A&3Mvtvs %N>~ {C@^{dOqջl{pF^/@xֳ9mIGTL~s}n aJ15(eҌ}ö Ͽ>7?e|oe`+ jÉ>R'8>=@YoBô).*-_yPJ P?( D.4H֠6H ۵#tK|#4@5"@N0d`&78 2@)3ߺ{}0Վ(fE\}}W11ݨ? ׋6]~'^t\@3hbM.BsT3vq=] 4 .~xJLimX}?KKcg% X3/?9vq h%ٔAgt} Ն͹)#A$ MiM @ HJi*S;GG6`Ki$KvBBi?:h:+p;N *ǰߺ•F)B'xc Pޛ(rk!AY36\n{$;|'S>Vz$4a0x$I*FRMF eC%TiRK Ӂd *;@a<azK ,H^?y%t39 2JǨ"A! +/Js\/W ~1|Yr./;ȧv8f$"Z,̬Lǻ~u[p3dc ^  ʄK< SN x.+ZKW\}RWH pPUq (-Ii zA "!OZDWHb %rK%L@jzc!ZA^a @S޺ #hgV iҭ+]p5k~naTCz+2  {#QКe5{;~gе8jK+UI[dy z'kini_wX1@/2y ) $T+R5gfﮛ= [##cPȲ謕]󺹤:t[ &0z>c /=v3R d.R-Ɂ*}J@O YB+5C-ir=RxmT!p !Hc~#40гTuk3ZK?=Z8G$Ap94ԯu%p`A9?x=*$\+\of:żiMxUz >[7ΚEF95GIEHkHqk)3@+8ǂ#O@N%-뗇]_GddfP< <z~mk4:z=`Œ·Bf3q]cy?ys{ ]ssZTti)@F I/)0fƎ׃f|mAݢfTK6%?~Q;N`"8% 58!C!\.´%4- A+h |K oj㙹`5 Sd֤-n\RǷ cVvƮk;MX Mȕn`=48xE'O=gAZO7jtfN`6hP~34? M@7InIu9U6@a*k>Z@3h_'kIzAoi^g譡 QVs1m?KELr2NG=;SJrΟ )z7U%ʗQsðS0'p9ܘ/Xq}sy|$S2Q;}b5r.c;6ø>3;A(]<30M["wtPdL#sQi) y4zx ¶g^[.>i^}\s6+ tv@ t&~^л I\^э]lrU^:Y  pf.>~ #hՠnq6KU VP rSQByGmCA@jN[=?TYfPbK %?,PtV %?R% g.Bਊ|:l T4,G"x7ħWArd' 㱯tnS׬ $Yx鏌NUZyad̳h/uuÒkS5Ý2lch#n38c.2t~>w`*N3y!/ 8_>oφgEMI&5%%ysc 2Mpm4-I4hg?_wWI)h{SР5ԂjOhh088G_ _QyN3Aq4ۤ-EYVjF5K \I}" ZIc@mU59{@?x' Aw-5 p6 WYWvH"uL)ĨLD #ikԅOK Wm/ Uz8t#X..T'o/6nl y~ uېF~o^ᯇrŪ{JxѠtA=ڔz/b*w J)` xevE2LzxRb tT7F_}>?+ZT0>(SKܻ *z t 28-RQ d-A'1Gj Ie28` +S(he@g g?VA韗-`#瀻ZW/LA{>SrPi\zCeτ/_0ʏ-q%b* DsԄ6e[5E}74Fe8ђ#!vPSC>{lΰUq#=e:$W NY,J¡OY ss+e~MH^tyP,4ד%}de2N,>Asn;.x^9{_׸kuE}<}Ca*^'h=^^7t\k{-n+|䚃Pu rU%w'4rw-|06CJw{hOXsO_=0 +˧KH8 $rQE| Qrdu!~ydh7X\ZK3nF%m[b[18𮎕h LKɧ} ҕu&mAA'BE, O﹡ˁ:_ˀV!YIβ 2t5hI9?CMY xKJB c1D>8b TSflŝP}vЊӠse\ O+KnDiV{3-6} {&p#%oMS]9ksv ✅aª̦XR"t4gFv̒K%,UaݭSk ^L3Q6P!zO^kϭrr=zNt6U1y0!J൲[PցqΟ.-v:S_y%˰p~QrUK&krƿ @X?$XcazɌVT:XWksƌ~<:TUꠏJ7fk~KpƍIB܆ߤ.ITTxu5.@)=/NHcݫwAk"h-zOz7g ]k({`/*u-\N JC7 .,JvHS M> I0:s1Ϣ&H݆#N?\L|>H<`n {mQC׺*2n>R\[/+$t#PU@yF)c7tp/=0I+ G>bЕt LZxFBxR85{'Q'95Ie;&wmi_A;]s@&>:H׭Z t''p(sbáF*GC OT f^i TRJBMàA )$gcFp u@0øRXcL8޳d`sޫ vr7?2%&73xlv֢*"=UW\ş{\ f0qv%U;X?_~z_3Cs!nŃZ#@6a΍頣1gpw^{@o:H^F𗻥_Ƴӿ! z?!2%wJ+ ~LƟa˫-N?DZŢ:SXߴ~_'x x0/"|r | yC5.`6 r! e"<]*k?&~\g2nR }'sA^} :r:_,bvO܄ s-W~ r)G #iz W?wÓ >Я{)3dy| /R/:uOx㭂Ud7OC:_|v*noCܷ:ԭ*tZb_hE; *@ HnTNw/H{Ze ޣ—ukã+ )oXH 0)ӘĨbnMՌg04FuKF՚"v~3Ya 'Yg| 8g4 y?Ug a[C&nQn+蝭\y3N&<:Ŕ]Z+u$Naacm?lx{pt` <Lqܑg*…:zEr?E`s7ߢ;=٬WYϻG 22:+4<98>h}]UAH|䣲nzʓܧs2B 'HMʑ3CZ­Sע#Al1S4VKe=,y!a%nek@/2M?_4hަVB$hSw=Pbɸ'kZUW9O@0z t/&@M(k?%2 ޽ x̀@YJC'0 [D7zo.vN[hU'|rfY ZB4~;x굝9קQSA>ASr+W}&;-8\-UC` 7'C<]]}vHꚷ*ׁ@/lpQ2B%Go6Nbpcp16܈u>.L{-~,|G.G;+"&:&FZ B]jοX/ œ5d0wAwPBtLyV4ˣRJHIN ħ\;? L:q Ie :o/ z + ϱ@疍js:k=:c&eM}t0/B ;E#@ͰJ *֒ kAA- x ( dقefk2A-Pq}Kt #N {(6* rJXq*6IH3)`fX?e EaX h ~ Zծ}MФ7u3$*iMԋ٦]_2*G\u\-o J6;&[ JUs_g8` nQ$x`1~t/o3lKefqf-wǃ3)g^ ccC/MnCɻ׳xgb>& _̟7\7|?߅Qzz,˚e̺ޅ;x t9g@dA{2EcL#/P;MpvЧo98.HsڡTybpǥg-^s`۹ Q`Vݯ7-V0s>^ȉ >2oN{xu`r*r k22hcjqîQp V k64 v5$vO+D\$ H7*wGFF";H턦$ʼnoc^+->'%2Zr,+\㾅2]rE A2AZ:4|]t,%cpŨ3CZ[Ă7ܫ{kɸwtO8i @xJj 6@Gm4\Z=x`jϙ5 4֫ u H1@#r/+2ڐ Bkȣ:} c 7/| /њp_fZd@7CQӪ`;L<$M_fz$R6jӁ+ǂ PA㩥%@#ƁVI$K紌>M,(.y{z] ҕ:wFҠ1Ou p f YǏ6AG(  փ>Gߺj[\yםZWsձV4Ov}:ՔZaK0t8JXW)FA^ }U/2 F%^7 -1S,r|8q8G{zcayD`iCnz Km|FWyc[^qg@opXj"1K_ bdtIx5 x/Ν7ewuWZl" o6yiذ%')r)PKnC,C 40('C<NJ霼2J 9dy=iݴdr̙ /Eo $ǘ ?w.ܝz.P׮+ S).o_>05 CZ|w7hyQz iEAFHpX BOPxUBNۜ~rڄVs0q}߿Ѡ_Q+g _ i7˂}qM 0-HŵmM+yd~K4 Ҩ4JRyZt@Z,vqߧ2f.q_،=Kʗy 1L {'aTC^o~:#wś] x7au!\8eg"2J :x~ bRmRo䟀':5B,H\~`yiTL08U1 !(NL ?Y p@)vΓU p,cb5 E,p:bNE6{͞m6c*.nI_aw_/8 ?0J@Y!=M _2γv-2?7K29;G9e轵KL7 42}7vycדmM- s^>FT N]'o^%JG@N8cEzyYD;[(zn^dP?S@[?oJ?)3?*Gu@h-Z(CiZH?י XLЅ LLmD5e hvB] Tdlʐ ݰwL3z}_e{QzC_\3!ey@|L5%&@s-m= uͼ]78B-`E*{"H:NĶd3FT I*G( E m@rR 2[5=~ (ƌeE֍0YiS@e7ˆ~u ~ T^ÃqDv+{*7^^#:@N~nPcAS͏ Bt|YY<=@@ϓ#_p] zDnCIL?/; !i}>۩Z.&oڬRYn^) *M 6 ʣC;ls}Mc+`d"!{c9!f?S'_o 92A{C/؉*O>…w g g @PaZ@Kic;{YI߃?^8qz$ \ Rt#?; VTVIIyURf1d?\.ϘdUlp 9@U@bU߻ 'YmyPѳ6!]/M&ki-AE.#FV!GAb(&XE_Me8gAsО C";9 tHEClM.h;]}l<\=[!jt uׇ= 13R&i*ghez)DN8N~v|0k8V6dUh{!: #/_;¨uBc@S:i*tdѠlWE14@n+q+ ~¨`1 Qrrսm|n!ӷn^nk.O c-j'";xImF&pEfjqľPbz3uۑ&LunMku#;1g3nA4^ӧAOjE/0XBCo+ $V 0(굢NI?wu-)V&tc 8W_O>51/m /5({< <@"/>В&h&OT)KC6#@)_Fݹ_WLSEFO 5J^ze֗@{gvQ^*^Ʒ@s9h9yӬ>#q[1E/YpޚeQ~x/5f܉j8<*W?8(Xg R._o @jZ +@R mEmYAIf`:\!u{=CtP 'g極0nI~U&ƺ+KmB] Ye2Tl[:k*]/|h0< Ե> szkUug-@Coh>MӏT hOPSHZ-M"h~v KWrج-6@S9\+cC—MQǙL̨)T0N@_qPj ƒm2֎ܛP @CL XZϵ%5:7y{ǿ| np@X2˳X1$1oɝZ~EѨ'|K/=~!?I AWMjJJ@CJP hJ} E(/|e|{ZsynhܷpJ K0?<7/_rGl w&:hZyD]l LF'4x cң@Gx?]({V a yXJ.a;_5Y—AR(vm}p׼_ L31x%xr..tb0W_(Ih s  @6a!Sx4>ЕHbgA'<"y~*nR@:O{vIav'*UuϷu9b.% yJfHGh9'ҝ3lE[oqL>vû݅\Z^wṅ9mh &y`z=wފnͽ 0dxO٤/Հ6"+@wwG+F伄rN;Aa{/L'Ϛ_Ǻ0vrtF1 Tkʠe5Hw]e_Ⅷ},ȗluM݀Ә6^kGa؞X  H1ƠoA-,)'$ (%(ڋ*REm=s">REjQ@%s@d_XYId׻sv0Rpv5 ßpU֔~ 5 0 Fcj9bJfyoRd i9^@7rz KE\q_.[KfΙ4lse{9] PʨS&}f?@/_=42/hbւ"@ }@~y+җ$uD~ g$]Z礃XCII<?t\HloVF&x75 (zhLJ&K5(B@wR &)Q_*l*- SS). 'e-x ?yUABlj`f`v/JMO|[/m7x"JYxc1IK q,?Ugzi JYOh/G=i Uj>xt>W 6"u&~[SAҴGn ;- d2g`쬖)X2: hy92{˄C ԰@T\xȾLy| Dׅy O&R3G3*տ&܉w}0oq\\>|~K;߂1ۋ3 1jAH 3I"Pt͹)\_XyV^ IM$h 'hSi~ݟerVN3eD[m/U'Mo[iyo%#h([1HY AeDv W> Q弶J%w<xOJ?eO@Jp>&mͫw7;±8S  |<6 y0K(2邯AyJ)Գh(_,;`ao5s;5ɥ(tp/CA{L 13=D݃Tfae<Ѡ/!{j;xddPGPCdh2𤤐{@ )1yt6Ft>m;:"jsmMlH^, |?+,ݟ8ux}z]Mtg03 58A5-myO¦OX=#BHpe<͑Nz[L.6g? y?g @`+SUU< i _3jm[^5@jǼ9:bȰjO(saˈ4xAM@p7<҉" >RAx Xrx&ě3s`o>(њ_XR^nA =@z X"h2d&݀#Fڃ̕)*rrRU.AhITdcRa E1H;%!$,?~_å7rW]/w%hw"l߇ !QVNeiEm,t/TY|n8K RBߕBG8,Jc: Ccn1.3X!Ҟ1Z4(PO[Sr<(@.yA--@zK12@3rۈ r]ŀ m*rvrr{%zJ-CEmȪE. 釒l–@ XG|!gGЇ 7,h^LN{2ev,f-e-#ubBȭ@ `y-0(ĭ-=Hk| _^`7!Y m|k͕eZxݪVU+?>[3g N&'C)^ QxLTJ6 2{ zY[֯ҖR(4 S_܉,mb~p#M%0.:=idy }.3= [@7In&5S.v942ܸZ@`e{ tV7%- s @*t=c,v `3qY 5%e*t-I_E~k7hEcu!L`q d@yT뀜&{M"R"t<&rv|D+Ȑl -\d RL& .xe-XR}rܖ_b'8 R9 DrV6b,A8/%ˋ29"6pK׶ArjOÇFmV(WpR@egpL3$W3ref┆A3} ʧu- vɉop4ߴ+ݎ`c s;&"}Pf~"@ACo] o`'`O360`ux왨{CCz)'n!=c9p4 =$xI%JK26e@?REF_ɋā!$H[Cd|w̒g(5lx_wB lHaL1rS0/LP"v,$`ӓ Msi8FY_V ~v}Jx]ޮ7F /e)Cz^A@Yla7 *e= ޙq6{hWPdfܸ@eM+y5J'KumU_ j<3 5/@bׁ-`CH$Fkn+va<skqyl-L̯O $/ve<vnT~>_sSA~ Yc"iFpLy Q[ʿ '<ڃJ!eTˣS:7L&YxLTq&y_3\þ1?q Dzo#<2 Q< "Nf' `宝K7;v&n;k@[ kX8h#<e0} k]j6pאk}>Z:W le16v iٵ!͠aVVI@Ss(H$QQ@%) $IHA Z=0sf.޽v'Tժ|:zAP4X^‚R@}=z'MIǥ$C*AsyEiUӜ_ .؏@i"%p>K$r-!D8a@I"_*IGg> R N)$( :e@Qs8 IH9@=|sLg8|+. ˢv,(0%kVye6PSt,w^n'v [o*pu,(sh%u534H165ɞf,ғƤ{gMޝ^ (4 H϶.m(;\) =$}C1D<n< eX?\ µ UpdPSW^.Ik AvQY ]J$JrK(:JzpIQ I2J$T ]a ׎A:HuG:$d\i(dPXelV `'s.5 6C+(3kNw˷[Y^i<:1aO t7·}>B LJo? +F]wþa^ԻvD KԷi3y?|f ,4z w|s'6j:2[PX_d9H~Z7o#SA'@j) 2TJ, gO>$C I!~=#z'H: pMK0^Ͻ^bOA#RUEC1^mR`d@L>kSKSjOIKw9DGtm횅sS )d;ngnUKbu$3tӳOj ŲD/ֱЬZ @$-q3Z)1u+@I/nAٷJm,6~.|5cTP B4! nN BqhpP-xH{,のBw+nvY 2侈&4b MW.\ZK*QkQ)(e8pҕĄ^zJ} HE=y5(}.3 U\7j)n(A ʮ4p"dןo>HF =aPH{ 9e p2xr &6e)P71MyBh{ݙinҏVŚ۟pk'lSc~{ag_2%x5~)W?~)|Yׇ9Ke=y|ޚ;s=]pLlqUU'vv$?8Id`_Hl2-#)iZ,E>4DXH!7e)גt# [IVѓ,g}A?*Ń .FWI7E/-^/[d@? ޘ}A U/;2'ܦk ݣᭁBu%'+r"d;C# ;j4 ^ D3ilޚ@ GSYv6#T!Ao QiB+ וw)E ڀwbA&Edչົ]n!HwAX:l9dY rrԖ2 {.1^9"./PfE^]e?2{M%ft2= [x7y74Ɉ k$;37[)/E>wRyuVrR $_I&G@A ó_YZ}|AGPxjq%ܭ^0sE7@lb꘯oz_N{YMں fR6@'abp1K՛B\ !SjmWҼ`Q&pX\>6i.6!`񧗱R cr0 h-V<9^'sà`Bց?^fǃTJ;C\iڦ}2*O*ʘ:ҕJ99H==vU(g2>\"k{(4ug\rXvt48 f'vHZ$O 7Pߺy ^vg5Ė{;!fڷ߇ϓ';貁tc(y_6,Az/weL=`'&p\GnaCG|+19@CL?y7]+ 2dέ^z8ꏗf/n$LX D_p9BgT/eyA"ಐmw5t0db'H + *B J=p-e[ nO@*\?p@)w*B ܷ2\3@hRtg%7VtͥI]+E9rd|cC.ܸ/1a/= 7t{)eAC=Yl`-q "s2E>0 &gcIRCs{8 Ft3lǍ+[VP灠;#(-_KY/@QEVU/À - h;GZPsrTT9w 0N%x!J d>"3l&@@΁ + ]Oྴw+)wP$:5a) vnݭp}ݝw~<օ>iI){_\.ŸP"ExuGj}`-$p%'@3,swzLhܛ7'a/@R%^)oTaEpD6/g%OC@Bh:ɍբaMO@_ǚc0&dS9cR= $#H^裡oyLa:P`R$0hn<_ s>g]zԳp+NK־=B%]IBMn+ jRTC(Ul7]}'];2~7Y6&sC%e` er@ֹew54RwTBV>ԏ %yгP]9@'N,3}4[DnQ[86kݣ,owCF6?YoA6??]{>lcHAP? ^ uJ8 /6ye[ h%%?+ [IrWJ,e6HVN0=0Sߥ&TB@ʍpW.*AYd\p/ t^p3$) VױR@nF E$-A$fRM@RĩaaQpBddNOW^Z#hYm.<6t{+S&P-{֘ʗlpCd$F?I1 1dM,4d(@>i ^y2Gy2-v#qXL+88lOg{G_N}f=L0&b)TP]u]2֮&%WTBI6@X]793HЗ[L^p ٵPJVCʸz^dw#7KrGf_BҎnqtv@3ܣZ u-@0A7BɼڗOMY=:YnɼmhWf. GÒ/mp @'1g3TDQ/17k#_~Z*4 OA_'EcR>0`']1Ud3dSFۘÛw:AdÀ/tL>a*BFB69ޯYYX)"pGC%WB }FpwЃ՘1! ]H<'] 4|ҭ0V޿F;;k v8{hc`.A/j1XqՠQ6Hz$q&@RTk8ΖY`n x~{?Ot_?`9-Vj A}̞,|3ÁA'x\<`6H &l2."P*6M&XS y@s1g_SJ 5X-FL&^\I]aAI)mG't+xklp t~6ϱ.~U=zMqChnk{ABЅই.8pECXD(5JSں]B]Upot17ssZvٶ hqjOEy z= 2 1 sC+ǟSΧ#m&x^/:כL|[U5o if).T @rJ8>a-cƌ?^=u{p*}n%8N*V7 /7&ґ #*g&s\#=Cc8,o$~w "}AtcpGBݷ d|Or ~ZB .=@ ,e/9kSW;iV6 y٘*z6T[u'ۂ&fQl@,$k Hj6Ҫh8_҉G}ۯ5愃!8IGA#0=RÞK&#xЯ@a.΁(U4-УElxLg93}`AKTNxñBUOrm=7DP78rqsfG; U] pC8O NQdT`ʀ̡+'2eAZTrSCjgx 7S| zD\KH)6>λE2\Nb'ȺnPܑ`=\c-[0^ѾX:uRIȴzN§4>MKU_;8/nܣm `ZΣzdE,k!՚ZMt|/C0cSt#54= 3Wej`,Н$l=Ctn Rs' @6>pR@5Ѐ8 +/Bz*14RncR@XO@wb;@~l"6{'"@i*Qm zÚGںNZ} ҂TҲ~\呏`I3: H*.!붝&x/5MHEJ{TYlp@@JnGvkSs~x}jLN𥥧?25;Үͪz_ 灠ՓkO9?fK`K&{fG![j`. l.t}1>vdz?~?mq:f'uH*@Kq yCvP A&)i,ci̐wtȳARK҃ 7*.径#w v/p#YȾ>Ljpֵ>YYw'3\$1gM*:"|Ю(~krw{Tԅ.Ŀٺ-RJy:&Ÿt 5n'Q:o{j)Д@5'PZpAV2s`3YswA =0=1"Hlē(D rN!`-qi t)>k 1uL8ɂAӃ޻F~lp% 9I v;K冧(}׀ l]va^7oV[w,X[w\:~q@ Hl+=@>c Z!:tpk2X@N) @d ArWu% v|$(Cda>o~{S=|~["{q+oengZ`p\}pIEx#vHmHl!J]4tFFJ?p9QX'typɓ@87"4.SܝBR}7>T հ Zyz$w+ya5I@y^uUֺL zEMb -d^X6x;٫@8@hL#@d$;H;=b5 {3@*Npu.xUaҒ)RRFUB& xHғdyD F`dwCpi| ҀN#wc@>]' x4=`EV jv̔l mxDJbkip盤"| ߖ|5<<~oXS7IX%GvV@}i sWs ̣Z -^|mv&O t'kk냎w4b!p0@V/ f,'%w@*>c^B$HKgx&$ 9IAӤ%P*pB acni|ߚ̲׹A {-†ۮW@"AV+dY30\aZ Ѧ9jKC?ޛ9 I4зHglMFIli![@HF>9 ;Y+ \b>@,AjXAWpآWt fsk FR@R@K-yn`O\R g-388Ý\QZ 0Q)GAŜV;ZGɁ Pc:T9-w$Z~DMZfgeK ?c푟O|Ua@2ҽ!C&֤w>d Aht 9Jɍ`&-7hJF2u| I{1m2*x8͓~U!@ YCPE;;ބc }_g#eq < `ֵ:r:ݵ%jshW gY+r1Ͻ~P#wwSLl>f9܍Vr'x8/)=ďF,R) 6I`6R 7WH`L"pp /+ n]eHA[`Pih^d w!{셒aмN'_WZeY}l@čv㕧 ܪvdWX,aYjJ4$~ nzVÄ S58/M_F{^% EӴM %^(*,jKIz pJJ|?†+2ps/. 7?46 EjjI_ke%$nV`k"38&VKHX}(ZHF7vA. `ĺ9 fΖEnTЀ~n8?Jy ]ʻ =I@u菜a4Cyy]Z͠G@ѫu?U]v{R'ojuoص2k/ paUr !+P%[rg_w;^m 0_Dd Jq xmɒt43ZՓ|L]B-2Y U=H#~/ϖ<09/ *$`#ZRdc @XJf%v {OH 8ipoQQJCTbDh]_`@[6M%n{7߻V5nHU;}Ѱ3Ueprʼn g .3+˦/>YLLmMoOo`}mW~ȸf L=-?Ճpak+s N& e$DWU+EAɗ\I%+@I>&ʷ>mE;ol~% zlO9mAk}Bq:N!T,Yxxc Nu߯ i)TS\ +Vp9/9ۚ!3n߲{_hM; 2BO<YKD!0hr|m#9EVĊ_(75fkb__ V. $NZ a Oe8dqqJFyd8#`Sܫ-i)ZS*J8hiR.bzD>-WV~}5 1-olTYbԊPn}R@ޫlƓ5ß9$&=;OLg>8RTI??Y__w!> ~; cٍw6]3{$d+^WJH?xy L|i.a>jre/AANqY)̖щl@ *pLkOA{1@y}O&sZ.@@P?(2H}&.c?p _0)t mL*u(9`/AEByKhq6.ʌ ,3,3]O2Tq aiA;[עos.߾)|ߵpb޹ly˹7qp!nx9Ιܐ'kDe@RMj iTN=#q=H^7 LVF/J,'uW3APH \. t9' |όUr 6@*}:\Y O[jY6  {&ݡzê |Vx*MT*aJ_,CV`5yLTY; B^8(gcы>Y eD bG3FvH昭xt5 UYg5%59 zcpb"#X' '{RdkO e3PnUx@)/ D HN _y/ _Rt{ 4@HD3O%1BN ot?bFO5jRVUcm)>tA'g|e{-]iЈßv @"HgJH%5@Rg}duV e,C$xi0~/u䘘rqjI~<@0C' d-CA X,i9IY$;P8 y\ XEt ۙ;m7#|ρf7h $PG_&@̐8E: o_yf623hZ oZη;N B@Ŭ 'o[G9 5]y7F.w'/e1X6Nfw,n2>@O -Nmsj$t:[Ս 6 fJ cG[ߴ~ 03EaOE4ZHj Ļ, u)%@ -\HZIPYz@KKS7h T(ف4t! hOveJ>!H z<M&KK ^3V"7]h4в>tVPk`.B3madWt xz h:9|TIo$IN"bQFL+lA#b^JCIaCaI_X]DO=0}IΗo/!99oeشB\Ff XIȓYrd2* ) c2wRSW')]Џ8i ۀY+@j>-ت}AJ} &eu0ֆeZxǠm?{ du=j ώs6/ҋ Dk4:W#ij"6vhw *86}>0kԂ{z `ެرy^6vЗ[YG&d%+Ч=caܨYj/xn\}/`Coo ̺#@\ ?H 9 2[ߗJf Q@KQ2Bs"":W] i׀*ҚAjRW[>FR HԚ@eEE}>@6̭hFs; X[~W+g9 ˤq̤6JE4>aiAޗ)&]*4$Gr'e|Oz ("6,m=m 4[نEga4h}KloAv1Sީ2ӿ5Ҭ&Ev9!K&X}tm==I7MgKHOD?z[}{]Y=~l8bk*`ܘ^b.(.h)N& ~]AWd~ Pnbѳaa]:eow?V޸|8HRPtl փB#Yr[Zʋ CE>CTs2٨'\ %L n5 P$n5@f;&{AMЏi#oπւ&Zt~H1%lЕ!Skg5K&;TRZS«>IVJKYsq1InT0NZݜLStuOqO2EDcPb~%|!`gЦZ;.^{N68_^gКe\U(21^weav[[_uJ&^|ԑd$v B}2 ^TڑR .iz@*E68b@l6-U,u-X`)?{]{a9e3Gk;佞hrOn\W7#'Qd&0*~'PT US OmJG)) ( \J)9 (/ԣQ.s]F`9't50Glc>kud*M$,K|jgPCWk7ۼ84V@+_ =^y/0M/N_$ iič5^G8[a':Z#A&d/|SEd0@6].ՏZ*OZZx $6I`c=O>Ӻtf7+ĘfS x> @QPB )R$ϢK$%H@,Ljp9s:pz\qqr 81;@OIg8ur[Mnq#^=0 t@^ RԗJIIre)K^"TyR\uY&#Pbrp HRɋϧpKBjVu'?bRll_g(p-OCk_Z {aO>3:{lc}{sYO{Ċױfm:c姒u49H %&YTwu٨ք;o*8Oocc5MMvVI}w ONﷇUwݒcv|ԾpΝb;5_mV MVYJ kRM>7Μā}FOJ&% l6u@E Vb;~@&zb GI1Jg"]s_/ﱇ, 461e_\ܿΫE6h)R7jn M?al~Sx«`jcU, s$ֶkjA;;b9ac?xX8y5p|ǹs™u_LJdE Koz4@"~;;΍doޞle*?%q9ϝyR9桨9M؄>Y v=:GEPqC? )4J/0p(5"OAGNy[_ʛRߺ;m5dJGIY6Z Sί4;:/{a9Jn^xq^?z)ʹ+S/54Li>='X盱[iwg|< @ȗpUK'<)sb|g`(Y*vmg?ˀ+kCGa _?Y@[܍6'&P_g0Ijnto.Oc ^1/peRI7dh}rC#<ˏie{ Y>m3^{>b\ls 'ntvnWMĕ $HZXzQT*CXdI*SxqJbPzvԗ)߆t ]qR~eL>Id @]ϼsA8'z4M/7QI?|?d,Z}$MP #b>bsvї_ #~)^iMN `WFW3R~h{Cm? +:7 u?_=^v}ɾ't>.ST86ɓzzPboBcAxBc:@2f@?H aN>%~ajgGrPXĸih55_c왈agy*q&Z#wl4T7=&W H+OEIҔMJHeߋV^{{Vaev|kBw~p1MmSWʃ4'e'CnݾTy2txm8u_mDwvGXs?Eft9s./dC؟Mи5boQ;Gk=zkVbE9eA8 됥 A ՔǒSOV}3#ُ32%/̘*{V{>K7UɃR~ÏWvx)V_ /)[}a.h>?xhb0<9RVxbגI @Oe/[&L05AWM`_@% Z?vS;pߏ}(_H)>py 6kΡir:pd'( { vgOsچ8Q6'?>{ڿ%OBۣBc sY\=@ODI< m @NQܦ]BU`Y!@P:H |Los mZ=m6@D6FȬ<LNݡN{4u,O8dꛬmaxhf}GN~:n㾁R 7$2 >x%dUH%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/20x20/000077500000000000000000000000001322401607200203435ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/20x20/cmst.png000066400000000000000000000047501322401607200220250ustar00rootroot00000000000000PNG  IHDRNgAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cmIDATHǭV{X]޻]-$ G-D)fMIѩ1$Iƭʸ4"Jل.LMt۪14yg}}GT꒤WCk׍*U0ߪ} lшy낣(xG,[ n K3]bA3'%HG cB_O=?*@adV+ @_`:qi"N4$i;pėn `s )`bl2H. VF%xx3I)@æ~㜇?%X,کz"zem_ 8gӽ I}( RNIBJ}|~d B{-O旃&]?5"N7)P5w!/"$eF^ O5;SLuT~uz`i-.GʳrѪ@( 'U7Dv?Lg(ԭvZgI>|T?0lu~_ɕ%Mf0)(T:v>zڥ@@@ @)pc+<'W-VRh2xQ"? 5yi`$م]ѹ Q_4B<`_) ; 4F]QAUVKJ:Vo߾T}U Gko-K{'k@@*Ugx͞GIryu|~?_]1u: 0{R4G$7cTK.HcnH@S* 6rٛ@)0 u|k-IDs@EQU\@?R뤱-ڧtT"5?쀒Go2k\;`b`[]QXze;D ir U?(.U݋0*Ebb OFYzh`q2yCjEUa/,WY&{<;E*h׳[d lo2 =DPl2"x4HzM݁nPIKv{ջUՃzd;Ն箑j{"'#^0;2$#_L?}r\(!n}N/D&}5$W/& ?&_MTiT;~;HPI6{A5t\乊g7 IQTkda2b_904b'Iɐ1k7$ oɜ7) +v'F?Z~,K&6/\{1l@\/;?i_]`NSPЬ Tjή_ڨ b\~}lHqBw?Ԍ^d mKMHofĐciHkK$[ɌM=_&Eɞ F֝&zO[T#I'5ȗ&*!ON&mu"ߝcDVƐSd&UNrL>e 8ft lJ:Bj kB6e$̒Ly΀Aj/gP#Ŵ%$`Ӛœ!mIw;VC&TЄ$k瓤lQ*vFUU`9~uc ``c{f^(")JRauA(;V_'2ac%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/22x22/000077500000000000000000000000001322401607200203475ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/22x22/cmst.png000066400000000000000000000055041322401607200220270ustar00rootroot00000000000000PNG  IHDR$xgAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`c IDATHǝWgTGKEDEE DD%X {([b!|@4$bl(M@ ݛ 1rr9gy;33wFSO4h`\a0N61ݧ5 OBj \l`AM+6PaEUqKq+I)sd7UEZ@mL]֛逞/1ME.ׯ-fYyϴYAlHrWIv5}Sȅ^vH@I;G@z+#VFv,%dhj5c <X8w5eV@W{~ oJ1H}L!#'-g7~wmjQtrh &gdz᣺pM؝^rW˺lr7{Ʈr^b Ub yb~N? H-* ˱u`:ɰ}HKSL!r1UD6ILFO  \~@bRV?$]4eI<8H68VhIR|jI"U10WCyIS٩\$*O&v S7o#ti:G6~[F$w~2=-]}pN1I=rQ&霭l}ALte`)W,ۗ ޫިzXؚvjI M%z vڢ\6$ɇj)Fq|PPݨl_];d |!&vȜ=J#|!f\ؘUޝzTфj8 YXY)t!OMm]c r}?8A#tO"g)CV ϳԞ'u*&I.] 1a |~FA n=O;hNjNLE6o<7flV4sοvI.@>9.u$ K{I %8쨨^HlD2Y Jo4V#tWnȷeDTj2+Nk6 7kYy! d%|4}검SK3٧K+7N7fndJV2(vNƦWRͧ hm"~BVm'm Ywe W^ D"+#OK n*ϔk_L}UـZ#&#Pr9 $ݠ~ 1X= 0\q8uϳJM|b n0ϿJ@"j*lZ^IQx9[* tj>-ǘ5n"\7q-@(+gpPgwG VI0xdH`r┴3>s‡{s$G*]e`e(݇P E k+PPxxp ( _S-(./J/TR^k2G%j{I-pi0iip0@&EmU 7Oo@+hLV-s:Z ٘1 p|޸3zg֫/l3S> ^>*1GF6&Pdyt ͉@Rj㰆Y/*6O{T+==@׹X~n_'$5 H`t쮪 j׫١L-I.nȓ];3,"{K2&C_yo9]yI:ͼ8l|5߃/H?8J'#$:H& sW>uD9dw}.dvGIM!S#[tJZARv7K4#d[|``Q/;&ܝ#64,K\3|Lg@+XLת_5)W~6ƤD\wg5% Dˍp;]]Vj)+M#ȆiIӞXxyHq@@~]ɒANd` N; -r6-zI,㒏e~W!<033 1"? whQJ'ڦfbݘ[D<rEi"`kdz}|umAuxO Γ;CzSךU3v^$6iviΒ6{&OI4$BHګE$9tMOu~4T;jH[e )^^w@AI"p3N FgLAyۭ8L%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/24x24/000077500000000000000000000000001322401607200203535ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/24x24/cmst.png000066400000000000000000000063121322401607200220310ustar00rootroot00000000000000PNG  IHDRgAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`c OIDATXåy|Nƿ͛$BEA QJcPkVmREZ1ߘB)c! "2ISm?>笽^E{$O̩D8m~hԯ( >b1LFSvHokU"#j@[?0t}NH*IW<\1y{Ӌn>1}uKMIKvҡK Iğ2S?sQn:Z!Ygu {HfCjbUJ&j˶_HI$)y[PJLH&83FǘgV{ߖ|g~?$RhWY֭ltRRԇ J%EwR4)yti1Ekt~U-WupP1rw<5 =pgKMgޝ\֒etf%nX(-\=4D r&R褤1Roc)o$^B۝[ i/ʖ4l\+i]ٜ34/*=Jc矑{+$)h7Փϥi|ݻKݷ3q&ڮ҅[YXI%ŰOK҄o̷5tҮRfy+洵64IV+K[C {Z`[ԜF;7n-ZD{]y[nS0-1Y ީ\KPr긭x1hGf[hE94K`Q:X>m~aWC BGnBel\^YXs+U:pv}t N\ͮ[ #Z S((8T|x\Ÿw| ٍsr*C{ObB 7t2\RN]Hcpu\[>#ñ^( 85A`Vl"g`Wm>8 qF}j 5lC'՝kWzW֮ <2FWmcԬ~ mHHh #ҋ$ g |t7l1u=zt0_?E}/+ ezeƃ͆vK2OhaAn^e|UB%圪rxZTBLN_7+ +9NmJl|N0j}Aטư۱/8D k 3ph!cAa)= ,';^dft^몥8`ZkZ a215yywSaǰD듻anǠANu˷%-LLV0V9tJi0S(S6dwJ?6ʕ[f:CI|yB7!_;˽τ!isRTzAEϪg! '@`GԂ XZ]g xCH%3\[A~1l8L&ұ^ ~- baB}I:Wm~R+e%GI+otGz\|?m4$ i#VwmߚhIeNm2繻qM$iJ0#_ׯ'gn܊,Ip͆=.kv;}I|Ⱥo4N;c܂}t /><:}v?g[@~ߞN- أ8KVuO:?JRِtoq׈oDŽ흁iRSJܙ~X4}TPsriu~)%̓HuG#9wGArs9el$Ezꐟ#JЮc@[ :<5D=3KskӪY~~vlMM%#Iw3HRo}+ uٻW^_Q/{\< P7qPj Է{Ȝy'nR0E}PA!uB`܈wU^$9ruxǔfa}UUʆז[fMQWB|}z3lrl+ڝd׃@ 2SDQ;܊1aX&AMM/@EJAɖ;Pő%;pm` 2CbW`spq"/rqYhay< *%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/256x256/000077500000000000000000000000001322401607200205315ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/256x256/cmst.png000066400000000000000000006732571322401607200222310ustar00rootroot00000000000000PNG  IHDR t%gAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cIDATxg.2B I rN"G &s$ccL`0s9IdH !$f;l˻gLLSUO=EYYYYYYY~mfmog,[ O_yd /}AywfDDȟG6k6kmf;Śu@ϓ_ןue= Ot+߯]>u|olk_6̜F0pP>çG^Tk mfy Y+;RֺYgOq=t(ǕMĜÚ:> Mmm~( ;,+My:80{A>dilf@~le%p[h[tʶolio,vyB'B:|.8!^OìkKANǛlpu\I/ff:>A:>ެ5hP ?nY6fmÊcQZ_~8 lF$w.ݬkx eղVF;\ơYN4bJtQ`J{:Y+Ł Ql fڜ1/Xo,ΰXQ} m߮8|8O!Srs_ő:t3K|qh@~F7c#^}O+p~LD+@;0`@|Z=Rw33esK%/.GrI Wڬ h+~[wv9 6x5q7Ǎn͛u'!ǐ+`,B *9 uŁv␏xA9;xǟ tX{)glK7, l2#C0Do)ӏS `˔5!+Yy1bry/YJcXl^p ֌M@K&C<'+Y MCx'zO]6  [ L9NSO/N_l-MhGf뀜tluĈ`뛚Z(1Avg!̏ ׮ }\r/4Lnv-9T<<[1R)>Jf&?.=`u0`Ns`e!+-&) `xx0jW s)t(X =Kf lBJgq O MD%APFD9_ڴśH~A ?߂{{L a00ބH\<[\~<[10ZneXX3qf|NK@pnٿu+1]f4MdZq~D9>rf^٣~ ,8x=Jd\O:,U<0DF`'t/78vT"]]|6Yg6d~ST ]P7)M텚Z5lf&C0Y'7JfqK9|~Jtݹ),Д.D:QJ AVȭ v+ [uCqqNSr:/Fɀ|+B|[@Xc~brV0u@ᙑ< |Z3#2mimKڏ~Z;آ_t8ɉ@ϓ],k}|#QrN^ +\.)ms284S. .-;rȧhV!T*@¤BV3ik%UoACMc^P"XWj~+6ٻu馆_S>wj׳qݛ@fܬ}fmioiNS=um2ufNա95F8|Ҭ: n^oB* %azI9:5dvm1`u lA)į4Lh[ķ9DVCnȍkTC! <ѥGY;oOm^  @zpe70ȱ.C.AnC h~[X.nRw`tI՛;6Jx&%jSS_cƑmְ lS"خ!mط6MVM*|mԐQh7 J `5sltơw-ktlDc n.l>I 8M&aDh*G%Co4ŗgK' |m?ZS>d@jsM0A0 iMb|I'?X,~ݜB"ۣx(ۢ=ċj/ X\1Die])r6Omkglq?GY Jʷ.5 c g@,KTY^lzM,%BrOZݬv\I_RqPC;aͿִ ֵ.8888b清 β sF!-嚜 _RWЧy 55`th`ng6~ LhȂcϑ41t4}J~oߋAyDy75Js(n8WzKm 㖦t`A>gZÝH'[yP_@~Y`XsF_}<lӶxY]ĠhW.^= >n{U2̧unj鍚D@?owÿt};%PC~Qz\Կ$s\r}hߤa_%*K x6M׿8NYnRGqu lJ7mH K[[<}lDSQK5ۤhMqB9Q绯{u&&&o4#~0ԥ)7Lif.9c/372o65Y-s}'sGϽkh_غ4:j=δ߸N/v]Hc:nm:͝Fvڏy8OKϙw.-=wybwly{ =&\`{tޭ>KC!NmJ74ۿ(⹫S ~W]ta ݑOvĐ[_a|sN+dT ClXYS^IfY bueN:"MngChӜM@klS8ImbQKRMQ&VF|aIJ[X?7XhUnza!͏BWt!:(?0St?`ic&[|?'7M/Jx|he6"RoNaa f\@_~)j}YϽN#˼؋w`+q=YzX"9}z]"#/B[ć]98=ScAE /(34ymMYㅢG6b=$s>Y2o3b } -WJՙ-ojfۙxfkvۨW.W쿤6Xq=ON1f4zuP=Qۡ~R+^ rN0/!l"sqp乊Y" l"ǟNh@6x$J7$ =zXDx|ő?0h+}2]1%_LkWGOFOWb(U]Sˉ\#c I7qok#,A1ܲĎeGl)Vs:sɇ< kٝ}z<Y|!?{WZ\7h+_.W$_ff_Eɕ ~heWzew~$޲y`=q幫6ofG͵\t_9̘~A>VȝbRRK!v*ytCJ!bepI*yo2#r%>hW [ǡcb-6:nbQ4A{GV2mmEVO|b҅3eKuPP !Wʃ!'σÚcM{; Om ձelN*;v7gL(/v#:TģIwSًƣ0_ɛ|{{u}?gu37% S\rˇDc>bJ<11ċ G_ø!ގ㥘{R;bŸ?kre|K_;{X1v}>汷0Sb5 ÈX%VFZܲxIX諗>_ 4ntF{`Z暅i1c 7 μ#=Ga}9&UkAd|X_fFDUaJUU)B}Y T/T? 2`a釗Ai+6fGOegfZP_֯Ae]n-{.^ /.QSÿUxzqX3t}jFZL-qHBEW,nÿwONͳ+ٯaӥ|nlF+n:/_W[J (3!/]%ٹ| GCA5]MG(䯳:D|MͺdJb󠾺Z귪a* plgәu 8s>QȹYhf/s̏ÿZ h-P]rԞPoU/ywwu!/"uk6Zc{aI_D;4﷗)o1cFuI?nΞ=tM `-HZhvfhJHU$6,M}#3;SxG>=iwN}mjXDkO3Ә֎1"fƧ1'7Ĝx)>#z;Đ+^[Gbwq򻸀8'-A?[lbkXfX6ʖRNJk!`!=,ZhAtN_+RV:`9)َfKs_IhעEd*th$:]t֢4CWh<*jthO( p,&bƘ`2g=C-KSx odގ+>䉮tyTNqu:#Cs'rY{،\(ɵ>7娧ٗOv$ʞY<9l+*њc!Z1fW^.dCMt59KqOʐo6ܙa,/t%lx`C=PȧÎM`(ʉ-Sc`DPmUwyFT/J;kf.=q .;U[Xj?g <~ԓ[z Q]u z+UKj?GjE'jRחo !fQ@KqHoL '_iZxQ]nXG,CTKEGcƂĦ1%Řbӈn^!x9cOxxŕsD\ĸ ıq&qGEk;."ִ\lbqkb18M}z`ٺ`:b)ߛ(1.'1ƛE1L6t|{1o G2lL/dB-uNq]7|A/=u"z醾֝X̢,=>.f];c 鈅,KyBMU2 ə2g}CY|-v+p3<qɃ$w0=sْ\9{-P fM]r*PF%oə9꜒_b؈RO!tOl=] 7C5 *̦ve&E.CHRH!Q"q*SbϦGFqT:TTe-{B5 Z֫CÑ3J9 L5o0`@kU\uZo}\h!19.(gI,Bh_H~Dua,S$TJj2!+U2xrIOiDu?xgû>5nG}[|Kc9fw&bLN0Eӕ{6&衇.=uC?XbXղ` +ꋵb1bXUl`u5i{F?bXM_ce cj^wK,裷 =oRDe #ngF;x'TSy3yY2ٵy:ytr',sr{O޹m $91W̞7ۑo3*ǒP}ocR(H'v=]?h{U r!3U;U}\wltӛWg{ۅ<ٯժmΏcsj؀82UvUb:ØḦ}A -uW?Ύ[+ĩqHWͦ'6zUcI@7,\t(c`h~eL[>4/9y|ȋ>#cYo/{xGH|+ߒ}ktjZW Ϣr0VúV$6e-m`%lgb< v5}b[.6}b[kb/[[2V!vZy, 0 `%uR2 m T(![N~ϑOzDžn ?ߜD< sOr@`KsM}npVrDs97G:&O!KԿʏYlSPqN;=!w| pV^2tKŧx]6 _j<ƛ.elT .݉Ec>\maŰASR㱓jN^ Ɓ"nM XNifN73qDKc5V!`~[oj}Z{66865,~b qt)>%c-GB\iӼ\Ը ܂:WԛՌb! ?i.ݨυr6.gSݜSXԫكBf=tHl_E 8ݥD):ϖ4ХDe!~2 z`qS?/.3+@ A{Yobߘ7āW)/J^o]v\P_EE,/h^c"@BM˘ڸQR+d8-J~3fɓ_z3>Yp> I7j٥WT/q,ѭNoDw#qr|R$v1j>ěb >-< WoYm?/2 ljU{`-{6)+I.γ1F@/v[lHlLcpO\`,qGl8;)mk vIִu}mkElYZ%66V9%1a!uEBE4r\.!7>ǒjEv sqsez*![c8rl&ux';O{مzVәԎOsrh8CgF+X8 *6EǕRs} P r(ALiz|[\-J@2.y5etp,#X{ 1%V"3l7Mܚ^'Crm^G~\w_N&w[I}D;g{#Ɂ>_"7ɯ<9:, _kKcoA+Irs < ^f5q9Ss`FB}3gV3ECS0\Q_!)lq܀{kMܣl1\bxD+o b&6Dko5%&ĝ"Tb#S\G ^q! #h\H̍^!C=qwĠt b2# Hn@K\l1;b5{ѱ5-c)lj- ;Plkf:NGbKc/w,63sSr\zR'%^O."Xrr>/tW=lG}e5tNd:ss7yx{&rLu#m{Hoەq۔^UfuUE8- ecN+#Pg¦gbLthE2p9|apy)/fhG2߸ip੏@OgdB97m3wSߴf g}766e> 9ER?~Yoro{Oxw|zwȫ|rvTcz(^ToU{W][Z.n.ѿSb||N< Ex3Ɠ[*n;G.^0L\l') /Gi6on)V"$'/39NgEΛSp-s_-f3d $3ۏ ȮFy`nE1xÌ//Th\r-%W8晥X[ &`z`,$ ?eqe8slzAV:nem3ma[c㚹v'9'/HqI}BS)K/x>11vՃJ;mlCtgO"bcCII~LlouĚ!%ގ)G{؝9N e[8 6.uxlpa_'v!&i8/odXsrIv9X73Sԧ=l̢޴~1R_ԽsK[kwo/v]fzE_E/Om}rfuI]qob}fw^~ ji/$]b"T*l x|I[{y֡9S>9>ITWQic5xUGU7cj 186z7nJ\|g;x, wrcS[X-^1rVu=~_x< ws?yk Y Z-'09:_9,?-rN~s8^|*#<,#?ή&|1:*_|ݶi9CwFiQu3-h&<.˘e,yA,|:@50N]60åt\4mysc]N_sPϛ># ԻElZ3(Ť,kij6bg,>I1ܣ$cN:lt$֏ #b;b]ucjlL 5bbOl/#V1'$ڞ&z'bEQaVs(yU;r qmbGWR7llzlMkqqh}ɍ5_.K+d'%7qTO13GQ$IKVNPVߔwǍ^_t깝⼻o }l:'\ ,/Þ4C ݃lg`m k]t5yN$~2{ǑʝWs믳E~v!/l#H}@}O~K#w[r9=ox!>c +Ř|>BF=9/\i;l}ƪ/sb4+_>SXN]x8Z{y䬛m'/;gn?`#JuzҧEѮ[hUkFiLݠYYtj].棺:Ֆ1/%Yt:76sNa7FJid $)[|vb"qbo8چǶb5kUȗC$t}s\dDJvo+oUV'ykE`}V}<:wzz#Mrze׫צ#wҍ/pIGdr<}* ŦN׵|-wv/(0}V(%[?>w6Ċ̀o.y2t٨w]P:~eIew~Yi֒X־đqpFb`^(佹.={mu%=Օ3T5ՋTTW/Pu >_TWQ=^Q]kQıѫځH}~̮/zs5|\>)CRcnR{ݜ?cP%Ͽ{? _秽Ǐ祭M/3pُf~=qTDã]fqQ5vFuL*X8(&~Tեit NVTE::ƻr1D;Ƶİx4D<g9Ά˶&e]> ܋+=g;AX3 ɖ  { }>6ߨ  !ԟ^+SQ/S~^.}Xޜ5ڭN}Yᄟl5aE;#oa2`2SҲ|n~h9:> _YX7`+ÿc_MhP(,2sNwp}9dgƊesJe9r XF}28g|8>5xZ\Iˊqc6"U+TxjlN8Ֆq2ՙ|LT[kw,щ2nQĽNqRZb+o0~F~=}q}d"yx+y)Cv39!%7yK^>=ߦQU?@=-w˫G[PTok׿'^e:8 wKx;uknƛ mE_gr_'vd/cr+s!1=ٸWOwU<17s!"/J,0W؆ J,AlF|?4vň'Vy}~7>7o׆ 93.+ev#T]űչϨWFTůc5X>:5֊i~H !֎5O.8&v6c^t-yJސ'[;vu.(!o#U+Sz/뵩ϨuS݅zn \BOlΙWf; ?g3c%Y{U-B-Z’/…PFm݊:F. ;kp[ϛ[2 @ek~_S_|-ء7-1T;pS ~}zp.-|:xLҲ^uW!Պqk.U583^WBB^]H\oNEc/b[mH,C1+$ť1 78Ƴ/mWbC5:[=C&b<4_ ͵\DUȣLu3O;y?Wfy! ^/XG}y9w>-PʍnBmbސmqصӖntז}_8 0kxӱ8yy< ;g&Z_q.$L x ь #1 -zӰ*Įĺ8؁8Xq+%q"q1D pEJln?\77ډ{~oxAɢB~S[g?@|Q¨^N$R-ǯXSM c ?VR=BӘMuH,C1$$>G7:/#-uFxۗyyܛ?ϕɯϠ3y u<n KQRGݑz&z.ꅠ^ {ɥ oa '2y= kV%0٦Hw^㕰إџk)m.'+?2a,3F@㯥}"̳Gk o=r,\?7M]?di}1Ư㋴gYLQ[O^?9ގ-PR`#T{}gT[UKWS^ޏիӈ.cXv| P͎l/=K2~A}27oNĚl̓ry]CK}|T#WezI!9<:cw؄q.㶸r;ݠ4gI%|~yA^_ eØ:YA59HV=/9=&>uXZ&n\ EծgiڏK0Ym!鿯cQgҮΆJK~KC}^Ϡ"?[e~Ee^v$W?4JmeW UURo)ovtsw0FZǫ֯R-YUG>Ώ稾^z>VWư qot!0$$~#h|pb+e>0ȓnh!L.}򛜠,5Ƽxc [Q?ZHꁹ uֿӀK/c-78۽â*΋#=DQO%SlևȟKQ/IY%rϮ rwOUɑ8 0GqG󕔿8<7%(pR3W+7m,F~8/(ŨQ J&`XMd$buoߎjS0 \:%7v6alS-RyZT"ɗb1U+rA:b=F:-5qx؜Um -'Łayo;v609qTm`=u}3(3>)E -܉ -_p vGuм״M 6od?1teد/}mAҮwC1"~Ibs5ā`sW_ln w qOR=r-UT֩Rukc 7gcT|~7g`ՑƧ]1,n#³q1$މ c.{q zՙxŐx܎)/֓'{t_SsH~A˲M"׽K={PO'l2u+*묿O:_thZ$'SOG ާ^wMDZ36d7-y }\x{+%1 (81чɞ%nY%}>\B)+2 Xo0e19zuUl}K1v~m??Wvơ_F}[T=pQ!!.%]čBMxb(O,[Vې-xj/SKǧqa[o~dYF9_@tlF}K?S\"ׯ:jjGi&U&6y^IuQ/{6?bx/OA%+b"lp=m`hX-nȉĦ^; T;5o )B(">p0-YmOaӣ_1Xx%V>^ Q?6%?ÿ{ zme|к޳ ?C>[?y\n w mjC '_ ժ%gVU>m&k_i'1TTVS^CKJ5).^SB<ŅTų՝Ĭ8->'ortŗވq.[1´G cc j 6E_jWt)>%92 <[BN +oćN΍ϠksmS} G?qꙫuKazԟ~yF]g5\844VqEz7j,2<Ω^%;.ڞUS]HzuH5jjU]TTTR}7RWy>1{vvW㆒]r?בגSrScԋ'ub/9CO=8uf3^o>'Խ KP%)W^T D'9_R^')Ss{Ng 'oDx-uތ-qw 2͏Wgs#s8/M-5+1]{31dXEέ؅bj|8$ U5b Ƚ<ζy)ڑPܖ:鋘bu;m@˚g)FF_ވu%L~G6E=ШUg^VzԿm-ӻ-f^z릻MdӥL=#ՃMN[5O#~G'`2⣖[jZ~Ws&PWR I׫oqq_̢2^ Ύ3b#bc⑸"ř4Px7qN5ӽF Gwc'Cx9S<䉱25"dZw5i9<%_Eq˹#\}]7v{vb|y>n0_qjM?˒-Ŀ!cTa_68c.SLmMRUK%v!~n(˫}Nb/(X3|&?,ȧ=dHO_yzD'z&60rccuuBZ6>Xs ,H]SޘB\1MM(dܿj=@L9~TJ)E8wX~.3^~?\mpEZީZ:W^Dկz-921Twŀj1AWXX?ގsGbu{c5Z ?ѷ!khr]ɗsAΗ˺jükr'r8VBW9lUjNT嫠evӘDn\}LlZ=D<oUQƾ11!~pY[: y]L.m/c`>Ϲxĕ͋r rA 1&g|,-u%șN&XܶXwxOlFcM]?ވmp@T& O/p\nKFcYW"NlġЁ|ݕ6> PR/nM?fũĒ;|Ϙ8XѸ-q~ӛX Ctu~v&yizYf?S1dS註ݼWg,wt#cK-o:r<>3bqO,Dlk|\[ة9WSByG_H?/rNr|tR+-d&)Ax oR@HtHKm* #רv<0e:)_5eM]trڪo h2zWK}u6/86OU}H>gAēq7 Aix<[aqQJo_;b[fb~i fhi@'h ]Lc3v%>"THf1;/Lt5cC3[`0-ܩt&\Ӝya^o>Kd_A۳Eq->Ň/svt| ɇ{PoݺN01$!60f1ˊjV#nb~0\_Z'%O>|tӇkN4/ ?rcKpXӖKjmbGEUT ֠J";Bwo,w+ّ r<%KWXa'{d:q|=#O>/':-5HQbGh%Vbl~a索o5IbsS!1Ljf\TB[%F}|,dڅ@q7o卻CBI\珧2sΜ3g+kwWuWuW׳׽ֺ}=t b?0~I2|G(uv| S'PS[ܖy"F('Ԁ|r&n?3zMjn;wٕ9TnJc)uߩsK&Tϟ/wB4b1?k%&&Y=`<`6o~b;|m|s?niD lo^#цb;ˊ ֋1Cb?e M8HGo6O C>6/Z-JKbI) \T6)YMՖUI:_|d +O? Zon#<P\S-/X~x'+I|kwIG{0/Z<8;mZ9ʝinI~KHiu,HߐOƃoq_̍+ ؄:4Ѓ`p-&/̏p%{S%?7;@|lL*yF#ч/5U>W,A˻Z51ٚY~smIG؈<։ Mw< =gld})X;eDZ]Ћ|A\?=w5bE?8}_ڬMX>j;sQ/iJj,bZt*y-y 4V%' L-ΘEnM=!׍2U횿&/ZbIq!?QyxƢ&^}Σj|h-v(h wey2Zd&f[fadтtF5;EKtv製.诔65` b,8O8atPӅF k([9-Y܄1؎cjq͜~:XJ5K\Q^2>##R֎6/CQK 8 r^WzD*צ=\A?xnx4f9uٗC\уBZ pQ4!zďb:Q-loowK ܔ"7='ظs(:hXj;rU]hYlb5W|a5P'U4xey5~jU (. E P\UkW`%rl/6K.Vt@)4bv|g|~c*]8*%闘Q!MI?פqaq cMs~#\[C֍~ ?&A~:>MiaǦ$- i+\ݤR%*zXxӳiXU+Aic[Ѡtyb4Қx!oknwyvK qA9y-NG;~s` D8(yx_~ΐ_C|yӷu֥]5՚ТVz;c]ZXI'j~ZPWs{[+&o,oN6p2pM) |t"+3mB?d 5ܒa)u&{zG5ggXbfkf?030bb`oxhhLQv*İoudpb"f?˰s9.h*)вUYӎwG:tY㙾mN<,ҳѲΡR~OyI<,/ȳY,1syDW4"]j]]>;bCi&y2QS6bf}3og$8?͝=MX:en7AY3,_K^ok7vݍhK,Uz UVXqfDkuWYw&T;|ROe,C\DMc|R/J!-0TR@%eg%>VQf 'Z$MS Rr^%MC9KHYoj4[~* H A=،X;Ef|`Y1ۙL͔7<8c%f֟p SYLcIe6l{ECQҪѽ9^SwQG>_#81Bl!{bx)VN|Pޟ?"(*}EP -*PR Xq5x{[Nu___ˤg3FV& :P=6?GR?c}  N+O.J+kjVUNțCVPlK[u.bOhCWvpWkwX.8>6u sDpd|Dmy}`6[>T_ .;zWq]zףfS`*i#iNCeeJq{ wiOi|͉gclm@X|+M 뻗Y%^ij?mEM X\y$&F7bpDxܭ#nҪq5i|6$Fťx);Q/S6&應:⁘CWzc:h+'=3H-Ӊq@U.,{%mjUchsf-Mvo6[4ilEUL oMZ5T﵆hд;Pk;:k2/.xƢ]IϰOYX6Wiqa,}efnZr-~\1,y`VKacK&,ieXԓ-ywkh?F^2cʁoIQ8ĩrj{|lkK<Қc@8QK[2`dƤJoqID >iؘ4Gl"Ɩ~I"']t82mJi?+=q|[iNb:8?]^rh:4528moS0-OU&ONjR(Wy7:|ՙy 28$Eb'zTV۬\Oui7G]ۯ,ӘSj OzxD9ÖZ͠!ZyF1EYA]l RX 1J{sk7qpG;HH+Sy+LI7Eie*{e+$}:AԋO1l  # "?G E(.wS5F_vczo˞\EMNX.{៼>l2a~aiLC:*5C%Rԟʯ+S97LTP:ۦ Ԓ8&m@%\*#hZ86#ԈN4Fz2"^#$S1qCg15F (b(b +0OtNēۑ;PPi_ǺOKIҙZ\8X#֊vo=bn:t5}B"M阘Kt=K+kMCDSb8-Zoů.ާ~:;kDl:ʇJ/ҋ鷴y}ZY.bixqEW?6%hLT "6'>IGT .bCefet1gM1.}D4Vjv&EVNơ#W$}*&}WZ""<]D:0kRy/1?&7xg6iԕ45F+ңxh+}MSYc~FlVTuۨ3Ph)>~=7.Ӟ#}F-go()ŅOŋTo)>R3!wI=&qIq铨E"ūNQA(fǗJlaX#Œ؍qSa %:hBb=hۍ^b#^̯qyM$B&IdBG~͐6gՋ(+Z)N>RtHqWIu7bbTwNjV}mqtAfϖA=xb[>e/Got(A.%zD;JֳèE7-ƞk<;M_^ķ7K(Nj4X+wɫu={E5umczA-~ꚓ\[y&y8,#|eCD6ĩvt v ~p 9f+NW?V nq.jԍz11"\LTk+FbZd"n"ix+$zcito,&vĈX\,}u&] սڠ]nAK}Ի:Y^/)!"_H1<6v2uIDAT;=axoG!!Q|~JYe WlZlbE{m\߿Ԥۉy}Q8o?"w2-y|wh7rr@;7D-"Un;03Ui; αv3.AX6C!"":D I;I~ײX!نX}&qXIoF.#}6O;>Cvֈ HŔt,viK;a5m&wG%~" @n؝0VIo)q|3IHF#-L1#`Ose]5 WcZ, 53$&Wc!1%õLj  @MF;AbXͧx:aߴ<,dM+>&jj>F͛׈?rֵpD ~OpA-gئ%䝫B8 J7>+{ZI}35,|JWfOqW>y~ٿ5z(*CS)ihZV#L?442IOF8oFS|~Vy//?3scߊP[lQ}zd1gImqn(3rc޻{tz}@uD~j_򓵱)67:y9 ffbEҕNq"єLMv|ToWLr痾^WǓk zsH[QIFwqMclC9)IDܐ*ol{ǡ %ƾu2뉟 i 66v:8⓸{%wtx=":G'1$N!1hCBlkZ%qqT,5-465qT-C^hM:$zDi%3SRo &ѱbf:&|U"ǴVBԍE3Tl`?SVƹ1q)qF,T mh CZ@5ꨘGn9e~;ZJt-|N^+ߕ/AkhC_IyyzliɏZH~*4qf*fϒXS12nϓ\֙Co5=l}hhNn"))!¶dFGEC=ib7%`\OEH)+~Rf淗ϑwmjռ>XFnB^ZhI>w^S)z,+È5("deN_;/D&5{o,vK 0?Mk?> 0m6=TŮ,/-EE9n4tlI'M]>Z~_uWR&D*/F HiO*ѩ)iF42NIF8h_F8'p2ok@6'GPoIjyE7[TQ:s ~W<1ڈz]_~O`h,?C,ߑ#m,ڜ<˾^1bn)(_L3i䑘TjCTÉQJіIBa |ZV *}:+F]/x 3{s~}v|RgMyv|t }u!0tg^1:$7H'Ԧ6we/ƐD8*~Zn^smOZ#6!ϫh.<7zwb6r:bB<wul!SOœD}FbdUb[c2m8h'okn+21I :mc3'|NqM bR5S!޴?g"ZMbE7-G1(OWAR ͦ&7?itփHRyn-nTB\]ȥ;# =8#M1i-8\2.?;`6$R-(?`3Ȼb'k88 +[U8L飰=ڗW ^V7h^(4L H+})^Hu@yWSĠJ pon?~v^Kju1;Bޯf{Q.r|Ļ J:ݩ9uT94>]׉/RrꦵH#ӂԗ!iTjL6}ƓFy]':ĈG4ш=O~X88_3OŚsqT;XRup1}ub-8X=n4>pOH) tˎz)CbTCuwnJەK񕼰vo߬<8NJ~=V)rf}=bq L,AA,!#jw.iMj`v֩5dzkپL|?|x&_}/8mȻ羹>W$uQ^Ҋ䍣UIgFX6?ݱ$]6#V ǎ>͏]^.$ݗي}(b -lK~1XM L#GW̍wuZG#A6/6Fh褕vX1:ꁖy=0WU1(a[=ak8ZCwb U }+x)J+ckDs謵:hfXZzy?q&7{<ٸ<|q~1S/A*E^/wi[yzyqB>)y1N!75?N߉Ceyub=Kɯh+Y1C'Agu435VjHs qx+~~ q'_"_sS?|}ȷkjzەGc;1ˈ+aaL0oOSV,HF'b 0=m<9E#zWLG+D2xw\HkEG?'߯#C*+OϽjS}:u@qZ,pO*˕J[ҙ mת x}T pJ`V:S鐖ԃfP_I4x*VkIbBԚq)=oX:%N~?77ܛbkGy[XLubE+l>P=.x8oLh؀*TϠT.e:Ep'Jd}Xr;PtXFOlg$fbuƣDxĄx2F_14&ul3K@̭,3vھTOD}P8zLnUq}oۧ>rOwzҘ{ė+Py]_i7rg?8-)8r z5D8@W|XhΈ]śDt3q\1)ϡ8uI7jKrhyR^TLE/ĚM,"ϵe9V ׋=r4h6fXOB|FLNlqLziMɝ>y:#$/A|kl:Vj9X`䙹qfs3,!7)d-?SI)Jh#I[*(^Ƅ\nƾ:_c7S4ņ՛kį2wDBny:bqfĖͧ)6&kKD#4nJ[b34b7t;-ӛ$bObtVN: ֱ$#iܴibw Eq mmM=l(6A~֦1"L-6l97;ͻ=٭-Gz&][n@Mʕp[s", oCM܂wU/W"_x'$_opqnGR\\W1W]SK'f(,F}AOK5$nDGrou0@z(wēVϢ9Rd_Wqr2Я$T8ժ )'jeV!?χ`.C]'+ g~Ao;lPOkS#-cHw#}WbY<=&t1~S|`fՉ$r]G4xrc#rȆZZoWe1[~^n!I ѓW\V\quDQ<`{~3,}T܆Xߏ1to㭗Os _i,sp_E9/:5_?bubU t*8X$'/x]ŚDWqDW{D6Ntlz66&:^bѩYSۣm&ܔ4qvNrm~a$ogz Mq,fwUh_#:|6K쨓r+ }܄amhMaz"`eE^?4-)ȫąW5-JojyY]jg:;}VYI /Z&'cRjuJJ. k\7)%6)iŃs9Qcpe?AM/ KK.*o/b2-+E9(rOA*ɩ 2WK3T12Kz!.M_.q2Q?ެeGKcwxxɏ[%P\PQ|ߣ3o7^>؀]nzp H_xYޛi,߭DT?#IT7UGB1(BXUX=ow@|b^u9I^;RbwkSL".7# ҞXR)O> ;1%NΗ|A|B<ZDK#VoZgĤxHLsot#c3 s/ueQB❲Z+_^YOEԻ{.gvoƛ,/2ߜ>|MGfSoy+ڟP 7#瘓bYU# q :ڑX߷uKM"DCHץ,"fdNzNҌkF-Soq~1wocC9aad0} Z1 L8#7M0#6ìl`v^g,wk487luivV4{Vwnh1QߦI'woRuО]*=ܘO@?k['wϳm=-t*:*A8HK7zKnS- yt~_ LLW<=1z梮ng qp6CTȏojULP4%Aewmٻ7%鶝rb`]G.uyƏzNmS^?yVʖЈ4򻵪]ObGA#w}wqˎ; :N//MW@ޭytu O@:8%O.>ؒL^w~/ ҄Ԣ6_mfވSһi@<ǵĭ1n'ZI8fh8 a% 1".G~cDAtD+R[4#%({sʭDsMeezlrҳ}˭l̚귮!sbV%\̌s6u-N/̛ʼ-aM ޚ6 [nQbѕv_t:Xr~,YX êO)Z; O 1CM~|EZҹihMTc:}iXeD+;4|E50+i*q[# wpr#LoZC,4g :NAguW+̷1d 7]#RmDwflJt'Y#FW$,3TO)(x cHtr׾nSvXHNL}&O!?Dz xL^ړJECpRU^GjU%̸_h7׿;WB+uzҪx CRاy5rY+,x%<փj6}k5R!ե2#$ݛ>JÈqe#c bWfiovc~|k~<|YjFѸ8=ObTWUkzP}z+4>aW}LGhReSݩ_Lєs TGRݜܖa8ⓢ_q Eۼk~b<|f>Tw򓹥y5 &7N~򓚑V)X,˔񛠥6E=ݣ/Du{ZIc` %|E~3|NMn6BLb i>1G<RܚOK[ y"Ɵ1hJ9%hQJKFFڡ3P2ѷV]Kε$ZmH p;5M=i=S%i`jb)qQs?QX~,޳x{u,cKe OW/JupAn׀83&m*i~{ڌU\gK굩3}# ^_c \w7R8̇ t Z:.wx-++Tv_#rǓ/clGKnDlt>AU\~wD 8%v (b}݄?7M~ίB2Z8Ά虇E^H`qvuy2&<'7Ϳb(K5"`l;E#>1@؀،tiLײHN}%@X^[NpZ\{ߪZ;_}]jWgݞgwwCQr T.'!otO޽nl'\Sz0:|6y~0|9Q/n[aj.[7Br U^5*$gJ׾t u.{WqLpo}5/ӎTH? FDjwR44.F٤obNtv, ^ı0G|CK7Yw+J٢O~bFPl]RDOy]v@ ]ToF)+CQ1WhA1<؄~v>b|PމKqC^m䆱nqt8 |rqD>̓0B렞Ơ60tG)qꏆVg輱75>p6&o勈oB47#0Ӂ&C+C':搎·ϸ8;KL|`x߹D]IXf|qRUm_Oi3%cz2X\?bb-JÔ>(3.؃h,6Ece_߮[M1[)23տXAC\DJC?:?v156#e!P4e/wr6} JmB#qt&spgLY[ay~. X!בWu38x^?"u4q /Nnf</hyz^DazjK^hި&L@]ȷDS7!jy`ͽ3qfzz;q=q3blUtiG̲#C!D^ , f7?sQO_Ծ~l\ #k++j2S9-RO\V=:1}X_j q7|OzdOŵy }]e@ޤ E|+}WDEJ68,8+Òݗ 'RQ{岴kHw:*'1xt&fน$>xv78SfFWygoY5OTŸyWbM\8^]g6V\qf,{TWS5VTQڻ }JSIbGr|$yk1i~+GNW'Iq1_>5JUF}z78c0^!.ȳK󓨪Į5A mFGu&oW>X3/y53b ,Z!#|h`/^5&|uq&5fax Йx=zb1jĴOq1ibc`uĮJpy6D]`wԚB#D=ʠGٗQavRfTmiH4TS+D{|&1X)4X N+6xe&=V F+v7%;j2 E8SG 7G)x{䷴&o^a1CohHnH~?x͎gHCn!N@=#FiC4Ov 57?@r\?IZX[<cd"V8y9 e=Z䞹;c .C~m>y\A[0VĒrBsu*jڡWrsB b~ߢu4 &3>r^/3jN>wtZnj_a 8ۅ}^cСZ%Vkݎ[oqeyLVvek&^KJ Om{TV}fa ~l/y'׿yP-.(/Umc~\j^K4VKw +!A:"67Z3 ۔#}ZN:4}6NϥqSv|"Fi(i%HwdbK=I+!Z~|M~D>Njӊru=5V$`Ğ18ꡞb1n[AhX(bXEkg}}Az:ĺ5tilH[n6^GJkLs4ГKl%IaRBv;UY`nJt7Dn/bC9~/~GOcM%yT^}'EߨO~0-/t ~ΟEOq~ۭ57 ϓMGGחq26#,sVoV{z-Zxb4}LsE9cZ)Lg]gT}_!7_Y]e0a׍:ɥ8xߐ0(<=晄ɪ`ƱFgbEݵCcmtJVmwR'~=UAbsb{H=Hժ5^/W dΐ)7pL?_-VFWV⏸:҇,qV+6[q(>IS}k'j[+]jE@)Fb>+5.)+W/Ry \V/yG׿yPۏU.bb,'jdck&>A| ăhGA:,j7e=3<{^H[c6]+iD5>& ꤑiO>V?F> x,vO\ 񄏵!cO?C~1'?c)Vo(/˥< >h59}mJr}첟V ){Ku#/7Yo{-(Z%7#o8>kY^Xy=kKf`5?a!nfie>yya~Nlska݊fpEy.+h|Shf!ƚctAMw&Z|l]K!F뉽4Qz"裥)xQoL?YzGS-75P<=ԉR; u02T؞; DgMb-b:qxB9 Vڱt 4r$8/)P,B娺 IB-7h!\ vf8q90U^'U+Z: \$ڀpYU>JJӵ WScð2anb 9 >7TG-;c{b3kC!XXIpCqhH{I{;DN4Nz%FZw/H?Gǝi;!cgǯZv4G njE>(ޤ5B:A#7֬CK9Uq)DៗPt!W*uP:xNɃGvǚy6r7QݱjaE%ZchhNhNhh?B#X,ˮ-Ÿ[yXfZN\0h7D#c4N ,Z_I[t%.LȇFgMewUP_7s@ -sOא71 m~A+Qw%`յ؅u$&i-ifii1k>F!+DiX --,Uqoj?3f yiL?t%ꚨ'>hZ8atdks+^>"n^"_-yWc_wZW?'O{(+ OitBUɯZ76DOchjQ3lowl-tŷ+W[nCoMcɣ|c<2g7hRH=NQ_^ Zv#1> ~ c""6"`el8XҀtTz j4jTaGl0ﮩ3XwS^Yttte6T>{ *} zųݢ̪ߩ<^ȯݥZqY͈mGr;z6緺l~}6;>DM'V14Pjkso?WK`yw`ZpjNa͊wX ѐ5Jx1΀8)Ji1u\A3NA^&m T֍פqe?,B@"A l@1'oNjJsȇ!W'SA>TD'+!V> 􌭉^z&bb0KG VZڡY"> bK\k`o%XdeXj4ʟ#4|:qww$;4 ih݂C ];33s;]߽VֳRuNU](} q6 ͵ך4,:j:=uJ'.n =@KWLC z2LӚ nk~*-@Kқ ]njE ,I'o'^[&Zy\l!%CL+E^4"aSmJ.6V6Vm M4b L* L"J38 ȓ8J`j m5#34j;|ls,MߪPK (&Aퟺ$d!MQ>"WAt L;fi1*{i{]!lYyiz ;!u,4LvTIwܤd66M$jLPjk4ƨ5?+FI5ͬF7aJjHjy::[Ʀ"Mc+0#fK2뛕~!rM9%}kKy槏Cd_+/h4c,44"bfB{&`]L,,bJJT)fֺ4m]lmPw <7[ߣ1 :Xar"6g #;&RE,xkNVO\Qђ ΁.RK 86zv:犖5[pXy&qҢgsw3eTyFu[yu6_VP޻"b2De< gcG0~pr~?t?_ǚ4,fK>;bϔWu6:;wh5-?Ylv kkn=@H9at2 qD7u-d; 5lg~&u5Ȏ,=M$4{!GHxܻx5NI?Eo'N33/D ĎiVKiZwS:=nXJ%iJUXmy1Au9XQC2TF\4ojFJBimP'Ԩܺ||k˥3WF^qXDؑv'KixK|A߲&[/6t;춸뵛CU485#l_buV&ވ=EbN|O]#qfƞhbjZ)F%}9IJI5tpO:1M_sî86lZ:&rvDȶ zf[ŨԕhcfFCbfoV]d Oj[[ct~ tKY,^1+ƒfy.^#/}>"NTCc#SF4i~A'\d qxZc:c14jI OEDՖ5j Vj,Qgfj0k,5EQ#+FyG7(wTXfMMB*& 4OϣkDG4!2ilIGci3VWuTZRJ'EDgc*QQ$(&ڧ+QP^U}+sWBU梉iZs$CkKdgQ_-2z 8"I3 $.Ki&OH31fQHSXluu(VV? ,SU ׫'2iZiM5hN2eDQ8N즗^CbSaOGwD sgpb3t f%ocCb}ݳ~Cw6dudNVSĵ=8 |<$,XA镊APz'hǚ#t& Q)mGGk ,44ۑl qs{V>/NG.t\hy?םM|bp7=yYסU0wsr \lp.go^ o?߹x\Boy7 ҟHʏ_,Dm^:dIS_rPHL4Б+!Ugr: ex}!qm*gԬ ^OMoӔ+|cl1Y9!G6>Ίgv6]L77FOG%q%ZWX8r5Ri'=GEJE a"Vʽ *4J5XA)PPP]wԪ"/FU䨩KW2Vs -UA>RM]VH= @rwr9-kgo;4 uqpx%yϵmyFϜ4m}k@NF-Ɗ4tw|f3x}W3};43.H6O+]>ZY2]'Ъ}ޓy|js@~nܒrr-, OGB:- q;m L|ؕ=jU~ qkBE{;r^d6lJ)>#^.q8} /ħcEt7+\6Jw0{clĦWX?Hs Ƨ69;0տR}Ȟ ;_"U˝zcʿV e\V<.K(_of &6UJK)>iEZHSeFג6#LJbIHg/DEb+TA?ԣmb(M2?Gt}Ax#D3S"z5+ƛ9-ΈSJ|0ւ8$ Ŷ9R;cl,܂.7K*vgNtsTV:*:e*oX!TRMWTaELko#E_Xz-)E翨ZAz0ucKIO&6( PJ0ۚ" Z+,4GӤv , i!?92-1K*5)/,`8ԣ|fFڠ^sP>PX~ieJYS\ſº(v/* 6Fs:>0ŦvD5 1% 퉎#b?Y ;Vyw !Mk|J>0c_\KTZW,y(\q&7E4h k[yV' 9Sz%9ia ѡPkT~⼆|p)3'[3ѹO<{~xY[5ԞWՍt}dgwf[bqy sz';ݼQ}\>=n ݑzWI{NM ) Wۯ~ltyfk'$7m@A4a՞p-߅4RӼwq9NC8z Ƶ%{.i/]2>bYCz$xEqhvkYFEbb|ƨ</{2F~. KbkRgmSIz/f֮Kz Ի7n.-lvvMͿ(~t#vy-ִp8B:5;8Ԏ~}Hǒ{W'L 5`i@GR~W43mSirԒ:-OIW):xKF'-&u?(k|LH߻h{ߦ' I\hLztFFU 0Llh H?YezXj~ψ&#?g'd_1L[y6$Mp阨bљnUZQ[`niZK>E}zQ*bwR_sQObeQP,JL ZKD梻*-?rEUryaB^Bu yO]a)LKDUMUbg^]륂'F*Tu!UizuBh_]~UuW.Ώd5C-#Wf#vB|+RO*+~&\XƦx֚訣裗Ȇ1Elg"ۘḚx2&:Qݢ{޶\?;lEu)vPN,,M;c_ԛ', zW_q)mӛ]4wK@|Yf)7P  R]j\V8{3#j4;Sj5@9! TZ㎚'X^KHN-ܔHW}=S =at3}`=E=Kpk0}'uLߤ7(_$=HuKNbvq߰r嫇B˓wEfB]o[t!]Q>a)o\8KsA8.v17z~#YI5ET,Op|Ր͊udQ٧dh[XJ>?yx?6=Mى " J [uyl- 0X'nm6::qqbKV^KxOn /loM+;_ NuSݘOp94ҋyD iH>Hr)(Qstɱ-NsI!UćiqX"-'JMҋx7J!}mjڄ4,}+i785-tk ݛ~hzGOϦu%eQ@7#=Nդ Jd$%gQ(,cSN[b_}&QiJ4F2x&btcƘ&X`:qLdYbaV*YΏ(Fsz*`jyZUt敖q9|"F7[g=KnhJ3Ⱦ J5FIF\.T1UHuE 4F"VDgMXfhF 4O-U;} |*йxbiC˱XUl¥mQ,MLc6vIJ^g58(]@fŪc;b&TCT^)^Ac%d92^.lz۸-@3Fꡏ\iCb{X8$6Z|=fD]hB6B6:z7?1W+6|BKidǖA(pڶM^ +TZJ FB,O!v6B@Z%\s^)`W[]j1o{tlUbRyc ;357!u-]6 OדFd4,}G#һt%6'jý#hDl5ix:lҫfwӱ(_\P⡆<,>;Z +'o; erw0|BÏ(/)]u<q! @Bva;Ou/s|4uٳdcAHzRRtW*_V' V|H7Y,oX@:-;!ůYWbqi.KF-b i|Z5&C=NM'S{-HOfZ&'5IeڧMhX7&=T`?{K<&1w8u 7~Ո2٠l >ݏڬv׳XQtJnˏ犂hJ4KWD.i.i&Fq_럚31)&I!5u R)LI`^|j7$]Iz7ݬHǓii3~Ǧ?%Ux==zM~AcU%30]~CV O裏eUq2Iқe:iZc1GnvN6G;ԛ 3Ie5D4bwf٦:+4oaƇfO-,3hiČ<ƋVXYqD2u'FQ! ,u^g{e*KVf?[ٗ~QC,ҫ15y"ei|u-u310p-iT]Ϥn_>.F]]]~t0=~!]_͆km˷wm(@*3 }TRMڔ3+O K9pCq'Z>mӾ:_^Y;&^dc7$G4r%Ù15¥J;;_Z|E@I+I?~<<}ɩ{z"mNz^1]N; #h竊oKFGxo.Iٮ@vp4mˍ3aЖWi_o_wo"}vo-ܧS9pws&{;,]mB&W Dv%rԼ`H?Y3 R܃;#! T"5*~vNY! 7iI|.&}-t48tuLQ?x>Ub9D{CޫB}z3CZlx hcc&1>}.^nzx2 7)WҗД8A] !}a:tIϳXmVj@jiդ1RE-c٨LXg9RG46R+b `XPJKE0P`\..,RXx>4XAR6}]HyJmtc}M'Ϥ;N*9Duz'!%r_"Zx[m `Eв~jYtMbhUj&|jMt(:XHJ֕^/8C2VcK 6MiGOg56(J|z/5ɲ|54 W˚Ju[Yĵ݊Xy܄Ye)JTѶ?>^0OdBL6"^6bi6_-r3Kj20tXN49-CEϋ|"ѾX5tb D9Xsy1Ɠ ri iqr,3t^NsmM.ʷdp_|0hvS٪UDBO $GC_ l=}::頔 rFqa_l]_)U&gd(:_M}/cBE12cV`r'cImb#ߗ!M&m4?t8&]SH?kG$+N5ƥ }'x&A^Q&]^31 =^@EL3>Ko/)Vb)dq+|ofFyq q'jSN\c &g9S=XQVkqk"D &݈P ,:`JuczUmy!`r`"u 5D[yϰMh_vJXR(D[bhըXiFX-VEC%:"Q"Q1>-:Zifj4Gs ZRFMbٞQ&Q$ pVf}XxMhb؆Րmi_l;{X丘}@w`|ujd}m}g䒾Y= 9?,.k~0fW4>]rIqgҤ˲O!kY-l4Ģ '(o#w %0ʦ,_ (&S.>$!vt]?*]&w+O[鹁QTYT|e}| h޿%,rZWAdZŋ WJMZ~&ͰqH2t_3d[P>6Cf4;kdѭ ڟ omK!+orN*I'@r>A+٨Y^/<1Yě5nvY qwl!DX1K1w0&ɸ\IGRJ]|Fz/j>iT7 ]˧Ij(of uWѣӚ_/Mm@0nMtp#.Imj[j7h8q6 v[~٧dc[Q".LC&$18!F-iYUwO0gfGLG~Szq?g|OlVoʠ9=.Yw"̓ /ZҪXX` Z!]{@Dۑ6"'!(y/}7UvvUVRȽ;+uAM,LaH]gBzSUfF-!.43=D5hFRbƄ4"F(qi Gc?uF+1_a~(Sױ[43!R.Yi~α|~g`Dhi $cerbU`uȽ~T'WcX$`=,**dy矏sV".QDbh>+,&JT;5 9-^$kF:O/̘i-hSx@Vh6hFN{S n/J=75Xa !K":J %f+6%%mGAiGEd#fP&|;>=/P|+tL_@*br!O81rwn;鎏OF6tpl(=UˬoKqĞ>qdM,l5No #"גVh7(P*%No;egJs]4^BT;iulu[:&x`w{˸vc?Ǚ!;ߔ؉Qf~Gbn&ijE34VRtvM,b7 Dz79{>f~: *~m^ڏMӆOCl5l697ߕ\u o15XOn949#mCGD-TN̋ uN0~&O slKZeٺq*Ot7>%+9i4_7IϤo } ;m4<4^5Z&~B{Sw&fR+^\Z]QS*@e,*զrUyQ!fJr*WMZUZNZ2$oMh5V`Z>j&FE&2Uq!2Zyyϴt+uz4FbuU׈%vc,r É:$ݝDgJa=,w1֡t4OQؔ 4?=f !UY>9l n Fa8;+C˾${b|2x,GS ^8p hOb HL9F`X_ɵ(1Ꞽy:_=,, NŤ`J,f⹳?CǮsz*ztOc7fΤISH5>Koz7T uIS9%Ԧ{fz_o{ZlnzӏQA(Zvqo>]\ Ӵ84ӟS.<=C e@tZp{h^G+N*kDvo[@\Xbu4uĨx8F ǍXxtQ,gc"}Iz4|/)Wn|CNܩm†Gi=㓫+i8!}!-i6YwGusI@ms-Ȟr^ 6F ھ[#k->mv J--֤#>"eNm2S[ovgt#NjF:ÍcԂIݎQON1v|shX[ƺo:x6 ag{7KmڸȔfkFNe4Dl)v(18~GꌉhAs18@?4ti rH{y1713HS- k_%'>΍| #٬0Ioqgvcg#6ݷ۲mtrT6=v&ނlۼ k*isҺWSʗ?Ɠ[G^><~88 W6>\8UY}le )x{VQ +& 'FӾ8gL ]/a=<6ʱ1q{>R?~U> {3>{u=FFGƥ;ZԐao˥n H|Wq S#`-p}tLNK˹it:q[䫀?q9M_ptyPy.EdǷф52 S%q,>x+g1~;g< qMC:|IѤa+ʝ=u-OHkԙei'!?>{2m  ĺt҉;bgqmbIig.z;\`-㏱؁!664 ~G>Έv;w 8Hq. V,}KtWI]iqzjFQc+WON8nF4qÉԋ$ Z-1pXN}ϥ.=vz m8U49D|?{L`.&_-B: ;Vb|bt1 !Yirly9ѡL4h]rH7k;t4Z9sphzI~ OËBz4ˠhWmeZ|N,WΩ@3>8D>c-kŘ%T OP]<{1夫Z>nQc͕Rř9=*0x $bsH' 劉KIrў\Oɹ]#OɻhC䎍tTri;hO^[aHgq1_82񜼘،؟x͈/X9UYw/`^]KۊXV+.a'^˦dgUUlVqՍ5>=Yηos9P0&^~[7w*69 ffBS#'dri#GZb3S!֋+@[*# rW^~ME?"Wbsևv}qL6Jŷ5I:Y_:j#6OV>8iӅ4k_~K\΀.^+SHU=$=G׆늿ǔO?́8*p^ O d-K:gC:<qHb|r~w*Ħq6;^yO7c(ٳє22U}L"@0*V૸:F:ʕ(b_|[{[Oӥ]W_iX]nZQ<9|o49/t:Ë͚ rEW+6vNi]3\BtI'чx0egFo%HCf8$I_nNSl`[u ~mE2Q Hi`ceQ"uLL4Ĺ{<%>#-6AǸ,cVi^5\LkͰ:8_8z^ynXgY}ao]L궴p^;fZBBnʵsW36=ų$v|E]q]5'!-*Ic\ 1t &䅃MC^XKLNzHuhU4 !'ET<~cPr}>\i@~ʭevЪH-͟@c,YbbZD'VAE0+uJ)Ngˑ g #/JET^D[;ft+:x3«r0(zvbӢx:/Y~IxyYX8k=Ka~͊_N fĦĎg6ڭQJ?eK7㧊>*}FU֤[Y|wԄCt TK/Bv}g(}GO\+K|UE,˗E.'\au (ٛ,tt+Mc6-*#}UϥǥٻjYMCUWoV_ ڭӬ[nKjFi-e]^Է%}7 ;H[&>J~G:ˇ_eY6>KudG$mU#bN4"1xFԻc۴Gz4=ӋrVz ӗ4[~<OLyRz[ξ)cM.<ϯ4O`0mg}v6Ii~\{0vJS>cv:&ތfi91q1$/?L\ī`o;ٙfK;>bn*um470!A1%dMbsb>*ELJ&g}X{؝laj*"GIDAT cz#=Nщ3qH|_FWGS!vgŇ-XΜu [*};"m؏(ћv[և}w>nM7tZC3:y$]k2:ަo\oqf۝M؂#*qiּW>.敶ېݛqziNyơr%? >^]Z W75)zh.=ߚ;϶ \^0&m(7+J9(q̸}A1?súgvgvNm|x:y_/PIYqM$-D~>1rJP7Ol|LS~%/ SEzO m6)Y( ;Aڲ#Rd}Qw+NP.쐘O6WBn $Qќx1jqF|sfQXD|7S< ٙ5 EH5d7g. n>b736bh֥a&Fĩ!JdJc?:2.@:sqpnVv:>(iZkw:,͉S4%^0(N# eTukSlY,C(GkQIUd'cKkgDt2^U pd\~gjJ>;Dˉֱ{ta wWӴxCmma2+<Zٞ6왬6״U:=6_J[os'mk15tعղ6fۜDg-&Z,iV69)4;`Iw5'EYߎX? E7#nwPDLW<) WchƝ+2MONrdeE%UWfuT'Vͪ}n`Xf!ʎ AaD⯱H:Ŧd,JYQ[6:[hiz֒AeY}_,Dd-KjbBֹ4Xf0s,X>nȞt(4?>X7ی+ircs* bN^Ĝxy7;ʥ)6@;ǡ؊OnY)I 6@7O>Ub0X%Zbu]@l g#:NSmmvj ΍ܿ&:t-}kgRe=Z$_M\Hߩl\T1֊}X+tj.n_y//j,; ];dpBO搦B?;\b : 1(qM=|Q_F[c/SuJ D;b^ G 1=qH|g4?{. }a>{X?";z`'ۂl[q8龸4b+ vvy-c ;X;c[`hhE|Zĺq#vRg k􋭰mWLFts62{F.dIJ88ގfdQoFjGq\yVG-#YϚQ*EӬ m@4˳Dh[څl,jKC&gJĪ dWe+K3gQ}'<'.4˳ y֘o|Ǫj袪u!TK}}#+Aܢs^5XZiz Y1o^,hm~zڂҸ`ؓfw-: Ѩ& O;!Q4T[ĕuX ϧi~NHeR{3SRco|J?9Ǭ?"^'pv%pojzyP4`w,\iߔwO|ǻ Uח|zwC>ўWb%'Vbr\k\ L5ٸ6K҈49]Nyd/e)?ܨ|fIOr)UM^.yf6iÉ?cO09,@Þ(U"G%dSdakX`q)|Jtc~q0ڒ4PZʮ!:b"{/ǔX{}ԶtwS1bgt"vN ϮȆ=C63^ԙJ+[KKV|9D9vp3.)4.~Gc-Spxz8A<#Cj^},$;7;;#6bhlx$HE=Zffdg;z1 IcԔOz3_Ď}sBLALo8;XmQyoj#]U$VﲎʬC6lV6X㖬/1;u#FkYOˢi{ٶ0"NoNlX^>{Lh?zdd9/Y.[Vn?]Pw 0;Q L twxAyT|84+lrwH܏iov!YoF8͑; vǚ8œ@Vxqw2?arHJw+;)~e ރima%i{4"cA>J_+4)vw1o Ya;SK?r{[h ?cEiORtO}:Nђ81RL#VԨ#?cx 1~dž[F:L/ZL$R#є?,:5R~5_s~?g^WQ>*mXJy _hцьr|O/υĮ4ݎ&ȳk9- ?Xd}3Ld{31=OS[ީc̣tbvfjF2= ![ؒمkH.т1p(IC)?cAę6;6ppl]&Kei^aȖ@CbODl+8ØB eу8=V[C56!51#:ed51>DxBt6>EtNqt']0i'cQ4V7%[) OCcŘCz>RGT;db@4~h[J MIFSbHBf 3 bl.cUTh8/&DҊf44&+>&&&x'>z2۔Le "ZoҰd'KxL?D͏Y"b.q|g!o1+Ffi0~Ӥ-K%.22bs QNJs#[=ILS+F!:x:q!*zY8?̂A\Ԍ &YFlKkKBOE X5}ܗv)e#fxj{F؏-uSD=k֣tPlVz)uD.!:"6&minNYƆcqwEUĎd/ Mc(O_Cf'SZ,}"MiM>ֳ~M\Gģ^lM[V">2)Gl>G2gc}AtMP'ccovq\C mQڂc̊`$~1.fQA|ohNԁqIփΈXtΠt[t4%LL~Dx!haݣuј)4WcuKxɞ"b$Z=c%*kE Ͳdu>)qsѥR54"N1+!jGlMў\b *9/b7us}zgkc\dYGhu%֋fя5c)&G0&īq8;p<`'\_q夏R  7/.Myf,]G^ߥESix04L6O<9Ŭ{N%)WarnKrZQ-˿&ĩǓ}Nv81(+t@;Tq̊mN>mVS[Am f_5K~xh|;xܲQTXڗ6Y vgɮN%-MemC1N.2.dw4iL_ FMlc w^U7;N'B ]T"( EA (*(U:H/{' {1g8==G緮+w[֚c1PAbHuTW[%tL.iORt8`v@z'ljW]cUV^:`mMkwGw d-a1@t18nxt$+ $*jwF˩ZFQcgҋSuļZnj+:="D[LL{'٪qa5Fo0{蒚TR׿PMxآzKD<[uUYL>BS-QEhBU[K*TC|~Tn}ɼx 1>'Ą^Db9^ǘXg[jqbV/^&&ZU{XSҀtwCm4հIҳԟht!VU'bվI z26&sc},%x0sx ̏zb_ǧx&.t;Vw#Gwc^.Fdo?yh{[K=fBzX/`d4Ko8-]#UlYU[5xנ^{WYsY5 m4?m,fމay gA6\72+3q^w(< ey^/v3gO!WVXt,Ʀ=f2bb֮b8!#ϰ8 ԌLσ{/Gy{s.xohFzdϐ &]\aqz:88ӎ*陁S@uKoMy+8$;sSmӹ|z3":@R6O ΘX_Z07tlz MpԢ#հv">^ ^pNNђexKKG;}Lٙt}z,%jԞLQ{j-V֧۠FZ׶8A*q4w"x iM;ԎǶ摦R;;'gv@U!u,:'юXAV?A ;zϿrpaϲ6m!c7Mhls'`+nN]S bx<؍6}"zt0՞էi;Do(O7;?~]]y OjuEJS ^~HsmR7O zDc Dټ$:*"P;G9wqVsR&iC ^Q!ġi,IDx|t5Thbft$@⽨U#0R+3 zCޱ?45ļhkO XN'^TUa8; Uˉ71u7WuW͉VEFKqkեnBUUCZhXbu:$Ol_.hfwgLɏ2mc~3N|0mܭubc (oVS}5ڤj8Ǯ]v3ձfƙJ|H[W%<ۛM[uD;[FbTW=Ib`<^C! f_q~ƤNi>ab8.s83/lct/Qē>!j+MkBJ|# bX+ 4]tgbwnDg&:Dר'G8/v*͎lj}uqw<RMVbh[mG]V;Kca@6>wJիn @UU}Xu_ЙmWh6lQq'VN+ j>N;ÞtjO{WO?`}8%}^:Q{c%6xʎ-q8MAK}F4 'IO^K'K̲ñ*]_,ru`c9i.^3! >19F( 1bl\k5AhW3Ӣ)G/L1 Kb|rc?vbFb|op g,<jvʒ6DV{-9EgLoX m@].k$j]])7mH;@{:jY6rb2T v\Mκ~k=G/C y6Џ*T(2n,sqI"V㬰Y cԑ?Z-Eh g3 ]HZA՜ow^_l +ఔ >1mV)+B ]0,csa(nAekq@̏6Zbe3c-ގ8wNj5.768.F-o-HoHOI隣ԞHR=ikymnZ 81ߡkxzN|e_vqsƜmƟMLܘՑitz߉điqQff$iHb%$f@eJ'v=P EytfcHt$MgG #Cٺ_iccqZB%n~Hwz[ Yi *-mNꪏ"a/ #ov&aOԡ܊!暅,X,4lִCla[2N|=~mc؏x0GXV?ڏKljhu>5G!quW!5t~-s v h/H[{'jP쏫*BckXVt86`^r#u&'}^b8Pk|vfCu2= )})0a!VyF]:Ǹ@1{ƫf ӻV~gjat'I)&NŎO'cnʟJ;M؛^ƹZ'm6ip:{$MFt1(qL~~Igb$*mxL)gCv#Đ:6~q=;̘b<,ļHD1AsNs/;/|^Hz-s,|Wb~gPBθ8:Q5i jVEol]Alu!<Ưb㜸'?but~ 6$g2ZGc`5/Շ+?|G6}M \X]Z?W]nE+)iMҽ9i]x޹w_˗^9nן3gf@c:c\VSi2KJWRn!}DZ=3|5{tfc%5-L]ez"íR#ݧiqFML{ >4$l#m$舝i[ҬIڌ40ݔIMv6V>siq:Son=~>wdd!JZV[Z:Lhg[~4H?e&+/[/\u9k?B꓾ 37 4|H_XS>p^4޷O_Yߋ Fc%Qy3/x8^%˨[H{k8 #Bmvj7~s{LهmtةlxQ[L:P{)jI'QӏfImMGҁ)sIc3L6A tB"NbjNI'Ć)Y]qQxq+1#vf\IfܚO"= $^i)I<OBFt%;fzSADS%"YWH4Έ6&F69lqescU7ޟÌm#g,bfM{uL?r.oc٫Vj]ZêR]݉n hQR[LoV'Ylm$)6VX>qCuQE=I7'n."Zl^ HtCǢj{;U41LQͨZG{֧U$(}vMYZD02M@ 8Z;ҳ:L`cN/#1#_c~\=&1:I}U\wn66'[-i,8"TxK4KT }ƃoxMwFWHMy,5xWz lGavߏfWX3:Ʋmheqyit#v`1zBjiN'MHW&j٨iV;;91ү,r&A5}>hHߋ%gcj%C4M]viӛisb89 &05 #H]s0 eߥ6;&~sC3vgq,j:'M(_ ҅~w ߁CqV6nYv|jt= 1b5$Jmxڇkn8'&˱ɘk4tb:;zםKz!Ui_jwSҙiYZ 4j8՗vTjEm6e?eQK;ZkGjPmjoZkzo9k>-#btsMzkQiԛ3j(1-ObgK1WGK/MO"C:aM<^EWx1Oş"vq3ij2miDU&]o%`KD2hx1V;u=w8\=<;]G5]/^7&ٌ L^:鏱+l i1 :/5O㎨#jwbr9}o*T#Z?$Eci+ bm=q_-6Ti#Q7NѻI6İ+U:D|x{i{Τ2_!6iiFz5vi(''V?"V-̌?N1ϟ7o|Lj_WU ID1DZ:OFC Gu+&-O*]Nbyj So8($=Z(ҳfz%.@koNPLsit["k ݗ[UGͼm7ۧ82uI}z!v+?pT}@Gw{t}V)[-^,Vsi4@>j8ؖӟmuqR{oVyJ],G*s)-7 P_;ľuVzh Uw }fAҏ#O ݒ+Fl/2sҵK@\+19_O2?9y }uۢ8زo<} NvDf z[i0VLږ:;<xYnNN?#M0$-o+2:'W۝[Kon.I3OKCR#L4#|vVXyv|3:fɛKƼ~Y}scĢJL2vb=Nha$#oU黤imzdz?uvvz3m[gN—PkoYVOZJj;S{Fڲ+'EHi*kLR>%)2~-/LK7LӫK>r :+Ě8*}%v^HgLJ)4O[1).%^+*IoŮ&rIFY%i-q3c{$6{YF<[.MYNNUeCﲢ:ҶםΡɛt.lŹ-Q݀Yu*aN%_ˬ ϝ{1 >_똻Ò! ~ʜo/aYli%w 44u-Dh-Ikb'y<{o,t(XkBtV[hi $F$54-k -ލ- }S8* v}c(>]|x^"lVvKIMM\ŒW|yS^ٍ49mGz/ά#RV=Wͮ1^nuoëo ]Ļ/n|+/qU}/{iz$HwG0m2=|36~us}C.'g1`[זIz_IrRtPzӻi&Y$:Hqti#E] Z4'ݗ^x٢aW;-ަ-7o6;;: iuiZҪ/t?Bwa5~;#;?_E 栫J/؂jrQn^@|. ~ȧij`f)=2ۮDKE4|+zH̿7ռ.' -fP.i6hSC>_1֝v7GNϭ8: c>]>j_W @ߵ0ҽ'bb?laQk1-5˭W#-2?-BOqW}eeq'ݙb#I s[ 8 9GZ[\~JiҰ7?M.blS14.gbů6biĤqu323SE2b+l=>X#Y^ e" K+!m>ҘV` }e!Ei־>oqry8iwj w%4t RԞN˵)5I]HNS[HS/_wҴ/=*4D+ӽKq M'6!}$*' trtF[…zM|=hҭSs|/8`ыAlA,"ߏsm ~X,+u͔cp1$'ċ;gS{Lt(n+mKz4D},_m68Ѣ~/+]$Y,?qފ,n\+XU˖c,ޙşYvfW}g,?q՟WԳ dkkFol~T;:>VO Ӣ/5'I53?L3Aq@jRԹ:.KꮃV%MtX;^{oƺ5j*+r|.XW&?X};>b: O[g粬t}Vkjڕs1\TALK/J?{ouT a'"!. ƓЭ~nHoiySC \ͷ 5?֓>h-oxE#hnZI۵BյA{tiz84A{MՃ8VDGkO|_iv/?ByqˆCMrm`tA:0h|5;٭MF4c"ޏ-ovEȧEi(i UX+hRahQ[Egvi[Hvwa .-Y ؅trP<5U[ {"zG{^WH@SNe5xuѝta)뤍2v)VYjfCᤧ I$OBfMHIkOZ=+ NGn}GRxf^zd ť m~oda'bwc,!XuދĤ8#.6nE[psc;L3(:O8'Es jW-ҷsm|g̉o:x-2x7? ͈+MЬ\tsՠ:U͢0XYġrmpVV_v:8}^V׵i=]זwq{ny=s_h ^'1 ģY9]w+N^sʦ,kzzUh|jUWg]>/_kGlhTr~{n 76~8;7j iHzuN:/өG2å/->VX\_jDn4wZ~ysPmkwv2xk$H˔5T>۵64ٽ+:Ϫl[>@mU<;MO:Zuh:ִtBi1If7MnlCshN #Mu}|Y^^g o.\M/иKniNK؎4_-0("9&\z61:) S}{U&P_ݛ~Q‚x%\Wq@V((׻4g/umZߢNOT ֖X^Z!ӫ|^{HQqע4xY"HK]zbݯ"9hFh1!;9-~TòN>D\v9Fi9zcvFkms,#K5I9#]J8ԝ p|rq%|DV7-m]˅Y\WYEiUz46;BS-jVp,Rۧϩ6gm2s$,!ifjP^Ž鲴 龴KGU҉I&ېvb"+unH=͢ LJTxSHH7X}}>rztb8 Km!K~,vm1>׋F:B3cXAuH 7}pxd?gb0$f׉>cRLgѱOg1ێ$j;̀ŠnI৒r"J:+dHÉė17f|YyLAm_^w&aL\&P?N5;:lvtۉskI0s'F䤨ڜ>6 |B˓[17JYm/]s3vΆhYGU[|rwxբxbCuE9B&E +e~y8/7m|q{5?hySihݎ.fqG?MLa-ʊH㨽@: -BK4#9Mr@+9芾VƼI쎎ĖT}T'Ͽ?%m=ďꏖp'I>Ͳ鐷2}/4ۙ'zo^,3ޥܾ˴-%2(YO$ >'jDMy~B\^׻Yr\ qxa\1dx1|}^clܳ v^fayI7UʵgObz)VdO;Eҝ1$ p1[KQQ%Ηx3~ /hj5wHR7ϑ:礍'P0IITԒv~G ~ ؂ H3I-HmIIu/U:bVNtHy8rCIW9ݎ#@<+>imq493-ҏ7ѣw[ś$m`azHN+$v|nǾ^j1K{b}b++t0^HGjb5q1,fn[Gj=N:D m#&DNJ;4bb/]kgbmbKbGS&H]Εmq,9"]זOy;1*H!DsV9WӉoeA,1$82UvJ 3fϞ5yP$/|!>O6|vZ旷 ެ2"8syZT\|&WߟqW~@Fݺne 7ϽWܳ~0W" v(uWS^ݪVOSRk Ծ!r[z=aVr϶;q)(H R{S=V޻$"_(7b{/ݶ;]%Ҧ}Yٿu1ف j3ٹyIgU3 o`QUkWț~YKj TK[W^߮:J@ U71nfŹ-0<-vx5O5{#{ Q_aIe @bZ ]]o窣o3b정0[_[bȍ`ug9^LBQNMwI/k96rq}0 F[ Ωv4W='gg.L:ڄޓCzoubylFvkƴ-n$'7ZI7ùn*ȭ@-I:]I6^ؐRp޾'K:Q[_z7g䀑$Dje.H\AOGs֒>Hf ='^^KoIzTLsĽ714 ZiVk+HMg|9]E7& 5aE.ii+MYBK3Hwk4b )ާv"$]A3=jl;ƮD4ݤ}i15}/}F͉J{cU6&S]ܘԉ8X;MqǞhgbU# (v'-thӈؑXkcӷImaf 1]ub>թ}$ A84Ot&>i?VDÉTWQ}WV}ȹ~q'W)/j=z]xWY8/2 kDTwp9뗂-VS:-E ySky%Y'IB^䲱 _ή6)c Ys/%ڈ&js^6t'Ez-݌aZ@j>J'>Ouŭ`^>1QtH7)=~1TVtz:뤑isgj^@?&[xW7IcBf6i7»fIdIcCMT4Mj :Fk/uNƢc.э4]N10m:ei-1 Xx]31WOH.50lW,&[O2=){wI;HFbWc,H?NcmNnhҋXpVXۚb+֚`^tW'*C- 4-H*bcgۥ1n0㨼Pz< S^"*Wп$Gmms+r9yA+c9or,*Ozf'x%Żwn΋s+nfPx-ryҲr`j ܿLOBz b,Y}u,hQ]OP۩@;MrazZ)Oj'Xx ho2{j:OrKI7n;1d*2?uzO/'cNN4ܗ[yW'S XƁlrPmg?qcۍةH^yY1Pv.JݼvR"AN25/ ARoפe2ЩºW9-2,ebʫ80zA:/1b=#9GcFX_Oپ[|\Ql2TI;J _Ǜ֤ 7FO 螮-d?[KoF獳㝓nDIG +C/m2S8 ?3ie4)ZK<38vø=w(1؞mu,!ތ?G;b+Z`ϰ%E'-kf 3Sv&",G&-HK,&i^ڞ'owJ?[]HIZxR!t)tHҾ7HT3n.Xis˱bTQk⋳|F:cuaFFUnRBcgjlA6h>@]7dhhVh.jGAwHꡆnzꀈ^z`^z^zacCo,4K0:ig6fhS-i-'L3V1$7T &$i!^CCCKEc "yb@׎sj)M0:2\dyėbw 0a79:qI4%u,ٝ˹T\)'ѪQmy-2D[o?q^M ug'1֯V7vbݚn<߱E~UGqk%Ҭ:L%Pz;cH?WUd4 1?Ys:-DQMQ;o3 $ (c*2./ttl6Jϒ˿k998/qrZ'i!0r,. lSmQ\dWvAyp!qLi+גq y X0%ܧݿ3^E)eaS-T~٭Ǘ4D#J^\r84A ,J=z~薲C؄Ѥ(ו lVTUu) FR9UrU,C5m1ok#~UR?V3}?6ey}sFٿ7eL@ ^ҷa0Yi55 E?t1Y<6?-tŤіB9G| 2}\ZDm8_VXz3`+ WaT@oR.^m t/9AXҗ!vʉGMiCX#L<M.U,0w<7 ->O0M"1ɋ~ &H҈;1}ŌRsGpF۽[e{ Q8.醒헳4 ZWYv5|V[ܣ5c66#H$N4+=r oXiT #qXee2i'ߐ,Be&,TN\fD @+܃R=:N%Nnn6[B#-#kZ~ZG:A?ҋhjn3E5JHGXz%M8 #t#SCw=IOYڷE%lW{OhGF 1Kq'Cl+vNR{_Be)a9-RyNk|xRW-|9y}{{Ƶ.-3,_oJf;=hSp)+Xd~s׬9~Q_e^^ٕи}Si> Hzsߪ\O*[4uL{-Evc[S3\pE6'ޕ'M˹M-ʸY5ѝ?[YYN=_$kE~QՋf~kSߴܷ./,&]L*q6ZozR}On ͮ#UxZlM^)y˿̀%ٲu).~Q^+V y5FY ^Β* ɭ#sFMȺ;( Qӕs`88:cbT/iӾSuVj2-$] b4Xn"q0 KNV}*NOiK"+8-/2U-aݙ럆,'MĻRL#ZNG7} <ǑXhj~ϳ6sz"=s>WH;TҾE*Rt)#`ǹdgUWYYGceڦ!u 1O#ڢJ? b`=_%q Z(csL07Fo9bTOjXbXjcIj`O: QY6 VZMl:4b59P%J=5w+w O3hw- MԀfZe-J-IhVv^!^JmNhO:X:#t{ڗCwZi5iOtԭu0Wg0Y'O{=-}NO,hl.a.ES,I2E\?tk5՝[zU!mIXJKJ)*!ƾ?ߧف;~RK-jPwu\eՙWƖn_'Ǒ, *nr`\526)eŷE)nYYUWU^ɵ) k\;P 8NkVL?J6evLwyOp!}RY)&凸Үkl@$z{Q{s,=jo{-ҏv|?-2VrQ04s71&6ߦhNA s%ZUB'9눦7->/UߖKqH|,2bsC^Ő*Nx}JwE>%J,ѨiX|d)73{ z XSn_9_.+L!91~Y'M(-#KUjѾG]X2,T HmI] 2ܜĖW^Yima$%5h4,v2fc\E2|mq9yTcŭSgcaĈL@*^w~&\X_I#ruBXaJ`Y[)J[|ܷͽjݦ:3lgykCU$6%Ƭ+w9GUtؿ el\Yz,65iBg[a[k}܈RNUށ88)UeU*V)to/6{6>M]8};`B.b Kהn*&>bσ/X]C7ounI=X5xUg̡S}V16wgSѹqC|;;)栅7u4Cc{~l6h7('"` 8KnIS'Vl Yi1}^Ejah(}Kg뢺,?5u38tm6{M6b F2ŖZEx]t5sҙ4-ӌUsIwy8\kI?HSt^Y!5r Qs7LhlxU8ɡzn2دwjeN⪸"!Uog<Ƥ`yoega)X`eXX@K+`XX:,JJ!O7B<˄r°ƕЌ@^\E BIR8Q6 5bA#C5+D@'ZiPb 6`}N,,+9/ͱhEyZ4/oVZ- i_5#dzԥKe0Q`u']9i-5#e o`M,#čJ٧9lSݑ7-+~MUvJɸ_ְ*&10։E:]Fe] JodeEزLseDve٣Ķ͉E9/21]W/hҵP}{M[ tmaO Y5ӡ}.oM<1=ќI?G>NX{Zvv 8dm%B/JCa;1cϕؾAե֗5}]tQ|j"~BژX<Vֹd !z_SQ@2/]\vo|֦պW4e^~MK맖Ә*99[*G$v;5pHN3b)WĪ (e<8mGU:rЬ >!1v&VŇăELui%.Uε8MzF]1LxϻV4N)/v>2ʹ.3!+{NbX"oķ>t%^;^+bkKf>X4hLGAy2f>Zƻy-ȠO-DiIXm -> k-%mG&OF˰Lc 4ZN\w՘6=b<Oh.2Jⰱ'X5x0eM*)c(DI )Qo#/*M7U$b`\_FL+,M԰N}iulYz5Wi @j_4U& E]q hRJfנGΟGw4:61v}\I2==U@ *T_^ҷug`N+h%.It}n+{Hޫ3Son,=JqHQ&vEhi2(˖̵s!S"FL)S3-NI6m=C^Uع)^Q?C/F)Y1%x@aXNL!>&h09VK x 2⺸->"69.mv&fRx+(m5>/~,/N2-󨺾P\ѳi6gvq ҋO#O~EAfu -o`Z,+-سZc :\\ Vsit-Y?GJŸgCFW3 5Zƶ ެ~%Ȭ3V tlfSе\R(լױ]d.ěķ]a%F}bt1;] sSӒ>l۷[9}iӉxZE,!n/֮~h؍é.7L3I}}tkS'GO0\o'U/<<8|̲B̶̲2."zXӚ!f[̱3-P} -L=%Yi#{+=T{5ytUtغL[!㰪=l>H~[L&}RuP z.Wj߂֯mA-O%{uU7_UѫEu-?wl;Q傫T5[5y:ԖBVAv8&&/cl)ߑņb+t߷:`KmuG]iH9W79)M˘g~Pz=䨳Nأ-sDc>>ǗSbLzկ9G4>Z+"Mh 5oI,Lm^_ouU2<6󾜘9J/cM0B87vt 3&7H b}#6 L%o?&C%̳(em)TӋX|nUؠ x];*whf>?ܗk5 1jp!]q w.-PLDOm4PYgꭌArz)ZZ7觹]ضӖ!PV^M/ڟ8[TߡƁ?cd cIjcdRΤVcI]ҵSy$+%44ЄM7qvĜ%&c"b,15KFGC!>աY'FtS闗*|԰L)rS ~UϦ8VKdO"+l!У:Ժ[;&ȼb?orP_/˵X*Om-SʜPȚZBB+:$t([ddھU.HWߡ(9F),Fb|u j˔Oy9)e,K3: 22X5H'\{検?p;Og\B|hJXyŠiuߩ/cb]Dcߍb$z9#r{3lz9'BkKp66]s*nq n|dqC귪lo1IX&+N|,PΉVTǑ6s1"v>i!LNOsND[}KKJ/u%zSc8^ѝfaiYhZl.i%[gZtLGL,Z^L\KLB26%:[[tZZ^z˭t˴4K#+. ?azͰD#{(>1jeDWKc)fZ0ò4ەffI3sQu+ vecVX9a VDx4T_*#Q2KKʊ@,VYE׭zLsNԝ8ۖAo{Wsx]EbQlӉ_̣jAj:PV?(@W`3Q/ ՕY(ά2ں*6Tc ;gY'l\/|1v.}j]ձns@+ _𼳲HArpeKN}YEwpZ{թP{:gL:-㗬wQp`E^gKag>i"?*'p2TSv*]תMh_{f]w3gi;PvjcUcM8E{}}Rzh6^\e& Ŗ%x\J_RϮRYmHYwy~  6\Xxc8OÓl?Yq\%M8F'0JmgNn^LKgYsxb^#{S9]Ǚyaz3pbo@SbYCJ26hSu 峡{ZRӷ%7sأ \,sωK%ZiO,u~M}9F`QAXo^N:#Wľr>"8^Gq^ sr&,c[~gXb8qI%O()s Cvpٱ3~{c+pgn/: w'rOe&y^ S[(OqD |b-Yw~`o'g zIDATEJ|Kd|fZn~Y ӢJᣟǧv @ ;^4÷$M)5ҼOuZC0 oL +H Do}~#L( ΜS fO佐'H<0U|-;L 4$ L %[MgpૐUmg;ЅC@g 2qRvI[r1߅?ml7=ׁY āW?b~{\)q.uXw@#TB.@$Z.%R<tǹC#o|ۯv?|n:{\A`NTZ4C|J 2X*U_ANBnck/G@n| 49 \A20Pp cc+W[~3Dw&|+n/㦆:So=6.[2;-[/Ld&Xawπ*;/$<05ie2MSc- ]npӢ97G< F9G:7 >~Z5=LA8hM3DYѕm,Fj}hdfD: bRn A_55b'aaaGB}_۾WN\k, 8V*ˤ +jAƻ&M>k?-g2z* 8[ܮANvbADsz| H\r1h rL#YYKt9c2'Xi30 2An\tI19OQrN$Q%1p,Ч,'As|5h r;{A7 6J:hw!E $h4?>qRv} xn6dRl@%Dr(yp'+=kWX1>99oӘ@H!VO5: mX/q Wgɲϓ% d%14،BY!({=zfdq oUUk`Zj-m >bHo\HSQkgS/&m=\HAt&,Tnx=ށU+CTYhex%> ~ "¬5se!LNzu8@SMFF~+|Bf 164Va9/g-gN8[Cvdn 3OO?ۗf{#9 X^e/&;52W`ùua1_wvO2my@81Q@IF@p?2+FRBmc)!=_LzzR,q|\-IH@%+"^WB2CJ;:J^r VK|j{pJ/{~80D<p؏ z+^PRWmi73Mqy;zhO]-Q㬡BZVF 8Nn$A1$s .c.i  NdFV WJY?,|]2J9|.}km/=_ߥkAA);+06Wu)?u`hqO s #s^/ `_. Xn+`mǍ{I= L{dxy) 0#'$,@nSZ6}f|܂ #qVo]o V|_UZB?b߳=fvS'~Ocј`r|A3n7>)G @6@'?Bhk@& F pޮ \ F8buB;#l yl 3>Yi`o.~fP`OXg`|s ," %vhYn~i=k'v[&ؓD!T"'%Ȧzl-Q0@yjSήeCWN(ۙe>!S)#džNyr#= !-cX # l|{`%Ace^)U ]C .xzju#HVg4n/mx*O?? O; b|gd[SӗtnFN}ux~Eh.\!Nr.oSlRIsd$-2$fqTΑe:0MP r NZ!n4 =UA\{PBz@ zڼ,o`>|`t8Z@t:?EY't1&ffˀO٬ӵ@2e$3~xNr҄en٣;e;Ѕ}ڐdpgTf.1Dtb$@) RA.[fg ي Bi t' 3Gp/І}67V@.SGvIEA7CFk@2uhlB$Tv R`2g 82 IcMOT4O`H~E{vn% 8z8[pӁ판I9QvrI"X]UkvAS zvX1*Lb:WQVXeZIn3ߨb/kǡ\Zօw#0Kigk}B:w8~uQ +$lxz1߫D1zTX7D `p 8;|_Uk>-" `AMxG nUtwKȀ1~;G PVW?vBEv] 0gH)Yzub/ Y},oX;f#,4d`U>&LLoF`m>0 !t%6):[}e ґzґ$#C < kz&vQ&Ur4YOWt12NH촥d7[dpo{s4pp>9"UEg3J&7OC 9= Ȧp*2@r>O)@hleHW"R/a]c}SxfB+0h]0/ F0!z An@<<~8i`|)[@7  dh(k{A.d̓6Dl' zv "r ke\'O̒@1W^g/,@;EZw)ȩ pD|.vr "Gp%6H Ҍe47FI 얟m ]%,?1 o{Jx$"9:$VVtu#i g3_'I 0D?Á>wkL64Kc3]O_n )6}dJ/{>f˫n*H} %v$]-S- 4 .E D{24dJ(>8%tND/"ꚝ!@pχrϡ*7] D>Xs t@o B6d \v׆x~X weh"ul#'=nG,)3 j|ZQO+Yfxgu#{}p[L{c ԫ/Dbތ]_־Zu6MD솥«c4Jt|GzHݔӿ5_?? @HU~d(T2L?I6K/>J)4 e4'2I.'A@&+ cJAH'9ޑxpK\KowhwQ=I`-:3+Fp SN:`n"ϥ 0EtEx(vBs?9+x MeD%Vft?P֭]6) $^k>%x@H"Ƚ4!d 8/r-e;Jx2w )r' avY.d\ 9k$Q"@ul7HH$Y4gANʀ^= t +$Z Ҟeliڹf@/\sH݌_6= .V݇@chNT*=Mpa)6 ( W%CG>`<N !@b9-4\;OAdt)r7.ޥu B]@CP u`taۘ.quB^b.3nxϘkĶsÄcJ@{^z<Ī&f|$CJG*HX qG50V=ϿoK1^u h^'k@ql K'}@h mF0-zdāI@Wt#X!ʯAi!AZr5g@':Ilg$HK FX 8]"ѡn%'U6<%eHঁVQD:"9"Zp%_<VyH %--qdr:H&x6q1 Hw*pˁ.Rĥ*IfH@D&)F*̥ ?Jr*pEt`s=%9 * 45@V.-]36tr{9IQBdPuC PXBnPHa[TW vFBZMf54S/>|E)  K>ʽl{k5軚PkY_?N2?lL 4d V"Tbz~r7L3 /npC~ߣ'.ʜ }u;Oq2*%] G͑v \'M)@J@9\Nq]=z{,܆P ԆW`A˼x@ p3C^j7?C&ByI'}7fP ڟ'G_c~~V?$S}`wu%E ) 3dcr:Ԁ6p*I@GbHj2hX7t ;K)FY7N'\ Aڂ%su\[-!yD XA"v 5R/&,Jr`țH I!    y]xBv V%٦m-p*p}d(Hf irH*%te)) nḽV.7AΑ_9Z:>zL8Kiԁ&Dղ 5r'Ƌ#^l)7 bV򙔂| S[_\2HA.57H຃@;\$IPzp\<+C_.HJG\YfO hph![\-K/ugrӯdU?X_*^u ieC0_;?_L,JhcQV2?Jma/#3k[ F]ic'Ûpԭ%W0L?_C?Y;-áWu;rJp d4 I#VΕYi tu蚂/3BiCB sCf|nlڣ_y8''b_y:|Bӫ^fRjie: !K mrlW|2{vKJ'jxMݣNzyS) !GdNT7Vԕ̘WZ7tzxivBLz+P/5jכ]R$F':vɂ]qmHm9,ʿ"iP7i8*Г; WA5R/Ag.-@ ")"9R"?dHR@p2GhBhy(;Y*(Ykxe'x٪kX 1=Q BtB&@L9$HW@-eHH;JY_@*.7Xfvl9 R('JJp݉ 7e l[`)A3 +ҕ@f)Q )$ R-ȕ@*GW)H) t2MʩY"$%tcn d[ d{X6&u o2ʝr=' *'̀< nT)K nH 䈛VR[="-7k0*j:f."m+;ȔN79v&ry[3c _Q72Ճќ!wy=3Yݴԏ wN)m6_@R2PJHO-HS0Ղ*BUvB OPHݜO'G-߇r\!QϕW|MW{=.4Ż EfړdJCG+G/1ߪnfjN/lMA9.}]0* 'hۣa9Sm [37 @jo#0Obr]G@4x9 ;}K_Br;TDHtD-m-=b|' 9")odh*.}pD">;ڃdH-d[0z $ PTGN)ɒn-a<TO@ xJ p`G+R@u @Ymok7bwbDfW΃?g_:wK{>5Cx(1F#kc3OU#$#'($][}^Wn'J @nT|ZFdpLM2D]y-~ݰcїȴ﫛:l &x t]E0|6"UvZv i+;A&BpƒEǶg<)mp*#]b( yc.8_.LeEfZX)e8ZoQNW A)<<^@?}4偯Q.Ӿ~H|*؇!Zx t\DMޢ|_g݁tXn y]7SX=Re1m=bB n^ug N>/R7!!G;OY" zϜ|'2h';\ ̠rTAVRrT/1ZvU"ahN*** ` #pdZG`40F#8Qs:*(/ M4Z%&@6KL*@ haJ2@3Rh4! Db)P"!D $||a•@ 4 (p І%JǨ!$2 $N'2 zrXfNK Wt2^&^hN {I}$q#}Lp] > K@zr]ztLA^F~]"#8n+ASW 'W5@;z d!sU /0Bz \J9]r@nL3r rХ! $V.#W2d|)K *Ns:0HN+ЄI3N\D.r!2Zn%2ZZA~gJ_d"C-!]_҉h4 . R>mY% eL"ܩ aivpwNlsi7yͅRrלm~Qd+pn~`YmL\'}xp@khB/mhZMC>@㏃m w,jh[9 5(> V~Hr;Np# s ܸC;Msg4toY ȏ$qBWޙWI/dFr'K$$Hv)TP)س ^2[ /.中Pȷ*J=rФ9ݴklRG{~~_K" @.([s:R`4|lu^k2^ TbS716\ fug}o:SqzЮ+huu Hr;0bv՗x<筴%bl}ޙ,}*Q򰴔[)_>諼(Vt`\.^(5ڳ.J6FX$R 4Yl sARj@́k{ @f)A}j n4ܴ_1 8|bN28⁀X8bb I_JjAΡJ0E ~!ޞT_DYt9_П)ޠӁR=.ђQVϤ~8:ɋ@<7T d*IăC lV9k~' T"#;?dk,ҟJBr5K]$?~)7\` $ғrҎMM\kr77@9KQSs@2 K6rou#+[M._4lYM'%If́rukwc3N{prOlϺE@F kXZײX/, ͺt.@&(4!!f}4a I0YgH\#H>HKrDJrkJuޡmp_)t/n=ጭQžҹy]_fzfyMjޓ,ke8+zq~a;؝__I^jsm$Ї ʏ0d5p]QpUQ= pOg=*^znnkAu< nM@"|wD(H"M>^3QXi˫\yh&p!pॽIHc ωMwi 2WKsrm l$nͬ|y0>Ad%0E }C;A &e_Mf| =4X< =GSC+ߪW4T,1`F0{w:S~"UI[_$F+[${HO>b7^T6 X0MNg@R$Yn^O@,~z[K5P@:v-/k9rDBi\~N{i@ [߳A}'-z\5}N#9M~>g{_94^֊b0Pk*8F)eA )PO.FvH+X L!"J#OFӁ+ t8t^t]KOW4GVk-砠yYc@ĻYm&Z KS 9~F 4(H4iM-CԂn- T"4-Ottbʧ`{  %H;@%yG E pP'8H=}58L?J@ (348Ji1 HRO:h)$YC,2!*E *=jMPKm:a^qh&@@G$>0L֍@H 48ȩ(hGhdh[L2 z82Mz*i t SF\hO_9 aP/# 2 GzVTy2]YwھW+3|'2{ &Ldyk^66-xN\M񯉵SZ Iv[/EK _,#Pob)ħGNoP/)[ol-^l7oozWЯ C6 QStdfdK6L^w{Anr :^J)^BvVo:bj()(.,Cܸc^* в{+hoN!+dN18n ۲=p7û">4Z]SƘ?Ao GR4xUS LZ/FplVt-27ȫ3 %='Zn@t$=D^b S?:t OXw*Dt÷CC!SFlu+E86ghthyOz,NsYz&?5g;>hn`a?ƻ08 -S |S?[n0+őǔB4SL/:[ ދ&*kIGt5O$pHߛ+8-5PWͶ+X3p[?g%'>sţz tKLOզ1kwm>*"Q>@?#2e 78Y*D&:Jw;5:6Un\Wy|ggedK.1Pd3Cm=`gkH=F`Ae/?_?@z^6 |nOʄIwC;5~5hE@xP)t M&^|#vyc>Η`pא5gʃoB+lw FmhOy RLyݰ'#k"`53c|bٔsu7`ߧ]4G AwWmP <_O>KTpK@.t;A<.o:sVt?kt!P@\ r]7(:Y ͤ즾 @S׈5i_::qW,) Q'r 0p׊8 Pld+@u,w< J*]h4,mk!(] O 8EAk fA-uڎ~Mg3߁|\!*ςĢ\|@ S,k4 #J\.7YX T24 #32XBAmBz5 u$ <ZzHMibpOӅ;Jh Zϥ\QE[MH V–'6 [)#ag>p ~&|ҧyE| z'3[m6k(CUG*;x@:9t@wkg hX Y{ny nu c$Fp B9 8C Ԓ#`_^_X,i+'\KFciQS m'j=v|k}⤋ ` e3-L .J8U[[p8@]`܂m|&ꭠ`p.rTR@D1t貪ضfvvihLuw# U=͈R/^bu @d?eY ] si։Be.IL W>ṍ_{8t*VU@ Jdco6ɴ }74baD@ke*Sd&C"Ob }Ϩ*pCx/P i@7;A! t#l픃\W:DrH$$`3S.&׭jot: mEgC`nA[!X0 AET]A4N/WgJ {1} 1{{@HY'p M;B.pfґr}Z)1 * Z$h Ђ(ֱS+AD]w4/ 5ISM$:nޭ @/$"J*ur- 5ir }=䨶՞vZMzI()@EI4]6[jA^;d+.~d$jG|Ӂò- - Q32HhZr jv8Jne?@sQ{Lt5(e 0DPGnTLH]NB>R~Td e:B |KtǠ*rVXgFTH-KĆ]D 0E/F4sV9n6O\c o'[%m? LVdV,&1[dTQgK)}qv#`޼v}txcV̲~x@G Fk̈'&ADH [[WW@856q ˜o 6"## uh|QB`leP:`" l8 k^t6"7yW]<$O2Lߠ@Os{ۄ}~7Svg1w~xKw V?NE?w ^6;39gN`H8 H Aϫ5Z\v[SA;+uz{CAZI6.1:lh+1@H; .u'5$]W%[ei뤵Pb[Q,e$o 5338'+4Wa[v|D%a *9 ZnV&2h;h˭@5I2H@e:i4^=?D8 WS$s?M?@n0(A s9xx']@w Y>Re,@r/aR T0H+T.Jv d:xޑA>H p/AYfw .)r+wqxW jˈr͈ aJG\8&d}}@ pSyԪdy[n`U2Ur2DA_c}+?mT>r!&JxViKX(e>+\E|\P6' bb,A6EZb&1mc,_  jV-/_O;c9)p`ϑ#C'p#- } mOLZ4\0I0* k 8kTbx|[gFmFlzF#hL}^__#u^_NEr.0SR~$' MW2#/\K6 ⃶/Y|O,g=nH1hzσ=LW 6=əv6?n쯇DPooǯ]'C!q Z3&وeD4@x ;0j|g[:8i AcSʙ ~ x"xnAFЇe0Y/}W%xTZ S$VΑ5š1gC»ʸN_4G߃WھzͬS (F>l6o?iL?ac/P^[y<t MYZG,m6E,eCV.% u@! خ$x.bCӵtZ]A]qB = $aoBx59< <+@ = XLV>K)>`1pt-Ї]< @$7%@ޞ7xt7M.߻a~!ٿG_{w(=X_Ԟ'&{l=BHbx_];# ݁ Wn OCm.d g_g8.Ng;~) *?n 9 ;-AD ;2d=W2|X.{)8/fRKeyʅN 6'6EfC3 ,Dc2tk f @MK~Hl^f;lrZR*kVSk?Nݯ TG-ókJngı<m|n/يY%}ŧ_gSd6j. p3 ߕƣn/e|?{. @:Msa\2g̴Dy[c_R38oC$I(|ԟ=CA( O_^}gwY yp2FI7G==}6 7mVC:v? n H_W`gP$r:Kq' CFDMN+TD:j'syvxopAx#\}yy|.A~>F!O'f@OZ{ Y<ژ@glbWhGbkV!IbDR.ȺCyrA'B '>Y>I0 $'|`=[A% tmn|d5 zP)3kD$$߼bf<>T[@޷C4'Ui ˁ`p ';OPRw\ 2pvnyd*V mA|#su[ r S/9=\u.Wd>f#-!hw# -Ѕ7W)T/Zlz5c$ ewD@iWLlaNa뎆WXTxMV*{maO1eQ-INEK`~rtLQEKBd {'%;KE—wp?,9XY燝C1rw9A}S͂ǜ{)yG9xh~켝m[vC!^w5z_[d7f+`^zL/ԯIۀĎz" 7ї=OO׉vW®4qre4ڳ8\ C' 'Y{,q)XA7{ (uRo*EVKhu(ųJXv׈g> ?شlb@hh%h_OH́@0Ul:`l;m&r3m PhXc xq In9oI&h ZV:'\A#@#YM *3|b6MxP?'A 7IݮKujM0J.(S3:A ANz, B|_oY[A'ε^Wݖ|jlγ dno .ݪ\|eMkt$q ؾ޿^wQ7ǒdr' TkrO"?s?H ?(`1ͳmAȳ' rp7 R̿~>ix6  n4h{ iw2H?3]\t`ݸVIF-._Yz<#`f/{Nl*r$'d#C$&f!6;1H'^i[*&̲۷et-\R= Cg&`V4ʶ΁7Ϊ6$$aQ|jwE+x>S{}nyA'A.p>σ`*{ H =<~^,wElЏyeֹ {u1@ A,h4J>I?9() 2H3o ̀=h>1쥈Q@(YL"={)&$bNEb5 L9Q"4("r e8@?H"(1 ޫ1͡ M)H+J9àyP)OP 2ЋUp㩫$tҁtpTv>to(AAF d8cAN׍FoCp'ndkr߂PRo wrxP43rYG/ljgaֈҌ6e:~; X+X}^< pd _lOv_pAnIh}i+]loXx; 1pO} C}"'v0&m8'XiF-/nݕ+a]`B/e-< qX} ˿.ݜ~i]nqatB`?_+Laof-M"-l [% ?ԗPʿ?oL N?}/m 0!2 @g^ToxhTSˀ[vNEढ़sFmauqSc6kN t}o4I7 FK Hf,g1eFDO@ K/fCso:D/i&@VA_5s}Ê?A/|>dAb{o_AHӛA+#WF| @y !n@;Z~.zR\ b)Z (T9SA!R9Tb0e:SXRAQA`?e R^2( dVh.80+0Џ(4'@ 8Ap Q [H8HE,% (NGi3qhRs$1 SB G_"S@"҉B[_k,F*A3+\Vr\>˷yZ5'5jek 4p~V@<*dq>kJiWx ==G}KWZ Ga\eLH8wipG.@`8n3BMN>G+ /:߹INC7Z*v~6v ϩ~t F?NfI^(Fӣ.6YozÉ-hlNc&"?\gT3jߊ9j5l#<c6( NAwP}pӥQy/GW35M}K:}j`Am z/h/ }WQ+,Y^  tyt* HɅ)h>P,yh:>Y}ӡ~&`g: t!{L T;h!Q 4%KAf X/gu +`.!X«;g #1EW-}:YVN cCJ$r@W뽺׵=eD 3*:d'%c%#AǞK-# OK)O@Gh>Hx J |*b k*(6|ʥrc4RjN8(] \/,(#8HD8x $8L ҚjZZ=PG"PD@ ZN"@-hН 3&^2)ςg8H -q灶3PHh9v>awv_}\w޵@&Pj{&ǔ{|#S>Bp#m4l1^CJߏ>GWL;t3Mѵ>gxkt3T_na1ޘ>PzѢBqb 7f}_ӽ'3Oлo{-BWpHm53k5@|@k0РDd%殂p UgTF C$|kaAŤUɜPB9l<͇[>96@#^Mv L[jL ?cXWUK kW҂ r4mG^:0jp6?bŶOXak`*kz1C 0/@so LƓL[c&( I0S?՟ yVr3Nn>O y 4_?75<' ;\0v[!z $?AWPU.gy{pf7FYfnA0t3hg.j T#@4IہFT6t whړ a)fHřHAVGWUhko̕B zElX@ bE+"(t;NH/9c}rνw>4d͹oHlA `\Yc bf)HcSOSJ I)@ PFHe0(sUF)9@~R9& r@9N.D19@MS1HА4\i>$QJPR 0|!B`U R xB AhIi"-%ЃT>A1qMx'ok@ #4ovyFC}HVyi wl ~dc'Wqgp1s]xIENdYDRK o[t!> )aL"-`}5 ˯*8;]b{A6re(,T~ifYc!Vь} }U=E/KM-Cc^/zA?3t0Vy{tN?x=0!x'M\*Q_m d=z#&hGk8&Ǣ'dB"z]3sko߿>2l9rThD?wSK"[@oʷA}љFϔɭ9 ro^Uius \ t w}JN` PcwAV=O?eH2o@YTwz}@/1 G(-@юl` Gl\=q%(s2}8Jͤ< &.׷,S@nB2 l+N!d e)@.Y"GŠyTQ QqtA;`/qb=["@_9VJR@Ҍڍ8H]h % ZWwW@xk9 AvuǦ`04gA3Am:GYt3,4&ŁM-Tx{|B8co9斊8::)%dVYh!{GYkxiYǺ&h74?-S[8+ a交RB-[ ۾ړi 9xvUyFKA:~$bV[Y1w6 SeInu: ກ#/ko)CY1Iqg)S#pԸ޹_A +`wxJa7_0&*hԟ0}J QJ{t1 oY;byf΋ ipmlϛOw];_9ZWM+\OWX-КؒRC _6z(;qwyթ.mlrjr%HmSѐ, 7nWԆYVU 2t+PfZ zD7k9zmG!MS5 [-a=h -?ARS djdfEs)yXsh 6hO.pc%3m%jSF>H )%Őpl"~hIByR@;Q\`:XI%Š["JU@!҅ЍTB0*׀b IlPD @mb5l'J-)2 H z  z#r&7R"Qi 2]:M@7iD'У  AFٛ\_zp`X w{I1pdL,~h+ {஧N{^\{gW}~ho8Qx^s g}H?'5/2b&3Q8`PG.oԳB߬y\zc;:ט_e Wg>&/8-, b O;+DaتCv_,R#M3\=j?EGhN n(I8z \KjѰ5cN`j_ t{żv˂rv ^>(tN[v @e<Д8rԣЂ hKH }In%`3l%RQTTek`reJxb Jb=G;Ό"F bE>L]H ?ִP =!rO("^xrhJ*5Azyr.ȯV%74 p3|?_M> l98Hi\91lɃ2Il6Fw@,t lĽ߱<h{ɿ_aly ~R*}<@7)4\JG CY0 .TYM>똣%@c~*1Hqg3$J~"J/N}z/xXTSMuOhKv LJZu,]X ¥1prNlfmg5%mO]mq[z& y\ =V)@߰lmi t5OFf%-69T#@)؄t-F؊XmJKhh!BN?;>:+P' *)U2yu8*g^fVIc:\;r?$U~&v3m,QlrbC4iwC;)3HHL NL 8H (Djj .fi@%h;.!4`"妳f4wÆ`{AۡhV4 03}@.R`&+t2(ӏq`3 t*th1mbޢD@,@FkMd?P8 #@6 'Љs(ЏH m:/D(DhZP 8NrXKmJ4PA A c+PcQG' 1@EH !8ĒB%uw9_3kJ)|ׅF{P~.8hkⰂ_-0st~c,>#O{W~uj…\黠Kx@Ky7sp>!Cil E^ z/$Ke,æ (Jp(#f\w$ 9D6d~Db3y$bc~!x qDk@@mRHI ez5M BjRZpP|R'M4&].ZV~e@^@2r\rX%bLAJ% U( R%Aj\Amh@! ag"񽿼``\3s@nVjj1;An,x)wb;R_fitYa6>XuŶ_Cfi4VMW&<5N:5ΜR7كqopcQlʬOAƦ5e$RŇO^Hd:wayKV =b^&D}LrFK[c6ԃUOP~Fc[9b+_@Tɱ ~3 >2 T1;p_,3S-['Yt @IF4)Yˮ3)? mUpkv1)|Wzs 7V],kw9yz4ipua^L!;'IyCɅ~uF*Ջg~wG6_c~OP?סQ`2Aet83.Ś ƂTSy'g qP \=h;;73p'm&d@U>JBIDATj9 k_ R~ʟzGtBY3w7骇4zу PS:DRڃ 9SF{myo)rߵɾ _0d8o KbG>yB)ԡ)k@K$1E= ${N6VHRMm'QHcAҨCMQ ԣLӐ@1^#Vx82!b,Z>';w Rhr~$|"2@ti?Ӭn s;]o?C#b廁qrJGrjf:cO5_іZ+|f.xVV(0 9%V$Kr`L_ z~?q}c2ow.wqҠ#5`[- @5)e)I_^񆮇#Z?(E( ಿl-#˾3)YNmrXp87wnD?_Kjd0+5)~@1y5[03}U6z?wNj{?9sc1usmc~l4֢@gp?-huQ<AHz(rP@ԧ>З4:8뷕LD`l@P7XnR ~i `^w9k s,1d, 8\XI*JrhC@ s혌q P{t3MlvA`y8N#`u/G#$B8M XbdIE= $ Ԡ5OMlf I]P_y4;Ә4Dx@s9*Oh.q@-,[|Z$*#S+H"$ݩ%s(F~M$a 4LΤ\HO!00_*eAɖ mPF)?C >Bpf%<0~{עwg] 9+X7X~d+1y?أW[>#اbǦؤ%͆2}2,:cYsDPuU$ eV=UbZ2Ykȥi & :se'׿yFEg]["jbå=LX:a."~lYɾop;a1Ǎ_:!sSe.${a"aJjb0%>HGx̬isyayqu#-vv?˞2 #jnG]VT}7;,[מɵ _pjD5Pm'^]T#Cw0|AưhD,|ւI,]UzF]hUCޔKnE ѥs)R܉;'g婋 4WZ+)FPocg6J]߭_T}\r/>ztf?p XY @ZSABa/G_[@|C}Ig@]OH|47;qULht3=I-Rְ7^ozvFA;(DRu)he#'u4āQ K9N2kny?ʬȽ 8z=K[c &XT*gm<9rCA ^D+j)"'ɡ7ٗ\*ʀDBsz:S$q4#H&EԦp u|"-@mc^RRskr64ޔ4iIs&hEhû6Iu}G['6&>A$|G I@W7)t҃L/} ʉHa2 \" P" g&i/+$W$ > "C!e !rD=1 c'&7gljֶ10c&_]pg;x@q&"`ZcSSfüw2p>K\V]g<m9 a\A?[it  wή'Aj1:}';#6sl= +V1zrj ĪR<$ a؄UpMTn9ᖣ1ԛlI0Eutq{ZsF-fܗ^5l(?:&. |89}9t0 "r2Y_rm~2ek!yB2FKK:l}PsV@+||۠}=Sэ QCz^ yzc #GR_}ʬi沾F+,5Sn4i]@^2cMp4c3']qs5~n<=nz5 lEp>Rt nYx/6чV6xwob|ץnظ=nf8[S8#m7=r_d*p:B+׉5<&w;F`! 7~M V49I' x\A>Zɓ$H T/W3jNiQ%Ju Q2F %In>\ki/2X ڃ@k+clBstr(Bw"kL t@+$Rj F. \EcM3H洒VҖϴS=i rhctҕRDN<И):H*HI)'0Zd0M(|H@0>ȥlЏ J? d"(Ȅ'h"'˩ -&XҀ- c"@h& @ny-YRd=3$;y "C0q\ ,>H!AS7|ZY@Gd @& /aS(wd^wMV_yLiqtr-`1uᭇ+6ֻ }?0 &qdW <AH[N\c9AMNFi‹7y`zOUcberXYQ/~u?0aѫ!.Ľ44xC^+ݚ̡b\gq.oN)~ZrT />Yާt)]M֚vPr!~s u қC~vNJh+! ǁb֐I_$ 4KGPb~UOps E7O=sE͛_@ƇF[\uCiK:h9&Z|c:Сb79n-'BN|yPC}|saX#% Bo,<{n(R\'n}!(!zLwُNR=nm8࿂~'_#:`J(R⍯Lʶz1ՀNXPuKԼycsqSK%N6$5VN BlG-|Hhm_ڢ#d=uM@|y\:MV%WHu A d~snoy9*譠,yUrMS(Ʌ 3u7g3]GJT!ɤ0G+@d4-v-Йt2B7tg#R HBM!K`$JG3&i.#!x|ɉ r@=.Ό,J%@j2 #xKv'(zNQ`I `\(MAƛK_IGfQ)烌'@`Bޡ5OPť@ T#@Sx|"yd'ao)$/ Ab "+!k`vnK|oqv:!Tf[>@s@.@>\ ;&6QemGMyʳ2&8SO> N>+[VXU[cg3 9Kmۡ箺n:+6CyqYO&ܧF.[1l6{yZsR:̿rk-0*>> d#''^K]R T{C^]9U^ˬk?a4l/>ksg?L?>p|2D(_c=*ieh] >j2eve j*e] %U}EVO۾[vdY^ ͱ1:f76@S5pн4N_%HK-N5vW:#ݳFVW1k$C]ʊ`Wwb#v5\W,j(Z>y0a5% '=8z4h҃43hKSK H}^.r3d,j.a+Г  X.j xr!QX)@jetL r%~K2ۨ$`@Дk@2 WAPND{i 2badνH,]6:jSbtB3AAzs,HcFf5x+/ouzyK͝ -4Ɯ x-I"5€؝/#f00c#r>v4 :/n<貫r7m<X8Dmd>bmZ:%L|B$FZ҉!* @l͠DGǼ &1@⿀_co v,6Nw7h>eFi`xލq luTɍrOY>udGbG y^]|w LSry1sz1}Tӡto]`42RY &?Ԛ4.B=dIIfDp*\{Ƚc??ݗuGuPlIWaJ9F2JG-Nh_;Fm@KNêə0>Z$;3tg#b%N$5)"T_f1E[O9}FDvՄ][q}Zmd@ItX a- @VC GkY)bTDֻUn~]y K6{ڙC)k:h")v|NFj8f9- ԥ=큖peY$/!~@gHc]pd瑢P(b$ @A08 ˉ&9DA )(d~/O{IiBy[B" ,Z@* 84<UIH79.s+ȅҐS$cAD.9<GL0.gH y  K1İJ<, I,$Ej<%MJLA*{ 5e 4Z~m gM6sYfl =HC>w$?$^#A`y m> DuROP2/r'{|*N.k_>'?Eb`1HK$ aW(}b9\DŤEK:ݼZ_C$}qc+-^ ~cse {ɀO:ȝi.4UhB^6(&4S&=Aɻ2x6oӹO.> )\ ua!9lt.79Q/J>bQ_+w6 rGX{tԳ\věp}#3MuU Ϭ|F9g$Pì!kzh8 !qH3z ;J5_}[趸`FOHt3Y?7^I0.)h?9?nP>vR_GQFoE#JXF Z#5i{TibUcRm|5RMt% |Y P:^Cj`s?:]~濉@\/իeI0vC}@6n23/m&waU.Li~:Č;T:-h[B[$n 4!*pK1lz+ 빐r. t-AΗi I A S@zK$"22Ν֣_D s×B6gKDtC$MvSP-ivd2(jOPZ4'AQWAC0d F AfF&@vʭ@k>`'d9r1(ۂ /rL_H'@ޠ\ &Ii,gܑˤ  =A2 ^gT܋ Ry xc&L Kh:XiW ]y#(Ώ+*; ͽ zBV{N–ȹ̂P|W Wy)2[c @؄ B _s5@^L&@pJd@E(06kh LD=??|bPwmܝ3j%3Y;5 (+Hԝ7}/@'Zzj@ب@lK6pm'''Fd C$xO4nPg}5g@ 4 f6l=]bҺZ 9ۣѶ'BEbd,2 KR`j(y=; L@)dHȗ:dN 3@LAٍ k@CCPÿS\%.K@&Bܰw,9M{G:d~| z${7'*<<$쓦"̓"O*̓g /#A014r/=bƁ|3ȦȇA9vz* ~S呭͏SWù @2=2OCnE,|ʺ1&uWN7sUѧϧY(xo^hp!}w{hqN9Mi2`4p-t"̀:2vl&ة{je pVGr-z:i腇Vȥx*F[[$^U{S/^b[%8[߭j8ɯ_<1nQ_n;xl'ejexltxx='MS[Ym \ 6MMPH8Ixt⥫nſ|X5_jLқ@6W_9/jzqV `?e2w侾X.}@pI[ЕjEIrN@}_ F-=<7))̲RyN̘ks NBơ}wt^m?O!*SICW.Ѱ_m@|YRm%4b[ JgXc.N:ӀԲN:~Š6L_2-h2Ǵ+hKMA;0QC: ,=+d҇Z *I ҙ2 <9 ä 9u 9qmGƈC!X r l"5,Bh 2y~K^Kaz~ P.c;=2Pd>Bw9 hș4,i'?K,ȣvIy<̐X\Jc_ H !h2% d7F3?w$A!H+v"FV;EFsQ|u$|4+/l]٣E!c; l\yP)n L?B]DEF~D9KBdXdl?KS!x h| ҙA1#zdc.2z2.D {"CeAG6i #9x 12nk)Rl\\ӓ@!׺sF[LrUnQ{6Xa_XxF'Nx; I8O-joNmS6""d.WC;:\ M61@ mdZ6= đ@ݮ[yA{dAᰤS `q/IXfNWOHSNB_߱v]vLFb>0Gbsﳜ}c}#S=5eڊZ1VV*F@8ajh-ڍ:DM7|P-W9 u 8/r4ĥ58@?l(͌N q*+åq=y7j2QR&.Kr$|Yq&tA9nByWtͺe|Bp $AM) >4}M0% ȎȆHޒ& {y I#AHKy4"W 5hD G " Ȉ\aL$CP>I;xZ$r@%r @(x 4r:.o Ħ7с<\X!zW>`/ziCʼn[V56ǭ;ں^uKR)˯zW9?ɧX'tnW`jʜ|Yp'o_l4]P@G"$h<Ǻ+p4tiMmE:|/ fV2lwR@ݦR@O5sKu!?jkT7bP}tNÆgY{>fU,9 \-JN&fg#Q_Uf-߹HpE[7sNj9õz:8>fsX} %H:ˠy6tȊ#VɾPUn*Xʿ?gCyTUw4/ Y]^a!r-=focYeE=昭۴yZôסq׆-]r5K[F4f-tDK * `/"@ ̩tY']ɳ r4diYr %ü_fŊ j# < 35n\/"@У W_I)h&kCUIF)]x!*PSΗb:ɡҒ HSaUvcI ?Q/wݘ /OԷ5) |*u|^c`CW~ [d,5h,!IA5ʅL|")gAJNJvK9'/K q!X4H%_A"HvC#)d@6 |Aa72 A,]A"vd@HHwYC!LaʄX/M7c~ H,kC5 *|Gΰ>4Rno1H3(v*GVuٮ:`/kuG%ǀt КG+4?6c7?xD 1)qqZB Ϊukϡɒu@Ջ7,BWhRf`hǁ穐||̯KMKSUyƎ:7̴z Cnԯ1^5~T*G-av=.eB3I[z,Mw?ngc~ۗm2@V)^ǛG]dOﲷ 9E5c7c6n@hU=q@+I_h^ :FAΦ3A`' IK顳9Y\Kf ?o$Vg9\s?MNk!l Κ&f:A\ʦ} fSK>l4\&br}R_jmڋdCu e ;_ )H+X3j糛՝wl 9V9Aom &2+ŋ34[?Ȼm"G"7 X,R(} z@P?X(߁<,'.Z IbpD ï AHO֓ r|l退dxi i IbOr) ǃd ` J ځd X,@5A SA;+G. $bwP so̫4|g0f׈{{\URua5C}@Gu|Vz=xv|ČeFU)@8- &KcS>DAX N!G׋ z.` &n-˵r "ttL e -8i N.ȢHQpBFꮩZA`M e?c.ˈh'9r(S5MW yVΰF最OWGVO<31>T &\OL u5=.jID]hOLqM+AϺ í4vr :DFKiJ:!]҃@zr\ J\ _? ˹h`ԓS?fHh9Q9􋴽 A i| 4Z<\m6}osQ4V9W2^ ]f}j:ɸ:T3GGdZ8P1T{{gl/{pd4R ZmpsR?vu/qC!cNp ̩mVA?x;NUbH5ݖ 8t.ѣ;5VS@5[@k1R5ki/Olʀp2p >'<&Q 2FN>VZC@Av~}t~)' "AGX0  ~lX[b|2d;p HHgk"}?f/68`1X|e}A/GΝ](!, >51EΈ\ T yAmʀR̡,H~pn v9rҘr,( ǂ=Ae1-A!E@^ @P.#G< 3X,%A`4'R2$ $K^QځT.I)$[3K|I! T>:ĠG0d<Yak8&gOu2RIdH't4/0+J+yÖd}v 0{-לNwtfyn󅶄甽_'0@ۅt;;d%$ڝ`}6…$>hphcRD:ҚOA!|rD+Y4L9Q,&҆~!A}C3ڞ}XGUdZڧ^JcCw̴*$9P} ~9 6 ef$Dl5˝r4 {#4~:p#ZF]Xu:t%tfWuwU[j她,fԸ o]`ǎ7蝹ݵRiFBLeEb-z϶fUkH\N;l?lHkBPhKɠQz@MY$i 7ȕr3qr2EW_i'ip\ FyOp~i`tpOԅ]f?jMB 9pfn! |$f83YfLQz ;nS[ηrk'm^f",ٴM(uD쐻*qI˽< 4s2FtnA(0zGxT>-K|'8FTbvM~Np9GzCel?g@r'.Ձ㈻ ?%͠G-uQq|T@-$N/UΪY Ur=Pa5e}-4 NG 2,yx0³eA;ugR0m2N% 8[m6(!8&}!8Y ]PNb̄7i>N=pFNXbZY=Ro\VѽvGykLl65sÎ5r<8q-[NB@2*oW%CgI=|:ӮG4buUh_!xSj[S+'dUhh~X @`0=M 4M_#\ cG9 8Y8'>t@%#] y2[x)@$Gv7d)X4Ulcٍ̣!!TL r+jyVI @}-v=8#Fr@Q&ŸدIuqջ89[֝v#w636f[Y XE~ȄRb+&žuiſsHY^,x g}ӯ"L&R Kkb'~D78z[e=NZGCuHu@[tXa<r.e=pepr*4Zp5hpb0Sڼ %vp r@R)8z9"9 ed]ֱK~dV+@FDKQ .Wb B| x K=BA@^A2QJ:ݬc J@OyVRa#<t|eW|׸Hlj_moǻ]y˹nHst CcX]o'E>F28/٬`uc<#hEY:F~<_ MQ$XpqŠh O̠x\F@. qPnT)4i+9H#h B Ц@,Hh(H"wFI ȣ֍ڏS #lwg.V; xŴf],Ӏ7OVw"Vl$)A1HTaxuI~Yt__Эfç/p#nhed>f菰ъk6G&/9U-O[_N\>_{t^,цПw_nVT9L.@tICBVy H&h,iRr*HTHʃ r9"vs4>)S>PggVvbLkt-p+yцbV>5~dr<82ڭ-k;ۿefHg5߁20|8){`@q$B& ` %5p[IU.@+QwCp_ܿ*W 61&1+$ 3R,"#\cYzS[s27~/gRt2wh&C0;t(05k {TN"Ir5cAr'p{Lxi %$N R+ƭ s3"3@Fm 2@ǁKښŴ@V2&9|uo?o}l&Hg]n6ȇ3 ȝ ?%7'9dH| %k ɑYH`lG9h%!+' wFE e#H:_y/@ Lt }p8@6GAZ]~&|;XSB{ed1@ h=@Er*ߑZIcAB@ @ +e2PwRrO.\p6O, ".7SB4N)o<*&3!~wr-u#M~Z;u_me㖳]G>, oNXԆ*OM?NVYait?Morz*c ԪL^>>>Sz8"ג$CZ]Rt \ Sqtȕ ~ 'Al خUmLu$_ql]٭F:q"6nCg:95vJqʦjOG]N"!&27keunƟ9/ƕVȖf4+?n.t?@@'U2 \ײtQIkOt)큆b*)tH{B:m 8ˁD!'A*9KzBrXG+H Ҩ -! fɕ'VvNb,;B7DZ`[ E0u&`MCt`GS}Ә~tVys\xzQ$D&1s}uws* ?5c*5'/XA6Ue'!7k6K>`NzW;I`]jQ*Nlhޢ;\t e4hgjO[A^e.:f)DMl_t7/#ؠY2P #0o/o@>·oAm<p׀=d 0_ ̾{;s\`p5d|s'^i\~!AGTB0@ `-dr9Bwl= Y -~`d8Hu+Yn\9G% *_>0^:[5`)Lͦ/AOb% XF3l@`l:H^;]M PULae ˟R 봽r:gf;2@g5ZN ΀ogr\~;wϓXpTK 'EHo$5,1Ä բGOWzͼ% W}ʻaO8Yy3 FgC\Nr0!wĽ/G""!ZKG_Tw@ϴ Ew~mڠ{k'F{!L{ 7!>:(Fݥj^!:,\IG7ݩ+D{s[6v<N;zGr @v0yٱ[L 4ZXÞ,j9!J VG{~} !ثQ1YH,3>f^ d}6r;̼bjM/~89мR`} :[!oh/R @C?:H/ ACW ]t5W@3z iBm#G Bu@~|G8 $Mtv.b~m4nYz@c,*X8-jjyp#h2heFs ^NlTIs=6wg(8 1(l pOt@m GԺ]?pAyWSN;Loy_e8[vvgcj "-X"qg[ro'Z LrЌ:b9G@[z)A KWm8򢗠޻re6@P<oI0浃wJZn/h$|z%J `DNS#Ӂ:/0@N`G]WN788Hc&%^fRеtd5F_ dm}<z@oӋbza1 ,jq Y &S˙׀vςAjKS *iBR@vRN.LPu;O6!E (ρVi}mA2>y/@g7~T#ɾ6g -b6ȭHMxY!" 8rS#כv7_ն[ֹ>?ݽS}],VNG5NgODG wp=$•>xh? R??vuptsaS}L.#!hc3 7!ѵ0:Ht )Q0~?ΩfJN I֯TgMP]#45ojrN Nw2 p"\#fa[]W3p[,4^>whp9SiR¾XnhG/F ),:lgz<4]@V l Gǁ(^ [m}xЕX'Pi[hԣCA_ghA^YZ 'R&t hF'd :!C)=O z ]0UV۾g+@B{E `CE (TPDPtBH%=ks}Ϲw>ϙbY-s9:+=בnc~ْ%7w弣O&mֹ2v}@a<pK6ﳣ:0;"X N_TQGK;U7*5j9B5OK8-p;Ͽ_ 0o1ؙlw@j/@}GuY=l9n՛^԰d…sAւ7Ajvp sr;Z!s@R[o}H,׺N@-*AImMoNazxޛOg>%?lӱ0_voZӴ/9v[o~:w7[E7.~} \% d#R|%|@FKpC"q~L/[{ ;X _%} /IiFlf'A㢜},~qu߂<.XAZt4d ҃ {M.xJVTN&;X}@6sV0R QړGat9@!Ҥ=HܣO6\X r hZH*LLh A twEڢcbBE'mWǜ}fǏ@n:0%^XRR@Ѿ2.Cg-%g7|G3(\r};J@';H%:EpF;p2+oO+yL{(?^pإ0DTw7MDvG7,PTȒYUcAJ`cd@ىǴ9o!4!K^uU":^ZoTXo.t2[zVp S-%iP9ANjUٹݰ: DzKَRȓR\-d]i)AonXt2 34٣Y@o~fڜ۠ˠMΔ?ZЈNmg-m.XI}wi e5HSIQHу6y < tXަ/ 2S?c@-@M~ΠD, հ |FTpﹴWS;d W{GL.%f'9#UA9`y7hRj,#lcqw (t*/2J$Y&T[ʹf(Fp|Zݸ߿i@!i'Ho(1Gi [2VJrF7p_{P` =~}vܱ+:rO0uiȁۥψd[]8I#`;\' Jv0/zGjR+o:[nf"``̤6{l?b7|+X &y\G Ӭԋ~x: 47, MMbQ_&] ]zhgAOTK\|uv]vu|Zy2pK:לSˡk,V4lkg>0]o[$򦰿2795gk+$`@ř#@:1/* AfZN>iiC x髡4x0 @.]Uc4SIs4tv{@ei*؊%^M)iN1?Tj⻐e0@ZN pۍ|gш$>SKOϱ~-;_ N%rr4࿝VIzg*4&j}QE}_i@ kCif1.t-)|(u8*`>NFu:CX5vkƆˠ4Q|`i T RmU5VІm# |M2'@C<{iԢ)}(' *"yV+2ˑ|S@gJ=0K2$UkY@J6% M {~DWZ>5{j7D+*-zP^Է@uwlb'gaС$hMXd4 #tNhI(HjEEI;^uc?@CPg|' EA%Vn e^Pr7wK(?,Rr5z¾Џׁ ЊO˼sN\fzU@w]&? ݭp' ;`1ίZ(byH]6n9;BlX8o{BO9?]r/bh v? :͝a;S`CwY,m Xq#7\S=1*_A[W)H+o WӾ֯Ajh ^KpZaި^oFBnʹi)67!iBT~px ~~\a6PRgzAK E7wlbl+ ,S{~ m;쀱*"/0P"|h,nL 86:zݹ^6H\R,eH͐er*)e&LSS RCU c S3[5Yyo-5B C=@KPMՒh}՝EtZW4该&Z^GbFM 8ae.Ό0z;oX=D`LBejcQvW}"sXu|a (M#s3 p ^ʞ ~,t HO 4 O/BF!ۉ(wc}q (ofsޮ3}͆?4CA}-WAіZV. 2W@jQB@[,ОZ0H= }^G 2j2c7Eކ%E~R|={[HHW tGq RrHl|@~{}@~gd &92N ]@=yPfz .G}l_AOi AOv<ʃb4E@d.'h~I0) K:Q2Aބ_x`{AxT^^fyPDOW8SI]DPЏ@_~#o / ܅RrwE_v}k@wGt<YہW)oatW}NfLN~}GMDiIg5he?^v -ܼozL2IP|~GByqS+/T\4\jLsgU1HO'A-xe R: {fCٯHkH|n~g/" j9C wMq8*$tH~dO[(dG4$_WBރ> 0O}`~5LqwWx*=u~ z- `Nb]7b-ܛ R$> cS$΃[ݒ;apgjZ sfJzJ-@wUJ|,/Pn)A2(m Lw^ϘɠY`^ ո9POoA=sS?~0@i tC7oBѸ,g+N=M+TFf;:Yl(^9!kIKҋ `ÝJgB9k#-E+H/"yx,[rd@Y.B9 l=bw//)w\/y%M# A5٠=4Xq=*Sr d>t0-Kܢ#7TѪz e'$,5tף r j-?jGhAuuWBEckVgUAOC`h9Z k%p͠ 0 K& v랸5Su>xuAAFdu.ds(wu{c?<>;(ʼB gІ Ժ֋~39y,0y2Pk5znI@v@=c⨞~_K4%%\ǭHxxJcDUR $M^'0CyܢPܜ >R 2$$V6p?Ƙ0U^ofLO0(%T@ sQL_Em;nlf?_zPZ,V ޻*1bo{;5KqWNر[",dŎ߃y^Ofi`kFTh]M9FMR dܕUЕi9xK(z|O#hHwix(ܵh~ګ@&3@"u(ykA70~C"HW/5ubMZ85 Xf uՀ$YskZ[6sDWDWSA^!t;'8rYhD,TQ;bGJk,=+NՖT >:,mzZ+ikmжvs&I k,y2@R@&%A v^t"WmdH X~+ n~@?Sp^Lɱ>=tPgNd~.3v59d,oke7=!d x,k`.;:xO, IsXZ J `>\n"iiZpUH"DJKi  % $#r"6@qErg%y4pF3tl1,js`y=EfA!=_^%_JSQ$Z~Y( ESSl쬮g`SM> ?a_fZ fV̹eC~p]SU tș t[Jaѳ~}eo@5eXiy$s$?@ѐnjh٣!`o^RW@_fg&vzYH8e$0@@A>Td ]Α@(*/s ގA R}!7Mh9}ρou:VXkeu3IWM0_<cS^'ѭZ.h9Ḧ́?U]g4^h_snP:k ~"=+vsֻHL+h9]&b-FW6e,ŁdHxh\Z@q6 tyWH@alb%@E(Z33r›ls=Z!5\nxg~`PjPcc۳M,a-}#u2Ӆ k-\7[ Yk79},Ɍ1+!hw['܋zh; M]|}JS[Lvz4\=4@ul2=M%R@KIC 7I0@jpɛ3SHs`΁0@ekJ|v%xpɕ쌶{ !0R(x^Ed c Am=9`ee7lSWkM@|#t8x9 ̀&oKva:wd-KY5,\0)LS}LjW؇|lqal(Y%lPu g0vF$6yt Z{؝ɡ1!}9WOpg)䴆+SV&ko.;,ns8k85Ծjå ^syN-fxuHt@U}b)IA͝o=@^RT%g2 ârCc9AEx{۳n$uoV$Lz{T &\l#?C_^7sLIU+]Pvyyf<̓,v[q,"oGq5glx.Z{0)_oN2 4\jcvNiy(D.AԑHy]ߥ0Ѝʔd!;86JY +]fw"CQ5%x_sO+10봹|y`ү*+u ê~:l-hywCkA0A˃yf_.0yA`hnN怾l7-k}JZ^o~/2H \k%І:Z[c ݣAGJڎ,f85e}Ԥ2PD?~ en>3=sཊgNclٲpO'DVL]kiV\uI Jxjw[d.z\@reSM_IDATNd仰;PCR =j%KnlG5aB^@挃И$gj2x8 R1m rE]5f=h u54- ZV hk#y$T@bTip(= zOu)0otţxra,s8&; >){VT{Nhk? lڪ_q:E qy͘r@m;L]xVbL.9??9-7YT@v|:z} `c{ x`9-%@&@r/m߀|Asˤ2T)e-A_p g,OGd u.O]s2[׾sC Q3 nSVOn~6ߚ%;XeSv.R ^X@cU- X"VFA>ZUYF #_Cq1xWHOy#n@zqjP@ K1 _:AZs")z>̗ iC͇7} 6m]@5 ];(3&hWw>ns~ `LKoĀ@,S;$6fʃFnjhaGYВ0@MU:(ͫh˓@?<t>^4 q]M*M< 8t r%E 9ţ EFsj #@ž+$A|3t+'uy̲Ld 6RJU9Ug;2ttq:kCY'- KyMwuewY7]I߂+3B-<:΢0bx`  o.4U@4v$@<iR/YoRKc7 3.w1a]pVX0׮XcsD4a@h#fƀ -h k':NCF(H%=/ euFPjγJGSf5;v3[xx37xys:'Or׳]r;A+ư!V72m:~V`3dPKbTkDQ'-pb}M )R^Δ$(/0q@3:RXow.?p x?($͊J<xT]5?/+_+W2ћ k'4=DRmASl+)N&`Ӭ1ix-eiH{mG@Fi ReVFQJ{!Gt F T^dH+}188w޺6#4 »E}5}.:+5j]9F4)1~adۅE>H.:V9 (np0il\]J`US@gqK}iU@/j_بAcZOs#th:PEOӒ &3fHMB 048CUZ h̖m穆X+A, IXbZ؊^zlGy[Sm-G?u3n6)p2e8 8BֹP ;j9͢E d,^c;TWL責eݮoADw,""_m@b}t6"( 5 Hе-/g%+{u cP.O]|t~X*\ծ )} Ȧ~ 6;@4[19FÐ{;V⬍wv++7dM2@;Sx+ιxTo7Z5h^B|?/V~CF9 />zfXȲ'*P  XVhYWHNȣ=1LX6pH{i߁DAZȏEݢF[jYFXh}y@+A2(N|@uuP^ BA$=I-n=5zmqA۹7 vãw2"o6LO$ v;?5y`B݃4j煺0O9kZV}ڈE"yP[4S}B O@st(%zP!h%3 h] !nIX ܣx( \q@0ԕwy)5@vҲ٠pT`^p3ԥ2$y_@qdx$@aoJPP6- e/uq]x++)0t{W[Oycsyˍ:0ȃs_(_~6^7!6O(x<<ֽo;Fǃ: [:)V8 zQF") 5 tMrd=RWgXr`?;5t>Z[k e5x|m eMuH@qSCr?,m5!{rrɾPtNǏg ;f{z//޿@w~P$q <Ke?Z 9.$a lG_n;y 0NWPzh wV0`E-9=5J)MpA+q8DINQJy/#Enș7 0_̋2@Z=0N.q# ) %GCW*y}|qeZT#McPgL W˗ATpY]_0-đ+>i Ŭ-NЋO\._9Oln/.|kb8r"%4|7||֛a w}NY׺aFWLnH }lzնYrn9H p? Y,]]0ͯz T3@ZjYȧ /kq,]5hOQ 4h<+uYK]Q~&qS7[ p"G,ͦRޔX+щ@JP8kr'rcOMz Kx#!FyaEa#`bFΜupmD~WL"_7i/JF,3<t\ҁ5CMhZQih]m 8@*=R9%@A> X"Z 0{y !I QE/[)a CZ-{d$P4dh}86 Bj^ڷ9v<$Z2k}o\:kV-s@3%y-`߈P>e3`#{KK&Ou[|<ߗ61ރZg)nw} 4}jp-4 []y`%2TU8*x+V]ЧY5TְT*搀iVm=t[5eڏ] k~,&Ƭ,Rr 3dhf)@c1୦$L5TqEB\[eJY@y@gYR֐|-xܻ_Ϫؚ)q 0َݔe_ $]_XWI=z,5ݫ2t62E%ASe7P }]оc,!tX g9&d<4"R@}) ԤeAHk< :'=KPHP45 #)Ѐm ydo*w\uvO^٦I+AyKj#ci=yu3]xAy{+MmEvf.G\:0'C3aŜizM_bЧj«?+xͭJ@k $r@!]o1E LQTHi 2Fb!@>].\q *R40R  ' `~o~,֙@fŋ%P_aB_o[8Z1`KeXۿXX}Wy}3>L_':̢VKB;:B`ϗ+`nHO ?:y]2agǽ 7vy[ 0qULM;}WLXj@ i/- ZGPA Jm:ٜ+p!@,E sUBMj%e]u^הW^6gAO7:c 纈 uP>Zvޛ_|!.N[j4ѿ?x qh)yB. vh` .cÂ!}9U†Iyh/`SvQ;ZM,殇фww |V!}?{rޏ:٫|dM1_VXf9mљЙZȮjxo}=c/A&+ aZT4H"HCyIj#*4T9ŀGe:5A ?H=HI>"h_(~Xgb, @]-tU)i:YY蟠] f<`kg(MAk]Q-Aj2tm:t5 kxt>-AOP|'(Rl&ItJ!@u dƀ.wu/ȯ$y (iB 0< 2 $$ 28Җ06CfG:d¼;^;7Y9Xw ybeu*',Xӕ PZFGRͩT?Xv=@?O#}G3wVh<;gdt0fKz7v; ֟=h x :^ /gm ^ ȋΑ@9$W8V,v֛'J^ =Xui'|E`={ (;XL2VXY@Bo8oh3}8" &@=Or$HN,}E)&R \m,UMCa E uWր&끞gHc91!}@?'+V6Hk\ NFFN[5ʴ1܄ξfɐ16Pd@jJ,`s쨡 WK\CB盉WѷǗE2XJY?Ǹ4D뿭oTXΓ֓\?)RgH}ީYZwk`޶<RMVvl(, `BmMn0'@H?)(h  <%-% uA'J7?E#@8M5 Z Mz Kǟ{ڬp>b!$z zt e캹Q/^ _=:FN0K5d.` N#xI^@, DBѺKChA*Aϓ- ?@ DZj$Ҝ- BiUlFd C4ZHE v򹋛?o66j]1;v#@6U.e28K!7jk< # ㊜I!a&0 ;xeYQY4azY mk|-wKFk%.-h=iX}$oQoa5N7]J7-Wt˃xRCh .Q4*"h6{$fyTqGQQRUʱdjIp03?74@{,ssю (g)s`։sD}6=P?CfyɑzM>u3,(&$\ȸՕP:&Akc0o+ V,tl$@Y>dsXߞ]j":1]olpQޜ8v;:WI7?HH#Ajf60;;c-)|+ں1Xcwt>JwuU/_I:(t j}2"@7AGI|U`+ GpNl'7 WsG0@4G) zyDQ=q:m@2G G @+ I =F5`G8Uy|o*'wOsԶv՝BkcCj =n&v# uIu3@7 (i)錀mX(VftGԫ N  ɔ>{GOd _7뿽(p:TUuU[U$zE6Dy}|7zE=DXNYKͯͮ94*Z+a_C}I9 fUh(@h/3eUZATA3i --t=IJ ҁPRmϗ< Ti&A4,aZwd Wj iGaOaTWB!ds4$9Sʟz؈ׁ  Зyׁt|*~&6=@1e/`"zH@JRAz@Epq?0Q Y)H1?:e>x'Af5+aݍVݶ92+ P.%OVs\llgdci 5Aq0| H\wnvoLޜs/ u#miKY =sYjo֭5l]'6BmoG(^k,3$ġ&ul%{`NEq,u4Lt+ـlҸiM.JpH" ptr@k,b'FY(;Ad;mƻa``l;^;2*P_]S5yۍ?n)|Ni:w~{JT, 0p,QI"hLjm91oAIgs_tǂYy' |o5X[VNP(}H~$xxݩk_/on &ͤlB0=AH$Xb@^џLו%v z`Z3TxX+A+`a!+,CUrJ:l9\beKF=}1K\hT3Lˡ8?;%E Wm&Y; ~XEIz賀ANfI,HG_Ցod=S)>4&W~9{PžDh6}c ,agcA{d&>_90g-[ԩwҞ.i0 S) RY@ӪMG\>o/xxV  #  *HT"H+πןI`7/]~|uhUO =-x@Z-H!*/Z?H&08.}d$EQq2$n&c\4iE8Z8z`!l#t''E @W!@!J1((FP]Ph{tyH$ IC-mA.\l|= O8rJd84]C|sm?kUuֱhSC81X#yE>ƪ8/{9#RVJ#a d爈ՎS8 QvCR8.D yfF2VQ65نM8ք o0H0@ 0 L F3T"AJB0H2'pQ&R $''#%)-YOI&l 7A,Rwxg!o_ւv_A,Q\؂AU4ȅe*[Tf=epr'"Sq(kb{Y\ZpiZSjczV0X+}վ@Q2]~ 8ENY$\#@9~9O=B. V]L5b| \ow6;(IrQGW* ~b/َ{Ziwm;54"(ZEP> 5m.ntWCsDY)%Zx9{6%3>y@+u- [_4] 2t)rsT~5Us.oT8yDT9_:ؿK~8 cvG%' 5. \R)>Z fO-> t~< a 7%Gܣr ݚ RDke_a6GޱSg`x{xо&1Uv̟P!>Пnb4;#;yL\\6%eZ[V0ht^g.]Wk.O`N#s|b-Rxb@&mZ>adFTA h!н4!!_nؔ> zt79 ǎ# nVlc&k|:w|.s `? qAa-yjX:/Ck6NY 0{];o6u[;y ͋S1L`m`:fiZR SmmK}cj@w Qxp׸,#HI]C}4w&@Fln&@0gՠ2n6@ \}dX;@,!, W{.@r몾K5ƪ_j[Km`aА=\U˫hc N[hT\r`sΨ 増T14c VTr$zC4x+~=߾1@6$d*#۳>f ղ ,j)?ߴNy^N}P?oA^\:~}&`JRaR^FHwVZgAI :ރ< ʻ(_'mŸ /@jɣHeթ ཨ)r^e }ڤJE=V#nlx,q˻ ߽ HM.H&b878 RO"$l;{B\$ S*iP3IiB!JxRuRz@G:d` A-2EnjR]T㌄vi RHxOHxb(;n9V 2{:k=>^. 'Yg|.ț2K,ဤ]\K.ַBF5wQk=6,7*H ̽ZVV~/F) !wQIr3ƿfe``zhgۧ*i۝j0380L,%lX59@I`H.3zTG{QKlҟ:}mR?Ž,s_ Oϰ( %<di   tN1.uvVI7mq3 t8f8n7ʩb:hZ@ҩ@1OF < $q2i:)a9, 8j ݟ<YdiC@ z<&t'' +{u+gr9'π~@Y΀>tT5}U[rUP1(gc``t:9`Ed{\8M)_Pqx`Gbu5+gOěh&v_yo!aosӇq@:@UUG.-;`: upHiky:ݲ{,V VSs&<e;d> ~'HyUHw̛Qo9h6Оש )=y8E2U7x o4,{ #+:>QPfK@c?.Ot V>uKFir^΁p(DRW8M7 Wz (.mrzLae҄Ar  LY$G#W2AK$ v U7 !Hql:O/Q,X[OS+  O:^ >㛖 K!G}dg.6N1gE6ٚ~,Mjq\˴@M7\6{M/l's@J=PiPpA6Z_H@ls9.ݼOf'٠.g@Oaf׺NWln,w@b$Oa͚na7\/hNm", @KHP6CQv"ڑ EύRAwt2ÂU8e/ 9\Q8uZt VSx-Z7pXj@ Ju0~ KK HA1!(M41@ )TE[lC>M ~@:L LlGoٳ\S~Nj`ܖH]SBFXS@"0 ek QpuCh'҅/1eXSϐ{1Xynge?k^$Zb]|[&]߃shC;ԲOo|^I(܅{U3^} 9dĪgZ!_ z>"1R).>Ю`g!Tb:U h\vCIt:ăI?yFTO{1H_91:_z--NAj t).߂Vޗ9$-A~e.ˆ N?E _MJb.+ :.xρcfrM\|΂T\N# 8؃]1k1BjQt'$k 8*KC`1 ;;"P.pC@H DyAzx x (wl+cqy7` V#Jx+Bmo7<[?8>:)`BV&_7W>p)jP;ul@aTz40Iק`FіxP?%mh#JE*r8^5^0̽v8%F8=}=lw>kc;w-/;o%d?fO]r%n 61WhBqx,FXPXE{l]sؽdha88N2)skpml)0Ym@2Kt=PXV$o@ЀhJ)Me#ҙ4EFZAסi Fœ`*@iD (]a{@ rӠG8C Ec҃Š+O2;N* py˹zlUd‰6(G/hY`m+^߽vtPM[ sul쳼cU(}}߶%~r:zJ=::uh#|3|t&|LAV‚.,ޙ?*nl/?(CH2̙w|) Z ~P3 &K;1﵌aO2zft8&DvPHOiB A3Vԋ@3y xFbȋ (Gx7 Yy<7Jo^'E`oWK>9;rc4hEs\=lUs@׃T/@o Xih6k>0C\r,$Y e ,f!~?@rXn&wDQIBɒDrJr@j*%AœV R %.$%xswa7B ; 80%K}V֕>, w}$w@z Ywze\&d0t2\GpKk%x~&v2o3;9ͥ/ L_[h b"ewZR^ א )!0yə^3gBHo19}:q#dn9rb| ?s^|̛_yM k@Ћu3xWJJ:Yy ldHYz"K;$.l6DćCއ a #|"x/bf;=uWY,;w:s{\&IRq.Koϟ/-!k4 ?w)@U`)n0X0b)P@4PFHc1S_}Uȣ σB,s$=r =x~bH.AЃܤ(pDWZ#Q*DR( e%<(P rrInsq<ݪulos#]>_g|>'9wx/:.-S@Lu:#ih MT;`hw?O{cˊbIm!@1vVĆF o:YM􍓲+ꋗ;_^(,/G`B/Vs9]{}64 &uAXF @tS̴T3O-.6794I7= ikIG)R j 4[E `f0 >ɧt|4 !-h_TӾwGX+K J\s[_߫:t GjV:v#oR06-1'Ud/qf+YK@yR9(d+{d;G'6P" m$ V ^m) RAzcå4v]!A !!Nqwwwwwwwwww!@pw==;L3-su{{i;4Җėe%-һť"&u*y{I 񐺦һlԻΉs;ؚ] kv\TcA+B(I|#E3hW]@a-OHmz>L?m ZV ){'۴u>xmW} 1(Q8'&5Wt$Hxlnêb4'މǕmޛ1%5M\[me[mIkbVl%ۺ44+?Ū:NKZ\f؇֣6o_nl nvHtm撺϶^[ڎP%'ߦU[U?VjDEI4Bbqrÿ{mW"T('~&,\gza97q'|<' qq^Vc8 Gġ?G/L04k)7ꢭ꣟ΚmUWijW Q4V*SG[8{އԉbߔHy{ ۱݌zfDήEY5-9?\VUy6U`At*P>ا$uoY:6AeXPs2iKe ?i?M Gm1+NO(e>\ )/yҀe8 v˛ZYpy;^}$+!ֵY!Ǝb)v#(~ΝɓknWƝ†:eю5.?qTܡ'tMIlL@2oQS9;=Nn_-u =k\ 4{mw&vޮ$ŖW.Jz0[3X1S<ƻb<"#N^}uv%ntu!:WD[}-blc@4c#~LZNz+u#5QJ"%]ECpsjU} Hv楹o 퐆rCL)#sSI"ߓ87ͪ3rU?%"(?f2jNy\/Y)xѨ'rR5>x~nsڜKͥ1;mE}hsqh|>e*Mw kcosHjs؂\6Zur؃h=܍vrϓX>3Ĭ'1=:ş!/~ Ӫ hc%tҢr4`~.'->>uUƇkGT\_%&9("ݚNq󖗶߇uhХ.j{t.y{TU [Uw9U>gVczK|Y4LT ]R=Q!K!鏑Bd՛Ƈ%8/F_~(͌'~,V5/ieSͬ}e:4M5~3ˋ4Rx]\dJUlLcյOLLQڗygå7,Ê_ /(J9ży K%!tAe˘8"Wi > 5oT*uS/PY֌kLKDPrxa _ےG?LPJnF9|c?6χWv|}i~LOqoIq|\(N.[ 'MݳiLXq:[P!zŖbjX7`HObcٌxC7Klіyc7MŞlVPy3m2˖TϻaLe~^$_˷Ł4S#ݫEBrX*Mc8AU -O&[2+E+؉tbX`M""#6'.|iP){L}HW}QxD N,}q+]a J: P tv*Vs zqxw$ NN4/ W nUuLZՆ.e~yhSnW3cze'7ީ-o2v%0Jwڜn'H#uۙ*?aeCբ%+6zŵrvC 6ݢqdpc_|fI_Uk:_ Ңx)ǜNGgoG+wD%bALztfݩ2YӦ>kG#{^LÝP:?кywKV[vs;oo9qu Q&8n%>'-(M;Цx_`:Jm''Mɋ,uͷi#ctA4#o[0@ZTS{|xDagƅ~"/e2qPW8 [ƹֱݬ 1³aI&b= :}_eKYyg1o*xw1?3M="1~w18_bJ!F 3Qh#w!]U%<[ wAD5)'_OVaUyC+Muk*1dzʕdJh~ԋZs۸g س9V>VVmJu1C|URINk͕w-zcrf| Ds*=* *KӱDVmÞ_N.CTesy(r;(T^B>q(5ɘ܈qZg`aF1+2a% " >1!jћJ%T*TVnMRC:JQ KBoW0%SJ:7A|W!9rt3`YmPQ'^F@=a>ͫڪ#,s񯪲7sY`tnk[Z2Eg욟,{_.=Ou>+Ϥ7h{qy 1C#`_bi%if:Z t.q2ߖ&zċ=ɥaE[b툽XzķQ0|qlN|W⏨GhӈM-b]X!I=mO}[1cKz-k|NlSc5ZGw,WZD6^@={@X=%_q[`^l,ED/m亾 D(t`ǻF0~CK-GcROSL'5x|HbU&b_FaC0Zw8pLXU|xVەJ)[)O.Ip[qCoC(.*:Z Ŗi nɖrVA)u__J6޵dJ<>/_1z_T Qe;"+B1~ݸ+WNۇ\]3}{QjZ=RYԧu}ꮗ~俿79sѳ86ϫ=siL \U{UOTo7*媥%.Y3:]aC~ٖw[7R{ed-]%vOۙ#ׁqcD Wƥi'Pz"%'r4oUǪ1|Q|qrl߻nooncJRO,sX%)Fb(S{66"v f;"& Ƀn)y}m%oVH͜{:јhl-ycϟv'u+ĹGPoޮ;^J3HTtk:AsPf'3jʘ%[ 6Jr)JJ1gQ'y9|_ˣ璡ZxDZ-N/ZA@_=yhn51vyEo;`y7 򝽰cOmBc݈FG·F4-#gxq>ϦăqljobW,!$fMqV4טYq,qh헨f#艃bAZ_ճ uZbB4KV,ZjQn"u|$ޱ12r6fsF71HkQ>.BX5A-pn|ݯ?~˫_C~/n|<}Ohyݛ=Z\D͕ըzG!%W|[e\8yxy]1U`}s_ȋB~0=voםƚx%/#?66ãohi|⶘peyfXqTP_[sQ}#1G~pgy S8:ɒAuչ_u.4]6`u8nC[Ȝ%; E;D5-+;~'NjKsV M|ɂOx6[to'^7E_#q=dlk/V%vb.s#I6@3LU:"-BrI U-ՖXA{]ptb=bJ,FjA~vt!z!1_QĝX0OǕ7Qx:~%֎S̋X3fhB3#!b,nds@MCyN|hb8JCϠ[?f27-bX>;|[u~١>z=>;]y+?n ?Q %%ÔCgWs?W[ɳi4y{ȫܚuq&heF{ QMA"*xTj@V؂xhJ#׉.35ERUIL,#P)ͰqW_'.9{~MAR[vSt3[WϹWl^nE Pu*]!~d ƙw,q=~+RqZD/FR6۩O8*Si#v [l|Y׈1qMp/_'.>``Qvh)Lͯ@>"J˝ ϫBX.%U~pRo_ݐ>t6s{=~\jEr,FG:{;[$;ݎGcb4#qB2'qHoG7tG_N8F44w/嫌]#>ĻG13IWQ JJ3Y3J]RB1(M)IJSZ)ZQKTw Bz*Ou* ,׼:ז~|rې}ߊϪ,:yCH* !I_Az%}KkVX,v!.3|Jrߢ(/Ϗ'háױ{5.iw/Xʂ ߕKCE,d*˶o[Q1w+Jc?b67t]yNŶEsSђL]"ίAX?bFyR=ܡe<_w9܌\&=sDS-,Vg^7aR%g2y|j슦V Z03h(bGyed*y3KȚ>F57Cl@{ʹƪDOlf o 4 j:fWj#ĵ^$:ps|aET"1ԉ0!XXcy; MOI3U*Ğڮ˶ {v=?>3o_R՚ fq7_~U]6i$ߖd&gNJ¦X7J .0Q 5p6wDZ"/i~Rj9*gJėJpҼOB年lo'7uMϹ&o8s+9.!Vu]PlocȃZiS֜_r@Rt-m\:pu7G3 w.ڙJq.w<d%!blzקy*_džčq`;Ǟ'qcbI'!6)E]jԾo}%D?hO9|mNߚҡʊ= Y=7 V|exǩ%I/AI:1͕f,$D+L!$u"Il_r89kx{_قgיzf_B\֫3|Ay570E,~Rܩ22L'~\U֟=i6I} (ͪU{.oCT Wgnc%7?P9jowqEsgwx y7Znf+PwDК?;j%(σi y(yY+;/rcC]$jtb#nl凈Ս'qհCMϯ#͍ɤM y8TS4oj}]4FFZֶV$7_t7=uՏ:q[J~Fb?kxawu1GrNkmb;]aq:>AJuI^Dx,ot8.fjَE`)iq'tC䵝e!1$֏乚LEڙpNnm+lNA uv>QsA;JSJAS:o-e[a*Пƿ,&ި^F)Y$5N$WoO.Bc)͘V>=p},_>g+%p ܁f>B+TmHIQ\G&ʸWpn4){%35biѝxKI{xau'OAk'B}ge\xڒYTUJ:4 M]C孚#*?Bzr-܃}z)i/x:Rxb(U羢j3dTѯcf-ܡ(;+c-FuRQ훴?剭w(Nݞjy_43]ɣ<DbU,]iVmc|./!Q&DC4whKL"a@݈qYцZJA9b_Qq1mSV'XחG?Im^%,Юt#O!,yAڠA/zms4lDlG͛~%V' ZD4`Zc@lbP?bX7zb|g&тXA==[+D8<8Ж7o1iEglG/w!ֳFg ߍG~{{w?c&W`z^-ޫilۋ6yyG#*] PS_BSa2ĥ08>)M)?(;%SfAJ9՟oZK\> |h{/خ4JE~M 'EAi-jslT.\0݉l^װ wp[;f-k#̍|+7b'%~×WO7)=H(T"UsԮ(XʸP|]ھoe,ˁ3nY8}qsCZ5Pc$1WGMk荁ky)tT-!8+;89 N#q-]F:5=qM.6slVթ1\o\5?u]^y沛Ls"ҙ%X̤(QeieTl4 nUr~QO,cJ?ѯb~K0:&m֮JHVV@<[y<~<6o5H{'Z<t 'RiA4{/TSBv2ui2ljwH='ߖmk)iű;42%0T*jobb*+QBM[5G$T,'kb1\qI?͉lfy=f̼Mlې;$'ZDhC,W$*1$F3K0(ZxMxҎY{+V1z:8-/.z$wVEJ=V3ԅx(0HPt\\K,l&Q&hC)>,b4"Wr+{bs{O̯'q 3#HS\o'Q6 n\%zڎX9HH\u ${NѦƣQl0?Vht-bj,z|~xc|:mZ:b2oQJ*|T0cNSGZ^߱q1бZDQDoʓdɮ07 ĻJbJle o#Ums7f<\܃{s =;ݡ!U*-ESHRMAi" #5~^rz^}3YAϜ3g<wpkl1?_g^tP2YlRR(z֖N֖t3sV͔~4IΐJW.y`ݯ~lCVOST^jUّt~V&,7ix8 ꥽I qG0=Oti|Q~.EѾ=O^~dj׬%oKqlqJ1j-AqD15v:ZO݋8d#{|Uڀl׎_ =/icwdڰ5~5՜M{ Y%al̬94&L%֮Wv1R7iɄRǟN-WT1aI\<2Ls`jဒU5dN5Q `ע<ٯX<(wjWU'|)#\vDP-!bNMm_z.'bVGW\O#k )y>s+&ߎ0le3{&V 'D1=Fa<ӡo1=Ap!1'R[|+evoKeX>kŀM Q:/;јcmX=16NJbxz#t#ѐX!apbIwr1]1@Z3jH҉'~E3 XlDvZ%ƓDht4 .3HKRs[S[GotcG2wD qMjm,p[x m7x|gk`8驸2%oVm?t ;4^fӷhr/8TQ8T8lS(%jtDNc5V\y|muި<;[2%Kn5׼F|Rjyޣ뿰R#]-'O_=BN}W}xj.+}AQ۫&G*;Ncmc_w‚`=ȟFi*#SϴRʖԕ5LHAb(H,%A<26'<\F=PbL+A|IŧYŕjRs!^PwjLssc27 'SVQ9l#!A|JS8-8RϻV j[-#_) jVY !/,aL{hV́Z(,; yևe@aiO[7k7#'qAqa1X&Pɕi~kp^id>D} h4ݸލ4ZPoIݳꍡʻ5Sm7uV4tTlQY;DCږm^%/vF1؇eU쩥ϱ.}_,ɋgGKYT,Y؅m5s[h̭Yx9S ,RBt>,b#/F]=KWzXE;qZ',:^q3ءr6qZj=b8]TK'A:JW b)1WzR<Sgu5bioX.~"@ P'wV[Ǝ"ƷS$>Ax%np|19Nv#.EZ,_S`4[8bx$=v u֢wNok֣՜tPa]sy ?5Ϫ·SY/*4*'SMylMӪf5 h8pa#xjU`o}\[ZjYVvj(ܰ()/26d3!Nw.%s:cV:\~YnCg`fsRٝ)H!-Mܑ$vbiږXDz ؚ|K- ϫɯaد6whϳ(,SS狙-٥ELQhvh'vzg&.w??;g\nnqְ_"}XCIQq8a\X}喚[Hkw,RjA^qMe}y(Ώ57S[ڌeIz ŢCxpߍ^wRpL*/ZtӮ(-?,ܞKLVYK_ E{[.ڣIP;vPehjS[>oΦYV7?4ߦ ڥfZ/o8orci|7JSM?zگU}ƛȃ uGGW(R&ֽQI/J{?YcJ@e;h~ {UuTC+([IVer\p3/pQ̬쇙>jnYm:iN29'#?c3&ɹ?y]jKkRiy'mZG)[RG^2'Qe3(,JaoCqgŚn30JVPZ)g0OM 0?2h\WF|4&Lb)kH5L0=N$֬: q14."im[*bBz<]lۧޏTCHҗ1FK+WeL"$~VTNJdR'O'ƕ6ˈ1)OZl%Hm}A򗤗U踙+~ͯO_؊Z{zu>߳rW2Z7>\Guj!3FɲÖ];vRvmkƙ3iuV~ ]( 5֘||üNÁ.[IA6 U{7sṌ8]y)iI4{J|5/N~'/s~Sk꘶%}ZTS9KH/R=R.Bz! ciچA:Пƹs~ul~3y{c+lK>1_~zt -OVʝ>_8Hz F-/ߥ{*SڞJvHkݩlB\F>OpN \OrP^ٗI#g89fEW6IJsܝv W8t:{o M3Z U>D{0<*o3?{&)E){vs('.:Bj:rACKeAˮ}'t:?kI?:f*)G)Ql(nj)܈xHhO>gVV?20bw1$M*:f+7J5ʓDKtDj񰜒iю8X)YvDJlIC=?Hq8q=q\Xv2a,q]f]0q{F15}>bG*MIm:ı)MW>&IƤ!h\D='6Uc{z|OҼ1X!^2"R9'9%H{+W*-uOѤo|JĖR,OeMm5]eu29j_`U蒅xM ~#Bj'd)h|C/97rļW[q~ң{Oo4< j/kAѶPebG0~@ҍ%5ne__M8s΃?OI_N25N[^O +S&H+O N\~$[-Į!@̏>qK#UW'_Rl+in%<'K}m/.gϑ'Ѿ"7ȋ"tQf/ٝNgvo?Wj>y7$Hץ/CeCmyڐT' &zUj$/cn:G`bWjg5>b'`ƦkXSG8=LM i Kp:hl/icd$/$Jq.ay&K'jχ:P/K=Y;.}1 őuiq4ZqAWo]˓y2W}WV 1 LZ[|%q! Ik_VQ=GNRڼn^ՖfN*Jo&J迥m^IZtIDAT kc5-6Ġ-U'qҘሃf3GW_Sg(W0흥l;?~o~ˬ1 ;?trO|`+ƞTU5zVtL:8޴1;!~ 0iG_TJz*Ό;qIGWgb .qQ~ OڔtCtZ]+ _`kݫ2/O8 bJڡE _s[wm:ٰu˧wBryڿ3dQ~ڹ,2hy65E)χѾ(}%WUU2NKǓ_?8bhK)+x^źTOݱMG+uuځtqbOԆx6NCMvqfK,] wO䭴Ur`-l{jEn׷ۼbuӕz6<޹ķQ7KL1##'4"W:mM~1CMSxy.b&SؒxјhDa{kk5/*Ry$?j&2A+0LʟV߹J/Ȥ|&VhKo_n]ZIK9|鮍3e?<ewCSaPԭ-CH~ r_fSEU.%PJ%Gt1D @;Jʾ^[DL'P::2gJڨgahd3nZk*Zh&*Jx"WQT_B;J}{5a z-܅5`>}:N~0U[XleIk9ǞĴhb}bXӾeim)J:2!+ci,] i1SHI]@HU6Jo2[:)֧q?"uٽr;;bsw>8 ML%vyq*[`rׯA%7*>㩌_[8%v|01N* 2{?| :V4{) =Gɕ!7q96|q>qeP-T6t{~V+kqߢ Z^u4N3OfQۅ=Kyk邭bg 5]ηKW nI< 6^#N%>O7_'y?ә5Vu{)^4xxUi.w2Tzܢf^KS8~I [XRӹވҦ,xEWǤg>QD|m k4N=^pHQ5sQb/F kvwh S5}KW;ȏU2=ȢN \h#I&]$+ko"-ⷢRALm;O^Y(.'IGm}Զ'EMVާ yv>ƹB^5:.77wqb&1{Vdžy+ӯX< LxMT,E,Vb: ZNiR3FktA=}B4觇IĆ6[j[fJx+(pyb %/7~W~9؛D@N鼠Vdm;FuŘŐq]ϜI y,NVy{7xlk> &kG_bNz bW*UJ}tXtLZʠ'#v kΪjˋ_=dϮYrS)օ:?Քh}eU,Z|L{W/AѨ(j?( {9wtYs1g˷n\?lr\sέKZ}Wƹ^SfG>:8Rf 5? ^,n>izM77pi0Մ]FlWD [<-Ct ]h#Ԃx2TpųĂ)vž:xuFi<a|-/~x)bE喝<>cME3Vu=!OKpz:Jq ybV,[wI،:Ϗ1׬B㣢~ohc1ZK U~"JѩJC0o fj<\Yb;/;G?C1*oLkؼinG~wy:EAkDC'gGcuo&YR!~3W#LPKL+=͒ XDi5yH:{hA4 LgVֶ{,fZ}3QˑmS\)1x<omKj^mS T \qu.5}m.\:h~a̻j8 .ZsDoX;G= :S4QjuS:'PY1WLӭTH֤^q+M+H1OQ~6^0oɋ75jAeG\D? ?IxY.x(/+QVS55'~s9wOoQlw0G-zɯTjgU+U#3RmN(M.J#!|q3,^_ɣ7^vM}SтiMlگԞ $=qړ0;vpD:t5'bg\/ďENpxbc?a[>.'f6Gclq57>ΛFo<+ԺW{,}:v_'j1؊#?G--٪Ĵhc1G<;hE洹Bz4⍪4\BOj|2 ?.+/W)Uay"XKȱ^:7:s5-vpqu~m\_yORUS!+ 0j\̠86{&/sOϋs+Zyl^ !yܓ `X<fa_0F]SF#0b0 c)TOA~V꠾fUU@hZkFD`X)Z藛F/| +40tziŦľb s4wR;ɤu \S* e;oc񜒓02Pu GR~J7ѷiO8z|^~/0|:EtXH:QBZ-2/=ftS44>|tyO_s<¦YڒJSyD+$z']&h!gX][ Nq7s;W;Ld ?Ĭ 3Zֹuj9/ixH Ɛ'-Ώ{4qmeE%ؘ(߷ą|g #|\f kb~0̣jߨ>?췆#!^6E"_2zA*v'TV=&%] Ϥؚ*j4:W4@8T[͇jMc}-P MQ7q4D8ZCjHhnn3u9(Jd7tEHĹPo9;#^4IZ7Ůl52.in4w;#q}̭`G@)_lI<+4\ZDP>e!p2j:֙U>jfcYE=1L7M?9[}O??8ީmN;I,V!mx0F'8/.iGobc]\/w&ã*N1v4'^ baQߣ~2^;RNѝ?!@߿9%懗W\Jsn*9,=N(Qen-JڅekU9Bg@T%Sw<=&dF/4z{;&IoDԌͰIahi:4OBgOH[mMqU|MGb8öI޴:*?v;ZtQ )|BWEEӱ}F̿aާK{l.]6aNY|ې4֮ۧ^-e\6\e,7ci+wurk^3eerI^ھtvJ{qUKloy(mI%R`!ܽ;RƜ"WοV*Myfb\hkL^ }.{8'vFYK\&^UfSVE$Ѳ՟Irfg`h)& XRLS3QO 4PY QO3MD+]PW;#PԳZ4Vby"z7LisQmCiBmK5l\5'VAce݌#~awќ8\ݿzI]ymwׂUҭryz?ՋHcTڑ8#H -ΊoI[J$މqy|h[\!2?x4<k'bSHbh'fb 񒿈QX,*c&TQV.j3rr]w?_8B`r!_B7=XJySPQGsSU\kJ5AQ.c1FN>P ɎXa:ʊ۬l\vWŜs6WH?z,H{n&R3HSgjvLәַVlF՛V\q+X//ƚ)ejLE_X-&6KlkCa^NZzQu}g;Ge.LݵZ-7lR_]Mng5S~ynWÔ=1%.-cjvdU9@ySIQUyb%+f\jh_e_bm.A6 KwmU Dreb]&ovx[ZU{X\s2:')G|o,O~{ub/b/uH+Q3 TM) :V-Ī.y+06ofɷwWz/hC7:+ VTJ? XgzeliZ]g9715A[n [ϩnw/Uf|2xfe<  'I:%{w)w)SW*C^aIk^= Q_2۔Zy!+W}p/=>y}ulvO+ buѤUcgssS !)fbKcU4aZX-+U7I"?>O=7-±s?iM~];[Ӷ}i2Yln?6=Jzj {I;GT.n)J໹?}K:gVlmUZGWvOٺU_T2+|Z)IsRFpA)IӞOc,ͷմf?0&nbtÈAO/z3*xH 51!ac),<̕bb0V#=a/u|%,Vv;QO8-Sn Eߨ KlNcUmp B\;~wgmc=@t m! yqHg۽oVS͎]_ ѷ\]hL)EU| of]>2qdng>X} L1o,3&n9ީ9o}τ1>ߙ`&k1]go\%6ovf[7b.o!ZLgMtbFYx(60;kh~,SbIblA`b"ⳒITwT_~u2u03e^Ջ5iv?oV1W ~Ԝ;*2H-oVUwQ^SΫ>Q]=n#1) ޏ'O2ɢx:2 zx(O<9 C}eK2W~3{ Eyꏳ{^s޺2yٵNc:=ecg!>!,1xzVTAuKePQ> |-_|j6߿. tZxfՅr)@w)f^lrs>vw#PjnyG!&. w-s#nYa.u :gĴ=~Ybx܋9K9;_=9\ ?H.YUkbH>OˈͯXM XxՒjg7K`hgn1źz[,nn٩L |3 ?z|]b63fۀާ>ka,}m?@g[- fYo6fM=ve^vs_>ÌOOŘ+N\yz97_] 9J?& c clϴB.aIa:6&y!ΈPMy%&U~qm3IeA,>OzDclLPsSuőf%!fюIڙ߬4 ܪ?fb؃XFu Cp87*b0_|PzёNK,N$6  TKe)!X'6HO㷏q{)^˞U7hY֨вI5z.x}Gqr57%XL" ˘8x=D?{r|='s.b~Ih}[9|ݾT+B[kDя):ʫh-3v!"KdbW;CևjH-]֫[^z`Fh{3(@UZw;fJXz-&?i,fn-3A7eqӇ⃲?1:1hUkg}s~ ;WΘq@x-OTTWU8z#Tfq-X:jG3Ǐnx=ތSX+k,qX5g.ssQݣugScGsѺbVΓWOY1rXdw:x5<۝no7k2` ȿ=/ql Z+w2W/N!/{=uem]Y)^<0ŋ` 'R/EFC}yM5Lq o.!O݂qI>Hm{P?[Q;_{HgS,mDffB3'L̋V0~Rw~Gl@!q .ĥmġ\ěMh.>/C[v1ZJuzS@kyf]K^ܽmoa_hWVZǴ,S}N]ՀNuvչTqUTǺT/9SU}G3#Dĩē58мX cvȳC;K;!̥r:y{Nϗꋨ}̝婯ҺG]_Ѻp~<٧ֻ {Gy7^s\'9Kd徕˰n>@\VӟkڥݟevCOGI0]0|x""Y?= 7_ˣWB\nbsm]M0Ti,BAUeilېOp:ԳeQ/o)Ϟcn_p˧|"vέgtBqZ'̯1 yGBd|&WWQ!Vϛ{6/_!-#gӣ?V!8޶4ΎbQllD<| <ѱYo{*)օ(Oq[Kb\h=ve p(Ɓ%QDP4;5047~&%^Vh  jAs]OԳ9ָ 79)xT -#Z^$^ eX5u3юOjm~֮okL~usψaw5T꿁kyi:F~XyFǾcjX| 3//Qe%r$> c27Y!UL[cCI/c8LA*J]=E K18!LlM s#bLT6;Fς璿^[rɏw yy5!~v r%Wë00ejdu"Փ'VVwSUqq@u[fOu[l݉CDx'#I0a#Ÿ=O]O;r$$b>J~cGrRypQ[_[E=S~[QTTHݥ~>|u{Y K=tٽܜ~76q'A}e|oBha>mŢ bY#Pr+[FCuw'h+S mfݟhن43Qq ʴl~^ϭ/{ٍrGȣᝋGAL,6 b%o8G{]xEb&=p6g_vn?Ό皾C:-9{doROyټjjjg_ǢձIJRJ%.vÖ^ٰ7/8ĎѕbAb&rT\`DoHFuZomK@9 Ų:>^*!:eY3w{L\n)aWeN?W2zY7)u^DUb ? /;at#Ĭi/lEڴz]?+WdLUqBބN~26U)&~-*Dz_y>z3R,l :ࢦ7( bUb0q'Z;c\|8Yo8).>=r-c- >z rã#nxkWCti9۠GAF\Խxw!ue>{q<-A޴9_CȷsM}EGydvyrDU}E۹YoС\3]Yֹ{ɫ~3c ^vڋ֮egu wn)֎C ΊĩRP}Qz-BBPh߇R>u9%4Πm/6(~xn aޭ;áu-+@gKu xu~&7x[!n+H̰*Zq:^hg`Ϸי 3ɧP7ߪgzTVSMN$P=WwTVRB@u Cs/q@;bx<6hT85&s`O[V&7%}F7r`n#rS"ϝ-,ד@7cWrZj=|ɓW[yegfelw?*[߻#CF2dKu]SR_WzsA=>ބܽJVucoY.C; N_GΆWQXƗ*_zBO] ? fl[ο⪖Ke͖ShwPЮxj js| ږФ;3rPVŅu$Nl] r.HAzCCKk[,FosmcqN|1 E'QNzbf;\['2e,TwQN'C>v:bXX.)K՟# S-s&Ƹ'O^j '$~&ߙg`ؕ<20vq䑹r@sL%ʻr8پ>"O _+S33mZ?_~j\X@륭}wuUZzׅdG,໬/5˜{y__FwfW &"ıY%A*p9KIӛYI YnMa@TZ ڬ W"i _?\0}ڸSxz{wOl#&sϭǎ.Q<"ؿp"ҭn&b CGCu{}!b&3ch%P-v>1X-sD2n%~BM78Ή6s, =u>M>=l ퟫ=ss<9l!O͏>]󉼐zOs_r_j˃M1__s'?7e͖5mNN;f_W]9d IlfFs(r?x A|SqDoeiP]r&n6hwj< Ni\}# @ytij__ ?3bJ#u^Wy~cM3^r/֢+] /2&qŠq,o@c1;fyt[Om}iܹ;?vyi}*/3⦏`WDz\Wc QCQX7JWyØ b㿯e0mBPBurӉatLu`5(;GjÉebrSwOͽzw`5́/s^ۻU -A}a94z?[ ꯋed@/'M&T[^jMvAve9a+62 $Q |p?[Ϩ߀",T_ZytoսY<`"<G+O7.-Z(Qy?Ǜ|e9e)`>9x]u1ի\A@Ou%qIRW#Vb]GEj/AEΓ˜ʒ=eY`ι?[̹fˣ~/Oo巼wg}4o>w',=`U v5 x#FB 探9o| 1LhT X0@c=cj;>'b$atF/KDsq9ލ+g="9İ#ƶ6;褣oq9vMxۓK.<М4/e'9:!׷PodI7֧P/ay^}8y~o;.pY rbRLzrSi]A8oM!~(ؽeYޫjv@˼]߆f vn4cj2 dQ 't\޸`]Z.u!U]WVX?/8(qk1T[ܯTՙm;_}b炛oor믯XvqgVEuOW;TQ9ޱvgc8XFT1KC|u ѱ&q7b1x fŰ4[.q/V3>vE/?ƒyK%UslZ;H||*/3단S|򴼈ܳk} ~yyލ5 hO#!G4rZid,vse,XHJvhސ!'Tй/3J%g֭~ugEú~ޥ_rU C?[GeQ R1W-:}3Y/|IxϯM|?oſYLzEK뢸k@OE/=`!>j$c*&O]SL!R5fx "L*Պ |dL,3Pv| Y5#C 84x9}mp`,B)bKTGM2TgAǡpI0QiV_ɇuyn\KB=PK ˾rbՑg"}Y)=0wP .Al[Ke_/g_ ^MпQIC,fC4.ߜbB=a8%.a u,Z'⭸ͩ{?Ӊ8L|8 ǝN"ފ8U7F<WơC.?nbw868ˡ'hX !9t|6tƙ=HyWqD`r[r{r#W'g -DN58g!?ʹrdvoIW^>LB]3y37h ~Vwlβ~SC0S5z#ʘ^V<;(|_5*$ fťe&" ֨Ze+njwZtq ;$a[ MH Fc 8ηycsk}֝޺A m-V7`B]uh omn' [Q %pM.~TΣ* %-ņ:.F,[z99}Oh(#7eZ,qyx>L̚F?rT,VObeVcGt+!>.5pgQ)7q턟3P,[;82?:NJ'}։43%͵`r+r~k$웝t$E\r87ɋ1ĉ Ȟš?ƾ>5<;̙pN^qٌǣ`B~qZ Ks|mJ,fs,`., XJz[YWKbߨ "7>Xt%NCq3=C/3IeO @Xk~K:ox8Mĥcp 1*6>r}l lļ]xN|:KxmW}k|k=PX7s\|HrT>/e9|,[3Kr\M_ݨu=YnTn{f/l{ݽ)Lu:?m Z/i;6ҭu\iRV"뉸;B PmW5Til)BW@U#' !j'Ľ׾7~~2Ljth z s'XҙŊHfX>F;{FNXαqn651 ıF۔̆;pI .>UGkE|[O\m+'k8s˽o1 mgX#w= <QwE?#]ː@-M0kfFNrv/HAs y}=5?>?1.uy7|ك}WuPC{`/ zk-\W)-2HJ| G˿"ҀâiT]1 )PQϲ-@E݆': }m-&c;-4&8MaaHZn W@}|'BKG:W{L~ Xp5 -s\_ ĄC[a !6,إpǮ8nq_Ǹn$n8gv7V&^bKRmCcB!/=1x,>&UwƑqq G0&v!6j 2E0*DN;|sA3NË0|+^9}O{=ܛO~zc^2Ok>^n~}|c M@6It]g1 @S,nAsa%bVAX+VU-Ma lmK1;вF!vRu,Mc U'VXzbQ 1b"io4&Gwx𼋼T c2b_g8ɕbPn+=r\nHAM.]9G&Tv Yhsj~9!7.{9K#Kn`vt[ZŦR Pߘ kx(ns-k+G=TgO!mc*(q1z7UeZhLP ;\<[$OIߟoskmM]72ksԳOPoWyN=p;gn[@H? o2\T: ^ -[ZtoAݩ^?/.y!7}'F-yqzdՏ8FoUc\t%#~ގDx6>#~ '>+<笸-r>q8ƶ"b7le[` Z 1> ̬~>f A{F3sߘO|a*F$|S?x?@yύ'FXq&cr*&lk6V@vZ1+f[7ky3+hHdvb cQsb9[ 47Vd̉c񿿯Y  W7vlfMDvb>㽋|xīkȿIʓɃG`g'>ye&#ͭrE[3,cr=v$_Yshv͟}Cs%lѴ{dvͽv_hӭ\}zu9%@>Z9zaV䷹d<r"azۚ?*QB**Z1Su;ĆՏP^-bU8?Uвa0zcG[ hXaɭ/(Ĺtq%.^yy]^.<^ѐCgvgŴ7Fs[, Q! /%.h9/Bfx1s뎏Q/<}pܟ ct.*jb$_QuB|F̈-[Y=ijw:..eqӉ3~6MdsbX* Y`7%1^,f誣^a_tdStldvdL6U~т_LSaV-JoڡE蠃 3I'%vV:+;.DotQLCo]1̈́Y.:a}tl~fS=u7]d*?5;L4՗X?ό"5"Ã=:\䮼<-u:rXAښ\n?̕Y[9'%N9"eG쓁9K΀Vս + [_< ehܯ 7 D'y(aWӊxΜ;Kx~6ۛ~R]ٿ0f=RQU b4qfID|FXؖX͆.'q..G3lڱ+yq̋-ld-bXvԜ)2Xb41X G09̂~zbf詫J.=cV,袓u43Y']Y'35kf-uBguhklU(C6 t$s&c1OfqߒۛKq%7 }1弗)|o<|&/%y9쒕M|~B_f򽔫bC9&77P >g'vCZfqk=v-ES7M4iTApԃ뒰jm}idj9k_7"oܳ)}zț:]spd ͿɲDA<bl0^'KrA)q~>/ Ͼ`g?|"Vn֊GT6=1Q\n.ىO3ΎqbALr3==-h?!xiV{Ƃ~ȵusVcc%nI0EM,jX\\ ̏yͩ?>D_C̪^afU袴ڡR tbzNDSL 4Gk >H_0ڧ qdN'>ă^"nϧ~z-nC;?:\6G%xպ_'_sr.Oޗ,szّ`r_1^Ikg:i_5KZ+ou>cP97][BΰѮ. GQEȹ_.hأ! X*\ 7 ;Go:+ynq>j"MKmNJeժYqG..w.u"m@[vn #.eY8q\{O}._zF= ]@>B TYdiB/ />9/\yIE&/@"sw#x`O=a EwC8yLsFз|{S^U^?gz;2V;Θ8}cRl]HΏ0Krwf'.ǘ- :#"ްy?^h[}t툅0ha)!ju[e;""`__s6YtCAF(;vHtD8KxLh>x+û+&ݷM;hao|xDrksܚW᩼vGH^)T=ɣMAޞ똁Rm6 h^aocYE\!,vR˳̜ }?nB7Ҹ88r]v.4Ȣ{q0 5jpub`({1]4vZBU1! 汔eiLEQ T1w̃z4܁̄viVnI'0wFcs|#ԏ|zIoXy)ƝM!j_ ݝ7⨼Ugdق1684/4ZМyL.k}|g1Ͽ=bK8|,G t(gYw'?Au/ExMAnZX~Fe(f*q c c6l(Q ?Z] gz!)2O=؛1w_[om7_%}_@9,H9,ԅQ YEwEV;Cf"|bC+/S!v 8<9)Պͱ]~߬pSΟ6|ب :}g]x&~Q|TZ r![6EeQ@;3qgX?*sONP܊"g,55dK`&x G($?R8Q]x}7nEYNEXV%xR7LلχO8 N0q^&-2y3i2_f_2}\3>Uߥwvt jwj9TN3=]/V3/miz\5ݮWk->CWf*|Pc^].E:ylCQp惐'5Oh^?!m?ټ\yW 2eY#tc<[OrD, iǴ^b$X5ۗFѻKL@bUTqT⁸ZUt/v) ձ3..o M[-%V(/ òӛ_EzcMS^ 9_Zc;"{C9%,_d)QviEV+XG{2"ObU#޺1ݪ(c+P٢AhV7ش)06ƖXEm}Vn~~KY,X1ӌ[ie6s-/|%֊%ȧ؇}&wխ nps &uqi< mt$97緐w54;'r9($OÉqbe.Zq%1 2/rj&KG[.Dգ"qa9OQy:x@w]ז' O0XW>{_7.:QP_ԼΒzQYZyYXd:ޫ Ɂ\tdCE38XgQB4S!}iݘg4X)Sh kspX(%R XI+6+6B0+7UZx԰W(BɖmR4 l(O&ocT(ҍhprSPvܞkz4=4RLjLjtSpW6"3G31o3#XΊ:͎~Fz¦_+jd9FkC?W,*ՙe)ykgoػ$mwmm@[BX/zwL9V3i;-Ҭ?5k|o)rѦ׽jsd{s1?PpFoYՊ7-y低q45Mѻn!nJ^/Mj;7;͎z} ߧ!1֬=?s;5!UQLi /JbY6Wޗ?4И e&[ @A8%[~`bz+:;y(5Gx 27wo_o/cIɱD01;~'Twܶh@&R+Bff =xʲAfM9fɿWn PCeʴ~~Q ܾ_2#7, Bba_hx#Y^~ż_$ً/œO4YMhݛ [4;]$M!Сwjgm?/Vozp :4 &i3OIX( Q!-M0Gieg@eۆx[T=ٱ_ErLeΈw/|_M 0|x-:/.x⠿֪-h+ڢ-ku}v <0_!ӥu`9W f4?Q>H^o4~%qezĆtX7ck_dm+ϧ  ?)2]4l 2йIܝ_sԬ{qKw`_th6tBf~~EϵzSt Ĕ/`YfN"wGiMQ<ڬE A>%w_FMwpG}/GKbmOm@[ſ"1ں䒲@Wi]6x,4u",r,' +5lyCsq~aSέ Yʦ8I7za)e,NUٷkJMoפ_"Bxn _?yBhiFG(?kt (VnVŋQ_YGlR v*Ü:_KxKux^kvq'hBhw_ʣA{Otq&,4A{O|fq'<ƎiF怿v3l|nfIhۤ7ڷ9̼%uf]y}f-|35|^~gDž+~_6۶hwm Ɍ W=V8e΄A{O*\@-[ nƟoz rdfY0 ׬ao~ܥ)oby6oaG7lQ 2mmmmm; YҩPjl%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/32x32/000077500000000000000000000000001322401607200203515ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/32x32/cmst.png000066400000000000000000000117661322401607200220400ustar00rootroot00000000000000PNG  IHDR #ꦷgAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`c{IDATh޽g\Uև}* `Q4D (1Ă5XFMlIW1*%vJ(l(Jzz?{M^_<̞=?kGl)>bk LOn;/Jj+T {j.jGjSnJOt>GQ_5>ꨠNۗaf+ Hp{sxrW@󒄒f N;\C^O<5@sRS m)7`e׊( `,"bk/Ko_Umw$$L(25s_(NT)bTTwTv*:DBK~qU@p* `wEQ9"";/UZ5/.P5Xi蝓EMKL{L^v]>s.TGf3.^O^˲lPEW=4;5 PχsaFǂLg(]r*PE9??Xf24Q_qӧ`u>sH:}Gd>"OE mO[^%t:1k>#!*=Y|ugҺY ~~""꓍w@N@"UHmEB67bH餍kDmDLNSc _<)+XI:XD4EC~DV]o[[X?N@Vnطhn~] b+Qk[l !+N2kL< on/u/J%wΛMk+6],8p9V)vjJA{Rj:ziCN"-lEQe{(:)"R#j~;`OWY<{jvc됸ϖPw+$rBҤ6ng^P+ʍ1aW1˽\wr ʟF` + ja%ϭJ%?\0r,py?6jҳW}i4 UZbk[ EEIW+HJK 8xeR{CI Z5c4V/aݹgc@@@ <^ tqgߢDb(9f8a VA(O`_b>p9 e >P?-Ь2.E&)<= Pczdv|3i.J-f*]t>^R+󠪴 WhdT}s ^VE޴eem3U$oʞ8(9ZX3Yʰ0QT|޳\跻q'mv= ,$Q)D'c @Wt ߊ1+o u]cE6(RfiRr@ ZleE ]R+wXW0"ykȠM "a3y>&Mh7YDdd]K-1G@$|Ufo 2d 5Χ~P`0O%P̷ַ߱d1cdYMTVL {a[5oTm-%J8@`{9rw>^u@D.6zɆb9It-ujL{5²5yI_~sBF&Z= Ўn:Z7Ol6OC=hSƠݦ}2@}31= vu4SuMKaTs@OnȵFg]͂pW+S݌7ljX)iq]OP嚺**J34((e߱l3pxnic*.iޯJTuz.4Է@]C /՟i&NORo}p*4ml` p)hyK-\]2^>9r*@iҁ|Vj<ُ.-H)%jJeiAq\Gs}5JE;r +L0jC}q5@s?ƺ}P?`)n@ +t ng`äppKBB7')mtY_Ct]RZ6z;b%*^b'Sh-Iqx(,VoQjnWmOhh2TGUg ۋ/<@f5וV޵uVX}|w`Q_72wv9y^~_6~P`.J^ 65́oa{uWjj9.kJ'n5 #Re7ΕR5^!zKy=~ 6ZJ끳F¥)wakdJY+:01ח׀ nn lh"x>HnYU6<@Y O:r`eh7Q+"x;fw*c>l!@GNKyIsik|=v} Ozw {)8,16!^l 4j{m hۤ]unp;ږ; A't8[7s,SE[7uTɽw_x!M\#\-g9CqEMnj#W5y« oDD:a}}hy"n#/GxoV:%?-H:";IL"Ev\촽|צ-0_"ޘia9"E\|Ȩ 3b|S"x)pKLWEv˪TA듣7,NqY;W o`xU]D@: .qi2NDGJ+1d=m:bN"WDU."2j&|?}"g1ZYeeO 3O'NdMKDn;.\Ф{0[&4Tdow%DDvR8ݿ/7{]<&hwi""Xf~LsaID粜1;s)";[9vׂ""ӦDDeVHZq\V:Uį_ o_iЈz >}]D0Uj s ;mi pi8;BD< M7*_ږ:+o:Ϲk{З>00&^d~AHѵ*$T9]k$s\DonsF6)j`kwf,lJ^B0ijö]4n?:NЯ&W>t:7{ bxMk0K/s Z@|ZP_N n6tc:얃翎՜rwZ/W9*I2'QӯԻS&jDD-!eѪD ܠD xy|Hf߉Le U"3CάZχ[+S,Lf\d cr#n"v?87pr[/}Y:baDtkyE\ۿb۩s |kQ1}"]}چQO%FleF@P@_FU˟e `."R&||=gRР.jհ 30,s)xԗtc"Ojj՘4p%nz1T(ʽ8ㅾb?U%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/36x36/000077500000000000000000000000001322401607200203615ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/36x36/cmst.png000066400000000000000000000140361322401607200220410ustar00rootroot00000000000000PNG  IHDR$$DgAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cIDATh͚gXTW׆3 lXQPbNlkQc4cF,޻b/X@(H6e}?&_/ۮo9Yur^!"RyZec,WP|.FCsef44p+svEQ|{DD*Yc~kqrtN U:]97+hM>P ڭ\W@ ML ^0X`>\-MVEQ o!"h6G̚FsT KgIpܥ~\o[ ؖYGH9*`@ysu"Z ܤeX 3ACEK|M1VUEɪ_HDD6*rFL Ѷ†UQr6Sl[mlA:kIY|(-xpX6MC ;vvU ; B??L0Hl*kWEEQ3cljjy`i?=ޣ4q>Y^.Ҽ+Mz.ߖAy EDʮzpyn Dw֌}^UXCkcV<ȣt ;j/7j;A.ܦG@ͻW {-[* |iz#`J8 y!'}靕oFg'=V a(,6D6\~t4WtR!albQuf[ծ)vVEQ%JD}p=$a4ȇS# i\3vc0aƎvCw@,_?hz`?zc3g9\z9k)yL\M&|pjJp^WWpm2 6:r= %1h30w(p4h_(m]a0gQMH| km&,M=иO),$'c_c̴o wSM8WtZ< o9 ,M >=3g<)s"{ڶƿ'!{-GWX?OhuI͹s;ևP_yW1l۽z@>` ±fH MTa+P'/`\5ޛ. 3VIl(o=ڑo\mWP!Gw)G&\o uGe-6Zu| ۽+=l# k.FAx{$N\;5> tCtu Y`Za\_8 (=Y_?!mmn$8:jG埇^?hHqߗe蚼IaxFN@BPü.zr#(G&߫Sl-:7Vn`QZ•eWC{3R ЇjAg=қAa@W_Xt6A_K7pM @@es3b`,@[@Ih'0>zcB5fʹ2ׂ)LlRY6Hӵ4{R3V ߿t6 k[*z:5G3POԗT <EkPwnPZ360iNf. 46}hk֟=m~ h` Ӻ`,9φY m~ c7i,d { jv{A%H~::+z Ko_)Z: g/kHm0׆Iq7'0߳ - ^~ADWL ;ODV'=Hˎ/-[ADvHvjƵTpJդ4f&upv=VEDdsWOCWS~7nd?3HGkV%R#l""C9rDjZvٸ""oVM;DNkiG^=f)gj5S /*@Di CSk'*jͻS/Uvp}?v mfe5"at0/wdje3 Usx#t~vLB7;U,=1(ZYY Vh WO#W{|?'oO4lpDr9@Tꕗa~<:WZ_vm^Uۃ@-sNq{o^|u!,O~J5GDTt]j!VUn?ٻϘN =!i# mEuuOJy=戈 VSAޛ?{{M.ݑ"Y!"^""=4ED if~1ohF%ygWZaDg9Y,b5Z- Ro=,I*l ]|>X]޼fHVue2w7L!\]vA>'|GO_*_ L,|?#_=wTdBlP&LJD1uĎ5ӟy@"粈Hɥ?{sah- {BOfY(ud"G݆WNgmk i׾ ;̦cQ_J/KΘ 箙m1 ܥ- Olw_9~OJNKխ;fk$zCN7x]p?*SOvGGd:#),tjeDDuDZnF]NuЊ<7n@q~ 6qŽ5y_dMs@=+@"ʥ 3X5+_}yUDEWEDi "Һ׼-De>+DY1"$<6镰g"IE,Ik+s}R?H #Wf{F'zh;n)":-"2ğ]?""eve7HuOVN[ n`o`dK5E]>3N^r $ٟ&JPomKm( ڦXwաg )`t`Z-3r@hJ!gFXC o}йNt)֙{mq\"zef)Tͬ|ޠdS-/4&&\pK1 *gGN~A""ٯzizX#AmY咳!1W!+. J:x|v$ZoPMB`(rz_lniZ,ݠ*\?lh[i#ທ+{ JdTC\_p]e4d[p_Qh%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/384x384/000077500000000000000000000000001322401607200205355ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/384x384/cmst.png000066400000000000000000017011131322401607200222150ustar00rootroot00000000000000PNG  IHDRWigAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cIDATxu.~w !!XV\SR)EC)XK"-ŋS݂C ! qwIe9>g}+דgs:ꨣ:ꨣ:ꨣ:ꨣ:ꨣ:ꨣ:ꨣ:ꨣ:/~uQGu"33j΃^ӫ:ߠNꨣ:*ȷ)V+VWCWl]o0z m_rBuokcպj]LmݦvWg:.jujkjɵur69ym_﫵:Yx5am.oU֫Z'\񯗏""wꨣ:: Uvshn>~~ok_1u˿=v;j빵Ȯt'5煐7C\]\]//_m3\[^ Q7!dEZi ?TOIEE~W T'A t"4`?]v99K Ӌ!gLQoflX. W,j?{H UK,ꨣ:Nꨣ:*:^ȗвK_t]ju;Y JsQ=8ʞgA͟? ? 'pKW;~?Cσ[kO|X/w@NI`Y`q_a)d˪zJ!Rvyn  F >O 1 R `4{Blc.z0FdA)=w=qTLϡb 90DT5qֺ.o~:L"֫WSߥSaxMJUGu::ۢ*љ~]|!l8)lk\+d ϗ9|vVy6Wa퐑[@bGpJ_gU(_Xm-dw+~:@kby+?V=?T|#_#| rXlq8jWd!ȌRw!qxϩ(U{v/ɮ`˨DI b]UW#wN5QU!N +_B\T zx,x>x3@ϡF+utO 5I̭23i2 n4BNNꨣ( @u-HmuCV!$!n]Jڒ W Ϗ 0rNK 7f3%@F٥&Y3׆NNЪ5.w#O::kgcoy-u" gYhmK FWpx+CNQ,oJCOD《ض"6}vIֲeN4Sn+T{n`R?:QЪzܚzb7U vW,j@($$\Z]c*7A̎YW{Lgzq Lo!V ?u؂clQѾUv`{bP QG:,9tᷰ!]qOAb^9rL%3rd -C!T~nn\D;CvϪi9I/Cuq *- |,+K{:o$x6n~ >B,oki}'&,ʪRU?~Z [ ̯gCvl[hmдv=fKk_T;GTG+}1ox w<8@5~r QT'b 6(vBN% "ON:!bB%q51%ȀJ h[0k=c5 iQ1 "3sBaXZ}uXsu?::_OX 6_ C|[ ?4~'ap>gBRy>;Yu-߅.\%Jrrھ*"M)>@6V\+7re5ssI8Bů9|^IoryM*jUT|_OQ5-7~z8k fo46re>@?;&FjgYXah謳.OAXZD[HgM u5yl֖Ͱk az˪bU%}zԈϪkTؠc߬vj`V4L}-΁80UT ~^Q1og;j'G5+E4!~j6h]!>8CcxqC*h[A5'6{^=N::? jw%,v2f*tbߢg]{ PaQn9;BٶnUjYE~١ȕjTnn[B^=V*Ϳ>U!e3sJszd1n݋Er>6,l0g!9=G3fzH47xҷT3} װHo_%#;ja6zY 4fFN" HL3^MhCU? S,FK/bzVB tC3#uG3[ u]obXa=6,]U4>x[xQ.Ԁ\bW$FNb8ĵE{ƋV@ WR;9xv=ĸ,bYeALNxbyqAuB2RC2$} [s퐙df~13f:::_l Yl>~yj?zBz{TC兹 CPY| rS$TvܤV# ,+ =5LwM_# emX|_:On kE< u:F mQ-LS-DͰ_XyfBnh]S44I!kCjV}5mjVbDp<_\-'X+^amr(*ϦWVUƒ6;^]w߄:?:wÿjOx`KGU fUne 9/OSYIk6ɪ)ܩb1"'@v4Ae+V{ՆrWq0o+w|(A\/An~yGz_Ql" bwgif6yu7-+ +z ]5DZc+F4r4hVb NP,JdhYTM\K-TD-:hZ#:!fX ei$Z`%/bŘd%lˬTӥ4Q`j4EX⛼+̫M%~hgY\Z!l`FG /)ccwrO\pbI@nXg໸'.Srqh8&-z:ًrY&%תY8;R1b*_P< 17ىϊ/x.bL޻ b*C_;!t̼6[^TGQ'uQ42dQj]ʖ*|l._@9Vз++ +}V ~y-何kMmj s'u~ V] B"!>k;(r 6u-nrEy`MCB/c4.@%EY>X k"kj%V36`Zg}]u#vntZꊾ:[k*jZi1Ssՠ Zh9 &B)P{4MjRReĹ$ـڌ&cƚaFf*q)KM&d8d|nh4tL6L|e9mkE BLT+Lr|p|P#[ E0| ,5<~Lb8:N'9yJ<! ϢQ;x!x2^o##ĴX*!^ Š8 bbSq'SUf0bC!C<_: |j:::_n>  Y>N6嵕O}r8[/e eQIt(σAm`A\*sl Ix~T ڨZs9޳C]r<C</:޹>ְv8%v2[h<&*V.XKܸK~[o|wroadI0>R_d_` ^1KxWx7!_m7M0$YoJ?M$m-zx?FbC4sKMpI7Q850{<SS31 ڬx bn:T6 A]TDbaĢKݾ"#3KY| PA;C!sٚ> )uEݥ:Nꨣ*OIc{.1V>Z9 MGCqʍ~ZW}9< rr.Q;vNܮ槿nm Sk}5}}hɆ<o[ r뱥[ ]ݣGszb+0ȷZc#X8І!𩥶$A7[Ħ# pT`;θz[#V&kkl7uZ`cMz5*Yi hWs%ߢf#ڴg(k-- lOW& 940DyVò]k} _3{ڒsZj79|:Ge^y2:W{q y7%7O7"g|}j8/K,0h|;WsO9G9[;x{#/AٱZ偹3]#lLk< vĭ6$qW܆+kCwU31(G!F\(**q1cPSl-x9L~ S_,6w'(_̜py5|EE~bPw' @u7pŏiFz)ǡT΁rύm<q]rrGŵ jkEYkʯ 7 S 8FPrNr "y7еS%SdK54׀О#6YN8@clu؎85lib+~8;wqBcFl4D{l`_b?rIq߁ 8>2wUsmhQ k[/B>vzkQE-OUopt =wҮ]UWhVt_~5;ʷߒ*WQ naVL%|~}rkz\mۼgC5rk>p %1 T3P@^f\br4LF[\y#y?"{{"b |doȻ}=-o  (ٜl%c|A+X|䫼w`cA5}b<c8n&s'0,?s=j9*QJ2Tg@t9L@%.˽/zp7Fcn;\ct6"G+"D<<&3<2D7[X;OcZt_c2+ϣ 'kP'B.ޅ⹢^0^]195BM1B|԰7<O󀹷efNp!8Ou:p`GZ.-^(Wn|uʪ߶6{@?'oAN/7reK˳ !ݐ?־9(ېz6{1_F/99G|c7:~NN>ђ_/+c`CeXg؏\D.N_D<gGg"t ֈmmGH_? x.<[%31bTM27E_Utboq4 5{dU!h8 TY(Ʃ`E VC Og/݀.fd| ,q+a]˗8q5i|.\[%jB@Yق7=[hU* [䰆K>9ة̣rDgspkerf4[!V6poVSYI(kQŮqqCh8x8k) B 5;q]qU곚gKJ|ھZW 6w74^%>_%Sq#ɀƪ=9]9ZfVg|L~)2Qw=`Ld/g͌2}u,rEUn[lR9J@XqWЫRujڃVhHʈ}.jj?gs^ƩƻG~0 !߯eU{MNn2vt:[u=FwJof4ypErػ,[vy֎ܼʅj8lˆ߯rIǦY<=V}`W>yȃ)/nryJ]8(yW{5"W]̉u B +;(q /aqg3_WW&*-ލN,*҆NV!.␚ZUEEd.VP,,uPFT)t|/^BT6P?`۳]>U-ρrAymZ~jܯ'U e5dU3(GkB.@Ω:vƞn%os Gآɟ枼 [} 3Qz[Ć =qbb\ljVrJA'. ~IFtCl@GEǸ^Lo@̊!:m!Xó`f-i[{ b|-q%,,1}cN}ȼ?9aƚwmU(.n'o!>ozIe˺oWc4}NXiTկXUCQ=os&oi{R90dȾy sokWQs`>[%d|!X9syq؅Z|8?c83 w7d'+"||}lOSY_|8? ^sTw>_q1be7Rb7^'oxrx&y xb)5xFE`oeIqu~j52wf?ޗg\&!)_ &_7i(L>si%ۼw,P5=,hj};NSWB{?s 8ω}bvߒBgiֹՐ-jMTsE-AuCȖ;S[%;id.snO-o\wc&qxh}yܯ/=@^ո:ɋg'B ߀)UGX+T\ nyxuְ+O/<嶱~"pڰ AuuPG o%=3(/¾(;Cvc]s(7+o<urPPV[ֆt.[mr&C&y_s G47_Bћ8Fb_-Ϣ#.w샏XN^Ίx.&8XklBKdODx۟mtiG #zAkFoQ]G]|/'ؒ}xo~8o,xsv:V|qGVi~P(*^,bOcU╸=^D?~&ՙ7vCtW>o[V|}yknzM_kNʛ.NZ9&*ra>`ry^U۹l? l@>\LLyd+bͼ'OX>m0<`N״:ћx_@#t=08#ވqomJj<WM/+w'0ōBR5\آ*<[0ÔkNFR'uwGQ/s.^v8@(-򇍷AWi?*W@ype˙V>R",-N9 ot,_d掹v\b[bzt5@|'F/=1Ȗ#._G˜o]GYXs&_H ]cU[}jZQoPݰgáb`g>o˞#C?yϷ:SW\b9)0D:4׸1>9Ĵx/&Oh=FK5!wY|>$x;ދqdEs?!*5q]ϧo-ں9ɓeyW!:z #,yKs [M!vv&YݝI=E-CVݰZ~s3)˳tW~*gGWMX3?nX:I{9[=aM7dX~w"ϨհrU GW©P"]N^[KS3|2#{O]w(y><ɑ}xC;-pA؋\5O `)''"#c H9,|RT +w @#}| chR 5,-3>ef|YҤ"͗S'uwCQ =-vʉxCU>]QGByay5rr,Ua_^T ^VC}򇐧Ԇt7q&-''毳=5X%#1-y**<`]An;qBU{T'KVb+;\$:E;[#0 $[L׊ *PlW%1`lWug)a jyG}Y{fǟjWa&ct'ėhjx, {ќOS<1*OwI'Ί7Wx~buGq¶~eIN̴06đ: ô;^"'Xjw[L&bU|Ԥ@X-0W 3YѫXk]t mRE4רJTXK--\-LsT2Ii8S4(9,'e?fx撯dS;^q|ewVsf_vrMm^Mv?buCfr96~O`}]sϱM^둛:4œOGmKblJvنl#0O%eZx¢ ;{:o`wseqG?]a"ݼ޵`nk`z/l9,l nm,I#qRU-$X3SrXB3 /s:ߓM؊|)3J7M7+%arG^ˋvyBBn q#A3;bADO;TdK(or UE śd(-B^ÝPFCGb 7=0fUeG8ʊ|1gCuGNkW.q9?il=UpVyxPNo {ܪ6{PȫʵdNy(vydj<8~L \[f̣s8]5̻*": iJXCc3%[͖ M@N(Z::(XXXϊV4]t%R,V{Ѻo%[3Up @ k.@˭KXPsIr4;n*դA߻53:&;SXca;H { ˼dWr9y'< } ymNUq9'RVGr9 K._r=Ǒ #Σs +X;ggr#[m6Uv$OMr)4ғ9ElKɕ]pyۃ^_ uk !˹tn{nqp 7ۿ {A>YפC urV'kB6ׂ|U;_Q7\-f/%@5'19kfl謁OyCoٓ|\/tCqyZ<"nVޟ_9~ٻ묢3:->,Cqd^(6n!5|(3x|'|n鹙Wnv\E=P'u-3b/4~X_rTsP6-r`-e_(O|󐚆zlQ {ȳHdmbc?qhjU8nihk؅80~YSNi%m 'APM WuE嚳q/ Tz.Q^{}Mxs'}0wg?•C6gkWt#6т0FAb jLe݌yDS">89F3a-bAbxVm–=1=;Ds#=gΏ4b }1F8@)|>;ۮv۶mlIlk:gCݺ\Xkj ZzXd%t7OWt:p˵G; Ak-T@ӚgrU3-UD%[%~jVeV˵#'=j#Fkc \sgzO,Ї|/׳:8;EANvKH943 9X#:6I'/wqX>k.y/}39?'g !"O%;W!{yy6ٮ"ȃr'r="!7&[!%W&geHN^يk6%?ٚ0[e0cǼϽcM_: lJ׾ w]uvflxٖN jנ"J;Wc6'Os|>瓇;/+r=̳]6r܇\v!V{Wml q#V!geّ=9*fAv|/[dAz*[me^|싓G>HrgϺ5w[a-n.?||ێ1+_rP6?lVrtm?d{| @b.҉8ȉ e޲1qn"⚼ œ7!_1{ ~~OjDl?4~b7ba> je_,CH_@qwPp 7si/ihƐ!M3 T~ C_ uPG +Ͻ N|Z*NCƃ.P[Oj}ܾ PZwjX߻yB>ScN'V"s}DKAN u':68>q q4#_\WSǷĎĠ(AXb]b3(E;+pD#{|ֳmxjқ׾2m*vux6vbzOGX%bFAlccqѪ/(z$KN1:fmⳘHA&&xX8qrI<Gr] QuEC gmGGoǡm-ġ1EhηU 0tb}:?%mmLHV@[ş"➢kn;;~g~۹x<^:e/p(цqmL(~BgѷIc^&i&$Zbf>ǥ*_ (ŗt|H'c6Yˈ7⥸ķ񧸅ba&vfM= 8&EofލDO1]6t!mLllXP kwwMɪ裹^詴 r,LXr\J Qh%BZ'hoUǿA:ҟk"hJ+ĠrZQ# 5bR"BVkIg~tts9%*fNh|EOTq@~}nW$Ƿ5 jͽW`xlv_g2J3uȿ/mrsy;+$rsf/옏4rK}'7Mȕ)6溕t(]s\\?WvdMȃm.%"gQ>KsQ~yn79&sn :<1MN|LSW;"/#{8χytȭQx8/yY܃+q5F7O[b@gC!xF&TdPPVr24^a ǷU^}.t>uPGb~0dEܸ]5ʮGUno?C?*[ql6Q䖹}c<ȉv$% vp㈛lchEl8$bX)>$?Tx+}5[lTT03/ܚ {sxdחyL\˽ELb/k`\jI wNÙ޷8MGa8q3x6.Ɲml[` z.1WG3>aaot43/N;Kê~ۼ6TsUa\Us_SG{I?k\__~Ko" DN' KrK&)ZdID zqs1<3,t+t--FR%W lj.ĕQx#~]E3V܄6,Y-:6"lr41;@ʋK~mYy=Ov9ȱن˩XǐڐqEvξ!"2Yd@Aq̜F.y{9):'ˏYgSnq㛼̋޼Wh}]%eN?w[rNuUfQn-\ˇ80fUP}@yaYjGGjrrnosaLw-{oM~aUqWz\4uby!܅J2TW wkP46$eYЦa{ff{ԥBugAQtgCߞdM!e*ǍC㙍]C٧r9W\gvZA_84䵹CyBRlb݈jKqc]b/:/.&vc>ő.ݭGT q[/{@VA%ur-xi»7O䭏?^yRNx"MfҘDq[\]&b8ńbMloDh/bEt$Wx"D%@LGb2M<knف[ r"_ucsx~J~[c(/RN!ɇs .u/OmyꩇFׯ̆sܾǰ ]`vnR .oP~YKϩ(63&9|.ʻ)cYrts^;wv_Z%a'׸5/{qw8;VqTnG vSoc!+aQ A//ֲT ~a{zm\q?B>P}.T__+>j<n|/_-WmhSvߠ<g %*Gyq Ӳ*$#~ȸx8SαX‘b؜b` q[%)ݡQD(Ԥ=!>Upg;׾xZwع[Ƶ?.$?ktqx|Mq_\{)(ޱ^LQĖŦh#cwcN4!^qh#b"%11>bNq ?~KԘItpO1' 1Yq8վľ=m43뚧%֊ 04_#, V謽h_ZKSTh*d ½A% `E\bXbFUa[*k%cŹ-_jYm]F\iߵwY}ZWJff܄NSPsJ3*W*BOhiVB6qFE(_AFVXaIuXwsTE3if{x84LlD쪅z= ڼ8|8ɧikaU^!nϷZ>ב yn\l rxEp#sKwf s}́ٛ}?797x';ǒMG%W~ 埊cWɽ1Sʗ#׋Q>לH>]^N㣟}~ͧK9g#z|ҔwSG9h.y9CtnOlK]4knh?áط|ʔGX|: S9AM0nRN(wBpSfۆ<sy40nw ܚgĺ4~by?nry}^ذ!ʓ:|?4p4Ct3dHy4tH]*TI @Wᴞƕc|wA㹍A ?{|R^ Ƶ!,|.y':ȷ{(+y38Rsq 7N<WTG.1*֣8:V|bP Έ]ج*ObS(Zy+vb8=u'{ly̻kn;TY&şc)cb88.S49ѯؒx#Z1#֦X71>f F|FObxxͱqn4xox4FbaEs8<āvqv/iA>eo1b=~.tJ設εZhmTpGMSU]Im r9JU'Y`暟 TҕŪjc!fm!~]O7ۂkkcA%gZ"EkM^[ hQI4PQhaqDd{"skLL9UE'cLmc( L-mD"_-D;K\i8|(~jLK=L6sge\ILs$& C756!903rlG̎["Wx,?%i>ebܜܼ|x앯P_܋ܭ=GQn]\WN`f=>TvEyћmhc69xܬ|9hPb9 @LN||1ȷ(Z[[:9w=n7pu }rK4/ ySPz6qQ'u_P۝jepl:Gxjxlc鿺еi%)/}ˍdԲYV[oC-_+qBf%{G)VuӽpuC➸xb"^!Xhy7,ց◱?Ĉ8(P.*!{݂MW3Z<ͻ^OLqs &4\ 'oścq`B*-#q<Űh? *f;XbX3UVwψ1IO/b:8'& n7 x鄿^N#GíbOlзV>ynoo5Sd*zf{J}ڣh7r5Kμyj*b9Sʹ@U񦘍&Y[o&13 aY~cwL$s̩=9*Wy*=XX{u.*7{OZ¿Z^ǖ^R+=V:/R+Vҙ裥.XU']ѨGtSٜvC7ە}}\|;y^aںb3:u"zꮃMF(w⧃`e]PIJm*Eį-W`)Ss|}sVFMלA dfʟ'RW[\Fޔ)7+ȧkKx/o<By mvC}D_A9=DgA#ț@d~0x/R~mnn啸(w4s.O*9kx ߌsѿdj,oyoӡx2߇b^K(| r wWeӮ jc}][;!^uPU~wTxnw46il ndn2{6r).j_GC80+yzn|/q:\lx19.6K^168-EWbX38v 8ӡWiVYU\?;~]hx1h3;OA\W6\9ŗq~.nUĭ#bGG3Z\sHMb1fib >50U? }FUACPDkF)Yr91l1Ō񦚇KM4 7_k*o##$9a1x-kr>H\ό2mFc"L(MELG3SDaY(6+"-jDm>1ۤ\S4jvQ]t=t 2F^eY1К:[[3lT'6F?U˭N J?4r-/zZ; ZV%wX~z`)Vu#ꩋ8t*Qn:i" ]UDjVtj)Ǟqh!0Ffq99+|f|vk5cK|~Tc֬[o]qi-NlQlW>F]PJ}F*edŅšLkj)p[ܹ{{d'6im=޿3kٔ ԬV^iZny ynnHx;;MkkEk2!΋O'CR4|H ba9 IV#,k]OMkkR!-,# wep}r/]T֭<IPٳ6kj_Uՠ2|'M^Fv~Uzh=gbfqHNqen.N"wCQn^-6]5[f8&e=lΔ}3Ū˔ws(;ԼTQܰ)Q^\\l_^]y\&Î5vEޓ 3{kʙչ$Y1yѫw|>痱yq~ZMdoE.cIr^o~/|$wny'9*EB>7BbRWW+yfan]>y`9>7Y6lU%_Ѡ/OZY3Wq,k"^>,#HGΧw Xkf7I|Vr!P^V e_<<Dy ȿ:E^b#;8$68%Ns*ŕgm88) EbG?PS\ Ե/:Aѣf;C}?2Ƕ}|n:KoX=u .mE}q{Ōxxu]\C utQEbt,=(o9_̈YD߸>>#cbB'bf_;cc~Wb[.|ĝUNpq~{hmj^uW=x|m0栫nP]oD.HYȅ`931OKz$} ?b|hk |s/I>x WL&Oc𭗼| M}aYþQ9GublF>%>0i f6#>6G5ovQgbWC%],$*,qZ@f4 MWyDU§/M4=1ZYݪĚV=֪檄*4jQ?X̮V3MR79>WX)4}a%b&zikz[!qP^O䠸 [4Ad+$e@e5E&W99ф9צ\#R6B'.ΣWS6!ۗS6]ȟrJ#:}t[ v N]DklCu|qՀ;:7XD99)V^K>=D^fc<ozҳ8"_ȵyr^W.qkw<8y^e yX>jV'USErevζ48~~ {S(ǭūi&ŔbHhGQ\Em61"b1#ƛ\"~& #q$` ǏqL@'8R1V=~7,fzO#~w&Dk V$[fB~eF.U f?~0ÍA~'Za->5 ?%>c~Qtr)v)M.0&j/J5-M+cO#ryefVsȫ=h,ȇr OOHܣmo+>&>'_nD(43۷7?_?AeL9L46\̵BUY4l%+M%[(t$[9a fZr&vm8IG`cXT̳E+%ƾ=;EO$+AшXb8LobuAq^=񨶱'qnmOlmRhXJhB9=qVz.N1 ]c3 3kҦX3[EUrjjD ފ6X]7u9qHIdFL6sl!#cX\+;Ո-zۆk#Rh6'׋ewr5!dC'[Ȗdlϑe(9X₈jD/dص8GqXIr1y{ya~;xy[ܙ-vڦsn#?^wmي(GV矔jvTs)K^=oje|+_<yT4Ӝ|Y}}'Ώ[ɋsH6y1;p q'\tњX?NpqVbĶ-#\t-֥x+7bP:9h]PP{}ᦗszTXz’6 |[7qP7/PX {((^q2q]Sіx=h Qq1Xc&!>#%s[5S{QQ-WlJ~F~}Gl1yC|2[؝>%#oIz'kMqomMoR#clH<|@'-¼S&yF.q56[>N^VryW-!NA3r9zGZ!6F_lmClG-cPUr}vXM'-AZEbV}mq q&'_9x5>\, {j/~.8;vwp(Gk(G ({V,בlaİpAg~>D]W⇼ 8ʛ&̝}+g'p],㞼xrxm`1|-!V}ɿۊ^Pmy_e`D9?CflqHBReJ3Q?*)Vr8(/.@~Qs?aP9&i9ߍĹf)qF\Rbqō1PLvl %PJ1QEbu(bF=Εmw{K~n= @ZlNEzb(umg)".S/ iQPT̍)n&ĹQSxba4Uc^4"~KbB%LHOqG.qmltX|ՂX.Fx n*ZL4կ:V$[ ǛOk~4M5 U-[\S iԓx4ϧru-+o1YQC B7}k8nyU6$8<.N45) 9 wJEl^CwO싃μHSc<)<بVϰZ^#lSr|~tfGL &qހXb4ZD-g|Mڡ:cU|܇??b4F3bN ] u$_bߣ1q_=uēqe "ūDLb8{v'޴NK<I #'bC-e5b߸163O%1GnyaKX'Ԗ+N߈51WOm7,q56VO "wW%;71Zb#z*5 :ihu u7|j,,O=9ĦDz.|_ 0.ΉɞHzq@%fK}3{dlM̖*9.X$ Ĝ=)c;ʍ{q$ebBnŎ~˞e;Jo5|qVc_f +Sը(;ڍΎC)/c(Gu>REy^wAdXEyjJnSylyh͵)yxz$vSHhxbQ^l{R8 .(+CݒSuרq?m?q#.gnǏ=ko2 Պ׊b8btL16()(Oxx(R ŋoR|G qYM_xbR3bcy>;8)ފ8]Cbb4޷ >{xȅ@ k=D^SM?spL0#/1ZO廸1k|kyQ] A^/g|-Os#yS.ͫ1Xmm$ϒ&7|ޖ9:x\+^f?#G:\3_͓4$e_vGak=<@>-8.0A~_/-l8tوT#jd%AKC|bM]Igu\gk3c}| 5lG^`8Q Wlga(8xtMbiAt_bcsQ1_Mm!~bsb8!zD7KbUcc ?xHX!#]]}ҼxL82yG8,oyml.q.Oqb6=wGfXv6.yClb=naUf:b5Qmn;đqqI5įE~A["{4ׇ83NOId8>_#y+%fm7=m6=sIH>uݠK|3CeD1<7z/;F픷Z^DcokC^a_|r=ǣ{U"UNX*cx+Z5+tzȿ$- 2OESK{2dU?Aeh6kMUʱܸ}b9r/oy0)7*$uJ1ycH\`⪸3!v~6%.v'^ bGq.< EAU_];Uo_:Wy`?s#[|Z\My-]7EQRQ|M)(&(LƸ;x>,!;i/1&b"HoOWanq_lZbůdND!7D{- VPK,X#i%O&Ǘ)p?Ez|,_#'jҼ &_\BbP}r<Εry)9>'ڝ)sX\s21&4k0g0Yϳɕ<@c#ͣu ȁys476l3u`q$y (9\Xd_G᩼,Scȃm|C6{!UXΪaw}u[,Kkk(4IʵMUπUhSۮsT_CG#?`f 7r)`:n ζ-x Cs'wblbRbNL{cDhK|Xl&:""΍D'¨LtqQ%X%$ 1FEhDcbP|'q)1<xO8x5vۈFqT !qnFS:8lsc<k&%O1&za}}tQ;m{Aեnæ{ĩq%q`(?ubK bUR&[ǡ!KɝxU[D.erFvu(sK8&#ɟSØCLޘ=ʋ)0=OˋqѦmy SL q%YۗB|eۺP!W=;wk@oWXF =<׬DT*NOJ(4PȫNە,3sCܗ p[2āq ):2>"Nũ}[obXL-@ѭXŦ[PYC]Vm:9q'kz֤&Y*ouM(?St)FP,W4)~݊)~,/S|_)ފwĽqG|MZWJ|[t.vbS13(bT< 57#sWj\_̏8(gI:cN(j|kߙ|cqaFnOV)_$?Eۍ6GЬ'wZMl#K7򠼐6ZBiTnȎye@IβA~E ,Mqy6 ]iնw9w g-)e\JN&ssurV`{r\~3/) ?'䩹/ s+|&vݫApU#Ӣ_!qL-4x;ɈƏ7܇Z~F3YF]ۙ]nFT4,nAqa %X^CaaK/\ҏꏯ]d suYp {«W'>_b+ @̏qMhf6hUѽ6kHK"wbM_bO2ފWF)qjLw(E=bX5> zF #fߣ5yjLƸ*xX9@Qlec?}b Zm1)z,=tr126zǩ.iq s(6jWilf{Uv[Cyi(gkԤ@5ʿ P2 ?/!^]2&Y6PWlP9 rHۗ{Oس|!oG݈w19WGIV$;*/ǪyOGȷr缘*;l#pr%B܏2 }٣Z 9-KȉanAf6%&9rt.ɯr\J %gG~E.s92G1WlYl KVo=}5rV37fB.ߨ[+΢j3Uh?D:k?t~5UnӱӴߥnNZpp[8%9oCᵊ{¥_'%X߽xv,S-|ne9+ΛƌMf?L1Y uɗLo&r3hƖ䇧c3o ܢX\%< Ċ1 mk)DhcXsIрRž ;bV44OD?U3mqL$.Q!6hOlcq}c^t V<':&^*(։YDx4[ň|cn &6y31*6+8lj8-1qN\"GsĵqRl=s j8[lP N['YEor5 5&,?rFŋc5y~v_cO'qs;r"O#nV凹q 6sx~@yHbKlg+bX6%F/eبlKc, WU9icf6v!'scgp@.1*{@|9 pg\%O eYKLw!WܜY=g2_IAǓo4;]fA^(ϩLrxPRk?*1)-As|AWǘWfSb$ .hJzl)ߣEF(UQPw|1E#~WnpݛL&[%Wu/dkf'r-91[srL.oʯY$$Mz=ɗsNurj93\򙜖ȧrZvĽUN339OdQd"׆\!@6!m[|@矺naE|ڂN7zc:]: Ovz>YdzX%V<Yk 5l>UQ}(/۷X4,*ͼ )&ť1ŕă{KqalPNc=b(bkLh#c21^!^k~,Wtm/G{*ߖXSVS]U[;cY;c{9S^na8/ogȿyb^MqD5fSNb18VĖQSlKcd0|@ &oE"cy~âް@YSzq uӊECOߋYbF1bai3Řx0~x88ƅFbsX=5XL4c}g '-̘kl-\S1*>1./zϹ7V@{FoEZa*yu<7F}wYy9>֝-νș)$Gg|9,o"I 1gB9=͝3\LyqnȽr 9*"3:jmkwyeXFh^ WŐe.r2hI/Lcop6_s^kgk:oѺO;~2N"-&֚I_#ɞ8OMp.=y ZGwН<荫y3ElTGV G3ڶXV"6A[4E~}}ߵjq,Ǚ؝'/'&Éq;.C: j6?FyXu_:u1lϻa>L ?gܜEP,V D (v:ц%ΨGkJŮ F}m)ѹhM(#qVl (Ήu%֊V-я>ExbZqE,$6щX+pUU4$q3r,G2 NhElcXANS*_)8hC9:ڗCub*D}-2Ѵݧ `g~v+Oߝݳ׆{}Ct%sj/y]sz%ՖzU|o,>X\K^ &/2zg|OvVY`H宥 ҤT*U>rvP]9ʃ1;{RDWx>oL\7qAGF?S )DE)(N.u\4:NW.ڑ/_ؼx]E݅E]ݚ3E[(~,bq1L||RL-(&eCG,e!EhXbC⽘{1MFL̞OD|WL"nqۉ:臖GWki~(>x46Fc׼KN>ɩcɡ]B.G#Cd6n.(9Ȇd(Ql{gr/#Ο()o r0lbh9,м7W͟!w_|&͙Av(gB5n8oWn}[>^Vݳ5B?W]XZ{\$cM(#r!v! rL5`\M y&yiu{ ^5 A>A"CP Z܂TS 2V{IshA bEja-bgJNC^KG|O\OlGѡF8Kę{_WcqS;ZecuU6v subCӎ>˷y|t~:_N&XJjDC#'艍NUqPF̍^ѕbh(v)FhCqGl[:=cX84֍Kk ;FhM+fQFb4n&ZĪ99g|jE/YxW{`6OnWfVZbUWhMB,ZV;q+-xx{V%?ax0n'('Z#OĶ5r؆\95ٜ[17;wg؞ܦ|/˛ωuؑ(6nT6ь8:ck*r)O֠c2BnE `T!t>װ-?NO@yS zVE~PxzkͳDծ߯j<߿ e`Oߚz_!CmZWޫt*?kޭk!OJr!yf6cU{x_Aqӈ3mS\Z/+6O)2Nj u)΁bbͬk_~ wrWA#f9ٌ}nۺ),mD1PAbF'ųb1Ř'2?P| cO &>o12$>Z\@|j^bF̌7Qx:fy [::@tܳXfBlxΫ|, 'Dsoܕ&./f~P]Ƚrpޑ)?(ʏ)ȷ.2e-|<:P>KU6)>ʗ- yzVkE@nUr%XnDFlCx\ix;:{iqqFf'^6Z':.Zc5'Alַ)N\x0,r=q#ƺZv؞;ژl a:\ %w&,oye0cGbX/:S".1V*kQcce$Y??^|ntgoκYd[3e8x:#TuZ'.pb\Q;FOWD?nݻ* U,#/سes_ׂஃ+W@yF}UuykT򊪏rޒF\VJ^|W:8W^4y\6&PĤKqve'b|4x_ߺUK^@8Fdt .Gb rŖXH~T;V B5nЙYU3ѿIb DKQn̯bTRU tam+ ՈIZ*]U+ UI>ecb"ѲFU9Ē>b+*#q8LT TLT+q uGWxP^D;qU=Hljg2۬:6Uؿ_4tgG[{|vykn!;F[CWJ)nݩu=.Ğ]YA1$R̉cbbzqilBK9*ؿ8؄,%D/b)zQb;QkPb qKs=1 ['QN3yId;9o:Kt]m͆Tl57?sل|#nǽ=Tr )]cey\LOFYb%ٓ8x! z9DmEmk&= 1sQPyq0p]osZm{9,巻vt-TՀ~ cj3?T=ݽE?=2o'oB}M}UsPW*l !.Wg᰼<e]F纒C3:19.;Rof=9+|20ʡ僔mJϳّʫeBXNwy˽=_ٸ 墪6 3s7>p=c-3l1 5|_s.,oa䦔'b~5ж+,}B6|\|\|jݜ5rв mAVM@6:ͪY5x^ѿ&Z KmFh`]C“|/j&H<{SXxr_}M5LӉ/afXd.9[*j~DC+C,OXm:E3G@6&jI 3}16u͋P8 =mYDOJmAF[M" >1FqK"Fď1x;12~׉b'1+~G ukpPoY0C+L1p eNG7rCA&tsB^Bޙ##ӹrŜ#)?-dI9|rROyoyc7fٖr]*Cy_S eu&nђwEmLv=}_vPjnX4&ߦܸuߍ/& r2y/p-ު|g_r Ѫ2_NdVJdr :v [|ڙ8܋*_q9۰|3yOq[YX%y# &DHkYhpkU=j)ofNCIl٘OX ,b ǖ((L p-u6i~뚨 zY];kj&iHTo)fsmq=4N%v!fb*8K1؜cѶZ!ȗURK2hR# 0b"1Q0ڬ|`m㈅}:N?_E}`Kt'7~G_*oT޹vo:2);O?#Y^]q CIy+TRokq Ů -R]aY5֫PR\\ICqObbhc:jx=0]ƶ+/ZDZ^1<3q=lH 6U=jVZVcL78/( aqGk^47rSO'Mn}M W/y9#_'Gx;w>[}s #)C ws:C#9Ք3;'թ2GϕU{=-p {NrN ].wvPUWqBP̗K)Q%Ioޣ\YO [P%Jkʻ<&y_=HN&w$݉8pQ$qUݿ3uj\N~Bqd^3n̥Jy̓ڑW{)P.m ~p~єbUmyǛZILN9]?QZ/U0245X`߉EִKß5O j AVP5xKS km^mu0_K R{ܬ>'މNl=4ҎX9vΟ+V%_& E+sDz T^[oT!T֩CPn[ytm-y26W2K8X6@<@c]MLcqNC}u/ug'A)ŊP_u׵+:7桍g= ]ƛu뎧C[4,^8T+(Xx6Ώ)/: ) q@㕢Jh11Q/EBU&3ʟ[Mr.'|VXN&g~x/a;6Ck'zlMynQEK5_UMمr(Նr?ry\ƯHڜۄfEnLOKnIVg_-ÿ&#r'OU"PS-ФJrGm@1E[:iUuVhy^S#Ո6yv/Ogq=bsbk39.'fZSY LU;򟸨&EbId4Z8F6Uj Oĭ-T{,嚾vN_swس[nx-uՖGIqM(ʧ).) % r| cO8V?(,!fM h4b11sN75ù{ ֬ݯR,\cXF.'\;p CP~OZJ}TYPQ-839$W?׽nypEf-hJNqsl;QQQ}c{͠nB(^.:@Eo]q F|YZDu;SLؚۢŮŸbu=7 bdDqV(W=b|L|3G?żoqӈ1=G"q)`B]1Q{LVgqi%i%ph4 7b=}ridTɉ9H*5&ۗ4\9!MVLywYokO˟rCJT^+͕-j0gqMܾ6i zq%P܁r e+ʕ)TZP]5U}UBPFV 4J䂚iUmiMg wxL'J1k`)\GW\'##H{Ylzݵϰ #zyhI$#r 9W liqK~F^;|eUQ9ߚEV"Ǫ臟ir9,ohwU9g9shl]wFI$PhAnEEPXB=k1UGw>gCom7sd͵f[s1G<3030MefHs4@0G c`Vp6*l-A-ڢJ;t3/;g~ ՙ 7,퇜DX X Չ>5&cM.|z ]8\؉8QEqRMtfԡ . 1w5h?q цx/7AپB5Qd ;d 8Ӷ=*G8W8qз}s{Ƴ?=Ur.yWY){RIn@"dr!yQ')Gdr=Mˮъ/Zo16;b)[1նdxZG ~ŽhiYc%!n7 q`>9",57:N:.DX&E{(CA"MGy^X+5Q5nݣKY X]J>+ŶMO/ޱ ܴNY(#RoJX}+BTj-_-W\}/zJ^j~S _l<\wޓB}尿^ȪA];TUwz|:Zy(I)Zwn4 Ner|FlY!r eԎ}eOu5v)[ㆍ~_`lq/}Z,egj/,QW&F%My|C,.)2:31Onăx-3%F1C=a a\[i8b-ltAeM6t0h]0GkMwNr +}i.e$yf|SH98rl3#|K>JvyTSINΠZΣUS}ySu9iwa6ca4bj':N.fs'܀_b4/o7< gxB n~ 51#3<%j4aN'{":`41 gc&ouZjKIæƆK,֑^$0b7<C\<  e%W_W/4h@5Ӆ7?y(qwT[1A%*5F\t!@XX3ϊ1o"ؐ6 6Η =cQmZht1Xɼ58:y^ހv+}x~ /zҍEʏ%QYc fs0ܓ12>K^_6\P?n/_o_˅g`=jK4 M6Új~JC[:zj-Oi-W!zΡ%FRWVSyϔߔ_jWu66k_٫ݸʝG5) }UkSeZYUZQezM_(qCy229qA4׉7vV CbBt?l5y8(vG:k[fRY +``ic`Wfbp~h*zM GޜLG-1ur<44lk)drt7Ӎ&'MֆZߒU˻궪5Xavѻ`eRQaay"9[$TqTMkRMEFե|dZ.DδdBOOi reF7WN>947X "̹vZ]$p>C+dgƆXZ aMc1oחhip~9wPca_T#}iw 5m8h4FbN5d37+c;6/*L1V/@_&uBMsviuXHvQJ{-6ű͓:n"M~;4s -MlbQQ?${jAΙ:Wp!b8r ēqy/9$>fM|O^,,1GlxƱyLlMTTS:7Ole 7+>Z{ snӃYC7b~[ml.{s+jV+fQ%bjD.Ě}ͱ&r!3VIY;N6-wcL=O"Nudc8$ojmb[X3_KX\,laEtV4ZںF)šq0y)yq7I cbC=_Y?ӌxñ<k1CTR׳6Osׯj\3ࡇZcetD3P? n4@ua}Ts9ZٌWZm󽼊>p/1:'v\K]c.eسK٪\+P;(92CjKAmd FnS3omyOMVG|UۧKSm}jO巔KjJbBҺ|P&Q>+ww(_EײqOQ>b0cwLjOL(ލ:q݄)ac,eQkf?DG3E/L5T6H Ah/i>i.fϼ@[,lm6f7Fc=!OZ'W#C>oKg(۫'&t߶׭e}_]ͳ^ӯKo텷ٜ[];ɫۛS#/,6%jEx9y[z ȅ Ջj+]s##Ereɥs|\6=}YyM1\/(a6nbGޑox{7?㮋w|f qA>'oo}|_#?=n9O~~4 1H_¢0ai&b&a9Yc| 9>g3x, L//lr'S|- Bځ Am3 h碵ZiiFC'kuF葷mQ W/b䪖%*FX9‚0/U5^5ѺXXslVyE^g.aa4K}I NrCSedPVl4F.fk(4(C-nGWNko{/}Jm-ʈCG7P=X;8]^e|>l?PzXz.'?J_ʝp- ĀX9Zq-~l`Dﰖ==b߼U'EQǨayfbZ W*-U,c#mӁ<8v"qL$sb b~kcHlJlhM-㍄|F^!8yK}6 h<# @͞Oį~ɫqs̷cl*}4 h:kz 7-z45>OzÜqgT@.U;܉8 /lg#‸7#%ceʘ-vX1^˱PCY2Ӯz/X?5v3Z`je%jj)e7ٳˣdc6l^+3⃺ [wb\AAWPHl!ܽ !AW+f I)jt}auU1wV\?XrX,ͻHKaMsh27b`&$cQ7Ywԛw릘4P7Ǎuzs Xǂӵżl9\5Gk5Y;_Kϵ*Xh~~Yg YdEAc&⟀*ԲB+3PZZMm-5Y M .^5 9S>zD-+ZZ?VVϧuLlka˼#c ې fGG' xlkcEvֲVklMlokrʧ5x AF_j&5AAstB*moA{i Y5kc~hUSƂ <;/dƌy{ٍ~i~IǍ3}Nht4mL뿁MCuO,T;Ts$7Oe>O\}3#b^mgsc؈I90Nl&5QvZZC䫴|q^nw.ή]ۚ2j#ʟ)JRQ> t,0ʷb L)ߗ') oy.~ ~Ľ15ZIL OUbh|d$>p{A\/v,n[t4\[ 4d|ߚO}d7k6Ium^@NTgozaWZOx, y^hE΍&oٷdS3猣I/0[+P\64NN:Qrk&dCJo,Ɉ|\|C'ݼ*e'3vەM^u_k-D+,iyi>_5vQ.LH}˨=5,@oBW.t×'ϒ0%vyȳcۼ8-w&+W|:EJuQnEEo Bo 7v,+?% dž&??io zjo,FZ6-m&c|Ωx\S1<05n7kbYrFH @?kМ\fPkhh-$RK}Q1* Z -Zjm-46k:99J'LDm1Res UjA#G!_2:60 L3Fۥ!.}Az84~<zvI>ũ.zin+qO;S]WOMjcFBTo:K2^gyj/Sņ1?c췫 u;y|q/յ˩͹+r.ٽ\DMb7lSvȅXi9;!bSZ߉c5&1K'SySc%c by;Wc-ZKoDC`} nϗɫ!W}lm;U?#,j2K/|O/ěciNh+!y'hy^ӿ~ ׯ@'7ht4F_4 sCwMBDTWAPͷe/yU\}GLC]'lW-Rv/O-fо|wyqp(.!֭Wejy e*U>e]Fy|M7Z)O4+'>RDMĔx7ĻǏsl|'\>b;;2!50dm0 _d 7MS~o FiHsR=4q-Ȼ]jKr%{<ˠỹ-O^yvѕ/7"i,zK.A~A Q{q&,K~'%ߴ9 ׍.9[e/"sJx8ܰW{naALvl:ѼXSoOc#N9|MїRbsE: Ӝ,,@Kj *yaX) VXk= W7īpc=1S6lӆ ~# ?)Tиwkb%nXʑ ٷ3w+qC?mƎbLe ZRk6T3~.';K;?ud/ӕڏ\EԏmZJvʕzrٳG%#Z6ߑʀ@51.ʩ8~>KG]b9cXX?V^G>C,ﻸhOhAޞs8a l>V0=,Do>V7c@{20l{5os5ɚ}[F~ٰ[@Aa,rz;۟l ='_Ľ?6մTд͂~mP^ {7=K.PW]yw+$Ws@R%z@,?9ra1آ,{Pv+TIٱl ˪P[4.66<,>-ncA=CT攵(kPyiIm23T6|U<Đ23oqxx2J|JCb{bD ό#>UW[Y+Zˍh)79X>]do}S'>'ȇ,#-dJS!o6Ѝl%6ftd<&jJ4q,Rdɇkh5ձ34и+f^ #E2BÕ%[Y2Wɇm"|L{h".Usfg>白WO{z/VtaxmV~OX=iy%T?Q>\AYXHu0& Щ;)d"9ny"sc b}A|q$mG#q6!O7 b[?Re/3 ݽc$OĜLA?6k_7=~1)sqG/@0l~3M 3$31!09x~3hSɚ SUfbI͓نF3(_C$=EJԴ.o6ZijNAQMG]ܪEO0@a%\cY+Y9V% \AulElU`t,\>N~jͶ3mEdD| ш[ a#{4Q}ǽT/74MѴ=#ָymGv[ُ/jO;%kވTq_a,ex2&?5ok:˯2gI:=0|Z6(S,+zYF.^Z䥔5;kbKL.V$~[6)E8X.&ʻ󃸂X+a-^OUOtՙ|8עO7)E(lˑdlN.3s#o-rxN̡YejpNZl}+~u?~IꟍװM΀%MgC}~o7}ZѪGLTe܄9 A8rlĬ)~Om@eP(S'k?n'nљhaP!Mx-yWy#,o:4 KG>&p3r]ϓc䈼 rct]MXw:!Z|&?;I7|#HE;CXkZvcmP'GՋFn#zϒs` G^ˆ|JZ/N:犱'6(&2VEp%#ְf,KO^C,iS8 mBgxyz7n ;_DO ttc翶ѝb54#%&'LO~hب3:Ӭ{81y}4u,$rs@+䨼#\|+6p Tޝglgf7T+1F[0ꀩ> ҄HFɡ'f`Qb1Fo~4)^'2hnӌ%y|~ݵy6T2y>QK?Rؗ/-Qȗщ::Pl*VEbr>BL>o"j/4 jޞ4{T\$gB9LN,9j!GPͩ!TUrbyzOTS'!w?@S]ɪr۲u@W ^ /'u`=pi: }|g}eLy Ǫy=J^SsK,W Pß9Nq*1)FSq(qEytj/>&ֵ&u6iJYg6l ЌSkQFG(gk}ZۼL6|^{2*éʗ&QTޤ|;BYX>֏ky X|{bg[skn;ɃYq~2^LֻtXXxуC~Ҡ dO._cYop9U#jP(r!ۢ#krWr=Odwr\EK᚜ISTUSv$"_NJ qn3%;717Dvhcha aX<'E44{ynD3's&b91Z6͢ݺYDiE#4 U3knC最 'ZkZ7S}W'"ڛqytECh"&{e֚X!j+Iu'O5,N젦--v޶=mæF_b}O 1XV-:k-^/6sg_>7ħď٣Lg.y=?8qQzibIcX\@P=0Y ^N)˼7Rs%VEX$ke}ڸ{KAcA^nν暝sG|3е|+PWUR6Qޔ^؎:ߌ(T2ߖK;=1 jc Hi:Xt1#!a6!H+4ԲFg1CO&.7Tͪ˩ZTݪTUTSuTU}PuVCժS=폛>"Z?__`=<4 4= Ӛ=~pӋP=Uo&͉U6rͼ:gUஆ'Mt3E9+fdJ?P(7FjǵZk]xy ~4Yg{jL8pjަ֣ }KmNv(mj?Rn+gg.˅{e"嘘U^UފqĔ#9/yH\dl+*hs]ɧ~x:'?:@|dԹ7+n1M 5Y'lfX͎1} ZII@VX-h4W;j[iZC,M%/K:zx`1Mz'h/df[ gb;`]Mv&6Uƶ6 JP~-0Iqy#ٱn_\l=c ';!1y3װ ƴ76#Lh}J[1ogH7egJ]<ϰN{rnj|jp~$ܜ<&60ϗ ^|7{x%mOhE^cM#z,$g]NÁos~{ՠgs*}̽k.[P]hG}d(=J$z1H,O8^erX!vu*ʑLDl#glh1)mNыXZ ';)!W#f\y!Uj%+TT=TèV1z1[@5z UOޫ@ޔ39]Wܲ76W4K4?.%~ `<8f׿֯?X;ljA&Pt4=TM{B?zZMC[ɵ<b3Vϫ{tЂ8rÅo9rP3vEimQj4m\΃ڜr0<8[f0{;cvULj}j_׾6ZMm` }U|][e,efSϔ(C츛-űs!F71x.0/:&ubc*0c7}'&/(#ϲ}]]ܓ,gKT/|8u~Rݟe7rPYM~Gq&[y2\; k#&N7}B痺oҴ =_lov=4>-4jm["n7.EXz,Vq~ߒ+aFGϹDK`o:f5 tVgMZMaBD#iS+cx8fuX+;ƝN5A^*z9K6&K9;r'_w[2n87ԟ?!}>Z?f[xX^-y>;P&j$9A{QnhPCJ>xȹ8vuE~KvZ 9.W0)_8Ӻy `|dNސ `ə_~?gƷgm 1NXŷx(L0$#0T0܌Qfڏ"4Y<,+fs|o55ۅf=h,&&i o#j,O'=xhnZ`Q^џxIKgYLNG?O\u">;~_'lTˡئaP?~6TԗjW=r0ǽx5{-%OL1'fSʱ1ڍ Z6lPjs_鍸tЫ}zZOj fõW&)S22|O}cʧe,ZFcGF }x*>ƃw;͝M4(>K{?M>X7AWso&՝T&Nޝw嗹՝Ջ%ofGCrr`^c.o4ߪy 9!;|;N&gekȮsCNe{yS;C4-V߮ 5_I?[鋺޺X8Z`9fcb?[b|bX=8Gv»:=hJe5$Ū841mc:~>m\Q_wȃyvrU=tYW-6+\ѷ[NXJRu@\M3( נِ\^PLg'Γ148|y*q]Ȼ |+)+< ن/c|-fzxL wd?C+>A[Cs?hm!4&csJ(ӵ1EĐD͓*s5@Tkh_\It6?jga Og̉ǿIXEg=&:/1M13zmq,ay4!VFehP'b%^ƣ%FKlL$69TJpZc1}ȴ7Zvr~G2vĴOJgPGă4א=єTGPzv6Ws%gugg0lfeUG5ώ"FMM h=]/u ORTe`=Q M777#vjPҜܻ^y9\-CpgiX%/q:N J8ǹ51;Pf~xԚ9á^"x7~o.w7.k=sjS[[Kjڑe8eRUjJBXZ^-)c`x)^#^X3zm@|x"q\ChkFandOg8 w#LNy"yO~gq=#ͯ5S|깜NTKUTs}=r U\@5,Eǫ-GuuNYA;t_}s贾et>tr#-nC?*Ė 21~>%ƚq?Qy0~ ,zkG>CsIuw}&i5 մjl~qW~S8/P_:9}v3Z_?T?SD" ע/ oFʮAnXJ~ g_g7MW;@]9P] =@z?:֏)1n9 1'rqě9G~x}yͮ>kԎwqAj;W{>.ViA|&3}} X:c١G~ME̊1\$;Gxbϗ:_oKFs]Ay޹\NcMx<;Z7Vtoofz&\{F?wwis+h?`Ffao] l=4Ok| u,J.B?FKt&jB[vfcQF/m",An͏ՠJ͔iX SV.e&h$TeOM]gc63z*aLvIofҏ3s\m'Q#ɔ*eCJ#ĴV"F"!#Rvn #ѕ8.:ĞZR*fL|\bd|G|O64Y;ަƫR"~׸K>3gZ_{䡖"6XkCQď^.ʝ13=y_,no#6w|HLi zeoC 'k,;kO{.#]}ыj&8<#kCRրrZ>5їWN9qo9t 1)^4~"x,aV֝ղ@Pujjרއzj;57׻Ņ~ѩv3;QT QCՕjfwTMc&6!'7O!?8iA }UkLbƿKG_f80%8jwV/CAT4] G.E!!/ʿ@㪽p]vOD65)N'.)123,GP)Ǔnj3P[v<Զ+=\t-ï~jMZT{6Z\2lUjoC-BmMH*/W)Fr?حٶsNlH,kRW5yCY~M5%;|wIMTVC[)/>UQKU7jd~ת>ytsq{wbvg/tuCoW}=թue\AYlKY?e?=ʎV1cݬb_g']&r̼XճFX&*[NKʱ1 FK 'eL<G?"cuײ^H=07.ET\5^B,sY!pֈYh\0X*~-E摆:N;e;K[Sa~,K 3uS'_gm,+b2ouv9I=>uߣ%=nluVsOC&$waYC>!7jkr%(yOj^a:fO2|H7ȏ=P#K|F &–aS7#n7b|毕5Ysi,n>4&G#g:kxwC@WAF~,D,4FYL=y˔f 唭􇧴dfޞs[-z~E|91:V2eZBmXz잯PZ2e ؼXиsbru7bN"w^X|S0`]N>S˭b $,I~_C'05|7G8͌Xx}i&+ᚼ\z+q3Kqs=zcm?JN>+kcQ}Hڶ.gwmjז BBiGY< ʭb87fD;bNC!vWlFh14G>Yq9r9[32N͌>L{s3aƁsΟq:͹pL{~3;0w=8(]OwQFq819z1UcVyD9,Gb0e~CR:GUPZD9הX@.RG?,=h.?؂}㛲jb61s%CUhw/Zm< k)EThi0>$ߡk"?ȇhg7V}AyX܂-o44:3x8'7(Q3bs(KTdgZNܘ30dӝͣ72Q׏JX'~?B [k#Mds!òTˆFjs=s筏(\9ؕj_uW6Zj0TQ֠&'xL7&#v#a13axکcq6ږ~WI5T?4>#< u M[@}~qyS}azU@grAuZ%1:y.6eX)1.FSP~%64W j;5W|秖aw\|C#Cuk֩][~p&ʍʆT&(;{e(ex9/>!>??Q%bbטm1('^'C<7cX2CR?|ߙI>Q_.'m`gӲgI>?R}YTߪϩ|Gjuqu0WOR߰zZj1bqCU [m5G-w8~:a/>?57.lKתUga^~{sFuq?`nJxI,brLu=v͛0X\:{g_AL.K.͞3)M[*Cbr eX;CkqkW.Esm[b+[Y~{b=_ZJl,32ɉq񦭴"Z1X+V)Kkk+ WlE.a܄X"֍>zqbP,S%q|⹸+%[[`% ΅rEbh9_]VE+Q8G5Ve`g{kh|%cDA.F?؎]ٯsz7fe=L{F3Qo +978↸2Y~PFvB;o:F}b Yhmmpɴޯ冭ϡY-7m5VoynoAS+Q:{r9j{ z/w},Jm[z{YjSb12-?[(DJ[3q},N nћ{уx-bѹ,J\M\b[b)Q>A1޻њX*4 A̍gby1sbN>ǜ''LlI`JFojaZ(0)Ͼ2ýG@<1Y&8rl(sbr erS|LR6l5]J{}'~d.v:7jQ6/צRۨvsZr~ajCkԮZY S&([0#ޡG?E؛&&GkbZ ox95ombvԥ^_B~ɍr_%e<|)ũρ9|1oɗީ7͝?P]U@ueu5ùET/S[]\5QX߽ %> [w9Cĉla7g3\tr`Խ-Ԉb|7-~zWZwYj?½?1éMݍrX^e3tj'e \velvrIr䏱=( )gcm?'(GX+DLpb/N4q%F7K("sWDفx:ފ%-1#61AN$Yq19ŅkE)ĮĊ6ۑ_V K/cmS10pdC"Nȅ…YMZnӄo qJN{>N#n-Btm6x#'Eilkj93;bf&џXlRD<7WtTY ?@1OV{.s/8}Ō{x&;\ⷕu5qb.7P<ő7=+(PEEM\iX!FXJOqeNqsL&:hn q[|NŷGIb~ Zmİ5ŴQ!Z͢%U1CRqc4%oY cDF* bFDƜK,{,bKc!O b.9ݼXB%N1+|mJ,,5ߚ;#(_)9ͤ|wN!6?}/^ZIM"gu-v;nRacZ9xUE{ Dh'be~kK|LKkb4Eh:qf t6GBolj86ߊ 7Q >œ|_NCt}ک>d /;C#z^_pu>c0mk`S)PNڄ<ܻ6+)^ [^o$lMnUȅ6XLS&DOS`pSC&NeO5!TT:>AFU~}C/[ϑ0x𿃺kn> {BuP;TEP^S>k"9<k<כe8p1%X?8+>ǢЁJ8*;?̇|GۯPSs+˩Sk1JKTfVFbd+n#/{1qqU3"hH,a%Fp;]t;ZWpqr<Ư;&X_5GEq 2`wbz!1ʁDX,|0bі@t12ʤbN1}31#YX(6D|"bee9X\+sbfbQYuEQ-VTbkM4hH4MXȧ)}Q)>W1 >q$9nQDXEQǕg:b]\>޶>.Q|ϱmK/+m㴨b>v't9XWG-1oZm='+L~bYǭȏ / ͛ۚ OrS) ֠N1ۚðDmc9*'OـK.[䥱ŨJ ׶7o}C3i{?Ϋ?7q?/`/f15F{gtcA~#:Egz^m>~奍vk?;R;ԸIQ}F)G8y$!K227&e7;s+[#9IsmX#0tK}AC 꼜(_T݌l1#wݎkq뿀0x&@_CAPX^\}~]n{qv<)wåz?q1&>!ā1)FquW]cF|d+}_TP (>kb ̮ ʋ+ϋYs5ĥqM "E]4"x1w V+ qB^% I(|+g{Ay]|lOSS-ze9lF^\Iu}9q;9T.*E#7ڸbY<%?9?hFga.u'P~OJMe#2ȶ f5fլ#qw!P SCы8qq:'\}s9/>yꓟ?/4nLN$yٿ]sŦeqs389{8l던L|DqM6%.k}"$.f1 bE [ĊXgj! y8,Lv}t'TqglEL9C%vhݬõGJ[J~kVN!5<7ef ͮAu;AuPR= US U^<&dI~[LC=O|Gڗȗ1 ét+)U|*UjzlY ޾F<ev Sb8md,T "o`~$7sɱ!|1?As9r<8|ܣէs6rdِՇʯY>Z>Dͫה]LTr5U:x1THuvniۖ7ܽ~;|rـ5G50Z/Qrgy-)ߤ8b0q}m\Xkzv# .tFO?[S>w2;'jM*P:[G4ITZA?!Zq(K!w#Q<\&Z#"!hۖiOqh10vNVVTlDrҁ;no\a9.57`uNƗ]ՑVv$61NOO+q޺sGE{N'zǘ3fjG`U9.Z9 b|qXD,  c1Rq.N?4&1O#bYT]ܑ(i1qz=ˊ.n"~]xؔ(.Ea'n?Cp]Eq_MZ#u"(MO эqvOhI/Gc}|"ql˵cr]XHtrm~G+b*e|TL&6u9sbE]X?ҕbI]Ü5.)/pvn:m4PK0I>o U*x=&1.ފhϐy9D3Oĉ|O^m m6ג(gq}0Z߼|ǜLrs9h|B~d:bENM-)f&o#?):.8+FVv]3i}n[,VK]MՔ-C@qJR.PACjQ%LMy7(x]PyY~5o^_@^Ev&dX[d>+WȇXjU8PzȄ裋x29"9 b&11qN:czűF쩝jbN.g mWgǠwB܂کQboby16>F]Q4I>#Zeq++Qfq]q7Q7:b?c*ZaۛNcqc|-f9xu1WkgOl퉗bvء8hJ^֭꨺ڣz-UP^ ysc=mtb|7Ic_ĥT+\EeC=ҹx |=od]y}Z⟕o+`Jsq_eqCG|T *fP\],-P/,fR̋W)/ˉOIlˢ)'1x7g?:׵1Hbtwvvs(ƞ!)?C9rEO7YQZ}܉jYIr@9/VRݨJe#NW_ +;i[yʿ龅cáT'Ի5̠)SܼXEE~{QUK=^3r37iH^FƻNE781HD?gMj7r;bѹ(bQ(&RNmh_:igN}m1z鎮מ=u|(18F 3bx;`Xe Ŷb%Q%~ b>1؜M3cP)] o>M :ױ-4kGa0ю677#b88&>q+oє83G'a?ސ[Y/tcXdn4fc(1,$C<_,;OriCg[lIna蠳< 9:yH$mr#BrQޟ8F=u,?LJƩh'+ Uiy|ipM;s=m;h~doǔ ]#:8HkcmN(9| _ C0K{ߢŵvAΡ6O1SåM|6;^! NVH|g)j)Ԧ7kk|}'aZQY͓%ڿGrNkZAvϽȍr`De?$w̳]yq{qTJNϋxgxS^X'X-jAPygP\]fk#!?S~ިn-Tgm 2(w֒{/yTѯnyglm^\ܬqqQyLclSC1*{X~Au7[u/XuŴe?#6AW1RRV,P|S\YH1R EѶ؃WL.)>x86n .b7bX}c,q]cc8=/Az?*Kd+@<|.ϣߕ%竧_P|uqՉW'Sr\=txſsTʇ)ߧ7T/'5˶+SwI{Cʆ5wToES1|6#wE!gB ci).V'Q1|hL,&1r/b=1-w&Qёjc)P^JqX-( [)~J1F!ek:_ŏs-R7t'#g͜r :+Sȧ-ERg!Wďs رr<|*[PL(cIBD'gb;M DO{Bsh~l*-$rDq+q6A-u"[jsPJlֹ+~Z`<>|~M~hDJ 27T4Nhi&я蕯SLFRk q<ĦLjgcux ǶxDǸ{D[lJ1+d x!Ib"*)D"%*64I,7MخvN4ʏb'4t@E퉌'b-w^-,74|`ncYDgOKgzŗ1XgX>fy%ފa11*ȏ>>!U_s/0)ȿǹ)$E31օ8&;]̋#l_b5@: :FgrBޟ[M[g\4735˯K"8gRQ'esi/R OV<STiI|!]Ж}ڽFwHnAC)gϑZ`^ .w$ɞd`'-6(r8M-2GcG` [Sz# yZܒz dEPh\P}L";j džz{m7'U;\9dg[kTr'? '35?qia`9Z6j˰L>Q{{K|3~ly~:eލ7 !&?jNy9 i[-в/pgFVn<̲Cpq˺ڧz/K-0:X)6 (.nBSq T.. 6<yݞ9]筛3Vj+PPyK_S^t-`VLUS|gǟ+y#ޏ?^5oi]gGN_6OlIVsEnFNy2Er+X4ckDy[b^q$U瓯ğXO|5ՅVG'GI|sޏGeL'S >\(Q@Q,r :`_=ors1S]~><;`H׎v_6ҚH,(ElDnJqHqX9\ߐD@-ى!{\GEPKф<8Dd/+V̠xb\qؓ_lފѓ tq8)埳ų%X,]Ȗf ̟O5y1G{>/3LBa\@4@CtJ;l]ĶvcDǞiW>L G6-5IdK=,{qyhKx"x{<gx0cyjliVہ|֦q)qSL㽅ׇF8 !&~S;m|bm1+-WlN!vŋG"@z _J~oDKsMS:Z_g*y?-w)oPqq/u!oț 3[znO hŹIlM}03T.JNc`CsU ,%F>yzaʗ=S݅)O$qjUsWZ,mMil|]cvwNnԚʣ۟(Ƀ-y8crL> ,VѵbaўxJ]qS|ME\T\H\_l?&x!qoD|7`pǡn{?L'ouph]lS0S94[S kʧ(-ET^]CRcYJ9AMNUT?-kJ n㦳.~\舯ܖ|ruPCuxSCɡڙ-գ)oz'f5r* )-O>?g@>-w.9/MwPz4L1Qqb D;Yq²b"hJLƁXc<(|UTb 9<|/E[l-( ;T"Q@ xm[b)%gp&Ýr;_>`Ɠ'3-7]t(a}Τ#:8*1E qTq{nDh9q4 cJeEwsc{](~{82h=DO(ʯ'.jxF2a)9K# ]O+89Y8?~D`T~AoWWcW6|>!Wi,T8Ǿ6>p|eXcZ# tɚ4m =tj4zcK=lJS_X3?i3l=/yΈ\7O4ݴ m4ײ8kI|uyw-lKdjaލ9 oڿ0.G%| >6 s{ts\s^Hޙ-1!#:9?f+Ҝ>A.Ir9~XI P< s:fr)ynqqRk`Ms69Ts I~i?TSYS*yD)8>mkֺՍt뻭x-iWCifg閧埳y ytv;qƐ;g.V"bKśd7M45 ^~liykR@\S-CF< { G߼Jf>v-)u3Օ`E)VFMZ+}ZZbtr0y"u\>?<}101TPD#A+4SсhN䗚4K+o VWC땪/LMKE4%&КF5ګkRUsb*,QzmC`?\?4_%Vn ӠzH݋P>R (,/< ʩ y57x+`Ϲ k qY3x0).k(-E s,SҽycCʕT:.>.+#)gM(^)(Sisi⭸%zIV<ˍqN" _[ >/ tpx^!{#'?f;G<|R^HTT-Q}ܱQwt-PkǵWc]oJSwtMUDFju(GPU;)S7e/+ʩ<4id<(yv!we4.pw.o[1S bl2b'bb:kťE%BL ǒE.=cJ,"Vū֐#cZQkєf[wf`ڛ~1fo=):SDGlB6 :A`m{پ́#+ێ~y|}ކ)=m]&(ޡhzM0bj5=Ůqm4&)bcrk#e$Ā1byLiO_4 (NskO( $z6Ag-uD+ ppōϬWG^f~@,.>x,(L9B_110R.u A8>prQ^CCj#M_ ;98.Gg>}ڝm؅|އik_9-EwCb 3FCscVQ*4ʧxC|Ոx諹w1gD$_!?S/}=/wiwo[zz-8{aoe=媳;?q)>jyeٛnq@0O x}>c~Qfۙk쟳ədT]˕X\Bސw5m)ʆ+Ĉ'zʝĔ9FA1 x&qts龎C16W)i ?P-ؘ65 mٗQb=7rMl฽vphs|cy0@>?X9DT [?9_&fR7e3rl-s]'6*Ώhdf18bS*ţ'?bثXKlsķ^/}47D|Bm\Q^VUG[b! sƯ"o5Zg%UvH]&Gc99֪5{逵lؗٹyj Evז/v*y.ηuo>7eA8vǭVL+A\ko|׋䡱{>^nMũyu>Cl޴9W6C|tӗl]r*-Q/e_HO,2PglU6#5@7'lu2o$wuof7rvmֆ|xbkSs\_lV9KT1 /Մ7RLcr,P;h"6k?oֿ+gn[G=T~m5KC(o~ Ry?ȳsh^inG\%P|ı[їbb0?+A做ӿ;xsSO?z/~W@ѫXUlOeE1Ҟe1̢{7Œ,1M16n(wĉ:ZkbLL!Fs߹ !q.XkksɿxP7E~mPe3ʽ'W)/yT.,ZTo*+T*w.jTw^^ϪUOntx˞F9wЧ[:nԵ:]kSn8r0mT/ .w<4|)%rlms|>&/Mfi^6q .wbst&_uhs0|k!/X}zG`B s/NVTK\|ͰXhwFsؚ 6lbŽ6D+bEL3X'$bt|ӉI>31lC,$(QmٮkE,P gw+Otܡ|IF0I+]Ǘ'ƌ&Mn!wct)2W{h}(ɫb5o1-w(csɵgcbX{hlOrw]ɆǧD{ Ny\chEtt&۔(Xs"'_R~hcDOĩ3 1Ga-ʈiZ~MSDlR$MAldT9nغ]m6_uMm6ڰ7~g9A{nyyG>(w柳-y^!vNݗo#3MiP'_X:uE DnSDXE>iS1ۭ2f RpU9`.k5^ U4vNڣu!V6;Ummu֏8f9 }zMccrj6!:;Zj#h +꿯#h/bƛou~g0yr47HC ^˯I_*?$_zlkcWx?F59px MG7+XfraуM$o{_/\<|-7ںr(nJ܊rOv%˘F W w?ΎTlg3{ [>ks^&w.9&(!ق'Voyr<#Vj9Ij% -ogGBro:ws)6Vyilx6ѯkHDu[P.zjՓkrG(P^]n?lQ]B<.AecO.^$f)]쇝'aYIlar&a,k 57褵.7 yA-NyF6eM%ćD';:y=1+~bd!q@&_Ƙmbr,LKȥqK 'kVx÷jc]m gZXOYV1Ab#5:q4G.~Ѣm֟Z1OȇOj܊)cqML t ~Ks%u*Ԏr.zS|Hqz -#ɵ2ͣinB16*q/6٫σ-V͈f5JAQ@ǼBIbQj jZX.]4'cKK<b {e_/F'*O-GXl34NyԐ<<4DmW~xˏ6m;B[ o[tnsE9dWIngF~HY欼 h'.ɚ/u/qn$Χs6dr rrmDm 5.@X}t(c] $6U2ט&f[ySg!W_uu5" @hn\ޱȇ{b'ca#-EZ ZkzJα}}R63mkMCwj[>]*^-̫5Ab(l#x,iaawV"ID>[_x#G!&p5-L$f j.mVo.&ҷx[3'މ3CQ1,މo?+Qqv}B[`IQ8&wc]@Ny94[O$^O~LM!o|9Hn::(HTq[Ϋ"elskcmu=vݲhޛ7ݩ3ޘv}%P,DsR:k2'eRF3*g;4}113Mcv71->rc=V-6&{Ԃˢٞ5Z-qhvՏhmSԸ[kXK,rbQ,gDbv׌Db#FĜɩ9-ǚ;a 9Am@4'jjѮ8萣3t-~=rd!zGDx7Cܕ2u5DoM1:)_&2r R :ѕx//ǰYnU;?)Clt'<s;q*wq2Q=x#O$3#|126:5 jzUĊ|1%cY+}V`&⒜Z2bsbc;4%טc)p^CSޅg{# ӻcoRF&^QCTY? mdW}}ڲ2(K@ziD]z:y4֮s9y-X%s/uWF88b %Q}.T.,ß=s{]#Z} TZ5xʒʺWTF+mV&è>V]Z;{qvP|/_F /}^bMOScc/=/ C9\cю=XY[;M5Ao"-gn ov{ZۣdRKLzaihF c}K~ʉ\86rr=tE=51sbK.Rm46-$G^7KbB9Dcr*B#4&QUXMb=yޱ8)W8Ӯ9,\brpL[9:|er řaN00Ǝh|S}C4un<[t#&ϕcr;!1>mqylCT#ٚQ1&c4{1KXo 3%##֕i:%W;jx;thחZm +&4:<EfV([%O#//!77`KɓsN&]ywy,n&JGZ۞QT&m`sf4 1'kzkFSfcP^@=Xݍi( Ѓ,(t9eo ϭ!U CA܅못v {U׀|Xh=>C K\Q\B:MӅ#i%'d}Ngv T.:Be~=~h]BvBY%- Y?*9d+egϐ}}-"{1-{FJ6:2C>FgFM{tN:"{詣k&<'։@Lq"Y D<./ηؒj?>^yOV$nb$]jP|MIA>8Ut$g9UƤuM/$ꈙwa1Ĺq qiodIGkhF?DkR l8ƪ3 f8njt?Q $m,j[T+>(rڪCeOovxAeP}y$T!0?yqm@\ qIݝ0K].K2mJ_vTȚVem;MK~ŕ?46K+;4:TީT|*d7fw>ȆHϧ#Hw R46-#Oݟn#]~~C0f oxh:63b~w[obywy(l=_iW_˷Dn7N>?Pxj{5<ǍONͼi]ߒ>oWNz?EDqq/}bAV%5l``8569m 8v-*=1{45t qn<cґĕqmMN&ވRgҽүHUzx'uHsHkQq ~}}j i:.T%4obQT8[DWoJ| qlx!G[i)j"j0Z9)6"zT }5bW-|mme\1ǸM633lG*{z&޷WgXj6fh2sUT-] ;I{WֵjZ;Yv8(`t4ntT:tC:ݣ8$5[HҺIf R!)m^nJ3ПiҮ_Ypg5xt2LtVk(lE%^ߕҠ5Ӿq;Vg|1 ꪙ1ghӯӥx4'6YC5EAqT."+E=gP$J"ij.޲yd6WQ] o!Cl_s80"Fga-O:ݛ'6N!~Me?SigtS3IvHƐN0%5&>&}O.Mqv},4O[|3Ab{]0b ;?|~{"^UT?[Q}:m =I4_wʟ#^Yҫ#:]T Qݙ<|_~Iu.J^(SO{w$x+:FX'6{GvmK19}s2 _g"F 4c1B0K]IGe&LUDRVi:i鈮z.._避/`~XjV%XF ֍GfkCti 0XIh>P$f󍏡8'p;H%qiR:ֻx:OqKleqj 6&ӣMn_~Mj97GLrߐ#7f6оCsF[n:h{hdqnuwکDGL NƱ87x4*B\EA~M|Ic|g bqj?U=p_*`HbnO!pYt:c wqFl/ 1t|$IxX5>.p __# QbF 5OQ曈%_(OLEfic^[-?*hu);c iSCfvivt:9UtIzċ~Ӫ'T 0m.#eڧ&R['dk6%m@#ERii"jI ${Ga2a#.VxS4[ҕ@t%^T\b<;$$#F?#4JKГw}<{K\cǛԛsk $[]_$ *t/3d(ëg _*7u Oyp Pݯ:U3 ?:+廛K</? C;K[R]I:)m%;;1@r6d{erK|j8oսm Ök!{?);Ĭ?5Ym6c6&IZx6lT(I%tF4;EƦo&k݁3m&ַPUx 9>!C0XJ~v~j||ގ տS:''o#g;C56Ⱥӷ=v(6}*&h^|zz%͛_Dr^@,91x*?_~9y8<"? [LğHb;X>q>qP\z~9<U_7[LxSef YBKubqT&Y1q6$9*UIڨ$uMԞjN誧襏X9I H`PZ@boCxk-kb8ziô>46#ƥ&XhfiOҡNgD{x3B /+i4ĵv$uHZNңi8Lҥ- HoSt]GKԤb':Lut:X[p>#H*tS>8bp"w/0Qdzoޤ݊hLq bWўS=g;ƳqٳmHwVbg }ۛ;fCν14ڹg| pZdbx#K FtBGklj'6O=U_t6 A|db|E?p=E|i1\yebcZHL,]ϿB3_CMˀE kzʹ[ lnTxle7vbǧ04ҳڤH靴V'VJIV'd[ek'mCڥB/d۔uIۑ)!GndWRҟ_=ٵXN΍e|x遥B\M{"=\~^򇈇n[IRtT с/^!NL"pqIkኊbc671ctx#bQx0Кx_O~VEq$vX-W.AWg?\ fI~Rm[W߃-!1?-!W8'ncX8tO _CDExi4T}*A}^ gg7<:hoJsGMgP݃T)>PgSw#"?1^w!/"Gc?oičYt%FDmlc?. ݀ \c߽CS}1H0S1/料yY92__Ғ,)bTŨMeUIZ\+ $YjI\nڣ:g<zc%O<`p 1ZZֵ>ar(6'>MՓv$$a04P!>8ZtCcqѾJk8!IHmn KkOIGaUKB&u'rp:W.G~HN"ͷ1]ﴯB_I v×eJڪ *vda=, % V4⭊$\iBfб'ڒU|EdT|7%]d˽V!vu"qsMO?F1(PN%}^H-+ Nb&q--6TOUbЉGS"kx9^Km0k k!y=$:kkN%aXOl[sL{gvR>)?Ĉؖ|HK7-YuY &*1Rl`lธ8$.q.x=<ap#'FdfyaEΒGШQ5"6Ƣ@C5iMKTKBPye`7XFŌRBQk1x {=EO]u']^X*qdg Xݠ8C8CH=amb#kZ Ik7cCsE5wLgS|v񡙤q1kt2'퇆]@!>3SjԑtL+Uqk\lb iwH[ŋķz}H;h 6O6Ll+ &rtAڌ:~VֲQ1$(U z*@p?heR4)JEV[x[޳%+l/X'~U}feT~qXlv׊,=o+;+O>^&>,$ Fo4!4 /Հǻ{;AoB~d%-0[,12޲`oۊxޱ; tJbO l_ ;xojkʄl qƃYac*VNt֥۳6dgdmt H/YK~T"Oߦ&MwMgg~ 0lm0ܗFxg~(ž]1]īO|d~{̣|bL".; ]T^M~[#G;?%[{)4oOޅ7ږsKZ{PI,͟!?_ƏwkX|tj@ˈ"GqG<u]ÌD39iHlR,X#PUѬZf[b^JzKO 1h AU2^8TJQ)jo]mY1hAutўKWY]ﺒzVXYԇI[~%A{a86hk5ocb5ðUڒz]I?2Cw{-D8^KƙI?[ӻXb{cr>mHǫ8U1Y-}F/f7eYd]I7 oGc,5Hotwo=WV%R|m]tca]|ݍ&c3._'-0=ӻbi&i3c2)GB3Efa:_s.f>E-3sUKMn_LXnFȰF[tYW [_o mC:< ӱV:_I7HzK$JId=i?K T'B=6Şd]΁?5{KW7lȘ|6j^3-]J[$}X~ B[_G!y gxEXlm=Bic*T#12%;F`i٤}u O,6QwE`2f}ORT? :xzj\6|}%-;sVWw_\LnU|!qqkW1{ƕq y48 dۤv}!i]ԍlPe >=myzd'Qy&_9Sl{o [=(lxvGҙd38yi.4!Ց&z.}HtJ g9̙ B{ƛUck5")8.R#%ދcyϓ?-CoT7M|&TW*j* fr~N=C)2:6TW+=>%!؞;O$ /Cbx|"ގU.FX۾XAqqb\774 /ero&(&.D G,Q^ר1Zb+},;-aq-D T_ZVjU Z$T.@%1]QnA'm{ttu- =t׃zG蕶ni?iV%ֈ;U,LcM !>Ҧz:v1/1|9qc[xi vf\Al69@7m5ڄ46¸^Zݬ&βްFJZ-&OUɆb~桿i&VK ~JjDԡ[n>pQNpIi[SjSiVU_!׌%qLjOiŘ|(3}S,27Ycyߙ T "l6fDwr1o|gފ1ݷ|ZRg 7X+{K>w1۷vƞƹ@S͉wXUT\`4b|L+?ZZ%{F77*w$m6&Ƥ|BL.\ulHomjLr47bgf)L438b6S2?sJ?LL&Yl.4KJ4 B?[Bbf 굀~֨QAZsY[ ̳~ckؔ_6+tk&SJBiABvL'ݗvn"!D p\f$ۇ :^XִX7菹W}p{XMf|(eAk!UI8-֠]6s[=á ~;lzRX9ܿ?-37+z,8S$F7M&664x,,qIcPN^nN;5oNI'f5y;/])1p1ض;៯,ߖk#sMp]eSP}: ]BylGÈw'`ͭG./)BӾAalHVKg7 6i2ٱڕCZiAldփllx5@lxZ)ۅts<'HciVBF^K6[^ =QSuލP: n$pALo[S'#7KA&Aul!Y Nգw&˼/|8||BD=q~)+~Lno\wsOK*EB)b`A(Z bĔ4(V'k[z@R׏OkXxkkºrkZl EX3 iV60!u5 YhIX)zY Gl\W=T=0_'U]9~v:֩?ڨMQV-*%( k0~j)iMVżR6K} KtTӺdQ꩐lBLqI B0җXjafu3١}>&ė ;-0t66: 5(-a`oo|>0 g8G$a{m|J#3-|7oE1mI=mm]en 7%MV31> ClcPc۠i&^Ӎe_z&_i5x4Sx,Y/?iiXIDnYf~B\(̴|L/+B`k4#T-|U,IjTHͪeOR˪vJײ?l\H~6.CIW9&OH OI[Ei Ҡ5鱴YvƑ.';4jq_䜗wwӓk]icH}UPi4~?m+dz=l@^xo<#?fͶ){x\3?b0=I韜m7}kRF~ *8xoxB!Z5ӑ)wTH}ӓ` CU1ϥ1>l(Az^m ߕR=P/)TKZg~y?Y-+*# Go [\[P=V7z ġS FG/gu/+-H'헶H;]6H;٥V%9{*esz9߮fW3w~+i@en'/5e=ͥ!{//J-,>%,0>zEwTϫ=Z^6-Sν-=v4]Ou ߒgT/|:}~&?yOE;.> *_=8ΰ5dk }]{Ưg!'g=ս+Pڦ}g|:#aybťKO}IoԌr rB^vMVF^E_^(FbI*X M5WU jK㖨t'JZAZk1SvC :Ž:N5-CY0vSo+''C蠯~|i*G:@+In1jaULC*U0qHY'z')[MwtwKItQk>[kL4@gcPgDduhk@wSF?S5Lo%VöYftgbPiybF_ksEcp1| /KOZy\Q偒4WȺ+b0|(*%j=3qf֤!銞%XݷTgi)=E{o&nTR v;uPR9J٫T.R6EٸUH3PKS%^LcI<"զi*WW|t.8[Y4>L]^h 116BuXϐ/[|/&Gc|Fz^EQqMָ !Gs˂__ڕꦿض3M{y%:D>NE?;ߌ&Oqh̳q~k9!v߹׈'eQ7X3T3lf[X6ҙ)%o}2[nG_DW~H^(+=BP~iGc) 2B BB b0[VʲX]!6eK)@LZXr75jkZE[mQ(Ft@DzEgј茮W ==ĒHփJzzIo)zHNՒz:%y&/%|RWD'mt"uRc2ߠb6AEk!?Jm< Td**!j#ޑtJQ PUBⱈ1btfie Zn:b*ie nv>bҴQL(ķqFC1Z .-JI cA̷h0phȷ5k15ƠieyKHaSX+A7E_á8(4[q1#'bewUχ:xz-ʚ;wZ-j+gCvelb f+~l?rõ%%Z^)h!$eE AAHR(^A56-4 H~fEyUBZiV%hQmImu(At}ӯ= Ѿlf@XWQ8 [ֲבԱeH.oAF M`eYDJ`_LvnZ/JZ)-Fչ 6eז o-=ijtljafuxASNEJ mtt[SL8#&bMӬA|gIh YêfMs`s|EbE%cLac7tQdM%Y4L( k.LlL-4u%_RJu[cV|-0[1WK~]XZחR7vÍˀ~uJH#+V4>mN{3ֳ9.I8)2VJ7kIRiYIv?ۂ|KIũe{?ۥ'^[̢ @۠ ])dVֆtt~ElOHR8HۀsĒx—|:"[ K^5w?_wy[>p${d0v2~IpƓA+{ GFC1LqbGgH* U>> fg}֓>%)[C)VO_p* = P]K!/ |'q89ct\<ҩFC9 iM7.IH7f{;TFAZv>\tڟnwlژT[ٹf_gȞfgݩl}%ݕI(n$;.NnzIOPҜzz>!}pc[6CEV@Eٸp6z"&^hgĸoFiYk Z) {66j%k ڦ"z h#/hQ"oZZiʵ|AJ@[Q1;VHZ/ߵ#-K\BJbP-hh,e.D D] 0/s' eoBKrn+Lwh2ܬŃڔ׷myƃѾt9j_T!Q[67 YZVM ^ޮV7j_6SKڤj)5-EUh8TTn%QGTn(Z^5uOSe.-KҢX4ksQl{4ڒ`=/+]]B:P-ƆA\ӈ El1(f5** r3K]4N91ǖm &Z30e:^ĸ['0-1 OqeSmK/}-˸N/_Rj5fY%]ĘKcB3sL|KEя{ޤO ~_/ CE?APÔZ2fQ)AlR>լliS[?OIǹo~:6]E:uLۦvOݴ6yd"KdlwC[QW=a- 95C}_kEVlʻńlƟV %!hM]ʔJ 10Y^Lc|d;gjM8I`;|8VZo+}ZĬL^a-gAyb1摦v*_܏P8ֿ%;gڕ|"ęo2E_=%c/Bv4kxxׇX6zv!`m9M_놭?|AuT>oς81?we,zG!SH{_rڌMw~N&{#-Ae;ނlì<>yo-FDCMSoҷR_H#e_6&puVRS ]Hsk<{I!誵u.L5R|'i_x!'1x?:2ޏs7hE~e<c%7F3^ɻDZ-mwY1?PM󳃪hQ)2ˉ֊I ,iBy)|TXagPQhy`%fV[*3; 3,5WٞiQL^MNxeR¥euJ=/fSe?/2-q~)Sx8i鈩]9K AW$Q34.;>tiLP/Xt,i2lms"bn͟[%_^teNF-l3+ TWxߏA%Q[v,{Y7+jm6U҉?ioitCK0Z^&s - HjWLt//ʨͧPYXT!ۿ-|ibvYwHWxڧpO*GՈyg'U}J P8b|QH Cd$9+C(w~t84e] :r׻sMmo/W* TZ |ȯ(G|CBc21H1 pbb=HH/R{iwCgf4-whn ]γN Slj:lF5Zwm֋UaWl=h.O~.Ae @:rozN-?[.?D19qM&$Igڦ=AdM}5= # %ࢼn|Ko+d=6Fdgf~dfol5iZm0߳YiTڃ !L_o$\f'~g1 k3|gXl-F[ka5ݭkڈx2>w_* hjZYVE+ ci![\ `J]բ:D詓:sE mAZbUK\$_ZVehTJT*C4[^Aȗ ZG(1a=D[bs 8[bK`òAskT&K͆u[FKhR^F O&~{sThT8b2iSzeoqAjP]o57EM'5+ˈJq?YA-'X%a,"efٚCC4#W-giyݗnB@<'ze ,̗DZf IXN bExgXZ%-1t"se{%n &c,뾰]WcfAÆoy˧BN#0 8/N_y|tqiCnKvz:;۝4c.%ֲ4́^k20/2'Sn̕&b>q<-Uӄ[\޺_^_4< ?a`lTfW==o ?/bCLqat]O8.ztWH6/l?@S6wYt[w7+Ǒْ*ec=.͆eg7eo}}~MuH!}Az%MHKHSӋ#ҋiZ46=> JL[`4؏E'kaF0d3aM+ ,:EOLAF.ZY|FLn!Fz|{<{mv}\M= EC^_j /K,&qNCD:Xoe[wY$E}\Aψߙ(]HGx9Iʦ}0V2=M렛yN!i uĪj6heQ! EZzI݈9X rzKƷEnІV;ZPjJ;D QhYe1[!fb(Uߎ%E-q91hq#*%=e&ʼn1h-RN}sP(l8_k")jebA2Xh(nGr-5-+ i, Iߋe%-'4R_NWUD4ꋥ^J b:Hx$X ^+V -2`fW?=2 %`^&u牡1 ԲfE&+妈ٖ.sVZ331wjy|(rb4hϑvEeAYQ-3-/:7}?"!_Ì?7-(?RcI9RIVgizemm6~vj훎%A4ϨKCH,#H5H Wn#hÙus7~RT6Y *՚ѐQ3*,Jd+g:Lͮ7w kuto*lMwC:}oPTȚT~4ڜ5uB=9`pUGwi1e/+}I߅oGq׽ƹ觇<6yeqy8HBhdn#HVmyT kڎC鐴?׬GZM^O1ɰt73* Q՝81^mzqo9qOUmut _"_]N.X]YgF?$!/3sā.#µN*]J=,i ٖ) .TY :gا/O|U-M&fm겙t=M $n"%J;J1in8һM+^1xI'Cht0M:!ׯ0XU|@isJ!׌L3>x,.Cʘblzzʭʼn Wxza"D菿(&Yh=myiиj(tIc>jK F/Ǝ89.O /_y(71φ#]MB#O:H_*|˿0(|e1im0lHc23tL.̺6}}761S똇Z]JB)jɰu-chN2d46h-*RmI|5jZbAYQ!wѲL+LXϚ8(h7h!q8^e{2yJ\45OѸ,(^..-Ѕ~˄B\_Hr%TRQ 4Z}}{ק,*%?1=YE%XXvZN&+,#L*/-y@y2- 6Ro[Er \ubqO2ƼYHX z\1~{w⣴'pS}ïg3X=m%?zϬrXo9{GzF+W FgeKe[qqmlx5~l2ӜAO/(| {'VWeUh:9sO~S\H:$?ʑ7\sɾKW^Ke'H3n$&i\Iq&qB u Ň]Robj1XFw=?+˾RdZWp;N">RL# Gn؄#lziiSW*iF^+Rx$u@'seo)ioYWMB1'nnH/ƛ$K3>^N?O11 x#a&1”M5{acuk{WA ߟg{ )@H HQQDĂ(+*"vP {蝄H{&m~c$ys}zu5f~e][\G2I ]+_|/'Sw]GcqUk_3Y¦[k?m|䭎V6^A;0+-EZm}be!zKS}ZzkoɿYOz|ݚDޒ,v+f[w ÿ>~~rc@ܯé/oBmE2*>U䴼tk|YYk2uȏ̈S) T ,w9vgs~3ԝ]w+Yb\bR1?ޤX7׋ӊ+m㱘C*bV/xXǛȟaN ]톚UbKig֓37x֛ad^k(z;P+<` 87Ay-۹_C>}%o*D$>Gl.ѓR7( '.Lqb/̏+k-Eg^P],Ǜzb\}@/q (v ZNl4,pƧ {-K^X{#--湏zu- o_6w;n[DŽ<7Nޔ[,֑֞7h30:oDE2K,¦Xm#E-AlB]٘|:8Zںҫ^缔p<ծSN_in<\KWE;9?Y9 d6oߩ yX^!x9mS[EDǓCѷ8Y'PW`(KM#EƛFǣxb}<]Lx8;qO8)EKbH,Yx*$Ic :ҜEΉ\yls-#8%!LNk yq<>]~dC//߲-ctx q?%^*75.&.wM8+`03!2="s1bqe7XsgŘ얲 .[g91r[DĆ͹ -m/7kAtE\QnBcQ(GШ1*m"mQV.E%`(*n C)jUhKQQ50=y +t{mMJn̦|l)h~MQ.KӦV_lNU I=%eڇ56TeF-cMn& PrUeU?KMKɦ]tfsPi r@5ZЯêR=*v]u}v&WW*jm诫Jq(c[]r6GDM77|oCDͱ]gq?=6g~[;m߫VUIщ֥=6b~hTPT%EPm%oiVgG{W_g=Gbtbeƻ˚B>ѓߎn>BRT_ǒl8NxaGAѾP ׿QuXu h{P16~̹Tq%DE9X qI䛢|\v(`sYsamG2ӷ|Z\b뷗=nvkM(Z!uAfKY/a3ivk61OL;--t,juW늯M9&aB,Zilz~-7cX i!/۔1/-W88-ȅs+v<3׎h|9Yeh/-7/?4O7Ծx$Զ~ c߁E goŹ9_2U qk\'Nb8?F(v*v%/bIݱŤźb/XbBb1-N+)>bbL'Ew[<[-1-΍O8j>VVJ~Xbz3z~͹h<&uzpMb7;::)6Q?F|> -NɘE1M.hH[~4>0\ϵsB|l}j˨FNˋ&p|K(Lӈ wK/1,_ah#) =buG6^8Z> /OXIq񽜺-0 qJŔkqf,v7SVԢRl]ZKݪ70n!R.1W}%۸!\ᗀ-J9:A˵DG\%6i\o,dԕJBQcEjQQlRk4ˆaj۶g娹&࠹kB&Y l&eUlܮnP45M͵aMm ڪA^o&F~{ ZcmUmrn_=59ϵMfkvo^[}se7[6oچh@Rn9[&m)7o~Rg7q|&m[qKMs4[7 yùEQKlv*|ZTۀna@YK bMĦG?~#veD\NqW&w/_„˫XUWTfA1n,?)b?c [@c!f1Eh_YK (44 7Clع(s~VU.JQ |6b=J^w9rh@cr>EړnG?;[3/6q[L)/ax%ɑX9 Fv1,K],'ډعt^+~~z[9sg)>XL)""+'i%񕸍G[xz7D?bģ wa819].4brE>sZam8}c0 Vy >@/rO\ _ոeZnyNGʋ5/3~ }8ؑoz%HKJw)~7qґ%BV=0Dzl6 yR;t "Zמ ׇ#1(? ʞ\+٘rz[lyg JCl7qqM3M%.6;>I9,4jqe` ZSQ-$Ҧb,|[*ة(WK꼍MJQgYPmPP#:5| ͕+ei('MH[hn6-7բjx=EӦ!2z8lNS>&1oڈ64noKo7u㿞gشb4V tm;zM5qmwM|JjLUf[l۞_}sͦw)5<~_9*jMw^3g~[춵q/'nUE*hMXm kfέA%5]Lآ .&6v%jܰ6*׷>yh* 렳6詏fGCp=co @goQ0}S$zWxu|=^&8b/)Sջ\y_woA1 ńMꮂ[wG`Vs m!:~^;-n_*UqQw(? sf)R-8%wOUke7'h=s:MrbyjMgiس8 \T|[j29wNEGrXYw(^<-鬡etΩX\[/G|+4c}+Վ!h1+&^z܈;cB ;pvǝfz 7)ܘXE~mCL"]Ú?l8o4Ϲn4&,h ׿AEWP;q.&s/6¼0/~.s p="~E?}8 q>uC]be#]\_7ExXA1#)VƌblP8$A\DX㈷Kʏ>DyT%ΏQbG05+!W󶮘E8Za~3,Llq6TrGgtӖcɏ7$80s1eӟ;_wF5\/+LJ:pчc}ёem6qqtzeĉXUlEN8cBX FeKrN :wE&~p>-1yk.&WtrM^-[|86C1{B 1rQ9]=x{:`gaVi`\M/G&_4j|4 &] 9SKfӭ4V0 (qT`n3@X_(MU@ $ӕX)4;TvKg"U.msheۢ0tIuZ+E'*.)}ҡnqjTZ6ֶْlMmѴ(͔Ϧ$2mmݾ1ݖ6rK^|mSw=nZSDUK̉ߞ:65M9ƽj#gsknödžTf||4>%&i|;TMh[~Zt$T"%R3Ҧڀl\i[6 6gl 挔y;5oBUVߪ~Bu*M 20%F.8*t*1>;+.!!%"o%*ZDqq&1Cї8j?I}ÿ= y/_iy׽qc]=ʺ'8E+|էVO7> H28Gqq(8(PSOhUeX]޽z.@AYڧ!>%Ehuqj-S۵رh Pf" EjckX.׵ؾ/c䢼XY9X/bSf?'1Ɗ8LXXțL¬Gȧqu<=AURn@=81Njr>Ky1Գ&䯨\8q-?Qs6c@Sv 5á!V}已'wkC~ w9oωk8#s.14DXGgEC](`/V٘R()>Qe1bZx_/O|/NO3qpFqT;.#$6xxi<43Ǝxᄱ'λui :~W:>IaJnQM-bjWc.y)cF{Aޭ[m'-%k!IJ|\d쌙yp%.v";gC^-\v"r>2sƑ/ũubY^ƯLOߊyq^[b[ag31z,xTbW5L3^W3ыx:'5i r&į͉by&* C\niK$,3XZ@y Xi-jڔZօX&Xdm 'vndZ]$gY;e5:Xk5ѯMv֕KkF Hl֙ZQVT\UQjسr/Jѡ84%V5ڕn~zKFVTh& `D$8ZJmƊeݲ@&->x$I׶lo|&׭.OζE=ZTtTm)w󦀻m_˪1aTK 0nj~}kduo4Es [Xk̀mM P6}g>"MS:)7Se<ܦծv-z+Eľl/m΍غ]Ѽaiju{-@50t^_5htԎ袻诟!aJ>8NF/7W]O. /RbD|>;{ڰ8?P Džxtl=o@i] j#2"ǮUQ1,z+OxGx%8qyV!t41o{i1{s6@xt(qjזC4+o .ȎW>}l Q+#88,va_hWO{UcWNܺuGR7xC1/P*G_{W س88? MLpnBo[Wt(m{[;fbh缨O{H=yޮ-ڒ7 4ukCo"sh>v}'Zj>vMmp'ƙŹ~[Ⲙ7JA (~\oPgV|5ߵϗrGwg68e>Hhjc(OKv?oWǩM87{ -Q{\I!gbTgphv'v@d򥜟@}nyEĄvGCC4-&YʫK@^ovC\i`6:Zlv!e^ǎ&|JSfcqBoz S%SgL^6ۛk Ua.'oQI$ǔ\j&92YsVVT3܌J-B&aUPXUiVU@a*{(]cQ W(6*v))ay2؆ (lX巯|ە>l lj]mZijM)Z^[\l[]˚NMGV1eh[M˚֫>eST@$*ꇪ&"R;U5*]y}rsi9ڠӨUk I-j0綻]e \msyue69hDu)o(noQ6{u7e͵T_G6 FUݢc~6M[keEie]٠v")ma7ѯ][sDVѻ=ʑPu t`̿kvGulbUV'$1`]$undӉ%&򋸋h[ckl)vѝXŁGRGIb=C_;#ɯ-P<\0ս ѦE"|r`[u(5ϥ.~g?(kJ @?UR+kS:biBt,~Dע^~ŋRȂ{?Uvn;huhO뉑9qPX4o^2#-qٸ;OwC#lq?ZV%VZyUG)#$['O#i'n%D,Wt:u=moI_>o-g~7ƻW ȫj!] yh^G1rk󴶅xbPC_}Qz(`X;~2p\13B =#gş}hR$&&8XQe\O$F`/Q{a%ړ MQ|<&pgl=F9Wy]~OsG0(uĦ|Vy{(eܻǘMe=۴#צG47ŵ6N$.8&ո8Işq kWvώƭ|STveGGmf Fm2{ ~ݽGEOMv9!GP{ɧ-ߠ6?ix\@J/iQ^gЉ\ĜO}-m\F3My$qwrW|^w-{\~u!13΍/9%{㈸̿-FSkm%yMazbw|&L-C 3&&ySM2^w5`z̊7Wɷ0.n;Mu71JHde,ci4K%[Ve&aYiClyW@ayB Jļr9Zc5.mQLAjJ/+_^Way:+*5^4'6N[s 1`fa^>Ml'DЦ΍эYܬ*ףJǪTZ袤N5iDrq{*k)ZiUZ1mktU~WW7QzėwzNBFg(]V䚲jF{Vf.h[>6jZiPr7=t@*6]%.n_٪&5FO-J? M9Mῤ9))H9.v5 n6n!vwTuS岳rTh56l^/BA Um6ZWbVg]w_}>{ݨ'8mĥnt*n9DߘAb*2ڄB\L=FqŦvn?}ŧإEP/j3sd[KnT&;"2xI.>l/T~q&Ģ}s͢CeZ~fɝ .':aőDxN14ic0 %[K7⠲țz6 +*+ -ȃ1 罛+> r,yCCtCXeC>هeBjw[̀9MUNr&kw47ۡvVmԾ^ 䔼Ӌ ;"\+eNƞ2xȈ! 6LjBWDgV?lw7~}nl7u/ءp1bfV8bz19~/#cŁѝh]Lx3:iub{ġN2gvt3rhW7L^ QQԁړ}Ֆܔԓd9q)FV[j[CnX7#;he\B쫏p#AcIqZ\$O^>68kF71~c(9 G'U]}Zjz{뻼bo"OxJÇ9Zښ#&dΤ5j(jR2VmP||Ki-J)~A JiC8lG L,Sr*Z̯y,y}.s8yDNγpB\3^hr!zuJ$xK]ɱA7?s,{]zC-1K ;diCVdMYh0[Xlji*&tLWΉx0>.7`^\x30SsaE=n#/W3+Yq\ѲJV6oJQiz`XWi+’JԼ (l6 $T@aKl % lb6Wkp͕Z^i;Uѧ:`=U٠]`6z =n6'>WW~+0P-.8kهh P*z2`˷?ݦF_e@ j(7MŶѣ.Ik Ď6Vy U`zc.iNJnFCmMudF)ynj7T6WoaolҢ ЈpLS&Uc__iD&mg ~(2ZO8j𷊀۠.Bmu@'uDuAOFF0P_b0^3g4`ElvaDR, FgL*R\S3"A+AзXFэIu~PW+5uqn>>Q>ZħA;i'ĮQ&$rP o7U /B)ӑcV1mcJ8xchteN vøX̋IxKttiqM/O?7cN'Ok?ځ= \+c/.}bK`q6O:UN3H891fNyg[aFbbF"n.E̋[)ΎGb )owI|۱ 1Z,pFK̈+q8@mkrl| <9{-UZKyf"? m(ȝNgk.ԙddWEOaʺÉ[ٝ|4ύcx׉q%taqQJ\D|#N(_+dWb<4nqyrnrs`^aR;ؿyWepҺsǁO-'߿+ٷCg}>ױ11W >G8r,fϗTګU?;DrY9d 6Ǒٓ\a 9CYMs9lE~ܒ+I~'JÜ|$ZwMNGAܔ gB5n%kQ.jY}!oh4zcm%#MVj<9߻/dI5z 6ƙe2F|iF4sDN2 L1LLYǧk#̨ KM\9"f;U]eX`}fPf[Tq6aGm ֍V% (ā6U M|Wښ|+cĞ.X!FRXUnb ܫ7n{m Puo5ak ZyycT&7`w[|]iF `]X5UoԔܔ\6~jCsMG)kln+ NMݢe5oY58Դ e\duZW}Ԫ洪.*!rʶi.ZkK'ڣ6:v:u t}uכ#fgl( {Mtw8>z5Ӣ?Ň4mѿ8x%q5vOSϿ?] ߷u;AZbzīzUK|l}˫Wxxbb n1QMD9oLQ R]_rԱhLڷb/Gd%- >Lmu%e}`C}SMk=h.G:z+*^vCqn#'F6\Ct* 9y2oRkn)hѐ9 { ;eaZHbJGKo3mژdj`Xc XXFuM`Bm*&J0'*0MOŅzuF\U١α&TR[mQQ|NCaCQ(kr6IXjS@ac">Rڤ65` 7k*@P͵|]DycI+58x˛m@y:b=qDEIgl׀@l@S"@=nQ8linm׻jQMl.L|= i6 *)7Sq꫆^8lؗXM }j]mm,DmƾzbZUjٮ:9%j:h}U; /k@襓Do]]=VznU~]sv#bj >ty4Fmrq]EaQDW:3n%N>Uӿ{Y#Π(Ccq%İkq 88bo}aX*6]F -vw5 f,6s>@GSsgu,A+1: ,}3\O{ xmx[ /늆<5cnN^ԦlCXRYj箹ː\e"G>okF4+:|,1c^?8.z鄱@Sם7^U+}j>P.Ag<,w3~Wgg-qJ#Dx)Έu=bgo~Gqg<)*č>1XFKE~ōS7%Ng}͵8[EavNco yY󛖓QKwn)ܘ43r ڑյëM#wȯ+27= SڑؗGs,1~y_'5Ŏ1iHOƉ͆yQ"^y+Bw^i}@򟹹8<G+D[}!w;rO%(+vu.CxwN8W 3Q?_)ٮJ 7Vps_SSs!vS3"7ǔkzv spYyslv$ux*78-~E>|" n7[^}+G99l48l(vge fd1Zzllr*֘JT]#jwrixłU%q6ޱ4RĜӭ(7 (6Cp5[mQ5 E]^G]E_eRh6 Zk&[W8LʍuNwuqbe3ؐkɕ͛&P855j'cDgۚ6ؚ\mr[P6fJNq8T &뷱LJjIDATl>7^nM؂%6.є1PɹVi[>GU-I}hSM6RѮطq5Z(uКYGmCUĶuҡ侓xW'侳DVѾj ]c*ڹG_juv60bUQmxDk;`G‰ >q1%lj%?v)>qab /Rt:/q]^l(nl0e24,.6B KVxbjt(Ʊk<RܥVQ'dHH>FsTSj"-$,-K1B|~_eS&7qzH_\zIߏXeÛv=e?~68v)f:f[Lr12|^Lvr\qXaw0!jxHޛ lsc|"O&,ȧVlxQ3bC+A훸c { b,>C_XV7)a'nq)x F֞bx (;ףUm;zV#z]Q?e)yŋmbu:1.ӱ2ZŘ&wGE+;h&Dgkw]?C{;ccp] vC/~{õ'r(.]x"LvV#ɣo62#\'hr2*I̞9̢b|ZJἜ>3.z7kS_Owmh׵ 0fGǏ8`. ^ǵػX r*1r M&lJ+Nmz+B;3=>_EAfx^i)nɶ_nْa`^NL>Gޫ1/s#ȖW'@^햐;3A^([%/?wbGAͱy7qq1nNkaӈv PQ.]MXgZښg>iZ/*:@,-G,@9fѼu"[,63-(GʍB0WV5eSnBI=Z۴Q܎y,r)q^i[PYN.lR[[Qk\5~mME9$ 6aY|J{mlR?:=[Av#hjW'l ~,fP6j ڸ]-'rK%mobYh;J#"ڒk_'H-]rrߪܷijme-D}mtE;=Y,EGb]uZ]uF+ݢ+B7FwEw=ѻl䣿Z`gu=!FvN+cb[3^[7`culk㘘NuzKJPAke@X  ]wjݓ qc)gD |z?2oV܁5c<9_ %JX#x74p?)\˷M~1IAbx0>U|!ݲ8,;gAqtk#G8'2rq.y+q!sw0pq~l3Ԗ7^k_<_^WGNCs=wCđ>:X)x8]K7EdϹ7=Tvxbe\Sx-ŵ_b3mŨ/z{KxF|߼HX@_c{ iZ=gy=ɏ85_$ƒ벋O/"O sr>GN= U䛵[l";jut~׺WGy7:KOw4qHt/yFonz! oW39 =76^3׾;}~⶿k5:]~ɞ뇝때>xpp+PRE,Bv(7ٽdjCp);]m:W4_}ݦ<ݙ>D|hi}-C\e//e;4\WBqy>;Nf=y;ø;C]<%P>JH܁9vD8Y7f[q#JhNjV],m-yhaYDj6Z t[i* !Ym19?XBLD (F+jR biG{j]Ԛzn(G+Gr +EV6n2JPM@1z?oϊ“Մ u/7nK1jn`S44b$T *Q7ZP%׾?*TE*}{ ~xNڣU:供誛flC;z)m+1Po}ucM\a줕%:J1Q(jј*#0bQ48mD G;i㰿k3\(.זۡ6S)6o:~~?:qc&A)xhb*wHQYķ^n%= >TcZ\n\tv1T zXW}~Ƃl=I_|jzOͪ,,n_ޮިߢ-;$] UüHa{5XB瑧S8}^LC.Vnd ĮcNL}V,xY7Zm6yLr9lkE/r yH>_ퟋqN&oΡ9f\L^+N٦v'yΊݿo;g؎жWc#S~wɿ_$^ b!ћyvK/1Ѿo}%$>q^􏃈o0(omǍ5>ԽJoqNW)ų)Y,)#?k|x2GXOD<pqt2X9ws銅ڈ ƙM.IJ~ȩ"wC|\&rbα|oy+=OcCZXKbcΧ;f8 Ofeh_9k.?1K(? Іn֢rpL|יGƭ%,)%׉c,@'tACtл>]/f'w).AZodBt(N׋/!ܨ%dl ٶ;gGc!-d󯘽ikb1ȱw,Ѡ_ci=Ov~ЛF tu| :nUKJdܵ O$&cry0Uc0QZ5CD~,a`fYs&vrr u%7*9-`gFL2cq\>A\5O|3:xB+cq&5!:G\[ 1TK;WA[] ( #v?cFcc]uv]` p!1>8a72XS&$^O FѓK RP&%@1e/L}O˸7>+P7(wC1*΂M 2be{]QItkU\C󕺒D ]^S_-ஈc@@c%-7)4R)-34ZWmnX:;W^y9hcA(=teooEK)]v>?Έ V`Zy9&!'x+ z4K^s:9#%ͤG&OU8K[w˺V2`(;^Mz]@iukL Vm̗+YסqJ%[c*&ꔚ+Cޜy,/;rMԟEV7jk'@ZjT;r8A\!7O1'V;?~ObT(Xt?mzexF1'*n!&D!W娧w7ǐL41xE \YM߈c 狮BO:kaiw{<\ȏ9 yߐkoۃv^Bqj>7ɛ}'{54z\>𪕣h碽5ߺb%v5]O<ݵ=69"GE/n$+{԰dSK֝f/~G'x{1~ żC2>ѵ 1_շ{ ΋S()Bcb8FV%8͢_%`  :pSceZJP(m|]JQ^\i8ɶ|Ս0ׂEb.sx\jʔfOF:1Z&zbfk2t)G gǑ"rޓscLZZ4Ű{\?p ;mriGm<_wNͻ.>Ds[{Bo^g.[[q?ig:Hg/rLrx] SO| k.Vc`09,>vXeobaNx.ڑ휭ɹhMϮCԆm 6G@GGE= .gzK&Ǝ<(x ` >d;v9]9mx7AwC}P7Tc T_I49ϗq8ڒnYl tlN7,g|v FĈ PGkv8#Z%V0zYphfm'+8@ؑI7*uIi< sm4.2KoxX\ex6¢Vߴ,?L|VLi1bEĺ\t+^7/you+럆bR (.b4*kz1eç٧MJםKUCl>FWWASѠFIit< ݪګRG;W/q8*@3ʍ@3Mzvm}bUدem{RW[%U'y(ss96K+ݑ&R[g64ߗ=6mOfԩ}Oq*;|>ɮ+MUj+)_+uʌr tĮ,n@; oR.Ƥ֋jW@j'_VrHm4\kJT~foqo98H9k<Ӊq5E<*(~]P/m\r|.3YIKYh;:8,W?F?s+Uq;.D_wbS|8+p}8ـcw|NENғيԾ1WSG>A_ 2̣@ :?b 4Tw쫷c8<)UG\˰W"ap,q iPA'7䱹'rbP| Fa80!v 7{"y`MB?rCL~'6Y*3KN!h# >%szc@=5b$->[vgѠ mo.Xa]g/{?0FT'd0c*]NTڡR6ylI[rSHL'XlOsq=s2eZȱ }\C;̐j bNX/(k=lcqK2Im^ƙsY Lwl"3Zt0=Mδ{mQm:c 6ƕ.{vWu޿s+ <ww(8)V m)+8*P(Zݝ!Bs~3}~sϽ?8k씿"aXd)Wɜ6γ|rk: s֛k"sJ\ĊXdD}XOwFgTŠr^gai ,j󿚘.U.:%$hCPUjD}e 5\ 2&!i94ȷ͜JGСr ѻ 6^&`}fF ٹlgX͈ SaķWF!;!*+R)+wяt`*KFUK +ܣ7mgj.Q+gz|4zߐS^xK NR<';8:~Hk釱R+moMxiLy'tB&iQ앮!LˆG,FXYx|J<f-mu>6+U7Z2>%{ jI~,̻_OEey"cŧywoo(+^͟RZ i@׺3):y#E FjF]1RhKΎr3m.!Kے}lfDtN/=Ix\ gt>q83?!69_ao{y6B|x"5 B+[}1q_7`S;yoԸ8V-6'__Ez(t{܅[{pyN*!K>uPrGb1/+>~6J2t#%!?#/++Bf㘲kϫ5>!>_țthC([\SK)^"yU-QrJ@I]_%U"P/D@PhO-Yhj*Vv(Uv֡NQG ԫ|o=DsG+lbvJ؜覬oېە, *[r_Vš8F_ $Qb7^yAR RSTzGT~CeJH6+ †ġ $GAAhԸo]vmbx@ZK+&07 XGhͽg6<"SKMjL=E>ӌx~O-O$[_Z|X ~E[(*݊ *uC,_[ssc mi3F6 HۥpL_7<}#GD؊{+ia,~IܒĠ1'ވш1{x 1Xqh?VZ X5^ r|wKzE.]4&(ߦ;>G-:cH} IU/[7#ܝ<$vADS'or 6N'~yYޙ/&<-!ʽ0N؞yNkx<-˿ǍW0uٜ|)G>i.N6wQދi<պI7.u'}xU1]f7:nޤR^Ds*O C?_c$s!J;>y-&"RbA&wWԶZesyuK#_;%`&]/Ulߋ` Z*Rb6 qy>>"vOU {F %iS8hXx0/5QfaVɳ9X;Z`QVUa(;@nONTit!U[ $/v{)?\e9~aMڝXeME6^[Kg}E;B)+ePrZT?WY[eE щuBe[YL6*GmCx[RATT^ϨqqBxequb;4bhu;cJ|Xu; =ז? Z._QXuςO_OY߂8q4qGүiє4&E#sX:kJNlf9XKRGjsR42[ݟ:\-iv'Ӵ]L8M%qm"ԏcrV-Y` 8&kGҍRP~Ii>Ĭ?; Azbd3JUeqci^UߥEe"Uo ]e ެZſߡK(P@9Ju˫J(R(@-*X\NӯּʹIu_U_&(+hN3DXO7mlj egMrPڅ1;tߣl=$.9Eq~9zC*_O~FYЙR}7X<7"oȋC$r|Tu&β62>öJgی|Tu|ǶheiT0WP9Tr>r#=(3:^_*bb XK!cp#)a3w*Q+!"iHLqbH?YyiSj qM6$kÀ:x< a1'7'oǹ;WXFiewCу͈GsO˻c85/|l+#檏vyzޛXcNlA. H=fyg|C3(}ɹE17bB#kE˧ی^(]NkJ>]ޤ[vuD1-۶9hݤϣIUe*p~BsRC!X?3bte.&DbT1hnFYlNn~mi ߏ"]&~&(6FJ'Osǧ_׼aL^W}.@+JRA-41Cmj+T^į7k_gdz1,&i@:_bJ80I=r+n .8.ւlL ];gu"F|*^NҼEHnlt z8PbtK>x91;iy!E*c)oW󫑕ܕ=} 74"16!fĸ8x×Ey,O?bdʢ]r W.d4˯ 1/h]&FE؆n6[/nێZbײGCۗ;tܮZ]KۺGK ڴ*1A!حl3?(I/q~JtPD?=J_2T:;? UOգ2خ \e &&WZ]y2IJׯʊo8XGO$OUvUc}RdīMu>*ߑwYWspZp,W˫aRmcuv %*]PqOo")יjͥuHbV5h#e"Ӵk&m6( DWH걓=Y1ײUKVɲKVݵb KnYtxN,~GKbї+z.9%[-]W ho+Ǡ482S^;HK8ڈx2m՚_ >Ǣ1q]IbO[Vc=jԏ*%qn4 yxU<צ18 $mBcl~@mX.#viRjN:.&=׶"-L+jz_Κg0@bfzH GVBfTF='-ܯ2wp5o wcCIj h[_ERRAjQU'uu\'2tD]Ukf<Iuq6TI^6>a9fGI |;Nm}j]FKbT4%F-bR,&fƇ>&s܊;%x\4P2|l)SÓ!yJފ|_^WGuU }~y"?%ԟS|P|E_,ާX[Lw)8X>B^\cW쿏bwܩ;6cN3kb9o_^͹`털,:y *vDX]AHb#9k-]n y>1 ˉY=Cŕqc-;$~o1 Rt6:{"{Bc9.#kNhǛ1 Ό ǀ8tz'|1'Ί?L7h25M&ljL`u'G|b~1VNA=/C_k hbx$&[8/W[G;. U >JLIyy_نFMl4-6\ԴFi2VkRYD~L)W+.ϯ(1* oWꏔ 0ejeE{lYB)xRz2HJQvN4,?+f@:GGV*ʀ.AJ zk*EUd2]].J]5ÏʮDLc2٘LVknHdEuklpuT+֬f,`ݶ^f~b:+ynu3V楕5;މoi,7Y+_g闫n[K\߰k[ӇEM Sb3g#g\b 9 DbGhIӬ9-Sh-f0N$ދfH_vc+LOdzh M+㑘Hcq^=Z?)=qa5w⠴88Ko\kXKkHŊH6QԾRO鼴9inmWRwH.HWbҌeJ67"Nȝov.+;8>FMaOVWu[=^7'h޼?7RsȳM~{₩R[PBv7~Aqp;BѾ|>mr)uR&Ô|z>$⸆Xkb#<#jуU3覽^haI) nګԑx^ |z񼐼8+@qgQWLxxSߠӞhsoo7K,uS\Uފ3S(aR%C.r‹tkOؓ/X.tkߞ뇌y&Hq]==OT͉EQD]KZ'}NўG4!*]GDt@nGʯB'}@lhG'Cx.:I7ZO78)* qON9$z_}0P ]:-հ«"WM˭ݴөLbD?O[xGZJ B(b3ܖ:> !&Q\L|#qY)9;DQobHsqhܜ31/ɗşl̼3hPcĺ|e, 7cRxÈ3sT|/|\Wޏ7qgVs\pw@Ɩ_|6ჵ6XF5Mx`ƍ4^N78_i|QsE Z6FKk4{=p$M~pe#hpCSwfKQ{ۭA'lWۣ#֦םLǵkjRKyj3ӢԞ/Sa}lM"~Kiwb[ k=`_b׸.AM 'j(W|?U4yc?ʇDoW>śԟZF흉)&:ܛ*`KM:UR(()֦viyaƒm̳1&iH}i],c zmëMc25h-JS* O;OL#J?/E,n]jI:=㸘G410_EQ,#HE DhGZK͈qs'S+R8'!-L}VaiDڅ3NLjյ'OØSX\3&}IkG[ACZX^A_ m Gݞ/baIͧ- GY/)zCm~Nז3'Z_it].$Y|FJgB6yCoad(C(nJHuxR9tsL]HDbR,!f"_~VbcSqbs?KT{,2_1ƙ'K<0?E~&7yMC瑹)]7 E1Ëgrԃ4Cmc).9VԏvP()]gOj'O vJYGۑsM1v=^gprI,%Ʊ%_cSk)z啹3K4N͉Mrvˉ>shG12!&+:秉YC^Z{<C5'cKt,n(~Gl$>$vNUtVEn@S鑯jlK̷GE{)ZZ.os{5'3m#ȷY:a|?憤Q:u=yKgnѓ|~r՟x,?by[M'?Ӧtl[|^O~ҋy2;SN[;_Z.,^bֲ) >Oy@ڮ6t{T#w)h>98.$.I70g4&Įq=,h]:F/Vq .Lf^\^hD:WJ:EktTR?]e]Ќ;jH]Tzm4f+?6)BO˝F:29F# cYD^ha05u$5#یӚ3K4tɓ󴘆9:zAgjK"'KjOVFZԡ4-4&5 iU:A,)c~L ֙oQD,Jwԓ諳x4"SQ_R8E)+zKsݥ%Qt:q}*D|T5z, GĒ}Č8>_!n":ct1$6ī105[S}ڕx?{KtKGsԃtC:3"NdLWfcRk:օW?`ϋǹ锺6 }1"^X͟9 ~AY] })1+F'%s6noo1ߒ{"ڼ?_|4uWs%6SWנ)mLTZWNQ-m>[חW1` lKq|9n9ΖgJE^Ti_vrs6q"}>y`7?q_|\cȯzȜ3}+Nu'b`Ow'Xj}VD4#\ c)-ߟl A,|>:oRܮ_P욿y] +G_˱\L8[؞ uKܑm1i \1ȩ{AힺI^:pbV,uIOۈ#譋Ji3 , 7|'K-p5!w'x⭼._Bq׋+Q|<;lo5 Nyu}v QԱ,YϤXR1Jk+ PB(IF6ek=(yFvOqOr{: -=io^>qXzR^\of ~8 q`ڔ<.7yDl{MܑT,ՂR7VNb6b&Z9 -q&cu'N9\w'GUIJh]ҁ3"74^+y<0AHw}~zc -4Z--!Y`ʄ mG[M4~{/.ǗXodD{؉YHgƊbM4'Ε:!CO>9kֱ5Ƹ+I}sz} i4^#g,G%M%?QbF15fjE(s _Pye_[U>QWfUVhEI-\5:7~_96T7WAQ'A-EU@Z<4- ŕ@J%(d?6_ٗߦy/?diq āq}mL)jn q&^#o&\"6p%'ܔBMM/Kx c0Bߵp|$YڨCk!?Giq|8?5@7%tXB UyСӪx]G/,sPT bks/|P>y'9qD¸*OJ1/+t4<>^촊8+8M'D9~G:#VN#FXJ̉ ވxS|''?ı{JXm &;>HWrlIyX(x3ybmCѡkmńbG(({އx 4H)r/f!%~E_-(aůWJe5vfW%0!ƀD2hOh@&OvD3}5>Z{̲qEqvړw&Nʅ䅺kOZ_M =-cbEAQ1vOϓz-chGy_t<Ǽ_%?3o s|/,͟ckkq,TTǖScg<<5`I>G;=ÒӐ)"nr/\ic.aZѣX'f{C>쒗B>-Kr%N ;6ClQ/?1 ]BC`ekG7wqZDz:V8 f@,ZcIL FHC ]7*]YHčifZ` F4^2(irG?_>͇9__s ϊӊ(^-Z͠Pd-9'uשb3Q,S@꟠-T~0J7XT|\FlDA"$bM"]b/}/HIꈛؾsϛ< O֬s`׷׎^ޑmt1l!KX಍I{щbJțs=&KHmsCE)CUHb@o"+ҕhK &1yV~4qqAɇĺ|~[oR:8N%NϟC}bwb#?PMmVzۘWW=r˼1hqt\.rL]`Zb>'/Qvzc/[hqN{`%KcO(_qoL<ǻRd-14iA:4FoZm4X{IC[c=7-.<,Iɸh_r?#}Gkm[DxEK1Og&$ng@f_bcV1CXOlȯY%֦Ƥq:yTD$> =Mk7Zx<^%1mN;ioO<눕s}5dǣ|  hAN uMtL%DhO8I([C.-胍&bIJ`&_Xm,ƚ?h]x)͎ۉG8a~7~Lŝ`m#i:jf"l+??^Ns+xz~|?8`j05K-I+R)ErJksK?x#A7Mb]m{,w5$Jo,~M($.7ӞXguX눯Lk%VԭX/G^kXO\JLMb588nDob{y8 :9ˣ1֣Fb O]'VDh@03z)މmh {9OMp4HoUx$Et-&Ex|m+}fFY{4vx,S~i./sQ|AO6Q^6)Aj.+' ]NP0o`V @m[п%ߩUW9~Rn4ͥY۪#5~R ]êqiqR)n?ɽVoU~sctS_W{R}LRǢah a7טddiXf5[fUBPhyDG?lțn!rDN%!%|9kc6$'i_%TП@>.qt[aӱc/bI.K;wI}~٬zQ+ᄺ!~WDsNPbHi!1?&ܘ#=È{ &DJX&v^#7fX|+e+]|l!ZB^j yVc/kY~!HIUJ>A1xmnWcb jP?*yԯx%~!n2xo0,b8m/hKSpXH7ΘXvbј݂ԑi%EؘtT9;6e׷ߗƳ?Kjw]>>[ۢ N-Sc}@R|cx, " FroҎ'џ8*z.{y:q Bᯱ-yK? j9."s,$~aH#]'6;Eֱ# lK>țcs=%K9ٞhM+jאox[lfo4yyfWTmt6A9j#sɡ ^m܄x ūXhg 65Ybx3 ދZ6Ioꙶ$_Ώvq.zGVHb=F^;PDx5EtȯޱOO#v3U^ <oXp4%?XvnO(RW-=O?QIuwQӧi=ʟۉGM EL$N Okb!>-آg~b=݄:F; A1y.`+ٔ&:bmAz8[w*q,i&*B muũAjBLM&晗G=MH~9r,6tYLqUh_"څWO%r@|Q1q>>Z"ji!Ds^]iV:S|E̋i:g&1"Ho[jƴ=ˢ:VaUVsvorUX"-Uk%ya^X`EĂ dH:Zs\ɳ]wbE0tHsb\nU"v Ĺ`"z001u q^m tk\Mѐh?Ofqh,'ލ ўhͣy7G60^_SڟpWN #t$ө ohM5oN+K̽W Eye B(lx7gu XV(׆::-D;UGn(;zBW3P~!U Dc0#p3rлC8>(6@Wq#.yb?jrUCdJu !+¦(YgU$3uF3|f0lOcJyB308Jq,U ZIi Z^iƓo=yj$cJ #chN|ěM]7-e-۠>VWqZ;>'+6_lf*防ZRޚ}E!wlҴWA!Mc3f8ĨB3)fx:'fYN!f鷥ay 9x)S׫{|yX[yK'SL)Dv'PYQ|O,ޣXk2(^+ބby>{vC(N6*oZoR*RRF̥&*n<>O> ^fyu+-u%hxձ%Q\Mbz<3ތiDHcבWDkGDG ŮZq'ѝ/q|&آ693ꛙ[?5b8wcy)M;|/."ZF:'y}4#]ks:&7/>"63#ER/>+7gу?q=^&Vsp]:a :EKa>'kQi舅yW[b7l2;Wm06#ElDAtR %2h/z).Dl w{\ ď1<,0 E^Kmc#dY !;wX=8bg>x%{褩rƼx4 zyїhkD+1$w.fjC'ZXk3h`1--$]bc6-n Fiu#h,~!v6"Qc 7ƥqĖu&vXͷXƤ#j$d˴Mlk[b b}'.i҉haHa 6qY:ص66]>zi=ldKYZ8- SDb:)|_ÐXqce3=}cg$k4t~!>4_䝪@g)3/mN0K3҈tcGnHb_110ozJlbLtmyV8\`JL}12"0B ɳ򢘏e%/ŹF3ba%f"aF,&_j&d\vL1/@Ly1W9.=p#.y*qm=fS1ExnXmi6hUFkm Az9W[B̟>Nq~x'G,:1=:-cqڙO=Z,Eq$h. 2'$?+E;+N^%GCS?Ȣtk+}e2`+ wF_:H [O ܺ;TmKrJ V4ԊږGbhӼYu4{"pG N-E88(3o}vB0VOnOIRJ˭*Anhi6-6,|BYyEXhe<+;ua5ŰX0KcL6$cXEG<1<-#O굒Ӑw#Wty06t>_裋Pl]W)~Q~A5y?#S@4ٖ8<]D([?,NG~1 ??Ǿi14Go{N C:L3\f8N,&[x?~A|x"n.1'1jo)I6G,+AQI )jLPB^%Z#ZI-=_njˮWm֔t5Ad?|ɜuXp]tᣆ֏ڒ㿸ӿO,z~# %ĚxҢ<.A2=F cHm]r-E4}>]zQqDBIiE&L'L}Fn88֮6v&u48S`lL`#]tE/t 猥vQ߁VYXZ8B6\ s&N6#O#b"MwN#hDdZ6 IAơw`7 qx!qJ{? OC # #V㈆ZLA+Jt1$͈=/Y=I\m/?,Y4eZkJ~U8S8gO}py-IG->(MDDL4RKҘ(x,蠳nfqg%v[~`}LVũԎNm ,2(k'&<Ҙe4G[7 󸕨K/N8eh]ҭhKbokR{GV*L0DkM d47Ig{|k4!rxH΋ҾcMOD&&RMkȇ仭%|F:~$^&Xq0ZM؞84ϱ xKsbi nlsWb}i>9|j+3n|i=qV|mWqN(?G7ivXS}&%$PwmuBh9R. jmAhl bZA~^'u`ƱziT{L֑=1V{ۡOl?0E܃SlbBtǢRv_>C8>Ǽtј'C[:Db9'p7aoODI} h_q}[qG\mF_F6emVۿ̭Aw52H9TV5 H+JðJ@/eJ^NZ}(eGd&qs2_yIQq'|`5AD h:D6߉jVas:+KYm9TR,'/ӫyVb kd5 *cafK_U' Fb< $_܄Jߤgpj p w8z]!T?bp.Kr;ȧ#t-vA9ɵ8,zqyc.e #xtao֝LI!ƒziWhŢ3d0_!ch)K|-#F<7<L]~/a3Q<3O(4JF'o(bq1X2G築&DDg_ZJGǴ(fhFuҺ莚& }Ol- tl)1B}AGk!ip|Ig( N6i{}B-1ǹђFjtqR*I&9ֺ7McVǘX0xbsýuǮ^/y:AZΎ]cq4o/s&/i@{Fy.yy>y+/Ê<7_J'w7bkO-my|>XlRħ"Z$v3wCsDk#}spu@s4G.n$j+Pqo&2׊x"[`A1⬨':f>!7nFf>jK^N;OȟFJWE S 900}mwݐۃ!UۿdU`߰ rP|+9捪[5o~6@jan3(P8RT5 ͚ΡIh̞[]b YYRwSD7:@tܴӪ+NUJ6xb{Ԣoyy.huh($uzauŹ020o,s1SL2<6cK㺸/Лk5C>R"2A# O\ovT_:'\R%7qE^MWhNVzDqvxWZ?,vk⁴0ƻD]twICcA&I1o(W~o r:b 1CuwnWysONB +Uh)ږB[J[(^iK"IpBB\ɾ/:a`k.xY{^rWE+uZ):x+>!W]#7ߐKs}K~A> &IDAT|,S[.T{7Ս'pT[RTR}TTȃvE1սr|NAN1<=!lϒϮnƩ^4>Vq1PѦ tY|GB\gZoxTĎ1?L9I<=5bV< XJB!l@L%34lb)1Dt99- sq0= ]Y})Hͫ#Xݑ5xɻ̉3>瓦57ߋuqE̮DeL,Ie+ORisSoAP9 v[aqPzwrqBv:Ʒc&v'{DʑW9gXdhVyiCcsSn̊qd4'Ƙ7zu uԅ%^hMfj^ѠluEV~ctڢ{h6yvh'ǮhY$kcF@wUay&$F S/tobi& _B*kAvUh*9Qbc=>xûJ-qVƻ:1[6#.p\|x?"SMK0 ożYq2J~ѼNѰR!c3/L}b7ęyc+s 6t6h\@6&s-1׍3{Xmxgŋ>|gs*qI>k#bxS !"ӈA||38DsclϢ8`ᖣ>6A©XAΎ#y<p47Bc%-l}u }AC&~qm׭" h55V2`qQ EQv.8ԕ@ul\ν7?}}Mh_ 7trA>V쿚 4R86;h[@wt"ݨTi;6)KB>pqPEI wf)̢̙D?2w P-1!z:4Rk4&-ke1L\_'zSN8S֡j:e` ύ;6x> Έ ->x|ܔ|r[ @8N ?O^ӫ?kBgziݥ:y-yLDn;N#z8 "m>{]$ֱ];WߗiLyhAMbS|51+Ƿ7b^$蘌q: T3N+hc([&([xͱPJS<@?7+5Vɹ=ջLuA\IVcqAšZ{2仛.ygPjOTےfeBp[yL>W\[|4ZKI^VOZHek-J+,B7Ӭk>{ɣt }'?c{.Eנ9+J )eWal1KeY^ea1QKE4-vx#lKw~IClͲYяwb'4>j4qbrYޝ|z^HeLN<7V"Y?0'ZETUsMʞ&4|ZU[MI'FhiHCbStE$dfYPں/>TsNf嗨zėoĽ'sCLgوY+Tbb:R:aRεGlvi[R.|%b CĞ{dbFFMbJޱQ MT.\!qe[ccW!5QKр{}ys3cNΌ>1k}Iuŏ0Py3Kx\je법KeH{Oקe}' \Àws7.Z\]}2KݜToGsVCBb:0Fys xG>bf"N^L>F{[3c/6mл9\0H[|soFͲ|=7x[0b>D5 ފG/0Pk,K5'¨N:rK>16֠ 5Ϸ}hV+4Dr/ BM+) ) FuXoeYYl m&h2}@\Yϓwr}lA,|w'goo`h8∼<E7վ[@Y+w^ ca8Th/ba,ՒsiZ9z7')Ħq6T} *ECX-cB,$fK'ފ5ۼB\8'[m0>73]ZhV riMu<s69<|7WN&_;s}rquFmy;TO{96jn&S7RJ~Zz|>VgOlɭTf܄\ :'br "!L o@敼;ӈqX_b||얿!b:c"%61_R8|>'>\Ӹ'98^aVt/}XNbm*S4t]E+%s9G.4.7 |bětWQYC`U;Vdk_O='֍ݗO01ǎ`uWAeU9nI>@h]G%kh0* 6uAߩ#5;54J8=WvNTkG<HhbPZAdt6D؁)lK%NT.=?*HAk|K)D{< 8-桕WjD#Rĥc?k JKQ2-4B˴\;[d1Z[ =dbh˹hs}^#'٘n^|BKy%--FqqSQ' `b"!Nqj?--؁Xcs4>34FephPNXS[L<sǍYUY4Όc2rwa.$9Pѥ|Ńp!蛿6vte½3 +iδŨءnՓO:Obʠx =ZC0478$Gx0zo?mrfc_I>| s'yvs kɫq MUE-+)hjDVNla Ri1,6 gȻL*Goc諒ϣbThe|DMg hnv8LonnF,EŹ: vհqNt\@l5:*?ub,oZfrco҅X?֕7~;X׭*6hFΏ h^XS+Y(zλQxTR8Q:u3hZkucbXr}r_'濨3Џ z5ov|zHQrT$/+L @Y9m ӀRִQE%7A~H\RWk˯]n9ߝǠ<(o{>qq1H_ZhJHhZDˢ`,4j02|-ѪUKh]5D -;2, ӊO~cf>.E5j<"(+&%g{hhwYPbL\Ղ{U Cx}X&x?I^i3k_oS߳oYB{n;TƎTI!"#1':c"E4'c;~Ĺ9 M/h7ks-Ngrqry잧{|);P}1d Ֆ՗ իsHΥڧ::?|{W[GN[yՆd'[ѢA"O*:lGr0,{deoGEnG8>/;Dljd_a"s ֜H+}54,IE|JەXb8?1%Nяx1T:Wnj.y&%3#Htq+񾧢71!ϻlsrş!~֘NmxJ ?mP qz<"T-!@K͉xF76!/ }=3Y? wAɏ3&gMN o?3_zTbenXʧEʏɦTFg2*]cP[S]c]ՔJh0.ΎhV]Ѥ0hSƊC#4R ]jǚ+<\C.)Ij M'\Jcr\[imlj"Tim]'Gk(vűq9JJW`pH:a5þ"$b;W9DGL<^+˟_xw^zu s]Sȱil+OTXI^`m4%wU=Tb3r1KC5XVjb3bl;eM Xm8ϟf-kZAq 3VVX|L?3M>1X+I_GGs6Omn-D7[i4¯s'^V4\xGTo7-oG`L !?'wݏ1XkD;"jsu>L66DoٖQZhfQ~h\}%}VqhOv-J;fOrN\\Ank;GD`;8 !򼏖'+x<*ڐt-?-~ >q3=xҼ;q]ѿqAm)weRTι.ż;\>X~Uu뻕In].w(ף^ѩhXr뷊% hw/[ɚyQaQoC(;(wwBDf?qnJ8JXז˿ ~;xnq(/sw&{Q +:m jQ_c Ki77fV.9EAbV`qYmYh x{Fc4Xo1rlPfPse2 G W䛐r]JUݾ}Pk'W S U"]E *81h.~wٗu?cܙ 5j&N8^ DzhL<c>1TyKx嘉.#)ۦ/N,11}b*5ViL~/o\jDE>ny9%o!'?i3'|(6}d=RVAu UbW`Wف(ٙ\Ȯy@>DwTt&+y#n~@[.3|i1[ k%:j {sdc/V[gy,q y3oHH<h^8={њψ[o#n<&X#WuZb(blx]xꕮVG<FnsV|1Qb1OB@$&nē >}xZ;}g6ofoXskvcsϙ/v1a|v1'Lp,ht#1JWQiYiA8~Ed+WPiu3E\Elr :bg:ԇ81c9TJ*GYʇӊ6a[mL.<'cU[SXAtc3d@P72uX[6u/ǰiN\(PR f-@O48sKT)[ͩ*T#0 k}^srUUȝXuXk}. )+ю߳}VjC5! ^^Lы|Z+qٞ$?*ڡOgF.a/Vt[MϿβ;Ve=r1NqɃINFx%SXAVDsNZ#Lm}r!.Ώs}rSΏq\6eN̴q="\~M[. =%)e٩ezXCӲHC QSr*eP߆(Ϣh'c?c⻱ $bD{cg~4r1&DZ9#FKNz5,M #Bywk'Fjb8Jh Rw+9 7Vİ6Qf[Ł8N3̫yHlXO[FVgf{BBupblJ4 [X&1/*>IJv'zt%:hWt, H~V[b37TjfEbF5:@MWe`p^`K5&h\Ae y}eA(K%q:y9qOlV A=8 ,vv'_6ql@_#b󘌁TWNL7+Y\Ur,ωĢ>Wڨ8JSL}*WTcuk.ᡅ/.]~ѽw?`uo,9%2v}bV I>v~"qYK, h@M, y&VXm1_ SkK|;xov#|=zyMt@k)NW - 30_2~}omBԑs|=Ðo/`m0-ςyjz`)X= #cd`mG;C'cfqEhbHi{T1DH-S:*cQTci-+Sils\r"zRo`-CG=0L1k1Ds7}F.Bn*]^"<׳ ѹ*PmT ;?ɾs2ϳzR7hwtB)d=PCr*Ս>~ȃsl@r;rrW?ʱI1k xsB]|n9kXY^`Q^M5!o]uta@v㰱>= %In/rKI>'U9;rN b|(>!OCh4 #Y6Gq\t&̓ jKs\#",~k|bK\8=aYE;.VTU'K'pI/??+Ԇ!ox D3ܮpS޸pO*`&n!&Ix u uQa 7ݨ|!n1T?]}ܦ|wO;^e[{ή2cW̹uY+b]DdAnD[tQ9rR&vv7Z>*x(ϫ~HXw[D!BXEDh[m5Vn^c3az rUYHꑇ`wG.hY;jѡshm&[65Ւ- l QK^]'j6Ռ Б#XaD\-," i[tw@mӰzdYJ c' ⚸ŋё#tmڹ/aغSbjRMM*cF$!'w.aom{+6'__gkNUR\XsKAp7s.BB|;[3ye13, qDvу\^ǟr2v8^| oE_:l K}`].ڒ;+1 r_\OWdvI.eFA \[Krsm:z©zۋj[995*+Qf`|8= l:ȿqW9ߎq)q*q@_-0:M)&|Fh  T˺8E3(Ē 9HL/x62as" ?*PY{?c ~w/eAg\ye%s՟AA d[ȭJ͹}1&g:W{5qb<J!Eɟ ăĮQl+c:%r.xLǼA<82:]81z߽b":h?s̳c:}ќ;,#y)"_ȹye9)o$يYջs.6r"TTŰ=0\6~[gԽNulD L'NT?̵y[so8WOvG- b1zoq7ާ2x= oUD2ah%Vrb 3eTf)N%tY;ڟE&6+-u! Xm<ߺ1' _{s'/~lH=%{e/.^Ӗ<,xw׳x-N9$Ruq?p gu ΕJ4x-6ӄ$bcl jjA5[Dhah;O"~G!Ao"z=!s/fgc3N]QkΨ5[w_}"]Kā #>%VY$=r GeTclC墸$'=6M^Sq, .'O^q/=v&UT!6ViBT/T{8|#TzF7C4<.lGgʍtoߪȊʅL k<d8ʀ\BWJLH쪋⇕՟z ƀ6]qٳhySsjGz9Ht=E>+=^rZmD;Ce^^Cug<+ߧ:-WsGܑ;g{y=%_UqP92o#c=ExL!jl1]m Еʖŭe?;;}6bE5UήY@ݛ6o-olҤvjv}ݹf}ݛivi6ZhͧS)qa~7g|c/_{>cau>.-*~ZBO֞># ]Sˀon%u&.)nN~5* +ueV/ߔOjTOM:ȆN@+2pѱ)JPs 97%yp!H;& n_3?!>)HұFJi5V rZn~h&ksw-uj|yK]j1/y7?¾>*Dt-3+I33KcťҰcbqAV6$4!hOJ jU`՞tB7]+e;ET:+: O& oĠXT/U$}0T8VU{v^uB5i,q$rН-jSYr}l.3uwwgwe^М/E,%bKBL_WXۿnuP3$ p]EYJXACs1‘ͱ#6AaZ?MHOm+P+m6uEKtdʟ2և(E6Lj*5 32S\NQ^7iխ&Pg]jcsjc)oqhknF=,rWryjG8:ՍuƠO>O+Ƀ#s/|jv\Q>.׫FdOǿ|| u.% /7*m~!iPEO׍sk`5q:,PSN*A=SBGG^wt7\(A-|&7qv{oMlzj:^ .׹J.@!ڠUP RkuD+JR",,_yK(|HYVM؉is9 (ƈtqBnS}daOEp|:\dlg=q`lj7B=$މSS >[٥[oܠ%qI,5Dˈy*&XIwk܋;>/C| C-!ПZC-0"u`yx{|ܛJ>JʓD6ey*?vlOrT/eSm/g ]Av;}mmPө(ph=ɤ#ٕnṊQCAGIw~᚜\8jg<9*?17z4L,q63VRpUBaD`mqįTR40JCEbHA&nkN1ʛF;mA9Dl[t!Oށyhi`GscVGyTU-N9CRhm*OPy cQ_Fi?1#g,p?1g +eγJbS?D;~H.obLrreO=1bqo nvĥDUq]J|U&A|D|vPܸ"`(z'˻\Fq"[\v"n@#PEUkBZ\Jcv]~G`{#QdVX6,xYkхhuKݗ$Yv,kYR]qcX;Ţf`_~CT> #Wc`2=`HUK s+DĖќavDsq|^8(..'w'؎Y1"s⼮>BX;iy O YkTg|lOV􌕣WLAʵ5[bL|^5Tos*zb4GӨPYB+bGh:k ٺɏc} %VYY9^TL.+goF/k^Ҋ[/^}i1wٍý 02Cr>bCcN.&r&O3ۍ|ѹl{C7UzO̹d;Qye?P}8g~U?">y.s7hg\N˧bZnl??mހmCŴG)LWq]yMO3!C߆ƽ`oM= Awb s|ؘQS3ѷ?Ճ5ܼz{hㆍ Zwąge;ъsg4^3s:جAqB>F  j} ^!stƭ'm }ƿqz@__Wv_8_IU~};AJ2p QRTJ%$iKHSx (}z 6_5GU ~#!:x(B*7%?Q8%~8mmGʼ҇Uc+Wf_qOICY/ɵXK(@KK(7}/s^@N&`%'UV)GGt1#_.ujEUȁpec%ޯF+Il8XUlB\At,{1M?uĚIlˣ 'f:y|16>&>b<1*30 )~m 1>hgz,0*hZ1ƛM )a;G)!1yG$qVQf㫓yB5s&CB9!}"mԍ%(!?uJ ïDn-NMn"%7=݀y1"_2:,jil٘ikE_VX WYD.*(-WΘSUK=ޢ4Y̽F5%˿A4T4B34S9j~-_jg ?C#ny*+z;zzV}FO+TsXouG^an .Ё];kd F#셦>IJ0D{K{Fkr*z'Ẻ㜎xOq6":6zVjCH' }r)~p~<S G'a4v+^`[HlI#`}!+cUWòWF߲X~VֲbV}I^;VN^YWOgo޶k]f4k_5O~&璃lB"ڑVȳǣ.+WrDCpSX`Օ+IL޸^P-^c&+voS?V6S1a\^ f(VV y%LE{LB}eiYYtl=lE 70'r/?Sݠn [~Y27&R!GU|8*X_'?UO7>l| woHmZm۞#jkp 4h`~hVxѤFW 5ޖ&/54{'d&6#NɎ!E#W;Wl|x9Kr$սߣK$$wa3yg}Je/pb}uaNwhWt5&%.k5{t靅|=L烥^(mMAD6~y^w0" O(T|z``m YWMp)/U'u֑DM5 c3ox-|qp^?@dE%F=)pyAeP,1%dbF̍FWwGbko"G84:DwLz@aN"!gc)iy #/+L#d6/ ۑٗrr.‘\ 97gpr1սI"ì$QU%ȵ3!U'8tvȫJ}d~J~`iQ<-8$.JeVZ%XeZYSktF5t+6QU)H j4.faiY& /hEvZњhhGGt$w=fzFc [bEjɱ`gtbkQ}9*[ZM.vvGx. !Y?*G1;񱉉8_oh vm0H{L%1gzz/#m3t>T6Q4oQ!VT/ V ,"RtNST&r:1X݈ {d} ;)*f;L#+w$^6b3Z'56P؞Nzϔ/x\{Z#~@#ch V?홵y[;_Rw4u{Wߏi~!u^_]D]ل[чEnWޮ8Mȧbx$9-1CzQfȦZvY< 6͝A1OE_978(VCk H'yX_)e| ?y&ClW̊Dscc$Tk4sK\m쀋QcSGa_86E/?{E˩%VY!1L1*?6`4yG`(1O?AmH~dMWwrY{GlqՎtS'[S}A s76sCB7v~${O[ua%XlXneد.+ŅWy5VX[4hb 21O֗EBV RƫRs hXf^D 4ji]tB;hVE'!)ڢCtt]uXH7bEa9<,8'`5)ycI0L. 'v'bc|L@4aC?7S`#;FW9 ,+^ 6.o>XU/sQF2`(Xa!((V95E_eAۣyS9M;X*?rqX^MJ]_֏>ٜH<\5VB-G1T\Ts%O$QQB8N[ǎ/YRt9K˼e6yw,FYl5ELXS vC8K܋[ވ3U!ݼHr'+ y]ңq&/+ħ%M,X!;бO.nxƼ (1U~v Բ4@DUKjى+>+ղ_ ו*"΢@/uof_";e!1^}'Yz.@r/[Fg.τU!QldMUylς#KXѥ$k.dZcAbT k>= vBkbm+1͎֑5F3s mn[cF+ _㛪@I-\YBbn>ٌocL<.Cm̗GO~vmT'䃐r(d v<%ʾ}nHN\GONwD JFMOFA㩘mbR,!*AL%f{>#Fݱʸ֚x*^vv"6H|`UDRps5bea-@ͧ_]C'wNɢcVȳsQ"?55s\.& d\EMTZd;կ!gR]B|٤LeClCny#;w]ɽ!oñyOd[{$L046[b[eVXUV[5Yk(u%g݆uX!_[v35%ixe2qXg-YZUr Vf=0lU*qe(.Q7[x7f%fhU1yV*: yީ BN+E؊S<u CtхGFMn}|8EO Dȗ5/G Qe adrw5տkp[m}j8;-r[L1nhDKmbαY(1}=IClbdnaFJcslAaWvqF3Vc,46U$!&y؁ Ji_lUQAe`hYID/E[w(=M9zjkYlkFAz-q@NN&Cez_! fدI~G~c̻c;j0 ku.S}Û5)уoղl{w*EvDܟ?KAXѱQ@ ƞINh_:̉CpJ#KAq.K^{a'>AzcX_rt78ǝ>Y#DLu&Wݛ@"U9o'%Dg :OWx:ܕ/f;1ˎxzG6dYbgԙcB[}:סk=$rl>C>I#*!E"-:*=:Tx+E7R$W)(eQ`onuOHFUE'@VR(JY5vd ׇ5(Wm"粞_|իyRr.; :[_^ L^~޴.K 1j[BEC Q7=iYͥk FQuXK .-ZWDsF?1ן'}^D;Eœl,vdanjm3p6 P-z(PYm7-Rh('>*Vc4ySڟW\9l?_KV? #y ͙Y`Y<."pmlDa[؂8 s45qۈ%U}{ﻟ>QqbΊDטˉQTW[91)++qoL&>ocf׺0C퍶&X^7A+6B,&C]pڑW%\v|ٞyJ]yD%9;o~YIC'e+7daf#'P'` jN`I^ 7Z< |X|xS.J|d5XcmSg=YWs(6$uenCPk&W r벾sV.+U ĠDJnXa(lH ʹqywiZ^Eaf卤yZ$ЈQ&he(:*~Z$NZ+hmJnB[!褝NR MNgݱ0iCurրgىigfkj"[0LM7jz:C-!a8MY=X)B|C7Uyx*`mdލc&^6\C5G "lYV;Ξ[M1,Zy @AP50`S F@;meyX; x$,GB8 @b*{M`rE }Џh RUw|_㍏۞C-59-Nߝ!/=Mbǂ Z7({YoW` EzU"p/UV*ˀa>VO?c2ܸb -69[:56=[$cbcJPr+]06QeeØMsx߰S]_QkP3 /a.9pb^Tޛ$ Ṋiym0-֑S=hķ|ۑX|SԷGGcIr&uTZgQV0-ML>z8 p%]DY g=tto;>;#f2T qDɅ69{~Q8 cD~D\ П*Wբr.@WzMkT4,*k_ԔW7.׮wIՏ5_}mz{+CAnV~Ntc! |/FjZ6v~KX ZbфQGM|S2?;/6o5>Ff^Ȋ 3k5U \W׹6#ea4×5xSa%S4!_ =|4 Ͷ .=g[j%YGTTW]af,R3r8_;](l#&&,*ѱ䦷-oQ7mcB%j|SgObq#[xܰ8X7`WEؒGW)H'mrVƛ1xTa^ޔNv;rW/9"? < aIN(S׳%T LJیzx~%Lڻ-d;y0#Gfr<>ȇ@-16Db:,7BgM}u~o׭n\7sW(Ća[ZW^KHQ5h,łR|*+*XK֠\nP~^}& WR(4)MMBMa4* yfeL3暡yެjKRSK-T;mm YTBNKRt(J諍YT-s G|D?[17鋾WtW_4'+7?^X6&xz(j;ap`6%~yXO0A-'I V_-EӸ|Ġ 6-m9#s1gmbf݋AT~ + ?:L:kqL= !-Yvq=8,%H$ww>?ΩI`Y}u]o}d@pOd~evy|Q<٘2Y409NɜUQ3[l '6Xw\@DZvĨINemhė4r.,/eVð&s>ŢL=^N0hR]%4 _vkUryH<Xgt @{n{d. 3_o5k k0Lx;(_uE:Xk@3YC:_=4ѹr0Y 0 p3.KЏU )e>gjyvV@n&d%4r@rtu!LUa){u7_Xp `DS,2o }.t@i6\T|@W r"4_%'mizĩ=/@(ێ"^S_9Hj3? 6!lGF-ٛ&V =}-# s7$H#{&ҿyXIv6EJs zſ{R$io7wSg 7ogM>=Af3+tJ)HYJ*@uPo*O?ҝF*lb3et>(E}d'A_5ہ~  s[M5k7}\h7~AK8 LZ`2iR@.Kz6 9A6OX>',i<$E4YR{| 2eR5.@h9؃(SMbb.X zjW B\"-<Z7PF= DEt\3J< %nW@o6NfbB^;:t9t4{P>a'g{:PTYGrꜢcVhڵi4l i ǭb]Jo BP߯tkІ8 ܿ+$XIB@6N#QbGjvpr@" z?x)ѩG8RT+uʟ%4IL2]Ԝ'p  WO23y$ѝvE@D@\ ҃"$I7ˬQAOY -%tzҮςH==^TmJ Н^v^tb 7N1H>B xN PzA RZISj)=-z>oӋ$^H (l褘~yݓ2`$CLd L@ftnz*1TI~e@p,>@Ca{ L` s:gV-x I 08[ ,nd*'Z /b7iM 2;rVR=oB4x`2M,v-ʹىι8gxl:$!@~SҚҁ%?f+/g}aq` vnЖ?>9t/q&}=@a&ԡZJP:Л5Q Ag*2x-DR Y=,~bl]E5@%-* +f9"g% o r-cb*2{c"'ȣU ~wziiw_BM Q__"S݇mr zJC$X|,݁z<[ @&s 몄67}M|?w x$_o} ]Niw~m98͏7ÇE֡;8\ ` 2Ԃ"1J#>2 'f @.kZ ҩ@&&<@UwCѐm7p nm/7Y3D&2Л @>E &v;дN7 6bn@fbI~sE] B'3&(RJ5rG ï\%.v z&&ޟɂ_(hZ P|A֗Y:Rj8tg4uL W8bqY5G.p"E "?HH|&AZ-Mp+ȇ@ v`4uuϥiX&,b h~Bzwt>q*Y@kw=t&z%Dב At5a@l+UΠźV@ &^ +Z K.bֳ ,{3a a .1r:+ w80Xeq*^9800" A@!&@[0ѕ@+ Wh9/H_aYEf7~ 8h>I"$ 41BL4Hk1 ).zގ<= ]X@'4DLM+ZTS@62!RIr'}hVOK>aWHlu|($ob)=CFR3@S@!Hw)B PDQD!P(%nz ;E@L;H+K_2@d;HDf KΕ#Az cbPKO,o'^rP} 0h] =Ő.sjCHz㼱R( S= wըD)G >^g~Ns1zIS7 s=kQ voI\Su>$׸wN6<\ hHxdwM|kgrYOv> {!k `.=I\=ARU@uOMM)o{'~Dd,XTM6R6k5 \"(#V)@3g wf;@e&݁D =&x?3(ixu:l3Z3 26ܣ{.286]Ex'n20p$yЬmχ,oV.M>sWru+hR0µx%"[}yv?XRX9G{1L%ig@¯0EIpRU-)OL;澴GrH36HK,͉0䂳{w}a@.{J9$dG+A?_d=݀I;mdZo6T4EثM?-hۂg_Y&f3Eq>`IhuAw=-%pZn y濻d3һd=N6;Ⱦ(38%L2A#J]F,ϲPփ$iidl^ xSJAɁE)v@wz7u@>`H2 S=?x6(+xt>tfLҿ.u(]m=-TK`'0b$ ,@=^N\F龼ZdDh! |BXk)65@ ?:6g'+mE᷀[Bkk3@tV zT!lRmlƴ &WXuQhc/Cݱ;,gmDHԗɮYH/B}(Ɛa DrwNt$0,mr{UG'M HMDRTB2IRڑ12H| ̈́*I dI@ށ`m6J $l}v!ȡɖk٨dٴvdNVUQғ*EAԟ ( Cu7|2}kd2E-ѝ\Еf1(E"O+\ oKYٲw"Eo ,~F`Oa ٰ Ek rxI|@LB─z#rۭ}}-T 4 }b픞bkWA u gOܷj.E-{HM~.uQh9@~4- .>r) 񠱯!jk@z݇Tg#׃Vj]#'8zae ) Psa^7%aW-"TF`WR/@C髏H_3ƳBx.e(@u  Ř;i9n:q|3hy<(rɐ R X); ث9zzUlN̶u/}1tZKPkJ'S2!U&4[HE?+U)S Y7ze]oV"w7{䔝&&4\{VJ@p,Iz۠]^ױa㑫[jQF^{ʯpS.7 S}O..{LNYNKAF{n@9l @"[-@Rl'_8jdҋ TmAeSQ? qyXퟁŠ'^G?KZTs6}B;>X-\>W9A^ 0ZFL(Ni <@cJز~5nH+J%H< !C//X|Eg`OK xd/N Q~xq{Tjj X?1~d I}T_`-S_[qP]K]S+[`jQCA8`MEn d#= EDmс8y@7JK(Z9 Dp?U]9B+/Jޑ2l?`A| 6]v>lɯ+/}p ꭁۋj6@AΊcu@j\lWu7JWjS;h\@CA =3s"]HJ>wEJ#E"ݘi[|L 3/֊>"[iH e1c"@t_$h I$C+m YRTRlZZ\XfURt1Bc=F e@&yU4Zn?+' \^Zr\_'Q%2M=t#AݓUrh. ;0``(Zz" sg`*lw]y9[C-w4m\}Y5%,a%&Ҥs3N-yW&w[Qο,s@B⡘Usi7>@ĩN 5Pѩ>tv.pד7(yRFr!f'YimKp0t,@Ka fc>E|6լ;Yˠ߲iݸR/>>=;}C ߳X*X l:@EH& Q.uCE`!r)jN&F08T3J9d!H-HwQ777nZzw?AÖëH8:j`Ϡ@vmv> R3@ae[(1.;`aX!ug .mgܓ=ßvNӥ>_@B@V"qXf_2pXz`22X!PMOҀ^nG&@.;Gi3pD<ƭo{2z5akjVP#Yl} k26 |iT춠\ _#?TG-0\c}\m+yL$ ]lGo'0 r'eۃ|* Xo^r ܴ%`~ï $YR%-WIYSe l%{~l/ÁZ(Kb>LeV#p] l|"\ 24Q3A'V5ŪF,g!6t<^nN\cٟKAٕ3Ab l`u! q8Z?rj G&y{<@\{CE|!G >ۼZGDum^|>"8Pe~8~:HlUah'[M}>t7ju6y[x-KA 5+p8D0ym\Imd}E'8u@_$сG_E9#DuO:,E*TXAF您J 6j )2N`VF2:%À(A@D2@( CdWNի@ULԓ CD\ ;X LGaBPxttvށ#?t++W;:'(-'~!1z?6'gÀPdBCa(΄=Zac&% _['X)Pw¬䳛j`,X!N"1|O\4g)|@3m7<W0U7+*6P 9%,2b"zKF;hɒ(-c\ 8 c.KF`u.>ׁNms\WA6;g-iY)UVMڵ̀y1wYvXï,g!9\+PO>+ -8'@17*LdOiS$}~9@HM~Ys,/}ܞQZx?~}M „C!uANuG╀,(rݾ9l{mfۮpU@RwJw?{A0K 7?iXM٨{ :Q (410٤Q2t3"$M%`+W TeFY u1Y lszпC@/2*c[* _BZ@zƩ@mXG~ d/ ;J.9;,g -(ʟd1FIU*8 ?lY|1HWAfDAb^T!,R9(݁լE1"`gH뢌 1@27P9fWQ/OTН(}tNս@ULsjNEB!9h_0_?VA|w=Vj-pӁZ3,sh 4T6j"hvO q@gr%A$m:d93;.@rn[e$,oXIKDI(2hű՟DMDXص 9 \l%n!~ Fj-@ 5JccxA| 幗[L WlE1.h @Z@#a]+Ёug:E:>j "qaˣ>H( GޏMa"z }1~{Z~}Bn&ʳV`0ha=,͘}P̒ _'_o#[˃]*HEKo͗/ ߃ipʤ ˍ[66V ;%]6$iDT 'ri@JL,"pג!~\mޛ\ |,3 AkJpSvB8OtY#p;PYo :8KwM,p}~sOV3u.Xv>0Xv9kuHg)݁ZjkǺɠre Wo| r0yXC Ak'tn@nٕQЎ`"^@8؍;@Z8[IgCp& /}Zϛe2@䱄`F uVH9IDATS`rwdT 0$')O ^N5yL_H߈~p+Ngm)D=϶T&9.ϩF%\  )^i] zQցpx)v@[nZ-7<l jBqq90?q{g`s}n@Nr!툜4Gb'$w^Oņn@;x5F)" WU6 ,\lcdH>zY,!9JYl\⚀.@@q@бMAcOhj f6X߳r*Sx-2A&y?]7ο.[ݐnk)V#!(`{]@73eWJW O46~}|^'p̒bmi/C<ij.eib: G ͎ _Q~(p" `bR_Y&Ѝlf)pZ1 ]H.ht)7{Q2}U4aC^Ut9XSV _u G9 $r1RA"hM|\ڀ"C_*=V,GAU$z'Ykm|mhIڵM@iE@kWd52v %Ökgއ?=OP1f%t< @`j8/a<6 |P|Q$QZ ߆ $*Jj6%.nnJ"Y$5+m.}M7W8 X׆n-q`c#迈D:m|_b?GXtpLIù8#Fur-buɬ'>-y ϳ~ d z B. ǎ0ڞey!Pd4 2Qzo'HA`^ܹ10oMT)S[\&TnYem4L s[mn KSUȬ,Ӛ%^h5 '` ۭ8K\KF;xw %[RO/&̀ۧ6?,RdAujR&/s'GF Nr:MW@>qVe)I\& DWo=Ad *ֵ0@5r6B2П :j)jT-#$]9I't^X> d?9tZs9E^釹`*H{0KZ:m{Nz󴧻ˑf)'HU`.L,$W)I/uɉk:gSъy\Lu.4mH|=˨F~>HnݹJCWXbr<EjN8rt3aox*4 A DT5vHLoӶ"9h|fHp8OZF()p@o`.e!~XAkSJ@:4 'I%5qIĮTK&*Oy%:rPr1+Yt_>LJϠ?>5t5h[@[t/ZuvZØk; nA~ U,I ACtQk >sE(ȦZ[1d"L!@din| j ɖ\ Vm)d:muiݮ+ŕariɧd& 6mh[f,)'ÎKiGIv m=;"P h2Yu>@@XF"vlڝb h@ddֳN-abPp͸ض{LŁO8ڈxeBM9(.qפmDѡjc|5>vX4G;NDsܖ-Lm_ĩY!WtV(ڽBR¾(:S% A/ ) f->MFL {j['y^~)iXo.j_r(jȄZdX{T}HH,dAȻ|5y T[z%RnM| 24x+x @f 2]?e De;Uzio Cw%6 iz.cX%3$t`9> F$GLd2/O r5\ ~aS{cj}}Wʳ=h(9ީ@YXcҮ &w$‰W$eTp=״lN@i8OB[~_~cHI2.MwW,oo~ brjT"yNV7DtjZH? Xjmez;+fF͞P6tUE-qQ̗ #C4@rT+ CoB0Aၽ8:Dy+&8B(4Y3bԭO-I<,%BI9fIC`ɔC0w9룓J3tM,$DMh,vqAd 2x@3 |!}SSnlMzιჸXDh# Ex"ڏ+pr7t $doL7pߓ){Χnn~7`v횦񷾺༹;8cnMɐ> FFU yDf+dr^r V 24㝾<z58Y uc2sI=H h#Cy(ɱsA aUޯ$\x*v RdK`V1A*u@pZNx1G?p.C+JhCW]/2hX@ U/=}GfkC_\?qzu̾%mGfS ʠˣW]+FM~i$ͺ9+@^]{v8OQÆ{ &j :{-GR=#@F@ZWy}>fa_{&?`O@ ShS> =CۙD&-LЮȈw b@!"q AL#D @)ְ2t=G < #p({_4O(@VpnEMʺ ߖiKwD?W2@^D&ˮƖ}e# 6D6ˣ /I{7dķT|λ As-bRY~V |S}OFi և^)Dd}K-02:i0xFzN?E;`sAgbu;r@1Ud`v+iLw z%HO( έ˧ 4RK+uXNP[ ki|'u\ ijm4_;X:d80OK} ֣\dV Q6Əx`47d82ЯG=-\euq@! χ dzB">YۮWeys9s V%z?z蝠 $q;x:( N8WSgqPDLdNГC d`L#d4Sȝ op,Iޓ]A9\A@F[698d8FD 4jY^`o\}&- 0$Hx ?K`,QoUeZs, !1&3M@Qlhc_յ,`) :u3ΑN`7 A?{c~&۝%_2*~ngjRedelp"TtNfx8zyAXE@&݅ !vH;iޓG2F>WPo9ne;2 X 90X~ iG`|P0]-!S`\ E WPY)-$ !%~g6poOuRp,@pSv2 ZP]8r /vsӽo!] ' r`╢Qό'k?.uqosKr;4}6':]Op.ZI-k`ݯvv*hЧ@/f%K_q4 yƴة5 НLd8801dC+3 @ mJi?x@o5+/a{R|ց6۷n3vؙ[rF[lX|ȏg':9m3e~]E'z]6A|>Jq.ۇz6@}2݀Ѵ0:]*#qTOom5>6.u):hwO>*i9Ed(d0 dw3;;@.+x:Q 4k9x @2܍ft0@wʓ|r/QY?weO5h?@\!{ (@b 1$7e ,9CVJoe*wL d?` `d l(;/)̟O 7 e/rAb( !{ApD[!8?%l5Ul׹1\_Җֹ"?,0xs 80qBͷAvsbչyCbpW2&:3 Gd@yA0`i6q{d2Koڀ]e$@޲1DZ^{6r4?݀UZЍS L 9PTӦUm [b^9&iM[Zo隭BG1@ *]vA+0Ձi 1Z%oL-rq`"'6wQ6GѮ[6rWPhl?eZG6.5 0t>l| .cm-r,9fY\.Sc+M XFu8 P4" 1ͰNzG1 '{rrϽByCn)bP>)R$eP)!AX[-#o@lV}<>{|`p`;meDb Yβ`%ܣ' OHg6yFĐ2dXƜHg cQmw OSvdhr͇>c~TqxE!Q&29 FF;y=|Dze,?> :7=; }'[%A<|һ_.l]YFppeLŠ}Aj@dd1rr[9`.^zЏ28IXv;\H&T`4Cr,q8p3BGhOAޑ% KK;H3Ȥ..fsN҃Gw`( ?4z ({.e?vƸy.*OQ羇Բ$ך_ړȷV(cܣe4 L+ 8W?>ָ&ì9鶿jbgqo*;UXX)MfC׹4݀zu@k$2Hbt_փ¤oI4#c[xgm9zEHty-x1q gr9 03é$&I$`G}&Tbi׹X_((s~%5w@ǜzK HZjSTx4~| TUuh3;tb~npi(q[ǀK (&0|G!)ƴ6M+0~t`,?AyD2.7= ȍMPIA@@p (H2L$B;mfWP %%Kt.9A@o׵<\k9VXL9{h#3a0aM?@ܫގ@1Y;.{%Lρi' dd7ՋSTN^w5߁f -b62 X-S GTMB'tp8</卾}VFΗAR ṕ0 p5ĸ35kt 5@zWv*Wls]l} o 6[ULj4uF :--oQ|> |.UEP_w@y==׶8 Fiv~rF} @IMk%%X;)G ĸx@w6J;#PH.З Ld<WR6`& _1MV+%r_> > 1g\ϰldC.澲Ng^g]۳\=r\\{xSvRH6ɹ>b?ެ&%X8ꖘ1w ibS0=av4 mν-8jtowo㍿@\;/MX=tBWJ@ $`Q6%HN z3pcrq$dxSXx @$Cl6@f iL~@̡'~@ޠWɖXkf捼&28TN\̃ MK vr9H* S1 @j 4 A?m8=!>{yޗy8a5<Lq7o@I[?F"F=Y݅N}-FMv`(&mDIN-KV2]oRjwQ]g<0ácXӯ}ԟ猋 ` rN-K<PyȮp5:ԍTQ*2閡 7sJ\ Nр~vFp rXuF#9W06OAAH*U d۲Z>6tx_vBǣ@>Y < (fp^zʟֵ@Sdp_ X}krA$A&_ASAw`=5*RPTKHMJ@7 FI }ɤ0Dr&Z*_A~p&]?^ߙzyC0.O z'7s!< r>n)?r>noܘqFov/'@ޒ/2JroHr| 9dO Rn^3kǸMKa#:hl@ARE%pܓՠ0%&q<8p݆>&--ǚ |`4%@Op:e P.2\d;9]nfJ}*L[;?efځ5TS lrPN3 Z:5!nЛVI}^.( r}>-!@'}\ T!a@jVm΀?[߷25aCǵ^zx/ueI-rm/[_p .v os3%\Хx_$mvroB i#_\]+(ũ\tB cLu}eSJY?A ,Y/#r='|P!ȑ<)=AHTv9gTxɁ $ Pۭ] kc0@ $252Y|F|m[ đ2j% ,suf!f .?v8';Ց$>:w'7z享KucyM4jTΫN;J:%KQ+@ib_(8, -- {^~}v&xd^ z[F?ĸ\ 辠OHib]e=YXىg7t @&9dL,eV $d4x!Oyl{ ̺so<%dH'x9ة?+\T-%韴}MLL{}nn?AXv3+F$v~KEFbfӼEۅ跐bϲ(hHᒖajՑ,?m^ti >e gvHN7 @W$6Z:봐L%yþ*>f(toǧWv`^{tP{N<;8?Fђݯquփt*`խQg\] @yI9ɗDOOS)-;P> GQMNm4-q$M^`  E&0+Q-(r,yX|7,1sZv?z]y~89YW]e<}[A:x 0Jw`;9@7&d`-r*u;[fl2z;E[zT4...R2@2zQ t_I'FM@;PF9MZ:Hz`#y|V~O&k)70qqMRŚza4GNGx__-^Х4+@^7 Gr*@:rY@H?:To"UM3 4kt_eGC%;.*FȧA@> >|D~pf[Pڤ$ ;hRiсc-z$_CH=ficMMVb#J4ri|K&^_NZh_ >0G Bp=hSH:?T&J1 1~R dq@%˨q dhoi 45PM5]wF.FA0Jۯ9PtS:5m$ȧX3F/ a uA1dT gQ<$ KT  KF ށ ˅+A^@S~␅g/ٴm\7ΉNK:~\% >!)@q;_ѐs"fJ6S11dg;<@iJAG&4&v!oH{oqeIF顳d.W eH \%iVvp+ͿLJpi#Ϳ>`,<W2*;gy =8@pJ`5G M'$ $RjMTXiX /ɽ XOЛG?|R(HR, _JL`3 JEbYE ɛXvb @Tp0@Hd795n;j@p.H(1Wz*$S9^M~`p7iYf뚁'<|Ig' _U]gڀjU,MB%|w^)MQk>y~~Nq;4u=/=~H86=· zXصaw5%aXU 2,sН&ޖ$@>4J#$1+^YFe'FXc5|C5:S.AItsr> A: NW [XJ9Z멢THp.Ѯ@' >< @&R CIvR0gZ ||i(L!`:= IZΣq O6fߩK}88A@&ы 1@:(dIxd?VOYU7 Y@nSIyB #y@T,>a_svHz &=d=H!8p,) M5M46'iֲ6<,XCڀnJI@ =50cE=2 VA| $*J+H.$zBc ,@ L' 'ɎOG+ЏB2AΡAb)b7`t6PI\TJUG DSV(;ͬ"@N%AAjL_`i G˸$}.Ql}|z[pTTy[Eޮ>|[ +"c",>~Mjc/oJ7PnI ͯk&b մǙ2V 5Σg QA&x;$VVˎs\EXƿ[AF{'*ZH* zH2F (Pm.2H~y/hgBk> }"bbLQI$I&]RJO-4P$*`) p9`2U \ ̇` ?@b`BTwZB>10U]rssS1W`"̗_Ǔlyb5l}zs>AsjDg^ɿ-yf>n} 9Vy8h׳|CנwD](8߷@,[|^ӿӧJ6d&j~ ȌW ZK3[C>ԺH/:$<?SӴ!Wc~RXUGWL AIY P`3?aj| Чĩ?eȤBV2oiW$dK1j T+*!?B(oBP53+pSGfu<4LMKq]`@ji&d$X 5pY}#w; ?ta7PeEVnT7SKqsӘg*W>@MhMmI)J]=Lr,yF I"@ XAsεCA︭֬6^}zKdV2 ?]Y,Ryk"sajfU3,b5}{"<3@3;8">1ɾe%joow6e"q;0Ń-Qr6ܻ۟N-i0_ ٴ$5X5$' ^t!ɻˢk 3_cݸ2eBlqH p`?X[Iwr89x:E"`ۃ<,#~3JYk,R$TQWFI.MdUp~ٺ?Euے> $Ţ龾QFL5#mNiwl9>=KxEdI~"t?4) j?uH 5kn%^E5 _>:lEOv/]_O ) 1zfE@Le6oRZ*d}s2G#2X lS*r ԩ s5 kɓs)rG"d|mc!&:;5  t9BD}XM lZ W}YfbB Y# L:LP Sj`R7@6}1 bPڀl8/=vS@Yȹç$+m:4=$Vԩy!?a-]ˍ2 ;ů[u.Hz'qߣ|b4x;t^Ů-LeC޴<Pދ7?M{>NAZ\DRTp u:r Yb`YB7kZB<%uPsR`:Ҹ҇sU'LhWcTr``8?c 0ifYt9mIjyT%" DALؗK1QNzv߶Svl} 0LZ9Set2^"Gl $3QJ#[փȵT&$hvbN`5X J%Y/.9W^3ꕣa`9@082o50JK7S'i=r7ZwS1(Z+G,Þ"O y&>\:^ __92_v(xA9~Υ}&O;2 .91Gp ӊDo6; ONm}Z73sֿ;}R7"8?>C0t<LJ1>p"{1AA7dm=OkETXv@5S7=h,[ )|,Qb.A0]L^w{r\7H5 v?giR'\N;e`{K?qש흛ߝ zD"bvE%Z|EIqOVLT5wgˈ; Z.. ȑު^ǁKT1d)|C2-!A6PA4X u?K-T1:y^ilv8N+܋ex#┦Pc nԼLZYzq9!2&$k_Sw6޾ ZTnmÚrTe898BxB,>(iLjA(z9]: U2٨+4Je),HRFr6QXM#e&"2h( gp S d:0x sOƴk? Ov@mV^@232{ J ޤL/}$P 96o_q_ٛR+d #I9MHc]eOi$#H2KяA@_Zc5r$$ga0rL HNٔ dpAORdLǤNFBJʊ@q ;cr@&CD2A@Z+H/ Trh5z~aSAO@REgfqo:o|g@*U _QZe+}>,j*q$'RLhJkz5`PK -khs)R7lQ@x྆F*49}e Z,[h(6S٘'fcXʱ~RuHK3@KZ gg]FF%h)~ލj7|jxy1LZzvNݾ;sUtڭz_*?|UR+E CR~jRQ r_ ZM'%6h|Rt'@F}}e7\`R"&,$4JOQNyA=DAľ`_X*oU~@dnjyt~o@T;,09ׇs=XVXw(ݧ<sog'0s\x >~>9쿷|/N)bZO/@FUzg&s7|%=V(\"M^䚀 lr뾟GGzśL&[ة-h`0Ǩ Ak@͂.z]*Y'sa>ЏztH<cLnbIT=C?fGnNN~23mGO!wzh{% {+:n aZ.#Ķy~qbv T_I73ZCC7*ˠ?|c{~M: XEȍ  i0bmCug{bSF ş*snGm\ؗHGD?!:_oʯG!H.ɩAr$e0Ɓu2ğ#77/V,~/\@X~3 d 6=@ƀ A΂ Qdn \G!H _ ~J&Hr" &ځlJiB#D)@LH3[T٬6QkVZLRi:L6HN,9IHd`H~? \C[/.cw _gФ} H@ H } 8ӈH3r=WyJk~K\\2\&'J H(e'I;vLoPI2\ 0l dbӁ4IRv% '^@I@3oJ"rd5H2e MuKa{Bp'"/Al` hB4j&[@mw"rnbn#m1t#C1rrtߠ z dX˰,%a ,M7SHBA }o_徽ީTN9p <$ޠ\ CF.Q2M^/K1Rldc}I!ɤamXJڕa2 $PE94-n"rL(i9>)|J۾߹v[;Q`!wIp w5{:t}\2$qxh! q>G[?!ظ`-ף!C,Tb@ =yO:'fPAmX䨣<i9_eSG> @/j{xRux(-[Oy917S8c<. Q(M+Do,_o6vD Ϙ WAAw NO?8WN 9/=Hه*w%`U*Ag|~^`X՚@:( HxRm|ćCٌ0|`mlbcIs; r"0ΆX#m0Da1;4[=mv\}uf0tQ_ʀpcl:wգpY??dmU8.]lk8a~ =X_Q PYp+#}];N\T9AU"Ȃv,uƼXf]-.yѿd{X !`7p{ɾY@c{mrhfR&ЙTiMY@l/hVPK»DT6hkbvW0n@Iej3z1o=ZL !K / <} mOp0}thy-g}B8t%Ś  8: jd>籑@SM Yd0Hg$>4 $  '15 8fz t.=JLgCfG@"@gƽ4ґy^=6e^`OBW}k@}x|^xz-X%-aqu`u}̑Yһa߾O^kϭc%Kւ 'ZW]>xQ-is@ Y cϋ[w끮;[z1~RToOp>bzyz^yH +=TLd8%|: <\^\ݮӏM&>7o8ux't?7".:"0> J&F;en5\Fp}. ݊|"Lv\[ʄmz/Mң3Yw $21$.A#?dVn; ˭' `!Mq'i0ҷ%$ [+'9p㉙-—<<Ю^@7}nxwx {4_d#K@>y<+Xt``5"0%ne8gݝ.P}UMK7v!C*2Dp١Rr'+>@~v9>T??X.rA*% AMyJJm :9ȐWxmgPF/I}Ͼ`z;Cm(T*vd70gd`ڐAo&`>n#M$=s=DV)xm5t" _ +: G bmD8nësuAC :u`qOt6ÏG+a6R|^+~܃9{sø#0w``iOAkWأ,Xds?XEktXA5)TM`_qm0pAh&F6mFg鐈='{T{ %֨X>vN 6 ؞`ؖx~&1*`j0  c8RHuRVyZ\8t.o ڛot4(q;;Ф!@y (ÕE7(0O& tRY2C&@Ӊ0l.L0@ޞE_ǂ Bm |-vK`츑dy5,ߏy>g`fuaoq>@}q2[k La~?ea a`;܆wfk9wkUsVǮ#avqCخWh 5bͿwkl87Wo}?jAX߀t+l~9H} ޑ=cU l_h%`Я@/ pp1݆zt PvQ]GZ*w]՟[0?g}c&vґxxdPȸ' Po(̿b }cEcx(agۓB%#=d_ip#[ }' &Msˢvwۦʫ0PyyW2#T,-DNIR.@b2p~09Ig~v S8=`|лg'ǿkρ"Ŷ5XmRh  9{,ɂH6dŷUtaMRǫw>b}PinO?& yY V?)@H'WRCgϴە'4XpHd` nO!.\ q FEXBe7x'je<0\߆^}S_#Xx ~e{X/ϊw@S7dM )~vo+@OwOG˘pwY߂OwO~ưFH#Hc&aõIAd>hV@3h":V~~vCӁAD`2M !4IH4tFPծwl=ڤ`?Z!;YS=(H#xƚU3AO*YK+i 7[¶\ JUG^K)ԫ̝CPiu᮷z`Oלȇ<i ؼtapsTbֲ d %`E J-03uP-ipB3Qp V |-LSPAs&jqTD$97:`~FP&ohRh2?^Z :dUG[U-ǟu<K+{[tX8UekAGYU9=L @yZ F@A`֬^~f*+etgjfi@S48R3ׂu%:A6G_pPp@"CH5IA,`0c7\ש#/4Akw6x~ \Dv z""ri/~o\K*7 32@DtIաo }<uy-dk$P- Qd?,1}7,߭ P ְ>V ɋƠG1I<00 )zAiQ/L ]\sIܡ0CCucd/ww6޾k~c}w (}A_D z)DN9h Pl{Y'9dJ3:EkwBw .c7np^s]>3=Drп#W}VG7D^s{IZ߫*N~o.&Bo`%9H3 ;Fz ^ K"&^ ~C6J+vq52zl-ceOe"b24 z8 E&I ;6lX$˺ch ǧ#d{Cˆ61Xpb Ƈsc&#Xwa Q^oAr6~_v{. u?{ @֕7q1/EL|{xs  G]<{XWz@= 6_xV5 2v#rx;JPh>$fu d3"h~d ݭ~X &P:> T.pN-qGVmg>uE'r % 4I' UZW,_ɞKn E>J&Q@؋I=X $a,0l 1Ic)ж@fh1pd@oFʁr2PcC=s {>U~GD.AtbVEAz!z^4۶ڙ$`w=``dWsOP+8k@&F n,@9Inݫuʢ *Q9oQ w*- ?ukUrcXۗzn:8TSVCJM KP./Vλ4pU4RnpF ]yFm up%CQ bw)t ڸOtW#m憂vѽnvk=ܱupODwt͠nL6uD 9n*lzvg[ۯ-Ñ".v#3܊囅} lk }Jy2maOՌZRCdIu'F&ڟe4F1^Elzv%VAb(V OC C!_4Gwul9pʼn45t {@ ^VUBwD_ȓp ϭ{cC?tC}zq~]=3>\nm0A"{$ȋۋ@*X0P߹"~qh&l{p~I2=Y<]p[ S'_.)r^WƯVp/x|ˉxDad"-m=Y~pp_vl@Ca 1Ao`jY#̂Iwt17Xy B|ɼ^}yQL.ۺ*<[A>*6j>Hm^en=Ao1Vυb /8*'3z 잗u=[Bek] %tg}_P 2B\j@1@Ln_N7' v FL禸XH *@BƠ58@xx sswLe;C_csiݻwJ|NvѬ}k!zQѫ9Jv2YņX\o٠3Xj`70{:$Wh8s,CAn{yր^99~|]Vüʡ=`yt8WS (-Ӝ4b8m|K.?IF_;>y҇km Y5N+n}V (- |F?q"X#x!ZȞ3mt3Bc3b z34XЮˡF&`KcVg 4͝14Ux lxT7ZaG:lGw h;D1bp3UG X2<"?zID*FO%jP |*p,W ZA)ʠ H&YOgܙ|xHoĹn*zu*F:*N|%Ь ThuB&U4r*PJbUQRO(O*zw (Qk%Tjܡ2 ޕ%VkeRj)F=@l\zU%|Π2kp:[U@TfJ R)n*S^3( &~g'!v|tkvլ @ Z2hrIRIJt>TF3p4^PU7PJ#][?qC=!R(ZՂ&hJtRA@S #WFq5M-x96P4%Wx9T >FuQn|Z\=r p_4㾊L]JPˌT{=odwn$*߿hRwZ"o]>,A޳Ç׫W^M\2 szMޡ# kb|F4d4-drZ1;w~>@؊Y1@ RS<&ݼz$)85T.F JK 1;f [~|w܎|GnR ֽ6h8u^y陕`SmG% VJl3rhPUЮL{d,lTڔ@H YQJ׫m\;D573%G RE}]+ݔzp_H3hyO| VtO RUvsC90h"fw;\pzޭ]QAq5<`՚g>K |$9 6.̊(Yru2 >6߿ʇ]oɃR{l*nփVl;V=pH{~>j@ok (w0LRlw>Љ'Ew~ @G{(K,XlGXƱ5@$7@#)SC 0T^ hbH < IDNܬ xd訝:dW =P+{]pl@%7)f2f[5hO{Xg{ N AI hi }+H֥+;21 egca2hu(mb[9hcػ4۷}U њj ~H>߅(̺hd0+Ӿ/|ڥɼg|LNx|NS@uH :|!`2]8 J>xћwD-b2BS8N+C'IL&1M@ c0HH%Axl@#L0U#ai>0N;؃@st: w#4XI:pSm6i3t݅:YhNWlx^GyK;A4ZLllo lڨD]I2_C0Ϡn8d AJS"mR7Vg@z(krP&N`#)u]%PB*B5SW'EVOPDETQ QQ)h X!T?P"wS%5T;zʁ0D Tzk$85ȣRPDSȧAQ g]w"+gSW\|ɽ\_`V䦻'-s=\Q8ᯉm7gxJ}߻9D0?I 8<8&irqX~y=|} z@ F.q쌰.yafG=)^rϨwxwu(;on[ z"7][%W放'f3t36E 2xVL#B{AU_*k>Viq DY)&bpzHkX*7=Q[ >uc#}VH|5`[:M)7inv `3paIwu|C%PD%}zd5~81p>S7n"}c$ai8~:m4%CZC=<[Wv κ nXjǀӠ5Z;Dl.(+IC=/.*-ח Z-w=hp0} ˏN>p=fH%x  a: y_D cj@ [Հ| /eAp]!Ohߙ90燸K;W]{~HFHnl;ݖzFJ\U Kw:h;eMv[d6O&mVVE0þhp@p_j``_$jLNl>ʮ\va!=$}p|50V%^2p8ƝVͳ\B mf1v\]D(~R M6v`43@qOjW:AJ &VqM|Pfj*,ԫjR\~bG!RΌ ˧@U2 wKxr@TZ&Sf)|J*[ʔ Om~zE \oZ1U+tă.cT'@y:Ez-ZugR j :ڝI!cUl*j : AySXJu]+&XB8(PI1U5@jP-4*~ J@*U,R4ǝNRP 4MU:*JAPr$+`JYRW.4\*#v_Qi @+W49_əJ LI fP g PX5D},C Tm*<H-ZU5PHUBIܙ@C7*[A @+sZH rAp]@DmRe(Qz]od.$O.r7!2v@o:>q"Pt[;mzR@{c`E@es$@Cup ״zQ`gY3&; aتnA3ر}WxFssb;,@_sXƠJ2On K,~8𝂵eC(7Nl:84fp bK}.t ZZv8o'`60X `ˢ x A}ln4OҺtm^iZϑF67L{"n }FD@۸n8w ;!,1}`c$^;x=$pZK n>;DMn*n `ɚ`~TON%``j86u:6hW` "\ \Gl&jA5BAg(q`ُ/g;I/?co&Aaii|2rZ&s׀gnˀ]Ǿ4` aiy d SHm4H28 Cjmyڋ3v`FjAɣt`:irX` H7E m/$RB0HB 0t@㽎8ZTh/t`p.a0e8P* 4́nb!;4] a,#L&lN!=n)hCk oIDAT"]yQ`fvݬ2`O2`2^锓CPSI!D2tUؙrr̊@)S 0YA$)se@JT LщzTB)i%VS恍D`#BdTєk9 SU* q:(QM10P59ӕToPY۝|]B.Urd :tm6(U;Z]+Z_@͔4Z9@=V*^E`5ATq Ӎ@Q@V PhtR sCu9gYnqkJRgR8ѫoh(rL7.J%; O~ V k`yS P]m6gn}ȬptPTȁ)ALVi'5}<*AT*|*iH%,5T tUR $^eЗ:GNV7K~T [Sl2ܣȮ.M}6E*]jd"dZ_*r> W9mp ܍P7RZ7 JfWkWОs/1U˖t!@ uѦCs{cs4. qXE eVJtɱTMϰ懄9Jt,q"ݥPd@۹?S- jqDBů מ[Z;? \?`}Ni]VdB A>;Uѫ<&QhHj1hpC]NЮ?>Q˜\p"GH7 Rrդ/84=?kH=qc#5:ͭs^^=u$8n;-s#bг!A#%@[4p&+϶`a;}>F=󜀲@9(~hQ,O }=f^5xcEW}T-{,):& ct.0Ѻ7_(`Y*1Cj4v= `F| ħi8 ߡ2yS\p s|812p: TI;>;.GvxG eW}[My@B% Ra gCI &=0>:R^p5ƾ34إ%ɝ R:m`#D?-=M) j&i!t lRA@2V ~! PRF[:%@%q2 {0X owc'ЏjЯ@MpG&#A:Y?+#4T}?hM>D4eN991grY" 40"仁*r,Y@DIrH1Xq Z1!:ȦlzXzT]*= 3 f m~l\1 V\O=:fUF24:ەlTF6l ە㑰J)(KS\UP\I&J]2+WgFRFpj9Zz]DhVE@ey+t4e9VA =w:@$r]KޠZ @;@yT;ʡ S6Lb*䓢.`)g6<v\`CܿtOџ}@}nUn[`J9؉. n)d]md ЭNw7|T|g,4_{@Owz s>Ԩ\9ېP辈n Io_tYsJk@ GIZ'yy0ؑ ced|j BEb {Ϣto^ cgE[@lLԁâ ޾mMKv9qEs?Zg„$bX>`6cܳ4ZpN$S*6 e%/I_^m ۛfpbM8cj@aJ?8OnjNXao$\%w". [/CbunO>l(ͨnlj۾ :Z0piQj%j+aD/d=tJ@ w( #xM@s}z5Q)4v5}@#m5upV 3T2yZڃr \JR*(?Y(Z!(G)1`ViBw-T sf=q#<  tÁL2ppԐoZmhy1|dfs`dh4kh#x, AAjX D$I'H dd0!2 N8БS7j= rڠ+!KX :Mx8`]qv]ݮbKu-XF[XEqd#4r`mbz`ô ޠM>ԡ nItNRltv`N@ elt`k(aZOZ9j-КETӋjf" l=bB2 Tlʀ:Ra4)B`P%&NW!0 Tou0Xk(] A[R\rd4"VVxW?r@ҍ+!Qj@r} T}Q9ຸR@A@;e:lRn;E`}FGzR ARXR(-h T&TbZ"&z2* *P(JT*W8TX Pȷrʀ<é< rt,WeUSdC)r\truP4TQn3@`v@-jWUɔT7Tfi)ڕKኂo]ڠ,pD7t[㦁TvW~r>t+2r$d/;(]v^ue.,}gzhjT㼞}{n!qT, N;uc~|fzTpI ;DiwP'C=?зߪ;U0V!-ćqGX bS (K.@K\P;Ƀf Dv8sty%G8F`+֨ČqO5޶wK]PKnX֒wȪYG;~nX@J>a@e4`m`Il}@ !@I f%tP.}.C߻r;a7gt_ֻ* `]:xwM﫡/¯../Mv`dX/t%+  {0An\m>kIZ4W.T[V|˄- .|+*K>\2AuU]!4wz~YG<:YȖ?x=x=@&^&)8Q|"%0߁?ֆKq9ޡ;v$ǖߍ]G6/|^_P[5 #lJ)|Рt@8zݫ4ȁ=3_Ju>on6h;<2r|'T@E>P<[wC.<&[ ?7hjp'6JzX ʂ% `9<)4+1~{gJ5u/pglVyPG_=gA/2 \ftAAp[ WX4l&0 RM\i5t[[+B0<8>4Kmz$FhG}`̻]@|gz#O&K3|/zeR]@QU8  WF(GCACxP2lu'U'j=o@n}g8UB?x }G@:wYl9{ =`/]Q9ivw8'4YJ)pACWG 0-sB;Oz>Y dBF SA ZO VJ|PRZ(#VܬJ4+|P4R@CŠQ+zUT;uZrxQzRTC) TSR`[P6RTYʁJŷ<-PTjt?Ьu ]}Hv@i80@ɴ*@i*`%T*pKc}Z@۪] <7,W W<,$Mƻ#ez5-W IcPOv']$/- aSy)k,b O^l% p'91wDHtK/s{Ǥ'86[ǃ Ճ\c3$Fa3|ΫaWbnpT$FNUOI)0Kvɫ:%kk= Ֆ^w^e 9V>3?64^'7ʸ˴ s|~c$XGۆ`}`aA7Suǭ2^K=+ uJ)qO hgYg.\ˋ6/ۇ:cw]Cڽ)+ L@*36L1Tf 4>wݙ`NQ: Ht l/\62tiԏ Tѯ'{ͲST۝G8Iu]b.,j{4i]t2p$ڇY vAg1GI\ZB{ T@=xjϘgljt*6Gpc6[}7ߞ#X "D =j4|h uz Gap a0 a3xo PJ Ddえ"D""ro[[(0뷑pDD d [-/+f㉰ ؛%:`r t6pq6 _Jt6pe52+e\J1K)Й J`1ZL(V?t8EPL6FGt`J 9#8@GRBh %:lT`89X! djs:,"lXMNB~CBǃ j*C([ W9SpNC@,Jtq\,ʬ@ds )d:ArVkՠXSukAp5W425u` ԧE6$tBQM)M%)QF@]DVbrs>,ZWS9X ֥ʑȞpƴ-Y)6*so- wİ_  JބPN WbpԒ9!0X(VkP^sp ʮ@ZAo?a* ;qp~#m0vQ8R;$XJri;[TiHe`ƺ [ʣК零 cRfKҢw[3Ȗ}W[;]h{\ _ ӭt;۝LwT Zas+[^wǸfU}1.=w_WyR2y$] O6^O a YDU_cY8o *ša74%d~6yN%qOĻ>c<ՑLKX*[Qt[ r`W[Stp==&zg-Ӂyh ~4\f],dh.LFo$@F2H LgmȢ O#@D&TEOxX F SbXA8w! 8dH$03`wD\F2tbtS dR$$,po[K}a@/Dn lphb-:TQ:!>MvQAB6PNK@Te0+6RtX`%o5;+:j$@-P7U4VMVVMSp}՚]5ԇf `hv پf bWB&tx Wm-@i OǶǶc-MFb6l=X- ZE^_ V:Ak߯޼4@90zoYlu4{khm^hXտkخboZ`M ͿjkFJ)#g--iXok6ցV`lz6S E[.zf+td2,`i2Vpp |C=2[AzQ TtFImAtJz>k> 6չUmI-FY*ty`_u\LoX͇3 .[;yk#5^Ƀ$8n+)-MNm5Hj$IxՒ((u48 Wp;dKp e C#`BԂb b9's ؐa-%+^&%Su}/DUܝ`ͶM5X61e]K *YO>vp>0pqt(8Eu!hAa7L{@7Ϡ<(>4  5p;[* P3@\G ȼ4nv2˟П*;}a#Z?I5RK[1a55QV5U=Sx"oFqmEt1:ގEì扗M F?hX'vBEwm)~2\}M[H"$= Vl[O n&>I+C'c_PAX m{5  q ~U HO<dFx_A!O }HV(;Cac^P >=—CM'Lſ@kb3 @3t2F0_# h_ct{.ҍ'[l r[l3]tgM4 7vol;B'`tn /// Și4{̙ kB-8"xM<^u'Ox; Z=|9+uzr'~!H'Xo:S_cDC=`t6P TWT+)Vj`x Ul 6hퟜ .{BKN,`PLXמ9z{ h{ev%PawwP&@`._i`_گÑ.ӑ9NN)JItyH+b pN BFSHh8ɷ|qVdXlR\GpX8kKV@!D+sQDdWTp8M}&Vg&z |kpSƅ@=Wl*%8 YLUb`nՔ>í5@6Ŗ9,E.0ЩX G'vZPc偎x|e!l % ZŁcPl#Cԩ!_F>BT:`RM] Vr9:s7I9:5T(snc;j7+ٟ8? K;TPv=aN{]J'`v &ilLrl9PO.jptL` $qDv&,aw>lX `[i&}; E*U֢ mEtM'&v`j'(xА|]$cc18n|?ۄ~ߓ;<ĂAc;w c=1OibpDC2odDd 7W7k۰w:?I=`&zdB '0=${@;@KplU֟8u<7Z=&`/kghU400L^ܿ.Y0~])n20Kg`cM ]#55|A >m4LGS9ޮ%hAel.j* W _Vj@;WbGW;xKkwhvS50i"- rFh478euP&RȎy'|Z\@Od>`h2z1>KYnClW[=iMףףD?} ]{.{(z`4؟u8m{ {f X tXZ6#ŞR d;A_MlON=?^cGUA{1h_S8~A%\_)1ߑa dA,ϋ;cp#;ߗ ϣ~ՃJP(~t:y@zU:T hnxx&| v9 *5,US2p%6zԾ_(#S G`2 |L- ܩ E2?x.P@02H}&[|F UVRC$g#|x/.y#0o8>97޺~ &luл0vYo}5!C/Mlv`me-P;G!Co;^_4˴̵ځE`ufGn`I] ns Vgf-D> 6t~D9NEȤ 7/`K z{>޴>+[D)(`* xd7e%el|HUk#K$˵$V3 tvMc'S !:`5)VA:RiդV:MVF3-Y akմ ad:`%hkVMN[[l*kwH`i[E;lu[&̧k/Tx?Io腰[q]0Czl,еazhYRcƳ5l K }_.@KjQ̅؉+, `5:`$Z ,>{.2H^>p,2}_~)х`ڝvI8;@u`{2C4/zPt:w gttoNvahOtf=;lt~M:=\_c¬ 3cC8vY;= \pDBߌN `L o!{>R-P7"搫46guҁYJK1v=4հڹtt+H5ا԰ t0Hg0ث`c(9ݪ{8-m?sh䬨bˌ0`NK]sKńA24t9ָ9,׽g߭/V͚U53gt> 9r.F@~ SC12fʻHG:}|v3cH$h.@׭r'Fn[6%S7K4,o o6k[AOsǑGp[ S?BWR2ZVX~i cYNlrYs 9p66͑]Fz!9p x"r_J!t:`-Z@&ջH@>Y]K\AG6|GI9ZH4#؜Zr8| *qG-Bz[4AoI4$2D2Iz4p ^#;Ar#+L A.Kt@l4ﳓwƀ2%?H h(A^?л$G}8d(ycT*ǣ=]v<aSEbLIuxCI 73۳uZ?CXX6RqdIFƻXf@t]FgfEu$qr,;GD͑ Vuq{*?c}A&Bza;'ӻnMJx^Α g}_Ƃv ce!] / [ֶ `|ЏGT<"_~R$/@&I R(!& A%L~&ZN)q<& |X3}䍽]~獠+9MR)rp,d Gnx1jzbl;Cp'Lk_=jgŐ/6Zն[~l$rcoXtt!p}NI@DĢV ?1#p3_9 y-=de/#9@/Ee+뢴iz ?C7JMӁtzr< 7S @>K@@eȄ:{?b`{> S cm+U?NЋt wI-aZBmqJ6\\%].Li}K+H%@En#h`$#lF&#=Ez'۸@oQ'zN98dA5}/3EXgI}[WWO#G2A֗+x(G߁9\0I Y_F˧ nO;Y[O.`gk7P((A YdݙbhZ CE^ mvma|1tсwZۅ;3XV tB3zځBʩv8դ'~]<z>zhQAzJ[5:a~D/Q͚0AITܠ#)PI`+Q ?I+U|-{yh5Cd>-3Z݅G@%B_u DƂwc_vz? Nnvt v" 6:A@| Vҹb\ D-Dl"5NN;͕p  qRN (J) 0L!Hw@jɖds Poş-9@3Yr'0)Id t٠5KrYr&pɗbG!/J< 2R@l 2lDj4 HLP Jh&(i@_+:ȠT'VzD>Npd,8(gCHqh<@&h$9 B*NR$ 84@2h,` vh_2AΦ v8dΒA l@2@3l' gĒDr3%Imd~K ԇ\`L|KPSbi )v(2L9PT仓Bj2ρ7]dRL#_F p u"AX8r@қ'.{K?H>I" DtZytoz`#5;]r\;퇂y^J5dP🧗ăR<*:)9GwNȱ|\Ṉ{M"C\ nFzSL|Ku2Gz@2}e A  O|]g͋]|)74A:bB/0dZѣ#A*nIj"Ⱦz77Vt9[Z Lе2@DRZ@g R'灊˙w<92Tahm] Sv ՌG`'l X@%xxf}Ko$6icJ<@p! L7Evq6).]M h&Ib~#I9-e*)\ }AI;t0Nng 4E c/Hzp;c_w,>֣'W7 rvo2ÿZNAlag/4*(8DEH MѐM A9?3*Z] e]T2C3((63J Zk49u+VB_\ ȩRa>U`%E( r@?ןY& TH"ޙRDyD(vJF-I,dxdO2\r摆c1j2 r lΣ d  y@2µx@h C͐I jL1-!X/> l^hJ@Z,YN4$˛G:C!| e h`F8| K;"S)}Xʃ@- ia9Y@.)dhH.@) D(\ L 8` ټ'8 BIK.D!9 ) R$rA4Py TrA32r@BrAfS@5!q` fJ "@$m1ҡ@,]S薋@EHq/g͒ 2C#x u$͗X*R&VIn:wK'ZErD#(7yr{Y r ?ޓ]'2J h8 K8v|y+d< .2=mLJrpqqwr]:[$25V덳tw@U4֟I⮷~c4X20mj^q"^tH+ȋ2ś r$Kaٯ< |~>3 |! ? vr2(LY.d`?KitXuΎK6.ș)3A%~Cw.o0?bJ\_B\waFهWx1o_X?j`k>`mPonvYƩU]:õ@]&a:aco[jϾF/ٚ_s7t,Bt?K[a=*- Ak?Y@&IZB[2 N!!4h`-֧WlDM t?@z4V}(9ۿ32 8Kxΐ_3YltyI4ݏLg]A?kRP{h}10bߠ&¶~{fq` `Y&4 >O4w$5杞 Z{B *4Z7 !HfM(=6Jt; -D.3D -@)\}NHkT¨Cj]D,f| ZMz@3i 9{tmWÇEVOw D^haap{)w~ew鰪 TSK-7UāCF\O&{QQBP@%@J?Ď[C@,2r JA_ۀf\FG_Y ݠ߁N<xS zstW^ljB//࿧c?Nwhu*oh` !yLmx]r,xt^b$A6K~&jo?Jod"YoK0.?[$^h 9Y2R{`#Ly /lc0J͡&92|L58$A3"[] |]Kp9^) |s(]2[feTETK;[/ 4bZAΒՀ ;)RB dD3j9AEɸg/ SJ$ x2dIa0ɦXB@&OPs( D)@(X\=$bG ZB/Wy TP ~ A7S.A\2)| SQEeKRz7R2r HJ PM)gI Z-ZA%hw 5R pHx$H*:u!p8(%MVѬ&"'WAHZtY] _i80.ct}f,<Arh L9Rs8(8O8htLqx1a) "!t[$K&]o{CG.cENiU 1H:{hY~hSxĎ"qVDtCB;hnx'.:Hi"ǝ_sAZp,A =.ѩ A%<;P?7xu~./[O#{~O~U"D`%ݠ7HT'üAn[h-5\3d0Q-Nx@^&oq!K<,d:0t_ș1+끏PV9HrD+dѠj(dS@)y N;z?UfXc9&7[?XkZkB Bm5+Vс3mW}mkL&uIz{_ę1?@tjI~03j5z'tpF^ALbiK.YDc r OQ?}T zW1du`>z3]}!>6\[mQoH1NGT6ZLLc`{hJV̝`4; q?|7  ۔Gr0muryXtAۀ&#fdS zK{MSm[+D.^ Ls>^7S@.^Acnj $e*mRC@ q t328d7zh,ac@L'Da7v@d@Mt ؞b-s @W-l@A~*dz^Q AJ>OO#ψ ~L(74<) HX A ^<@PI58:vMD҂"m+D+-@_WRG4u<+9[GVN7nt=Nno z?:J|}EP}n= 2D9DI#")$|-!sd'-p-\DjJX r*$Ƈw,JG SBR&9IHR^+_HJWm۾8_.@Σ\-vlJɥLAΣ vS)dSAHViP%U:x_JI|$4JMhr͓*ɣA X/RN\ TH,G9 I) (e! >hpB}e&HJ0~ JKA™ ⋂G:Ac*ad*%K@:9׃ zn;2)Z+?uuK޸_X:~'>SMPiD[-|W| 8yBGi2]F2!!"QfX8K6ETHx?+:!,.|5EO\Qb:#" ]G:QVrNe8ԇfu_Gu&ȍZnvsxg=dL !j!BaYDLA9̮/Znv`Fcf[Z^7<94"DȅzLzew<ȯ2H mG &2{|{HroǛC!hf !.r;:n+jm]d)l~ԱguGw4{@ /+0fBΘ؏!4= 2[WhszYHzɕ "wx> hB$?Ÿ z4NPU꣭r!c4":~lswvaCh[{U# 2ALP jyy2 b32'㽱Wf%9A g K8 ^n2O?t MAa3+AM(~ک14t5&_\õE[AsuT?/_@g `~}MKd4AY41I[@Zg7E֤0 \|~} h2p&0&_wۏT{]!ǚ<F䄴>z A3_}tM/tq3Zhe$NѴ~RRLZV7[ȺV"ҍ䊴`ʆ1G@hhG'*k~h>>t#=_ :R+duz:~a'[) rY=L'DZv,w#R)<='7\ rJ=xK%xku~a 39GXC\M KvV]Cءga{,|py+&iz7t6eķ#V"e%}ITIF`5&mkqnvYptg"jZ 3" *"`A8QT~+%Mx_Qۭ_(1GųwH-v_ Z^T8wjdJaA(ZQSJ&!cZi2"=NPZ}u&aS}v>jц;v"&I>"e08}`QNq ݠ٠8E|2UR@p#òra@FiFke.sA_d $>o?{X.IG)t!AwIA{/;?Ψ8NPJV8d bׯƦߐefBf8=X Xgfӓvsn0 Q_ qpϥjhi0-sB.#0.-?3 sO9F{jse`U6C%B ?.xgtw.1; Bu?ае=귂=jPmrgy2 D6N5m2Tu.1 vg0Jd;C㽅}U3t+xWHkXD^>>QHK# {\|^oU@z追SqۏAo>Fb%q!7G(+6 bdSJ)J> F2I_bn6Z֓Z6ku+yb?#접H\\($R 2 Q o5-80mJPNf9unӗA`~:AV>Kׯ]8xބةԓN;ǥ]1|r_  '9ЛA=Cts@1b> M{XN twp33T1%a,d: @846hE`h9 (c}"nU r WT&Gs5krk)ͧ%@%37W&WwH.]܂V -T@'8E=) HaOq<$Ӌ@/R ιZ i {ޟ-t1d pp)~$iq@xqF ߏ-2~@)i]$>joq*-m8O787~ݸND7Apb)ȁ=:Yv@zL1p鼲w,?M&'KAs>rG`΅/Onq԰FͶ7@\72X{tTZxΰ7mOA|lDZ`$mgN'd@(gh7C?BCQjIL:Kj-d;Acrys;@:I8OsA}K^0~a=ȑ2`/`:0i|?hp)7i?n}j@pp3/;V5vGϑQj&^1=Sm#v:"yZ`P T2,`f0HrGB]PMꃁ_ؠ{3ؤe3Whs H@IdNߨ*-bS_pݦ 냠!c_Uz_ kZ_j=1:8Bσ /_ 1{4WAǀւ^fyNЗq~N`zns$ffG ,re 8H#HH[Zp WDDdOq5nykM(s-cmmgJfOk(v%hgV,vlcN)Rae݅{_/ǫRTj=Χ|wq|!Gv{Tb}XZo}Wnȵ}o7-m! '8C@: $d^nWsd{f 6&vzq߿ CAD1F3ZE'p8z#͔6eZ|_2a ji׮̵=UZ.&Gk#D@S\6֑ @4KA x y\o|Y]+Ow:GЂY#is{./{?4J]#Ҡ;a9 +Cjk{d}@2@o-0':rppk:ZXNy;xFMKqxߜgi?<<|MݷCgPMA)aO wx>+V$+;TxXd|?pwEqJi4=vՠ$]1h1ʪؕyAp3itުLkлc7"ЧBRRh_׬=iOvau9w&Ct9>GZr k=le:a=?C\ M6;BAv-pw @P xHn; ZexzsӰy~ǵn~㍝B{61uT#:`!"O.#HRR t؂ @LPZRj()! L7߳1o=0n}ƀLom:4TrB{ gAhBQ RM`d4m17~l`wXVslql$Xgq8C;g%YԾ-Ep[%΀IWo8K 8VeJxϲ @/[|?%=Sw03mVv6lV>Rf_cm0Akly-oٖxA#D Z a rg=+)G6F\l>8=ο9ۍ |srjm9XίeUzᜮh`[';@ƃ< r`} nʥ8 g^_+}17ݠim\f8CMA)d D$8oO8ODqj8l nSk˯,o0afH[e9"۶ްfߩ͞:<й4As~1z&u@ @-ohb*aᰮ3Vl**]$n9ΫѮV<iЩM "1HDg؄H!zm?Î5(H3`JwAh5V9랸-'I%'Hp)! \.M/XeCT_?w/ޗ19I?Il-\͉|.MRb ̩vQ- jBx3U &뿀s΀Ͱ{hm_>2.N+J꧁R_z#3:J|~3~/C;C"ބ)1_&ϸ ! dmн,=9z6B#SR#^aErepB`#UB nXQFGoB|̅q{y3:} fI`h4frU|ާ0Ȳ+m~  Oz.k~Uf 3خ[)b5Y}g;l(\&%nAr[~ g܂^{7OL4@9{p32}/%A@KRkY1F!@mlّz¤K8XVoUx`;98~z(WdlA6i=#AF@3PIVPS9t> 2y/Mh>tfЅ3݃CB] By@-B_?vΨ@hY*A8 g0N@,G"fANHMTFj6X[G5{% E+r͗7$# Y&y?S܇BilXq"7o>_9l{au#B)ftǮVanE 0s":M`)V3=-h.A=0l~wpsnXl3fJᕫfDlprK7$"!3d0EdϊHÂlXkf %XEm; -kNv:]8h)1Quot?zW{e=toA^0oM(9zZx~ͥ0I@ˤ{X%$zhv ߌ^; xssc @bgz4AEbmS2:nKaS{aeǪ󠥯3Pw@-2 y5EN֌ M@~*!.3jlt>n+6,lg[[)+n3˾hQ=wI} ؂XWa0Wf^ ūX~/-i(N2 9 8Î;3aˋŻ6 a .`7t#<П7lqV?\ @|e]PDVAO+4=@Q9IR$Ѓp:[=o?38rH>xU$QbwzuV usJ ]OSJ}9d7@t nc8"> tư85tfr pdVzr 5V jd{2@He0MdaKq+Y>J_Fgh :ZA4_+:,So?`nނP+K wܔt0C/ h MsRźd7v"MH% (}r3hZ`-fWa\i4T@@3)JdrEqb6PZIF4f@haH3H+iڂ8?-Zڴh4bm̝v"sfAƏG fGi@G,l4Ap.:K^FFpghiesBdޱiJu@qҏv::[S Qz~ɷZzx j-[}oYp)YkwO5Pj鴶˲v-w uG,j\mOCDر,R]큨a=&׻~`}Of@j_TVsw;DkV\g.[~;O9D~,f&;mϦ؜Qp.>۳"Nj:x=>_b 4O+?9ͽl K@$k)Jj GJ1&.\~/7Yrp=. W~ O\C.k }|>Kvn9t"/H,f CP@7e O}՜'PIDATx9p&9|g^@`(KI_@W߁t;yD줘B(ʁ(E*eD6 fhs#4SQO1(h Y\Y Tr.}ThU0(gmu4&wWpkAu J?-&s*@v>Gst h)^X @UXZ Mk:%hpj8P"hf` mѴҀ34xZhEz,B4HHLI7U[?&uKm} UZNz`U{7tPZE힧ϭH tPõ 1׳6w(Ɨ/p: m &sRmTC$#֮3::$f/inH{~mv6mv"5rdkIh5Kvo]Co;v|j|O[KVN+.'JH!:A>#p 8"A1 UӀyXNdp4P*ҽqbe\J:`zۇ= 墑,Zv'W%a+n0kBqߤ h-#XXNoF on..z"}nkra߮ ުv-VlYj_#uy sѠ=K~޴M hTԿD/Ch,I sK";Hn2f^ɥv26l2CIIKGA2(&Y?$~ d64AB4ݕp?""’>Opu/4nFйW} L s6y  l=Ӯ:_jlmeB9^TyUgJt${@18ꐈ/xdeNLZXT.`)[m M:ފK'a,7wBuOσKR]=o+B8aU)Gc]3XݺAJb<;:x3mE;D]fΊ[tb`b@8`,]Am~Cp!.ϊg1 {hW{T!,08 G:`䝁91}pY{@/з@36v 4r^Z 0L?j  ڭWi&43HN$28T s9Z6q%?<2Af'-K x FBb  ȢnQ@ʇ@R QkiGZ fNqfՠU4P.`Evi! lb 7h^ ܬqTmiJ FOp,AW?4-Σ:AWi3khø (fny|`#+5l| 0a!!_ ǫ 2(#AmE3@6I4I#HU#M4Ha6 *kw]30O2C~>XS켝"tak WH--N<;nFyi/?@\#bsY--5!wj&w4aϓk'"E41@)ҽ!:_18@N9 3%tD+h*h7]XOW{2n諱s4{q򒋌JEyd4f@qz4ժ\!ع>fo  _uŤtKPm:'(K@֮`rXbmqxbZ ]Vt٤.7\Ȏ3{;gi "r4<@KBO wϽ+'J5@ug0wr <ر12KLsXr0CwgG9[!CHO1p`Ucm?W>@eZ R"c% @qJ$QQTJ`uI>=a{^[x;<ї_NZ ӽ.%>!{Rm.2X%*7;h2 q "mJ)Pӣd_w:{~]ĿƠU%{n @{b?M{@йwN= m72| `Rצ5&s4{VOV+N[tuЉtj־1?WVuA3+ UlkeZ,c_Z cl@Foa4юJY<0˰Im:889*9ўBɔm|ΕRع䰼YYлA?dXБ+XD}b T~=?wHGB0E%@;pB 0\9E?Ao-"dE6\ XaKp1؀!ĕL6h9e @т|ɢ  eW6:㔹@u:xAw1uX4[/hJ9c1!l|-юD"i:v {曁6|c2rAs8"'Ρ1j"lytr(  :W[]-k >sewZ1u^Li.m*ڀ:i@5 Ⱦ@A_ΰ&3 [̰ 6˜tX6n3CCoQDm4a4S, ҠZvu6;S69nN.4B7M@}rKH3tm}q<$ Hvo]氤TD̮[-J˟OiZVql6ۯseC`RAہ::뗙vutw=k1t p+ii6 t48[2En$p xe _"$? '$@.FgfN0X'7aám9oxm)a4IDq2 x ZNdžR~{֊BW}CUwnXأװ=|W$[d۰ڭpZlJMVR;QB#amĸ_?z xkW; iv< L ܉%R #MhNÀz(Mׄ ꗰ/ýtv&}E*}s k[rG`P?.o'a_=O}_4i '~p{ BB'sKR9{t}\XQ zEޙ?xX|t@G۟ow%Väë}[l^>=|8r^Y,3L~%L9pZ(Vc@D_7:m\@AV[ xjxԵ2G +7zA^c mڀѲsfi:\EStcңtܥ}?,A&;=;s;t,V"9A1p@=m?Ӂ ] x+O8@.D"& !3z=:Gj g[zA5ƞir &7=JY~v27 X{oѤH]C@gqG[0|e@3/pt#4BEi2N> Y`A1Yyu .+y֣&A:Ӏ'SUqdN]'[|&0Àvh8Ƞ&Х|Rn3!@uVi%? Cp<蓼oϱT#@_Yu"Zn@9rcU”,af!Cx ING>Gƶ`w1ͺ Fd.@OP ^ '98>ave࿥%.mCU_\d/ Cįu+ۀ|y@ $Ahi2CNuc`H󭭷~En0H-go3pi=knOB'o^mfnnArgy chKmͷc\g fz356A3H^?{̯~k^Χ7An@MY[ hFi7>ä*adD|C iH tpZA3u s(}HNe0 fr<< `FክFX,1nE{y5mɔ|K˽Iфqz @| wUY5BuVXh|}8" ?A1Pvj]z9Dl7k7@9W]֊g Jo\ocV 琥k@h)d i9ЅO'@%+xk}ɾ8{ IX|stfyM15 ˘b_gtOh냏mVOֱA-"SK G]jG_l,*uQӾ]52OtiЩ2Úun~~ܯ-<(x$:N}z(p̐YxL@ sv }Yop9Zg8a}p_E#zxmiomW% ?~'mꊎLȰ[ZuFcw?ࡣ:RҜƫ&kPh~%/} מubOû/'5,cX214}q)>!j"Uƪu"lyسa¥4;;sTsdE 遲8T/W#A&+8{R)hDmz]fQMNQf Oݞp\6GF~D4A;! 8H賠Wu,9Rw0VrJ26]葦o`8ȁVFK7s(Apq߈{W8µ;-lȲ& >ȝ:uP*r 'Tk;|Z)]%7{=h%/w Gg |<@6A?~Z؏T` ITc9Ré-v NJ T[fEP;@8(E4$ zBDzDӋZ@UP6G!}\XO? Admb& h&C ڢՠ$Q lX-rA#JEM8l1Z M n 3C0 [y Q A3(n9~ Gk;i3z j+ v~Z_7\Op-v|V`]"v^@#CNhki0hP6V|VW6N A{zavQv@#!A  ]Z$r٣w|" $DimO4N<'[Ķ Aq@ x }$2Jyzxo2-OG1 1P-H0 8 QՁE{ @S}䓫$>lt% Kd.8KNtE5o..ąR cO`XNc`ww×ՠr.ߦwny z/z=zx%@42z7׺{;)> >/}`H$Lid_}Jz6{w˱}>2#- Bl~Xe7F[?9DՊ(PiYe\UxQfX#p?G{a4C`^bk84j:pWs߫}*CNnPVeDKpyn2w9n.rW}8Cv(+N` 7nIv}ϗ3_޶G)nk?'dn';Oظ_{L9<L\11#&goF W;3_Nܜc|3 sSp vSAcۑmjQgLtBezF@ps8A5C1;s\P+x9搶[1p9f09b T n 5G:(3]H.Aqh$9E)_4[vP:¥֟}0tc7Skmllo@t4kEU?}_xxRF(QPB9PeBs8턱Kt=2r 4ᴉbq{RߜX\% }60&je`P@);kf?E/H@_Yѽy]@gn,'t $qh2;bi#2Z&vZQ2&I$$@8Ћ0A%.DJ0a: d"7cd<1H HPJ_n4}\2^ˁ5gWVE An]OQ?p(hNAǫh!`@>kӵ A7@24_sh@h$\PϠ]j--@=vGNmkVdw26m j%6 d5 f'f+!qEΐOWwn޳6"ש6oױ{㎫eM4T1tq-@oT npץE+hי칞$kX?5 `Hq~ iAtTъ3[meeAqG;{Z{) {ƞqDvx,ցaS h9H%@0`:*(N[KVG)uU86 NKd(cIq:Y8}|Cqu @zZmuAC)·E(/@>dKɆ @'NWEu;{U 0ןZ? cq#%`m@0 ĐE=gy+NQ~DŽcNK9,HN\ ~i .IZJk%` s@v;8ʎo hFSZ˽c:_~[<]fͭF##?NW$nV{0'YGPk㊁ uZQ/CAJqO'ZvA ?J: t I`LHۨ!di%0PL @'ɦWz$*u1)Jd]Bsqӽ.:Ko-)cPx _i>ZNЫ*` G7CƒԂEpј7)9pmi7?ͯ=|@#8V3̥0K{+ VǒZa<:3<w-5iE Ԭ XvTaWz@LϾ}dǧ>F~kw^ -puzdoju 08!7d:hbd(LF`` S|\:YXR@WMֹfSwىv w 0uG9 xV.%EԩOxE.zo^m@D %*!bϻv;ra"%ّXTCvN,00 `ٿx]'&uF#eGPūԀmSwv wI*1%VvZL QIcH[KwփH \! $Tmh d<9N.2xd*ȏKpW@'N"[m8w©`g&tio =TsuY(&4RflKIupdp=vCb&1ΦyCPv@R"{!:ϪGqP7ZN<[f4=u\LK;hahK An9b"}50S Bpq R 0ǎkCpUo{`\5L i!(dqYU{׫ͽF^-R|NrncҒ|'+TuRU*Q'@tӵ?`!@ 1)VdAu76fÚ%'8| uIw2[AXJ^D'J%?VQ+ρfl {~SU%0ۅf97vZ`4D Tw=N!~MVҟ+ӿbΓ** s vl:@Cj=0aoʼiuD>Dz%/8yӁkm uKû,27u=xϞ}sq콭xb[R釱AhpUz"pk:Dg0RBkA wa Ɔ)eZ&aܹL]E4w/G~ g[b)TӦj!ue|Ut47V6LŮXrK6|ֳdX b=b&k*]erL ^2=! sq}C?-Ġ?-bZm1K-V<Kk`Mz=t9r* ڜu:@%΀5LX:;D :y: pP] TP%`ԙZ pL2H),` ^G'RddgH a`$9 #Xb93d",K]uK1 ƒ0b#C&#VQ V V }yx/C][?1 'xm:;x t"D@ @"79x/1Y;nۿ]}+/XZ?|~q>'&5@Nǥ @C/Aw$ޠ_װqJ'2DE>(@F]wƓ)@P!-9 pA* a߄xw_MLݥ)0:eWUY,뺥eS@27l1LzU,Z^N= "e "H; t2`نi>Z#^ U q Dt.ß`~X?7ޢ9ki881<*ľ8uc_ Oz NN\.H/nQ\S1@!~!8!:EjlܧD \' ;:m[#O>4'湡QLX%pɶ 7m.28o ev2$zg':א.@؎l;W/uM6r_##k*MJ- O|#HӯF'u:8%7V#w-JW Z йdЎG?߱߄w0xn<9g){3M[0p1?F~w[|6TZuhb`x!+hVcAowWzGesYI9(F;g[gN-N^*AcS&]aaQur4+[j#ԧ'Oyf wt޼ˀ+1vLWk]f-.%9Q PJ@FP :PD_cĚg2#9D n#d0+Z?xr$0nr5p4p#@Y]F/ t"Vj1l&`_c$9,O&0!,Lo]p^Wvty d*Fvc;t\,p5Jv{.O4G @7G~S AoaPu= O!4a!p6N@. m[1b xR? _Z~, %i9Rφ}O:\4p2JI0{paC0o HmymSdw9fJPTw0Fa3lmm}JjqK95|E,vHLTLK}v͍K {c ? XK(O:~ HD8]e;d`)[w{GiX Q7%,۝C7'"FNH ΓmoH~m [O~|J"w^í96nP_C,MgcX M!Zqfv 2}u~:4NmEeɠ%EQHǽNooa52d< z3~: &%:ܘ;Vso P``==\L|" CƑ HV.Qkq8@#4b@:da61p0qlGUˎ|9s }@{Ў"` )b;`:5}B-tDS#nZi~ɔ]àG16'q&s(WާXv}PkJɫA!HB%lFڴ@%HK)&~t2 d(]fdsd\V^Yy2d)uF=_0G+?dV8&b4d00Q`;Pc)9PHH`a3ec9+Y,`!,_FRnd&~tqƃa YlaAJ(Ato)WdF [d3lְֲukf }"cm''Xֲb:v]|w-yibPk5!V#o ?M+eeQQ 't`<1ީ`Dž*y. @5uj n}*ۼGdW.=~ Љq'@0GS `"yj1|nZkpU 52/ );"aIsz.qzA]")2X2MvPǴbULY^I-rRKB;7'g4 )[!eM3@rl+~^GPFiJjAP+c+y.1(ﵻϓD$ӯF#m;.U%jOWeO: ÷tE]'8t#-Bi cA@3ʯͬ @3 e@g />_~7|/tsAĽk?|Xtfz"xlwj5&:YKm /j@q$y,;E;*uw{mije;[ah;33r2SxDƊ1.%0vĹauEf60pZ9H33ZָL9@ d)wOBB F~g ҁl)RhV= K ^O97u~ u %n/q#ZS}TQ*)d2R2X , _:7 DЍ\;mZY|:> z8רzsp}g@_TsLy,:J&4ViO. @/=i J[8:\/d7{ y2P8T8D‚elvzAN1&xd0ɨ 8Y~Ѳ؋t8H ƅl""$, atAS՘*[#GS-;%; ^*-uyƎvE"sPIiN@wEB_SoiߊtTc;cݣziҾRwT8I86,fցTѷ@L<С5hD.$!ꕋ7&S#9Y B9XcfRO>ǁ$='n'iddK6PL @Zd*#9Hh,}v s@6%kA< ҅d8H%H; ݀E ޫ[Mɞd`Ƌ+8>[dR #U0 f[. C-:KB/cIk \  \^ _m~^4hGMKg J ua3n^ /懳űE'}qČXG|0!x}x.XdoRM t? 9y/?[v?蚝|\IvS*[Yb@$t[C4nx^毳$ȓv\(':_V;8eJS2%unô7a*oP_۩=IF4pm;vIoD*|.Wu*}:WbqQ Mx†q/wya.6.XƟ޿#ţ}~@v] oih^@.9548kZ c(PA{S~$`ԠMB՞0mv|Zn}@t% P#W32\;#Bzϻʁ&Teb..0a!|򃜚eg%Ao<8A X`ڔg=:˴h oX9`%.S`PUQ4QD=HJЁ6R O{@b0e@UNG$$W^CP$Ic ˚~ObI5ptb7rgr,@~ԡtM7%QSDy99BobA ]ݨU[=PU9Zԩ=ސw -wNz󵠵] m+߉+[No6ϾqGAzt @ٹDJH2@:B R{}rSz+uМ& $GzIq2BDD#T bB AZ҂@O:KwL,'q29qrGrTsyQ< zY.9 }Ed0{CpK_t'[++nWhWg;ȹttXld,s/j$Ϩ4kzF+ +e>W E*_1+}۠ Ȇy n,>sEZ|Zu^5%<@O>3l\p!QB?NóE=·@OC94<@qZ g?[wZϷ@uen\+z@TFS#t)+^K(,; ٦B_spp5ȉ@}AF P ~Jɧ% Tّ$D26TRt2rO1iGtF`~@z4#2t+bơD< 3@ `&ۨ`:@;Z*id咶,淗"V]wšAA<Z.g+n$љ@/r?`qg`kXl-@f2d1@#-i 2NFP 9Av"d`>*pZGY&%dqռK?v׈oAC1ՒӭRW8WnK)8ZԲ7t('ɒL( FnGH%UAm& vH7&N}&7۱~g)ml7Y imTU BOB?*KE=Az$H V(p7rPBbN1ܓH%YZֿ_L.SQbDro d$T_iywINO%4 PJ>P&e4!R9,4HKF-dH:HC5REa G lbn`5vsz_D7`$XeuJyK] 6l}k9-zſ/윀,(W 2xI+K_i}ۑDI1Cԡq+|[< [jX _=.,|5jz[*6yAv3~s~_U{^.5K\ ~<*\]! óI 3ngM3Ӱ*rTdxu3:3Az\iz'zu:AzgZU6Y靛jf-cS7\άTjIKT`#5k!pii=]5ʡdUS鲤U.Qvڄ_AH;BT~li{?.OLnx?"fO~)@{ꮤ%a)n RA{tfԹy8' ?/6~t4љut P}@ 1'qZ]od*ڗu;upKne /jNjNSҧ _|y)'鲭(DwuuUeA;g rTD]֟8$IM3,K80zw q: ^}gY G]ۺ=~V~zD7W|KU 7 \ ݩ'dHa"БRulH% Hu@wH' gSHp){܅nI?q=0^E/W+t]uvP>9뜀p|IqAyXI`4l @ A{ec%il8fk):a自: tӹ#%+:k(g0Р+Xlko@m6Tv3,ju(p@`%R'wʙ<%݀3<\n< ?o=rg i篘O[3J*Ⱦ-ro%D.Foet飓 IRH L&# [W).xHkT֨cPmPw'i-k%=د0;~;D&q1o$ HI@g@VII븤aÍ@N.׸w`|. m}x;Nנ^sM[ZIk~?Dd:d&$Yr(DW@dsXK&Msg((fv\F[/T2TF?ʾRr3M$K)A et`l S$_< A@ ۮxKX2iE$ݖ 8;H W f8zeS E,ԀNqC.h;ybGrlwJW8*1*bAVj*]d߸PO[ aEt=)nP\ t9k]x@8/4raG8=j\aן: ^`?dk<8@:$b ׃KJzW[e{`&mqyZǥm~|DH&\%ɐ5N v6?ԝ6!&l@:_'A_O}%?bxƢvNZМ-T&kE lp6zh'[x }8?׸ ' ^Na kߎ@竑/׈k7G6<>iUFt8CghW΄czwYw2R/JOZz'5`OVW}OW )Ƃz& Zz%pw({T s,We&9yzu' 0~[aM.efUu#էG;yBC4r¶DIŠd.@ʒ? 6W _x]dF+HL V\IY \r0=eЏ =XB6ҒTDX!l )H# 1L r"(ZH+Z5rˀ@ փyȀc$`~h)DP#Vm.INu JWH@$=4x]3^.bjTkvjBu)՞9BˁanȉG.6LG`~+/~OW3hylyM )U@*I2EhNkп@c-d"H!|BVP2[*b@߸p0Ys.r/ U\J ,)d&w69\!Gr(pcT=҇hIJd4RIZ\qvTP9(opmM m>'+ZMTz>ع"N@bmx! 1Obi'PA,1N;+ u"hD7]f JK@H,T}{ÃIpH@:GW ȴS@6UOaŔJ1МhC[`tnw(f|-]Ar%% K{Iy@:ȱ< e  Y A4 Vo7ųۂL95`T+6+&/9ӄd.H~yNM|L\\zncu0p~MpwiƂ^#?~rS, M9跼}V3F[@Sl,}To77/ޜqJάD9uQl9gtDՀ"2p O] ܠQ.n 60ol\)0r  u]Bދ:Ǝ '_w d êo2I XЛz`1mZSJK||u5 y~FKVJh5l)"2 @t50VkVR%b._GfQ c }c쌕DZ߭c ܣ&H@,@ȮfW@a֦0jHMɴZz:i"p#Cwkh[k_tK~!!~%.ɡ=͜czEf>GUB+!p"˄j&1WG!֏OHB\,p*TY[þ\ 8)@sqAU|^xyIC"Ɋ]Q;Oꧡ۽-@ X.X(`d[+<ZhԋtM~} u>u$bvF7Z쐳&~˛>H~*t&A[͢d17_;v^xnч.^d{\g9nh7{ѕdl}}A%dw}CƂ Od>_@O*O~cs)7$|j{9shwPn0[41򽼠}4ֹVhDz-"GKvv&9)w*;Y)KCOTI7gC%@ߗKL9?>.Wb>0:#_LڳhN@( l;>da0X wa]R҉v czџ&@hC$(x6Tx'5AtsPGd3LW {63)s*GqQf/5MA;[h h z`I͉ &HB fNy3>T ,u.'dd;%e-JKet=\_@# I <׀\A1q*"RԮ(Oo*H f < ;L);Ks\FJo} i҆f=+0LW*PǨ΢hvNvMdw|?IUro /V#˂> ԧֹzMV"Av-'+v9' dWK1,lHc9~y>; ^0KCjҽ!_n_@\|\R"J(E Q,++9Ђf@&-(h%ˁ\Zњ5sI[@'D @w fd .\G2A. e"HpS%UւZR'R:A.dC+Ly|l=LLΏ [ 4/! @fSdW^Qbd}]ۻIvN r1h%P RzKpJ[c-j$Eznn׃t)qZgwϏp+Nɇ~L?F#˽0J Z /~"ۭ#B͓~Z'*I̡@P D+LHZ5ͻ֝\i&+tO5}9ϱ o[`bmr]F2$4#ID3Q]iIstHyA/%@1(tvYִrYަC*Ulw(' lQ*y wF2ZNIz#A3|!J)POZ(wu h$*i B #@& X^`/^a#ra#dp&mm`gl;{С9Y}$|iAmv]αc1gy |L' lHB Yl:{U%<1.@&'@@)ǃRJJF3Ǵ.Lh2 6^h+A:0B'D@ЙLʁ.K+JGtNҌC[sl`p 9e_`(d!o7K:Er̖̆&OR#} (`"|ڛgoB&#@TGO .^ fu2;[0@ p╩S7 ך,u鳆nG(vsf˂&6AgżЋdPtD_nZW٢}XiۭaL|`*WCMz* \1`4^w+%\\5S#I=xKM2|ॳ|y-Xeb`T9EH9?~DPj+Ve ]91NL0m; qSYj#];9| Oy}KA-v^{1 >tpb:5n0Vx<W;;OB ?4o\¹,+=QҡWXm`S Ms^UzTYa$a-$Ng_?145h7бܩ#ASX &)*"|c`uT| :4BeG]?/l?AeƺLo+i'Ok鐳Q|OY0X*yXOj:(Ө#2pԛOu`ߪy˜jXz>^pq[ CJk ɯ]d)f+ :9vM;hZur#~  >:@  ɣl 4ȷB}JF݁3Pux'e(Ln)%'_TzlG9PZXUӉA @vgn / ZX냚& #: c y~r$Rk yl*C3Jё ȡ2VFx3d # Y 4'PYa$ɗXpIkB.c0n !df1<,-(9d $ W&X/tON)ЌDi NI`' }LWD>M& :F ]^3SkZR$Hql~F^nέߩۅ- w%&9uO|<팁C!9@H. ) b(b"<(e@se@ )[-@(E@-(d @Ztv$y!؃,)AW>d09JKzDO^@z; *}/0~q ^@i2LvJIH8e-0Vg;<ޕdS)`<*Ƀ@ɑC@CpSП #.X?nބ+F~{+ [IgI?7 y6Gōk8ؔQ[O-?H|K 1%b03L{DtWS<K'T[8D#xo1^0XU/{ö:K@EAEC+QA }{O h ] Վqrt9{gN7Ԥ-'79D&'y3RWf6%y%Ţty(fVk$Y*>6!WsA2\%%+H|zls2nĂ2nTܡJTd>#Hx`H6vl6_U[pAdзb$\пheh=8IalIe~/ ,:b^ǁ::xA.M)0Ogr#R6 d'f҇-4g@0KA/޻-)( $]c-rgXbN?KFw+uQ{Y0”+ zՄVnw˾~#v_t~uV]uB #G-U-3կS GŤ8Z4{y9+wJ{yՀv9PwZɂ,~{n }V=#ɯ& 0U㩖 @%FxM4R#\ r@Pl;荙m/=@`ӝ@܍͟D#g> SԖ X39R^?@ڸ O\2+9Gra%"OJ%(þSF1Ch"LsZB%"Vs/miIK`>-i V`rӊj VJdtK[Jnԑ҃E oÏ@oBX彀iNo:I`0=PjsDZ` @1'2>rdh9ВĀn/ Ĭr?'x@*ca`T)Zٔcp햴 TW #V3d>~GJ::ɡ?ПuCժEmbMYpA lցx+$2 κnG??Mqvj!u 34z9DC~4i㐆$\s]hqmHԠ11n옗<0lߎr]6uCT*ȘR fL+j,tyE:+ۜXg+CX;5Rs;Ta,  ,O"r$:W_!E( HX#_PS\` )zC79jԗX:8Ì>bxwzC$m2|]eu?]j =`ms2p<'@'6;ᥬa9l H(tNX`D{:>EX@ne#Gd6@5{46EY6I#_oX>diX [ bYMLȥejXM[@@!%F@=n: 2rߦZ|q=~;&? $:qO ~Mb~(Mz(8+<77)$ u(W\2<&Y R$ F%1Zx@ՓZsHnЖv:Ёv@g:H{ NrZ"]ArL:Вm4R҅B`K&CAH e=srGOaCBNdЁ cH1@KFҝGiRL14VRi8)Aez)!td"ȡR ˾ G@rd16ڳD#@6_˝ -nroro 1Ecjy=~)-O'%`;[m 8u%:¡0Aڑܤ},.'}:sp*~48]#yU}Ʈ+O?rF7DS/ى흞FXULuN$,tzz')b#Rw(P,&UOIUvX8lZ#yvrl:W`Y Ś 3js!t4=IZVb;>V`Æ :qzfF}@GOSoi|Um@=[ "#& T fK&`` H# zY̥@{iHʀu<6dҌfFw40 Ď1ƴ3k\qe٢HO E͵yg tA'L?J5T}`g}#rt.8h@3DC.d0< O չdO:mYG[ FwځIPDdadRNqҀ:I P ԡNU^FJ3v~'Y%)NMshۿ^<"i&SӒGiMs W hGڂHGҍ.t+]@6҃@ z1F2J-C 2)Nڃ!~ Spzi`On {2Qr5$` 2!,jd(!He:(K@3J{4RE*LKGF,aLb$s@o) ldt~ r(H!Tw0@s|L` @k1* ll A``A wK \ێ}icf@k.XWi| s?^*L\ &dd{S{0w 2,sMuu ,KJqCG",n<"4$*Vf8eX,Pr\~">JE 3Ka)U>n[ }8)'@칠m{MZ*]Ib)tk!馤$˔w iAJe=#wu}G_yȉ\ F3^*<+STCMrNJ^#}\MΡ;v")A6&&~~A hL@i}ޯeb+qiB M 24uzܜt^#}W2Zf2 F1 ^8rҚ 66)3H8*c%4K _ӗ}|~xy.W '6ybpS "%6Q]'d.K{u~ x"6$%1Q+l3p;,\ؽKi/5 f.9be V%!ҥHF/bƓ@ lH+RZ((bb Z'yĀ_HeY1 Á@y)sUEu Lŀ.\Y*.`(@-_~*~p> څwvdP{z8(٬s"X;{CBS@@遺;(Nю6.=Kւ~ ' {!Dɹr;К"j١Ԇ=C;}ez[h=PHG^I?)i.|:W7.IC`o{?d(ڌs"T 2[> $?l!/4IRl t%!, |Bl̟a;PCT |q$oY\2BB21hE @&Z2 !8L+ceo f,X LnRb1|KdA4ARš 'Ia@ r "8  AHւdҌ2qtyM|a,8pLdM9vң z)Sz;OZY ,S &n9A6Q?e9kkDxO'O)Xء 3uP6(X9+J Fz61HOl)VnH*px"hz=PL,J R">Dg#lնPu_|Uz>~oI6G4mV.Җ Ҡ Pa!B麂¶U) /9ttx,xQrkb \ ?8o+3 CcW2AəgtPS 8Vv׃@d@'9@Dff@$hI+@m(eH`0xvu `rˠX&2%d#V;9x+8L@?[f}OAKEh+>q)hjE/=~Cd`]B0A#H; :N&yNߧ'o$sAq.@-mԀVҜ|`!m|b:T9.V 2'kA2e2H1]@ڋ`$ߏ\+69u= W0)$SYr80I=LilY Ao $KQ@= ]-@Wh4g9* kuMH"hoTW՘*)%HMC0QYd9N6Hn $_ ShJ*7́֎oմޡ=Ig:%'SF_fePD=@gYL2r iO:{J3w3}Adً)?i $K"  $d 0QBA#W@oڕ*x@ +K;`4)4yy7L s o77s}D @&"Wb^QNqrD,uՓ]vQm:lP#UlnjSl7;\C@2{+i i+u ҕT.О\-chҙ9>2di z<4 i-O I; r 6}@F rWfu<W֥X3@/h. !|2?&ye<'}l2> >IZWgmbuNf \?|{S}!pGK2AݸQ>9mj>Q@$tuD9$;2+sWh4?o6I+Mf GC'ȟ3UX}bKH1,;m=ǰ4M:\/…9l;.p%l9`0H;H}ir(Ur*)L˩zPA gˁɴ-lLFg7_-mOl?aa߁^[Zi\ۜR  &d}/ _G>ZD;Ls(0L2sTOL|:H-^NDfc̗J&d 9}`pGпwe- +s@f@ cA0KRNk~@PN FJHںWw!!4\:YGA}}:'Ɵ'F,H+$mֻrxɨqrxsyu@?QG?IBG$om3=s|7?-dڃ<{{t)rD6k)PB_j"S,e-ˀ*jيYAbit^Iԑ rȡ3gDr&qt9KFt-Q*.l9 878|iQYF t/e cdO  zN Q !f d>+50lZLo?ҞUNζQ*?nLE&&吢WɑB|-ci܊ߴ<ӊ@'.^1A/ R "'(" iM!?M 8,.-xr0ƅ _~ rEH÷@ i yMr49yt:9aR#\')"9:q=M n(Pby#֮ Al9` pk6YT`W]s6rENcܧx"Gؿ~ll_M~n 6k^) @g~ yM4闌7 r<~ 'gn kHѕaN $xEΠyrfL7ݩdT9T Xɒ$D9B64Ƿ !úyw}v\Av.z9$;ԁ Lnyd\ ȁLy@O>2dUH =2iLgq:ҁ C:0]h{v!$$Xݽ-U*{Rw7ukqw' 5aEvg}~/#keYs9nd%1{'P"' :71?Ru4 pP,h\-@|.v^Fj["`3lhYy7ۤv`Vl5j`9*Z5fh. ߒm&Jt9ЖTV5.ȣ::Ԣ=dЖ`A&u56h"jZ&)U@_u %ן jТAk F< T?6hji+0JS4t&k`#U6e;́*tqti 6bZ†N&( 9{SHrKPrI@uM.G.W=A-y@[Q-h iCG Et!fJ枒玠!i:LSC-^]1i(s?2tׂ9xPW ,ꑎwpn zB7pu]ྉs397 >3͞Jo}W̓_ HDŽͻ>Ou!7߄ӯV$-Lh90[=~BY5mA`MGknf Gf\mTiRchU|5tC+}QYj.{l^Н֔R #b"(u+<ZV6Җq .Ad4>=*vW />v|m9`MgZKx)n'ցBV:S<":̳SvT56@rN^^ >A.ē]MV.M2tFH;=p- r#ᡳU&|a[u $دv(a12Ti~dExiX: O@*53N>@^3Oԕfp1|-^GLYH% @;a: "Iڃ'ſ?GrT A zP7!x z~'?~$ %xpNS q#K<+$}z$h"~Egƃ겑^`[hHS1il$ϗi@&К֜tA(#?ߴ ˏ&Xiwuf.7q9p=y~w:׾F[gˁb]GzdS ;@,h Ak3x{6fSj7ATPGQ\cD!Bh@#> &Xv06K ɠ"rP XW5jX>;ZPo"Y4Svf/H'dBvJW١E@-jSO])@3ygd}3}jZJ[:kJ 9: hTzPLT*h E5u @G}1xt+\@u6OhFZ VuvLgѵՌ< P3vzsrQ&p+z ߞ^P Vg gU~-8nCWkOuiO-l~eGխ/†E um}js۶^ w/]s.Fˁ+( w@ ]Aq+su6t%Np6[AﻝS Nln,t&A`؝nlqY~mVmMdw";yx%pUq<:Nr 4 r5ƶ=ȆWAao, #/_K8&\P2= bV:,(:d3iR;5•V4Ԕ=۴Nݠ{i;@ liM9A@M`0hsA;i(ַ<Z s&cfa.[)mc I݀zhw_wOVd f@u[AtPWYTՃLH.5i8+wyТ7'iU> N@xp!`0ݙ>-<2ܛ"Dh' | <ᡫNMc6И@3/fd/hJ^i4ڑA\^{@nU5n>#K kAo=RP}`"[([a10?`ۓz,pvZuWsNJ>]l:XuQځNSsmJW/z׆y[<^:  LS"Z'TtPq {ɠFU` 5t4`=ǃPLc)6N;RN+Q<i7J{ ԉgid:,%S}@$JVҀ i P Q /SO7=oM? S# 3 ?kIzwZ7]7* I/}Ŋڠ'Aym0i 6@KfԶS7:}V(^X6,=8-Y:r#8E`]Yk]*puutĮ-Ju:^Kp\h,Jmjګ$\C'p]g<`ۡ;]Mw>76 dXJk< eE7W>gW v.%5?;.;ܳ嬋W ~=SZI:f:.95HmuΧBKCB cRP3+.` rdAgϱ]? 0ʳ{3X&lU]K =g5AqB2~Ԝc`GA} N3zݥ4@g}[:ԁUl:U,/p70| ͣ .@`?p' lc ARO LYv"@6ղ@mU]ǵ{^$hKmxxG{RЈF^)7Ȩd%ͤÝ% 6J~"|' hP"JT _npoDG!1JtE[3a+ #ӼF`͇>̆S*Ϫ&}"47/,ZvH:Z9 h_y-o)gef_A4B:l/-s z8[Ik :J з4Oisx|38Bt&PƁ!H\ŸT{{Hm;,Tn0 )J_! JDϡa,@t?ܮ Kpj@>JX6>A5td!^zG]QGC7Oly&Su5dT>Ue{lXiWhI>́pHA]&П@ x, H~@ݥ`po(uм 4)Pfsr =D&fπmD4khZճa2ϙ>lղ4ز՚5#[Vq\6 yg?2H z`?p zӅf@r EnRw}hi@7SA]uJAgvbpRۻ{t.x+"pPRB7Թ'T$T@%-ګMe|>@+&ۭ1] ><26U"tPM$5βh 짃F ^$AtvS8U-N]Qa<Z¥ͥuZAt@ӉlP]mTP2z P }Bf@'/_yEx'>󁼺A:^b*ﻭ[-SlygO֫w޵3(gBk:'2]@p׹-jz+ ՝= C\9{(Run l n;4W 5\&/+8tׅv; ÇwX@*W p]MWԍTtۮ,p+ . Ůz,D?tp* nRX%h^s;ߟP[Q@BU%%̉]&@pX3T95H/ oO߯פ8$ rsIj+JKK{z5:dx(P)( =O]_o#>ս*mO|vT2:g_l5KxhZR6L=5t`B@mhf9@URE/zC4TAyL|<. ?YpƲ3;?xǗ_ ׾hEFt]< Ta pls `?r,۶ ]9? G3bo/mz X]:u pKR`] +JlC}M&idӁ`Q@WhQ;5) .JRKZi*Vf/ft'M]@ҐE`;_#al P]@en\: 2mPK+`ҵf}g**& :ZZȫچ':kU 58n0ϷU ]M=Biܽ!1 *a: Vо[F7:+7m.^/vy.yM@M4Ҁ<PwTq Xn.vcIJ@:p;]RvJNAT灖h~|n|l jZjDoSւfkRڥg(6"=-/u%~7`VjP_@uYNPJKR/~5d.UàBwOjVH_k'p j5=>4\EF;_Ru>5=z|;5 I,TOoip<pOTyjsB%gT{4s?ZһaiW]+ 6fXкuPd--8[lگ:L\-W]ZUt-[~**٥Ҁ˕!Ze`ϊtOV]ƃMpGbLtSTw]jĺ Vs yD ƗRߥa;;+r.`˅W@Ac_H0ZöY`iRM;jpBhm@oYwkjN 2_up[7=ng/M Am]fl"융݅} ꬞o;y :3㪜PkEY#k\GfSWZV:QXz@fk  .9@+t3 2m$ڦP0|kaYhCjz8O#"cº(K[,H@j@}:UC' Գ \7X7o AzzK:P/RzXDYC\05M 'O/5Cr~dڱN{T;GtJKK`ԧ3A}+}P9a-|g?$%̶:ZõWdH4P d} a1?2ھ;`U5ǁMƼ,Kh]QBQ* 6,XX iحv9 8 h##}xg hC#8 S-:(Y 1.Q{ "t /SsscȈs8(p @GLp}gWчj#j26Saw5*Idl1Z © N]Lpz@w2O*.@T.J: 4Ut5h:H:V~a >)<)>'q2Rc熊jP5RCC|;w-cJ\ )=^6k&X|+%߰fXhON4W[ V=4{ǞH5sHpu]5"t?8s amb ,֙^GnzfZ.RuSu8l-꧱nА n (@ XH[n J [Ӭ:4C3]1d |( C$;N2/h-* N] PCwݹBu\V|ՃnfXwGt :k1𑚻{T]^:uGp|=9՗iyLިc-(O; Y<*5ilAm)6HE`eFۗ`>S<;쵁VJ3؝\lj`rE6[>zO<== n.aX" u@ l7p%s#4X{cAk5 ^uۭ֨@J{uܖe{4 ~ӜpZI;>!p|0O / ׅykw|0;Uz(C6Rz8 /-Z!(Ͼt[k,V^wX O3 l&!,9~F| Ȃh 1{|Y_੒}C%iś.[t"ЛoHz2}TthrpECc_[)H߭x"^I-/\ 4t%1H7ɶ l搀 bC c CTeU`' =(CGӂCp"*+A\n qxw>CnP3jZU;'U`Xt y8\y,Ղ$όgs*=ӗ`φx:  #:NYJs{&Ͽ'Kh$-rmal~'TK/`h'pPحH;@=6+*(:&iЗCOZ$Q߫qyQr3(_S\[k,ju-U h?WWXii wn DOpA^cm SS ?*-+N/5΅Euֽ|l[lQN ~BpUC_5V;h1zx8~*r[ nU,*m`h&tNU+Y"t/ ;pA)\pǩ;VhAbr]AJr]pcT@+`Bh^nВ8p\k#3XT%_-@nnw~mr ӉrBm`n%4MWh90Tp/kstV]-8薁rnDH 񹢴-BTm5p<_AO@Y@$9 N}e` zWy22y-Q*8,aDd^i]m%U\hiIvUj駧ς.(iЖٝ>?jɑJ&:)*AUp~:@4ETVUtҞrmv$Xy>Bάzjf$'AM̅s\$\N:x̿F}oW6ϓw Cb1@{6D vGSS{wQPn~=!p~KwuPJ$UœHJNV(.3csRA,1k k0IzɽL5@M1Z7Et&Qdu j,u<Tg36.D:j9;+(lNi;D Vf[#\`MUV>Ad Vm-b GDGg[:APyzT[KBݵtZPv]pD>\k1V%MlK].vFBg=Y@wt`G@u:თ6@}dPu^U#Uk ZLmT{?}PI@ujʘ{[tjfR$lU~xHλbrBҐjzÞa0K_9'ܿtuå`m[ 7MӵbƂiH*}4W`1T w (#kܦX{44c@O~@%p'k>L&ttAU/[uh:Yq Vsh!ꀲ@MhH Vƃzw pU}LU"YS[ɡ U \L*ǀ)E=A3>T]G#Vc=NZ:u\犻;a[ (T|e`vǃݬzhw@ V5\&]^v^9 $"g+s6Z F@cpuXmcQ8>J_*'M`e֖uћBG+aMЖFǂX.PÖZu'ˌ:CFTkZN_ -ꛢ`lJ`Y=i %D`e{0 h.` G1oHCY1lJѝ@M 0TgVAK2>KU/6Q|`B۩,STQ6(ۚˁ ~% `t6 s`\*5I]rjPIWmM8XD'<+d>#X+oʿO0c{xau{| #~7p - PXo?PֶCVGoWG@hjς1 aXoNfp?wI+`'GOW~׼kl>Ќ~S'n&=@@?VMtM@N ~5":u-} tױl%r`% +&l=> V.:PAթjM?]袪־kާ]=9z-^] ԦiGh':縔=8: V x⺕Xg ߜY-%O|W˫F}܅Fj EAddѺ[j:ەǭfɹ0&:g_lp~^е!S &6kПnji02Y thSx1#o%).}/5ʽ\Q?Z\jכs*g0l֝7k"6BhOn6w=~W4+`VE֐tz4m֜:IvMte"N끦ԥPdhCp lg_"W{A @}tRݮj /aozӬC8n9@gBvm+npCkRY!Xk3?y|`+[s7"O wd @]]ZD j$MS'M

    p !<sn~d0e^ 3F-}^}X Lb}BҞXϤ3AǩB@j}>AJ{AFR-Yl}n wúDIgp7 :MK@[tƃ7 ^V󁉤sPA;xVIZ n\AI5l;F XO:@ISzL@Õ85#@WH n` S5mkGLPR@^5@W[ڣ.`_|XZ} >R _I-AїZ^:H> @|WPe{,-a*`܀C+7΄X`/ F=˃4;W:ne+lZfMvuQ6:$=fGwA 7{v9*{1UU?fDuGG@ B7Zf 3Uf X/;zO ց cXr]:P;@TfEmJlҡSV>6ﶾ^X>5v+t9+c#oDzY~ZB|`R-tb]=~,ȶz1[_IN 1.wo=<+W*%*aGddJ`(5'F7-+ɪEfgٯZc?R ZbGFAee$cg<;h;l:҇@h mد:YTm+hy FUi6`aR םBPJ߾kNj5!MU'V(m˧mru? I'$uuke |PzA9VCV9=lzOo9;|+tkW܋s0b7T 6HS}Y*LNӡ<MVݾD*alFJ= :apyS*$.1BNE|9pPUU,XvS5S*eMK/!5}}0=Á00UˑDhI4NN|:MA@o &$@4?1?ۈTr_2܏E81򗟥^c6ol%?2ngt#Xբ;X~KH=2I.м}i;-*m+XU*X5w$XH7#o7hF}6* ;-9FY@+560nR;@ۅt7u@-} J j'i$k~r}4mu'˖ þL@ j 6ܕ[< @MulW;B)M7-IU^ijcNYp:CAu+@홪-L)zx+&tTSbX>#~u1: R@ٺHh-*`_FPo`͡dX57z.2~`Q+8m7VŀB @;hAe"]p5lvF! All\sǮCV,[©-p^\~~pxdoړ>puy%@5DAޱj"MuS&a&G 1/-@}?T$ep*U*CB?$ wO@mnПٶR*o\.R lZ|VϾ7EoZdvA7jhYRhx otUa˨j-@XɅ2QKg6 I_4b7ѓ6@UV@ Ҹ4tT Rp"6*,Uҹ@'0AkVe֑/AeB񈽳wkC%jSA&Bk.h|-+hTC3T0{u8l )9$nE|3?KoOJ*שA=cY6PS3e7ݭ 2iχ`w^4|e Sfjf>ab,N;+076@ɜ[d X2=9.A`wZdm`]t`YB[a @wɥ>OЃ@Jg0=E_5ѫ#C@ǩvJSp%qwT |?i6\;{, lY0'xDx(l8X! z=T< hJG~~}: n;)5@|zj j#}U |>^i'6TZa-{6nsVݻXtWʷ[Pj.CP w 4&dž%*ցۡ2 蠪h hj,h6_Us }7ҍEAm7~j h)yɺ r"}"k%H ʤ&萪,&~TPJ ڦ=NllZ`%k t:kX,шf@'egY>ž@R`)[ d"-n :1 HUkxǁR`L uէ[N=eD2 Ry:vKV*AAהbZ**A2 V[ehGKfI.n"T^wA/j,'[`bҋs`.`16&Z,B$Cѡldmhc`( -8-ʲcV?jձi-[g{Dv"ΦuǦ􉍠XX ];yRU%TOƬuE%$&ĖccwAy _]]z`HkX`X Y`VEBF)c!e |O[aG 赻ca YwDH?%a L6$l >$Vv\2n|`W\>kv]= n[pܭ= PAh2O6::Uhx^2i znTh]l#e@:c'6%ԟ F딮Ϫ.'*cjZhZ5S`.u.pL^VS6iB9S#aG;nivŷW[TK1=o)p9ҿnשRKMRB'al/Op;>Gp4 `4h7Jcty76tD'/[W~V2RT|,k.8,+84 Xv ` >CZ٪VЉb6<-BĨͮ[ m$/zy-(m'|R=~55H5&bMb7WLi])VYC_92֯V}6 {jf6z]J[Kkv58VO!X].AÔAkUȧ6m:&A'OO=V'k4/*T)hj4X);~7P!~+W xIWMG}.dNb=78i1@ \'DS9`?qq}U@=O(5BU- 4 \+);d-{ l+ܷlLn0wf)V1ɻ`;6Ipn ,7cZ>n5+QM- RLmnwfVx{>WN~{EWh6qB߁ 3k"'/2P{-q7 F|nuZYd)U%vp7堃*}.v(bVآI:mg*md%֨;fA;fM *QL`)`XLsf3G`YL`&Y 8ۊ졜2 YTg- N]u7P%:A(2i4C_ԗf`ϲIA3`㤢Q[Wm-S7u[Zڭ=5ff hecc}+F4<#wW"JBY za s c#^8TlWo`.^Z!4~`taG?=`E3}SLHEѽPsٹPoG+k_hM<}+ #UM}z(hytiJV%Z փJ=vUmF]] a's@|牺ԣ!0 64ZxeX]P*'a͇hk 6\n=4*qh&?¢URVvatҁh-_t F;Xvo^ևO) 4)K2,(ztA#> J쟕D' ܛP;'@~o snJ@: Py^V٭6<6&έ^_WVmFZg<˶뀗lgt0%ТNށTh:7 ;h VjF3XG;dYSp&4ޱ9 6ja_pjp"-Au~{,5HJtDS:^ݬmxCj:O0 t𑒸 TKR>x*t h#4S}B5("Щ:FA~E\u" TBd^k1pUkMf*0yZ:^\ ⟂.0hD/m< 3^P-o='=W!;瀲!>7믚w*y^09-} $OEI5@KGBr$} z fP%bbbKA[,sA+T@cXc@]-s}nPnbO2T+@kyZ򻥶HkMmR3,OAxEUx58r(e+A|\cu)דBVRXѠ8AC`͏SL`4~ѠX>7ZXX@>яf`:`- Hy4E@9D`K;K;EcuiO`$دAnw 4N&X*~TDZ N֕`rr]kXzuA7; ?!m**f2TVuCgyT /ZXDB%cw-TRj+M7b/i1osʞ5xvTvgFcz;|b-n>'5={Ѵx=0eE1Vi`ۣ`6Z{MVÎ+>^[:w;H*qH%@ jPnCk, Xa TfA'նI6};BéCG` Sh3¼WyuuW37xOxM1s^)\Ny6᎓pOp>Zwk VW꣞@0}-=]m0Po>?R}GYރO0Žf~piNnhMTMKʄkb-NK|5f9(Y]5TH&Clnls0`&sbZz*|ZڪKoFڻ;A:kܬw"cw" s4z>~xV. /UTUS@ë2MPj_B6J@Y\J ;Y` S}j=yn2Z瀽j@ *3)āM#IU@6:kY \bkfWV= n(E8:mԁQEV 4hյ꯻/6p;X2EVj}H -ltZ+1#[M Ha 򜺋c )"A` U޲L[[T2lāFA"@+@qT3Ϳw`/@?3˶Xvt<Z4*zv4% ,Ao/Ii ކbjъxuQhPZ Wvg D{v'hd~d+uңqG Ttjt*(rG &@3tMgltM@{mh@& e*; &IkOIlithѻM%ׯru{-1Z\I'pˢVE¾OIaў#Øm(I@ߦs*c$y 9ΩI@|)eZ&*;\@B4)uEw$#nQX:sWwbң'lG Fe6Aδ-hl)Q=Ѣ6>fs@-#pnMg#x1@ntPJhE6y@}ZtGs*NЀ#t/Д Bw2XU%6HGZdsmգ=EVU :Mu"Nzl}⸡v<|V/K· 6Iuk n8DG V <\}-knVUx|eM=6Ow̼x@콓O]yL%.@q+qԍU\^P2W%vhj&5ZcA]}Ms-w:J*̡Dh>mf34W(\W6>1k4}C*R -gXd`=-fUI1Pnvr}x/t^cW6ڗN]B}>&lJ$=&k;geӣBP4p>`Xk\`}G `h`-`s(X!Ҍ6f\]:>w ܗ`[Э.jI6Ê]8(&DbBiЌ QSB778OKv*F_yeА(+ r%BQ0!p7 sA}%2}2_u )0-877Rkm|ת쾜KreJ7DE[r 3vsFO5^ k =]_,ωo(h>}Qcn-"pGr`Q(ZÇ F[:D <.}bwP{'T^5"\P7{pWh+׮ ZSօ \aek\ X|uaץ`#_2*qm(tz0S~ vI}scL{ IiaN`ׇEaN5!}; ppMT7ٖ=^^_hl 5a=6hwږUA[: "zE4iۣ& g"B~tx]I/ Lyzl{@LwU@hdS h FzGҋҩ l&WׂZ|z=IEs'>=ڭfj 3Ӿ-Z*^>h|T+rȢ.Tc.<T6Љ 6%k;bM=oG:d&, A2P1"3f1G sNH9&w\uT5̞g=SUݫV\˙OyPCAyV~~uR%n#S= w9˵2JTb%F- F'zj6ӌ>@EP,cˁv4#P)-hL58@m:r)hWY[Cej1 jjm!zT- E_A#jVpYq+?ĉG`[ \:I;!;/yxRp Ѓk2x@38^/ {K,0FS_qsls֎x⟉/o9g;~qcmXhXyq<].:lڨ0.| -z5ۙ6>6-сY`7̎q3حL #/>Du+Shd[fT<|Vl[)[` , VYEZP6l&@AÙ@&2O n#(NZMf9M!C/TU`΋Bh=PU[2;@:VUUvpR- A:`Y Э~ڏ)cD(f7 RIw[)Ih =lc(e!zܧBeLUQ)5;CgZw;ˁ[k pH#*ڻආ B`V&<8~">T0E<@a8BE5/hu^@|i]m#ɮ0~O{N8P3ԭf+6]lr`xU Ȧ-e o49%g#5;2q)^$a04NL z @2+Ʌ6fVAqW1W5WmA0[N???Tva)@2_Xl%uº ~ 5{,<;QMPpfgzhյ:îw޵B bi5<$=T†l7&$7'`ys^++q^{T~ v1,l$)TJ!kc͋/KJ $c?6gkw\\>7[)#چs![1Mg &)]\/vuar=_,,h&G\W'\ 4mE;v:),} ևSd&-"|͆UO=.(KWuvӝJfSձ]b5}j6D> 5j7,gtnBL(?Sp}@ p.)p QxLMP0e9׻'SEX4kmW6*,_,5]`cm6>;vrl{`llW'n ,޳`5߁/}_v7e <.(hCKtu[+!aOQʹ ֘b8Tgv: u*ubֳ!HCp&c }=@.,֟|h/)P# ,:= v~aUkz:ZbL]rOFTV= vU ɨ%õ`m?e8N.ȝih{iZĶfsmfb]vj(z=W>=g \Kkv T{vC)[Oi󎹥F 2 yS,<䧈g^+lZEe^4LA=+1ca0{}(k-RO(.!@Ou\7 ~k|B8kvaS q eg*w3@oG}z*d*nbu`y$nw!&8jtnM}+ `}'F x,P_8}wNwS0:;5cROu[XP[ _.]9j!6+5s. x HZ Hq>qT $*~T!qt+iJX|<mZs>{kR>HoOj&vPX HRw/PZ.7nM)hf:AWdwszlsU@Qw'\ p& <T +)M!p>T&yKAF`+ z@*ipBseHueR:x_&@jjheթV6R?Ȱjxo!NP]x@EDlq!V]x`@wG`vo,ңK4acP)+ yq>DKU bX%j@` RgezP qwJ'n邯aL7(wB\wlD.YV֗sV_b?`-=ҁh/`%)Aꂍs"]*C!:3 +1 $(Dms C+3$+i1J3oW-p_nƇu ƺ?wuCKP#V:_bS p[]XAN9r rESqvk'P~v+?ti-C?p@͵("@2Wu|D6pJ_APx8_4`سH;NENП tbAB `|+Y%dDKl^*D (@5AMfH4y  ]3lxwbu{ԋ0X ۼГ-5XfEajX򟏰. c+A?iT+^x8ߩ'^+ȃ+sQ.@>Z`ͷ2ٶ *=0[w34L;| 5X'pw.WUs.M^}σL+'wh&RnBTkPwe*4Zն4l(jHi[{hB5@U|ځ*qd1 .&ua- M&l]8zbBQf1 y^O`۱[Vs?gL}Rnln! ߹' ո@/jwxКdvͥm1#`m퇸q_moq`ɸ`x h6B{ xȢQ%hKhNXǭ|Q[kDc;f@%PzVIle6^`6U  dGyDa;fwFnl N_CVmWw.NN005 Y])@[NFY{`:h:)Mw ,b`l*Ї &^,6j(A )l 2X4Ao U{~$?2Ozf,)*xA > d+OYnTte~p/ėMx5itz^WEkU|9sZ~?Giuc᦬$Xb|{*=+l:+TyiGRa.!@ϕhp @46CBpG Дo։?_\n_2ȮTymH݀TD  ^,.hoN;y/ 0(jVX m 6,`_HWDē{+|Kގ5 à򀃸 B)ƒ=l1+`Jk`-c:>q>jbX`嬢f]d:cuWe*ZwRC)^UJ0{g@[P~m~k󼪊Jx_૖O489ir ~]1 r(U4wLSPm@J7AkY^p\+lp:wzVCnYMmRŀ+jn/&Z3p`Q*(I4 rҁ$)TMXw;RzLg~e} 0@_RZccauA1Sp@!h] y&0(gu ԻZa- 4eG27'ʼӣ}g7T/ޯKofAh(Ȃ:FvkYA\NKYÕ:ixg ~_!hMCAՆį8FPpc N}FdK?U&v|v0uOkF~}󁀵xOm0Q`!P gy;,+tJǮb|@+oόy[38QCv뫸u[ h8z[E`u``^chkKiZ}hr׺7|}a߅OC'4!z-SSRSJS@EjʠZj@{@ЏPs-z`M@ciԦ5օ`ӝ]8 NF( ІƠ{gpoA dH4޼=/z}zL n⿊W -zgw5nf7 Q͸ ӳST/eU`lUT lj-k M[t5xl@}|65r47T2/9`05nbb/y#&-g k/Ccaۀds6Ȭ6 Jf 8?†P}}@=@8Amu@eZ&Rf.UrJ0q XإjZ $*`U26sˀ޺l`-A h㠚`U Q559p?0z^ro.s'TҳU߅2ȪYW8yUPy̬j<5Hq@8N._6AEĹqbű^ьݠ}kIu )u4OmH.=K8z |ष$$ I ݂.Z /VqN~gh]5 sTT's߬'p5ZIK_wub?=<λ[!0Ğ[3u6>:7 $g9D\V80GVVhE<-I³FdC𝃑`GvNz}!gzM433U ȏ/E<Xh׋ 揪<PWmA,U 벡d1c@T4DmD_x~ hDqNXo/۝hnZH`@pv2EMZkNpΏgwRBm]N]k-s:R1t\[6M (UlPsuJh׀srlSL:'kjQO-R'9ʓ"5,˴:@%5 @ ȥ>)ٜ`}ZuX{@iUg@{ՠi*Q AQ./5f Mw!Xx")G`1[%ΰr@y }ab~q8HaC ߝojo \)j@0)$i g j 6b4~KӵU66Z;kXMl-0oo7:U aAȎS"ЦOGxS-X twW^_dnhXT?'v(Z`=$ ^z϶TGٽlUZ3 m}446p\Y>-spIhe;׍X44J[uU97Q5CN)T*Ji&T`^לA,М@=*QhO+js]kVdH/"n:N7K.`@S9Hy €.DuI@=Мpn &4W~7@w,޿v8Uq>h 8 @=GdžD^)= zN0Ka}D7aC'<(T\OؤCEx;z]/Eዊʼ Ly}:v*r7~R{.Ncg<)|Kr*p;jKubWWP#w] KA~~'^!{Pv^*@ZK\^@ T#bY459h ǬЁrjSѵTbY͕QOdPM2WS>VtFZ*jMAIZo @MY烜V t T^;E: 8j ]T~aaU Y  6_Q[^%lO0mb3KAb_zhOIBwCPZ-`[`34yCs͔# ~pyѬ;]Oa9k?X9sn7]PO&˩ D}5UUP=QmP=Wk(2UK7&dhH])`Up]j)TՇ@5]` !!V@z[ B}VSKq ,!d} qR@JD Zmް V,>H0G`) lۣ4C,jfpKVY |A֘xfPHlQV}ăX6&i>UlepHk,2 =@s;AAЇe.pkP/sP]5GZat ИVmIo,>zTFKuMQK-R zI7aP+Yy! X [m zͪQFoTJ@yQNO5F ޭRJս`p㵟2dAY\3g)Mu!}Wz -ŋ`qmoA-H;vh ,ruܬ4P]p6(<nI1Id˂ƿv](prx//,\ :k1$@>?\yTʢR.8c=88۱PQ C?/( ^XgZ}ȟnJ7VhT>+ͅwIVvl&e\4| bσ{)@#pAϰ\ς[Ts0]S(r*+ح`q$ (KGh`R֙tD<0c@o6;֏7  @YTE]3|s|'[V:WyS'`<;m2\Wv |ܿ"}d5~`OR|]TPHYrx~iN@ LauK :HFI "ww JG1ڻº\* }*uEYe>Xu }H.@{.9N=^au-.|O8p9YNn+aWV[xxWu X)ed}sYVmd'Tb72Vj -VMj[CM.@y zT-ڧ~, "6p\P?S l* oTMc E+[D[ ʨ+ֳ(Jv#NUOG@4AP5>PG^H5*Pr*6r/9/F|C>u?'VTS$a];'}^9.:fU0 s o(5a[JȁSB]@U@{ޏ2:6b {^'ZТZQsm0D~`sFC <ϼ?:oKJ zxˣ&u=ljElCUmsz6Υ0Fb`:?S4;Ou75n3::_'ﶀʍ pMn8DoZd),]Un>PmP@Ͳ`Jw>dVٮ$@'ζgD;{ pzIZ8vYRX7s N|tBjC9wk}tPf[# t ^`YQ`)g`hl X%gmLt%0 ,3&8jƟ X4yj]';yBHV^כ!|z=@+(:63S z٠lƩB*tMTO@O5D}=hT6NJqNpk@j*aan@9w JP2@Dr) k'@!h( /ѿ>yY w$U[vV<tA c z @9%_w ;_=;94 ʖ+Q9?owif[,n%ۢuUU(IHi[ҀL~Џ@6k Z>nMCҔ P5(t+eEr[j4Ͱ#&>m6l? >;N-=`>s9?{"ovf@|bW+<')xkp̽"t6k'i%g5 ?:P _İ<p060!a1=´ S ; ]v|x(:*Oἔ6PՁfdP}:-vo/Ыk/}=n͉`n'K-Ǯ< p1 $S`OE α@ݮA%t7Ҥ1\pF]ZEԝ"US"8~,煴PR]'= VPDrN`\47ZLK`9cX|@o l-F@l3+ `)ǀiߙ@?=@ a PJ4mT z/ ZWlr''\} ?`}oJ?kjŖ"e5p5P I+ؕv3%Bm6u$ƥ`@agQ|y(X5j\ "-F ɽE汧Vw~ -t kA ,XJ~]8ue C58~o01N,n!Q`mN`$g35`ORdAX@~9wG6{w0[#`PM <\CyF6-zŵG&b_x]V/n@dJmI`XxM9I? UPaб*03y[qqSG/ӏ< ;w޷58໼Cu6Zve+4ә,k[ *k lcKN`EQ/Hbw p JԲ[X3Q f+PK)fT>{(PJ{LG -Ү::brzjQ:CI@P.c0WsX-L~ )*>lƫX1*e+H idONC*u@ͫ Ş2 `U?7sP:̊B1}Ǡ[0eq `|A綎%v qVkK _) o{> |' pE^c{؎޶-iA>Wyt.t)=@hM\K95ε~?GMnk<|MIP) TVXG P.%VfBg7؏} ќT!,Τ:hGv `S=EƎE=iO5O2Cj&B@<H{=X'M|>9T#1P*Q( {a._Xo~= W@iR^W ]%V@A7r|5_OxPw[wXY]*Afҵ[n?અk]?PT S|N2x4Q)RBb(Q%:QeUA. )_`oQd8r4 tD":lq=V lz`,ZBpw&{20_uvZWDwupFQlx V Ix W`$o aԠ,qJ 7U02tb@2N*! 4f., O(@L@BZՇHW 6 N˅j@u@ǀ6Ao@\Y5_<YҩRY؇OAy<`ޥG͹?zѓ8b-4F= $E& VS ,%m:L)$ـ,~sWe̲ˁlXQ;T&@tn ٚh hmw/Aͯ*O:ָπkTMx=DZt' ‘؂PfW_y_wgƄ aZ(&p$%j@)fwr4 9pJ0:!n ڿ77p=o0ƃɈ:3FwZ>:8dN7ϐto[xoffoߞǛEH҂'zBn;On'nRyWS`&2;GZL8'}U]G6nQ/ADgn|qm:w \F=jڥLP ( ZUMzBp16x`9+;և GsQ 4nj@ӭ?rV)@.-.f/nD xʃ[U|N{pR!#s@n5;)Dki|϶ȳsm| Cc8 ֟ت[]k yW9G@+]?V9h)3 W;)@i hVyy8&SZK%RսTi]Ґf #@Cb8: ڨwluTMu Q.*Or4v+[C}RAJYVRЭ!H?TbG=Z * [ b:,wlVHڀJB pPLNJ2`U PJ`q^ǬJ_3@wp='W]g|gK&BpA2F -F\[`18_(QA9nF$m'JjQ:2hl%8*Q-CG4c(i73\V\.|'bT/p)4ދ+xvQ.x@W@ j`cہo2΅r2( jfRVNr'4; ߱a_ڽ'xXE`8}HKeU{O[*P%l>PdZX Z Q{*Wã3hF@%:+k /`)di`.yt;zjx=Ju(},TMya1DAXmSyĵ fAma е68SKC@&8U[a5_u)U/k"2?t78Ͽoz߼?@S`;k^͗sM oU/@b=ρzߏ"7;M*hbFƮpw7m`=wAf*p&#9BtV%hovx!5^ruwGOKUTQbtv*k]YrVzhu}  ɴ>@EZP 2 (^k ish>Ԧ u8hA1hH&zpݞis!c^(m7A~ /,b!P`30dyY@>l`;hl6p8~VAN%ꀖgU8ڦ f!}Z? fivDmZ۵ QgkXPSU*Xz~iD(*mMGEB3x`õ_P}XeJ'!bHM AnurbE(aPY_W%J5<&(T/M|ELgJڅW/ځu W%o`UdžAz&@qhYQ":<>8@tIwߠ^Q8}ن<EDgq嚂;OԂ_ r\eb[ wgը5.=.1PRy ;IpWz=:uS*R G=UUb ]v3@yD 2a=> @qqAj:UCKh 8zG:eg@#63jQs.q teA~޽m)eA!q tF\l A:hV =>+u k [gyn҂z4yzd%d 4ź@x;Z(.`ՃnlWj]0sQ´J, }U~;"nKp)hCvv hJ nM{o NNxAx{ ~f<$]?@>0&NQvPUC ˑ t&n_&9ȓpp>GnG~"8zK/7^IYD7V^+ثwYj6n{*eVڹZ`ܗ DWGPὌeCө=Ү&T&{@^^R6+QpM!HAYuV4p+t'0_[Vv>maVL,NpV4_w!jQE7wN/)!}>PtW7']zD Z-:YбRRw_3Yu:=tI{S +\Cp1ѹlwl])@_{Gjy_ mnkCޚpAx"CCC̓ǎb;Kda=G؋bkং{\!^p@@E ,[`59("*fRjM]DL`#L"r^o %Xuыe6Q_k}'wN[K^\H&!=y*tZy?%/c(?DA,[RVYKQh X zS1 "eR\2t[!|2采\ Vk~wZG=Cj QgzURNj :t v݉W=  m-l$ؽ4c'ИPR@:T1*H{${Χ%--R@E;B*HRH&H&8eRkSUq/G؇Z;eu4TO$;\` ?XsMpok^T!ZeAkZj[ ]@Kt۸_Gv܋ڦClX gp{CmUt-yms'hlT ֹ͗pֆYmn\Z5-jঁ@P TRga9{AFIC?XxOS</c59HP!)4;UE8uOp=Ӄ`٣ʳbݤ,pie*]8j_,"Y@Ch $ QTՁ )E` V˨jSC-v ȗ:jAC3? `oߟ8&'u'&|_m"o,Bڄ *98l<λ=eyj:A lƸ~=y0!8ó|}@H&JQGe1 h, N@z%t>j*u5:ak>%ڨ`w[\PYO||/]9>sr1\ym/8h$pG'vh}bra?'w̯do=ᴛ+zK zb y'8D+1( ЊAf6G^jWw!y33r,wQyL6qr@&-v۠Ue? g_}gJmļ.;w 2pA[+sZbz c."p(mȶ<45pt[XAGZl n'e' B^+ FB«PkZ:Y#eΚ ץ݅p`A ݷv>ȾgD׺}`ϸl/X[Z ؽՍ^t\:j76z@mOHP +eWQa/y9)>`{ȱayw'c? RT+5 )!$3BN Ӿ?%pQ[U[{>OHe$T/ʁ ;f&ir)tfh~~KxԮ OqM ّ7վ<lo(Їg`w{^c}:i5:a1 :'usw=mp 잋nW9:߽mJ.ۨ0t#jfv:.ԽZt*/6l*2H{ZSnjZE r:L2)*]A}{n4+z&Ե9!D)`?k-jje!wT50〉S L:Vׁ&#w+6"VvMeրekqƃCQQC= :$@Ŝۡm a-U0V,ń:c:YRW\Pv G=*擠U 4%@2S3AiZ8 a@uA&qjtAe4A"e 6O -C[(߁s`y=1me8LiFn&i$P ;f{'J`I.@]haY?R h)+BxngWjtjч OC`#5`Dm\qUbz88QF> *N:WhE׿& ZaW,@A`9a⠗HGvPD?,Sn0at$TX[2>FlY0`:H .Hy31p=\H <-t@Y: .jƵt]v TjzWxAjh$3 :,g7Ӂa'[&`C4y΁iwa_|z' '{%n^e,)z4gXsߡS@+\Sq"UnBtD7F*~0liwˠRW7\$ytt/4< Z׫*0My y ,GPLb_ijets4aZgVY)]-7\+{) \%k^QcA͵֨P;izζ[A `҄ @C8bU)Ji@Cd]izGR> +A*М4Tb^  g|F8l_AQ(Xf,"Veub6񭶁>U5[kt1hf ot&Y.q[ᤁaPyi^W%@9 nVh'JCgBܔkR[8%\+ڭ5xuT #x@H$ z@[9X't~ue^kMy.5 }D:`EtQl; i`X`=vϟ(wHʅuI1`,vF/>vm9ػ#9v/jlUwl*uU \;Fka~*B7zyHІQxDGi~)a?,!=gBa{2V& =p*k| ؊cOZ6w,X|)Tho!_;+]gވVu'&_s?.(q/E/':W Z :̫rv,d 5=2klkv] lpQ6_3l ^vG]:B_+ T_TlP6PonW` Td`my6hSv7e42:y@, 8s9JAVt#-{Wu޿qq.݋PJ T5(P R/Z\ (NpM D'+}}wg{GeYYkc\ySXi`8̎3T껧[ʌ[qvOⱘ@/|ՕRCuE3b{ިVg4t۪G5ڥ 'QTWPiK~Ϸ=fV vxѰ% ]ΠKĽ4^BQ>Q.m'᫲R.fP,߀ ql&Hlhb]cDG ;H3pVpQ~D%8%MtO4Sgb X U+`|ZdR1ذ4O4?&}y̝JQξiNդ_ʣiُ )N~ՉK^@F~ڧF^Ui1}mXF]|ْ|^v.);fC\V\z bBň2%Z6h3sjIyDt3s1㋫Egdhә{bm^[ή7nՋ,յj<;bfZS/c(AjF|jZTKX?bHlځ8%q-1tu<# 'xc<^kq4by>4"Xc!,/ KcZZ[ [kP'Q[҉^8qGAحK4^8@+;c`: fkXM|TfPv\ELfeX+vy?_jBjWC[ҫm֚!eF-ȅy”]{Mf%r!CbحP#ZUEG3'd?,2v}Bۏ ovމUNH mqWS>=[5֫Oѻ>A: 7J*EEi?#yώ5FI"nv*"Fwb1/Ǧ~Ejmg[i%ZhNMBVeiO.~zr,mnh?e;NmLlVߵ-t_@f"X"_)f(󅑩l+2®C4/{zÿ7yY_*9MpMy-]yf1p߀84;_ѶjxeLLqӺ3 &Io\ҊZ:)L?Į{o/a6nK4Xq 6xumjkԪjCmqmG=V{3koAZeqi^I_soK}qUW'T/S}8u#ݐ.OoV2bplІ8[ר{y;9t`6EGl[ H%+,3%H3YM,X3뢖8f6m qi<@MөZ8jsLOϸjW z0WSޮNc:5?dV_gi.v=~?T9!Aи1dRmI,)z[YP{*Vʼ5dXFCly/ܾѕG_`+,>Dwvqnt6N V%aipmCtp14N\/3N~]Go-޳xC#ɆaQ B5V o?tDže/0-MR2L[@: Ѥ+Io˶{6 P +K:>v=kNmR OKk9 XHGϴxVvm>edSvZ=JK{Y;ТL&rʈV%kbA}rwe^ir#ArUs|AVY\JT8?.s8:Q em$n':8ct%6wq_|Ul]6ތ75g&`afaEs0ss3oƲ ڕ[eyjTZJh3nL:?W?Hw iJE|Tϸ'dm=OQWΝ̓w[lV|kڦL98=Oj=OՋl>G\^~^.b,LdrVC\NfFNJr"^&Lo/f*I%@ntюO+[Tr"rեTznLS;hWUPe>"T;!R}@u*2 1XD/G'bU\?Qq5M3J"Q%ٺXS\o͉1DI[h&>7$;' %mMUDez:j[\]Gݬt,CS" MďQVvLǕgz>i6DҦޕiR{KTO!mF5cG[& 2?6*c< XWiܩu9AC#bznNGl7$^S=-˞^[ b& cyn U ܦL:>e?kL>vbS~r1e`q9.o"ֵә<mAڼ[7"~JLScKb}kbq^knj#idpy${oظ#w 7ʹZ6~&ݕҽWMRWbM܃3i5 \ mDZ3t0MGiDw֤O}"%}?^;1$'$ti˞ORۉx/Pd2m^-zO5̂[}6!UZewصE+Ψo_T{fZUTk뭡Z\oˠgtWKNCK>ꦲndڂj T<]&1_q6ދq~b"Zn֢N*폎-NJf = =d}t@/`5Vbfq>&>:ijfxbk !dJX4WԝԶ&6R=,iu'y ͯáZډUsshXx5ZgHmP< ^=|/ ulSgY*gVԤ%hCTb1~Gmf)lIÎ+7kj; ]^NC)NLz#}%R48ݍ^ڭԞӉ%&,~yKoDq]W5QjxΟqOLU G@z!ՎrjH7g-{;q4lc⮸#ZFB(Uv|{~k빣ϣ9SfL;ӑTSMVuOGQXړ~.IO/f\{&cg!vK'Bs>%nxt~LMwpRY9BkUؖ}.Uy}V*NKVE >wx]Uvkܑx.UvA)/[~˴=u6۔ͧl7gzmFw4.RK5# bOY42.њod*Tc%fYKG-@u<%{[NByC?PScXJܡF5q퉮~b#KG &x4㸃9f{tLUL+{8%:Qt7>#m VP{ƣq619E`UQ3$b,>Ų kzzcT8ёTN?L`3 ILCzP}:NX{),s˹o\,hsۚ%6}KfgE/>Zt޹P1c߱q u6Ed٬X Q" s_/I2Bkq<3}s#Sx1oSl'@@UPZMmqG*z) MD|XpT䰸DG[Gb86ΏCkr1JјcOE?"XVbee\c5XZQ5kMypQsfk昁qyM҅^'t+k}-Sh[DC'%՛rHџj쌴{.RvѺPY?\qmf@ZQRǢ v̈elc뽗2"ޘOFS[+yª-`pm82k/\2{dWrk̨΀T5rgUu?3?gGsZZ^?ݠW9j*]65zP:8j̊Ơ聯5}-~qvt#v;G*."noLœXn>V[C\y\VV蠝誃Τ:^:A E/t-E:ҥ11 ŞZPEGaC|D\[FRtfXMҀ4Fsjڦd4qNPnD96ozN#k @n?e@"Nףͯ|*OE,n_]}녒VIh&mU֮uJ͖}P~J@v)8tK2!U33͖-S;g ȓ[ I)sh-9{Y#j VWO*bYma+?W_7t}7M~ղ1&jxmU`F-ǶXKʚBfFRgb2n]MLv[ /t ՁqQ=ڰ3寮x߸>TRթ_M5 StT/<H<:cc zFM1,@Ab-mf6K9ۉ`y\?%:Aax؏_y4nwqcnbǴNi11L Bma:M|=֘$'tkjL">6ݧ/,SyTb1 Te~~X]15,\5o"b']3żO=FoXbeXU ꨄ~6ri*7ꪨPWkR ,._SL{&gc{}xG_I=11&}L!UBuվYQDm|BU~]Xx 7 iHM/Tz ;(z6!k[0NFfe* {H"^_+\Uz ʒHN ͮ?x qݾf`PusY}Po!?^8- 7;fGG^Nȍg)E"~HcUlC00.ÈqMpKB" ‹&xM,"DJ?A--*f!VNꄮtog?/i:kjeiAYk-I?՘i#@帷TmPBu<S*hOzThak#Vm-b/Uw !o _7 FY;IvjG"g)vKtu4}ܠ+~տ|,V *٢Lږwv(>9I*v۲7~6a¹Y3ڀԲwҁ|ԗ'ĶG͈Ym 68 "N۔-9^+ڶYeQߡPkYσWjU =8\8q=cO *9;>ـcԔS6:G}OFP[/[.P!-tqzx"6ġ18I=Ep"G:_/ XO :t_+H#-B謣1ixI\dҢ1G,mO ,}ІA#77=I۾в\CnGSST/t"Ts lkd㩚Q zoP͊i 62C0ڟ)MCS<=Fw`W> qqq1˟[Ow'tzt'«Yܝ)?Փq}qLtv18L\hB@o!zip}uy24 gu_hPSCs fZ @ ܄5*%VX $}BfMX~oƑć@CqA|H<#TWQ͊HzX}MN?r귮9ܷv;!JH L}HϾ]$N?um=oo}_֛v6(H(%kqU[^$ո4nD{[ aM8{<UƋ!fח@}RӨ~S 7? <ٺ.j\=[=~Zҥ_ ։}tͪ77W~A;F4$2mU5X7)@$4tt$E1pB9=K2Q<]z77[nI?XfJ]RPNd3M>M:?}ԞRCMؿA͗?։~? 4expN |dK=6g,޽k|L_hE'~:#gq#^6 x}wxT\56]I_sJ:FY3;9ُG݅hvN/\mDZ׾Du,MIƣ1tHt᤟Gؚ&qzDt}tǽ wLOt*35ڢ-@o #Ms} ً-Ѓ;bx<{Z̺p+/e75TP=Jg꿥4sP1@ZɶpRuözRmXMnʍ`^ %֋Qi*q*q(6uK.Jƶ},<&Ga)6PCnhU [!SIbӜM|h #͈)>!&i*&f\_c&nYZVyۺQtYGS9֙F0PoHhM{F3uOǥ?`I?%Z-Hݒ1呤^' Bf %>޵sGA[kZ^ ͂jW˔kr-KQ M&) t-ߦY)k=TւH7h;xcAV`QqwwYISh뵀س*A*E|UQW828LT̒)@ۨ{M@DV kF֖h'ǭ-.A3Nҥg1k0ƤҴ#e{H$"SD0t^:S#1ɯLQH7Py[55t׬߆ ‰c*?J*ّy xwym  egR W-4 qdP܀bPSMK*ږe)ۗFbb'u]RkuCg5|i\8ro\MqDziNJqjlRdL ڀ'펿GMg\_q*o1~%eYZT&T<l1l̆6^λ}m>NRuN{V[SL!N{6Dtq2:^ю*o}A]L#.zy- ڔY8"d6mLNjD̴ &J Ҏq&ro#~ˮ;/&O2vU{D@53 t.Tͩ) 2Je|-^.>$nbNt5Ċ8Vg[ÉN݈AǣK{;Oq]I,/Wt8>7kf 7c?{sM%dyf/曅i*gZ`>f[\U[D,V2Ԙ~ȺتVjf25#Nulaq%}KIyiim:emR/ҥ_Im(.snzO j!"j2XoMOA:e|ʵ2zhgJѵ0-ed涂 oǔR75~:a?puXE9w|?߇A5FFEx?VzVxn5"]UK%S]SbCmVِRY^o.0^:xj WvdJ12v!%1~Vk:flEka,kri۾=1 (s-6!~EեX]뽠>9Ȭݸ)wj NжCW|竹e\8?|mděN}1G&ŞvJCE=\Д܈9s=6*k͵쎼o9SԆƵxJ_ē%^q;uOTo\J^ŨfYoO&vHY ǨհX6%\ݛ!2}9x!p#c=qHڙ8P{2!Fu\|Ӗ jȹfK`^.ădS1} 13W쪛peWڽL_^+rFЏ2ǿU:^'寶>հg>ŹfT\VŮ8V}v!%\as\ݢE4/!n"V6@; 6$cS_SA:j,N7#>94.xw77Y^:S-4-2-61L3'`Zb1?}/`BŘi92biY6k=zؐmҮ8CF1t[HszCz3$$ H:ZgjRIm0i[4 iR~Q? njg|HjVm/jco!R WS2eN"]OiW ioZ҄L5qKji)(lMqXV~甂kr ~x$ȣ1p9<1XTew+3 c|Eq_ Uؓ&eTL/E#Շr7]>q#pq?1ӈX6-;HY24^u-k[O˜䫃[vA1_Ťೊ XXemjVFI PvZiTXnjěy{y=D^QK[?z6',ҾVo"M-"< 5{~;_v-̅r},hjG躤s.v+JE:oiT?t)bɩ7SS+V%Xle:T7Ct.^-ꫠPcg@}cY'sWMH.ŪR U%T6`OD ݈m=FŶ"+g<a`vvI䜉`s9}yBA[QѨ,zLx>](*gCn~-/Stԏ>i) ҏBuM_z^}¹@7JB,27SZ,b5%?({ԺI꿺Xi$j2׼LddΑ}l Jc6G[);_)6;܃浬ٶ6̹b滬pSce:ڗc-o~͚ v?h_Wm7Y#W) ?ګP05{~x I` ?\\N#E\A ͨ~7ǣ;z(60|yV_v/1PTmUuvO#ڤεHۦD;x4*m-IǧхhDN0'ݕ~‹SXkH:PFx7@sUn}30L1{ţfatWR SqLO|@:#3ӵdXz:7ohΘp?BgDV$ %a6q=A D_btޘ݉ZğՇ}QȩVַ.hn-1BO|Xe8$g2&hwB0Bg Ug%ni-KL#f[ftKsoY.cŘim X*O`NqM ©UhG էnz`Dh(vCۢy*ҙtt !HO]HSԎGԶk.҆#5 ie|'|Nͮ>ұ酼մ29[l;?ӈ΢h>4T;o6+6~FQ޾LP UnqΌp|T&/؂ȶ8.]sz@PFdqob W~zJ-儅\5sw7b:s,ՙ[{w4&ꪻ|V薩/FoҖF6>V tP7L/9#5`,R_.+r,)F`UF6Zʚ.hSVYiux<] i#&ơ]ޘƃğg^Tۤ @#Q͇tm*;c1nvB+n+rGq%xѲ3^=98u(6Ql [\m JAcD.̚ghԌX^c^]_&dEn-T׏ja3j|PQ[_Ic6= G7sDz)ݩ#:AkDcX '~mb#}%}M/9xݦ}SL-YFΙXnZeZSDŶn%Gc0ejJ!h, Aֲ5֤'PD4x-vCiV"#|~I4iewNJK0XEPuIMvM)Y\gкMة A2)'񣔿dۯ7l%͚x8cL JR>WъO1~ nb.m_*7]cIey0{vmD\{7Ǚn[_T+ҽDQ#3w"pGLܢ]̨?>Ͼ,/zkkWUSuZFUgz}fK7kT` њڻio[1*!fk"!^B-V@1"5=t/Ε~tR1pF08*c2S}w;ag]U@qi :"Ÿ< 'p~W3CClOч ݉^NnDWGX>D8,E 16@܅}etg1gt O}w MƟu\OCu~.YZ:VnH@A&a>ɫVX(,#B+,]WrῺS7|5P4S5l=o-p&i_ۥ=1ZηSZw/izډ&5CZ.őǛW̝2/BuWq:- u3Tƴû.|}߻7G)K@ZU'GQOu)Tg7oo)a(:G؝ЎцaQD:SNGx;^[& N.("+,ŒR/yLI#cJM옾C ыh"F:GeK֤.Ŋ͝=3k!eaFHk3 V|攷Tw0+p'$_P/DV&isτZO5=|E/k༂w(T[c z.(2N.q*uj\GU8ݷ8h5e !дoF bcT 590+ϓ6]qMvNQ=:c] 7x7 4gV+[0jC9eb-i,]>A,#8(hsukl/ C'߽JTsMdXB,ҜĊXS>y\Y ֖?/Hu,+o_Z>~Ց|1Rk0uԡS).S&KTV"=MoM'1&N`)qcħzAGi#6z 4 pa^~ӪnY{_1(W*"2YY|g6~9ρs`ZV!_W{Tc&U( Csj7iŹЯ暂2S.e!Sj=NjSb&q]ʀӮu$<~Pb]>>eS1=pt}I뀢1roruWG=ں~^M eYM\Y=K("=t-1E[ST1A+%/եSMJ/Af؞1GdAS!MJSL;ĖW1En">ĶE#1ۧ-LeĔxnw) 1ojl՚t=KAIqjcRcK҂8zEmiڢe/jtgx7IbWRWҕI^"-'M$"=ontR=Ͱ,DśjEx۬5.qkƏ]~~/äo+#4ƛI= 0B30ٟiyӭкPC2˱ܪXA B|֛(+ ߦ=1<+}]GJHϸ Z$ieE{<"V˞yس- o־_<5E6&897Hӊ\%km1GiU~Z"mJTkb^c)Ėύ24E{W-j״ roX qZuDK+3ͪӲ~Ρ6)alL's|l$FZ#O~z-3tϱmҹV1qk:x+d+dc/n3u'_e,+c>|fuefqXϴ" GR,WOk\H=Eov6HZ,{>wDZs1  $N~q,qkz$z*PmK޸9>8 - 7ݛ^\ܰW3Vj9jCjU 4"eqВ `߇X?chv.Uږ-;|<;N^ypzm9x!f?MnSR]N;rD݊l՞ToEǸ+v61HkÈ] i`s+jYgX,4_MAskK\c k,g1pӺPDSV}97x:P"](4XgCju]iVxT0&&zO3B5Oso-T=ZNM?3p?lXďt~5 6gy#~Xši,_&9}yb+1+vKmu;V/*ULB $n\5/W~,5M9>'idą%+͞[~n5 d6i4 Ԏ.ѕfQt]o?#lNd^U/P[u)^σꢔzN[lt+x2."/ WXߋ竛r|Obf5{نp>nr۫eTҦU[[IꚆn6MM?z?#+ki`!/cgk,p<.lf`肁Y=Zl t->XRjO6\;7"9Ի3Mijr]ra{6tc\<j5L'L#=nr!;ӱKi2،81C옹gVbvj.Vƾ1st1>5ǘhqt0T#SEe1jpK*_)cHH[o*+ bS.*{?1&l+;~jgdr\LgbV sH3,OoKfLbj,544_Nl̴,anĥ֦ZYl6r#&ٖї,5})1z$IO`K5%i1xl=ʚ kC$< &7o;{|\9^ȝ׼2sܗ} |1v+";y<㩉֧<߹j?hAݛwe]7\ۜ^/'uG&osT&Uho =*R5serT{ŋcm\AFX?6-bb;%H7;L)?0?XZ&+6Wig q?Gu"ӤhZsvD k nU:DUkc\D y'} W'nj≸7n'F$z >D;%5tPz+ '"@I!f{9E*"R7)=M>Mt&1pAsWP+E ܦP:l7.kk`ҟ/ Oҷ:dW3)M'ծ#H9+qrlM}pB?c򓈈1})L kBZfxuÈeot1V W{ Xw !]/ǤqqN}l<~ȽqO~HcZabSj94*u&-N-i(tfX?# G/ld'cKҟ<^'-:ifCHqabiGӟ%uH{/LFQēi4ߥEfWO߮m`:ոdo.vnK]u#ˍAT 2sl{4#esjms\py杀crԔ2iuIrPMmv(o.|V+lY3X,ѹŎnr_Uf]h[heW?vU'!>`%|MR.a q,; IaP:*.%}?^J&&jiUMt $ƪah4Uj{#ƛb1OS 7TVI;Xj5> $uXZ" IoZCL[ťW&iYffY^YY^W͵ח ( i[51O#=o}9{;ճ:6$HzE *M]i+zN;fMӖu7cGL}r$fݺཹX=tm5hi-7o;m%/5q6\ey%4o-˳uI *k3\H5ꭒ29M5Y1;}c6YlcuNkuO<%dn,)ngM|r6KX&o~ƿ{Etwq\(45ke*MιX]l M:l0TzgMg܌Wek8e\0p})Z4Bt<8-S~;B~BttvӘ)h+"'*TeP6% YEem7iZ+ZBDvL-! 슕'FkAmT#FqRH7;nkS͵&z{o7c@8_ëI6KvڠUH/t4q\z!]+\/`^}{Tߋ*qkHId:\nLC𭛏jk4MI]}:kŤw{AfuIQݤ!6ڣ iH;vzXKIҏIl]^Fmt҉͵&IG!1A= ipZ?@r!B:"]ZKѰSDژAkUg~_Nwu<ڕT"v$iH-'mJ<-h#Db iV6}izm⦘tKۢ_3NgzZj[ P(6uH?Z_|,*6s_:)?HዃɿSCmӦN:놁zy6u60ITƓFX^;դ/iZډ5uL6~jv9i0P|ҧ[\<'x/P[iu% 7sAmH ]IM[9|{!Zi\q},_~{1x{E,PT&o8 jVfMW gdPV'yɂ3os+om22{r,sjq8L^Z-?9oٴ{s{mW)$h@ꐟߴ?6]l>nMzlj;qEh5Iho3JC/5k"ݤIuJ_hd>-WeO,JaEc%>#M!*`&2Zm=tc"ƙ֐&Zb(Ɂx1NVuH`[z;[qW{cV\H:7d Ӄr"H=)~ښT)F\־eϣĆSz'o\,![f[Nie-o5$Qe6Z<p@=˟|_#X7oDטH4Ė[9"co*~6gdq9[XD guT֮Opn=Mድ?(h#ј?/JX*drf[%e>{sc}Ǔm ,92~V2ݿ{ mOX/32[64;3 a؍qmy} 4D[zv-O6v86GSo3}$[88._5M""1mڽ GC\YWW؝:]^Dcz/R+ \%ՅE6z 2wˏ2Ϗ>Uj:ղ4$թO77SoyZM:76K'Gǒ@Z}[ao-l@Q6]㩸 -训M0Ծv¾RKҀA@4:Ol[;3mD|;Avi_jGGTնZŴ]?3wkTk 1qQUElI,'~Qbbl5J#,$-Kcӵx_-%(N} ðI GuA73A;s@K KLSՔiASG= Rw&Td7W[gֶP~:܍a?nhd*sO Z|IuҗRԙ4%iW9R6OϾ'>̢׆jBXҋg-/ ZV{wv7ߦ-O L"m(u"VkQ8 3J¹^ R&-2.ZzrP΃џR&Q+.yJτсoxלk {b\ޔCdҹ;OңT7N7TϤFJ1Nw1ڸX&}=O#1dWtT,UHOby)fc n$MJ>7o#bό%=35}׵J ҇xjGXkҖOt̴8`yz 4OO]s]} K9mpc<ۤ',<{y 7gP:jڏ^">~ t8-/JbQ,gLmr_hф^]Zw.Wcdn"1,v9TG t䷉:jGbh`| y1qt\_k[Xxi#a|Če盩؆vQ:+ާ@L]ڳҬXt.:QEW҃}'׍;m&ؿ~m/ bk 63fe%(ldKLܐƦ)øɭ^W͏ULKlFîӡ8k 'ѠU'i+ը }L:(f..v&6$V=a[;oI716McixzJ:ٖhgtƚ?"KK[z4Ա4-ѿv[\@m^ig'ԶH6G}ZKK-ZAj_V&dt9.BJ\Wʼn{Y3q8U|5}MkH[dvsL'ihCjg44M_ NJ֦?/ fssb=`'ml!ζok:[Rt.%L'J?Noy/ uMe4r4+-,LI-Tt&oK(6k^27x3"^.ـ\)~~H=c[v[Ǣ$bYIMI];r%mIqjcruF?kcaG#N1^liԎ6KGbbzXGL4/U[3758SfF#ϭ$,ƛ>- '`i >B?C:*kKombj:R0+-M.2Hz{+t{Wb >ä}[RK40̀GzZwsǧL244&Ӟ&+&+em k8_d H-E[Q]+y{191'>ڃ=bqd_GE.F bb;bIKw=l>W)S0iZļ,X~]?1_D%@)]V֐ZS+,#g:ELyVL!\zO39*8x< e?Cww]'C.@qNDۖ}04}~vˣY[4,}0\oOo1O0[h6h^&Ķ:Ce";B]lv۪#sAɭ35CR44_o=ԶN#o6saS{Uە׽gf{1v5hLh=^bW,X"V:H9ޘr|>?{9gΜkW= F{P]?[_u:<56 yoE>lAc=jr@.m|T .#,kOA]ϐl~!g2רRsS Bt"֊=b(lāIrN@rţe"Mɧ-7'X#l.[N eX;//+ICK[]"r|*V#*˶9db8,.'վ#ߡeOn?~5鷨~㧤%, YТ 4zr]m`҇zv%Nq E\x U!Le{ lqAvoswBb_j(v'fQOs%*З\J%hir#\yGػ*.^ǛQz`YZxGY~lR>Bu%srRvfwŸMlnxXmO3>w_!uD_c&wrw|/:"1읣Q1[2aHb7dw\[9h$>SzVI*R|9꽉ǔeTYyb?%{Y^ѶDA;F5ˑC6 iH=ȽȷcYlEn=rS$#?r&e}I5]GD1w|]F~O|lz¿*ͮ͗P*?_aj?9h!XB']b|lvEI[Bm41&⃊ 4އ摏RHOz\ :ߊՋu ُ%9B$Tm \?ot*gfYOp̨.}qQ2?Jϒ+[cu-[)'::WNbۡ&N*AcMձglS,bC SLsi8}7bQlJ=Sbv1 5JoPJn[|95{k z< w>ĹqOɇsR $N#mmRbgIbX߷7|:c0aŵMy]qzn<ݏ.;}6yu>d05JofTɥ5ken- Ar?My~UQ@I(/,EUXr+ߢ姟b pa Ew !ND|cwb"XHtޱ1D`?q\9eCKBXr;@qrQFUiT?}Eΰ O#[\('>3$ߎU1IKDKJLBr~ m?t1JNM~Vӝù9/ʝHqv!icr5WNcIn+ӮijvL ob~ ߙg+Že~/,YK %?#|{SRWq_Y??GʥD. 7V.p3+Q%T ?2Ǣ~@OM>ȿ]x=S+w?)Vumړg德t|dzt_ۿaq.èS;>[V̼ LS+uNE>I}dhPMN*'UoWu\zW-,U*Dxؑ:6<7\fQni.'a hYG r[׊]חL=8߽/ tmʧjFۯ6u&ֶͅנ}V-Ŋy#A!ߒʛA*@sօ~~۽HGG֏7}~xϹ¼,Ӭئ+V\vUso 3}<'yDl !XP{e9CsAeI4Erj.(C*ʓ?}Jլ&z"%%?фh"4*'T~fbw gvbĐBR ʩs4S-(:jR߉=G?c 4U׺h< 1&^Mw7]woXn*oF@|% B^4սJmǤ㿋~ˆriQMZev hA[UA`MY6En9NO[bJHD1lWXlW?_@qyu3JVM9ɵ6/IJԁ܍HY_S~͌jj=o( ( cpJhr^E/L̝)un+38es1FYlߗMëEy,xbUu&6@ TS4-1؎NR?!~s\ #LY_@._+)k{?yidG "+*\+j&yBA<;-N#NsKMH59&8#=Le2Ԫߐ%&%rZ_o ? Z[cxm`+C45hѬ*xJ% ho>t6CǸ_*ur/sV8|<ڛC?zAnYf^9UtnvG7~{* ^#EDb'Ei-;+o M'9U !hQ%(:TXJ _!+VQZئBts?pܝ ZFGmbbعbMqjPjËͣxv|wkd/o}k=;6_hM)PY?o<,3_"1*YlzjhQ դ5kUN &X-WKչ"ZǜdSIύX?}g?C o )4YD,?5?al䗕xuSL&R\`]pWJMo(sktxJgAސC&떮gyv~ 7ˀvr{Z~J_pZC .]b#W-DQ97d6h*w69W> I]pZ5 #J0yGNk<Es ԃhcb;P㊹ZR]pj'מ ypחտ|ipJ$fް '^~$߂EKrBϝ|9c]mד7y9'?4>~S>V}/{j)qzKܯ\27!gA\G;<`4_ ޻/@i71]Ik\,ǟ>VXԏ#a(_:-s 6cՉCcN.ob@ua]FG}y4hS^rj(.CյP^(ʉrBR+'bѨ N:>+hylkXl;-8Sq=cBebv@c窐lGL ўbZu\Dngnixe3= -ũE_(CKR])8M:_\o\gf9٣C|Yno-3cH:JN?D%-O=I4VN+[kO늛ڦt m%jkWzyV\E'j9^_rUo.#d;ŦZ'ZMĵˑۙն y/Y?6*4XCmX#\R>qGyX0ŇhimG|z}߭?^X=L4|uk'p[mjL]M|FӸ#ixڊJ{lmJø[a;pyE]hZ`fzܾ%%?+ $7RVG{ JiM+%oU"* )TrT?}\> ʂr?AY#_V6O)?7Hͽ%:g6^C_Vn=gڙac|E tu^|D6ε˨y zi Ge|u?fXT| | Hc5IWY57D;9baYXG=s K[kcc[\,V"K*o+1gw|f4l7e 1ѽv&)4ߕ1}7Z/O)mK3VuVi^~ٌ|he-b._WTvvRcw/,h4,s .} N%2a)7rUS"bJCpL9_Uwnm1*ߥ~͋~ЃŮSyŤbm-(V*bgjOv}/["4.[KgoeV/AX#5kJ> ֜H#!Orkϖ-ȗ ڦO3s$L}l~ci~&Yz&Vuc13S9f֊#KN/Ur"\tAv78/Xb4,-ERDn[\k =7sܓ_Kg]r(ي/S86\}_tS v!ە܀De)_"?VN^ƙq;_Ѧ5Dы[#G_g1T%|ӫY*N@b3c-eJ-U3@ W .EPהּiY+Fl؆f/G8F7UD5#mc=f)kGb0Gī%Xt7()%g64q!E~vgUVG-W&c͊zL\9.(MJhVټEeKw:跜T 2M"ѾjaRs&+o+9i~S? ҡ#LLX /-1Gn{YV%s0mʴ3O>S?hVf?7es`v/k O׏w,ݹ-X`iF7#ī%޴mqV\` ~#>1!lLOq[~(sGpN\iFXZq=h}a[Ff˖|VgآŔV56݆CEbbheF[X+p3-eׅj_s(L'NCS{r\xSПR&oѼcHMQ=4->U]9]g$?x:wnMQ.ĉѣ5"qH ѥ،Zq׳s~ rsMbq]\7хh7_Y+pr`KCLw~V9śZ{O]ɿ[5,"׫]h~>J}=T8CvqۜݾJw /('\1ø!>obNf!l,>܊qɳDKDpz>VVSPctE9f4 5?j֩|`Qioߠ m]t}toYbPlc)h/\/fbRt"zlU,C bw7+EeuTg5>TE=.Z.j2)3Ep3%M+Ev')JQ(נG6Vu-*D'T?K,vȬ)KQ|mxkY3wlh7ȳuG+ b@^aUyhg=s+}A^CTy2n>k]S&4Ow9?r|J~zG[4RcL)&C@/G4[ђRg;`c7XLb7⫘KۇtyD슏|dkx8Bk2ECL`[,Yι1zƳxXw=qN}[wg7}Dz~aIEۓz(auFӴWCڢYZQ݈n(Ji[o[oP5JU)_<ƿQP25n ^߫)`On@_aC4{$t㱼ϻAGX6 !_ X}eF,ߚw~T˼lSd]ʈ1wluVt~0Y /Ǭ%5txϹ[7j~[1LPhGn-(;A*ѱO24c!(*oc;ݢoUUVAm S*`Ӷr6<:E٥V56b_MΤhc^I1]\f5S-^+vk~;6@t?$X6[qvb< "{lLb[a%~OGe#ŅYEcW鋇OSDeeb'Xx?2/1:FŖ'ގqQk>1c ^ix:FZ0cR!n͢/qKFF\ϸ7zQ a7ZKOm=p~,ycg;XK5kI>Nש+bʄcg")Dϵv=fw< vzt]Mz|R;2q%5ke9pxYyJ!db+|SQ*M(PT-8r8*̏0Ǻq~p] ?bm8mۈkVoDgXC'StD;ӵC+3BYыev@~S V:kuϹcAl!ZX󢜍 B^x/+QrฮJmʄJ7xlR>'&D683g)(mJ %57xTi2lF}] {dר_?r.UJנEܯJr9K,|W }*$9Jĵ1ϨRֵlļVnXr:1*-؃ըg ihme-bgY>x,ϢS̥X,X\ic,މ=)_th,֏R7Z/%7^c%L;gl^74+B^Z<E)Ay4qyV'}<8wqq5r-fb|~Co+hxv z>W?UD>1834ߥO4+V1=dObO-cV)^(vn֊ 8 h"OzZbKb$c86~z&(,)}r'cCr Q6w+%>t(!4N|OӚt{TJ:4pX>q~i-L}bSa>!+y՟WQർ;vŒ-O"3bOgWE(F6hklZ j94kqjM]u}ЛX.UmxӞ8ʽFʸt+GؓhkQǮx1zQbWU0ZIZ() -'8 qf￰(5 *ןEeU-re w0vU&X"+aX7ת ?~?h]ViV_mRc阮5q΂FpŦ"u(Ũi3oX+lj^(F%q*qpҚ6:<4YX\*_%79'<[c\UCٝbۢc>5g{~Cme#`N̨ 9ǙFc Iě16~J>=ibi}Cb ZNn7:POg܇EbFkKL1}9XLL✼8s3O4dיKN|Y÷4g98#e~'3^0q~?x[$b ~Eׯۿq<}nrF=H٫ f8ٴwm1ʂ%t6P3|Dt'QZ;Y"v$'TCdb3mH,&P -XiPB~<[tŶ _Vmȳ,̝7,]\?zӊ 1S9 y_\q'~_Pꥈw,%%(oAc8}QMA,U!+vٍpW5ؙ8v e#n`UEù4LX\`q)bV XXlPL+6,b}tvǬm""bdߒt=s.hU{_,̋XcYJjʋ f/2\.[&We^\\8tߗ7j3gC%bǫ69<Oyg.C Lto_[` E.vnh'ś8d/Y=NC; h[fe]pLh=r$:Yݱs19V8fe+'šت䷹.NbbAn.<3W_xn< #lUZJ>qfp1#~0+of*^Ujbw,4<;Cy/ǵ!7uBO|q~05d@;t ]b}bV4 0#vq//G-~e,bn#FbcͣgJMWQtwe)  ]+k93ۈReLm'C1?ĵYT~rL)e6&ƙ?ذ Q*m@ AyQ +vq;NuԦձ*,/g³{ жX=S@2IQWeik4/tFm>;bYGQk#NA܊O V*"b#O)~^#ZD{kE,hki@CNe&ζ1w̋GLΏcxmg_<01{̣=b0FC'ϣ>>ZdzinNZԾlݱXId1\؉<qI`y^o3Ox=_;W݇ۼ+AN>8O'^!5.$G(3[B0%r:e? sY+ZY1oWҷ'%hc1aaeP$BiIZT <}Nibd~MŸR>Fcr09\D]J+}`VnK`O_嶙Ta&] q:mZm1i/}Tۥ۟5KEiЯڧUDEUI\jU&e ēˊ 5qOXI_B9N(V*sŢctOQ|^\kWIDAT?ným(o7KV\gNcpWf[WC>Tq\#R\PGؼȿ/{;~i{#b(MoOboxcħѼ <6!Ώzt%"E4Xٲ;c)-@`@q6X +B{u$~;;2J fYbbsZ+?\:çv*>'+ \惲U˕-SF.p//wM"˩J++!ҺYG]E<W3 -<:ϋ# ql쓯|XrI~C;. [J/ +b#Ci.-V~$zn=|ӈba $QCc*Z,7bb_;Cb{~qo1bԶؠ/ڕd5(F֝\{2;)^bRUS[ =!+J7\ѭCߗ1s,FgXXI/Im[NMK~J=:.mÿ~[ ̷AJtʼرJm,QE3l޳L}:ΦdXlaF'y#up \;Q<`s/c؉851?X)Gٲճ֏sr#r_o<R\ی.ֈw _D;b[ (w}#L)> _n8(X{3AnEmALc[bXHܮWHZ5>xvxʹ!YeNNV,v~.y9ZOE,y9(;:Xރ W2ĪJV2ުVJ'f[޷x+:hވ9g1s͹W[urSrvb47{7uwޓ{Ak˽Gگ=-AleA*XD Rj(' 4ejxCup&ĸs/WG3;y^^9x1nV12)wz"G|&n3^rqx8E~%< Wvت bF&l4wZ~7 +WI[<A[ T,+cN-S1BrO-],U;[ y\YۍZu+)F*VvslR;8Ԯ/bbV1w߽lrǮx$?]{٥Wq#MټwT6[y=ʌx1o*q Ss?JΣM6ӳ }yC>jb2`q~;y淛ȼi>4_EeЩQU 6F9S6V6⢸APlo vph=(^,bb[rkYS_j&cbD,KLٽq4c}Hc|~̪ʚJQ9Ϛď֍Miln.3+q<14՚ؽz.6M׉zSLљ](։$^bEEjQ;O^v9e)x?ї {*澅/} 7kxv/xbtu?cVMw('8oc5XrWsU#9dQRt+dX̡_yX}-Y-զJHRҜKDkG@}׆xE#oO/+zfgw qy#>{Zٴat޲#' }eǼzQQ' 5]lC59`rU8:#;67]ZmcYų75}cec/a}HLOb4C|5&v%&F]oWF(Q51[bJ|Ζ7- V r|Ͻh -b29Hh4Of ZZW:QD\aJ*@kVCK~t /]qr~Ls(V,&&X')1+7XUx6Q#Zl NW?nq-:KudgrAY(X9s"/Ln4{{[7߼'S>W/lBS5|3:#:=ڛ GOeG1Ŝu7 ٘eAe Rmyr+JשEU*-i |C|/k2g"9G"W* |Jbtzo97yl;nz[(h#E hQjfۼs\~!݃zwf*m5T(JJ Nҝmr *K+o]Jӆ^q D7or V5Vsw4 6:u>U;U7cAFLb?doo_]8}ۆ9lȍ@(c40yq%rW;ȵp<]&SߥxNx波̹ۺ D=?猷9͋hߎq@|8kD;&9ڼzX)Wq 诟尯D!GlGiMc"L2C*'F^%Ɗ!DZ>2Q:j;،hf_X i%Ţbߩm >Ei^w{ԸflV8lTsD~| Yq=K-*ZZ‰)ZU3 lQ}j񓈸\e뮖Dͯ3y햪QU ݜ@5mr71,{YNC#5,"^W <đhW}͈m3xNb[b-s;k/b` 08%1 xќ|r:nv"l7X@ b+@sb?EY ̌cF it{+ʆ1[1̳x9_1x(AKJm| b}7~y?8mϣ-C3&ϰ~[,۲Xdiqj>x6Jv,,w$?ٞ7x< iVżONEy1=E dja[VCSZjk=Ą 'o L0>gw+ΦM0xX^-"épE99֙{kUPn^6ٻjWt%u(oA~lGNVBflM>niiYw6k`DG|8.;OaDxy'yC~88=Gs1&7/}rǾ9ƙl"&[|LƤmVsҼX,4-tfWn+.*gi:UucK#_3k`tM #0ysW)-c #jڞC#޺<%JKeNJb7pBtA9q癯cJj &k߶20o+}_YH{Wa*Ocg!:A1<1'Wkw+'XQ(n" ؟*ŏq)G5ֱ"AEu;ѝ7XϿK^ qcp +CZ;YJe͛ GV.WqZq Nw%vZ(ϰ+^˫\K^潘fTH<>,|d5O^;ރ-^5.g#v|+cGno%k|ű>qOcJֱFlmsF(^&a=0b8Z#9&͑eqB\ V4D_,NN MXh? CccqĎywt|]|HRZXZ<Vev<=~zxwZiSt6o]e?F,_bpveќlF 54wbFlNkkA!:{b(m,xG\+ǾxؔhHb7уbhkS[qf:U47*aoKeITD_z+=ylȎ/ҵ(fC13WeVE3DTěʼn3}qI6Ę(nyh3z7ʠ6J[:Cr_ߠ5V" 1h|} eeq1 Mnm/@gu5b|>oeS~Cܗ{b{mO=;:EEaV]vQ?XZy)nc?k8 37q)jgubWЬ1Gx*ƣc>[kiDwo4,kDx%K0gLB{b1-=}C[}G={t7K.cFK T,"V}4Xm0x(:i}bX8.}{5p^mQ⏺ܡȍbpC|\F;X bX: KǏ86O8Zop#,b=[8Jrrg3h?|oq4)"a{r5QІi rªh*"[@ܴ/͜8|0y¤qxmÆX,}+we`a_vΉ?^"?рږ{d''[ 衴JSQZO$ݛBN.SGO<=!c%^19V&wIj1:䣾ܸ(|!O|xyyc~b9oF>\=cb?p㼃}gd_aw~4Қa RN`o6s4s-i Тr[JwݱQRc~Ǿ!/37/' prMkqT">?p:weM|+mǷs [4hS̄aբ,䷏ n,bL^WcWᑆURpsrtIl*(8G9`@t.U^([ ZjQe6Zg?lꓣh|8xjvO1^󊞱3Ehq+~٬wrv.^pϒ J$`%pȩOp:9D?UB^W|]q_Mbyp;\H9ԇقJF?~1O>46%֍YV&b}Ỏ':dGbE~Z<ͬUMv|}o,q^b}+ì qri#Ѽ>#Y;o&1ۺ-Z\%'bQڠ_|~nMɁz:ek\r%96{] ^xo+7 DGN518FGc\ ~Y{t0"lxB0 ĉLUsԣ  D2zq8JSE!>ŀx<c| $6.F[lH1qe(^NmXe٪Dz?$])jʩbau|f(z{X/9͆=X,b EXɚ@[[^ \I&~o3+VS`/xo: 'qWqsChle_u{87η]ߖx%3rhD|evCL;gv+8kxɅ5zYxx*~p:'9Clߡ+;Q'^k_ AĢC3lB#y]ŲuR'bM>c\Kힸ 5=dԊbX~n.q{UUK.94sUb '9VOb8KCbzI9'WDĢ\\rQhKiw}->`̗ 7ZjzƪS|2d_V{q?DNH*yrœ-6{c9eX X L>/ ?˷ȖA>BNcmSI>C/ʇƛj}nQ,+w? yDnfGX5+jиUHgo?Jk 0l_Mz |uļ2F!V:H? GߗTw/X.}N݁?'(ӋzӪ0ctm2,X?neX v(K[~]٫4)+f,߶h]ǻY{y |i;am_zWbcX+}]^|OR|Z,u,F~ul1uwmtzaZP6{졆'Xgb}z^{P۪ˆo{Q;]tPoK>k^TP?lW̦X]_ \{>ofY+|_Fw1!cS0=uMms1u6Us.Z3ΈCh_U-m8[_/7q-4c' %.Ձb}m/~Mb -=nuqٹrN _m`gC#'v^3ۘuBE|-0'8b;N}x@{VyyIAX*#rކOZd)L7Y7 ͖.֍/p1qmT\%. FjҠm=u -U &a:!V ZƏ%Gh 'q0jupUc3o2xvq=fH[s$kXh)_c@ 7X×рzӁecsdމ6%?.2Jwb>%gy7 =-_+ř18/(v*~qX p =7b0AP)/Mu'9'gGc_E>ґ m6|rʺ7Yu_|]Y 8bŪnezJO Q@t#S WZ9#g{%G9JwU73bېϛr'5%#.Eqg|D!{>@0"n"m8%_ Gܛ8cM1s~gG,6d|a(%>Ybfsk-2G 9G -1@_A:f+S}7 L7'>ߒ3]?P|xxn_kCݰΫ#F=UqA^:OUDa4 aY մgKy\ %%Oc%кrK^ ֨2xM]9;?[m4ZM4Q 5>qszV)KCh__eU6Ok={^h,}᷐۫[PۼrGC^P2#xw!l'W-A<咼;[瑋W/YaM2-mYJgZ:dj~I f뾾s/x퍋^ڒ_sojeWx[اS6q+|rڳNQBw[V]+QoJ%F|Sձ +*WZU+': (99:3KQ ;C~ǂlٵ7y9b^o>O9e>/9úKHVB/O)g,bl%eX_\uM92oC7_s>OQzkC^ y'sɇ|)b-#9|,gTM쒿xv cGuhb+v%tecCb7"n~j }jX8k㝼'_셱ژ}c҅(Wk0+*(L)W%6TAN] 3b6Fb/,H BܒĘ8+& V]tƏqG>Zh+c}U"s49+D_rsmD7(=-lAd=}6~4_a{XIoa,wA|S/bSr &+gx3PC\*4k *OQvy檸;1 !DH,~xpww \B 8S5\}vs}=4HO]+Ooewc>G!hăqi!/nZ=cM~{a88@GD`ndǹClT?Q3Q99# &8Y|0Wctݩa噫7eȨ79oWưy)AW[qDobCM~2mLK+UV?ƧHYZb33~/lk͢C,hsĭFўAľD}ˈzs87{ا_1],+ "O̢OxG7Ϸ|{wϔpH6)Nz-?ǮCaYIK'QǥI_b4;lh|N|3Ysyע( zFaB-f1_ (xgV6*;Y_Jġfj~e! iM:4؍o:H}%_LW?O4Ky>5hjqCI+StjR[)H ߧZ`di6R/Ch/Ns-.6p^4D1%M5HU4ɪTxK%LH<6^g@MBņ:T|r: _yisM0\j=Q6B G4#0b&&e2[M&M1#.'.?Nc,Hc:TcfZfc)&euDc C?0</qqñ[x%}É>O!W=&b@LRXk1$MIטUڌ..iڪzlf8 bvY&WTaYEt#L5_A~NHb֤RGcz}OQd-^~c'~48ugѽ^zZ6 kI%ZJcfXY5:MR!MuQZE>/vi$}E4)O]C#H?JMZl&x@#bE*4-7MLO?5Vj`V,WYkdķհ"/@l 5,/ 0kP_)m+Ptҧ&"="c $}mP5GSk5﮶ME|OV2U7:qE_]YhPog t\Ymm`;U#ՆXYj2KYM<ݘMl4=q7ʞN";<.tS<R6= Je#*dM򬵁T˚p*/mQ: "J Uq=-V6<(nmq،s\ -)܀+pàԸ@ @:0N裏 >3Nw0*+I/NAs9tNE vގqO;~xыYI;qGo0 xs+EY,#VG lHb #HM &}n&z裹-H}jAwbo[Q'Co\pE^Z>Od[Lg~ &FfGN*}o(;Sҁjx*[pKK.Z5#?˞qܕjPlG,+Uj V(蝺.ioH_%: ~34bmD;.#zx+PE_]e=ĐrR0Yu }E? c5Sy 6'o|<&zFc*#J/+!+Q\:xԽ4˲FHfKO<;l=Y\-W1(ZE)AX`JP{vB׹IsN7LAD}Y^;TTfUO-}E2= V?Ӈ`|YkĉcWrsHuFt yǦY]*%^͟-o}6|C7y'G6š m򅺐vV3]2LhIZ}ZL*;]zj^G?߸FڇDʧ#Q75t5:!vMߦc{D[vp~+~2dP6=eAfX/8jmOLQ,ѨgiQ]?~[&iy)֦mOBP3NC-4.7Mc9ıy1qf#+,T5t3_ (4P[=tZ',ǶUz2ZXv[qH?/QF?TAtc91Fbt:+Ҩ;F8hq M7:q8nZm21v'',R8Bw47F]\Ϥv̛z6GTSk|Ӕtib USSUW'u7osl;ayizLϢW䯗9Xo6+>Rǒە'.~'Otzt=C͎1:jXtKT;貃JƫfG5ՉN @MM>ji %V*&_)[M)zF߭"k?ci<OYEVz^PxG =.!}Oz㉋)ݩ0v<= tPnЉ?mPI\t*soR7rT|@i{..sHQZ/'-N#Ypť ȴvbP\WS0T^T|mA*:ݔ(]5 iJ{C:.iZ ] NCIw=~(iHڍ%~ioL'Kolj;d?6- J*ynmv;{|osٙU4[/b/bql}1"apHKZٹSlP蒧ن:iq3Fb_]W_?S8{ۉǞ,F@l2vpٙ}esJ5c=Sy܇_,/'":C e%;dG'$_V?}F/NnHgQqE9TTGٚ5ēYfV aՒlx)}Je *y>ٟh}MQK_\# e,iV2TQHV>sE*(wlU;[.+ TJEFE1Uk{wn1y5CN}҃ĸT-Ӵ|?;p^Wܩ귭PHHheV]:ӎj]Jr|TuMzmy4TZtNMHFm1I_'FWLj%o2oiA|h8-y*b16 ~r|g)?+B4l8R-LD5+-1ۢzhgԷ(W cWweYBZgK*ML+8J'r5!hb5q֐uD.U/V'Պ@4ZZkڗ8,ݚbG|+,70bߠTp%.zh [ư>s@z3>"@K[YdzhYXJ qQuC#յi~!'}.Kmm3IәZѱ6IsRCR8B;Rtj]9"-@c9ViB~LR"5gX{Rޛ_N.mOz-][U8O'DY.lZX.V!D H3m֐VjZ Piw0.iii4Gk8&]x3cWb5k,&He%(G5 &2Ҥx27fMHqH@ #"] iҟ.ƩjYZ_Hy՟Do+/JuҍIגBU93yM5m;/j !uOz|0&Pp)C0bJ'͎1dnpQVqgj@AjR15)Qt&SDi(ZZ_RS*E ڼfrMwV{ݶMW2")SԱ l:cv=5}X%4\Y?V ݨDtK|[a|N=&I;^ǛH'Ok}OK/)n!ކ=%vƜsO}UWYS7棓ݼ}[$ܑ?6O zfO=â0TۣNz\]81v}l#qRfSK8XetȚd7?i]! BLd[`t68Ӗve81\ MZ~G]>Oo5X"'('_LF俓Ve }iu6b KǫIdmDC bד,'-)o~浶OqYzR:Vi*FT_q2U-!ZGvm6b YlR#[:{eX<ڬ9g/eϕ~C4tf} miFWh6D W](I }vǽA*s}sҥ6.ʣ,e`ey\q2g``va T KEg H형"? /zc| SZ槐W{u<BV ˒t?1"_.ǻiM~鈴.:6X=uC3,ba^Ĩ8=GJMs4Ik,KAcc{ElV4 68F5M!ۥrX1J 5]cuLx 8Pu iCTS/aD 1' d'1Ki¢XˉeqfIAyQjmu4DJu0>@ TJI!w%^D}Q 1Qtsv.~)kzh:(Ruz+VIeT TW }┨ D8񆸉h gwW BI^S1Dw#bpH~)hCKw5+n054R`M!{Ȣ'US@2Qyҟ$il}Ibo$=H ;=M},%1B5?cߍ\.^ٌ=eOt8%ВXgd#gwd &ecTl=VClV <=FS6#>({%YmZ5i)dfKȳlv!d$Gl9Ĭ=1SeAog}XQ$ 99 \B[cRjj[^:䴔Ɩ{XW*w~MۀCJu_e߯ZHC Uqy+l?/it)ih~J^IѸ@F}yix3)//YCo!^NQ~L%RHji&6:L,k3숫 $c;&ҫD Px˷1b9vF{ڙzSbrt'v̘SH2[i" 8f{ XIj+]b4G)*ʨN [kujIumT*MB3'ZƷQe)фa#6Z bb\iFkK4IkGɷ%7uГnr`Zdiq>XBij:R zYe\BnvA'<`ؼ̼ķ=jJDؽOE!0]Q]aP:,iv[Ր>+Hn8؞Y]?$u>It#?x-=J|n7 ϧձ;BTx :s׼s^q.!]uGTbDsO0w.N𶁆`C +:{lG!cbju8<.64qN`KeyvJbc1g7g#Q˸۠";`hoHR[;Q{iaF8d%y-֎=scŨ4+:P-5t!ᗢb}18x0+{^.p*q?5 p~.><:_![NWdf)5%~Oun*-(]IvW6t zbyܸ+;}0#6fً:z.l v2!bBU?vPZosలPO2&~ ~0_Uv\Q!7TTT6JƁJPBgB~{* >+ e3e]dޮvFbmY1`H򑐾7SlMgovtR޴[49X'g|Ex44vi2iE.AhQ;f6?"<:i9V{$]]F]/ZZCz" --Z>8X눷㢨PˉOb|L8/#.)Q+11ZloNH04츨-1߲h-X+% Iz8*$͋VÉPҋē1:{k`oBbp<6xu#S4֛4B3Ib}UvNOǡitZOV-.*H+ӭiv<MkӋj'٘43Z 1寬pa<җϿ=Og6֤&|L#[p"v*֐6(6JҶE`Dt!v*3:b~D 4(~F4{嵫h:xS (ؚԋthQ|5&^L;᤯S{hIx]֩BCW)0~J\ь5PO8KF6=Yp煵FMϪlx CfINǁai88ţq }1:dCcr:}*Jwg7Ωmvgpus nWw1';?9#vN3Hl!QN'`)4GqD͇фty>҅DtF$A:{xUSN$;;i y75IAU߀lrCϏQ+&Ѻ73jܸ3?/v_e_f[Q.tmvJk*8G8>ly68#VIُȢbkL)Tt(_Q*C'֠qlYV]َQijn3.8%dIWEoji.h]y=@(Un+5Ve5eerp*['ˏ򺰼Q~ +--JE&?<.m HDB"kF6N8/򮐿/ttFIw ~&?3R5G4]򏫮$A_!kJ ` .X@ꕚjTMԏ G <$[WZnz7E۰6&kG/}H,6>ǀ; ~쎡ԎhhzNl[bN4&9~lKo' b$)k}Sqb-jDIԉT0F!`4!mF? %ڐ6J'bi|t'Oa=6 -bCXd#~I" &zkI_E[;i|1xZX Ԙ^׍hc*ƶ$k٠ev }!¬??냾翣Gj):]OPclV:Y5..c+u Z`6j(NZg|a.W1sͰ*[ Vt"Z1h:8X+=}w!m#Qd]O6.JIM)26N/Ƥ񱕶 nc ky/7.){NltJ>=(Bqb" iO8tI\[H*SDzDS'P~3+:j2֒Rȇ~K&M]Cc1=No*@)o%JzHhx!ҋ X^ ]`&+`Ksȟ)T9f;_ca-wyǻz'V^|~_yp;⣓_'=~ISVɮ-Z2b 䏒Ӳ4&u`yv8l֣ͧ<>7j3DDfb|XvafŒritCG.gWf'krB=F5C2Aviv&h`6H' bW@z8;mE ь8o8 ~z؝qG'ݛ]mHT+vMbgbA9U]cFF긼 qw^ɌN|r\wGqrҠrwfb; I>0A4,9-l tܳח-ږU- fg^zeKZhadbiVǯLnNiAL[fǮWy`X :ƃe(O(F+ -aeYOeϼLlWҮ`Y #Bʚ;:ԬVPiVvUPMIat4R:XJ֥i6櫟ba",oI!ΕX6u%GUꚞSaCj=D{Yc05>TZ>j#J#K}Pڊ)/dߒL/m];uXtVGI~ekOZ7rnڭXںל]]y }?nԉzDC7o0,ӅPݳk5y>_tPOl]NO+xb}|Mcᘤ=~v *B#z!ٿK\Ә ~ؓ4iAvp9fᏴ5fqKu)f)Qa|cz مN"F)/cSmS4LM\ ND5ąXnbsmtDbs"nCc-]nM"W{tDxHfՌɶq~K.a68d5٭Y.3 ~X}ӂuZ<(\_ayxnp6^.O?@ wWI b, >ې%]SkVoi4wp]g1!ɶ#@ޮM/QME!<;/,֣ Wc wuSչ̺sŇse몯҈?JӴmFh 㰧('T.)JF!( A=׳pKo*k*OMUAPuׯ:_%齼Y i|:mR[lKlO⊘3RGNx'쫬T* =th Ǿwzѻ +ɦ~(զbK9gה>4//ReZKٯdg]18ۏlXh5E ^w3pXefx3olWy?횮 -KMz>MȻ_O7J?Ϡ|lڕ|p@>U]vT#0=?1 }9^l31< 2]}ڏWo_;}JUlKlc ɎfQKvIvC֑쉬uA*:tZ֭tq`t;#ht@֣X/t^W>=kF +3qK՗@~Rͦ<[LUsf+XwNܜ-c gdpayZO8=64"nճY[ee(h ʝEqXp%^U6Y[v2Qy TlҦ`nl61ʪ m],N_k4\ ֪iY+ 勪N"]y$_:^C:>^3Hu#IWM˻ߗjVCvc Sv4 ڻ=OX'GԹ4xvSwWAYMvMv|G|xlQClTNvj#4~r٩vȖ]hb[[+E1*;8>F:> GnJv%L+6F?Gd;d}KCqlwQ}~^Bgc1-֔RRzT8'ΊuX`sƯt[-ָ/P<+DKo{tUz)݃ўrI9өaEF?X:; C8&DV:CjN[3RSRt^j{ZY;HaCol|!OjQ8S+_D= /IS H}q?:i&Z}f.$!)hM[HvJ~#XHRCi}O?)O |^E!0o5[eҲ멨w*Ӽt8;UWA벱,(ߌtB.Z{cIwNvh~*.OeRYf({k #ȝA9X.Hn0y'06BojoHl6ϟN'$;%jiq|?€r!U Ռ,}h΍kc43=Ȟw>83{!ۍ[4Xq q[v1&jTϩidЂgz??aɴy?lpQ4:??_ )>أԟlNiy>dmx2>!*%nqdVAV=[\DUdwe*N1!~'RCdehlܙ}"cW޵c=Uq#ukJ"^_ތ/fF5/:4[DCP*<"Xe c*sk!ޘ eϵ jR՜r7nbK|.K!]~E_Ҩ0(H_S!ͨ*,ۣ[rOV5_7[Q&_FMi6<ڌj||gif͛~N'7rG-e OF%9`M_@+G `1NGϑ.ūT@uD:(pgiKR# 9O2 b"̨S~񚂟 J#.T\3XuVjSq uE zHR`@/Ǜ&wƑoD/z^'L(^D~9]3c̫҅0ͿكW?O,c^X}ާ,%ǐLOF/EWu&MQlJ>7AT:'k^!KsmgqAc ^OTlF{btk~0QacD~ؕb= viκڤi#t,uq6D54BMxUjEMUu[j%R7y<~~PbhOnlmfĎna* , mYhbPc҆Nfӻ%c̲/W^~;Iu^Oу g5lJ.ƷT]BBm}pwopd"ڑ.$MGh.c}8]L?) إ9 1h)1Q33Lzb{n.sK Ds *-nN霬7e"1_v7fH"OH\հ#;iۏw5&v/wj_밾aƺ-pc@0$<;i_$`[v%i@=ĥqq*VA"{+Ueyۦ/j 71mNqH@ 4G9ѐ< 嗇AnqW FSjOul[奁nĄl҆Tۦoɪ91]Ut6qmAVq0x" g6t*.}S,eec0ݏ{sO\fl!~Φg01n&VBe\xto,ʎ%-m.82> 8c^\ 2qXeY5Q$%ǀ{*ʲLN嵐˻Q*}ZJd2gQ*gBMhQT@L_\Y渦!u.@xi~*0@>9GN!+Ӫ5O=x.n5{/b!HIHIeESYP59N!qxbV{3j)(ORSn Y\,RV$0M ֊@gp .|EҿDrkRt'_*sz 5&c(1:ѵ8߈]$)T1hIl(x 6UƆ|4Fi 5E88l f-ޟsLmƴpjzQ l4tB'NyjF %K:$;t8nOǧeb_mt1G6,:5ϯ|~?v|78ύ'4w,3oCϻKS'~gpj˛Pë >م;ymF 5?]_9edOoUhJ:h#K30ƊHCt2LXҧvdGOyJ4ύSҼ;'?({'_]lHߔm3VҘTP7MGC:=ӟ~198nK'kIGax!]rݜ ^»02sL-"E_sSo?:?~vT?1gTc3™EWðSM0($; cm5qL}Vg1o; F#NHOc8NF=hS=b7bhl}JR"v!1|vt?#i(K#K%y6E%6Zg>D:\ґK=tvȖX s)X!FJ/]f~=b.8gXKȪK)ݘݝmJ|=P@~1TT1!{-OiXƫٶ9Y9uEbjbO_Lҝ_wU%0&FPͼE՜%eUb{J*w 'TYVw딟 qA" Ze2B(}Ɛn-:urkiFΐ~߃A^>1ϐ/KT<=7ÅܻGS 򺮼cy5$P$I?j* JW>אSUH S$brBܠr9U$?**H uvAJT8^/,?)+xkȋc~另ӿu)'EҘ蠘NW^{(ܻoP8goR^-b(R.~&qP/,8(PҒgRk7to"NRy}9>,l1L2̜ͺbh:DzGƧiqzM,1Ob\r 4ڤGb=OQ_ۊhiosq#N#":Ύ%:1t$&PEzQ LF 2οpC|rC`"Vӯ7PK$Y=ń .衆:[ #v#D-$~ ~AҗƓf-({p wn{~؜/nvf ڞjpO ґn)T|ҺZÅj]bU>٥hx"!gt3O5&݋<߆ CpAZQ~fG^ut͙G n2??M*lo߇ɶt `l6̎%;3;2cw 'k!qDs]a\b(C@ w@agz;Icai!eeȸ(%b8!'nn)Rcش!iT|tuT_50ˬ:F7Yz3KjLf:c O%X]i vĹga1.'>6dΪ.c6kBT3*87H~&.bkYk?*dI}=ֱWc:i{όܠeA񚢻0-ST;) ՞@ʆ]󿴼Y^Ǘ_@VAkKŸka< w>~a& fMoAھ| =1U@޾Ag-Oq,"U\e!:H _I#W?wHI$G8'VI+BNxr=H*H~+E"IE1M?ʉl h1oVhXV>!@Չ@~* &1PZ)S*;(^Gn=/ w|e( EIFs Rg=lcŴ$[.ĩ|R[܁6=)u!;΍":@ad4ٻ>qb~Z&1ٛM;sXO%^3f"_2ZR"ZI;>YWHޯčq@\gҟju$눺q'MӉ=I$8COZ6X-lbS[$bsm~z^:iClhCPGYm45ݢ9mQ;ZvUGL{De:ndg~>@bOԋ-E4+m]q~{qS`vެnttaםێEj8g&zrvu c- 4U6 ₫&f>:L;EξwMm_Fm+5Yr}*>&߫1E. gpMȯi/3H Ra5:VlۗuW_s-mGtk3UvozS,mL&47j+MJb"Y)YlAjbx,Vbq$ތgGMb]u"zc0J,x8tXdvŵ 򫵉qZ2^cƼ-!,fDiz*:u+$/Wo6)j?y(l+2+#`A*ӊIB!PsSsHKj\˛K$I #7ʯ|])Z5K#sB5sy-AN'!G~GQQקfE:+꾘t2&z4 2#IlioI-bIW)qVw$LAMMCCsB llfmgxKTZr1\'Yբh(TAVW-Ѡ< hkL3MJ3KKIk7Kvlfehd=P[w} DTEQ11؇Qؗ'vǏHST s>6[@jraqz_DOc5omr#- }5.U.s]YNy2zzgM˵SIK3imPAԉ,} }<@,L+ᩫxndGiI,']bJhi==ì>0HcG8ޮF(C;= nv4"'F6݇N1" fG]\lm1fXJmn9s$+Sk ]lA!OȺe#u'ڗjeَĕ4R׬ov2~.3޶z[3zG}qQ O%"XOnynU4rܮMTMᙦ彉OI7?{fճqW~uv?n0-Ǥ(} F-Ӆ?b/>&yM i=]EY 0SL3Uh=88&ʮ";'k D4fqSH/]Jb/zbZE\# 5=m)'%:و9UH'Dt(j>%}DZĀ85&KKlL: 2+& sТIV06S6k*U]7^^5Ҍ/_C2/Rȿͷͧ:͞iJ@Uf,]^)`>URՊ|ye%7h5IwZoG7옪[/_dې^.Vq(ȶ ZkML$ )q^T{H8l-,eq4Q+fu ⪸Pb 8:GO[6J7Wܠ^{jE8MB6&땺5-.D6<Edq?3%]k#~ы1_vTYqDX12U(&R![KѰHۥ&@ڣw%[PuKnq]8ݙ;^08fJAܞ''Bk ilsbbuB#tmTe{O$ZC%~:]w~Lgiz*ٷ 1[I#=L<ؕtҷ]c MR5UtKiNuZzgW6r;s!'k 7Fj=7sǾqWVM_li-Y#6F{m-}m⨸*!=M{q?qT`C҇;}m]bG[9ǖڐZ84"m&>H:H57KcPm1*TRFǙu ][ޛ:_4<\ :~pC\DV'GYuv_b{,ɤUwNLDh_K o]4`չk^3y&ەt$=,R\JIE\@ewj/qa*EWH67We(w̲2?+|T;UT@}f!OrB4Hxfڦ ωPzs =VgCcUbU}XKV:TJթTEIȇv,oJYi)f l6&f2`)U)P F#O^IDAT|iM~3*L3Uq:ĂtM_Q*stF[d9%FՖk2-GReIVV'Ք TOR_!jj)ڪ!bNT W-ꡤ4B&Y"iXxO;M:ґQA*q-#\lcSA t~QFě8ڶ\W+S:hUNmnق8k (_*D*&kbm,QD)Zm_[iU/< ;y@kW;:Exh5=M̎/<5!GP+JdC>3 0l3X:qtvd^ucޣv5o$.\}WuB<] @|E.`t %  dDo w鬿G'??7%%-F8O>-$Wfjkf;oBvwoɩO]ғz~U3P[;ڹh@gb~ j>-m%j'?]AvQP2q@\M[c8 }t%oƧuˆxY<ƾ60'FQ6K[vAipzC i4T444B#|xKӊAZ-:41cjx k2dvaښé~q͝D҄Xq||L`|Ezx';bX3V={wS/LIa8yA D 68vmmkSj 8LL-iS^ U!? S)vU * lAYsjz|[`l Čןsnk =?Ҵ1_@3!uW[E@ջ,ȯ"?1U/Q*yפ ~J=R㴣9NOǧ[vwMz)}Cw?[fb4gMB 3MA'.6mν51|1Bs%i(=-' /2yT`L%֨(֩H'DPMA!SL:jDڨ[@꣱Ff8NjvE+ڒF+QS;R]ŸFNoNZAQ@kK+pmcwe߉b:y4N2-!qE_3.DHCRP8V;5h FB=kØ޳綽XKXsG(b&y01؟;QDc5q]h~IU6tI'%wZ(fa_>CG uF=?zrshYg>pCQ+_uՋGi?[,X)nb~oظ&~L5X&fY7҉C.0X&^-Gbbbio3q9jS%Rة8X7ҁ1Ń>r[^/9t׬ .;4Eؕ.bp)D(c'bAwT[?k LUJ~;3֥:'rS'ٹXH/x~q>m{{}FvߝOX?Ԉ?Q NFU|{L3?hO]>$^o+ߨEn>uOVUw4ފ]v}AݿnzC!G㐞s-wͭ\܉<]y-˝bY(O˔NV1>.O+Œą ?j&xrZp^WO0祕=s}M0n8sڞ 7L5c#5G`aKiy,v\Kֆ; yk>7Nq ֳmyld9 x‰f{5=hVO8t.}e#=@<MqE ..x+ £1!&D~?ykRwi?2﵅[',a9S^SVGTM}yQCˁw.8 UI])lF{R.G%6yXكU);˧Hq? &S"t;|gD#1ݧ\_cpȑQ!j1-1F9 43ke*&m9O1 bfj039Ym̪9 0W-',X5giVfBEAeZiWʹf jV **Yglf>Mt%z-N,iN%V-IKKormcbe2"GkfԇI ck- ^.18m|Fo y Ź*CM~\SDSJ}.$]d4{UewXuv]zȏm2>gIw}Օ/6gYQbMe cCRPekOk DcK{ڊoY}⤸;v<: #'}3x.fjO'gCxbbJ3!eLiGl$v](19$@ ;NkU}Ҽz~5\_4v-/=ǜI?4(:QMэ2 (_хV/ D?S^Շ*~m[ׯ?ymr|V|!nAyS6.mɣV+sX<_M{rX{|'kԢqN7*ԉT~C>GuL?v3.@u_kוGY8X u AJ4}))*ĺ>:[MlĖ8;wƾq:X`b8ݾ3ƣb=M' qD"+M5wlG{M%l#Ԭ-//qu0)ӛ֋:4k1!/ID~*%򇺋ODS}ߡ~붫7mU6'6'i?G|̫\Dc<EJd<-+m|?7NBUjW?ԹOUްn]9msӞ_RYR'`L9,ޒy?r鼲ܜ\| <>*&/F1^"WzwkC~D?s5|f9\ #tcMqh%&_jeb z9}'ݨgw踢^?+ڬ-_t1d|aa#l--Ocv7 uɥj̋m-mgySX7/z1ɻĵq0!ֶ!Kln%b !vѓ@qNQ,MI1.֬x8RlZcVY4x8n*vK线>?t _QQv3aqzDz\Yb !Kq1?ʸߺ4^!!6*~Ɛw|\HD{oh*lK],aΐ]9b !7},zνo,& 1ܚBKqUg:]ZG|_@ K.#˿[qkzkj.]ؿeEx#I*oStmf+$7/ O`Ky{ka?o`Hy|:N,6|5]u@')gr|7n%q͵A;'YrbY+>u YԀvmTD̰fX)6+A\TbS'.#mL-nZaXS[⸼AW8X5/]N/(D+4M4Ɣ[ό2?0sXp`[ N%]B|K/Bc|`.cw=6eaʝ'6yzbT՘s _Oǫ2SU`~ +*Pt܁rj=Q>W+UnaVSiYiFd(>AOUb_s >oFθ1TQN#hRVv|U~yp9ږMl6}n\{B/5V,Qw؄r6QQa^Lyq('sfʡ!Ǣ][.{SQ֖EGszQsr 8DcѾNj36 k&&a&e&m:c?g&o&L5zh-<΍b5' K[q<|!@:"~"w[g1ďx\DW;QF1r+kXa.k-6+me%1v'/}3ْr&\K'ۄ8"zZ)/F?E bxZ>v#Wpw&уŊ1eq`Bѷ8SR{-Rl^)ZR;֯~/{{ݱ?13Ž)]YۅbTwAeoQh^cnlItD̎9|@LsStG8JDG'5-%d#BQl2Nd6!S+6Ust'7b4c3)+߿| 3'wߜ6T$$#@~-j_` ];9ѵ<ֽY6vP=TP~u prvN-+\%yWpI'y0Pޚƚx<]clusAwwފ]a_9yr,e24Fkdum޹ӰG}Hn]1[聞qJ o-?wzĚXJmkekqݽ~[7l@lNlf =`K}o|79}џ|ɪ<[8#vX^Eb5}b1/G{g$Fg1%ǓcM5 M8qf3udLΜNN1LLf>+s3U`&`"Nf`"'ֵs`n}30կՁA: ꛃZTAMjTFy h i9Zd)A:0蠵d't@suAk t^[}4A\|,4dH.Y]ўغx;Q Q]QL!X!d4x'{ R 79#ˉy-})OY(LGhirsʧ"*:SrXPb*=ʫyj7x u[k۽U Ԗ#!7` jQk)'xez ީ?SaۑJYb?qNy},Ĺ,g|A&y][sXy||o,C|jjVDkbe~%U5,MM6bkM7=b[Ә:`0{^j*jmhp&{pKxx6: X≘/m|9.Z>=bۼ;‹ ju œ~|bXz362|4@:GMǿ]ƳeKMYNιWv{ r?χ87tȓِMF '3g5Lܹ[]kS}Fei*?lE_@JٟJ?֔r㭝ZJX9-XݝI-HY: կmf!(~ 6Ψ[Рę bSd][u`Pq][PkA^ev6:dg[ Gzh__L%uŨ\_ |iE%L'6Ohɛj^@іSzbbkn$b*"s!9D;K˒RO يxkag5)h>ѕV°5o:}4gM5A4D (V(-Vs/j9ZфOKKEg>ŝqJqЄ%mk0q&6kŻ0v=]RLc10YP)OII w,|c0Xon괮I_~Yc5?^@Ň2FW6 cow%:$f|Kg5偱y۔ʞ-ߣc'~'^Sȷ* V&it>f7ݹK׫eCkߕ`FN5Mm02w2`knUr٣x2R* ְ{qqemM=5%=bUټ2%BMM~7:ﱴ%,1 υ0Q'*xL|M},N~g=5 t( 0MX3JwqV~VG̟Nm|~¨-r_if]ph[y甅|5 97WrB%.hXDy+ʰ-1z}s+_'AF'%#ˠ"r>!s\l}sy]@EȿKWa>ŗ~$6hlZ=kFYϬSz>6˘3'iy:ԟE7,Ͱh6b9mf): s/g8 x}r*i!d7,M #x~]Zk 6LCyח?x˘?ROc1fFJјbj;1'c0v_;\wHR^lSu}U ŃC'c17xx4n$>A DGSbSE[_xwq%uC4%|\Dc$ۼw:P>#+:yy|\G̊ёX)SHbBM$qHyq:NX>Aq\F}O>?EA^_g 먅׺K)P_'VW7M 32O%2&֏ ,X. Yh^nwb]ȫ*ǩ&UIzש;}V*8k*6Dwm Sd=V87t s e!'|R\P΅GYzlAì^Byzߌrsm.+T%{k;(7!liyo^ p7y_q| 0P|ci[e9rYfSĜAcNifj/? r/trBդq T08ߵzV@?ٿ\osSZwׯMACu*QY}Z䉨D/uq3MѲSF;^'m)nә^K`I%[ *V ֎cEb>>>6DޖZFyqOGXK*L[ ?m"z._Bgj&سĩXYZ?Rڴuf2m)SVn~tVcRvDx4Q;+Vg7 f܅q-(V.ƭSw51x=NgqqaVnȫ0*y*1'q"&Nk5#1M4q6EC|qFGb=QمoWLMw7.+oRa8愧Sę*an|ǚCKsܐĚ^w)̭beb-=8ܳX\= x2y V`fq]o>ɩqKZ?6> {bˆA7@sC6~֞\:OY(x-)6آX<{`V &b7ϦıAfN>Ζ=Z b1pcqaxOM^O0I?HlLVH-ΠQL(G5y !N\jikW3|P.lQwEu4#_VA=>*;uFpy;ܸ\ 2!|S|4:m饮/u ށ|rM 6 Ǒ8JKy yF@Gɭ%w8jޗ#|/5c~&3LR)9++jd31d0T໨&ͭ7"oO9?`4?o3T U>菵H4 U6/jcu PVƩ[5qg%6n4`13뀠 ,ʣ(4V@E~'hJ.n6&iDgݣ:O; Ř,#beb 7ɇc98؏5#65oǥTwtG1H h_ "&X1K ntڷe7, _Nq߀{}'n_ǧ[})>q xbf1/L1ؐbNqq,AQ\{11XgEB,bExbTx-qpsIQCt*\qď>"a4EM_'qD<):FsMtXk4׊2Nv\tl0_7 `?0qo{NsuNf?ѯQ "}v?Վxkd<hlwr+{f\W`i&"jXX>(88kzOw3&qXgSqy jVfAW$zn&F 4!?&X#/X|0*}sAfNgR/$$&jc6dXQ7}"6~ iQҜ]-M6s+a/p۰qNh0Cײ%Մ?θJݮ9'.~<]PKukup*\2To:`~Y|]V/t.}rޓ eNj z?Y g8>'r; e&)O+VV@`]Ed|prs-6ս\FNw-SPho@]WL m?7ey1N+3g|=7' G<m~g ሱ@yF!=Ij>'}ȱ:F1={k)yy6/c#]С9"L5&=`̈/4iIy/y560 4t1_@'=b,{Kl3ɯ- t\z,V3nׄ87{aiz4ϭ+:ZG{/|OL[m=Ztie(7?l].Ԯ3U3.t;cM_\7xn0YdͺlCX|ںoMh>O vɷ!Ϯ8Ur /qV>;ʁ-![3!6|\G˖ؤQC3oΆ|u9rr,lʃȮuﲹ~+%;9&|Y\hխ)`Tbܞca]Q5Qɬn}0(Gqk/5r8h2u,2:qZ?!S?|{Q.IY$UuMpCӸȗcKV}^cZ=i=uM@;V-j.vXF舕+r YE_kmhbg86olow8}~\,=IĂx: BO=})#E= ~2W)EI}ozh.y뮳_ =/)R_|?SUDmt~q[ńGqWP,K[c17~hA)&J񍇉cvl3_cSp!ڢꀱD ~jka>ǰ _,90ȧ7V/,OBi<K=Jeӷ瞠KnK;ѶKw=0i nfn.hj֖5v+jmt)h|?u_gjЮzv$>8:!:C\%4L@.r=z(uqXgy![.#XN}yh4M'˛\ˋʵɶ)R"vx:dtQwƩ\wn·} v^/p~Ώɕ-Y;ڭZ'ōbO}-%+ǮUX ˘PzceFyQiMa~#hFXX'1 |l&QowkzB7Ľ8f*Gg#VL3!.&\9) |Av5ZƜ-7gnCmLgA~#`mp[1n3yTK&ӫiF+c:h 9IUTYULBӪAњhf֩@ƺ4CFԻQQo$ZW9/7< 4UX'UZh>O7ܵzlTwi\?h"y5Nh ߯//T>էQ=ȯV6FSRDgݣ-vWق`-71JX ll}+s%>= tg#KEnĦ:ƛy#yYOd\>ضnwAV& VXi\p쳪MF/mC5_ly'pdo4_2h!`.eaPb_Rq֯W P4Զ'>cp*Xzc wTes;? Np^#;$urQVz=˕KrF>k_Nc=Od47'ʼ&sy:Cvnُ͞\!@^<;D~cNqel\lElKV|Ŏ 2l76cKW8"ϓȇ b]bw,b|]tuBO SO|k]⬸%6&Fo|+Cq(<$Ċ~&k-$|% z襢LDcm)Dٔz9M+g+UWuΈĀXtLr\Qfr<4C9\͈^߾@3rZu!ڣ/"JZj7w-Lt zua.NS~ԯg-h=/|-htüA(N,_:~3 Pz5k*Ddh-5%V3^KKum!:%쁁N,cYr  "j֏ VD<6zTW,O41Ÿ;C\+hz_TXؚJvy U_!֧[RXbE[b=ߜ!fϟ9鯕ևFCjI-(j+~ZS4;Ŵx;RL(֠x6JD$OcÉ[z GqB4«cn.ŪDo}huPie&_ q_>^<7%~O\&'炜B~cs9+My7sz9y''/QS6.ۓ+X٦r<ٕk|~hwCןACM'>!CtKc;SV ŔyꞳρN- _e@Axׯ|W&=-uf3P_q;Ogr7/?G!8sq._*pUnmcg\~M7s錧~|QΪ]"? _ρݮwJ~&rjQRnEqK(Ğ"VtlYQb >6FbP]Q,#%8la-^h[ JloLG$Fbؒ:nQ#|ގlM̍G| ^&UOqsܐo0ruS̤P{'Ou > <:qk{L}`UNT5-(*dz"o-*32Fbv`iR}0 fQq[z8BQ Y^j L}-_+*JjVI . ʥ6 zhIcoEWu…O*9s>:z/Ohݮj4WD7r4͗BחۖÞXs4wlk'7N~o1*qe _Ω_?'X)ĚfIXf&׵SumA=,V41v/2zgE\EU 8WrV~z蟒r6OV>5e_M~/jwOxiN7 z>zK =0rGDbi/@t-Jhw _gY|>EG<k{1T<*5$9ޓD_9u>fThGGE)'FlJU4Nqĉ/=鱕^bjږX؉Zڊ()ڐG늇W}VL(n,^+@1X,Fn'Fx1s6*eCDbjNjvD5WǾqS>:Wr<%7G{@^"!Ք)gf7ʎsr1"/[Q̖eSyq:^ױO_Fn|T͚ycmE|oe'@!7?) h@q\_?S /kI)=8un?X/ԉ7DSt*՜ܷ,{ (ܚΊ8y^na]nʻ(RE?V|.{ZZo yCsWĹ͛ps>o%QC!.e!qTs08O9&O4Dd/d[Lnqi WY`STAu_-&b%U f'Uÿ]៯q]۸>o\64SvϦuNsT-D SG˪Z3\K߾_5z'zL|nokɖ8Jn7@,K v.>Oob}8v:bC $u0.>u2ix:nчX`xb=b*Rl]FhAX4X[Uя8b׋)d|] xjCW8 j+S *)PQIbl% œ7??#Ac/bOcDt%ktGx?ø ŗ%^oĻvk3|oVkt"SܵəaFyo!|`ۓ=9ٌ|%W#Y~ߒc'6ʦ٢\rDrټM]X,_lVCe*VIYO3Զ/sK3\1Т j8Pd{<]7c;+XC7UCjS?UBנ7ЃݰS֯5Cq\>ѱ<ֻ(n6$ތj piCߏXUcV൘Z,Nt؎X4tx~ڍOp]WHn?(&՚BGkԆ3)^-[ vF.^8xxڄ ^ؗ⛢u@DG⎘BG0 x w.c3YXuY}1}=[MVM:y~6 9<_#?"s.gny[X9+4VT~I4 ox(mX}BY6LYpVp)k~im=Oڀ-79G:`#&N1Pl+BT5X([aQUE}kg_(6xfFo+/1pC|vKU^9C2-Nd1;rېz&Ӟ^opo=F8'1ȕ }K7W&yiΆ:vzg'A[9nk8ջ_2FR]۸v,yo.M=sS[ڑYoQSlMc|Jk~[r:RK뚣fdj^1>`<vv F>eXhC^izXAW?cG}F3}gcG{uy)̥>0b -|g$^0pa|y}ZFc)M}Xב/U VK԰5b555 =ݣfhIC~JlUEI~D!&b"p|4S}b?__a458Xw~v HL 29SLϦU@iALUTG/ZAܣI}8Z݀Z]wZE;m5FHmttqUhK];tSG.X1H R4CYXWwqd,(h5h3=m/:Ʈ1&Db{֮ĺ>v `+t؊؇Dmy$%RB1M,Jzo|ф_}o*^ _aAG(.zBV|]LVqO%-WS-*^3NjO(/6PaWт"u &&1,ƹ198ޟmbbm- bhu8D~og}W:̛lH60s.DPN7rNSayd.׹qLywyy9̩)[ch(/{˯i^Ұ<^YUar1rV9m;l0x')MAlNwcnǹ5X96z >lM1 E&((.bbe~lQo ^_럪Ԡv(w*e n{ %vpV>kX ʛP<=B3.w|'r{S޼ܪhI~sFNh܄ir6&}_y8rŅW#]\mgW ױlmmUU[5;f\\؇\5_76řmFOb腮EXXJ\LWc~O[Dk4 +ml8[6~zyigW &v%5/#O'%67$?ĊqLEX57kz,|*ǁqfLΏi8JFEzڣowbTmYkD5Ǎ}mMȨMiR9QSdC ]&74^1(ylmC]9rsˉ}\rx qȳY&w: "*B7X@yG![U4 SIV vJs1xUSs3[{⸸b^,Fx?X"&GCUSx=!S7z^+YK t4rd50|R_][U#;9c=l|Ys˯|K9*g(?(o6X/R]\IüՆ64ez) sa2i{{fq?S7-߳q[h825.?+\9o}v,'ys- @;;61%V$n"v=8;sw@qcl Kש@~M/^_߬E@Z'CÖi]vYи.|Z$ \q;N|Żx<ܝny=]D<)DOa<].S ^+&sk3|MtN_.#ٹũt.EmlՊv@~HnQ\)Ύ5,+SbbH 4ASⷾ j &d&6:ǑVؔ)㱚5t1G<}ʳɳu63@,](lihAqIaKk&=pB>oqnܑG&8XOSǾC^ƛ؃|V5a];@OAm:gmzqbZyqe/̘\)e7 &1+lclJ>Jklc09>;k3yr^>Es+WÜ@Qkʝrhy?eY>\BqSv[9rF 7|ZO9kUv\~4,Z[si;՝MdUWÉ~pU G}ylB.H^'bsO&.Uh^Xճvq|Q^O@mBQ^{[_*@u .) UpCBqCD֠<cܚ7iNu:M2ynIV.Bѱ\ A^Kg{+Wd K^;?Ͼ<.'o]Z\,Xx]ȿP[=;ge2U#~WїݲבчXMsb`tUUcA@ud9ÉʯO}c']X+`ڄX?6 X%BK覛V?qy$!F';v)yXgY'/ĸUI c!(W{=Mqv2}[5CA׊?&#;4ե3 ֝&oy8N3G\Oxʗ?cewǮaN ~RQt2? }>|zsX8GUܪeT >D3!ʷy{n%jOˉZ;8.~hm[>'$%9GĄ99Lˬ˜s3E PDPɳGp+9gg9죏VW[[_goq.t&SݩQ'秔ݲ]Cn5*fVaQGM\ɻre+\DqcZL>͊&ћ$&X*ޏ1 ߐ=5,"ŮړGVֆ}bcۣ'[!AðeZhKbob/_M#!vb4 )7˷]|>.6&(~Oē2uql#17k:{x4> ~r?}l<LiAG7gNJcL&||+T{ۘlW3O+t.0q|\'S)ۗS~;^_6YNZ֕ۯ| շP;Sϲzc)UĺFD_0bM,8]ey1"0MXH_bGL!֪v{bNGu/VYr~IlCWeRns/+^{|xGg 7d((wk x":S4+bq1؞brq{$Ũ8bXS<]̏wؘk\I;h㈕K bLK.grjwsŜg9rny_A~_Vܶ\9ri9?ʯ(;7qMM]%Ydo_W{m',^nCPw\ykӼLysnR6/o+<&g8GNSU)"noD︬8=kAѢxj6jZf(~U N䫗){"0k3~ N FqW QQ?@#iYEm1y!yhky0f΋.nɭ *FO7܎slK"8{j0#+PCjk?I}z5[d#[lQ6C*+J(J5wvdYcAMU~^\DTlʼn/CcG3g9Ӵ7ԚĐMSb<)!yź6yD1@0lF~Prj `-P4L'"WgcqnRJey?9 WT͇+ra\cGfBtG61ɏp:a֖!߷nM0?`af:T٢^ˢ<+GZ:)3VCwxqêaUCݰ)'>ݱ^肷TÉ!بHQT]W?kSlr{jT q'G6Q~F́e1hVOP̋Č8⇘R]|Px?nU)cq_\B|,ӈ3❨23bOb$%~QĈx5V$Fzsy|[M mC+nGhef;X1 bkmޙ`jsq'uD˧'y/9:|휕c)ʯ]|r,iyVnKb%ʽU9?/ߗ_3wnb Mrާ|ͬo]@v>PwJc^+W~ΆR^GP^'g墜@tXBn7$us j5\q[LXY7N5CѿjL⅚&P]j9jVRSOap’1,!K?Ft>SlpQ1@v.Kܿn30+Ј<_S-\etƃy^9Iǔݑ7{Lme/8 Ԭ\Ь`[uؼ/}fuq\p}tѸXXY|UӍ)6湀os(ٕ܊|,N"z'AE1 zc؎+ɍ=gAfbE-VCkbX;Y9O n͚譭AXbo]EM!4"7J 5؟q8W 7jɧ^l ɻ4̦[t͞rT.OvoмQbZWҮ};2[]_YKmlt?ju*k>qqRw jT^JwI6FU4WlOhLU|tlO>nQ nhS9w;s_Sٴ>S"ϫURTm]VtxXO_}/>tƢfnc/>bt`or}^VNUD#/6Wn 1<Aqu1 b45 nq7ŷqvgYS/FGcqKR<=X̊1ئ ,]SE,_y=Ęx*yc1w//1-^wCNʎ.QygR_ϒrʷ/o安C9gre_CG݇P\Iݰ\]Ϟ2dQ} [P^n yr~CyEa.Kg{edo7Gck0M9%5EF1(57Tl5 5jCMsG@5Bǖtkb XD`=.eJZ蜕 x/V{/"e<؈\3ovymyy_7Bv!|N׻XX6&ɯ&8E^5S;mng6-1ޒV'}ݑ^|4ܜ[thӊVԬգMN';\H.*)'g%yEtPc;bX@ ѓWC92Ɉ;bw)bM,.݉b<n%쥃~Z2ћ8S܍ܲb Lʍqu~) 5Cq0Scn\=fژ-K)]qmɟ5"Ǫ6!:q5WCR. W|9#|xܫ7ZiK_;ݬSV؂筴 vKYiݻoNPpySu "'uem?UC\ ˓g:;WUP\30VU55ȗAU1zk}M~M~fCcVݟTE#*_y[DkUAB*jJ.{V)1 UDcJ{:Րmz] a!#nd[zbg*5t`JɏS~;r;yO^W7p䨕_m)b9lG]P|}j?^.fBqW)*P#İXZQDꖸ;RlDbbtM11Kt}JM?DxDx!n$F}:J#L݈͌YxM3GR;gAV+?|p<6k3Ր|+˜H^|+6!*\>'?t!(o+5#򕼝raޞ{S//-7*RN.D ʙruQ^(r^)~9r#,pP續kT^u@ٽ&ܠ2ϧ4w#9l<<, 0̡q:6c1.]l88XWf5ly j j@6UШ><{}Eb  ϜWkvB]+<2I{uuAn[]e9yR-'y[v/.f/fBg&V/9ɼ."O,//\;7=(+kR-.R\.,Rw9l@rNو26P6/{B|PRyl^ ow>>YoizS<7ݮ۽6|@Z_x!@CzYdEؑדG)'_اK`K||Y1IwOġK T$94:תXb-xm~"?XlMIKqq /~wO+ׯ??yTQ/f҇㞙tPkGBl !6غz})Cn nщbDq_wю\$)6&:QKc1+fF'GHaD|EGD #&Njq1҃.qsA<G7)pdbcbW[ [ X ڠD19AUFGU 2 O$vtCmq+eU`WI Grb<=/#ͫ5SvSry应-{+KS>\v+瓧-ʟ-a:Yw uTWݫP+%/Rydȉg\5h BI^Atv:֎b"qkt,.-%-渄`(֫jjվ5. מ kU{[a]t"]N{tܯd_tPuZ|׽ uwUCSr:/,rtd|<<-Cr1q_s 10V$f)N"VBBqẍ|F1>EѩLoͨ.Bq@1ags˼||W?'O_PR"(& )6)>/Q/)#)78b883ֈ(:ĺ ':XX\x'&ozHqy<Ü.lX=Kg 1 L)Įxl,e3gV}daW:O˜IDATݜ<䥹qu@rPuȆ93[]y_E픛Qv-SFn{PVSH9\܉rܓܦ<2˽tSU^y~ Cg/WQsQ56^~99tx+1uCK{g=t!,ׯ|yS+?,xgv>"_x#1^+@`j'j'*7 qT׾އftmk||{7xs_ϼ u%beb DטB̀]+ş|t'U6f +֎ ΏrD"sbH3QW|w!1#:bhM&&m2Q_l=Ĥxލx(.#t3G88Á%7;{Ŗ?6+zYVsVѲRwb>WunȳݔᐼI䶎Ɂ!dPZc},<(W,=sl~Ly]̥m6yȽ}k2z( `c1t1Mx⸢:9j(>P3f٦v.^ Pi ny,,!K!z-ZTvC#?NuPVB9"6/ˡ9ǕJ:qxPq9qjфX%6* w@1x!fb,̺nkĕK?St.-(mˋ(>zb c886V!C}1cIKs㫘MM람O{x{;sߪ#^Q%),@9DK7McDU=1hWos>&GGS=gt)Nr{t;GL-c"u4(6!֎X%M>&+DBǃįۉ鸖$L<;ՙq .Jj?[CcOlb =_/e4FS-| )qA>x{_ KUvy\@a܆[D90?glL~K9+P^cʷȓ|r|4\~kOKsb /Eu9z]\4WKx.'1&QAiīם<ٳ<by!y߳;9y/;\ܗϐэ.Cw~G8?:1b?WQPө"΁輸Gp㋧{m+j{soGL97&ʱEΣh^(/c)ŞeRf'6gƄY_nǴ7~mLV3~^kg~cZ<&pOM?e hax?#$B *^XPz  tl ;b@,Ocq|JX#HbX͢m$Ɯx#4b($^7;&ֈ9Q #F*qg#eSOk5)>_&5ýCݡuAym_2K-{=ʗsEb|bXx_))nb-]v#6&ϋ2/Z2ove}؈>&8%F?W~Dd8;9\+[d r`" \.S5^M!h bƂ|#&\ķ|䄿Ӫq OTkTV, hX4ؓ];v=-yS()IjYx͢=޺ZXxmaֿ]gX6gv46[NDgAT5Te^1N;k΅h+ǫlgtӫ$ UogML$h;obBcq#턓Iħv4 |ǼO<5XZcT)Ƙh4aw9׊4>M!o7)k1'58"ٍ8?Q9/?|9G$!?)?!W;)Ek7˕srQ~[)gQ++{_~r@6AWrȑC{>Ci7Ѹv/\O9er}_vrP9Ny9<ߥOl;[! m]*r?i',7 QeC,!ťسo*\(| ũ5CN'AMmgP;kuX mXB+{]ɋܸĽj. !f/br%)oꮉO!N]bq?fywy yX܏<.wj}ܑڋrrb;BG|;^WhG9.ևba Y?Bq`l \Aތvosa|tۡZ3O|IATh[>[MQ[UM;Pl6{E؞;cbpBc-y%EhO/h-*V#Όc(|/ĕqA~j&m ўXS :hښp!q=M}I<X?Zۚ v\^Blj8\v&чCNH6lMbٗ<"d;kA6u3Ȗ^v&[eFL~%&y17 ζp\ yg *9;?09r%CfXoz?Ud2wr;[go"".ve />{lA;QT!vu~U gGov5.:WS;*)b\z=~6rHo1.x5OcXǍwEŪV#91}1+#K̊MXḦcKm8L<ĘhӸ$⏸ۅ;?pw,]=^~"61`^{bA5@!1 ߛl?"g*[xʛ%XGgL{zz|1y9J^b2s\̠lEgrtrJH~S3|||A.?(wfg}ˋ ʦ9,(g'S~Y>P&uVF_]1殚[>m]ӑ6?Ө;,RW -+k^Y@~>iEr,W"?uC<<)wN?ӭlK'5ľt?/.*N%6=*kQŻb(Ck,έ/{΃*Oۦ3V`Kﰄ,.X/X>쵋 <*Ѱm;n=땺֝ xNoPޣ_y]Íu^L`\6Kyt^Cnŭ_g%6 눕X[r.Y*Pњh]"űQ Ł#G擱1.?Gga+HaMlnBj [@5PY6D43WCb ]&?Yq!??{79꘸*9IUr/N!}rSr-脵EOK{MMF=ְO=ܜ\ݞ\#; O ײКdl=eG``{y˱snr/֋89<鹎/c|D|ЪQ9z0IdYR_XZ-1KPYU3ig﵍LwUvWp~$.Lqn nm~Zx,N@]G\bEwŅ(FQH|"D?b]/(QXO0.#~̋;]=z]"1QX1=.SL:&[8$z'V8V/SM7ުӕm'u-Y'53Qoɯs|e`NЋ9;1~ o71$7<\^ 9-wЛ|5fOrf77Q9&P>P\~A~5{Gs˟)y.eϜZ>@YS~{SNΣc('wbrײ6Wοʎo~Au7dꦖC`]ozoes/gGy`~glFzV!nv/yo1 ZфX'Cw APyjkւ5B͐էfɰ0ꆫÖVߣ_w,+%Bwm&zs_~ΑVFm*bPwBE?n'( bJ[Q{QQ`|ޔ||"7r&ys^Gcy =#&{AC_䰼>V|#s_(Uyů4m8{C?s /h^')bk 9Eذb|hU\Dy_ ((6)cj/ƚĦ8V hAF16tb5+{ն!9fw4.HY[[hoE=M VF #ayB c?ݎ>mm:8E[| +q3UK7Iv+,ؘ\?.;lW[5"?]Tlβ"w+잭d]I[8 W#F;:%'`ld6g=z:?oŔlhSrfK^pr%cX'<\WG>m[A݉#}#ɷ m0K:Sf`?\**Nڠ,UE"6VavrIޱ;}m10;}twQ="MwXxGţhJN RSL#N!fgnqu-J4'$<Cp,1+.ePĸx*!qm4qؕx#vZxљ8&JL ֵbW;^wN襛DhgE4D~s:~3411Gc}} w_4ar8$@G E.=s>O*_(Y.9&Gdv~ȷ&%; raFv(Rrgʉer(+^n[MkV f o:}v>cҶ/U♋C4ygrػ_8g?殹#knNv5NSK[8Ɲq3Ĥ9%ĞqqNq'ԧ=RT9ϋؽ=(N9jj֮= jv =X+zwo-/_,!K*ջ]zbSjأ}SӁ~\|5wUXǗuAyi]7..G7@]eaOrؓW^Y"2|XLwIYys6>6yJ x\\rgAFƣ&E#q,tt)-u0+t(~&/7xrطė}>x4oć=߹S7WGwR\P,|EN_S\Ms֖oQ=(cccEUa,K7fG]LDFJL梡]J̎5]v44:hknzi5hMQDgh:IlmCGsp.ފ-ywS69:.*뽛Mq~-l%򳜝l}ZM1SSɹ1?'ZT3a?@#5Ds-5ADCG}th;1Ҷt~dW~31}!O-ebmw]c)Ը"m)3ΉG8oIiNOh)855??NW;#ƾfCx zn8'68%>m֞*1'uqchs= |aLtsu YiwY_ #\;80oY01 I3\]ˇ]k'5D]XBek?~g)\̾&_ EjQu[;OU1x7Y!C>7.ɣ4w-@6$EZE9!#?=@=-em`ulcUbU+覽h;QhUbz9Tqpוܘ8bIĺ|C_ߢ"XTo/Fo.8doX9_ Wɝ!PdGdcGP6 ˃&<܊Uzjo9](](< Ȏy1+KA~V]9!GR-<>rGݝF6VqcnpLl5z &/AWSz8fm[1kB͐ڽQ-毊},)_׮HorU?]p(]N;~%'( "yPRwIՈat^1<;|!չU}ɱN&p3nȋrsoO& >qܟrD|ML\h)o,V?œ9W⻬:JSXvVKZ N|reѨ})W@}M(*o/v"~..x>ZgS*'Lbpq21ѩByc,-)FJ7ncRIĤx!&j^D8?"vJ86!G*FEZYzXUX G'^+]QvX9i^j-Ͷzz->sOԘB~%65GXuњ6.Ӈx;>[>ǀO@M0?viPa.ں, tß^1;Fͱ$胑33&q,LY]jdXRjTTfXF#-B[`3>3.ɖǹDO>&j=olEjN%KLI̊1v0o[?F1hc>NTb7?YX]]cMwc#%W똍C-{lD/yJWLPG|hu5-UOoMȩ1=B-缓/axl42/pI~OyCQy0Cˑ/hcȖ9%_ 3kyo eLrxo9'SޓSr2M(O˟ȥ i`wr+Q(O+ެ1yW_?ۧ86O=[Cʷʪq"O,/g_ȻkAy$95<:\]ȗs;;Vr yuŝvsq7qpǸ3V%q:qtq{Wִbl B65UN5gPeYsBP5 ߺ_R/, ['|p?-K_ZUqO>O.c]30 ee{w!5^$ONK<gwr3gIlgcpNZO[ct6 ω㗘GqL4NәЫ#'Q -NbJŌbe_^ٽyWf<7om?Cq~q7iq3qXqLq%qPG<'P\l'J9t)ѓX?2+tc>8i0?y%F~iڸ?.r=ntJ\B\G: '7FfGa2v&b }u21z}T&ڣZ-QWsT%.d &cM2_4r9dȯ}i>4_x8?yKm<9W&`os"0{ b\韎g30կ~tO1|̳")!PCX~fF@[-%њ讋aY`E~zXĠX XWhEllXV/|El/? za]Ϥby Ow %VK'd˨IsZZj5RW~Brfc:GL0wx_⓪a>6weEB>sEaXK#8KmGU8٩Dw} މOcr̢8$hE]KqKVP j0(_/^Sxi>||>c(*.1q@KX'wC)bOXlKqL }S fуbUbN4&XD1(Ә@̌a1x,"ތ[IWm]q'w N}H0;{ll6ܚ6!ֱuVCn^k]2jFjBh[ rBUؕwRď~6[e;&7{s&_UtI/^BuMxMW4I~2sU.0 ٘1s̳,ԩC)%jը@ -4tWaCF7_`]GO,C]GJZAgOOхGq+Y_~AXN{ejG7*5CGm5A[- jDcPPIfWI%T/}g>ư$ ;< ݖ\{Gzy~v-es\lJdfF=592ـMsN) o]ʋsdHR/픻עޛ@yKy&y"mwiqmw }mH٣;+? WBqYp !ɏ<+'x)ϔe\2WϾP r|#8ї^5Z_dK,G.ΊIѐx1ž~"V{(*@17@M9&xfvw䫗ڊ,_XBh ڒ.'mRW x]VWiI.Wr\]ٸu>r=ȯoMߗ Goo%y4:z3LjKo^Ou< bxO/1#܌ۜWWlj;ľ;ԶkXXEOWekjYXh ZkTp4@sUrjSհf#ah* 5O:%ŘeEbY`7x9ìrf_8w4B?Ū¿Tu|p E}2lE hhbiKY4话Zh6ĠVь蠍f蠭»ķ%:w8knV3bjAMN+KA*WֿEuYlYE~S'57ܘsOC]Q3+0y݁Kܙדg ..ϳ}lǓC`<4w'WϽ |rC]nf$e@Ne)9F,TΦ|#TrV#ͩ9.#/Q+gy\B>A>P^N1M;uz >/Z'Ul9(ora<ǡ<Y5dN*<90ݲ59!7AtaOnz8ܯМmM0qecH45!эAV|uE7Q!Qs: ,ʖښ*f@=5>'|6[%%3K4c'+?kp'/R7 N"o:7ku7@ݽE;в 3PTE#$/ rD]7qV=<ʼ"OD'ozΝ䩹g#̼>n"Zs:9;>x>^Ŕgč4şY;b(fV_ՎA<KA{=}1ƌwg[؝'^z}K/cwa:C=.͢;eXOt+($|KѩX{^ :C !:EhM4cb5$ 9q<-xR~'q4'~VF<+&6C͉És7 V!i6XŊV@+mtVu;fڡDKJS4Pn4W6*R-ԩbu :Ec>_Nj, u1BR/!Um~¿!jFbKiyk,w d7K;_h/aoahPV")TD@t|̨'FSbBN3T7%cLN2_g4ƯT?9^c^yw<=W=KNͫyy ٖ|>{GCu|%?M9#!ٍ({fI9/)OM?_W.=匜_}{ٞ<7?c{ tTvVMY4Ķ78efv>}ҩMR=mGnhY`Mlrf7cs(v$˷ JysCY^`r5W]sUq]LВząqӈ5O8$!'"ub]sS 6/zi 5Cm?n[͒ Yq5C*r<]ZR/,!K[7w9||$T[u?@YĢo|ʽxMPS|637D,6rr}V 4{I>3#D? yO> L+vr^c|dZ&,!YN9+e7r|> [rgrlbnL'ۑW.&'e0WR)9Ks29'Ǒ(O:[[#={gK%1~~~3r&ngd-&^b^lխ%sX=%97GAK1N=rCޚGA5#elOmrcra?=cr;sr}N:¥H~aO'8>~Nlmprbt c]!T6-!+Ce׺Pi\*[=CIu{BѺM]A͖wM5_;SQPg  wP=9T\_H>? +"oZ?bT %\F.#ɕ9WlI>Xbz.^2tdm5Ƶx0b bbaODKOD XH{̣ı$rFtY􄸤]QX¼&A.]y /ȝDb2Iw?w$;.9ؠK u#gelEN̎Y::R̜I>Kɇsvzg_#ku\O|/>uzU@[\J̲?+ s4TB^Y lȻs߲=9fٗ\{ۉl?c )O8Gz7m1^:7}6N0$nNFL!nэx;F7bE;+o_o U垕nߺBtn{. yuރq{>"ȟ>ٗg>"^v_w2&=guPO<W1=؆ZEZ,:ݣc!TΌ7&x.c8=V,U߈g~OonhFWQ}+0"zFL;}o^=Қh#c.ITkb{]Sb#bhL<kccYlyqeK~~G<?Sl3-Eb[wPC D<;vD_;Ķ1N=vy VlEl G 3X {襫\v;iڗRB&hķFk-b Ah 1h h}ߗ׸݁_m"G`_kE(4sͷ3r 4LT|i%O}s11>3'FoMJk:!0[OSQrM$nG!o,ǣ{.&y)7|nM5:yY>O'c`<1%فmٹkN%dEʥ9 rNy93r/B>R-i<'W.9>? ڝ{bGl{t2|ws][ kAȥ~'PR, ӳhhΕfo>ڐ_榹3wm Cg;1_žy{,xu8Hg`aPt5qjl'ݸ&%n$&g2$A ASW W>uERU]C;_X死t в_Kj? AUfY,֭o}]^ Yi7GA}¦sV9T+;%{*ݳ#13㚜W[Dŭm7~P⚼B<][82%ގٸ-n#>Uw]=@LP 7KivJ5{,eycN||G^_+O$nQGh-pwt&ތFĶQMcIDّD:-I|ISc,̲xmX; ^x:vFpF1_;NĊI C8X?N%iP:&ij}P-A3!^bnlc]doY ^`CF_YO?+ºֲ6Uwb|]#:jTԷAhBs\!5Z3X#)*@Z㪅AbtZF>\r\>n<6?׈F^~J^g_g=D-:E1wIOu^}9Wx#?i$P}œ26ވ1:%1bj̀x#> Q\-э Y5zeۭ~GmG˷y-{9_̹2rb4Uh>aXM bNt$z7љhR M!V=s؀XnD $Z#[xAp_􎯉+ln1]!qa:81: ̊cO⧾vڹqzqpT\IeCcu%+C%v.B#ܝiE KGEL~\5"=]g7b-uAh*yB+i^.'7b9>Xc/"׸ -|-PHwa5%)NNl5hn1F,cAџU J>| |^dg X~Cwxm! :FRCNv3ycNտ]}1TCޗ :?u~Oș9(7ڞ=ZeO^)ʧqd^%9O`s+=G) t\,FJkǙĆJAO#_w[Tt*C ެ ʬJ CrHݺPS"ZA&pnmj@qII8UĀj}(_X:$?=Y}rߜFsnYM~ ~o?h{?W =Ĉc7$9q2g&rKc!b(7)SJf1AVHbQ4ݿqC7Wf[ .& Ι:bb^m~wa`0os/Yy-]B~ !)fF=QoODGG㼘OLgb!GcWbt)b|<E0؎qTNe܆?;]Lc~m}G8Z8,z?rr)&]f EKډ[Ƕms0.U ƦG ~e>hhI%F| \-V%yDakP韇f-vo| &D5"ǣόRc}ov&Z{"[*Jg|EqAO'up}>mpy_b47yEށ$&Os9;Fw:lo~'bz>HSdӌ܇Wۅ|О 6_dQḾssoo+Qr)d]ΣۿHcǶ|mgnz ,[Z5i@e2rU ^UP_ds^rb97F.!67!#͝ɎyOܑᔜi$m*48̆ c_`]g8.85~76?V*@l  )+W^u@eײ_SP7h N^`seC Fj?еoeg5oۣT_O<~ZGW_qgz]3!AdTy@'Ձ';xs<>#ZXw'%Zk'i, "O5&&o6hKܞgDZuGGΎQs=#xhy@YAb FX]N~_ No1C`sa-~y̌1y:ʻG\rv%W6fD)b5:Ł<%QTqu=I%>rwL—K's<Q?F[qU,(8 h;qtT`H}lbcpb9Tt>w&h3el lHl^XUؘY2i4fP$& [nXXjZ`)fh/LՄ~/4|e|^՟EF* -|W>t 9sy!998 G;"_.#<CsYnM~?51y I-^9r&@n!\E,oxCl~[Nou٦ng6C)vh;<T_">b6lf"|\r9+p>ι4ȡd\hr;}J)&oS/$gbi ,lR?~Kئ!q91;صr2qaeE.Pm!ች+AKew\&wm]w?TDBegv&y[C 3Q#5#=BЁ9`Һ_@utiNQPBUoe`IP=Z΃|вV߫rntrT>-򐜭y)q~yy>uGNܞB罋yrSSsC{;8x<ɳ7G&Ƹ;zm<ObO+Ѫ$KQ/ ƕkhpDn_o۟bvb֫6t?2z۟w=n,p9]13WhJHL#'_ğqbݠ1N_Mtq[\Bc+b[8ۅ-?QY\z |Cs>E!9[tyNj0ٞv_t8cO6c6pO69΀oZ{ Ψ 9.˪1P,ǖ\!f[2'#wp an1sr%q:bi;߮r 8T ʌÿa{r\w T6JǺxO xGFoO-Xj WFj?6!v\ʩTaY5^uQݩPWT֝fŲqyUȷá2ɚh}I%Ο\(W/r4)vÛʓ1^۞͇pSfI CEknE<NܔăKgxx+>}.X`/IYL!Ŗa!vRKplp Mp3"~WN#~tpC/~و86Æ XUH!xՍǒX_?,zWNfjp *r PoBS$/nيo1&c/L ?|'^umԘ|kV|ynj#.%әEޚmp5%d*ru~Hƍ27fZ9OI ~̆wN ;?C}:ѵ=::mzbu׾suvO6؜lE!.7w84πU Wo9/ˣB3*B.M![q\fhg3ȦyyHC~<s+mm'9<ƟO8DO{Z:G98jm' 9&&}0,N\N"$~?ЍB !zW InΕנJ;pN* NEpae"Sq}݆u7B+5%vgGqSˏ WFj B0yYa;JFM MY2%rZ_,W~AP%/VN|+ a;kS9-A''G 35wMγ1=۞)?/_3Ii;cTs90"4 6''>(7Mظ%&&nL|(i !i1ץtl9fl1>ٲπGx"¤eq]3 \ :i筙b<2m+c;IN7PClf&`]M=t]V܀@̱0[bٖ)|*|($?pP/Ut*x9w,lf=i#Sqe;s@ag4z&͟a]ց>K>v'}7v_:os,ns41$ZCC{ 2Ug%lWC5uIYlEx-&%% o(rScG&yˠ\<,os4?CT/foF; !lɩ6=ۇAv^qt܁X@\'o!ګr7ľPLݹ *kR*ו=+EnXzv=Sm-ωG5_jP#5^%p8k]AuBVT=_A>kg@T|ɋYs] wXn8kx`Ci߻mӞl]&t]֊N?r8NN{=;5[{t>Ah;Upy 9Lv<'"BꙐ1`<r{?6ډ`Ug|rǕO[ mN37=]On<p 9l K-$̽mYlrOXbo&6]9SY;9;D'^Ʊq'&ǽ8ߩ;΋!!ZRCKם{ W(ބدrTάbeTRi eRßuAcT\?1 ok> 5oFj!.A+^fذSmR#Ug͂~]T(ʶթP}%{BאUTu_|<ˁ<98N*/yFoXgc<{q';Da\>)þ&3X^ɧUc\G>N!o}Y8M?<8?p!h%1DžUQQIJ(|^x$k!pS ~Er'[A̰ lyy.o0Ct8+Yզ,E0?/qpVO _ӫZA82Moc>|u 暑jo#[hQߏ++Bt!6A|YbueG;*me>gׅgk<~ 5@P.uk%18k+9xa4e 79EuOAǐW1P}%Tn҆~՟B~-G [s13_ =UⳜfux'y:xx_Oz5ewu]QeKm{e^'',.N8ֹ'I̎o!8q5q"quG4;:Fgo먑Uek4Hp{9i*pYX3g@ppf!pzq-lx!jQءS?UHB1&`+}e_1Zs|pBtZsдs(M@ ,?8[rzI2|n_nπߏˬ#q8xVI[5':|'/-~~wA>Y []A yzdp@nt;+#-n[nAɖ1Wve:|M"~o^<6Mz1>vhc8@/C"Z#A/Gێ8!6y8.M4/;hBC̫l 8 >%ئǰUP93ކV)>7W\V u[BeAe4)zK]>q7{8;W8k5PC ~YJ6[>pfpgAΨI#cb_ja[:rD!粐@|P rJ;oemKAA +3s@B|:Y7 1;GWUtDb/b|iEaxq}?ay#Oc"[hT/P`_x0bI9N( Q` v1t),7b@}ǷΠऒ ,%+Mx%XZ[ ~TBߕ+cJ0P/>r;-WA՟}oKzL*;Y],KuzWڗ82t7k ݃_;/!ˇ܋+<~rw#A,/@v*.vl]̳̞եlzc|ʦ6ruLP;l͖DGcmmcϸGx {G8!>#^)S1B@l Q=E<#D}*~]9 *VZCeB)ɲ߫ZQ|2uvٯ@ 5_)*pvaÈ8{u4e&u&[CuN}! zNJI1^QauT'r]9)8(Z#'Ytpw'C.ց8. r;?"7 G_ ofc|bG=Q^qn4O.6!/D:P%w58LVeSjbZXcE{ǎVz9v-v;qtbw1naW --lkoYw3@EɬrtJ6TگSv) oeWmRߨYә]]n,E-wF~?,|W SYlV| MU1vF|䃚{pz{yr|sxC#y)]>46;ꕍqOޟ#ۭdE~i#D* C' }vE?rmJliG]@`C&#L],#NqH>%j@̎bhd(qvd ;ĖB߯,U\ q@د8TqM0DO3OňG/yc}\ǐ/8cB8/o0",U0YC1]k1_U6!hc{{cm8Qq8%'.Gqf</ƋMŤ$ ^)򮍉+T>vhW}+l%ľrLk?ʇPῧoֿj#T>,Y]5[k5P&jj_FA v,vp!R>,R6] ϩ-!W,cVz[y)j97݂J9S~6;ɨ_M%u+)ɿix!͋1ҝXNL ox|M2>Gbh}V晁veAg+,F7V`m^`=M4ZhFZK b#u@u& uӍZf-lX\N譽:Qݴ ]4mJ_Vih*иT7*U)ԫbwHhVa~IZn9f)܃Da_eA&DegfO(M'ǘ1|YfalYby[sd՘*0EhijL++ :Uz' F{통cw8l8gc8+~Enq3q9l)/r%XbElѲƊ^ylY,rx>SHֽRh[$Vn)]z,x([YHnJu#|'ᩡˢFjcNJt 8Ba&T-j/@ToG |z>T?k!T [%4d|kslOv<2 b෎5ϰ)x"1­"f7bSYwsH,2XnX]$4046t4栵UcYHt- DRMc %kDt. jO3TEӲ0odUhhˢ0qʿTUTB%Aaͱ$5I(Wh![\oj~>[JfDcz峤p[&D3,\k,J{^gYw*ֱ>Y4M:lc-C^v=pbs:;ѹ+ΉpHQljqFsc`t\JIחQI]*Fc*CPZT<PUA(rYO>w74}o F;3Q;Ç{k1aV,)}cz&;UBuIu>H) \ WAN!?)('-KH\]r΀>XsG utn?-qɧ+u-̴/y y(|Wc>ȷ0"xcz.Da*$ u曍\4",4iy`yfc9fayy\fny,/B ̯:Ew4:hj}BoV6:X+D=m/D9A?C@a]ju={){nv1=e붾D'w? }v]Jם j[ǺeB+͋cX9eP9)ظ*TRU[ݎӋv=ƫ7?s5P.jjǿ"%@)x-S /nXtj3zHg@~@Ðs*79c' WwI rrRȍ͏efuodpRy]or+9S fYgwۋ|2_8sA'Ɩ˥w}E~m(' sJ08L2|iq3blM!V#J;o͇!ΊA4Eag)9x?<.sF6skSDl!);2~W3>zAebQM*WoW@a n 5jBe\QW^zw79 X)ua%~BzQ}*vrB6Y.Ϩ~e\<&C^+!h,7si2g| ]^Ÿ.eѹna`K;@lȫ(i^q$Xo{RLVذءо;H|x:0N8|RI.,:fK) G7~V2yYśi!>/5 1hTJ~֊pWiA4kܰxut<f o6M`4LɯwQ#5P8҈lppg[gg Rj`e?-f`Wo+wjyW.-oZNvgWȮ夠qr`r~9VQvo(E+s.2XU:>ny><9gd(/C*e|*E2ixTI~.{疁^+,G:ea2xBF(BtlfS2?.^2a :uIia76\>/5D1* ̇(gKٹ_j"(y[̛PR׵8/hJ#_v7ÔEgb380"ۚf 5?U]Nv,t*%I;ZԷ(!\RTj͛/xҢLWz ] =K)1ֹ5?䏲;dl?P.,kdiw+nEּRys^.sj1򯖁fea* #A~Q&-/oߨҟe}sIxN`hѩӓXp!~TהK7x:~ 痓~u.!F7`KhPIB?VW7m^bFhf whz<>Z-Ϗ7PC 5Aշj /ym^DžE[]}w+xyY* UGpb-]m^(ϊjx h\NN!Rf?K~Y(e;Gcűq ..xFh5[Wv?wMC_C 5P#5PC r쟧w~١IDATjjjj]?e Y%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/40x40/000077500000000000000000000000001322401607200203475ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/40x40/cmst.png000066400000000000000000000163311322401607200220270ustar00rootroot00000000000000PNG  IHDR((nd.gAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`c^IDATh͚u`TW?w,.D IHiР "E ݽ84 w+.%H$P@H` Qb3y~̥R{?9g}!Hb,BPSj(n, xs[fC*s!^wo],!f(Vv""",M}iH.MZ6 52/8*x@I) PV*yMv66_;(/­M%?Mql B-EQ*r$} @(an#nu5s,<br|{UyIxP".f&طrz,J_ K[>&9KOma0ܰ r`N(0ED$4**wJힻ`ϗuGLK*c XzYzXY,k,k%mrA Ph5W Plŝ-eJ;h9Rv`lJJvtc?]Qi5i xvhΓs!sfrF(@ЂH]s1s5M#(ӧ svײXxva x6^y^ + 1vfEW @;E@3C>k|„޽_ni<7*(ʰ> C"".iM9^x.M w%_z%b`K"onyȹ/xpG*)ĻҲDf:vlH:M:/@]@EZXt#K9_ vGDBW)*G6k [ڥ!hu4r"a4 ri7]$FtIlDʥW[n#q"%3t;- m0$}.WVgu1tw3s0}j}k`n̆+}LB_n8Wmΰf] glb.icBnUFCſ/ Ŏ [\_K1@X@ZB^VWfx!J5Ȍϝ C T>!DnH:1k`LRíO&+7|.Cyȏ903QDdѶf#qlobu-N XoVзM #VNB:N}[/8q.{#6 MmMG؝cۮ1ַ5'}S0ogۺۇC].tqm&8= t`gWiW4^]/Î{ZK}renPJi[Mab+ğx>H 5u? 4PMH[-L?]x#޶4ŗt`if`_g0H:r (_36AA^"x@YbxmSo+X@ sΠ|be ǧnpluT7V6g.a_@K|սdM29w?vy my`1X tgH`Yr,g@rR ,  U:Kڨr[yaѰR@qBߥ .m8c?HO+u?}HdclM7i7 4ȭ]@ys=zh[\2gA:+s/,,_Y)s /2;=vWPZ*}j|y \,à )ͧ4PkAն%^5JC[<8Vڦ00#ovqPTMݴ&T_*%&2bk(=K2,&~clUX dn0L_(^\ZDW5:/sJ:[p)~_2 |*(@E9R[ljNg6\{Ct}tA;RSL y 6A[m zxbg~Mlg} 3f(74jƿt`EAZ |5\R]+6j2Cj<KUQȱ- Na.`C]yp$J0c"I;\3Z6AkRʂA@X /@S{]_Jֶ֠6āM:n~n}:@ W]33|vOl-^AHۤ -{Ii'Uf(_s= Wcky M3+PPW ,CJ\L9h[?  WM 2M,V3Lϼ?jĞo”684n8/еܙ thDh6rZ9K቟!FSU/(vEnzuP*)5@8Z_Z%+,Kke&BtYKO(5EJ _@IМ֜[^y?P| J*?T"U֥~+Ag%+Na=:lTm6jpmAx[. _{Vd\s"w-3ژ*~#6=iߺwk)GRo ٚÝKoqϒO}uɐ#^ycaFu{@6 Tei+s5\ߜ}luflq 4tvJ$LZe;8bX6i0 tO4A}mXoK}M >_ljP췵X/au070^6?V,Pzηw-|#KvfR!V7)ܳ37Aڮc.{;z w҆oGP7TϘX2'`{P$}l`BG'<\D~Y@ZTk RV7uC]"~=]O_!捈qzʼ)VYYw du D:t[.hoo䥨Xi|aGݯGϮ""#E98{.jwHҬ|ٲs3N#{ƈLVyv}\|'&>`] ɏEDy~h_=F],o|uk9ުzjժˋ?R]dO{""nYpDjԟ]H.54RUOuN5GREYp|H?桾kosAa""]ED"EZ4V+OoزKʯEDҷ^XEDУ7DDl $&/kQϋ#Ԏ枙;*<Y7wס"w_9XXZ?& _ڎl2LD;6GED"Ҽ„{?Oǚ݊()1DDnUBܷ2"37? dGk|nN_pTVW:Tݖu&抄q@|r uUpl3C#3x7 ej(6 BBn^ۀЏo!sJSu:hSty|xEQ)J?i>TS* ':eiR 4 ]'ܾr/#49}^5Z$ݭh;%g-LJD6'jA{3h*e.l,`- !}rVl ܭ4~YV=wo]X]+ܪmI{q7fY3E jM6mtS}WD1sE7KxΤ^)rq@DsU/t<{4 M{1p>^sw٬)̒[3A9@MLyyBҧ^?'tx,H$kbsf29 bwȬ)9 {.Z^v?n"""":6Q=~lkA̮"ТC"Z(hV[>-:,m9<ܯֹo0izsY "Dzm߹jԧ4.M|{tKJIT?};HYfXp_/뷯 fy6yf[pޣmVy; *+a/wCC:'-;lwtݢ:Ns=`ރ}W@"Rg X}z[AHqvίPWsZ{.Zފv yY=j1ZF@,bom<5C6A/S %Bp+GJ$_ǿ}_!(Q `BK0@<iK +Ojn]\)ےj'Ƽn V"Dj(]e7Nr5cd`Wbh#S2@ȡ.\@Yl(j#e8 j= l97L9@] .6{$|VR$I2[ ! ϿPgc*Ƿ<%;J~})* )[-`k`_h_#nJvYw}\::6I{eLiq՞g%4^er@SJ u]d}< 5 .w8Xӻ$IGk (HB]Xx:`"VpZȳOlklgmZSaMg~;:kT:Tmx3|;oIJȀ]]G\/J @|_L\p}rHRx$I:_&KBtJ$SJql5BQG!A녀q-~LhQW!j=GN9%^ɻ2f^slZ?o]ۓƽ\Y9k!h^%c!g)]:f) UPǿ _>/J t?(>Xn-eWq# 6m5H;9#%eBZJڳ' |&q#tᶡ%/F}W_ȼwm  M8$նe \wy7>6]3pP840= 9[^߿>99f> ,iqi8qb bFڃc"b|.7{]ۀq-Hhl=CJ:V"ݎ`᠘ƃEy1(7IY@*Yà¢һtH'iv_V(gŷyL_23 ZYֹ>ٳH8esYFΒo L}_չ&lݾAtO^{ N~rh _G;N ^{. xxܱL4TLƮ&8g;^uEe*U?:~-)o !Ěy?|4KRƷu :XoƀEuo6ʥEs㢺uTtl+??x,o ihR?R3[BnyA_3 ]T7LNùE KtU -ߥt)p?zD!nB\s  !N\h[) ;O[l0& -Kuc{L4I:j:R~9铧?RMBlŻZW ȸ/㒛j,tu,:%0ThBݰ-tMwrLp]`CuBL"obynBB ! ;Z/w{tL0})mUo2kX+$]Wm !Ūq1"᯹- wVAy !DU8ewYs|uް9ZGaQ77xAu"}GkY@1` `\1 p Pw{tܪ_q~Wg`. uYbJ. ^umOc""J{IƙLюכ9_fW;`{` `a %B:@ԳwO 1Ԃ;fmulP=^ȩ4 x{zbaUt,t :f꘦s]Q#%f,XBi`IFXPH]n:!?ژwr a`tqpfjsSR5p&~G@W%o %ڊؼlY&=#]w¶?jý/;F'T|f\~xsu<6> [|ŵ>P^0`.|Zi*s:.340NPHMӓ5l-@&V'CɓS|q|m.F 0>sv(caZ}Cpa=ߛ_GV@tԧ FV`F AFFBf0)wL K = A36CXYw"!>պ'T>[a|pe\n ,T! m=x0xIE@Y\ہW;ÎcEތZj z`_/%|!y'i愆G }9C!v,(wʧ!BgA#7}b F>wxO<{@,m&/{S# `^M^NK:92;B\k?@A)'0x{;dƒ2LG mN{)p] xka[%uqZE/ jv!크tW{U?)CGs~ w8pTSw  e4.ų۶ vڬk8h7#UA<qt((jڡ>T__lDZ ~~|V~oXlMT?eFjyU꺜>4.IwL>Rơ:zS?j:Qeo{ nYK-BwKBkm^-z"i== <5Id*6{Al "^ @)GALRGn@MA v+ P b~Odž#Mj>ms0ǚnfkۨS9O Gw{t# R盪ӓkv4{cy, [y f;\2=NɟC4_tPMPn}}:Cą+{m(z)?H1 ʀqD6 : W#@6}B.±rC#NA׳\/T;ɦ(0U8hO-X^\SP = -exXGr̿1 _<1x6pn +&Q&`o?_hXZ Vbj)e!mԉ&gh oy Ov1TǃtSRZ"3@k?W-@&Q@&+?&'AڤT- g(!qPܔ{* /U\Զsx.!g_=mf}ˆ]z6Ԉmrnlbڜͺcft48}ٝlasJ*-pJw!aT]~ֿVc5;rn@tQ_́pXJzRR%MD*T ( ݪ]xfR*c,(ц465Tn )IP3R]] ^FFJBRA8ɦRV"Sy;E> n'`4r*f PmD@_4ȟ+ _<1|JEuaվ8PR[eƨ6? A=ģ0SN. ~\Pݫ8tXmhu @j fdAg~;!{Ca(hv'5p(.p%t N .V:U ^ ]o`|9j GZ~iy~]Qs NOujT(hm~hqo9j*-}  'ϡY |"'9 Hz Ƃne0c[5V#a#wˆҴyOeab|99x,YO֐n]^ͅon $U{h75 sFj:+4Z @Q,J=~bS|oLkwYzTUPtWw6%w@ʑ yE 2HA: dA: t ;Hzse}Chv!ACyWb=z?]W nXATFʩ0qxJoXf̼ 5)@a fL^)PL_[r6é,)`6@>J9nt?KuU+\R{|k{fHR)O[_/Y&`f6f +Z+#tGJ zj00iiUL\fk4/m9?+U6FɎ@6&C*RhsXam˼'}>- `9 @jxh|M}z^VseJINt)bp}h5Ybq9Z7>*  TD@ R1гKuԳI %irӃPzVhimnmn8@UՈ-:0Oh"KGϡPjB|l)3CJTqRj/bR>H w Lç Wȕ3 G=q@,%L5H<J裺@7KCO>_& e_>o on'~7]w<):,#z0眥~P~`/]: -Ց7-n%j+)Zy_6MޣbixMn{媿#H5FD:?Ǘ_8"h^*6B5ZwM$89[n$ ![.!fNd].LZk&U*oM4RޡhʘQBMp "\Ѱdo$xt j+uvp-V@٦@ĨD.PF+TksP9` [|O6;Ps 7q0@5~CXg@Eɶ_KEm~w3x:~!B0VK&;WKPmJAR.3v jۃ!Z0.=Dc`I^J Cpp#8zt* ; 0$I])W<9.c?jszTs<}JMԥJ7YHTFZduϺ2Q+Vc)dAgp6!=0ҋ?h|ݭ`,hss ~ /E§ۡDQeU_T`v=aTqPgq[%0ު%^ZR]ṋ ou ?@'ʟBS1Ӓ>_+`TcB'uʺ'B^E+'|'xuH{Ih٠_E!&;/e{!Rϟj^ D3 z%y[dzzmxP p7"bg* D!57,=RмG!pDzB1rS!^0Qq8j Oz& _8bж2q- ;0ҬfQ%\h{yA0TX}At|s=64JWHVv|w0bmQ9Y;,7]+|3 ]AĨ?q 40QkkK$({ %PZuE;#)J]![iPIq+38`_oM$ӭ 8OyבY>:#hC_-[ `w" mYIH89P AZ2ۗ6Qkk?1W> Uge0sچ`hf`cbx&o h01~aL2q>'|QUjC֦c~"oY.wPo vi#1[_^&[]K ,g]晫1̙+͹x9m-bGyxL+Q=c;ls>yrڛ'FB%1^ps2oAϸ`RL9{CsӋ:aZ${e{.|ަGfՄשK^CvP^UyƷYp!j:rY-^T<S+X 7xz54UwAuLP4IܹD-b?@üM!j3dy}xu` 6URlǮ-x0wT+v(Fo6|63;&M* 6ʗ=tۯcˎi#?X)WAq Ύ3'8,G?Ú"z̸;۬Vj~\=Xr1L'~b^]iŰ=`SuM,6?P-by>J;XgE>lOV LhK=? z?2}?ߖPV*KUZZ8R!pw?԰W{*BjS^!v~KރSBQ!CB@+|-疶j,!VfR)Zֻ>LEWS|}ҕfBRg޷˯ Mj!4b_>B@i )caoN"a'B\Mr?H/B,1n[%֓L}m .luuvFg`/U:6U 8 *[ޯ&-˸ĿmGk3ucɀ+u"b'Wvo-=:OY^UB}UK|:o$4`: ̥]K$m_S@!OBj۲lfPkU y[N?X֒ApsƭkCmlm7l,[}[U*va`jo YXk_ fh$S VNy>度AN(u~?}dv6X>1ԨQF%jԨQF@k[@r]WݼQި; Q3M 2 \[6Z_M)OW  )F& 4 t t6e*ǁst6޷\<^]['k=xoMebF5jB-PF5jz3?^lU~~/:trzYngU Ǘk nf y^}+[׾yK5po 'eJ}/r8SY&E'_@/ /{'hi h k Z h /諼c`GC }z=/N\Wŵ ~6˸W{ !PoLc6mV]ו uax׵8/άkJ5jԨI'PF5jGoW>ZC+f\W+ypu=r/g;Kc![6 ?,WTq'WWSy~_3!BȻ<,PԛʀrTc[TbJK+ o[@ Fq5T в8xRjF-;?˴z8z^QVWōA8knMGF21i~AXzsV,͌kn7 14 .媾)W_Ѣ6[Q?Nk 5jԨZF5j Ww_ ʯ&W+ݞl!;d fgWòJ?.Oge)?Z2ü7yFw:=rr_ dkJ- yv]Aj|R9`}U,( KWhe`m5ߨuo*G^u- %@sм 裵 {*v(*: t m!V[ 6FGe9Q@LY]!.27!Ube%nqFAQ^clf>,.V`1;Z28cY4"33U'l?55jԨoSKԨQF `]_ 3^MYS=~ZY͹K-ե= k}Oy6ܻ*I Wnf~琻 E.] g `# w2apBWi.4[q5(K~[7|L5ОXV\9W/8Kje}{i)VJXvNhsy{U]Uz}ʁJPDlT>)ևw!p7F\ Nv%q8Xp@k&W Ӫ+x</V \ b|y9cV ^tE ʎ\qe x+-S* Z?Uǚx/*רQF5jԨQ \2jG۽]]?,, #P峐c!4~M7I9]&w[,J[Y/sGYTVjYו ߐo@]J,Yz@A#Y>}Y8$f9wh)b>Oer)&7윆f/jFUV++T&\JJ~U PhXmhlhf^{.F/tez~8;ñՎnbCt S|}+D(M8= &B>8ЫǝWf(?ĹQuGą^M- l bjbarsIJR2!Q8k:#+C!CfRYv?߼QFQKԨQF_@\u& 6yHd)ο|/obdq7.y),{jy_)ͳ g+vU},mضV2pxnybXpv`uRjW+7e'eր{FYyvv;pp7Cn"=j\Cj]ry^g5t#9LSމ5\wO6+4j#} ʱM7dzƫࡪrE4Q/'T/X0&@5I+A4 %=V`K/EyV.ʌKϋE̼R3al__?QFY%jԨQƿr;8e8d xq!OW@e~q#. s/V+K&x04U Ȏg5߼*+[KiyUo0tIM.spq':?o? ڻ/䀼3e86'MQ6c[e/ 'B)C0.iZ]/A>u<>-qV<'K,4GHkLZ?=lBE[Sۑ'*T ؤFX5Aj% V4RmV<,eL[i]ca;u#8 &g~nZ!G;š6ަEu3XOǧb'\4օ1S}V<qr31,~n;eJV)^x7ƃ'c2č>, ⃪Bjb`B3*M!V[fDi8-fB|AA\_ѯL TK!v w+?eࣕ\Ҿ4g\zL (ƞ)SmyGκjPFk%jԨQƿ?oU~e+[udvb(oC>Qt/.*!yg=䘲b_L+Jzܩ ;";AJwV&6VJs#rgʬˣuUܒ深q9l7v=oxAh< >eG:{H7tw%zta@7> Gďɉ{Yyy4lVkd!ig6Zk ;X?U?ߗGy_}aB BQ]g"454 ʹZ+FszOE6G7Sb 3x }l,D?Sn]vǺYGb [Fv66.']l!ny87w.jOA^h'h-_Ɲox;%G%&vKxM0x4/- ӣĢjb`Me3MUęQQ̀U-/vTJrwx5 |4^@N <ՠs(}V5jԨC-PFM?5}QZY|_\_Gߢ,)(+o:vnt1ra6l\lٯ{ YU&9}·Uܪ4N:t8yB];2d܃=̃Ȋr.O}䥹=y;?05 M~CuʭfnSuX.BgxL胶9n|鄎F#Lͥ>&,?T4[:Lw6?&7E[46r晍/+-G]5O}+ =e^_W QN~ZW] /O+Q I4CBVڢ:y"+uKOt}'c)G+[bTgY/#1`q&|S5fe2*,tXbX3s26Zm[92$k[iVjRҤ/INk_oaEU*f:ԫկ&B4 &}U{>Tyz_T2ѦZWMd E`S5Q8ISOdC *jiA>h&h hm,@lff6MHW4IwSޟEC*=tÚ]0J7hg$ybs3c_lFM/gӝj%94WN|zᩨo5 Mqb~41<5Omh|sc|"ތ9"&&M1P.!"'b/!6P ޫ -W~& +Ws+K%> gMq2C6Ͼ|}iRfՃ5jF-PFE(?h~0tKG4kXE':(n.X ;xȿE닎@@Fl!;d9NWi[V{w&.'<$d}d;G}f]o{|)|'OY֘db?CA׽y3N74"_zzce#&ݱ8G =Zcaf)yvF`G+u|50뭃襃Ith;gSGѣQߺh]=B[eźuUJ[q51PTQ*Tԫ| wӿM6QU*d5T W5ձ- -eX`ŘK,\-ubE˽@~,_j9fB ZiZP]cjXsYxX"^91xx-ra1&Z ѓg؊X= FU*S ~UJ]\1r6TzT[J@ejeە/p9De ,|*W3Wa$SK@m'Z jԨ_ZF5P>Z :jW7#υm&ՍܡxuPt,VAn,+Ej%((y]Ο !MPȝ26TG}se&wȆ9kmk|:kɹfhƖ&`S5 [i/th:*詩談6:AzI'~-l=mi+emb+-hvn5v1@mDh讯~R/`kmw%V[mK#l\Mi^YG8:UB{ڠzZ([ ᾪ)_C j~=q/U &k\T+i9h W+ssi'g|1<0Xf[S24ƛE4 LtStey) SMlSLXSr"F$0DɏM>RKb '1x?^2L0L4\hjN&Fn:>5,c%`j5a1T3yDy DAdϜVfD'oYD?䷰88ړ1b_"."󄟠q<]]su\ubmı2boa[D#W]l{L Gc{5:@c4Ǿ?gK쥕=t5ˣl:[\mn ma+Էy @L0՟ZMvLwκ[U1Q(F\OӲA(Ti߆, JWV%KYK1ZoS73s?Yf0 {j6U}IƓMƙt|bkcI~c >'?T; WO#T"򝜚#FC|sex|`S\mra§9,«>;5GwպNT&Í7\brN">646lbBUa0"0+?1/%/4 Jth}E[T+x44 ?Po|+se+A0XJpkS jԨ@5jĿJ=xO şhR]I>E?(*<?)8ېo!UOGLf1-' e<#Hn[y}pN6~>Z~},a {x+|359zB>M+U;'&43Fw2|G =)^NEZ=q.\N2-Mcu9D!'WM3#6W-4Ss92 5!?R;jҼa my&;x)^ yFƼD[bnܠ>^mc$q(&Řbz̏] ĬbXM4?1 jK=WTކQ./QPy!T>揯< Vfࣕ#TbF٩%jԨQ# WuaP,=/@Ѭ ER¿u5ߢڻ|q߮VZ_嘽'!w+ ϻ\Q|/o"eq{sGL[e+r]"=#pKL/!Fײ6iX -L6kSQۛKe:**ͰanFL?@[@tF`qrkkܩGlEi7GWh8hNv14\=bA]7+t/vDbNue!v3[TdqŸB3s&XG鈇m/qRLq:ǁX31`l}P.'DUb{;#A?!f`m9z:iR J7:VY ZZf)Ajb^`^g&Whs"?S]-| !*,@L1P2"?Ps/MO=8| /拞#JH7'#,}FI56Ϛl>̙fb $s<k5,G`Mhw٘;/648&fiuōgb%<6 fư؈OшM*-(+zDħUCC^rҸʋ7;P9T /+C4,+M GW@PXYu *K`qc\Ym!G)jԨZF5.|ܝ} `G ΀bBqߪn)nJ}q`q)E (+JӽJ3AkQun#gOMq*mܞ3ѹY6Y[ sd]<<';*Gje`D]4 !hammKtn!TlEO]Omi qcG=p#ΊōE_<;:8_!89NE'ט]xpQft'Ʈ%ı ݅m]?!_HL!ǥV}41UgzKbKu.#~y<;iZK4Bl@)%Y&[fY9ɓ`3oGB0~o(.1>|#벭G}݉ y.@kDGkLrw䋹(K6CK6oL6+&ߩ& jWL?I| (~Gh /ڒ7b#5 /Lx`YFAb\;9|h94#ɉ%2D N@goJϛk±+ɟU$/twzk*+--]%j'=+L,VU?LTU%2!`R𩙐r xLƀ3r:GOCT z3wy\qc>dO\{GǬ=C\Trz}W |-{cwE^R[wk ysy|ޗc!yv2$:XΟ#Og܋o950n4ޟVy{K.o y7gKό1 i1oz ,9 fbF_{QrG#D{=TyE7+yC^3ⴘwxSijx1x<3F{ FG%:*c5rmjb|wSY*jWʀ+C9Tb,*^L̆rl͡rT3theQ cs)jԨ7@5jT)ݕlqPt+{+ uwC6+Cѽ(,bjh;@?{@[a#/&&r!!>v.9<:vϽqXy,ocf~/w&{88a`63qݴC}6Nq^&Įlfkَ[w 4N8ޮ[؎qʯ-'vcC+b^4ښx<6!ՊDǃľqz(&Ÿ-͉#݇bis[=q_%5>:@\׃'ʀ1ů UV n+x5FA\UV}T8-nB>LĬjoܪX ٰݷY6n+6׭ˊU֎\,>]9sEsVY;wլ[ ao]V=Ɩ&ᬍ7NRSсwllZE9U`zSi%4ڰc4._H>h> ?;4i}F75viJhֱɎMӢM=5tZfҪ_GвAQ-vVKZ?AkkhY^ϜVU$L2!1T@ qN|}MA+_8+rIyv8H? a.vJv2\d<M.!@r1 |#|(w~CӲ97/{Ty{^%Ή>Y⥸4>{^L#̈/S|cqt$TzVZS%N#ǧ#*+Eg3ٕ|,,?Wʩԕ *2T&ԛ`֩~ iè81'Co5j?Q; !K[fݳXgŅP7c(wBѼ.u{Cq@1{E+ȋUu?~o!:Y|8\G-dbzMn1Cr 9(ɝqpېWd<wdW 1>AC[: "6ZRonؕdp q4qn-n5cqL-\e-S\Q[9쵏48xaq "fy6~cǧD%1:͋~H{aRt(wfq;WC{|t ~wB|\݇B$Ǜ1bqbLj@Uͼ6`K.Ȣ?,}iIk%;􊕽Y6eWL^7+F޸FU,{p+fuwN^w7cU r\`((7k>=R5:(j V5z `u`~lp,󴇜ǛP=em3#K#쐟fTMx7|qx28 l<lӺQJl=no>K^ZD-~b)ZY;hۣU6Wz~󟷘Bll:i۳ڎo5PNhp#!;gPxڪ1߁\/AR-|KvsEݝE씧r.j.q̗Ɏy~Mvy* ƃ9.yK>qQpa5q뜖`v< / ]%GWM2|14aV^i|]&ohkS~>Q/oίcTɻ򲼆8'W1G1x&;Ft%&ŨhM8r$T5T.:*nʤVF@JʓP̬tʄzk2Xr'5;2>33(e@/*߷j5jN-PF6.?!ꎆ[PL*+u+P4oU7݊=x3ʱ{Ӑ_bB]^ɣBŇgN1O{AE79܉6ciƶ!3iqb|g2v.71Сq8NLD'"z!x\bVܹ̪{Z1% eq1bl`L̆ܦ0k邖/fܴ?4qݦ6>S9gg,ڕ)f8#n{1U-1r=1=!*?8RO7ؑ]թU>ʝU>ʈo@ene,*Jw^M"c!/ى8# c (ĚxbeKKl_@̋is̅bjNY9{W>=r).eͧMō]?.DӍon:(?ϊ?q]!7Cֿu8ΈU~eZho{Nv*qv&ǶjLp q޶f8(CboݱQChm7bOZS|jF 0@zxZکSNؤ5TQN(MF u):9L1K}7=⏦h&j9NKCciw̏u'_ˑz%鋿oY 2 2tG^',4>٘Q߂ww۪aTs!+-/ ']lEY9E$ݛd|. @Ͳ5im|{@rn'9KO g80gsUMv CvL"GUlrrEZ'On| 'qEO5xO{rSDz||0]^(mJ 9} oo8) oʟj<OT '^b&i{17fSbb]qN,'>FqSq~MʟbkV j"sPUSER3PLAz`Ң>Ci\5YKKFw%jԨ=ǟ:C.0x,u Ű)4;+PP7b#;{k y~5ɇ.%g!{ϳ-8Mrsr<2r Cr#~9v!V 9ӛ1{CD~|͈Ʊ$"ZDhG2!v6Ro_tћ;?X ;TvU76Q̷MWQ\ƸSn4GM?nՂg}2!5vfK6>qqZzR)oYPyp,E1/fϚig<S>cKqуu lk[m&!n"ǭǯb8XB uyfd0`7ch}b{Ύ81;F>&)Vw6ڡZ*s`V[k [e%YKЭs1-MN6d)d쇾Ѿ13FlW7|W|] Əc!r)qml#}l{U= ~A>%8mm3rɓ0w1䡖//ʯ}e%.Fx;Z?kFIU][t\}^o+=O3;Pm/n҈|+˖"CnzU*Vȕ!SEu-'@sJMzu9={Fr"cȗͼٝ|] yKy(]ύ=)y`^sl?Ƌ˼7y9y+&yx_|ohj'>"&^m8 k]Cb,GlL^8cc%Z,1620zQ,+|4~O LqFDKc1&Gk^-E}#e\{B B|;AlKuv->6 Li=뛋2}׿9>ÈY!+>$1q!-U@&nmoO_OYeJlG|c=wcd|Faxt"oB4 DC, ָWy f*DZNFcՉّW8l9nǐhf=b]UU:v\؞mF.@6*m2z:54tZi -P*J V}kBT#`4yĚ)֘ ֚I֙68cqXlkceOA}@c?%kCr0ޝ:y:ë%_ȇ k1agywNj2@pg3{rMqwy|ȃSF9-w w1n(omjTԿ:rƾ yX~aD^ vٮe[`afl;KOp)΍!&9TJ21PLrrjv+9-;rZvșy=99?WdK9&[+dN\c$S%04&r٭^˟%>͈Ssn@^&L> <+N~dg09oUz\?`q>30?/tK!*q, ˽b 12GCEw+T}qU@kBBJS&&T]ʄv]MPX#xT7ҜC7]9zs ֨ߗZFq|>V(a]'(fmuPlWw*~ uuo@ѿ(M*vܱwR`?%G7ّ<3?."{f|=Frahg7?hwuhhjs!vL#T5;9DU+;Ts, c; G:T ;EwxC.La^@^mX)9;+7G2|tW|i+௺6:Z&{ܗack(>ɛӈOcz6">WwJeJOqV@Gɋn^e/o_76v`ǎS EяxʁN&VEq5{Jx80VGW ⠘LE#!VHeXcM3GDhg).Q!(Ǒ*GE /?kz5)|~ψ֌;aL|VO39*Ew 2UPzSc0шXZb7cx^=bb<k<▘aqDww;D8?6n 1>mDSݸk_k{B<a[+ "n3'6THMy7 Ym08ԃ ^1vzCscԷ1}D[HaEcݣ' ]ju'Ugm'k<ZfZ&({٤4܀Y%`4W8,,s-f3˹mYXT_,Ӫ=w"rIhl hcb| ^z u9ZW=ef9oH>lniГ'@\o]4p~zrĒ&A=]yh^Gq0_"˟:ys?_.5{}WsuF6 ojEvwhv!fK6%Yrn;jݒW Vc%ڌiKjL6Fz>k,ۼalfo& ud:rA/V3Ks@Ϻ@. Q6\C~&rRN)|/瓋eOrB%yDSɮyKWB^!y-09<+ͷ|35Ӎ§&yq6Ӊȱ`Xơqye/kn'{cɽČX]ُPsGS 18D[tc65rb8.6R+{~#qhtTꢯ=$,WNt @]rztXSsg~ ߹Ƽtd~t,;@CԏEDhJJCE$XGb\ nQXc%[1/0#yGC}keY{s9Ƙu9+lvIq >1?t'9\762_$7GOg|FCƹoܞMq#̙.®"%d:T0x:/ۖS!ZfwFbe!ѕ ŔXNtGc>"6(bP PH Mb=1&.#^ ~}w'di6%~_G{ܤ2=cćn%eq?ɚc|ϯh;mwíc? =Y:;-V sKellza 62;6EhYu XXNhm=Rm1Fkmzk-B+-%ZhՒпFM5+W)*˪ŖYjuHr9" 0I曇YU-*VT t:1L5VU4)ǣ0!ơqbc)99 ۢJlf.ſ75!=\81!g?acdOp+v; uK^6q8KV*/%;ܼ8>O(ǐ[98dGd6dӼ#6wCΆٚ]9*;d_:&YtMq/yCFM’;\3=wn6i|J&P>!oQP\xAxykY|f91S.irf9CJN?G|:Ov$w$w'?(y{^fݜ<7ny0;p/g{j!Y6Յ;q!Ox.nG_34q^XSMP>QLS@/6bv9 #PuY9( rHO`¼zkv[@C5j 829@flC'm\]uԝ幕r^[?^5(*7yeS<Sr$ύM}~7)r`;["bov-Z>%'P_H,+K̏^qON,3|Y ;E8)f~` 82Gh_&ZFC464Zln%Oc(~C!}!Ϥ3n<|dWF:r$ƌ0&߮E⫘nLq`4'ỷU?hc#ИF1X䃸?1#x,GX z?Aтxw/L ƹ%{\U+xz{Sg6۷هYlф-o\N[nm`ǭ4}PnS<sȣ (/|/(h둟59#ɗ|/{<:P%:fD9l{ rA֐yYz>6 7*8x,|[䣆w g@xC܉桗!-[8.'OćaX93jg/j؉'D+Ox8 ^ψ#cZ"֏N7eRˢq@4&zQ]<6*v$v&Sl_ J~qa} 9/͟buzG/lyq1mN'n[P-b#_lgWѭx8)FgX7ZS͢ ~bqy, f1'&xhcT!ė1XƯ!bB|LěĠ ׼i^B7ŧz?{05N.+mbl=봎݈Ω8LÍ'\lC20wZcG{;zRlicͣnz`CF7\2;NZ뀎kGW *#hku]%U QF ZY^Z\ST:u*e*Rh\5 PYiXY%V"*!eUB`*R+UG X`oM)0G+FRK̬>3)IZžO1t4 cOq`M"ad>K ƗD|iqN3W<6^ [?mfʟ`5!Dv|B}\B}s܈|:Wu6M/wx7[,|o냾8|{]G贚71߇ ʟUGP^[~l KBO.)_"s܋YNV|5G|}Bޗ78yw|;VyܣK&{|l zMt/%%y5tK) )6̇]3)./މgeYԽX7j]:׽ 0눚`n[3؞}+__o 4TCjVΆ~FnjPWSWB"ccbCn[;;ǖK[ZO/lM4=imbfX(ENdhmhj/bubLǼJ?CU; f6ZTM7^_kb5z<֢ 2&ԭe W!Z)|պڊw*%X\-JA -o(J@yb ̱+(@b*0Na=rcMdEK\-|w~A~\mmg#}b^Ϣ6Klxw%f[&?Z?󹭯ɭ?":ɯp^&#e-Fe͂)7ή郞<%;fܞl;d[fwr4;slF9"%rl_bY.͒򉜝-sJv"o13˶惺 |_|?Z=ʁwyrF^On N!/,_mP^@: VlF~lF |.+.G{]9)Q>sYSOY.&ee.&;yE֑7#{2'2,ۃ=Oi >0!g[Bac/-;ɻ_K&-u#༖+fypxb.ŏbw0+_*o{S> u\Y3^Yß݌V[~UN.j5 P ;w|5oG+Ucƺ|(cCPnWV:'$S\.%γ/˽S?Qwl}Oşx[i5x"8blC6Z'ͩqq)ؒ8h*> ь<:Ğ\BqD\݈Dؒ(v'6FGJ,,3qnq'߅8_< 0~;' t؀bƋ]=>P,Atq^ .(64fFUW%)6є0GI66ИJ 1c01ڱf㳸#!V2ؑo"oWW܏qIZ{qQnZeLf!#B}u[E̍(dDvي6;dAF~FFΤ|)$rÜZʛsTK^_fߵ+x럾ON/u~.->`q}1{gN;u^h A(C_>Y؎b gΡU~]lHy]~UIޖs9'g02g܇ӳ96X>8-ywsqW0yW O<Oe3n;q%|83]x%ԍʣODb|&o%+o(_)(R\Y|;T E j6+E(6.+ e1L^s.oƵ9̳N/ʇW?yP PhjOԿzPʟ= uꎨvk u/C9n;(T%U,yx4oٍr7yt."=/ys.Ɯ}sr"^!63(Plbb,6!s(8)6݈?=bGbltv>ؼC ( (Dēٺ_c_zksOBCqtq~u3kީ]ⷱkј&P\b qV_RWFEtyшSbFDM̎b_JLc1* ǫco]7n-ǎ5QC|3^KtGɎՑ^vNj6NvNNlo6ض 軚KJc32cc棱gMrYU_m_Wfś&aI&xsT˱8]jOBOti؋&vO7pfhDqHNvGXVN܍uUYkkP<|)884Fʳ}l炜>92?!'BnܘsY+MF@Qfm&#œ(-'l}:kes_9|{y;L]-`a9[v]mu†.yGy|wq;(O+ r~ u9$PVO)oq 9$.f]s I9:v"z y9ݚGy'nϛ_糞]@l14?^QnG^馜}?Ɯ]FGm㕸;:P7:ɿ5Q=y7ydyk |xP%zoW\X!4uBR20Gs]}O\*P |5 P X/7sa'YP׽^[e%;= -uVe@ٶ|=n<J_~܇.ܟrFyT^vyWy{fnFRc0r'W:?vBk;%2bp]ube8梸*jF|a8-Bt66KhmbSb;6q_bb}w@-6w)Edl73(DEr0IӦwZp8?/㙩oo/Y|T:ϡIVg P (.c6R;Xq}@GU]|Wsa5qތ=Kl>NܖOChWs,-%jZ!/Ͱ%%C;G:"!yy%Ou4rr<8[s܀,̰!0eG~6#Wd,N(d'sn9?9TeW/l'/ {bȥ\ -p}f<йGAoғrX(/Prn(fыrA.D3w礜N,?E/crXψs~$_V9}]ȟG{3mnJ<]⵸7P76͛Q[3y\yo|Mr1P|V!5;@b[(UV,ǔ#l吲7Lmzx ߩKS'VurϺPuATPv+ρʘrr0{;;cC|sɃ3sz9엻b:u(+̹!v[gѺKH&NUt%t'Obx*br4!ű#чآ؟S(n)-c](cC(6*bQoBq]S1t&ˆw՗o頳aGxWίݓx:9)Q\Rcb︤؇8#֏Dh5љ(Dsbz̈x9F\EA|ELj|B 'qXNƎ77ߩD!8Kki#bW+1[ZMMBK$&jy g13*]U}m#ڹЏ:ku%ZUI*jx-?j ~}~7Cձo]௹_o5~o,(5_W YZmA(W D`euzA* ·) ^8[ofzA\IΊVTVbur20xc#Qc hgt%IJJ\0ȷ5tq-<{+d|UK>W*&ṅ^4{}@By8@MlyW~d''8oNȦv*n왭)Ge ٣l[Tr5GPq9<#P^.x!7s9NfϹc<7vnb/s=N_>:ʟUoP^,ʻ 9i u?QP?W9)R>rNNɅ|. y n=yDZG5wu|{Sy!xK܃::B܃?Nx4> ΍/D&y'"2>Sb[rxљm/R P󽺊5\\Z;W5?`6.+wV?=@4TCϯVЯ+ZM vNPws]3(龜kSw<-,ٽyi&4wy٦|5Hwf?M>yazJwXKc>.5qr>6FO8Dwc;bx)ǜhCqh͈clAl(N,v)KI3sE7Q4@l@ŕPlCKXIESokk5;kַ-:k^HWJck/R78{h|k9ׇ~E(Xae (K,TEIP!gU-Q0k ~JN+Ͳ`ijcM cML׌2 GsCM&Ymrf?>+tqb_<{y2~E?{1/[qKn<"58#I~W܋|6v 2P[^5ŹdOr~n97"fd쑣-SˁyyZ9x'yhN$/*QgAygy|tOe>ImA}v\T[\X"7+ vR)_/7m(/r"E|VCKsnN%?r$9ѦyInk/yǰC0 w݇;nj1=›ϣ9.ϩ*w8+}x7^M^v`y3w+ OɧYVS(gAΨ e@yu8U,5jikfgfͯ v\[=?9oØjy@4TCo\Y~/A]Jw]%ʼKA;q}Ozٷ4>&{C)/*. _Οdm<<בd˝{[y(*'~ E49=.qSlB|G;h؃8(Ώ{ƂX8>6]ѳؙbOJE{FMщ❢&lKKSE_=S)=7/y7_xW#&4jRwAOjo¼x:x8Gxd#N)ŋqqISCL.}wylD1+?QKt 1hCb 4>aĤjgX4qtc&dӌヘ1y?};3íuqvHGh480C+bib81BM1'0;zFi}q.ձytFDt%** t+zͪ7CV䯒5%SGsT ɫ֭!_s_-:M 5k>4'🵶?j_Y~ZT_ϵ5jeDMt\vۭVo4Ú sY&!9 9`)UEJEU 9ߒEPQ̎)1J 3dELjc„x)>B_Ɔ&Zr?>t qޱ?o{fex'.t7yhޓ=P y!'-)ff{w,'M|;?$73r_S`řEv&ٞ溔fXrC*,?"GAeysL~PZN<1"˃}lGى|}?= D{'xFwK:!PnZNš ;%'' 1|=_#Vf||r4N' 9 ߊMɿ摹U6<<~|޼7N>b4^=w'B;g׻| i1&7}Oc<@ʧOYlHS>EmP ~P^_>5l 90hfaWoS!5TC5jzه]FFX&Pף~ۧWP +{C}PUO6ew?<-#O.w)Kʗ ˝Ir?^%"6 OKWԺOy%0s=A4 ӓ nMO8X@KqP,ęѻE];%v=/qD1xSMc(V{V:Iů]'~Ȼ ^ڟ?~ДO ]3&͸HqjqZ|NWR|DgNGؼ؇0ZƜ؊331&Fc<1>ލ//b&|T$>1ٟj|+gp}Ac?БU1*Nk0r{:o~O`nlĆ ݬ+]AŃNEjWzI~ׇ5&5;kv+j@_T֩i+ze]TׇUUkS׾|ŪWq_3LoWz<7$$֔ܳ&PiaV!jTk:ިV2WC׼z<:V#y{v@m0XE4|c*Bh6D:q:䰞0fZµqU\s1A`ZE9V+L$SQ|cse8&ċWhjؠW7cnv"Aޖ[@͜=~`A+#uvm&O0)[f-=GV΃nyHF=lId73m.;P~)^v9[lS~A٦;daCgIUBJyHqg#F6aqqY?5vM4EȑNbl~]h^Pz).[ym)D?_jP앓\@yZPCwćUAU./e9rpt҈ECrObe yP]y;"Ӽ×xY܉l%&czt-/xأ2%ɓD㋞k^Fȫ*xuYʇ;T{8̻ X@LIpGB]5TC5p5 Pkksw`+ֽ uނcWʺ1ew(?;׽eM#S-&'3Tr|R^^\ME?wtb~lS ѯX\lKC;Ŏy%v4=-cd"&FAf $FFx ?0^(W61ox+.bjXC/b`bgb]=e0AwH{bb]Nh}Ã:\oF){Я٩GUBW P_fE**@nJǷ~H+%K ~Ze߭XkU_flQ|[qXXy4XSqPM : 5*M#jUT*o+kSR=dz;MWQ_5g5-ԠQ|@X8EQ% j hʎP0(X(kM9XbYViKE|U!)U`jeaNg*ʁjs!9*GK})J|>74 DGLޖe[5)$?FGlOmnW=}yZnGvr#r)d|)DrHvu(ٍ\/kRTW>A]>[LܰNy`q[q5.c2Kw^K^TVU_ %.VEP3iM%IYq5<}(߭ ʩ`|֮L寻TsZ$7 4TCWP ߨ*__koyó%ԭP׭{;PSk e([I/[W={{ɟRSv(,-ېy$_/_%̓r,:mbLL򞧈81NZhEW8iDgCb?q}yt!.+6,v]b>ަ((~NqwI1*Z ˊQ>q;J^ӊ:G|o+~2go_čhKSxb\Qdqk\Cn/؇X7cJ,'E+uL'&1!}_Ň1A b,"mb_~;|?pƾKli82F<(L>!vhbs0'6p66=\`}b +a{WJkSק7_%ok5~-5}=_Yگ WU^K-[ /[bJgv [ TSDe\er~u᪔%~K0+{Y[_9 n[.ۍ}܃W#eMA4fӱNTGk:V_^ eAYW^)mFE寊n3-qxrGtG>ϝQ~e,׺y>C oxĖ+y FW?1#yk!{#bA0:>y2|+Fv+N#_(>՞1+9 2\l5C`dRq|m޽Qhq#oVN>+"P @4TC7z/Z 7=ծ<궩;z\9+C"ۻڿG9rmMyrm۔./yPB6?}Oyyy8vx#g10_q$8=~V;13㱝2j-Jxbwba 8)FOʢW'Ų+Gl7(.(_StZ4binP􎇠h[tcE?h?}_=sFءw 8x>XbRVLZ\_ĕAѷ!1#zE-pش؂,$dX319 T 1Ġ-T]b.T%'F^(NGiBo[cZ߶6Џu ֯zӮWG ݫoJihM| ojU՝JG~7|/Z j= U< ,VN9-Th4i5 TWUW/g TN99!r;{*-Vٕ,eK\'S,3S>s(n+)?<d#u;y[Kɫ bzaTJr98a!CwBѯP P @C5Uboз!UP7}Pc5PJOzw)Ce]YJŔǖo#-O*_y^{9 ܼ8Dž7/!_%81O'0 e;1*r+*X'Pk=1┘?x~q2u>^83ŭC>ż9El]#X<7¸bJ9iyË9=΅ ڇkaQ)f-FR_S|Z\R,s_+]jXGQ\#b=x%;FMh 1:"b| ļ_MwY|ψ)n\.K;!1?֏FN&zx[1|`(1Jm{[46Go=m+Lc}@]jֵz\^*oV)od瞵%>4˫@tͱl*z@j _9gu P_l/ g[sVnuJgt,sqb9*Dr6&f߫SǧuY9z;a㱼z |34 qШJU@UA]JD5.r8 tfW*v)-5fh*_mk5B;뢹E -)OCǨX6ުJhd;lVׯu*#\-yY~;G;muI;U)^X'"WvJŚ*BW"ķ)E7M`~ߨzybPUf˰$dX#gUa|bj9=PO <^_|KJ|LZUu0|b 5#b-b:/e7\?%y"z`ɍmOnK٪20v6YGL1/1*;f]Nkv-N%WSnP>QH[qa . eϊ_);wtrBr!#hd[pW5;w;f|68]xtu=1q0àVǔUG(v(oR|=6_s(1+oj7/:?]|?9wEȿgx+yE%l&O='bFp1'o3򢼓I>X^K1vyʛ Ϭe3ȏs {s0o$yZ ڬWHVP q5 P U}}злʷVZyuY7 uӡ<¨gy}c-?ȯ˾d|4O!E:y|ͅhɮt:vTΕ0'a}|;⸌8!;XwNtqC7Ŵ4b858-*n]tXV4)ZDoSt(A;ބ :n&q7:YqBq Ň*$Yqeqјc%o[c`%fŰH ! >l %>9{7FjLjqBYX\ؿ=mob M$z]淩z[ka%; +^?@[ (Y {WZ/fG3Tȯ =Yf~@74ìz@>30d3ȱ& 1tv*^hji`񦒅qRcM,MLxu9,4_5 rpcM3Lƃ&hQ&X涴 rY0-g[d5M@빰X XXiM%@=jVwVj=p[wkDhP4% Poh.6TGQ36\g:Z]1OK]RG]X6z芬Ni{]gtMgk=z0 #z~:@,:"[E8E0!֫ zMQQ"0h#ѴQkg|SIPO5Zi  ,Q!ѽ~\ERks gTװI O1X~F94 'U@Gc- *FE6y}DqOfri<.#+@ېgor܁(wȍɅ6ζdlC?y٘)~-0wqe; m5?._ܠCq2errO^ao畛[7G[7('_vFGm^7|ǫhOknh#[ylV5;9ĖuK8.~M_WĒI (ɇ%ߨ+ɡ+PA;eBT%v*+ jGlD߾ ҷS ʀ߱jU|<^Zy8ԝYw#XVW =WQvv0auQ0{אϕg:B򬼓<((Wvy@ B;[8V ~:(? lA%zĸ-n Nֱ/b؏=+ΠR?(R9ZSDEbc(zBUq;ƇP[q~kdq- {3&BB0o ŝ'xbXq|q丸%1:U7)1q4qAc@ $ǏQ1;#cxQT3|dݸ;;L46/tz5l3C2iU~qF}m f,n䨜Fƙ&&xK5LVįIE<$$jX^6Q͓GQ\| tPWcleݱ d|J젷FZa bGs4Žk4ґ|Jk r}bsbz.mR/=&y*:&aS-,1#@V(ZRR>^%6_O HBy'59(_&̏-bbK98~1lKhW:GC5iųŗ͋Q,)qѧ1}\C< )ъ()DbsbI/cV 14&NL/c117Sn!9qj{W+cKd8LƧ W=}sc˫6!6sMg]Uz*@~7$*@)Y+RY=nJ_B ,eV{!U}ڡS~]_LW_0 [X+132@ VSΧ0}5V2oMC|b8}/0G9}iu33U.; Zl(>00|| 0c9?2DFd9j5%Ĵu`PJUJx`}8jVW7um|%:hkt%;=,(tZ_Yݰkf#bhb7 ^ob_;Ŗ;l+9&%_Fv5vckb;[<' Ǝ:ZJ-:'Zl3tilT@=V6vz}=mXmU9?bStF6 =+At*D^["Jk:VgQZ ֶ4]c BXZи:V&:pytV+ ʴk8,ӭ9p4jLa_Ayu̗ɻ^>26+ 7㹼-o&m)z_Uy y-4n$yػ9,96n&/!ym+7O5-!977/#I Ý ƞU=_i&PhP{}+/ ΀6+{Cu/ŕ1}u'=u@9<:gsI9|6WnAnVޕWfm8yTc/!O#b<8]{?qlAqc4~A "~L(f>Wŝ}M,N-صYlLuU,hY<-(zFM*z*"{w#=W?3[QS3"SlwoR(f_D︕⽢Eq(}1-.!FP_lV 'bJcVA27$}CPX=d*4CG1Ǒ>ƨ|G䧖Gxt>$+£ڡ4o؜[&;fbMB7!W 5L/r&Fd|aqWUeyLWVf󪊀UBgy POTM4QQ [:[W;ݝ=>J7V6MVXOlvPܦ ݺ<҅ռLj ;v׫݈㣍]8=ڍk[āvŊ<.:gcؙ8jȓuqOVP!umFζf6v%wl碷l] bG[ؘTQQl(X6XgբP}UW+ F^QXJTB[jr~JGӪR> de}atNXY=p51aQ?`vieUc /5!aD<oa Ak#"@jEQܐp*q~jU2.!7 $Ε=s-g\dD(M$wΡE9,K؈ri6̓)۔,Χܰ84{bbk(5Pk}(-&w Wsj?Kf=_Ӷbx T(64j/R)牑FqŻqQ11.6 n(^/P|c $:㈸x$fGAĈFb'>uSx(?p8ٿJ.Q0> 5슻a;f;f3>k.&x;eƛ GIIZX|6WhX;c6gbH>ltx>q/_Kz'yɷ,ɧpM_ą'?թN5l ;qtq6d`AޞK! _-pmk-0n6 1X|RO>b6-5 fzCaW9gXm/h*J+Pɫ_RSb޵ҶGϺ~d"c6c|Xi8 쭭n184abO+G8@KLpn)6+XA纷:a8Db7b$2Vĩq]seJ]4yxh;'5vqvlĎfLo^8zJ #UoPl6~Ec(1`ll~f>X}0: o*O֘F?_ԙkEoqZTVZ}J$+5iS%32|7?[zx| sWOxxWBiZht8tvg8}rQKӲ+:e9$܏hxr.Q2s'#qgnG](׋)7R)ό-(?۔={9ga ZjpgHvwCGt(@MadԘאhgO)%ٌ8|XkKOX9[YAq\^<x7=S[cr_r'w.'6Ίq?!kSs:{`n,:hp:Do@C1l 8U֠څPظ7߃rPۼv,߮׫V~@Z>T^GynٻN+,S^# 3s9<_~@c O8##18nD=-6'6&w-(-{m(6(jZҰM1жذjvp>_!W@ÕM!>*,08M1 )&RDxoFsW{эbbØ/qZ\O1.EoXM5+FpË+~<w.PgN1͈1-&$[:61aHXX_?ǫ(}p@}߭>欄*u[Bk5]6+nWGIJ&}XO}aj*j~i߫7S 﫴S&NbBNC3E^ˎ&ʛ7Z"_f p>'n.&V/c}<%1%wȫ/kN,'Zo=8WIieӛ|^F-0  MljSD mh8Qbs#c]W@XWwAGAto< z떓Cg5ԥoLmZGjA lQ6DY%IXQYQW kψ)98BS;k^7 Ljy99:(iyNF.wA_9M8.?RXh5qS]b(qU-x v(_Ql/Qt*n( ;D(6(6A@(-G[ڏwŭ_=7iqGÅ /PlZZ|A')P+VSqŻKcrCqpo4X'ĵ *cYт8.>Xol+ĸ9#q7Y$O4Dw8 >'{xn>7z6FcC=B sS1D_Tn⽱gݜ~ۯ)mBh3RokbM]X=EE]'߯MMY8+'7 KʩhHWLČ|dUAK\K=?z9#__dnG{/z+oYdw+oY0}LntsvW.e9|!w2N7s7M\( t x!X dy?a佾58lB^`+qR%̏~5:uFOԳhnP|]&Y15?1} |\E[V[E=֚Fw]=Fo]T)=.`|?c6$j}F3K}}Ff:fMGKj)'~{V*G7quG>~#@\Qq8t'['hp%1_w'ň8#O7aq*čqDGӰa\1:PG qqmriķ4ϲ|Iq0-+ !/UY)ꋗ5Ct-6Alv2c<cmi#gAlcT fFB^T7CY7]\cf8P WD]s5^k$4o0Ф55҄vnfY1ַkPh}2|'Ύb)&5Ǒcq|9W&n҅8VM^f8*p6G^Tܗ0-1ȽsPv$~(7*gr񯸟T'f8K<ʭ){S{|/[<>{yisM٧=v99K{hSC<]Lrxx3^@)o˟'R^ b|*EarVnu/ȋB,w7y?146'WC#09kjK]Np?R|/br8sS(P;r(VQà|#x]0?kkm_Xk(7kg:!UsAU_m~QPY}߄wt+jGiFV>Z9erEybٝ&)MvˁyO^ۑy.KG{5q=L,LlRzĨ8,$/QnLYt(6x;v_Q *~TEI[̥Q<% ;͡S k4lR޿|pr7BqkqX>&+)zs(*2&RLw+%N8C\Ǔ q5T+Uіb9񦏉OxxۭXM.s5qXt|Rw_ᕘ,݁&ilk=Ur :^EnuUeηF\^UjF+F+iz|hlk6ޮkIfeYodCLļ|xp$˘jB>O>Uu>1yײ}%yqs>B~~IN+o8]o?Oc}בGf{ G=*iN @6q>A^q+"3;y%w} K9&99SOg+b{h}_z!n&`X6nVxl]X=בs?az|%xyǍy/w6kOYo@\fySw[yHy6,z><@3Q`m@㎮z[Fbpp}m;ƞsxܪ?}{1+.q#4覉ɋĶpglB_J цz51#؟i8OEsˉN߈kcK\OX`x*V=ݦ=ZqIҁY8[KI+bs9gŷ~#qQ(l`Q !Nlj`lb<lc4vlHlot ǖ6ya 3Y{99=*H;k$ |cBlp 0 -;ڨ%KfB0H\ 9F FӍ9q. KYz.ȗ^Ocyj"lle܀uaQ P<$us71>8$?u޹Y@wwQ^ocYy!ŐRM)zľ&>(v(RP*[.;=֒>#;՟\6 }.; U`:0zUZ`C̊}!bvyry!_s|$v0 S|6w)*c.Οy+3 /#ʣ]>`aBrX|BMwU(gKlQΆrjGP.kjBj7X[kεX[kZC[~*8]_Bz\ߒZBmHP۪ʟއrBYQn.gQ^~Rrrt~ܓ<-/"7}<'G(;-F\m|d1q qÉ._hI؟Xeq1867Ps;%/'r5{s7Ơc>IAysV^}hr=/#[;QS<rsO; 3?F?"G,K5#FuǐW泾$.SF+[747 ҨcD`,ϓ"v4&F.-cx=`=T}5S x Lv3@[`y<(oR Z|nDʋ*4bDL(CU l)ؒ8$o|x[heyj&Kpav$e8mrTrKQٟ}bc(_9{q˷16~=KBѱ-eسXgYىbrn^"xWNѝP.6e%y({ (A6!~\ d'u?ָ\ r]TҸ)V6V~Nѕ#@s(.|KRv#*//O%;3{ '_#;1>vzO'm>Dc|7%v1vDx5Fq1Ctg(N)* 'cؑbAP\B1yDx x6"uWx:͸P'DxBMcR|:1M܀ X=F񯫟8XO}TnRqoeT_O"ZK߸/J,$TUgf?ݬz_Q'VzQ{| 6Vx8y,-v>1%"_W>1 W-ɋ~Kɽ]<+d+GH>oP^Eސ;9Oc!7dsjB37'bp~d|7&[cy9ז'Nޒ'F-hMs!>)蜋aN"gky-$;;\Xmy~OA?8ːGx$qwY5\l]!O쓕)cζY5M-,}V\ȥf/{!Vi>hXiuw?yf_6fW7}G4M֣xb>noeqI39IT>V|jQ;UKj gzkVYyW]h>Z83Xl28DD4G|b`]3,7hmt@{Cű)Np7W:z(N?)q%b⵸c1&678(VaB%Iq{lE4q01,渕i\ACk7sĘB,%D׸%xzDscoĺq޷s^M+syY>]Gq qj>jK\gjJz/i0j#cGt} b'cMhbgc66 ڔHC%ꯗJ 8NS֤D{ 0&pMLu AO @@\j  U Ti 'nCL83&y|狎x,Ff̗䏵gX6vȝ?'G!v# =GfrdvsÜOnDg$+ɏ(]5\^lB6R,6M(Do1wq(/!xn:۝mu'yyt-șE~Drf4Ip|77|ˆy +WL;+k?ڍFm ij[Ԯy I==}j3kW)gQ.<\??,qyJIP[5wEmۘmqzqo]!Έ)8"ZD/b0v*)'Rtبg1bbb8h- ghQl ma. _?;+ЫPQ .})zŗӊŇcużbJ1ո7QVZ~oTcODN<>&FMfOd]7Ά{Uc_#X_Zk ܶKy .emIrLyvK^+mܒ< 7?6Cjf[u&~j{8v&M'V~/68ص6ŽwF8bTY[:ӷ9+G09g&lF|Pl@qRx}bF@1xbiV1bE^>q݉uyxq8VE} zY{렝-V**(4f_+5bPas >6*d_D5曦)D>| 5Gx ^ Z0N>B/qM'WN3 cצȧɽr7o7$o6$Ggy.{Xrh6ϓK$M|DcxD6ri.ENwȆ,|?-ə@rFvȖ{.SmN#͚wsv,[ry9V9!֐]r4vևAɎ=O_BUØ+rXhvS gĂuow2#ypF>2dl3>wĺ_{ǝvz&ޤx;Wo@L,R+BS>ٶ.w^^[oGW;b6L}bQVr~G&|́?f֤bR;,{ bYQ^ S~~I:F:XH2F@"&B4ۢI%FŶ$%Dx*6El(F-/bama$^%FR/}[\Gt v7hg(4cwbO$4$!q):ou!+Ek$.7F')5glK,74v!akcl lFo1 }ս %:u`ho=AobQ[=jJ_ B: 'ԁAzXk(a#Lq^8|1&q7OO$ꆓ 9qhrkevdPrX4%~sc8{Q9O?{cbø"!N91(*ncp$}FngwM|=Wqq?'OqHߝ7~8]MV%Y8[wOPx /VujK|rw7xBa* ]C/C;M|٫>$'\C@yof[S\ R~k:5򻵵o\kw}߱G9hҸ7ڨTwmW%kH[Y6ʽ˳-# rl'{^!nH׸|TC _5ĩі8vC)v15>q'Ŗ)g>)fSSL7h8AY1Z\w1cݏ皭o=bv&ch~XIYŬb5P|DѢYL1xxmBvPxSNs1$ތRb^<nU4W* ⍘qm+Ƀk lb:>%?jKj͉-~?~CW#ms١4vԥm$JOc| `ڣ3 9hN{>?)s>2eS?>y+HX}_t DX:!:F JtXtFRv?ދ1Kw|X'zǧ+>%FGbA2b3=M$vfќb$ 61 Fy?zƳDќ:ް.c'xбĤ(s?C i2/FׁDGى<*̳Cbsbƿ10lnuMꒂ_ro z2UmNkV)loҁK` P3:ԙJfyޖX ?ybiuO6)Z?"n3i/ 5|l%yBw`-}&:*#F.?7ɁA+[WdKT͖eqlX||b.~@ٷ|/Qo֔GbM)uϩ]k`3 ?g|l]jc [7v3bX+.W j w~q?N\O<[N(7m D/a;.,NN|l0b"qn XZSZOh7ڳlX[k;ktxC<j-jAmA|(\QwsgʟԎ]G9<|#,O$/.ayJy)Ngֱ+rtUfBM.IJ8;Olgm^vlHƖ1$8ا8_qPJ!eT]4_$Edyߥ Mk?kN׷/[A^Aѵ؞bE&-SV4lV,+QL/d\eWxx ΌS?bG=ut&sU15&^bN1˅r7k\_5{xw1zw{2_WyL;_Lՙ kGX?ϗȭ ܒ"o 'y<*ɍɚ!䣹|7;f,jN)qy9-,Pޙs2[Y iԕoQ$?2FNu,g'ydgșFge4'ׁ< 񃑯;n|̈c4v= :K\\trk}[Gܚ.Kj.d:# "P5`8IUþF>-Л\L5iN'ćLE_+_7̚; *8ݫצŏ . 'b'=TBRu% 8zʊ?vמXG[q Omx|˷Oϣϼry+='l +ZmQI:"(JM6kFWyGl)FG?訡k$6Sjb()rM(1bGbh3)vfcc8ObL͉m_G+GSbx\H̶O^61'~LlWa։ȿxM#qu&6 .{ Fe< >v>=[>Ɛ6vXcBSbjuD-k@ Ϳ/oפt@롧!/JKX8a6&_s"foxOsdCbAw|`[%!G9<$!7!׍ٓ8";e;'*S13m\I(QD85{FA6S_PjOÓt+oy G٢kG^04yڟ8>1Wg ޷h(5[mYd/sONĈx0ǫY$vX"wQ} :z)uwp???Qߨw|43_ڝ APS;j;4>創 8vE_^X#{yRHIy M2&ϱCh|rcI'k";!!:""ф4(Nub]lR\hxnř_)׋4|x;nX]4B̢/ ն_z0?ٽnœs}}(N(&hҩɶ xN*ߣ + 'R̍TwSc߸ѯ؋8-Hj, ŬEߏi{x qq{<0g~Bf|?Ov՞&㜁g_7륳gSE,b^L(_rkY@&|ЋG9d3|{7ޕ]b=lo{ \\n`f}[רxg+H3%n O&gU Azÿ'6r_lKE9<-+q~Ll@ޏ{p j?>QOp@"%eXjKUW濆?EcuBoZCÈ]1Nl]5c֛êYݚ_(6|oJlE2Z Č? f7C"~FkrO}q*r:0vL/a=;Ğ ŎdّM-+ٮ"v!ȝGQ#1SN sc]GtQn}?vp+FCx_ w+ϥݣ̘۠&n.:x5~呸EVCxϓy,Ǝ5Vǖhh/fA~eZDZC_8g.*?ƫ߀Ս_A1P[^; ʍ߄9/Z'֮mOCu9ܹ<ܝr\<<(a<2@c{ - +f1Ǜq3>f &CcG[Q]_NqsR(+.0.fQP[4b(^-@_}¼qܲ;5>W]W^lۤ_(*:p~1Ŕbnў_iw`1bUqWŻxwvq5jsL(Vx}L̩SpSG`?'(y8N ^p;-v;llClY㻫>9C0@O}UT=еw:ohTj*XnX\[>s#_ix̋&|«ߜY,vK>L?;5o'9%qM Wsْ< >#|s?wzْ̓ɹ9?w&r\94'%{Hv+lB_4~($W۹\?ʻk0+?_뵬4C+'\-7Ol9r!>Y6-bl| MZ#שF؁ܬpoC~^5]Լ&#*T.9d*m\cߓTMirwU DSP=6_$z ee*hZE`x-b?o[PQ9,eS;?kˉASqQ{=*GEŷ4C""".kkmO\k:od8ƞϠPcc+Ecec+)/-r1gy{ΡV..Qȷr6/͏p}1?9mTQ7]^XV랍|r^gq̽ئG4u#qL CEݫ:_ŷ)_oȇϓ#(D?r*&9js;Ud: >"4r. y9>TI%d7Qlo?8r9.@PѧqY}a`?WM59|Qefrݳb*8`juO~>e#0H5L*,2rj2B%h.r&)^ :|ZV)Ben%՟w0B-> c >8VFW}EUb"Zxtx)UkPg/7'a{eo#{*t}{do,fݺ[ۗuo͙> =ysӧ텫?EbĆP!pfqNlL)fFw# /NA 7L\;Dљ#Eb` !F؆'şcJi*@1ؕ[tw*"D8%n F98>n_ϘqGlG`?]e⸼$vvhloSÈ;nN諧t:hjf|c*@֤w@`@ XIDAT: 00#ܸ^'솏➸ &,oa\A짃!69Jclk#]љ1[_?H*s[]ItKTʕqT@A\knl@(c)FE8NKXVnwz {vC6NײhN^kyOι}&>">aĄD&uj70H&1Gw׏ص篵tU3Q3W@ԯqƞPXj4j{jPv;Nu({N<<@VW1/O'GoprOyhy~<šqZƟ$:QǷ1$7(f(Nc\Ê4HS<]tЬa4W?ŵnU_6O4Q\NyѴaC^)(Z_Q<])I7㨸ѵ؁8)>)ē?t⩊3x/.Xy'Ǜ}k}9|+&{mY'\+5 GLiz-ӈP#+42L1ĜM>Upm>Mý^ =}AbYv_Zb&eI%<7ȥP{ڊ|+Sܒ'?uw)|<*7rqyo.|"oO)]soǜAk*Rfn󊜀k<*_9|f3(/sU;i8}l-zu~? A5:(OV5~0ZTzjw$ %#ϜBv=܈$u'u22T}Zr!_P5`z~j⻀\G\?TE?xD>CN3"#cY]e0{9}`9l}sxx" abUu 5XRBKfh:h:iN@gU$ n2؇j}3J0Y:;`8GϩqZb>vV1T!OU@D,`U%!OL3 ^'x-1qJ؈NS Ć9bR{M6sal)gәw܆?>׍OğOD&-5Dň)8ďcr`qalFMbxG)bbAqVyHtUlbL[1<6<=ķc+A16>!vK3bEbX,VQtRI_gwψVGavD+c(˱'N͟Ʈ8"GMc w0}1$GF*e@{U*vh׀@sT-^mTv_{ Āu@W~}#Iĩ[|ð8[y^%b>WƝ^G˜l6_jâ6y|DWnCR1zMٜy1)*311̷,bgb(zgEC 1ڟ}n3j8v/}^ۓgxk+;{ߺ+'oLmC޳?j+݄99hgKܟWGt!!"ގZsOr1.y:wYM@?qj7]n8{/6څCǍáAm/m G֦Aiʍjȳ;1qd>cr\έC44uaev [b;bhL1q\Aѿج؏8-N)){0(,ޥضuHbY|Eoq} hhװ-<>啝Ϯ> ;|b⋆wE(&e> c(~TL,Pw[󋫊Q"n+Q+?q`^,$3 1.9E<oo-&,ˈb {85nc ; fs,6U7{ݭstCڨ\PIM+} Xs|+Ledx՛ MK=CKh?$1ciC>G+əog*\Q|'"لrjK?CC7ym9W6y9&ߠY('|\V>_>'S(P~|lxL=jڱ[n1d ;`6hvW5u7(o;XIC9O#{Q>_GWG[oS?MvVV#6G 8ж~dzjj{m0z NS57{*ȟ%/^Ƽ;u_$'fa}\A4uu5y-;aqzaӜh))Jmcspy)fV-Yj1qF. "-DzXj 5W!Z 4@ZYBKk> ># m :( c<[PLYx)v0^#أ]&8MT|TglJV8d)Χ8 #^\<@,LL%~Y1 a*@`$ U*i_v9\T'Zn|">:˶5/f{[o #ޚ>e KgEkC*rGqlCMqAlJlBRZmb}bbHM;z.1Gu"1ф10Slݣ _=`h?" 1"..@<!מl8 c∼9 NspB"v%m6mSAC]+Vf_{|c&XM;@|XT1@W,Dga_v]{ڃo;C_~kcd \N|򁸁򻱝hwA,%zHow[hyU-aN.`!sv}j-QU㿝z3g%/5V&Bm;P;6 ʞ1nڦ[ =ʳ#)_sm˓0-?&ϳMZ~7BOqZÑD ?h$MFq^)F[ĞqEbUяRl^|؃݊(~\44VWhX>xQ.53<]\,k nثn)Q,7lAŊbGEAqLt1Q<*Z{D@lmbz̉SČ?v'7܆[̏hqc{tqOt]bo\ o[0zcLk-OԩJu;W OWkUV դ?83%ff57ݗx;/z-|\ɫ ">rc/h\JӘ璟ܑ\K%{r9ccA>3ʟod<KIS)ߡ,(GKs))(WVe.gP>Q Cd(߾W~ynz s8wu0cЫ+;w+ۗggr&1*s3ɍ)/"/"C3?'7W|jiQJ?|Eevyj_}u Qyq7Ǒ@tבy-{{ Gnq?yaҿdge-77߫3~GW)^&&;ൊw;n/u*9`SuU"+hEBѣz2jDO?Ց]tNݦCLӽwtN}XgA]eF 8E1~YFMqil ؖ8ؒb@thؐF*GGqinWE[b$(v!qdt#]b _#6_ƓX ě_Y!`8;y9ƾI#͖F[z^@T{tu@;m@+-6 l )PyZ46-C`P=s~~JE]1U^lUPg̕N*%ޫ ""EEQtK9~̙}߹}3'xjywεoySĭpOf⧞9bOm'-9z [i`rq|XX+|Q[[qSLk͹?qQ}s[s|M9o_g /GoG"cHv# \rIe{CrvEJ#99/SnCז(ʃ1(򷔯wSEh7|&ˡ>c}|hΦ]v)q{>i-ΞE[|2ۘ|rʷ('SZmMiK(okCU}ʨk"L&M2k~GUݚ^yyWwOe2ד{~>Ju#0:oK'𽜧#yB?UW_ B>A )Z-;;dkn+k9 Csdqe m,2.'ֿȏL1cM7dsQQbE˖X@̱B̵"Ӵ 3-"U_E Xwhe9ym%ZAqմVylEi.5 3/W]1zZ;z] қXf>QˆzJ6KGEܖEw@,uD,v7AL<+T^ g:ܢ%(@ćy:U3=+f@1iֲ?ΨoՀ_t*3:ǟ[=7~?sӜc_.|o*}7X0vꠙBؤʑ)vvX mk0pQšDhP^lAY%ŏcS윋b;ĆŦDZ .8?iđĎGxZ[L3#b3tY|!-qsDZ? ; va Ǡ?t]uS:RZMh%>?XYf^9EH#NWj@J|<~|WjVvkR<\BvʷG9006Ɠ[@wi<﫾4e+``7-=/_ S[Ml^3NE=ny H#-+^|Sy_N~u;8,ϒ6y7޾O˹=|!'GmL|/{Tʇkter-1yyΠ|Y'33haCDrl^ȾՕs|5!mviإǖS7/ 4:ҨN(ƓQv'﫷SnFvAE/!O%OjFo[?~no}u'/3E_2k*Z~]S/ǃ6~\|8 ;9>l)Mv"/t~MTw[9# vg?u|bX>YrE"j/h ^'{?^~}yo1s,[; |ofM$ǘi-3?qKt$-fcoVc`B%X>\WJj2P%T@@jSkk@,U͸icI ̯sjnQTҁ9}yM|-ĚX&R~ >?4o>Ģ;x=ؐx(hqVyXH6--ƚG<] NtCؓ27Ď0 Ga}Tju'1U@k+SX3LG?=sO$_|`aZ\\3#?=et},Ӆ\[ omRe/'.68Gb{}u]K=7c)ke=2r*u4/\ '}uwxsxNߪNɍc{beJĄn̪ZU=k[JSGa6@Cˮ-AspPh<7{@h~G6O*I^P/ߤ<<\1bXgA~G.4>srߍĤOcW:egS ,)f 4-,PYXƷާ5*Sc~<8p`-fuSqP4MbX]h_L-֣8hRWƜBE*ߠ0_)oR^_BqyeBym9<%eKy3rVnʙvP.B9|NJ8/'9^ l8׋(W(Wv9νqq.2Q'g Cs'fzc6'Aly;[s]9B ~UmufZj jjS;2`5 X˾XLV3 2`Xl'aiOCk -@-DK,D7K--cz_, q.jd,@@kj,oEvB%ZmtҚls}vncim.8/ i}7L˾XrȋUbH>l>:$bZmGlf6<e;6/}18u:{8<Ʊ^#vv!E\]χ<*qkq%db b,SU>;Um &,E_ʇ,GqM-'<8?ηy·˘G|~[v{?/&B[K^Y\@GѪ5E9buq)N4 ot")!?؜Y)~\l .1`DKN0m'}kqz^IߏÌ#L!&.bc`B*ߓ Dkd~*eO3ڮdTZ5 0;6@Z*WO/`m8-%qoޙcC9ۡe ?Ź6C?Uq~k.*FbbrS5rBE㔜g+r\hZ(^Vx$?)56'8t3<|KSby'ϖO@tyDuus{CWo~H"_B-q)փ;({R _%!GSNΨL2_=ȇm}qMjsO x݈u뒛fk:5 rcE&'j k [T8 ɦKtlr?9)ffɹaie9\,QQj7|z4rDX `r7ZIM@>Zt:iv:kyѱsZ5U,M'̨A: =Z7}!g.ځėcp_('&^HbM"%^k"f7o'T# WҜ=~<?P_Q i{-}^8{Ν:yz3Nn,fubaq -YQ(VMy]F8/P>\l[88bߜ8ߠ'1<#GS\/1LWq uZ Yg%7l-.*jo蠢WrmZy9[f(0HJyGM|Zj~h)y}^o!Ϊy^e2vWͳkI9wͼ7䶔?̇t<2Qͧ 1eKA@rNyym>LrtN9|6HfQ'os L6>l.{mt ǽwbh{д.Kxqd9{<;P#)+S*.ޠq@l[Gy.[h_[>5ٽ`Cqeqn #6]3VM9bjn,Й(bhm614N̫?Nˉ;qNu15-`Clk| W7j6e+4B@zt18kN)2ĩzM'ǙįC׸8!.v6:cumAP~Iomc8X@f/_Λ(:e0 ٝRq/B3^E=,^)xЦjë/VO*`UVhr4O^8ti9-Ay|k~K_i^NS91yuypy9(/Ϳ\3!qpiy`G|V6#qYngֈ m)9gŤ#z=q#).j qn4^(vbLc5hL)փOi_9o_2m;Ny cQ kl2cE[4XTlA{ECbl1OXqGEčł8b|<ӈvx"fEADc1'b~$(΋G]9?DMh'aooj㠟=bJگZQU؂jӟs40L ~8FwI/HԛզzWoxȕ7}42 \,,jh!UhQ1>a,J^3V+>zMC^R3 [AҦLʌڨ(ؕ)Kڣs|YGrN讋KBKWr#fY;(#_ԈM-u0X1&_ Oȱ1yY>qnX'_⾸T d^?:/ bu5_2xL@%g(^ѕT VB>1KO7R $*bM ~PϜrIvOy5r13AqZ68*71ܤ8#[9(+#E 6bnk1GOGl8J!>mosH7^ZH eEwbnt/!!ў2*N"y.1!_)c~PZ>Ri!1$"Ή(6-V}SlX(Gz=oH1E7hh ??ՂNf/i8D h(*IϢMcO)-,ӸYFYHg.']wěDSc\,$Tx+5&x/Y~7D8ðJϧ]Wtj痖ke+4lXM;>f&X1>P}o 핊O -oXSk/~E%䶹vfraV(@~D))(*g{EܟrdnDyo,+rG^;/_`e\z~ U?rs (gS~rTW[r>9'rʭ֔kV ATʜo yHع(71ȁΫ)9\Y^V#\ny;,O`}ps3ɗ1}Zi(,lɗ 3m-aN𑙦`Yb٦ryjӽ`Z<0WYf|O|lԛqZ`@?ԃ끿Rrʁi)q +`jE+>rJKL@CK?}`uTՏϪ ;DQ{xYmTA[tֺcK{mSOa kyX^VjSx'73|Xv؋v-MljtGՊlcuCQ\mj ZL!t]-h[֎І B'Ʃϰc} s[7&qC"Vnq>ňnDbQ0bDD "6Eэ*/*@L/ύX~^UqwVѵb/ fchy 4O] ߲-4l-@yN<(i(ۖ6z j5TJ-e]W>Q' -wڸ q9rSl2h{Ea_|Svk.̓)4K/_J{_ B٠r}USg.ˁj')ٛlEʃ}*oVՋ<*upmLιc"&w%ĩ4?_ĶG 3bI"g ]dwT}gLi(&g&}fYh6/43-Z٫Ϯ7sM_PoBrnqIת͚y}\XoW J˰PK1>^),  YdO3VO+q%3@OTR+%aE|c50O쉬;j7'+` c)S hEFGjiAgmڣ:Wr y0`@eFuzƜXzc5c8yqrh"j t!bN_$^ʟx}oCA+6y.Zor)NAP(+eTٿdoV>Ǿ3C/_zS~_e_465)SrCʱ ٫k3Pϐ?qcs;M:.yG/wKmL>Nb{a7R;-Mӏc⭸/.63#U'9ocOPle|?`G6l<3 K ucM9>ce|KŞ=qZ.NĎ<6'S$fTCFWbf3!G ~ Z\?رs m+ W-jUU?VPCeWhtOeEOyQܠ4ͧwQ~ܭLT.kFyJʅyys0s,Y}I?=pxbč1*R|5v#(Z8دaqf{_ѿPlAqQLq4m_N96Lx&lOQP6튯R^7)m$qŔm3#/Ik)1ю(*ޡ(~cz$qcC!cc>1{џIg¥O}zӿ֭܅W@gV}Q߬5˵(T&U@-1H%f*1x |-I/ )Sv ʿ*1{jE3Za\KAVig\D`90߰EΣ|+')c2y[^ci$ە{|5a=w~Fn;S/^XWk~*6gE)garO*s(2J=Y#g&fKnC˵G=Jϵ]>6bHgkfޞXk3y]=Oȇ:o*Ih?[S?0DrM?Μ<1|c0M,Ll/I=/Oze·/ :fԃL 1ݬz+7-d -\)ӃBŘ/ E|F y,K>E+꟣f` 00/Է4c2Yeݛ5sYyhFQN:﫩meJBGU@ޚ`* #zYCg:yAe5&t %Eے0` oF^KbQ|4l?Q1ljR\WPܝ`ͣ2ɶ*Ώ+πxCy1⌊9P^C^M؄#x8zZ'zs;Nq{=.sy}iؠqT) {4)n#/^qZN؆Gl\(vm}WVQzo]DǠ, H?_~v1іfj>X+?W&#ک+6+R젝h*%kJ,^s084/( tkG,uz^MtƮlk{l?!_}ң̛aSˮbIKnOuyWG7]e[*`UU:nuͻeXвàkK'4?͍já< A' Cz<%vw|m妿[걚>蠣N/R{Uy,\r_y*9V`Za Za1ZcjJmO4 *Qmv}5ȫ2VdJbr 2%9!$<]KG> )*4֏G'l7xu`cS{_ in8:v}}XC{ȏ\7< sFc)l~vi67 w3}g&sY77{/CUswû7m qN1c&f9 Yc9`y(K1K1ۢzp]l\oyݫue*r9}aE"8[/W5%_2Mgk,S:RkYu\_YߞR?}IxxDs|r{˧?}Ϫ[9W3A.]\%VWe}Y-+X-O--H Fi`_@E.M ֦jZ[]tU{t{E[gb }I՟0eMlnul`pjs0Ŷ}P̣#fY7im2Bq-#a2Q9BGμ|qV~/PlC~@ZI"!?߫y7fиx"z%>]s+^{oW9knږ;"gOȫ}DUK>G~^q;y8;D\+_uɝ?;Q\ ɻb;(Cxتd!#gA,bSb6cq2ϟ;{Rߌ}/:܎ͱ #AnufkDϘvZ |F*u-M:錞VW$`-Rk†6#ֲȷ82_08q8#:~X18)6sU؀{ ^!xV+>pנuU4pUU?Vl :iro@ؖ-fxs/(/nb7lk_(;PP>]^H<Jg?wTvGaKzM #ގx8 ǚijŎqzE;{R[^KcXcpy'{I :W[5 U՝`]|Xq21qNh7Èڼ~|<Xg |~Z7 L{ro6d3ԚmVU=4ȱ9Y||U:Z!/u7+>G~%oPg?%ؖLસ$/CNam OcF[im,9j؋MDn]Mtȯb5H9{a!:ّXjf7Y\ST_8;:Z:jx鐣1]{ItVbJ&ڜgݛX\VW#q5*HWQ}qEkE.ڨ<2׷{K}7dTe*p2lKoUjq23^;^ "@˫c$.}[Roo֯gNh7꾼.ǒ}+@@`K-jHQV[6Հܚ!0bUj"L2"eS-B||_"ћhs0{fÍ0/oL#mKGl/ǖ9Ne: t0JKF>a]zcx½mGqh:-'TrxU"&S*F@[Ir1W(N!9}lsw77SG )~F^{y?yqG+CA1Fnd[P^>6$уαآ3XyB"PU1*`JOD_=#׍&@߰>hk،D{c:{b]]L1lE| '>c qc\Nѯ[сbPq űŦ{Q< Flh.bXHbQcM%c- Ň?(nB/P]b1?f)Do鄶F$7&vnggbbO9[ȦÚ֛.*/[\ B3O fm9n*,m&`9cVջsV'^oxcV#t:#-JeR[o. Wˉ`o1?iCNڒmɹQ[rY.֞tۀ^C\ƺ; v7i=Bcydڈ왫^8,wT%O__纽pm.8qw]nzo}6ڴj;5oE=6%&>%fPlL\9֮gbJl$0:5}˜؎|9.i~=_Fk_ӈ}gw?uy8I/#~utu39aPgakX[oc/b7 s.xtcf^f}oafijXB30"3ѹtt%j/ڙڰ-@;-T\, zjS"U_׵7'uU5&j@.4#ސwT28[}[gP]ǯ{|yY+=:[I+vU5j&YT3(ՠH;0fj &qc5,#S>aXl-mMq~EyA>88$/y] oQ tbgm^qһe5siQʹYZ3uCK Us){$Yӱ~\ ,q-k] !GD8yEdbl}WLW;k 3[g-˗W [.-s=9(oDo5[Q-2r7_ʃ$Ts?_ y@p_`?i>q=JLKRbxXCqKR߉W(,-FP|ZNil]li8n#cMCO<=z4~8FFI/b8'7(~S^Lq_1xb|b[So@1.PF>bZOy#F\wkqEG 'x~hm7MhJ[X-MԄY>MMȅ - ?i%oh.֎|% h]ly_Q׷2t'ZzQm92 >d|Kriv4~"}2{YNӺ; C AƮ"{=r]C3L![r-nx-׉~h"lҲ-rGO~w}>=堁ˇ/i8WbzߞWX T)b))n'o"_C%!(~\@g[r2-ʣʹy -~I5V>z\a9 ,G|7a񣼛$nj\M}#E)x-8n|| odESs4i>(3%?2+sbƚTbiT-0S-0?+$pu_{,0}xQŎg>3c/Xle bb`E_i:@/etWyTt `{ijlW#z,] T3=j~wp݁{`q`XLtz-`YL Rr$Uy>.Z]jJכG0>aMiWh[Ճ8Z5պS;YPQWjDwݣ+Mw4t!I?b] 0mE ےX]͍`Z,Ea]bĂ|J_[ <;g!?_ʫsX^CLHN%UIH~]g!osy3R>K.`qLeiW1qҜK擴j[۸V݋n,)Ns۝Agn yTٷ V^TDʛk䑹N6qkGhIO̍_obl$Ή#=q`b_s4Rl\88؇=b<&44&AcjF _\57iѶ(;Ҹ1)ţEFK1Ebz1ƫSdxxWB15xōqXEtL^"a$&C{K/&sWm >@h;GQoTZ ]inLyX$1Kx[f|L\Esg- %K1c֛!邉yi|ҏlK @8TnޱK1]#jzQ/uX+zdʉ ztuN͏^2fx=Y.ѣ|J[ ,~o7r\Inq$[^?ɧup屖*| Vǒ]Nߛy~w{]=b"ow^‰1aBѕֿ8[QoI5Pđ576<ߪ?'c{rV~>9m9sr!956<< &v]yVLl@N@8FaqL^{WMl_ap]C#6=]L? xx&w6 XbP5hlGqcFߋmp]lB,5Yz+Λ|'+bWx,Nn ^F>Z=qu{>&?TrVޒ\dg97kkrm p;>;{SjFƁ?˶LWɵ XUԊ89;ٽ Z:Ճ˯[.!\7B}(o k_,w#rWrH#C{ yVwpZqÈ#OLEߌMcO82BeqeK(YlYJM^q]c g1Shl]I?;&c~]qi<űy477fјPxl]g(.&WQތqćJ< ^112.G{]qGJ Gs2u̦)Ksi|MM9X30$_x+|8e\@lENٍ\Gf;}^5Cr85'yySv5W[;@[^B~[#v 0Kd`Q:b״3Q`mLV՗Icۚ鳼NXJ]Wب&?һ`qx|ZkmQI=ڪv8CGcXMGtѹX]gt׭f0ZS5U_"`aSCjC44r[b8T8X>$fp>G-zNwqml!~;|TiCUR:^05~gcŘfΟx<%QU|FXL]c)6hY^K\b9m5x1:>(䫾埫ak~?}~冀yo}?8_YlI;"$E~5*~Lqlvim/kR>=(+.+ů,'a9X+N%6}Ay%5㭋5쀹֬=ñabGؙ8"[c_;N^[lP?kK Gw0V,2rP=qǽH tyu+F\Jlbls]Py6$g䠕ΐ mF^?[Z{к[{_#k֊xpܔ㛛);-@\rh(oќL~lyR6w9,<3^7P,mu񧸙8(D c8bVߠؾ'~EYGRmq0أ8Ohtn\ ayᗍoӽw㧔6GiC#hBcB'4Yd1Žh)R5(FQL-ƓDۋ.!.&.6=JbioxUm_į|;6520 7]6ZU -E}%5CcM7^!.'ĝ.y/yso=zrfOcqhk6}wWDޑWK,6-c[M[-;=Ǐ"C!}{%}+׋kP<;x1Hhgu5cXCcV䵹 m[0f`#+udI"IRbXǁy٫88S-[Zч gFzlp;N[NcfuېbO^ IgRAs!_ Ǔ9$[v$\skrmr@ `h|G8\=Uef/{b:1/#/fDk-&mGtjM ̗-&'MC-a&z Fcx+?:^4ƛD/cWH M0"3i1M5&alVvLM:gTv:9Yts0\rV-5]{̶̱teq-Z^K5P|* `ѧBiGG5?_7?=/[z{fO͚B+Sz 5ZYZeFC{J;\Q.fˉJ裗Xo 11ZjMw`ACaJuc0F#6rH=6~I8ӈ.&E]!VEgsb.u|,(>"u0'n߉s ,_^SFͿrƭ̸hsVg&N>-w;##oZ#y[$M6ʯzc<]EyM<<ȃW7bϓ_k`b`wsS5?i^|Z\XlQW\BnؿlgQ /&FOι} Y'94~'g䯢p|X7vk~ߊG&Q'nӒga5썆M w-;b-=mbk &Àm]gzk1D,MU+?T]Aٿ|<<^;w9*o!/28<;EzC{Y'8hœ4Q\KX;8\_lW h]lY9cMҵTf@qE/쫿/y|gTvEʵͩ22j*/w_QZ4+^L(~GqcL1FXQn88PtQ;%1f)R|7 q]?>u!ƽ6)vϺj]tTRp[dq}Mt1є}c,>5L9ԇ/g}J_%;,ye~M0-1xThVy=&_[On)/;y]b7y}c+*W:;fg..g7rZn-񻸯2lY>SO8 LP[7V ^g+Z'+ĮqLjNVvhc1.;\(^GS͊ۀm,32$o&@W-3M2lF E,x41db1FaosL1,ȉ&>3h|aq1ԜoL&Waztܠ'z3sf[g#-G ZXn1VY3ʥoG z!Zf̏@.OQQ{_&?4ŏ y-P>ѯ}PU5bԷ䏔Qju`c&ZfZk5ڠVڠ6ڡv5q3>Щwօ]= zzG_tD=-9mb%6oQ; +It#8,vӏ]?@G\[8:~y78yUt'f #/'Գ7{09-usb&D;w%FV#ƒ}MI>3h寮L~ȍgM'qV>9o>xc WcN.ۏtܤ͡\Ygs=ͯ\{7Ghr1,ΥPܟ2gQ2EIv5خؒ\G?bI,ob ^ۧ/c`SѾ!oMj/r۰2,WR=ȿPN|)ެ`EW MEFvO'Z?LW|C0ozP]n?>_|<<\~E92(w@rdOb<<}%KNq2"}bU49v)VgWQ?/&M^XَJT,Nq''P٦Oȿp7x(*VP҈JbLё*+R\Z4lHF-PPLĸb8q_O s)v"&1X?Fb"1*׈gݝGq}⿛0A6@}vuh-r*SZ׾"xΛF|-ʡzl_an 98ȑf_@7 Enm6X kP4_dז)\.Sԏ\[Y(&wV׋k}R݉g5>(nS9c87ԛX7ۣo\:vztIkXknq nU8m}l0LGN@K?ӂXebsl m-J%ZU>rTI<[/]-f/a ϑi-ͮAL6ˍ+ Dx"cD#L*H,0>>#gh,UN-FN:;$|dbL$3>|xSͩ ՝?D Kβ%8||oYFXε"t+R5A`.hQu`(?J%eo&~U_P3z_[k_/럧¥e?B*EEMiA>m4Ԟu j֢YYwR:邖ghMOTh њ*詯5Ne*,UZ[GƶH쯋qY%Ne]1ْh,wXZHb$~oEbS,qn4?>"vCp#?q>.`w`s^6oW|r4߷镁lLqZ8N"~4qb\:aߚzrLqG@?Yו;L}I9 Cq Z|:Zn$5ShocnMel7:\vrW;\.qg_i/d <[ű3w^JȖbORTmsU $/#ѱe!w9qdG[E|gl7=q=i*qm]Xe56&m NzưhOQhmiL,$X' 5lD>r>ِCʋrF.\(7/F rU# 'w@ymnACr:lECn_K/҆_mNj񓏰SJ>MP{?9zt oK/!?O~~-C_ |7y544 hX 'ViS?/r[~UC^l@6§yϽ+ӜFgU(c nECq^qŞ1Gbf Ŧ.nTW(WqTV. &W?irB ŪQbxe8Ť!t*O*QUY̠xUAZ,QlZ|seqkkv,&ECLc198 4+݈!q4q v5XNctEM~PX5*2>韚?XG\9_yNg~gA7El.@&-'{"^y|~A.έ=@~[.3r2|j83ʻY ueB~O؜衕ej+ݧzm*vT%ֳOqiyF`h;76".ö$fH_v&Sa1@S7 ^亹x-7ģ5CQlbX*ƦV caNƑQ~BqIg숞( &O->?95暘^d(hWv̍^w6d{f8Z ;}/Yc&5j~ƒ6]oxw61&WWJY`1f 5|֌h$?,\ߚƛH,65}|NN1, ~\\._k'[@|hy]XYwZ`j@50 K#Z*zß?4~7O+(.ǰ:ռQ](lD3 uZTkw:5tD 3h+utQY`5+j*XߚZ`7 Ɩ͔[w6"`"uQVWk1Mc^cwHM}񢎱? kKJ\@lź.&8oa*囶,'93^oh~ݰ~rnO{}olImb=bsӬ"6/Xi0p#r&z#$'B|fJ>W(Ms$ F-ʗqŅ8-[W+k$׍9Tri5bI.2G'tIw_;받?VyN:Z;ӠQt)Z݊IWr~9>vX?PܑGw8<E3uȟE؅ +bhk`~8oYTMFzM4rx K%Wي|2YEyT>S)G(ە1ry~C9l]^A\=#w\@ٶ<e#ȓr~v̮mob:۔ۓmjM}krD݅0էKȧuA`3T־MF]RP~~S?zAðWBÖ= {AuOTGVr`y_[9<ʯ{ɋ22/Ӄxoh/GD["b8,.,AwYoQEb_*S]*7B}jTY+NYz? ْy9ج@eŔJ*gU>,{@[ŅT-b9ECZ1[7hrē^5 ㆒sN>JlW9'u94kSc>@.$qy *ӊ({kKɆ|2u"g9Ü~k̇_ Go0| M=ƕDZso#_w63}]m;=j+sYpV\dd=>*d 0l-Ȧ6m!r ȳ"[;K<VXi!V,g@ֶT@#`%k&gGß?e׉&ukCT0hJ4T35  ׬7Vm_EL#tZJ>*XSG͉ :kCM' Xg[FgjmXj`bka[bhfsܭfvDK@쯻3ku;/r mxwZ]he()QN*Z;+c'u)Z/)'^1?֤8/D+bbMlGSbkĪؙhb3o qrO˴!/_!k x"Ui6Յ䜼1?& <>47*4{S}<|rrAHx\\_kBr-(7-۲㞻jkv]ϧ%dgʻ(d;{\M:kt\JQZ~?I7e6@F CuàiþPݰz8T8cAߪޠ*wĿ?7_{gLCoQhO<(اXDbb3*!šCh4rT,0i#?tY|W;XTYXiLepe|eەUT׳ӋŃ#?ϋ%S+Ůo⮸-6"ŢhB> *.\ǹǾq0}m`WG5[Ԏ,0\K9#}k">2·罇%#dhv4)91yyl_򽜕{CsOs䘜W#rG:,茜qzNБ|¹bA5ƚ0ebx-կ= Qy+vb]|;oz=[`Ql3@;܇8-ֲ y X^G9/'ڙ/2 $N#^+Zα%֏@ 8o-QL>qIgKvkCnMw49 -ha7Ayq rI|vgkQĮRa,Fc Զe&9\1j` jl6z3ZGO[`6Vos>Kk+ql6&#ܮČ*\ۘs7vJjήeDY{CR ?sG{<)gͿyV9s6G-élz4zGA,v=)q휇ę8Zy0R̋1{KR ~TyqEo]+b|.y:jvkLWt;g;ɷ(_Mr7nf#7G=o|L%'^ƽEcPN&Qlcx(ʇ"_rx m*H_7i't᪻f^u}>>8DSv,RSN^>b|*&zfщb\M(΍b:F_S-i|@^=2&Ė;nq 8/&vs11MXl0?4 J~{Uw\J$q܂j'e=4,N,?KzY.@ϲ/6\{;>}?&ןǻNjl'P5tǙƘM1dnW?ST,5(F OOߪej:\}TOYT4\ թauw(SSmD9F rE o/xx5nC8:N^ %]NZ~o' %ta>/"rvv?/O.ӫF7sj93!/?9ԚtIyqh'G;ʛ||iד+sWj{r!~E9.|՛nU+m6b=Tu QDS=9 +O!vW;[e0G Sd[bb?s];SSlˉ -SfM+u N0u:hˌ7=Įz9Mlgy6wR ݢ0XX`?uc>Il+q=x^Nݪ>&{V=qA KtwMDlr"y[OѱhZ6vɶ*zt?1ߓzMeސE_,O6wFދW*?&l[_ȯw#=0cH\K~S|Q~[ ka*n4;ML'(T5@3 Z+sf+cWr/ՠi`_?C_}5kQoz_7'F\'4Gkkm~QS.ֈ.襍X3덵XWW3z@DL)%Nqƪ.~ c{{,Ę(a|7Dx 0%6!EI4.Vac{F||Vyȫ,˿czQV\B\bemLz+dbD)cśVPrH~dslLO эvy?Z{o (F7>+{j$znџب\Dا،ѕEL+Ώ6wD((^q)S(ŗĀHbVhJoAnX';aX7Yi~BڜlLIٟ{QN/,WP)WwT.ngTYePS/,MOg䨞[{8V7]ȏ-jܓH~C!x&ېs-0dKq#Ox(&(]E.sL=~Tg'~~߳ BCаnCM8>ߠas(/kWգKG=Qr' ʑy5y >X+:S3jKq|}L?XQxJ/.7#M㨴//Q٬rTva]WLzxc!6\ oߗ 鍮ra*W|OBʼnT^)'RK*PY+$ގ_88ղ1+%H#aލgQ\O82ω]ln[dj]Qd5Y^V+0 I9 i c^!zlr0r\~o\D8'Prye<7#.巔7.e|澔/sM2T(6)6Czrf+n=\5sd VQ|R\@EAl_Jl똆 Њښ'ȡ8kOnٕc s'-=֍bG47i'l ͐답4mQ%qb\{C&؊6 {Yd|{a%Ĕ+I{V,$9,RKrG3M.:2c"F=R.d_{F4Q3|GF_BB2Ϥ:Zޯ\V3xϮMx/ЊlA^X;֩Y>m@NBn*\_[ Vx0+y3٘N ~Co߼ ACq_^K0:?(ytF|9^WV`s>i5|b"y-_F5|_'&X&c&`Y&6b; Yd&fXLK/jyjYoe]X]P[78T )R~Xe?~q_o7/.KQ6j;kD},:ZmuuE/a>'YˆDC1"M!C 뙁 ]t .zk19֩=w)u b FxzL;Y2Z3c6Z%zoĞ]A%b]U_ EݢmN&s5V1kkK0%_kMbDKFqD7;<?7Ԥ+>4Tkc^JLÔ ^ |Lm*9xe o؎X+_c\)YwŵӱCw.:/*&ˬxbTpi J-0צzQy֌ W[%x9OqؐoOрI ]`G X]k_}T{6_Wz~V7՟UKu˳_]˚e*/%Oͳc~݉JMq\}tQ4WSٳX@E -*'Si[U_htr1^'>zɟ<8Te!'充<^LMʫT+P(PZ//ʼnE؟# b~Lķ^7 oş/.u.XP;֡~YX#ZhJj*%B0T1}id?gyw~,gSmJ枔МF^W(GyO>(-ͯ({snJyO(.OJN!?*5l-{,MM}4}4!nV̤hݡ86{7Ekr ͝d'WAi is .jٖ.KLoqu1Ǻa`  Gr<bs(+۳ڡֱ+q9b@"t?I^1hNp<b7v2Lr@]{fc:=/MYvBe#ŤSќ\eݬrxc(:; ru4Ct6J?ߊ&,"DW[wrbn͈r!s3]ڜ[y댯~;+}+;.eϷ|M_K|fu`_zh~٫٨&7%bkr&y8ƒm&M6&_'Vk! ~R缞\csot sfJ/->)1ں~zkksUķ`:fbSr"M2 6k zo9B3PZluJP[75Xu!VM#YE=_7ѴN 4(ki Q_Jh6Qu7kdMt5q`M=}~X_{x~Yo è"6æjS-o+%BKp%d̆+6aƁ 5S_~¿}xbY6Z84ۆmq`\F<^*%FFxXbHO|o]U8vxGm=ns ŻVx'[,:QloEcbqOm1Kbb>=։Wqya,< hX[Mi<ׅ3k&|:)rhα%r2|jB9$'x5W^1Fl'DõNV3Xſ{A'ou&q{x됷q]!FθVOx3TL `aEXb2:QRM e4!ћb`,1X^XÄ8X3%6[`0(W;lE>䱔:Q6)ϥeU&PV{՚p~u5T.7j꿹r:,rB(!ܑ|`?drcd%r"CmzT Lo܇x1F#ʣp +qp^uk\C 88>66CotQR7!j~+T1'[&|S}I>gpU)vk/\=L\cr XNʱEZgǜJ9KU~Nv+|)/?+o\ysΡV]urn-率s=[|A ]8r_^ bI_oA4$3i^ED Cbc{blA1Mk(_rK(M=JL.~퉾T,.R}`2.@k3Im;xCb=Aڒ'bOs54qOg )lUWA^T'q"α0n{qm$NGhkǪ(uQ\myk̵făwF{WƦ"ōonH쮙edE#m)Y#W=ȥ2#6;!ĆڡG. K 'FC,q3"ϗF sl+lMq7 :Ꮈ)eLnVi1ƙ?z5/L6yty-O:6r1hly7fa}˛|v9,%W[Yx<9 ߒ_bg|\ު zl~*p#[;o#8ӥ̼5SզPgc H%x m؁cksp(OQ%@oKs,i`BT7Ҷ8(^~+%oP|OMW+C"f9b TDW׬Ƚ𮹱EFE ab}XH;_Yq_h^BEK; b}.UafZe4[^q0-]=<1'xɍ[Ciqn5(^y{Τ<2n6elby}~\FNlQ.'_+ǫE^DNs[ OrfL3bQ15&N\/hѴm_~q=wK_>䉧^ŠWbGb{4*-TPcfNq[qH4#GXHU9K['~?VGK-Ԅ|GZHiJ. 3(reO9cn9**+PSj7P?{s|܁SV}⠺99rP}x*Y6'9[dkq~KWޡ#r{y"_9&& .(O=;qgFPpS4[? ?~O pzpDC;^PV=kP}WCGSW[GyznJ;T엉<]+~u<QY?{őˊ+U|V,h^lLbʯ4 )?ήǾ8W=#WO|Uy2F[WVPi]2b|q~ѕ~ŅTŕ >KŻKII:DcL:iCNq ΍b8{fXG_mtAk䬂%j|oŘ`b~/6ofW}?^#/va>"wZ^JNv>%\w䃹9|rL9lBd6T~_Iٷ|#N-6尜ՉPfnvXo_WLh2GqvkIvS:wntnQuŠbm}(ZeoC %Gck斱-&ΈZlKE5K[ځ[ULl})~a6 ;9+uSm`'88R_YDܔ990>3K-рj6 b4v!χA\fvw9q1FXWK>ٙX.:&ދfy4wJkf|A|h܋XWoȾ+)z sqC Jk]e5*Ew=d'{+d91ٗ|=~1>=[b-c5JلK-1"W0ˢ}gE{7wyJJ^ۃʐgM.lT6D 빚n[i};΋gw|f 0՚<_uX7',w hQwIFA\+ꯑ0m9ćs\'Y?o0Fm7j )ɵm',̭?Sj3ԣ,kSjlTM&?^f/~jLYj^_V\< 1brjeg0ɒqwe-=Y|+N1R]/Ⲹ=9 D8qVlEѴ8hC̍єbýq@lX̡X)&D5g)Fh}ZXUMbQ1amo{N| ]=e}!m=1/KݍJ:.&cTq\ZFjSKЂL41Og%ZcJr摋gz\,y#/#;:uMj.i$o6y籕7G Gџ\|&V[sJ3⫼v<5>;1U(_$GXM)nѰ,8Ŝq!z{^mNhWB(S,芋ݣ* c,8fDwL$~G,TFXK!?15{eYɽ2krU>UZru5TU׭ un:f.Zgk⿬JWΔW/SKn[brd~7L3tэX?yB^hSg4S=f}o\_;#&~CJQ?E~=SCr!X[$4\pTOmݪ_?+O%)O.#Q3?cyD^p7Eky'8hOŋFc8baqYqW/Eb*ҢXDe6ht\%| xW6抯X}o8؝XZyFU^LEq[e8 (FTrsѩRW<_ſ(Ώ T(mۘKLcu<I׺cB8Ǯ6)ֳUګe]@UUeWbf}B?fǑoxċ>yb<6 ormɡ9&w|!|r|ޔ(o*o7)g6坔/#T*gQP]jܜW/#:>rmx {Ξum&vqx8ޚ;bQtQqDYSlNm*TjJ^UP􏹒b-ĎqURlMfqy"шlEq2~)% qvcómN!vl:衝5CYQ/L3|c"'gXWY֬amlX8F4~:j_K'q6E-pc,߼ulzئح8ܤ|0%[{c5zjKq.c|nt4xlet [g܄(smb'xF{u192[XU+~81!ce"7GT).!՗vLoNڕ5=.'L<Z^n3zC.;ңc]N܂Z6}<"ja[֜1!].uqYn5u›j;j 2|gG&Lh+qqY;5Q`j㜉a>Z|r5A`P+7Fj@-(6"nQڪ5ѥ3F4:,g+7Z:y,Im..!bVX{OL֋ p4ڶXmbz!пU1= 1=P }D6=6h"LXbm0Ӕlb0I2@$E(ǢbqCL3K/|EX=-XqM[ME 9Y3,@wQ^ML'1ȫ~b9(,)1 Lhn ZViՖ1,bMfǙƓ僞'~ռI@A63\|'F>iimE~j22/Ƀ󌘀c둅ƱS/[x++ǒ*xkx77lr/(ފce{`Bn(>El-:y[lU'kįpL$ޱ4֗]/C4Ӛh2\T z֍ul>u9>&qq<#C >ILшxnM?ji4kUQ4hF.4Vyh_Me4\CѤk(9jW\9u 5``p0r'GQ i8ͪ4)iՏTOKâ߱_ SV_ͪa ^2+nxm/XꆕgN C`嫫r$7\u٬8~U|MV.ʕY1r%~3zukb: Ł# aޱXo(vMZm$lcQջcR'ĘNL| (c]bT􊵉~zzf_|}I12.J=pźbV"ZDљ{kN q&zi"[F4z%->)KVj,78N,uM'=b<5yLX)q5uˬfK}$sͷM3|b/7 |kyfu8(W\b׌tGښDiψa>2=X!or1V_8#>v斓;cs=U<ʧ*[bybLIbرtͦT b 1󱋿 !ɿxv#bH z Uz:ب& \-ScЪ5{Odc(ܬ=3PTC=;t_?#x?]omlQrR@/yiG7trDF_|hIyZDlgNlE>|sGAy cj GQjŵZ\Q?E~^$T`š𯳧- mxa2hؼFn^p&ThV_9WnEyXy{ObscܖQqkqx!'"GbY4GS47S]|V,Ri[Xu:Vy5=٧^뷾ۯŗ*oWVSٽZ\Wy۩]l]̥XZ أVLR|g߉q }tDKcb1!iq\cXbO[[FXW]6R{4G_Aca9 n|nϧӜNr37CKr|WSr)OC#˳(*Gݔ/e {w/ORݦ#%[W.gaIyW9QNrG1V;^vG4:F&F {gهܗѺm)!_P ؐ>1VmD6 -XZԅso9o~>I-(/!6rQle01;yqGm1b2vEMC)_ȍɍ{m4ã7s7c8(_F8w$VC kdbwoA[q&VӴ؛S}mݭm MqplTg6p4֣q&ux7@ϸǭ`e] hM OyY:'΋Vv¡f6՟-[[l+xG.Q4-Ή7*oΩ^qzN.cD? ?bP$D\ìE8 e$QfFrmrP.^L)E?ˍ%*F3e{bsy'u^뢭 {4533cNm+)+ʽY岋ɒO\93{݄]Lr+[A-{^G7V^Y'˷b4y^ģ>*)8J||9 hnqn|OhF6z[v4ګ2'AqB]1b]Bjwr]hHu yo^[6]ym孹0ҭجsi B9ij2#V+q{ VQ wzhJq}YqaL8,Zo(ΉM6Dom5=nC]b1g)v1u Zb͢["xAXbfoot{u;[DFqVnFGȸNWjI 1qMa*b6111XwA̎b5|,bK-Nscc'טk%E8ɱ+[Y7WzEVh@g,DKM@-33cM7}k,W}=a.!o<؞|PLL9&>qsy:+b  a[G<,c7#J7e'M P/])/ʋ^*8ڮ=2}:ę~Lnŝ.6hmq]Êg;o Īxba`YhZ7Gm m\{mg} ߟy'DHI @,,C /.JE'AD^|X99}93>9^{l]ίOP~?pւ_?1ߋɃ)ߥU3)72r:$r';v$y?yX^zZhd|;gy&%=gF,qXE /C 'PYb.z%@7_|Ywb`Cu[~խ e3Gu{(dʭkw)+\nKQɳr3-GO;.;bˈ@bU<Ƃ()0Ņŭ_\XQl]E]qbў֕rHhp^e$<5⭑ͷ>ꮆPBѵYJe󕟩]\ʱ_lUFq]NI1N17^|JyqB9=Mth#b8'> #~.NqK쥿 5~-ji J%ևlr0cL|M|un}^FO\G.y:^^I4w$ʗ|rl9(wX9O4 juvԀX/6Pc}}oB*U9KD(6 Sc2 DhtO ӽM]1p5ܚ#ާ9՟YOT9qL!+CXZTM}aqpCHS̈qSpqN+јө|enHeFy13rLY1!D/^X_KbkK-xX]&~lJ|R,*Ec}1Z4 q|V_T,%:jf.1[kc)mb E.>F3uDMH(0N#DF|UObu FƢENܯi,İH-ci&~-- -|pbg^\O IJj̳2>&Fl,XK17Y@cl3b9f3cvϩ;xؓl;WC~gM=ZQ=]TB,4 OfLRgF|~={xJxSy7y|ߒ7qFũ?VʉZ+N5ʂh_ō7yZy6ez\|4cw/)Gr?a4Y?`:L_>Zu\3]^m2_W_.==<;?F-yX ԤQ{{.w!e7أkt= l۲~6c:ŞCvA)eP݁'(|ܖI_.>%wȭ'bW\^@~+?bf`6Zbdn*1b8""̋l^y^>qwSYՖ'վ3 "`Q5"㏘7_t@9*PGu'Buݠڽw~6}FPN-/vܩ:z+y\9|'criK>h|ow+'Y6XZ]Hg|Y̦rV4+Q(v/FqL+7@egOةo;鑿=wPXbGTPJ{*+'TnVyqŊb]ŷLy@Ň q#qCl{ReA41|_Y!׸ĉ+G{Nb=k[b訶aNγsQ&_A=|{ͧG^zr;@˜=W\AyEP.ou2PHy[[T*?S]}\H pDzg#*jEtq*sa;mk^ۺkOe+M](;Pr=^߭FO(WKwz1@t؂rSJgi _B6f_ ulS얝#s]rL>e_rbj]mmql#r~y6\8Rۊdk;cQ5u#*ۢU6r8yUqs8358)Nɗ0Xg1=6 =UXCKmڱ.5$B8Y0iq;o#jcZ=b]ohKc>֊88iZGwrAf8 kGX$V%{2tg,!>"G`g>b8Mbh_9yL~/?jymCe]pDn!bj.<=4w2AXQ %i!(5HE|O,q#hbirѠf[61xК9fYq ~R18ܩ&auc{ 5$AK5CkuZEg6CФV6KQ=1QI|m'FBe䳾pw%<7v,0"I^Vҝlyȅq`nJq{ uT#;ϡxky߈WQwflUL 3)kPlS0=~[k;BZBblc#;<߱[<~ O3;ڍoŢ/\8ْwN.tWnV ׫S4H*G}-5EWK7r|hsAC\5d[{=A]nn "?aPYfaVN1hnyH>8Xlmr}O=t+/S/~vBeM ČhXm{"`7_l2l@]tzCPP zF?]<<>ge#oy&POv1;{ĔX@qM)8bjїbžTQYr5Tv/BSjOnҿ΀a ,{,*][*RY9r'7ʼn-VSl^|U̦XP_V'E{} 7 cx+݈+88AcL_V,\f?',|gz >y+ 씿q-Vy 9!7392v\H(C( ))_αT,-WQ}ܸje##S~Z-jrTׯ.'?kv緿Χ\Yע-)ߣl@ّTr"Ad+%rV-I+V\Hl^&51($$%W6'"v#~Ky\8 )1+^f'Cb> Lƛ1mm3X3 EhOl)Dh@vtxBkgQu\{ ~wXuhud-.'װ}?Wjm9oOkijŕ0̶裭.8;::)>;cp͛%ҌX{ƃg1-j A]1XX:產W`C=SM.6#*U)&ۑo]Mh9T 7LKؕ rTq(~_[ۘ`s>-ؐ;֎q)*T/03a|Ԓ8ݬlcvTIQ%r,$~S,,;y%UqAĒ\l EX^$:V`W6+bns{>Cg "֎O(n@Ԕ eq VbB|KcEĨDEKj+exZN4mc9XKR@K1ͱ8vуo86?wx-d]a,vϋ 7ڒ+gކe1kMA Us ZV&96,?ϿM=kbR9x'N/%1^:<ѶΝk4r/n0xgԶegʫpTy, 퉧FIDB|pu]-~lRc9':"QWS慔QBurɔ;P~D^C%9 5X6_o)S\Q}|s0b 1Z;E>O8:%KeVD[ VOW>./kjQ_Q_'[y#w~kk]X?Z ?EõYcHK6Qk5eo<UTOrkbH^'`# "UNMb\L(6]qB\LcU|@q\1ؘCŮŮT(+.^RP _o.pCS*oWP9ve"/L]ʻ/).+V=)(,jIwoR]WF؋bȢ6FGv|x~88>=6詫mioeVafαcMg8oS^7˿ׇ]YD<'Gkh;ʯ܂6gQvͿ珔C^gSsZOLDn@ޔRks6uW)GQX>T)GAuNY97ڵ.igMeT)GPK/[P%֤}evFK`gr=PN_kwGwD#OcL4u%zhmhuĉĹ* WEKbMMe%&y#٭S 6q#*? XFY>[*֊&硸bb{>XGe":@bXKlCE;T,ԁEoG^t޳&qIpI|3Wq/.qNDZl_iOqU7]~ViMOF hF_86_Ocnˈ /b4\tΟͤ\S.** M͕X/$A*3 S&1Iqװ*g{K1X Q^ b3¸x/.%Zqpq4Z=byU2K_ѷrr+bE,RM54V,Eho4'bE~\b1)4)go61Mui92{6N#N^~8;)1^6?NŝQ63^ɯk$ֶ9߬@4zb+,jDsr:9´dMOŬ3%jo$|/g1̻xB680_b3bau\j,BCζ 9?b18O|V`fm&/1xgrh?+˶4uOW}5-j>w\n1Syc4qZEW=q21 ?׿%inķZ{c\(S>D9r&TW[ڒ[QnQqrQ9Dr:=P'b<;o!'|5?$`E`Ucy}PԔEZf1ZQVR[O,c'bUVP0=[)],ZˣZQQ5`o?o?MQ}~UꎭI VySzJ;}<<8w${Cy&8<':q>zcⲸ2~483֏āqXEѰxBы]Nm^^'7*si}T(|CerA*).=(6+)fR,{),~fŎHf?y3>;q{jme;l[XbU-Oq_f?|.ɇȭ4s<[ڐJyh_P~Y|r\Fyo@+ǖ3SEu׫C(7+_Ҳ5T'UHǷÁ<=a;>x(VV6JypMWvٞ 9>fm($QC"֡8bP@R̡b$(ZӲ9͟a=K.8нO96|7BEoog}4*'5(*G㈣SQtȖqCC.G;8>Tjr(cھ œCyi%ZIq(UNωD'{E;+!޴F<޺5nKlM'.ϫ/$/drL9|jqd,-A5@GmAu@?* 7B< hb؄%_N 26ľVǺձ~" FAOF"~Ҝhs/b"+jJ)p+v5#v^BqqƖy V=b.ɱ $gQq7 :lQ8D8+N&ZƹMD8?T,)!; ub@X#A\]l^q@o;A_QqU\}e8zGIq` 6>ń8:1(jyC}Cehq1*ktpOG=ʱ1hzh'G!XGA,+8(t&]01&Xbt0oL61=&1.#<8S40{TYgh5,r,8+VoĂbKb}1ry:sbA,$fh@lj̬W$a7 #ċ1ܘ^wqS)fiGj%ϙL<{͈kM5c'G^ǩvqoqprhQlu;:[yXfhBjm-t 8MK.4OM ^^~A| }ϑN>Vsorq99_g[v.yqނe>j%9/Zrm5I磽-,|LWZ9mphV:&%Ti!8x6r]i}4/k>MyږV'W}iV?1ct'أħG,"$HHt}hFL @W&OPG_y?${QA6섕7PXS)"|FMgAyx̉I?r #l]y[E|8Fa %kI皏ZV[A.ZB4/2,A1ujD5" "#ʙ{Sl*!jC˩OqX?0]Pn o?n ?b^]8nf]- yu(Ճ<3&/,.G딇Ǒ7e_rͼ<<,{x3Oʓ^$~.q.Q|c7X;Q/(Qٳ+zRRl_lFuCq&}lKeP92Ƭy،%\֭a8䳹Z O*S) 2rx(bK~?3('c؛b#u3:py7\A5{VJu"ug@&TKTw&7_Qy:e|4'+9dr ӽb=źlL yw;ǯn~OGh rEb$yDؑ_ĆT+Fg|ccCH_Gg8Λ 6)'^bO+$~;S)v/+Q/)-u䣣XZܒDU`'a9g 'Ѧ <¤KN7/D*4 wNGbCݬG~[ 76$NrD#ֲu^LG:. 0:^6m=661-4sc6Psl#5&v6Q[dDXˣ/q@dK)Egh?PϺG]75繐}l5c \iX/Y7-.?q+cSoQ_`bT4rqzв#݋;0"bعm6T-fΝG_D8wytBťxK_) ..FX6:@qXcI$~;Eܘrqmd#.U1X j q1-Z'kaB.FKqz4"6AQ%ZVGt6]/U-}>&̘A44~ 3%tS [wfzcoL$֊stǃ҇'& 5q{o,ǞF&ؗ8H?G js4K:טd5Z3-TbI=qmF GhB{ij KO>h|],aC=|Q]ώ!-G|D۝lMzdOLjr"T}v86uTb jjsqO,ߢ˭vpOT1{5h,tK^M>FC)Q<3JXYOja>7bCW>wITr3NB\]o 5O>ʿo?ud/u@z!Փ|mlT= (//ȉȃsF3yH^qv_x8DEH8b{mE7m})Z[T~Ie)ާ~e04ا2 |;sr^| u{FV\Ne *Ҭ8x⯕è],)أ\_P 2ر^X'x#]Z\O࿏wnhmtPQŖXi9_ > yS.&\?O!r~M(/r,YTWe|]y%3yo'qT,+:u9Ӫi\6jr1;ݿͫΡe_l}GݯkL~N~[;T Qz)2ϛȹNc>MA9>WE]>ȧLd ب_=qufhcq,4zĘkokBgMqp[Rk%lOO7r?;7ӆ7:=Ks)9UtC)ب؍lc Clݩ).1Zd<"wXaPDt7ĞٱV$6ю|ɖ[XY>k.ъhmDT(Pα O/Uvι8muF{MG[Gv=mmB|Agbmr|@{gZO?'SM$gB|PpjV0Y@]q l>6-qlSs7Hl5[6'S\7k̆x;,4P,*g]LZ9(_)Vjj(뒓1ť(v88& 8D_xPo+1Ԕ)>$"hV# YؕV]D|Ng܋Mj=k@n+ɣɹ>VՃ-?ے㼜;]sܓ<%=airu9or([S'/S Sk昏y.k%Y+\Xj%VªKNJs/VG;,:ǩIgc#qHcyN^ewI?PlbR^Ny3NE#vGD7l7}\_} u׭u[CzT]@ٿlZ>Eyhy}yFyPy4yYyV^#rdc'݆#5TFq㈅މ)vbbol 8&ΈNT.-_PiZ8ʞDeb0Tv)ØAF8\{Ep3|D`}*[TfSiQm1b\qeŰJ!T*;QW S|R7mbz{u0m/v .T{;ȿcD gZQ4 1>2s>ĵy.r9vZ@ӷ-4vD;>ի,E(zWMc {Fb+rQ쮏͊!fPnJ,wH4Nlc C5Y_GGt8>Z%1Ob*q$1?ί(NG[`^:Evk!DM#b89?"b[⠸6/xqIeqx>ʱQhCڔH4?$J42XCh:Gm csY[^ۊcؒ|J|*mgo'mg#8/3gS󝸟iϣ[)׈Vӆ x'z7 $n7jUwႸ&z ?Xg5b< *A7}Nr\8'`mlM0n25[K}s*9874F:V#-L'Q^S~Fc Z5jrwt8k갔CtU|aںu~M^/hCk5#9|@)Hk1T5 3 F1*G-FyV:>ybe\n}tuU4'蜧+FyӚ$_,-G-j?m'YW&!d{Od<ȩdSkyWedjv툢v0_DG6O2\ ]u꠺-WJ\-|; W7ܫzfurRy7<2zyZ9|asiW%tCfZ_7.#(k8xŦ4({p4F*+A݆գ{Xނ' ՟P\~p.؆#fnֻMzuW֞\Tߦ:)K;Oql }M]s^6"\'u&}cMs30='iE<~\7u?c\_BSe|M=byXxXCW!&hKy1b%-E?5Y*Y3kOR99sƞmtќݳJt>IܑkS\؎OdlKnEl-yvįl#c\ĸ֖݊ bi;dd!v&Z?FPal*>I!ΰo-lsŌ pނ&H-Ϡw~o8:A&`̷8b:ФVf -}Jt!` k[ZƘ"LBsqlyq .el5q5ٶϗTdswqDށ [18pnmF.$#/s9HQq8б]sĞڞ:u>gdt]I طEz}C ks>|^wyfc9iƣE9>42cn"_MOJ>yF>ckYwq6Ό+-!֖c!6SAg4ze?T|h`K1?o F<7:ف;c/o'T ;SO %^L,*@}HnM^X/}'GֵIJ<#7r8lAMlJnbӼ&[M ޵=f(g1tL5<̩/*^_zJP:2ge'V'eVZ$s ~ #}Ooq#˛kI^NQ9.smﶀoO3>VCuDPݸb(;ʥeyiA"/Uy99-w*O97"o SLh 3QO<P\/('u1hJqLѧ8bbg]*T.J 3j[LymzʒTVFWPiVQKelQWE&G%(>OV{ b8bh퉎1"cwKc.u.g>77/1ҭ n'7ߒ+GME19$ r\yH,)-SKQnOtv%זCH˫˪1Pz> l~elS#om;7{=6ne7c)w=T{PnL ىr"7?䞔'.w͂6/>d쒭ur+CLV2Ml|^em搝Mz;[c&99|hWĀ5"]bH_o1[|kQDm"zKnZ2r 1؁|E#[jZ@y6 Ip6 Mq/yr-F1s|b˖yZ6E[bh ѱr9qVJ d *<{]cbwrm)YQIdS Ϲq5)yMQ)А;v&OtM5r {O'"X;~$FhjGT5ɵ*6@6 3s+,oPZNv2qGn)KO|{9: >b9ɬJdQBSkNt;j}'Ulhāu:{D;xgFZE<;}į]l>Np96tęN*lo!ĶؖxL?ɸ('209x`;/͸]x+!un/71.;^b7%hE6_ F\ǹ9xq#az|d&u~И(j|F!O%nKb7;l8ԟ00}Ɂz^oqcՋqv"}pbb<94Z;Iu`v`CkY399F'LhUD#B`uqI͋l%`faB}(L@Krg>1*։m1ͷI#K0Ms~ƺUYql\ϒ燮Iͧskĥy~ț~/P|9@<;D:zXh16e`F繓:te\Ler"4֋~wdw?-u1MulݵݵɏΚ^>Wt^uܪ4߿fO_:w`{:/{he9SYLԞlIZYCU,1t,3rrY.-Yc0[܆,ٹ&j& yVt`EyklC4U10Иm+f69%i!82_ck+CVwWmma{ gI6KSqCj>.1wqB 0m85d?HXVWZȺz8V뉀UչLZe<5"'KVic7 /*4&Su9r>TgO6jۺckuT;W^ճ˙oT7^KyDBy<rӼ?O!Omy866Ŷ)1/.+bV,8-v)81Ieb@*~TvPٱoXl7pa:w0p>+4ʦń *MTV.28hE\FeⳘAѥx=FR|WW)6]t ƈI ߏxLmuG<ᅲ#k_W-QyMrȯsanL2 r#e=ߢ|\&ʍ[-iuy9j(*+PԽU`wx]\|8[^M3:lM>T:jo @92;هܿ<97-)"}X+ڹ{ImNg_-ыAWLJmFͱ EWrny8T\{ 8nb@O?ą5#ŀE4.5& q1/:m{MȬDajL[RVK8b6MM"O5TjKvލ,xaI|z Le–3M#eG4Npu/bh1gnA>(ёx47'{7'{eXNtF٢Xub#ﵴX+,[\b#T$hL Jqh\Ql?o2v46hbl 4rcm'g=788~טOįk2~4x YbQda>3c30jyӴ>̰Z:bb-w#7&6%vms;*vo# jam""Pq(Eav$*Co؉xW%1N&.pQ;x[8|>&s@:bO̍ ݱocO8@<0ĕuqNq9ĝz=kk/ck5tJpMc//la0Y숦6=]VM&ַ [wZh]$&hѹ[O[U~ s-1Ӆ٘hXtN~c9F;b _k3fAm_x|`'E> c]}qvM!:C6&v^L+r;F6}9Ϸ+yMEwS.spq*buP4ISu|ň\A#M"(t" Vhk("BM540zdBmpJ41kzvҹ}.~-js1O kydP-?~Yw17{hd&3V瘝 ڒ3\Kׇ,fKU>5ȗrbf.~< O5h@a-M,t&j;ߊ芙d/jY 0ۙmeޟQh=kсh [i@k[y曋uL3e4 >Yh{s袡㭓i6̅.)y{S9LG0ެZY%[MU)PRX^o \d0W [OԬNO>{Ǟıyqb櫞Ǐf@~3 "l{jc[S9o=X^_5E>ʿK^ wG]W6j-oj (o e|r6SP{Ʈq FHmiAiQWBѿجXʅ P\*T*pUMyC6|TQ1HI⢤2aˊ(6+>_C⾢o9:E}XŷxϕKϡjhO\u~5? {W-/࿱"rut9(f_[z[l+T.;:܎jl@r{oV PqBbwwm5x?tGa֥z.);տp/Kz0e #(z7(*7m)#&G17Qޯ48Cy wD*[Pt|hJџb9E0Ya#mzwtDӏYus1|Ǜ ^ euh_B][4 ~+(v(v+?8"?-~$?9**TN~EknMV_B 'vBKXtGȿokngb cF#m- zXMPԶG~5_qmں|!9 pɏNxDi&btŴ?[l9faMOAꜻw^Dm'j{T___,kkK, ar=P Y ȷ885Ո:NTe%fQ>1y;05&G]}{>]oe[IYֺ5O:H\*+ݡCSP^VYeSSYP/NOsAyvy[X]V7n uj6+b-KϋyKkIˣ83 Kq '>i~F\ĉw o=b#U_M άc|ί _A5տw) eKskʛl@Sޜ(r|KU'U+weyyوە3?YYY~FeremkrʈZP9Җt<ïOu'R?yԿH'X=<TfդZxΔ?/wC(7,)ߣ<%8G^g8Y6YnDmC]mk# X F4 = ,Zph恼օ譫Mȗ􊭰{Jl(h`"23󽼝|)n3ݛ_C-b. c$IL&ZDF"Ĥ(Pќ?&&PJ)M )Vs)/Q ݄ Gwu\:k[^f -F<3X0ksøGeŁ2N$;8_nEnx6">;cb)2<%zxĮ*;hDF5li/G<?NmHt/v^*66 tL+Ĩ\VV䝘m9ۨurkM(.مq@41]엽lK9 cCU8'd1oȻ|kqK)|MI} 3/1qFb)9cL0JN5.9aU ˰&E]7^wp]w]'ASN7hT SЬs{{hu:E ^}˚R;ʯ\']v KUb̫Ͷ6}66B>B>% f{2⧶_ODZ6t9qj>ȍu6?OvEnR6"g$4_7D'Ik-9A1E+W[BO#..^'"|1xA40gLYV>F;ؽe];t9UڏnqF;iV[>p%6h<Ǯ<7_' qyw>hδUN"wh6$'cfٓ:g6H+Lpq9_g49b`L,k)|X2#֠fMRhkAcU罵NڢN;UZg5;&XՁBb(W֤,jVN)o+όa^x>e!5jFYZg*BU_ [ubݪ!bb-@j@.:hP#ꤢ]{-ZGdW*뉀5ȚleΫj_w%||4Éjn%_IsbOBV|-)7+uhuqU%΃g\!Y߇]pce TVWs{BOPee(T|+VOyZY_ًܻ< yfבfܘtjdFWc|&;SoXSGPlUt.Q<ۤ{]͟^|Ϳou.8XUuoS7xn*u>s5u(+cP[qGHdlˉFF66"]f\ŏXbjRgVγcMh1>2Tί꿫S"[:$C~ ;ʲ<0j٠rO*WMW9W֔QٶQy?92r9Tl U |0^||n^*SߕJ{*{W%[Q9rZH~r s~r\G٧<1g*sFP:7oykɛ]\'" x1,KZ[zm[wh3q.G O+v&6K[`m:"E/ID񻼇GK8bZ>o$7617&cGL2<؂~TS܉;R"!ZSW jDj`og= ӎmb'9oڂ#׌w|ǧъPljIݳnCpV_abqtvfx:=Oj hcdqJCSq_'g> ѶCkWsP/u)&Nֱ8RcmD9o53 ZkZYJqP+ȭuGCAY:a+ِTtȜ;^y/F+ 02a?(|A+W5~qd>K&?zƭ>'ʗxY|8㳵pz{9Q»3r\`#1ߢIs0XrT=`=i9jmNm?F~~c1xdIPjWb;@ _ gFm"?42%.M~A=1!> .A'ϭ"2l_iǝ>ɇt ?\||O>a| -8oba  39{}/Kգ8ocd;L&57@/eqnXmΔPm=m kK#Ӽ7w.b${䰜Hޟ="fꚉiZ:? N4$0_)=rjy'(b.Ey79|O*oG+6OѻE}7Ak[7ԵFu_?k7C]Nn39&9|ЖyC%7ٍءUHܘ ? (${gfb9 u||ɷvD7c݂r5Qp,4[j*Yi&XcKYnVNkmLƠu1B- o5Gk-5G+5%oTc4HCkD\`22?U Y5KԶրs79䘜cqYfN?hE5DkB˱Z: jd#k|TPbm-^_ ϕX hX lP{MoAFTjւʚ" kTDXqzU-PCqLEW%N"cr&o6_1w` _fqc]S!YCC_PFPyXlX*'VNP\Q@r <<\\j?žF\↸-hC"N(ފ|ş(++VRIѤ؎Pשhï{6uH]u-nr(u^/P<[\_E]ؔ]bPQCnqNErQEMb_mEĔ*j͓ݎk88llKN'z abvηjo#q|%O]H>y"95?:r9ROQyl\^LyFqne3*U,GQJYA*wadr?Tʵ8n+D=TZRߑJww5GS߿:aγ)Pٔ+s)<$m)X\>Hmnw繹rrv&-'ޖ6/[ q Z!_M*޻xaqcicy V^fbq@вh=z F0 /y*A VYFfx bcm3B[k#FʘNL)J ʼnx(&_EV *~] чb+{U-PnS Fޡy-s9c߽s9Myv%>x?|3 m㼑b:eLĞq` '-ic*k r cϜ} Nl\I>%dG^%qu|0CL^soǑwiM*~cV P7a庒SP툦fYG~aD,%֚ L#Qb=4/tίg[3wqN6,LJ<ؕ徣87<*|uތfZG4,~O젅9|i|Wm_ZZ-vĞ>3r>,y_>Epj5+&9nK2* u|#b-mB܋40;98] Nc;ٙ|+Ǻ ךh0>3%@E3kixB1R0r0*s0Z#zTZF-` pנT6女FUB\6D#Ȼpn\S4ҐvjJ*-E HR%WcYMj+ʀUːY}n1*r%˪riF:^/U}HhY5CBGH'Uah4DXhN.6WOV=kD@z_Rvz" rF>'ıVyy^I8·99xѓ|P5$ަh눥/2>ouDVQ;?|L w\Ktz+ ˫rRW,O)&/(wS<<& n`É l/(.q9ql,k8SqPq:Ņ1hKKs#./(6x2@]ӺKٍA1n u㋏R|1EYL{1XFq[11ާx8>%ދ? *<%:ƤXBLa1:7'.\gOp'j{[6X;fZ(7O?7X & 18S_a/?{ű#6\IiY]%Dj,]_#cbr"MW|Fd!sL'St+^ؘdbfZM6Ԍ67P2ZFJ7r˲M.#g/1+T鱃FL3T]ơz (="hǎd8)yV9[r8e[ݰKHb'ߋ? y y!$!"SgZٟ|`o>!~)yi%~fߒ ?qW R,70',w%/.#NSm7]>+.$sC^I[mEnNg?ϏMؕ~y 6}D In<{Vk׼͝i2䛹)Yo\yq.|[yWgv84/E"c6t9d m4>6!ˆBfW'y6'ͥNL0;ܼ<9gfk9=;y=h{c-_ r cy<Ύ_tg5^Bj7NZn&4թ~sWO>W)NX?Ǻ8%.yxa8GW_I~$bG;|rK3pfcrj#i7й:9aSqI>od+qqsyIp 2÷P晀,0-yٗ b5\`m\H\,SZJU@Z Uj@NXԤE  4M us5_G*juUJT/[Yo5F0* jJkvL4uڠUUՖ5 j[`UFcbUb>/Ѽ7b4Jњ\hu.EMk,~ Tῐ*5¤f޾bk3pMMF5+Tx!_&Eڼ<GbF`vܖm_;b5ZXnz۶_Pww>??tU>~>rw?Ҭ~R9T:B))-<,(ʫˋO엏<(A[/;]{?v2&^#`)8ijKm1xc b4X|cc!T \hNŕПf+ɉ5fyj_B[jDt m>M [b«ab^v{ۀjcb5&3ı>{<C{}VMbv"_D#oļfJ|N̎bL;$WU1hBLD+b6ֵq7M]>{lwRq[ ;~`Xϻ0qo|ۀ}V%侱žk(*88eğg_덏bn6 n*!$w]. :3(y%:DC)586=}"vͣ񖍣U膉:F~ Qy4'vzsp;lYՃo3PXl%uӳ3GNȮi>-'_ vӳV,9bCmJ GshdDg[H Q/I+LsKlf>v(Z 9U~y#O<m1{ya쇭 ʏυZoLy8&-U@1 M=H`cKl ܼ]w'֢}~b--h4ۢa~;Bzc's4ԙ`?-8/ֈjvՔ掹_hzCt q9uZo5'˼M\Bεx y -Ѐk\ **p*8K\Bd&/ Vdr ݰU4_a+:/vm6n~Oȣȯs+ۅGr)sKS|<WlMlw9\[9SqGoe3ܢ.Xɦ˧5\wv34a{6?@[cKs;Ɇ_z?!7ӷf{#3Zh*IVV|̳jfuߕJ,WZ \/=g-vo^G~Cgq} kװаhji@Wޱ*a/^.UJ8XEZXV9V030Z^-3kW|U|4B󬴈gE.R%J͕*h\#>V)Q#.``MR=?C uF^k|EJ|]T(π?T<Ŀ|-gPZu__Pفm(һ_zU.^9*[UysOr{y '5Ky@y|&;2[rinF -7ʣMy}8/_ȷS||d8X06Q;ͩzsa.%X>{jCU:&[ݹIHh1h&hahkh_'q>UK[7/D_=ǐed7z3AGZE\dȫ /JoJ0N'F8/╼AB~d2z:wId|/^bceM0]5;`QO&DݮĸA0z{!NU=&N{ʽro5?62:bE5{zb<6 @lQLFB72⁸ StD7#L. 'w$7xOꄸ @njU|\a>%Zj:XܓgF'O!]Sb]1EHS%VGlM4DSsI:Q%C ۸DÜm.qq1qcdN NȆ1#aiȧqy(,1C4CrLɯN#4nG ȱy|6e3rrC\g/0&_fMv #9/ m#9Oײ}v9@=fjkD m1Mh0$@{gskИe=kF%?Ir|Y j[+05li!)9ٸ[ODzq-u7imy9>7d]ڠA>"Gb_K5gԛ y!fN(n$vʱy#KfGL =st5rӬ$PJt,^G\9VƑiy4'Yj6&W2œNNvXX}AR<-4S,=_F3K4#ZYe%MTk"PSZj&R gTI|ʹ׸3o3W0s02LAy@>ǃՖ!]_Vg?!gV]ƾ)X9T~STշ|r]* )O,WV^<6po?Nʥ }2䗹"lHyf@~K2Ϸ),7(or}ec*W~PO,ߢ~ʠʭSy<_9xF|>G1)~ښĿO~[*Pߨy<ϑ.">\9|9_^>070Ls0| 1?RrqwVZ2V*Ƭ\ NbWys@aN0j\ OPUSFGct!ogf9#vrDlgڅ5cFO04G5{Dٝ8ŕ1R^)19' ulC~dCb(?bWUq9K܈XhYt-=p 3)8V[[b~tn&UӷcLyh[\-4fd㬾,U8bGrĆ|o Yͧ/tNSM.$N*ƽ}YwDӊS0laDo1"'<_rzg+u7JWS)7&?ҺD\MB>]v#ASy+;ѱC>V{T'׳SKI'%]sW,(EQįv!v5gk➸;lK'%gxIS,cҠؚ.%( .Vm[G"ęhdf}8´=m܆}r\H^mt2GXdx\>EW+sD8OhU~dQ4 𬹪a |q5%f`r Nb=ெUܚ}5* kqmҿTc_+ WԮwp%֥WW]S׷o k6kZծmmE{:N:st;\/^;Fk4uhXkk+UXTMEu* `tl1¬,gf9aqiVy]c2ƙk*ZэVkh@%kJ4kkXKSP=?kԓkJ-ĚbaqPOE.~?y;Z.J+(Fr{xb)0ع7ֺlWgw?Z'7ʘYPY*VNʶP.k?Sq{2ɓsVM~yb> qm%ĥ.'N.8>)6)(NؤXUlDmq`ўb;u{bd F^x3w_?BٸD}뮠bIݶԽY|^E3&㋷(X,.#@byxxG(1ηė>2 uq+qQqq}[7G6Zi5HU,(t|f 17$|%q%0W:'o X\s#ʧM۩|/Ҥ| Qyrr-տ*_TF+ Pkw>xǭv~ _J&PJTr)cT&SέI7=Q6/7Q//_BY^H8OrѹY~9sy W\NOk 7C3c昏9X_Z=Հ?y׮? -U #R]F5oBٚZIڡ:G+z9y vF&Ġq,5y5u4Kyx2 B+h%gU%dm=n+ժM۟I\Z'|L<ɤb3q{|Q3}88JrB~6F_[@c~D0DӟXlE.爓l1&6Fvo&:ڡ HkBKG7 +169]0?<71Q13!(bZDZM+H3,`MN+NTL ļYrQ>i;|es0CˑQFǐ[CM qr9xd_|4msZZ'盞LϷ4.# L(x|:d;`EN8\DyHNWpq<1n"ߕ7]]/AC 0<{E竸&z"љ#c~mZn4>(_~@-ğ8leӌX䍘gZ@)-o y~|2AIȧ?-Zlrvtk;wmx=i{x-hj5:rJ:5L WuX/BԮkՉ}jktЙHgݱq6 XoMlJlj^61aCtu-ZU)YKXm%XQ9/t67ab4ߘj$I&P|B~lظ"όajIVUtcL-fF9 2\ɅZGF*kD#k S~1qXkWďļȷDNO Gq3kx0ɿQ\-Z*꿂PWT&Trʵה;ck7YʳhqwTݴG1 X#`E8GPIsqeєsq?P7h^3 }O\u ;ߩRdX))~DqK1ER4x"^.FQ$p|Fvįci4&c1؀/xnqLD0G[T/DzD膶ZkC݄|3smtėE}qs>]r'Go,__g%w&_/9GY)_R>W6(rGAIirK*Tv.Sdeu9˿`tr>S9bj+Nc!>CeSD}7rQuRO9ݩorWyM]˗)ȋrٌܩؔj<iClM汙*1}| mn&V<rFQ"2&#YM^ż}@ޔeķxo慚Ǿx,4DxhȇbA!1XKq:ƸS] Tk % V L̫~⸪upW5%'>elu?hH0)2fՓ~Uvu5c1pԟ\Q GqfL.2\\F[FI,o1_e[ OlGȞ DkkI41.d6B ]U~Ħ\v UZ澸&;WI4ܒ;s{ǟ0Cc:F~r9Ԟ걣ܖoN?Lc]E^ Ŏ7U`of{j@% L8l KX_OJ6ُևU$ jb\R/yչ_oCԤBo< jb=ofѸin]әKG6Ɩ6)~U-o}՟6QmkN6[L1m툍уͰ kʁ.:6ZNӚrJhѵla9-#bt;kFzÌ, Ĉ|`wB\/#ߨos>5t1pe4z)>v:yIydD#u%ቹO`]`yl&kG$Dy`E6GUהϒm.h;J].i<=n%~t-gܳ.TAe@ydrerN܇l˻qj?/*3Q퉍}߱&Z(΍-ب؎bEbp-*/Ө{nX m 꾞eܹzMkpu5+nw3(3oUobiu!rs~96g+|4=y7/[rkE  )seQ^C)_*)V~(XnOr**CL|X^L|Vj:֥lG+)~jU_d*PBe4Z_*gjQCt#/lZ[Do^!ef/^G} ȳ\O^nGmUύ1M%'$kU&_jV煱Ƙ6%W{Ub XW˳Fz^ZC3D)jT_3ZxR PX\,Иh\S |dFhhk]u #y7:b zEl?R%&Y 'kn 쒻cU#]#(\~>"$>Wbt>o 01~l 54_5zb#b`OAoИyME/M,1MbS 67یb<6#8_!*6c90+BbA~%{^/6!:ڱC-oTn& OXnHq}q 9:1: 7NO-pel]s.x7o+4ڣ(Z_ftZO6]fھll˓hZ=E- o3x DGNa&U>GjpބF渼t70O䕹ҟTCĞ!i볽Oɻmp|Is|;Wkm'u6F?~hKɞ9JlkHͳS 菲Zml`qqN y-qfK4mIx76ٟ_&Tl]Coo̵[|f<Ǒe$tq6pFN'{ئS:D˚*xM0r@-7rx~@>k7l9 􈷭Bx3'3wϐ/@\/||0:c5&Ph/P9Cz4)W'n.jE>3׷14Y6kLYVƉqNJ^5xq4Z`~ 3i?99)RؿYC7{pq{σI@_iT9K*BmHyt95H_#O+%ܑcrG4J{ڙhat Έq{|/Φ[;S7ST)mEb%u7Z|PLxx1>*fcB u?81 ~'{s?ꃞ56@UFYBHSZDPL"|Lޟy=]rrBnaoʁ܎<>Ȼ[7ʖ8STN*-Qy\VqerWW/& \'ȶ¾7~HE}R9MLr[*RN1eG*f}y+,/lRRHo.GV5s@^|zcOO &FN2L"ՌeXE_cssz~v*$}|֯ULSV# WԈZJJP#Y;jJy5Oe˚rZ VKQk>G|:G=+Vec`ڒ1O-[br7rlU^ƾ#Gę&3}'{[GDcpɫ83/$^FC6}AYo'/M(oS{ š/}kGt35&"c#5 晌5[5ZHTZ +PMOͪuE-S诓WzՙCb2kT FPvZ5⹭.詓E=m;cCcw7c{qKc db8YG>'.x gP,x4rb'Mߖ1 =mZiR~?sr1# ȸ 'gy |)#2&( ,>D7õƧ |ƫxɋWY\G%O5bE"2vU%\T%TrfiB4F\P[i GV~֞eSH4ZSu/+ę6߹7/+abzq?(!'a!`,'hNSX눀w??ZkS2KlP*'V6-2r.S;),w,#/o-!iѹkyx_8*fqHgP;ǑѓbR}]]7bW^Ψ,xkMC18gY/uQwi18gŲ (_7R|oXMtCD<?16cf fۃ-Nx'8fƪa\k0`UU'tC Ɠ^9nɿ&?7ro﹖}BosW);ICy  *?-|XEʪr~*GU-9USH7=ƾ/vxk[ʆTS9~Tz+\K=*pͪy;iO8gx+L Lb,vPZQ@^/կJ*5@_$<({Wb!X7Yͺ=G}^ jǾjsu&lUIZr ԌZ`kZ;o<'C|B']WtQlMcw~Klښ6r O#|Zx^$3u dD7Lq|my5y}I9-A<GGOy9ĕ6qq]9&~Kb_\b bo^,EG]S܌Fz^粸XZ)XKF,l,z_܄#8tMfe~?X΂G<쯖t_p( Z\R96%z)${ "k;ђrPqKG jw1DʉFVAqJ^K,1%ƪP\aU^s}1[aYZ(q3q46ds"ZҰۛcIɺg`jjugíAv 861v!'k mM|α{|E@X4ZB͋lb8~0Pl]0|F[ s\K}1W&皜B%Db/ѡ<-Z7:Gã.n=-OoڿӴ_6oC;ײؼuھ|L]h0 WV 7Ȼq ꫯe=Aجz {;S{Z/NȗpL![˼\m|&0%ᰜN[Uø.n9 xE/Ցk PA-le&zҕ1⠼'ŽG-u#ȉFaFU*#}l"5ǫkixEtVu{ka15/񯀿ZRk^fRK_GLrME] W4@hnVZhZ TC77]olgu.8L}{::9Xi- 5'~ľx(6sG.bfwkb[{Zk||\.,bKl)Ct<ݣy_C|DYGn')?wqlMUqx{xGL'|/AϑOz""ne0'S7|Us{IEzk@-O)磕sD`!?lj26;!?4 A C(V}cIc][m>?uu6OWTNJ)+RFurP*ZqQL =j[frڕ:Ԉt9鬍@M1UO]kH}|dqT*e5k`=`_+3nEX :fI{fb)~s&m[q-&=UkjhRCzҁv$6<8 D ݝfG6 !^'͈<ݴM^M[Xɩy:9}';!%A[G~/iMlDoD_ #}qeQZ$i>Ad=/"]o&Pݱ±`&` M`Kn\t> [ѢXKC%g7'VS}Yr_c%YroD M7qƧ?iLgo>QV!Ae6 H SsQoq:TMEFTtMRriviU5dKXzH t6O V{x Xk2ӐDZ#ddC *۵r)mNZDon״n[]Lq݉Zi}|_޺wۯnzmº][O>[]ŭ?C6۵Fk]_:/sd..s*3X m!@lJtKB B /<&&yXFHyQꅸ gW'W*鸙"7rkBWU p7V2Xa[⍨t s޳.)kbB2n0iīFNK?p^1>0! Tqih3ˌSӉ77t[}Ee۽Z+?3ne;e]~iW-&} G]%y\#k 4)VĿֺ֩KִSwAƪYX:ڶ m ~vp-W.HGH̳<.ҏԘڥ]I7&mDz7e62tGR?OI(JN+udIWc'}HaE؀ڪ5/ܵ^,Nb,bG0ۥl[mH &>.֖bI rJK;{[X[Tn$53eĕ ҉D: wiODMMőS&G/ JcsY*$Bj]Rf>5c|x q}\eks33pOZGmkRy/>ʥ_R?7ה_v ?c|I/ʼn]NK#Tl[Te[oUMuO=W"ɧƥ>qVlN(;Ǧ.I]J^[Ztb.Hv`: FvlZ%ۗllO*_dn.J4V\CIDAT>uG2nցwāΣ2$#>]ٌlm*fY6/dϧ[dCҢ4lZz0}Df.1="-pHl8G0z]1Y=MሼV19M6PCpoرL[ =[jZm]+6S͸^ YߗXUAR TL7^"k@|D;ʾݷ}KYݑw GQ+ g~C&cՅ4U+M7[;VvoIx^H{*WTnv7dvȎ2,]-ʘhf堺ieztv6GaڎlO_R7e4\Zaoj?JmDCxxĢt AtFľ<6qoy'r=qW{3o"_|VQVDG_a|5\X# kf~iƿN+/]aڡ^` Ma.6mL{tҙ>0hMZ/]5RMZ=HMrgd'tFj UdSl:)Ɨ E69%ێn,tŵn 5,1}ҭʀ0zqL{ @b(1V>/nM>5QGLJb1͉q?BLonfsJwNďұn@:t'9U%ʳfAY,4y)/uyRV疔s-\DÍ^6ϸ,~;0ABc)^/;ȷ'?fHqgiޗ%Ǘqi['@upo_n{BCFOW[忉cZ P\;!7NHӷMjZlaLMH#d {T>͆]uq<'+Beqv OcV{ ;U=5Vrvz%#;$@6<{ F62{"tcz9FfxR}z= >I/{Ӥ]q:8AA^ַ1ֲ1 J}Uц_,Yj7=f>x0OxP<>?ooŻb\\OwT?>Jjd}MTo:@ލoinCuWygzO E@N0bKw%-2>$~F⽨DXϡâ>ϯv=Nio*ymbL2/jKӣLnj rG/~J-=I7 id!-W:P_dmHY\bP7+QWniR9j6 z/;)$'~`5n.߉*nRHy.u x okz;&!v N*20hNDdgioR۴N9iC'Τmɮ/+:Ku[bR}+_U(:`܂McRB%z2r}b"F)@?!s%0x 荷}#T/^qp6֎bum6A^d-#c\܎=}`>:} H;]IM#7;ن4&tz@ St&gNL;m"6Ǝ=>Hele4ֵ3Ҏ6in`C[Z[Ȭ6Fn,d E*y%ńoSr}yK(&I 5@+Z(Vju˶ SfRǝm֕;S(H:T~VrV2ވy;3>.T Ň COo/p%F98òIW fjCyb<j& V 7t%s}pO x0^n-Ja#LX<^^сXūi3]+cȏ݌1;XsHKx+<5 '$W] I_Zi,_^/Kw/ %Q}V6ͯ@u~ O([:g;⨼84e>qZG ~ 7tJ'imqCucӾlF~v3iYl ?f2%[q[8⭿$sF}y9hWlX֧rk.dfe3ڦg6!=^'uHeoJu2C44:' ax:n*tupl am\d*K_N{i7cnT1/y;5qGSؑ7(1|I8U]ğNzs )I+ډ?YʉTr|+JW#?GϲibunJ@SIb`1Rfe+__L+Z{۪$. b 5mKh2kЮ,)(Z iBSqqbtI' ӕV(jieH=dub+[ ?&5t$>T@sDU %mc:izm60[vx-қ-Ԗ)aA>0ͳm1FLӍpӌ%}ߚg-L&ތ1oc`t2Z^IFDz%> >L*(Cc3L!YW`IQ)o {4^$X[$oy[z;&v1kpv Fo3HSxXG=dOpbmUsuUg.@hu1\t5]SݱKҡѤeq)~cQ8tc054m{0,pY(ڽNK"])SM(d13K?ۂ,[Y^􋶱5Fo*%-5eMQܗ|Z~,}Z~/+e۾ֵykv__t࿪5 lF:viOsǾ<{WUuRŤ٤iìmBJ  NBI%ےjd?Ȟ))erXcJ |N jS'^FBבN2*y &햎Im6K}'W={,QiZQ٪v;j~Cf1k Ts5+RҔE,VF nHϓ!LcOlO ?Do"bN?H?"}%3-m]UC7 Bo @GuRʵV\疯O|S'wqQY36b3)P(!d3B~o/?|{W@7aY9_ Տdkyb/. oH&TϥW/,j[Mu~[Ǐ\B~ERC7L~]n1c gy~s:"Rݳ5ݍ4욛4-_W֟'_V4#<'/$r9[j)!hR@xI S3Aue,4_#rukU*ZU eZ&SEqtGtf wt#L@o]R/ń7q”s^Ya8V"Z 7*h1jzZ֏5KW~1tIU6)<&eMtMmw}^\\RQR 6&Im}9~gc̵Aږ41mo6Zʤ%mI:c5i0XߪHXBKӱ^rE~jDo-D )|pt&}ede)@hUJR1ń*E&O^N𚱸̐25Z[$s0"S0TԢ3ז-(37aՄ>-V61>ĺ&-\l ]mj6-.7cF#2tLo}'b10\atτ2N2$8ż~-?c^ ӷ1+=Xכ]ƅRBb^gX,*bM%o.ՒH-G"݇W_-ҿ?O|J%W  eWW]z냵lulkL qAiH}z7MӺdiyd ʷI&5du-5q?to8ɷ, n$qE)6~CBz9%J/Mc㩘i]޸@{1ąeitPϣz|J.w1 N#~Ո P %9Wӳ/G9$ã[O 쬺r,\WC|?/,Q=ƀ)8Ob˝tPAb{ҍҶvJd?NǤȚ~d;ef-JllT϶ LKw ݤif |/H/^$HgIwk iϲ~>被.hN<)1#fY1F COzi%2ߏ{ 8bux%ǣ1|(uK ⸉#TVDOKY:~[Nx\6}*ߣFu Zuɷ'8{GxJ<%*}qỮvw OY?/ Ư~gg3~Z![N S D-b.X# M-@AGc8Ec`n -@S>-m +璕X)cV׊t,R͸BA@3==x,1h7ΥYaWIR=?zoi6_}0P#i8be1@40ʺcLZEbhb.6c2]:5:AZ^l gZ[⥴6LӚXXkf` 1hWz`UIO`>VB+ OazcPCY_.o:6i:h&[ khUf*R_sL|q>Z%&^`:hPK5fl]0|]yz(7DsL$MffXh0ӬVZLq#I|9#0D#Ąt )WԤoc8?Cc86pS#a9}i}s=EWlc ^%;J`?&hB75MO Tӌ&>4X cafX|b"6ev:=VJD_3O! $ K ZE%&5Y<ҷK9h[^7@} /$OS l.gҜl+3@EeeW,ĊLRJ lN:/n/A[[Ƥlv7ҾJS}H뗞'uK&)iV:%?}_Cu2lwƏyjGM|8jrq2 F/ӽg4L16Ė"4*7&Vg[{7Zlq 7sֺbmXn_"V-o%]BzIa:@$~hL:&- d4cu"O3#}5~?$.FWiittŽfQh0Lҁ$;lppc ʕYG,փ9o=M:noR-[#;lf.l:YC٘t3Qԉi"8kOjNomHiiZz:Ezo݈!(/k7 ֶ500NЭ8-[_A}Yk>\1c1oW!Ŷq.֎/Ƽ؀F3FJ>4x hTȇ\E9?(i P]P+4X]~x &[xhi4Du בw/VT!F?Q*!#?3{{(qj|x;G:D[k"GF *ExzxhU6 _'%2)?/.5_QbY@2eZWTSn~S `eBwy02ބU^(3V%Y 8+-mJ/:(s_]:~S o]HGP8*}A7N}՗ԱȈğOHJI!b,TMX:pz X]IZ-X- >5-D|H+^fOmJ\z/덞:((O:cz=u*!^xmեX5Uʌ]YJ -,0Nȳvy3v&ZbY\ח殿[b2qNcN,vg*~E%_\/H ~%D /T7)(c٢5u-m`>__DT/lA֔YKZ:zz(Jnfְ>iOpz1,+P N4l4=D:/ L If?&`dmO d[I_5 ߹w/xխ YOMo=~'С,OTOj~ƙrل##?kVA o6zѠ˹G{ֶrF6-BVƴPa^Tcsh6.3iq1΋V7xS#,I'~L\[t@:o0-UV2+ucֵ3H:غҐΖ_#ۤN uwxBua"(Gˉk?.P\]_w6ƗhΦlY} nZկW@Ru[ȷV+*+U~npVIGp㜂[mb oukaPgiB֡Zz o>>~LÛ.gs6bN9WÄW^Ў+.>11k|B@^~M"#P=+/]y#լzf>u8N[6| bv<\چOG5#?Ϸ(cc|5~@_O bjDڞ" q ?/],)/2aAԀ1f_`6~_K-bh(IZ,@ȁZ5,/zPryZ†]P,JefZXs[ 4Zj5ܯ/ITJͳҋH[m&^L|^ձ41*<:ڣ.SQ']uRA,!]Sw];QzʨG'ѷ$'Z$za>QL\jC +9,!'+"Kut0=6]Kߤ :Y\~U^CY?;#5%YD(E)GV3bZAyiDAT۶ص%G~eH+|w%TfE_)UZ&KꦐV&iG-qA:ǡN=J?)k_ uIҜ:?G\+Sp )TrITV7=Em#S_qҟ2n6Fm:JAgTWaMҾhTw0ɠĠ8 kG u;1iu&zsp_clvűcV*bU?6Mī䏥~ed俋Q֢&9tnL^1]X3&^H?OGDzLtuZ{ tX>3xzi36MM萶I |tu#ӱxuDG''MH|-ߞ8%^;;aJ~J{i˴/itfZtpڝlv:0l4l:օ[pӂ,T|lbnTNFg}vLdMώ͞$=ݝ~FMNO~n#Me4MO ?H6حC^TפDž-ь1"Yj ij^5^#~xX5u1):Eİx?z/81;oN~s| Ջ۩v>w::: }ݡ:Ml^1To!P=JA4)'oZ}&Yx6~ɇDSlA|؊u.wAth(,+c3^14aڕ}@jfE^s4y[\gq~5qj9Yq_VꟗV\RJҒXZ eF p][cc $k">SmEQ_D y`*l;m0ZD /Wss!7[;T,@OM"ߌhrGawB5t6T*\j2iM&ƚX׌2?c"IoɊ҈)ħTLH/JTVL)TK%pV.3%3SC kˍF(\5mM>_4M1LhA ,ڧlUl \[k&h[:hk_mdb@g駤7OS(f*1]/,=Q+ K6ɺݫ@ꆐ_VVէ_ 6;Sb"b8(;c8{3mmcRtnUV!1Nv|8DmGv8I6ſS,ߞpuX|5ШZh.^SiTo,P*qf0Ӥb$ P9x-uy*]D6^쩥 bm! XԺךSK0>t9[KayBNSm9%>u3y-#Ա$ :jP6/cV{RfuB߆Qֶ/K*+G^~S)i*IjJ21Yn*+bvPSԗ&YX PU yEA uCsQK +*c[6Dv$梡2,\HcZ ;j|3H[WfIL1 Ed|lm&ߘ24Sf?8;ftye涘m滞hsW-J. r\⸥4l:<4/)^y_Ie_i;-m7_T4[B,(΃3K/˙Hf5L~97|Ց,/k-Օg͌T@}>*fj I8tsw-*rlG!]ddImY{9;[;ir6c=I&eisТ_hjmLtULtE {ǭш󣒯C|-{4㩼3VvȟR,5j̰8/r:i.]~eIaahSEW7 ]i`~.٩n[tD, w*ƥI4HғiDutZ]m1YAUΩ+62'$mє㴴:YtJ7eds#M&P<&Fz ]\-fW<Y`4%` "#r|I ,?z#Twi~ T_Y] ?z5ՃcG.wb87z!`tXǑH3J^:4}lllsYl{ ٣Tӳ%QWgk=ܫ0rF5*?gg=Ud# 'n"ݜkJiqNMz7^J܆ߦQD|woiFK' )zޏ#Cgb~o`kQx/:xbxDF|L@\Ilo歩ޚ/_";5'E1z@iP棸G?X6[ihKSTbס,TWr`ޓ3^Rt +H;X:q06ÝC\¸:C'WK_x#7Lbz 'XPJD /DS4f9Q/sN=E wV/]b"`XA9&x//oš |B W 5DRs$WK!/G)U0dTGr?kӺ|QHjRI%Q}鮝Je0(VmRv˵ߪ,+MǟvJۥ:R;-DQPMܺŅ5qTi$XQⲥguB9vgеϹ%j1Gyܗ["'XJ4q X G@-TBL*3ۖ&)J`2=oQQ|/.(jggXG~*=Mf{Ps7s1s},t14GnA_XEf^(L\>Hr_w C7%2[yU8-OW5b~I,hģZ| U(C,fk@ymj?Q/WbWܟG}q=KmmAi]H=|qeף-m='i?Iv${߲+FٽTr+TVQ[z<}9e}(ӠVwB]JZ;k_ywQ6Tn@z(;+[Ӊxڦ146$k@f CQgR;Eo`+[>t]y=qpv~u 1,=q% ߛĀ7l#r-N=Eqfqܭ!"&u7OWY-u./w>`":ćƐ:t4 b*a [J]vS/V&o%;>Lf_#M:[&^ÓzY"Yv"z(}9|Iۣy:˹n8MίzRȯ/$!_#S6ߚ+ލK1+q=vv ?I uAډtxmK$6&HP3K>uل P閭WF<;~ydeneȆguنT>ړ홞FȎ!=-]H}nZH61,%]kxOR{ϒ q{:79U'W_9KKGK]5Kc"߈ɦZO6xû>ŏ)tVL;4)V"&FC E<U5]Q[{GR}/TW+Ű8_ @ tׯ(3y)ke, ׋||3?Lc?;>?^Zm,Uˮ mjClt&N&MKIR״ilmfdmP\TUd'گ'?/= wq!jzҾFD\Ct%^O iUtHpTޤSu5Z%mBӞp0z( QI3p4DaXv@ꇳ6E@zIU .K"w~/ ⨙MgVݬQnU=+}!Cg>'+DW=bX%Fƞ~^$`Mt&* mHGud/ Qdkf?&6{;kM%[8mL`R?պUNryAYWidMٟ^Lg]f]IQE}iBZLLoMWHqy+@ֲV70 Ra.:H+$u/*kBglK!aMNj^3wzVq'<0 Οz1&򦸍j|HmUo?Ey#951߽oTϥ:5+؅'wO$?|8<_L8(_؆hkGwlؑ]a_ Mꍏ1M)k?ń -PX2SG?Yg|{kp~\j=;QP?_D4bQk5 Y+h#QF %P5b`rAI 4q\YC_kظr0(U+jqZNP>-V?Sk\\FTK)~u?=ք 5z-+^^jBD Rqj1L/~,Uc[x1,\X.X>k ֥6[Frhye|^K5 h=A[_ƹ@_< K\.~N,cvζnmQ3++}2lQ_I+ie-XRr|-XTQtE `_QQ^_yT.7ɣh. EV ^&eOw׾3Z_w,[bIme{*j(jWρi;pAD:*)R)KK;I#^cɮ"{Q6~gFkϏ]7?wMBYe7RʦuGv֩O:'WDz3VYlFvޫlǬ2OI&1}?~I _;%Ȱ X@_%lhM:}a ձ1N.K*1:I<5k:ڥWM;!it,TO'.s.qȃ~"f8ǒ}Zcxrb3q4"KMIe1 :ؖtYvŵ:؏cḇ  —H!]s1#G4ϴtC杼䴅iO]=CLld9jB1k+.|9$qI [B~j T| ߮GaWcNubK<ǣх]- iMIO=1R״iY%;%-^lai6lլ?3ysy*UFvU9Jv6?@elxl-HLej鉴4'UH+Cҫ!}Z,? IH{9 8z6ZY S!聯 _׌k4-b1PoxX{oqfAL{t'n '^'iߏFO !.)|HH\?ݑ>xQݩ֑ڃ mW"?80M"q+12z''[6c{c#lLaI+&xܧxtz9_NZ5KZvB ؊?V AEJ7_aWTrc"` |55K%˺yb^(+RT>J`"YJ¡ f Y7lllyҢ4(bEqP DSjgIOmg-]j%5}X-cr%%o( 1؏Fl!^Dde=j@2D@Sy| W(Wm"qwb_.Z*!$R[gDXB<\2vE@[6bդ/0h*tSۊr UV?_rn-.O(c~^yv9 |}&_^t7kPye/J}񼅖d }c quZ0*ϽO|V˛čELY6:EguA/E6nZڤ]lh\m.pup闤=MHZt^8io;MN¡>vQ۟rE_@{Ű^?q߇Jk uI*׭N2TYd*HgoW>A*ˈ 82M%~f!iNj@Q;}Zf܄# :cS|'E=X-"l|wWc6SvM0%-L++K6&OR%mH^'1^g=ﶤqQ?6R[wSch j_|fm?~hy|9%?)Ui#Qk[+LzsH0(}:]a}o '}Bڶ_ M)Y71Gi?j-Qhgqβ&lH{z-ͦmOk/*Fݎ@믒_bعL^Zv ?ߍ/ q(';V}mKwA>?C|3N>#iĠkOsu%n=x {Ig>MvIIE 9٦>dݳnޡCvll!:âiK=zdMɾ_Qّ9t07n!=f_٤?>'I 7=}7C]ef#a]Y+e%tR^fy/Ĝ27|bx;QOqsx<%Ξ =b^듿S[cyx> z^iܹ5wݞfuX4mHL/ ÉJ.&$ߖf򓉇wL,&N7bu-YLjZ1X8D?c| m_X7/-%j3Jg'Z ,K-4 f.T.,l^-/w|wQ kK2av,\~vyB,_Dgs1[&_kZ+ѭT:/3kPiC엶LN#bb:%M#Lu)wڏZ:"NvdW}l.u:S){w|yyP]:lZ]#K+HGVL=T%88{.D\:f%ڤNoeNGA8na.~ָ)noZ^?H4ZYȎe-V޵%mxv<}o5VtHƈò*X9݌c9i i>-2y5-$s,&_Uws񼶖0ߘ|&w˯COf_|de@Ə؀F DQ4 0SI/V'O0T +(HoX9fyh0󴅭}ɻoA,"$z[ч|d4X+c8;Ob7l{É ?$ 04XlaYS\u*vж-R~e-5bIKt*k>J¦ȗ#XKR b`j3.iߟO@%W-XE\9@IĊDA,Lv/k<k-A)q_^Q0AC,/KD4*$5R,-W^ (zMQW-?]k(t E[OD@R`" ,CD:/ =^.UdP_'=R.,ǣr/G /)t)P˶~EXohiOWĹ/Xq%e}Iחr{ԲbbQZ} 3uN,uK g&b_;?sEek3-eE]Uxu@2?H/Ioh?t:\Aj}RBmeY_҅d=O٦d-H~:7OT\_ TI'r'Õ+Aڳ򧺻Igߪ܄YǺ+19W6,ۇ4:G\lڰۉu]^lY]x;m9'@-{ XPAT 6TTT-(4!$@{'휽~̜䜓~{zLٳg̞=Z׺OocCcNR&]b__xc z&!%.!m 7.>~?EfےnֳUFmc Kn3[٤(:T/p2сHjB9CnH>It%~_]cc襼q hjQF}pε0܋}|bCQ1צ*n6T^x%:a:01GƝԲvw7=ǏbsOv GΤ3ԟO|:ήow7o7hoAS/hگ~_}r$kSɁ}kCsw~&y?b/##.qc\!Ư;N ߣ8cL8X7PlQt}cyc>X@]CFѮngގYlC1B&;S4bD̊ V=y#']f<'GDW~z+U{ZWՕ&+%iX $fyM#&o9-Ş6 ^>Fv=J |#'FXH96o֘?ʛͫZa.7'v}4u"gR/d{&~ ە~Fagr3{\6q'_f\h,JRw :Zt3iCl 1OC\y-ѿ!J:˪JlEtCw if&I.0оX;-V+)E`Mj#րw+C7n֮u"Q[5$f]%PJ`PV+`5`U߲ҽLXj^ee W04Wk2MY&6B{3ЬͱԲj{ VeY/ݛ՗VlhjfL `4e̴h>&lPV_7:Nӫ6'K[ hhi U@s/ɲP%* @Iys\+VϷb ,%V_._eגK]GOu\8}8s69p=_"w-}_k/ IŏC%2%mg7Ss{˩|MroS$H-ΣSl)!q5Z?$\핟cy9Fb!n.ybExgSx36%t/Xa?xGvGd՝y'wz煉^>M{CmV\t7>R-/کOWOfދ<:O>]Inc88IlbWQ{(v/~;SlQ*FSb{Qׯi;.̏.*-7P4 ))(zRow)Nqq47 qxMobb)N]c(]+[e+% *I& ,.z9K|/&pw rsH##.%G~&m轤w]9D(j~cԮKѕ[8Į6i #kmcJlz}Uy袛nfnjn` uŴҮ*gX3:Xf!ֳ<Ί\.RAt-\ejw3Im*Y%@P>("q @`]@fzmmykT_6!?1?._}պ ޹gx]m5:hU!ml15`Жi"ZSE U- M2mêyx/j/FC"!-{F˕bsvXkNse5Rg/Ѷ W%f4߃j X(96'l^l6l >*ѻjze[%U̥jhjǾ9o[Jˢn-Z ^cNvxU[[W[$D]fW7q~%rɻ[Q%EsoTvk}lSž~a_Ga,t?f u!#;Vq`t ζoJL-S)Rl\5k0oMZϔuP^'Xwv!/>R$oualVus18~0bT݉3u ߮{C+^⫛w|v3S)GJ`0=&d00|tROvqS,pU~/]q[Kl$Wߗ\R|>ǯQ|CwE!y4͎蚟6(wbъf\7{We̿ Wu_/oYz񧉧2;z̿s _!VR\ug؃oDC/GE-`z([hc BkI,18FY4#> X~pW! ĕX;-e+k[1E&|6v{Ij6}j>T/+3jՖw$r|3?Cgp͇#M;8!N! Es#).biTكphgbb=[q9%[lMQt=s1(c~cmnklb)Wo+vUV%=-+Py+0dA5 |˒|# e(e814mN.ɓre.(96=~y^ UJ֬+|J#7&GG`SjkbRE{Nb ?J YGmdG;K즟m+| @^'Ņh寉țt3AO>oL7ih3MXsMDM',rfcS 桋:UB{W Q12JFДkP%d\5PO.WQ+*@Qi;uڊklwBώxw¶'X|V\[/ڈ -d4Wpc-0+fv* f˸lUK@seybsl.oXXȖL+JoU_QW%-K[. l>"ُfe*|Uǩjwb5?WT բE"Zrv6-mZ]ڊ_޺mEև{vߩ?_٫u9֬ P^MJ쯮_^ wDOO}vbaSC|ķHSt'pL!W 8bGȲ߁[xqDh4jדcbP]_^ H ,f5)(ƒCQu{P/~XL ?ݧwټ/:{EQ&?*cX. :Gi΢7J`҆oqf 9>7go_gwml`w+k cejSu i:[ggs܈mrϜI;O\6Ku'p^pk-rٲ0b){ #2tCmڱ6 scĊXd7 mRq)qAtq2hߙm}Nv#cggĜXD` b h'1AF-$ 6¦Fy2QyR~ rωlm0ѱ:z&ĎıؓbBqdq1u}:EbkۢXs^xøs>Pt.bxbA_(FS)S<(~űiZ,%8Px.O_ql@mm{%l}G/PuPҿ+Tu-sPƫX#u/jztAQs\~o)a'syI#92rnQզ_N{lqC t ؝ G 1'N@UW〼E7\]>XJgؑ8R,܁CqÇ_モxűśm۽iYf+⍺% q{ۜڧ2rتܻhټm/wx\b t/]JS@!Bx016lZk}$r Vjgg(վcq]앯ZMbdqmT͕"7N~]jOgf_.m?s*KAL:j' Bl/)3ŽD>3ccb|K}: lMq~|Ę_I'* fA,\nޖ%{ǜˈ-2m(eS&K݊:})ɫ`_]gx#񵦇O^`'ݾ$f7uMAӳ3VtԎͅyPyWnU;<0'yzO~W}\9888ਏ񵸍ўP׷ W&_\3Xh7juWPwF1ErrbXHV\Q<ƂDx>#&ǫ115D9bhM_}nQ{:djzWN?G;6U{L1VGu.U@^xȫb@~3٦#[Ӗ9IgrÜ0>g\qq;޻敒+_"!W LN'v Tq}C"z;v"Ǒv#v+v6Uo/+mFGOb/ZHw0xѽXLs?yO|1#~hgyc #_5!G`)Fc؊)9&c| LtLLL86t fh9mٖ鏎viM=5ryIP]."KۭR,+\YXiR5s`5Us5P6&Aւ2+\Lb~gvwk_/%!j`Ӷ[uMZ_.M(ۺ&iT"A k$+ԫ\W⋫Xcy:׾^6/_%~]m y<[Zv~$^~Q5+52uSI@^ZmmxW X6 ߏU忻.)` 6cOTW9&I;DA biNl@qq0^XbE 5u@ѥn:ESݳVL{ m/j_ +b^1?4eRg6]?yq+'H-آ&TVGjg/OlUͯL+@@ga3/8zZWwkvY1a<3=͌j$Gn%->^w61A#.dikCqqXMOs.?~'r[;|u}^Fbaxoxغ񔕍h-ℸ'D^kq#18x1s0Y}() >ѱڼ+qzLv ^%>jH "v͢Z/ꨉ[ٗ6mL@W#bj^9'>x5?\Ex[r.p=p^γWhqw\3Խih\ӑPk7ANP[B~v~m/K3Pr<'f[B̎[cGkLeEŦ^wi-/JQ,.Xn>o{\ u>Fqv1^|bW)ފ3?^~bx:fcL%=4qwax& _nO3p\L輪Pf!Cj+_a`:aQb${Ffҍ=aK|\;S~[=ysGr|{cWcw.gvBی&џX;:PlC15DI?k,ľ[0%)~M^OShn$_7Km璗ġC8x,0_8z+bE=FSܟ7x,Ywy)qJ`lfQfb LRSS1S-r %cF șņtAg }4耺lDOu"ͥA'F[Ut@a Jl-mW];VM[Se0gZڦ`5&~C^ɵ%JHV6_ZN3#(z׶\Kl[_M;%ݖ)Z:!_;-m_i-X˜VJ%i5+f>#*ѿ.*v6 -lA8&Ϛb;.FbYL'qb^2 (Χ؅x Ǯvq`56L_,bbv1\YXgx_`z chΌ2bo_CˏZze_QX,($C|\ %Ǽo<~滈sGc7(]b3yIAlcb cEw,Q_j [qe|c9wl{[||0W"ov9Ǘv|_?,n7) 㔲y7n?@qnKqrӔJݠv`~7P:^ELlgZ-}wߥܝ0r&9 Qf_rCl]ǖX)v,n'Ɏ~Sr91E̼8C5qwr=,O9bˢ}Z#yUn263=I|?7Y".oiF|X\E6k 28%0Ь1L4ϧ1B3pfaEbaEK,藋9O%Wbe%sAUAY?}꠬pv :(}kٔ˔.eA$ꁰ0 sI?,]m BK_{~wNRkM]5+kg 7@֯etmunX_1f;NUW[woe2H͖5^6&V[v"EoKfX3s>*ϗkvo Ix;ב"F׉.1 y %v؝ؔ?_}u(߸юw~)u'A1Cr4ⶸ.|-qm!98,"7Ŕ\⧺me\Buec8eo~ǘ j9˪˪ƂؤEZ=SէSumW1zVAjeiםKkܯ[Wβ} 72w!-xX3uGKK?r:gyΩXs<Äs^-4un:i{pkOG k"yv Gwa&b1"6%7fĘA0]o4"E1+zX.+u-$Fc"Mt#/qg,}qbK,{&t64 oyWgk >_=dc[*q[#+Okkj鱦k6Ӑ{JYk#;վ#O7ʛH6S}Jlq11ֱNXJ46= 㔸3wLECbG:w+3:l'naԝ\L(:R(Y3)Fč1cqb|"v%1x.^ İhqCO=y w?Rh%快#Q٨QR^_9OբLb5x˳-.;`=y]~s+bb3\7|CxfQ?eo67{v >}㙛_H\^^?vW)XJq>}&&  h6#?ߊi/ Q{.RrRvdc#CE6rcN>'wSʘM~ۋqq +=Mfs{M<=1s!|@>_*W+1T &{|Tޯs`sM$syfb of 0G@"t+)&+[ѳjnX`P6D$QSZ=@JmkJ 2j 4AhՀY[ޖQk_ހwwx^{JBizwwKB$ݚڀu':~Kwui;ݴG{v+}V[~}"澻Ie_"*V^^нr["laҮ@:,N"h\oIlFd(ClѽB؆|O֟>;C=1x_*^/걨x؇lWcs|"foA{ot:|^|>ϳY?&"ٙ*+)6q_w Ĝ[˜u/-g=}u7CnTpCE ,]h"zܜ/.y/'q836#fd3]<`%4E7#0W臷$f݉v:D;+2TtfZ"~n}q}| ."xX ŇmA} Qoz,5q竆9vL?hgo}\9noR߶VNڑAmPdYh,ycFܶ%\~䁹>._s&C'%zXx[_%G3Nؿ8>E-&Pmsۡ'9.x ()v-]):(+,QLg_[ bR9x"6"&*>` dK`S Bgݔ:%۬DyY昪ӌU JطFxBg N;,?\ [św6}fN 7l(4}I+l?Ce?o7q9< ]|!w3%S a{8(hz)9BP)sĜ*&_޵uQח,L͇ s[|.Kyt">?ȋ!W}ы:Gi"f`GINgy1cx0Oť#1񡸎83QPLlFLq ŵNٻf捘Uu/;XM]ix(#T9A131Atb^<ڿA".HLG)h!ʞ("X2Ʒ?%\@*4]j,[4.X =+J ݢ cS(Uokl8{[TFrl<ɯX#%Im(G'SbCS\v¤9fN}#?}w%Gb CqLAWKQmވod _!kg)Ǝ/x3'o:fQY<ߌmu~vDMKtO+ βBx*ÇcSfqًȝt0- 34>bF<yU^`._uSʺo^w@s9u+/vګMCZ F-#odڐ܄<5 Ty{-ħd/bKv8/6݈qbqOWqY[ PS|[Yc~}w iq1!Q<[\PAv| A\YlM c8p<#1?8:ε8=#M10֋m}]wۡ*^l/EaQ#f&{KrL?M94bc^aq?WKtθЩd7El{w^q21 6(|g!l{z*O=옗Op78v=`{ho9;=9 ۼWFb_é]BAQ_-!`&ۑ/dC^sb.Q>mO&,9=/ć\Q~7 ~~ kmӎ! =f9S^%nG\~C=I>j64&.".&7L1H+©&aibaKAlWEdN [༊I0BlmZΖD+shJPoetG]7riuסKtT< Hc9'W@xKuvV* \n \RmV 4S]Ayݶ#k>w]UF5+kw~=bkw+rW&m;Uk 㟽;o}_"Zz-뺿ҽem-cȗk3kut*ѧh/u B߼lV:ԣnX7mg-}lm| G8$#3D-cgew)w>_u'ŅXPZ v)~Q,$.*^,pP1N~!Z%+0(_#cq ҫK%. mWr:Zݟ2XI0CXQ7rfe% 3o*P/}J->^;>3=VDc`R|6-~KoŞAqbљS2\Z~?ܟC}]%dBN"kNjə\A`?%^-0Puxtoo}<ӼY>'ͷ0b,bk|b fh{do虣u#?oف$O&XO+S$0!k0?UTY [o|U޷ -q)?4dmXVPۼ]JԶӟ1vVmkrAn^<8//k-a |q^`Z$3D87E/"R PY|&6XZ̉)6-vb?o}Wne=]Cű# '(,,#_͋}cx&&JEÈb&;7gqpA4gxWO[v۬Lrz,2_;7SG4I'L.kx`Gu&YGb 07g0>o]_G$kвCR۬jC,v^qVѥXLN*vΝ<996nb% ?Qw>ȟ=D-q ~Н9nE k:PEk5R\JΡj#^Ԟ8*j)-LhєCȱɂ|;wofܐ6!d?s0E>s BLNrq>1!ɯklru16%v7M7a:#$Fw ˗<' 8jē5/z`T|fmkcȷL0c &^L~fQZ0 3,4,%a!Zn9Rd%`eV 6lPPTb&ѭLsQtq :ZnXAYe+ͪLlAU↥vAۿ6m׌k)CjY kh D,W _]3g{e}zk9_Sk[y/ޚFg=_[~]FmѶUu¾n~UbSTӹRɬJ*N⯎-oAt.c.WlLzi':Vn:V'{Ntyqbn9YŞĸxųx8) ѡLx]DIh>[~fQM.1bj6^%0XV-R΋9]lu[ƊQ:u1Tm9'΁蓿`>SoJ(NJ{G6 .k*v'gKNt(otSlB#>ysl10:ɮ.y^qa]?\َbRNZ{bqqon@ϪhۦI昆yPj1rwZ;| c=SAuuVrZs2s粡Y'Y7EnBǒ{FǼ'>иI[`pE6h5jC{S#!'Dqn^W#.4;S밝{"y$,1"ɗ=ǽY<WS{{3$~-#0$G{ g9"N1xDc1:@bx3L0˟1bVNl̴\%n>US9l1]4ZV"tҨ#:hҞ]a (S*`U^sբ8X&\FX :-Xs+BYP5+JX3ӠVź6ڭģd u  F.Ѯk,wm κj;:[:篛dZ^e&z޺/M,k_%pnam4X jmͻ'-w~]D~-ۊZ&[M֖׭3o-Ru-䲪TݿZgVG3ʄF&+:toͭe_{ XN=qV2/߯]-_t][/vMmed߹HYUz!.Չx-6a!>dDqzU?R3|;?q2(+ `?~V (*ԘS4ߋ7ȧbv1C(+~NYs/J'^Q5F7T :ȹEKű;Xnr;>T3t| n/:E.Ijd,tWj RtnXȖ뵢?o@t#?ؒ<%.&&٢vqd +>Eb7|<6.zbW41e/xyisq;w(.'Fq1% 1cXϙBt;,l:fah|pw^ ~G,A/x(`F [Cd1x:,6j1P5ζN!Gcz&J_5GH4UaAU9Fii #yRI 'ZnTr"kP?5#u_K[hɩ[|j;a epqqHJȍ(qtڅd|#n$׋d8Ġ@.Ԧđ>W{v4~=O~# XT]!e}awI8>ng,$jS;|܉_/y/9^$_؝|P}N"36c`|GMNσir^7񝜒g{2 rϒ3{y^/z6!>E\fxt'5EVfClx|'rN_]Zx_?VVג%z:+:r*}sRM^fRT1ګ6rjW;L Sy~s٪}jf6U 8E%C -Y E6W{`i/WB*/)t  48Vqӈ |Ycq V80R{r{-È). :Q,u36ig\@}AqwKuqTX Cmq]|Fq ĭ s9`n\E^p38x b6r_uWbe+ʆoA fWZY  `Ie߷FIVN)Rrh_Y2 9%s3̄,fǖ?HЗXg}6cNƴ8%VFX]=G.jiͬxZF]k"c/}1Aid~Kcȸ-=Cɿ=&楸ďKfIlodZ~e, gXanLcr\iCɇs簯m?{.rozW: |)_Y䯜d&\t^چ;v۰˕DVg Qo, }ugV6i'V<֫́^= [ծA;3ll!?saƧdoJb۸)P|2G=Eآ8/7Am@-1nh2.-&RL/)fB^C!֧c}'5| =c}gpmMl`CKt(Jʿ*Y%n-XhsPi&h FjLͧuǍǞNMȻ -FbP3Lw;%9r6ĥWᕎG6}3{%.&nb=?,nĸ_W GgN'#]hZiq):ު]@O\^KnjԶ=kO1sy_}7?x>mw}'r Gܼ<xstf4Φ+y?Yrrz ^8rdnz( jBN#\B.tBN"9%ts/g9'$w0f^hv//9WN|ch %Jc,\/OmX1+6'z{q. |cՃ~|ulnUUZZ ڈ#&-Em&=-u@ͨd:̶[(yuzQ Zwܖ fryoI6-6{]̐~6j`Ӿ&e h*1Z[>]VqT{~U"wmEz멒aWzH\UgvӪjJhUl ХuHڡ:퉞B{rU"ߤIkՒTйR~ <4CI&N*z;_?li3ގNCL|ч`"_q ۓڪ@9[S|x X\s죿f8&^-v'):?OKqI4/H>_i'wkeF)gǿW<zՠ"(΅\F0x[XUU *oWߦʥNPWmyf;J4c8,8,TtPvR`8\.'vzTޘ)ba8 =z=D=Sfz`7pMlbwb=(6#6rVv!copK}*ƊJ ؈biFѳL*3 =DNţUѱx)oํ?fW[[u9 rE\:ާ?dyw[{#v6`gɉqIPlj*&[agyJNHڸ.'ˑ1+U䮹sMk89|5 4U]GQ%vcĹjUkOY[]csR Q%2#AkAº QkVom&vm fy ;'m{KڒwbY+ 4YYs@c]{K˺zףt^I]x˵[5c {[ַLxiNcUߤTo9T-ojv` UBXGGK=̥2_Jܴ]Eo_kWQ@ʯ}z`vVbnV`VbUJ5*衱Mcߵ^Q l7DzhΫ^EFmlgc/'>4W>KH,$\ޱsG}O* %N"QOѳCDql%Ɗ|;_.qqiLA{T'[WJ,ȪF-ϥx/ֽy >of>O~5= rC^F 쌉q@?r?"| M.N&OǝxVƟb6;gPl}Nc{)6+> u{{õnfyMsQ\|xbV1xbH1C- {Ec$:A0q{m_QqtIu 8]JĿ6 }l3]APC\_v1u׫@NE?b+ā >Dщ)XY2eon>mѮyq8=P'+(oN\ n.^ /| / ^SO`֯)>U(],)fQלڢz`ees(=X`#JvĒ5O˯ngH'v !\ Zd+PSF{w1\Y>pwq]E~Gk vʟyż$v%!_-/Zҿ0u(O7YR`EPۭ ^yNmSek{=}rqE|[_$ijc4yz8Ei8%9R Q՜%3f0[^ƫY>ol# jи4~ᦖ>{^EUqW2 7?KMYԪ`jr0+^̬4 *BKWs4TKbbj\Kb!x+ZA._8Xl 1R^B ^,ϥ`*2*MzM7*M愵*Ql[BFtY_^.X% 25^ Xsb eq* "rn,+(cmUDUVͪHZ M6ӵU-CbՕ*i%UƪVHsl\[uߖ}J`&[U۵^Xy'Z8߷GI=ǹSV+(iU,_|VŢ~Vـv ؖ#zХJĻV@Q}fjy%rݫ45ޕqR+XQmg=EU/{嗋*z>|&{cP2hlr-E.oyܪoZmy\@NyW(A{$+S #:Wcݏ?Bޓg&N.oםU|GQbh_lJ{Q |?aS9mJWQT_(WKJqD55;V땢˪^ʪ }oXO(/oj8ΠjUm5]&ˢYc`*iv{80T^qmcyY&c0(~qD2D2O?G#fѨ1yx߉n51<85懈#-w0-,'E_ Q%3+f!P ޝ<7W ssKȏ ur|3a|_nHn_CvyMqVn19yp%?95w9>ٗ[`6;Y^P37WRqUg?l<A7&ZeSn@v^wȍ ·k_܇ aԾkF;~lw9=H~;7tLkbs%-q*XD[QlK }e!I5Dwso&2ߑmO9ޏ}reB25#lN~0nm-uWy/0s^-&ο @i%/B>-ܜ;#Vx^7Xbn0 ɱ^KPbbR_%`(q(1RZ3 ,R`dh`ZW"38Meyf[P뮊iiULbbhKņX`%ب V( *E-V@.bX#tZT2){+eʄd*vD@%WSj 4רV]]VuCW1*F+e9L*iiYUؾh\{BIޑ&`W+XQ(X@PtK $4{=%g珵N{> k91cTʕGCt(f"cKYmRQjhJVJo?OI|8-[!5_QQ }Fy^€lߖQvެ訯n^MgkumojI@}U{VJ^v6,{ K ׭/TTZL=:"DԖ:zB'#K֛=eBIUTz6(:TuNhIgtUtO2b#}Pl]lm ^#>xh7-1爸oG%&7DX śߤ؝xuTVOzGO3ăuGS?5w9+~t+qCQ?yI<]r?^jl¶v1Q\Eص(]D-qY XI}+po7WE͟x&Z!$D@Qj}uܘb|߀Q(NnIJv0[iySt# É9n:v3b2vѓ%gB65{~0qٛ|=O /8DR{oL\7eR{A.̿gaNB1\xEJR~yrkbWcz Xn/bc|6Kl+#(ScgAqwT Ő-\2~I\?wo}E *,ޢWoF3řxPVL(1k;O,KlX(g}tv1VcofI_ +,WÂ\wLSk^OUR{m;ϫN9m+y1@,! 'd=9<ߵ^||&ϋ =ncWuzU^l ;!1  ctS19O! WqrrGrruCmiNNCzr\T[I񕸴XJ>]r(mٍM69 C<)v2w(Y+Ϫ@/cJeAg=Msh!\OG;7jɓ4X>= -5y"y#^3.!1o5$qy$Zt< X6[;l@I4x˛2oēf76$ _6?"Ĵ8,Mۖyayo6-\9Ysr`E*5qJYa[Y}ejxk5EhkU]o-mYFyT$ZVU+5}XAIV`Mik+?ڿZU~;}\ Dߒ`uAn=zVk mF,tY+=5뵩:yW+/WfhY)Y7su{g)SGtT55B#DiVSJkYv,g%VHKu[Zݶ]yE#i (mYfam6+$oNѽ1oԌv誜]/y֚MhYzUucIXWQODxU UǾ6aPtoZv1H []?6_)J*hWVkM}EW"+ [b@n8"ʿ^|&AcmuDg+`߱:G=Do=B__*3f;1X 41Ո͆Xnwýq &ǠpWRL%(zS|m.6pw:og槚gg#D;}yJrJ\P.e `sioH QoQV֎߹$?խ"rno% T$4!c GAEKD_u"2ga6ɸY107Z̊)/M:^yҼxװg\#'Uq :f;#buH sh쯙\x;ɿnBj\JҢGsɑ?w~םJ?6:-r5NugVKKK3A--BvT5Qm_󗵓+wʛshM\~s`Qĥ>!^36v"Fğc6qdt~cq$ŏMсbA bJq*)pcSgm4nŭ7(,ŕĴ&цhgm<׺8![b%ċ:ĎNicOeWv;j_n5)MZJ-X4oi+^ׄ=+ւk\~ڒ?3O z옽9rؓ"d!֝]p9蓛4cz |Sd;jWfJ\#vq"0D'kIOG{>v w$rJGCgfN\ȍ95~L#N(HfP¡.AɮYG*ȖlS{OIQ_ȝspJJܐ+Ύu쟿ݖ 9hd y~G>Gv@~J!0$jO㊒ȍm-Pd'r٣HNTv E4Skseo#IX|;&ظ8ے_w1|]'!ڼ ߑ/lj .;jCē6ʲmc;[a6yщ'RÜxt2Br&֚/ ,⅜Mlx{9oToYh69=53,c%~> E>R6TcXOuG T6`#[}6FܭkMDʅҹ6n~^%ިE/lnT\^^6fS7fbæ-Ԡ1eR٠%N{m3\>ةKc} ߸3_WI* ~]%o-kSmɹoUF?]EഭvҶ"VJkmSіhY۫X ۣS:+~tFwtE=uу裫ʔ>g3@ @  Cp#ƨx=6ch®unދĘRFXEhN]c4k(SƓ':1/bgF?6k.\ޓs~sk 11xmAx/< OVy;ҫ!JUCrtKEJr_jD7Y? t p-KP_Ԧ6Bro~6bN}skkW"y6Ǻ{W {ۛ8!曂qj|85FgbϘBqdqpxh(:W^q#mUyɃ)c6EGsnJ<-ĸo12ˉx% [{X$n+[=IU0bE?_حCuJ5cU6aa.ֈwLA 1OZG.kqYu6?s ֹdi $3Ȇ\בryL.EA7K1XG+kbjv=S#/6U?O„|DNm1&W8"%6F}|X<$Suo'TƧj_ͫLGRA9r+dm 1{`lޜ(16w yٷGʕd_Ֆkc. ;dgQ}EmGf~2mrdf޸`9_aFg{ z+ֳ?&vYT!6 Pw8+ߕ\ +ߪ{2`yn&V* !%KNv6-9dslrB爅px04Z O8 2=x-'KW[B~'~oxؘ7| '+ğ߬r+c;ܐOk!ob-:[C=,GY gDG3r;2urIs9›Y_yϙx|37{f3gfz\r--\K-|Jς\VUk,'>ya]U7XA.bip-rMBcYКĕU:¾[RMHBkz`݇jI0Jו:bJu\+apGu#\) ʺnsm\Kݠ[ u6VD6bl4}hu I#1fU ^ J`) bxJ Uoyl&Z QC1"b6n&J*XfcaT&иvn5S|-)c險Ỷ7m/6K[}׈=+}%-յ]kviU _|Jh+;*Djh_U`k#SUEUPW ݵ.Jߩw*_s= L $kiejp08F Ռ#Mi׌-Ն膽E ĩ-m!MqyW] ^ F)P,R\HViԕy?My oҲs-7W(F ur1]cuXlctoې {q k"wkre+qْ N2|5ɚ}g1$|l!\;;#K[V?ںSeߑߟܖ;.ro}Bp~dsF&H,_R6n#7Itu@cf֣dum ٻȍ T˽dwj']j#t6b9 o}80NYCbE,65q|L)~C(P)ިEpKoxt$^0|޿@e(/#⍸bu1Y5&fDxx:b}<t-Gؚo[fc؋Utow,]{[\[͎4؄VkƢ\j#fa-^5*AKjxxc-qO\iesXGv#GbQ~K)y(tL\IDi<@j,(|9g\BNʺAʾcPϩ'9HP q-)[qk V1^́FR|\/dw]Kȩ,!CG틧X͕Z6۞{_?t~㑝nfg> _%}L3pxVNR!!еRQ ~KP&`&aʑJ r/{ƗrLͷ@6y9Hs#D%$/Kٹu/Nˇ+yl3y].!G!.Eؔ*ig'pWyƒ`y:Fwkeu>% =Den"^ ehx -6y'K,17gyf׼kU,UܜCδ|caE|%~L\fiEr߳Rur}I\$hiK+`,G!>Qt嚬%[j>"a C뽔Aa͖u[ UuMhJqXƊh< 6V@+XP"lewb2^uh}XM7_JԊNy{Vkq>H S6+>LĔ>B̲KFōf4ZNcfkrNy,{dsn20OʝH:bǭvms>9|썎_GEL̶ك%^xCh>COoW#&7ᅪA3[ٕlq^%F ɉ):{6qi&W83_EBj/Pw*[` Oj4o][nY[΂εOBmrmԦ֎Cmk<_>䙹KA^sA|!vv5@8. ŬXA;CbDخؖTr#˗#7u K^xSV7b@сx!Π5{ފ%;x X8 wוP| /ZcꤔeKv&-Xkf,1jaexsݽy' ȯAAh3r DҝP{HS+gy"WB>|+> qPn%*muF X;zއ.3w<5UcNag[ 8)&bW*݂i7=-k#v\7PϑD](grL|5W88˱xo`b+;Ȝvqmc ϝr0ű9UrIslptpS3/yzm%ϻy r`O] {Fm_٥˄}|DLi*b/ c.YbZEeC#ݓ3x\V w si{s9aQ%FZZ#.RVxsK1/baI ZcYF"YƢ*.'7Tuw%l&,XՒ`X1NrT"ДkSxŕ*Auj!X 4Tu~k+ŵSEm=fmڸ(ooXMo6\u+_h[cj+_4Vc3?>hPm%[)WJhS7mky_mukke~\7mNmx_S[S!FZʼnʾf9Sߦ2k5m Ve}=Uv}%o_I[cZ;7ܽ?~nK}*ըEg"ݕi^JzCR*_<[Coo:zS_t$t7蠧~Dw=J>(}v(01`Zg5;Zmb[bG5am@죳0[w`G9ibcm"Cħ>N cbF\v!D'U~k)0bE K5cOv3㱺/|1<8-_ ŽRse۷i~v}FKi8({|+[(+1&ȋ؍FTwj+J`67PlyVsu`S|/2ukбTMqUݦD-s5x^m1709-6'_PWv !h#/"r`v,C4m֑wU\%_#.ff[f;ryVF:V:r.:Y^EWk3lK@ɍY\M9\PV\\Yw۝1d^g݊|lCZ&RkXD6zv'F}*O'z9FG;CSqds-~IGV}3/'?r_Ci^+'鳌r_O1sF앟{O[XdNt牝(/b K s+Owq7;_@R]WRV4ĎM-zě##kx2rqrci9񲿻 ]bb?@n:UxSj ›^O{)wzk]E|2<( Iryv x 6;|2rq>,%Kn=`]b@qlKgjj,/B@3GHޒ@,C\lÈ{3`r\ڡG|bL{ꨟrj qD |A ?NI\;f%Ԙـ]Ѓh I1|^%N%>Kn?MP_>բ؀TZ{3ۓ 7sK vrT"9 b仹Uv glC DD/`DMdj)n';j 9<Xy̓'7^А "= Z.̲h q DLC'CKYtF9/B\nW^t;qFMSggŮx8G\ˊəoXM|ϟ;S !#VI昽1!,3!+os:U@-Vkh5lY(@ S-9)uQ>iݍdNjZHD_ 'iֱd<9.".ŊD5>XâkWܾ*6z3{亓{INf`7Ee+S+~l'roO9\J'mo9+uܔШDMw~1FƓksUnjO3v̀#a|;mKdoiy_Zu}ðَ~^6hr&<vX($P&~MYI>+t?R˗6v$&NA͓侵k琣| 55M!?rJ1O{{YcqSCx8wqM1(G)q9k4sk6+?)K¢g<(zPۢ%>Ff,$ގCm.UWq}WG[ܧiP@V14r6yGK&ϓ?<ǿ=웷= %r~q\$_=e1d^-j5KjW"rN΀@}uڜ#*]*]"wax~298#d3~p1stֶB]X@ #?P_-&,\!˶=q6q(c[o16.sqVb YOWF 8X?_ӈqhMXߎϣw|=`{+r"y|ԁ6g؊'ۗs?bH''vv)3ț)>ퟘ\cɦ5r?>%DwbFDt#WdHҜnf[rHvzr8 #{ج#geldSK'/$ל[?5-ibU n;2A C{I9{o3{AmsEqo`ҴpLY'/(gv!ܓ|{a2a.9#uqǁNcB>FK.j-p3O>ާp s;lWf@";y4cAk&/WŅ^Gy|8Z{WL>}}q&'^I⻖|TNxRsLFmh NL4>Yj־V*}Kթo {0X@<WymM[k۪S߶mu}*殓Č謣ZKi~cYW邶U'S7lt;.A}B@ _;bZ0,pFd(11F(((bBhLTg q>BL->m خh+x(vhg\&#b?lc/49"A,f' ʙljQe$ AG#8&`A|MHqc)!v7=awN)if9ke7lz kzl?ˎ\/K}o"VT<]&.œT\㟕iߏawlM'GeC\Vʜ!f jPR҄՝uFÝZEl|X]~k6+>h ؼyadU'Tǵ޿ v]Ld5ſ,w8G|eY's1^9zKqd%y;xs;߹mf{X#=r|8c+$LN30o.l3ț 'ȧ{n63hAk&Y[ar.ͱYǯw=Aݻ?zFӧϐ㦺_DGU4$s+ْHJv oU#'LtʳɝDbZDޥXjĄ<㣖ju(52:?Pݖ6*Ur5D@k;QGjA˪Z7rvh0r|<MPyhD~7|GJI\,wPBEw"C(G!$Ǿ)ӣ%['C! :?pn8m>Rur5x8q^Ke5f,fbUo?O}'nw&^s9 qG6@翝UrTfed k1{Us7pC3󼼉ߞ"HuK^%o۲ڟfM ^6BOuxq/ZfrܐaQd MMq" m%9?%YOi/c66a[A5v!r>ҭ2~#6i`6`iuaI{1pU2qGۈyI\?y0}c5"=_?"N}}4/<ɗ]|+Hn# bmɭV| Í}~{Jwx r"cDD=MGr^s#fC.%DBvnd0U rdvÔ6ĻZO~X.#\:|Q)Ϗ~t|v;V\5QQWQk&`b*xB9vHyMb-mxlC\]V}1K^A'EOS3# G#{F~4SX{0߷|hOz/ 5/ "1/5*wf?z^E^x_;y-q5`RLߚEuon D|ͿɵvIDATpލ<[x|.0qqܛ/ygQ=GMH>-gm*^q՜g^J_*uM:cc1,btKCϊ8KVj!gXVvikъ\5V\t2ުxY)΅XoEjkeeR,L[cZ+ٹ,X96U]nuK&VVEkݎ6nQkZzlb*eAYhֺRD6F[ Zc[D@\D9 #q-gA"}zպIt8-TN}V@VJJbZ kK,Lsi-iWwb:D;ZvToY|"E_z}UcF!jOTXF`;z܎?vW>WZ -@ml.M. :79,DγP 3(G_;k'S0i>Eam2gĎ1.8:FSP _Bŕp/pkRhc6Ż狿Q,)n*~L\R[\E_ƣ]6vvQ e܄J3-Tv`H5+N;;fXe XKt/B[Y)wϭ#->_[H,ɗj3ɕtd&;߈XInӖ8/L-y5U"1q\sLj[!-6,7sR=`-ֆdOҥ:9.Mt3tnqa=aL4^]୸&n ֺ'^'0#q`lħ ̋bdE|9/c>P#-߮ܗ/.˰ʘ=!wm(,{9.U8&v'1v${FDv9{rx<ՖpV{3bN~p9G d6 sD9=W"#r0kyh`=_sgu+/E`6v8s?&>;2AO?I/8j0e?_#Ka_ŒU9Zp҃0YG,$bZu$*Y!JIog3syӽ{;c=d t $`]@3giG6kbj0 k8+9z ݧ;N۲=6b-|(g7x,AgsF-_Gu^^f{3Xp%A09;_f{/k^4[Kǧu6&_9Fw3Z.48e|bTͱ tkG̰,ӊO̲F̱z˕bU bU\/ڄ.Vi@jĪLUQx4Wa+X*^:P PZi(4ZL ssӉZE ԪT o*c5so[?Q7j?}o)g[}rξ\g1/,~~_)RD5C?XJZZTm%1!YNTu~],tFcu}LnDw HvJⰗ*߾죓D鋁 Cu~7'b^q*?c!FRL4h)&Olk2}lLB'cMFL*lC܀0TttRlZB 4!c5b\]q xlC^u(j#ql'QtR8brNgdDB|%kprdl+F6}uu=|ǘWpaqۥx88n&ϋugRa3uS]Ѿnu.*fJb׺wyd+v E&bf݃Īx87+fcbcl*^$5qGl?џR u\ĝ?͕r!怍X fU훥ޖV_)>H-#k%ZSToXs Y> P4=`/\V\Y7[,L-G۱u.q󆘆#̎u羁 >c4UYe2.LKʼxM~|&!vR6&#,!g#&b>Lys7aw:qh@!VYѷ٫hz'AI;,ȶyR@am0Է] y}s&qE5$/qJ_"܎ _;JKL7\j7P$Joh<?gnjk_>UP;BȜ\;<#ߪ]r$yp#9x8+{ڋl"ΊhG|$p1"Nn1'Bه.z/R!?)I1 V\F<lO1:#_łؕXǛc?(?#e[z::q!iMg]~sK_MiBՈYvg{RMԶ]]z0d5o?Ne@Ow_G GēN ո#z΋ę&ǃn>6XG!G|^+/rq){M $gP 6)vdcg_Ϗ@)lF>n/h-q^]NV9 vgĹ=~Wƕ""axN׌]z}G\B|і\yhFG04_"ws-WKiNɭ{,.z!xO#sol ]W {lOHvsx<sF';80bMh+1}&ZU~cv7.Nozh ;2L̡O箟ٓaAdHG=nݝA}ge :7K?v|O'dg)3q'WhryRvR]p3 ;q$*GDӔ?(yg(S"㣎iu!#:ǻ.&7x5:[^i+y&'bksM՞5o{3N{A#yBse 7- û:EfzlwBN%fyxƻq{x9:7;/\oEIn7|Y3ft1qGm:0+z|ebFPyԕ1Tid)HSEc24;Y&,&R [c%[Wy 6T#e* M K/|_\bXcy_-ڪ㶮"uUmU߼ެ&b%?vKʄ=?-k@"G(* ~T}E%/*)~Qu+X;m8:ےOߥWYW*nCzn%ﵹ?֛YC>觏~ 0Y7j ÌDg#AC1b";$t7" Vc=q1)v6ց$ݱ}L2WW 8j;ΰ1: rƾ7:?|#J0c$Svw">])J[Pu}:5p,?zY׼zkqYvbՌ݃ڀQ1gbQJxl*}q ug]Fݨ#_T7nu=^uͤusk.KR1mf^6bNݲ\_+.+SEx;)%߈犇  cm\@*#h%\ФZ-q ?4^_J[M>b [kmLJn T:_U? غTbYCr@[cA8,@Q%WvbVQ}5s'39$wVX9+esGobnE<9|64%7dڍȖ>u♺_1^Ðޯ#t3?qg EEjc{ao,r y79ޏCɅ95ô%rƙ7v] ?iOb+;i1 í:}Vg2);'-TRO5ߨ^`MZh9ju-#! rEm"wjǸYztOmhCOT\Ⳏ™mtiqQaœ1òraV&u1覻{bbGgO-7mw, ;D;ۙqñM..9v#͛ɫSSt%LHrɶƤmF/Ήt#SEUg,%4%[ertۡ9ܯVq1^GwyW܁Ƽ7ZE1)F;zCO`l2@OuB|,~Ӽ C&FN{/6G#ٍHn4.Nǐ@8Ra%%0;7}ؑ|:=Լ<ߩ~W>_$ׇ 9h>NjUމ,؃6.󼚏>YBޗ S6piġԀe5hNͦuη1,:wT~x[I͎h75%AKX`4 0#33-6Z=]%s`E=1bbXdJˈ뭪bTumfJl&Py4UezAh%-D@fB`р#9N0N"n&T4`mQWբr/*e@+`PWu שSvTtǯcJtA7C{L==;~O~zťW 7V&{d=^_е{V7 0]|"gU3C*EX,TčԌm)fa;cu$vCCL8ֱS;ط &*^ &Tij؎8/%vUv$*?`%Qz /U88$ԼӚkYʊۖEG>nzs͉+g;-~Ƌ7M|3/cnlK vS.8ĺԽY{lc:ڮ9TԖSJ"r7xmr4y+9EN w|\m__${1M@MvqvB1v1_lH^xxJӕQ+;ySOڥ.ƃf>1!ɗ*-5߈7VO ,ӎZʖ#jGA|Lژd;k{&λrj~&;g޶Ba~'^m2x#N]@GS|Rc~l$fϻ".Lsb%Z0Kr'z;e/5[;/zk8mB'{ؗ7l/k@ޞD^ }&_ oU\Pvy>BE!y |g얖I?ekg-ȷj}3`,S^g?l hFro<sb@#z Kt1?cK:YK|=ߍ`ivc7'1\{a0+*ms"KVB}ġ{'݉s8x.ko<~u7quf*=DuŽ(Gi1t{ζ/qpm\N_c1"w rG|Hj]!"/:֝Bn!a09M/:\En88>@rb LM GM-L34cQcZjw%WKɍlS4 lk?jk^7Hޜ6w_|sc}Ng kS1> F-_eM6g1+hwٞV:9Cib%r->4Z,8r2>41|ZiPvUv0cɿ(S@o,#.?kJϖeH\ה``8#F9Rbx5(u!'טw)}]߹8qG,ɇ@y!bU='?ƫ:^o({n2F>sM['&ƭ [ 1Kfg#9es _ykܱ")aGkafGE`GXz,-MI-a%Yi)6Ym9s`UX_Րk%!Pg\)+sl2T ֢4Jb%@qX$bWE>@a࿥}uĿ(#X]|m+ӾMTL~[Έ2'@KtE/tU`WK :c708y CѼuUm` smaH\mJ32&bL*>Z9㾍ۢ#h(~Qe<V퇩%Z,J3uػ̈񎇕&{UHy{xu%x'9@||i( opY\DzX>z]U- ꬥWK n+`c5ḿMop? +>lEYКP4llV8گ_5r< MJqY;ֿ8bGr|^pI~Mm݉b[F/mpcG Ȓ/ast9ÊN^w;2wUyN~\BlL.'p+zz~'>N.M23Ԭn#w4(Oąȧ,Ky֧=p9k[ꭰsN $$!r䜓`qM0 &$P(眶v~؜{99y3kWWuWWW9cךHCk/ޫ> 6VG)vm1ad{Eq{]^qsdGeO&io:N"?t)>8oJ#e 㫘MU[>j(+ ON= ,S̰4W4g{&Nt9iNj'Oשݚ>NߐF1#]u4ᕼ- ӗ47_!zk4YиyF}o>6r·'߭ĥdD Y, Y6t-(eibh!;&D[z+Q$obO"ϮLKHYz(bt $zZ'b+wvfO,Kl&&~Xb4SzP/GK͈uN 0WJZŖZZ|@rEjHb4Q"9 ]ҝ}4~AۏRnv#ZFD_S$j1?GlOw6N%IҽqgvIReZN ٝ?" bdQ6kl$U}O-S5iW&]I;$mhݩ)^Ǵ%*I/7mwIվJat0VLsXX 4OAF-=>fyt0!N"'4&UnCߵtt;>Em&{>}ńV'ێ;7iv udcy>[iB|I٫0J|>.qBoW-eVC[<`*,T4B58`B(ED1Nx]`H4D =T:Xo{`0|+0ƚQ}kOB0!xB0}Z'|ig66M3ksU`j*/ǷŽgX0;-$X)iceJX`\!FX֪Œ^zV-+Ԕj @f@XG<S$D %EʏC}PPXUVa_I6Be!5+{=As M튊xI!<ר {5.U&:膍msOq,S|lR~n6bg`]?bs (Kl7W)[}ru| +(cʕqZu/w9}&zI{fiCuXucU#YWY>q^wkFVկnǪCzHܛLP'cbrJJf%N):)bWL׳KWj/H4i MmFy;=3)ٙ*Cp v#64=[ZRԁ,eS:5+e)5ɔnt}Vo:l7mWl0ʦeMblA1-^'/ǧ6VVVn`D(7T聯r,_+,(?ߋ^O'Pѿ U7d!?"X[~^wX>ځ}߯MCB:K_H- 3Ŏ &{W~s"V2DHҸ86Wu~>=l:ikgx'xhRGҡxvQ 㵊^Ns^LUXOitiW씖dC<=ړTF/0/4mG|y${cO'q, [o!))+DgJc?K 4?M'͋]c+Ҧ{`"+g/":o:ru@1.xmzUgwȷO R|'_ɻ![{?Ƥ}xvJ=Q~6:qk{cg9;$>M4!ޱ==%ۑch919-d7s!.2Si9dً2āQo뾫_S΍]#.I.:6?ϾS/*~Jk0ۗi)ƛ3|h x>tPHi O 鍴 #}?>$"^adꝚPI7J7^ឆʼxLؾC3؍q#\>7Ly͸wK>7+gwv=Ǻ_~]Jl2 q w68V88\!uB660%=B-@j p#~&YVbѢムzb"`8PH[^Of%;xc.qwMT{;&bS)VzqV q$U?J7W"f?H/iG4w4ljׂ!Ѭ-鄴Ĉt֙.it-i"5MG/tOz2OG.3Y.iJ+ݓ v3Rlkc#m 1Ī؋y:.zoKZ9Y!UN 5I,K8֞ɬŋ';G/j<9(iL0D]L Q?'M?tJ_tuM9ԮKٵSVn]n@zz^.}ӓTƤreh|/3 U]꼟㯊oEE2=@j>5O+TjEEc"&qfd5xxM>U +o;WK]Nv'DcX܂6򥢿W] PxV$| /ccdD qeH<,/Rܻ_,w*)]Nt._M7]"HQ$=)Tʏ{/V$ˉȾ,8|mR~mSL%[+ږgYw_sp#1 ح|}^WR=KC,jݠUcq'Β7]~?+Zh,=p+g9._F>"E6qV,'144L]7ln ċи5!-#("Zǘl?b?bcOcb8@ʱ5,R:1e_Ǯ:…#Ml%"˦dܚrJ'YF/*WcAtQtɚO $efe7d:fS(],lnYݳ&cbp^d#Ěٵ蟝Hs,$FZòKI7[(eq;bzU_YѰn, =vuQDp`B<ʤrܼ;wk7wy; _߷lh/;-4 y(]ەGncOR- 6msmfA-c_LGAWt N%Pg&N?ir}A};z$ /¥ I,אVYzڻ4}EiDJmZؘEi;NC@nNJϓߠI7`~h>2aQ,5.fXU*UbL>PIx6=[qSBNWi2յ|N_;)VQ5@^ o/|S648N%.i+ңiϴ;iGu=FiVv=E"L+>VE'!:]}fGOv΂l૕m¬={Ay)x1;<"1k?c,LJz_slAI?{ +u /?ר-SZEeif[HxqU4 !59ϭ5ݽ"mIߐ^I_N# O7]ȟȇ9 6iSsBh3i Fm4S$^pXj5 ۱|vQ0Ho(cw-HX]upFUo>OüqOQm2ޱk;Ym؄tJ;ͣ{B!}dLIvvj܈֦RvMGRtg[ƭˢe%iI:;iIlKҫ)Oˈ26#&GI J7}mJ$RvIaXN.pP35(Wjq=H]iSҫ8v&52, I٘HҦt>1~LZ&KH+MIg4+jJ է~F65]}߰즕׮ocwztMsc-KT\Gw=i xz/pRinkguC5-];SO:ߢbq4E2`,e(z?(tx['>/> EQ"S 'ǾV1| cT)VyEK)tEpEa,*HBCҘb;VT&J]SO+1hC<|TޯHfg+9p~&:hP$UHkZUC9.ǵsVafy-gر6P).-o_{ 6 |@lTIrrrg|,bJXH'Lȷ-oVkq]9*X_^_S~kZ†X_ lzP? 6'M%fek5Z5XںQ,[+O`~Қ58{;9Kd:ZƉQm+b_*:wƅYc&)< 7ŷW|%#WI;ƪ((G[M?Wn6TXxz+:# UE 0OaVeQm+4C߿+12Jr67&l)Ԕ56QK嗵qHQ-?.QN#+ Ib@lM]j$][+i}X-_fu{JG)~z<szЄ;=5&m~} Cpjz٘ԤHُ]ܞ^$ Qa?4ɇxא4Y^FSsO,5S2sTY:妌*MRI-JkAFQąqe\Fzċ&&-!`xMl􌂉ed/^85@1b)?qȻ7T@>,]IR$LNO[`hi@&z9,NUCl(ȶƦӱ46%*!;>lf{'=0/ħMbBVe/Q >yq.Œ7 îF:a}= m~eџ:6ZjJMT^^Z,O\_4cM 6#^&=@z$M=H442KϓߜM5?_V)404J=ҷ oss{a#M4CAށtz1g NK}uof Lêc;^_cxpAVO􈯣[9axEϵ7fD:#homD=/og%RE7nq V7m뉕>*Nw$`ܝ:;T~X[* hH';ŨO7(gڒtTt/"%q]ZG:.bℸA3⎸/@:RbzzR?42j[䪬'_ }IpsuTƌ*j$gTl+ZVYiѻͧ|AΦKÛ?JͶٵFU94BBdl(QC?Lz/b㤾^^e@w]vsSkrE{EBy"JJEUF>V$(QXY b,i-1Oag6[as6X~}'*#-ff) sF70(4)c3U\_3( Z ĝloR_7X L!D"+﹟-ml ND5P@'ЩXF'@ӉQxл_{5R5يښAOaK5{UMMϺ5jZ̈́%uɺwkvrP׺5X{Ok"o^5W%bn#XOes;f/G '8 [Z-ZL3/j0Q{g_Ɗ&"Ex?J=툡> a3͉whx*@\m͉3aqD;b9{y665{dcp`cۢ-;W5Q0~dCdbi#EtdqJ#kf}/dc22`VE*?Kdh֌lE ٌ,ekyeᗿ780.C̉ #˾>BSLI)4&^߹5v_Ez{шE~|EQ/ TG"A[X V֗j _$wE~71fUv(֥!F/)3Lډ_.5_CbF/KIҡS`8 iJlj:ju6ܺI֔SQwIդ O)JMH9%i:QW2\v@I[qow~&!`i𺅾ז0ӭ.3Zz%ϣh@qƑ>2Gčn7!n%I:4=Į K/ ^~K-ukꮰ$0ᖛN u˟JgG|f ypNˇf^wZvኃH'a>y+p?[D~}ZҤAA\CtDc6Y/}lԙKzuy3y=_C?eH*3kG45kKZ]c{Ҳ42 -ݞFl+Od{G]D8%486w>~MODhjq.(^x8N^e7W?ƞ9g?ɎSqZb]59b'JhzMtMIS RtJQI\㥸:9iUٿ|OZZUK4W&ݱM$x{iOu8M5 ;x-JCm0)3K 9[5r+\z^(ڐFنKC8-I^NOıčı'ZF'(#uL00f'@iC z4Ֆ/=L8t5갃nqie+Ib ^1f.ىnK o:tGO:ߕVY_aobB|HcK%t $:FN#'ɸ= <g-mIMԑ>I=p&FHt iMliq15c*5>^+?l h4^􍮻)UT=ͺתY/뷨mZ%.`}kU/Z%u_źWm۬[2Vo~պ;!>_umOϿI_g6rWF ${¤}-6TXJi쥸lFKbҚXa5i0Q+b%QKb51ٱllL [lkP>`*[u0V5 V3mNJgDo:x(ZcMDuV#bK&ǥ1");:& $VkhooZk3|24.b}5iؘx6zŅB\J1j<6d7n dk+QȖdUƴ#lY]0[̒+.qgM7D)t\cl@ 6VeqYHxcy+IUji3XE!I/ f{HʱYQNOkHԊ:]!w=!.$N0J3rIEo}Ie7E&>dn30lHXj.cT+i(nP|9l >Ocߒ׈kdjI9"Mz Oc:sjvG/A7_i|ȇ[A:$]i^3;H7v7(;훎+Jz9U; q?ų$:B%;4΁OȞ8d{fWddu1?Jˣ:v /c 1!G *&8G %8j=PktLPwп\VVn-˽T*+˕oUZSV(D>hL>9fEuzt_:k6M&*SYjEz0ݓߓ>#$&&?|}}y&H~coVkKВ""?9GSHwƴ}3t.zϥd?Dhy\M]t'EKb}#1%vGFgb;5ފ^7|Xf O .رĦ;j]#)ncCz"qaN!.KS;b8ꥂSGMlBjz+W]b;V/gYZ R.] kRVv1 ,^{Na+}c M&$}87NH/'նQ]n O`xxTlSZM 4MFz,-Ҏ8<^5mP!:ǖq 1p&q{.=s|e7Yq7Ez Mw{l1 l+qdz5g!q1 WIis= `[W/ݳ6 M]]CTn$is7!=mblt7H[Pu3wV{c*~D$ݓV.J <:F%5&%ݥ%2:E#ݩ+G“jlL'cSKMZۂVƟ˶#ZϢkΤKg^o؍7!NiHo[Du~/oU׿? _yI׽c=@آ aKG҇[7D65&4FOthݛ #kRE*n4Mwn3ϗ:V@G*JP- blr)hk֍x׊b|Wi"וNLEfUB2;*KJQz"fR:lH*fϕ|C6?eӳo/ l*n[T\" eW#_?A>=m$դWӮyu~%N oPOk>.ɷ_aԻ4WSae_lL CzQr дaT.ojY WԟNmwnh.WS{]}}ݱ>TQ~1~'Aωqlt&둵˺J+x:V?ccz{TFٽfK=RԪԲ,4XY6bdc}g/.=WQZ~E̱FhD8%XU1;cN,+،XJc)lo,ֱ.*"f:b ?Zbc ي8l~)j]+QPnh#ķѱ\Ob[b <觍Ġh ࢗٶQkS\n]v+lMTʬ/q5=51ljшhM<}/&",d],;# b8'OLE11}iU51"6zbekqa{HҨ$#ci'-Z`ol8(^EFw{6q;-U (*ΐ`߀(D{Cѿa yV,?t-D=QJ@-5ݮx^oπt1{1M I= ^Lakz{{5=NmQc7<`-B2 `-HꓮMI=i#ُg#]@liG`GH?b>a[N_,-&[n"ៃZ@k]ZDg}\ʲڲk U,VYf5L] &@lS`ҟtMI9)+ΑJ@. e`9 {]#H;m!?'|wGu Hפ<Kae6RtzՃ8vŽNC.x7Fbđ&&clwiy}>?UgɆGXD d M|1)]&c"ڝq?nk~e-Z]HlQ;N7=QhVMʕ v5z5Xfce`RkN sU*$}VߜJ更iyBϷŸy4\03+>p7O4M5 wae`**bBI׊'^x'n!_;LޟlpAӌQD%qq_`u}xߌ;8io#ޚܞ ;?>zԎ$"=RtM 35ZV"GP݈A>ZY4"0D.~Dɯ>Qh # =zC#.zDGXh q9Aqpt8G~qH{in.v^bEzD[t5 4T{t~F!N ZmQً7 "-.|Ibx͢?[lfWh&hu֝FB\1.0C;4"#v !KWr50s\;b@AZc5z؜+]? IT˳?-<qv܏]Li~f`x"-ai_uCu"ח0)m,[@ID|wjƒOwmBt{*N뇧S?鐸63>)ڦOL#ԷXnP|×CY׹C^yu; {Ωp'e1q8is7Ss_PbI=x94Y+>g4LfDGoXX/yUi%6Z9_\]/,e ~LvٵXu.'-舵iB PoqyiAԸ<buX9n,s'a65;0]%qw%"_.3֊ +!5SC\dã!*k0T뽋"^W":DhG9k-A=Hv:RkQ,k3l5x%F?3b!XqW?Xf6ڦ5E"){4Am5QT֖zop9rMYD;b_D۞/^- ` `;uh/6(9ESTY;;ztmW5D:L3a<$'W9yf;GaGq[<~NzN+-Й4(= u2/;p܃ۆ%>x1r|_e,PKD {٢__֐iP`oՠZVRYlr,0|L3TiTC?!t4-#Ba> PH+Zc9E|Ox{u&@9ҕ HI]Ҝ(L%mitiS3:v\c汳]ڞDM\G@lޥGlallp8O꽱s Ŏ8>48'n&>bxlGͳIJXkcqL F{> ^ǭDuqfLġ">N]t 4R|( Xmm*|kŤ/L48,aXaxzP\'}iYuJԏdz-Ր**&_#93߂||/dC[Iڕ4h73ðnDA4v@|KD -(K'}[u`jc(VXؓn)6%LjN\A:q+iNq./ٗ,~Gj4h^c Ү^LK"2f񢖤[ O]V*z&ڒt3Q tLM5"N^sk"*{tԐ-8h|F.I/n<-ӫGtwe,&m'c0#~l7.Οce~jHS{^!=dQ871 űkZEz`ki=WIztMU~cW ZF׈#F iqJ$}3A`d (NM)/%1L95;rL7W W@WDL*Q,-PÎ?ޑRbRVĀRR r}a Sڲާ2AiB[Kb!f3-LsY¨'f93̓YZiEgĢX-&Q8H+Kk!jUք{) 4iB4DhNVUdRJ Vk>iu2mBqXWddvhD9jWhcZk[V1S謵読m4Ə>UrۘS[Gd?GVhcL"toR{07ĤhyvC5si.*DKT7׌hk9ҌX+cYTD%*}ؾDsQ^[V'ELu5XXk5FTK1h{vm9켁qP}Cr{pu&btV0G}}>M#|>20gI`j]¿",>-%m/VkG/W˭[ nLR6?Y Xl fL}H^H`NZc1؋(YRBgT|IʭGE{ɯj b;@Q:!-K{H[< & J8ZGĚ4Rb/=t&:84d 'E؟>":K_ $Ze{Cvjپ%ǟ>1ޏgEv\|LǮqC$#:b4Q|1+Vxua;5ZaEel[9cD't@k-T5AVS/+j02[#0ʗ^~?M,:;#\wt1i45u#>#%>"N9KyT$_IVzUw6ɧ0| _7a-4|DUɇ7AHzS9pp,$J.ȶ7DQLD3g#Iۑlq>d-i+O٭C8f7}ļpl ;3/YS$7; G)=qDhzb B]lϱF RMJ0'FͽAjmIzC*{jϐzi-6vKk? MoW J[ޥ!Z'ScZM>CLh4> bl6DL4+4lkl_>qtlv6&PV::0M }@̌&Gı i&cjk2fbEdL sp`[RTbj$x_&'H#&eJ,5Cfe{f*WUM5&TࣔފցDQV_Yg=iV-B|k9)17Z`zjGlF,$ƧLMY!o|ll:q̍;Zd!QeXU.MUQ\D"IeMD)M!^q*T%Zh9ZF8-R"RhuCs*qJMLSN)K5D---4<[Zhhy|Y_8&^"V ZjCL+bs-cZk9h+Mpjo4&XP݀R d)oHQ Ŵ"=%kXX\hT̃bfjF{\؁(`VlIM fs "DDhM!D">х-k@,cbV44jl8+\ml7,cXNOHbRL$*D XGj7g5iE_}_*|M9ѭzmL,ba֕gWP7Gѿ =D6yZP@Hu]+/6ғ,Ӷt樎T3 ߒ~?whLz>!TB?1l6y;2QvvI_+Dm(t`NhL4]oez 1&m}HT¶WW>!}`QVNgYS*V%e1eªh([SR`C=>*ʎTZ?`L-kiMx#L4ݜ~INL"m䯓H;)81iWԧ[q8 665c3@8'*[G,r#y!c4Xߥr{#Fl]=OLq:١1&I72&c}sQ\NDe 1>h1Feκ}nze䬮,TKͷ)io;{ M'MO=oGi'S|iZ@NgCoͷۑF3){a{5Pןe = hD>:;n62iQZQRtPWV8_؏xs&b&d]<c F6 !o@ *ɺNo*vN:*܄*1h-5/YTHSu%:"~^DK, j;YhVZcrL_ʧ`|HLǬ"#c}j"1 ce(SClE#b: ݉-TLؚDEL{; &q kĦC ޱgzDF6'A,Mo{vH4mm=bXq)nV3I N5%{ *}>^>2bblMzW~3,c؛sz!-xrGө:bTVjHcSr>VI8J`<*\yѪ6v'jo}t!QݲOP|KIi$Xa42g5ᨰX4>KJMgG4T DsĽD44àx-R 6ζqY`Bp/)c4J+i 1F+#ƪrb֦ lX~XJjZb}TE5YCVYP X[DL*%&Y9%2$#kH]A-\~2Ȫ!,SMEQhQBFٯQ4FattQo)MQ}n,I"ĚU +>1hmy[!'0ߪ ^Q6QOŪxD GUuj_Y› >l٠MRtwĕgs8Y\;M%7xsl-^qJ,%hDeћ#E8XNe>`F?>¯!~]1'E]ż3Y l뤟"}b,ngA @K\r\6>>{ NG_7@Z\~=6sx_e-tp,?S0#" 4+iɶiDWN:M8Gӈ''.w4qi:yO }9&`rC[8SofouaUa#W/pN5h40r̲SeI+Hʽ+ԕBԯHk lZ|?k@j(3RQLX"Wh]ŖXl1fa&V/8d7 :+Fz'_>)._3o_@{(`U_c_0.(H5 ڥ[/_NDm<$ݛLǒwwb퍭5=cw{Ǝ"*ŧяlXq{t͈l+WGکv}Dd3*JdҘ@vؖ8|wRkƤR)SSXLz([VŶfyx1HMbA<oS=k⩘A4ѱbnފ DO7'#'ޢ+D]*L-MΦ_9m>h4Ǟg3]0F {2g~%E/Ev@FuщhMl i4?ed=&!zFXA/dǦcڑ1 !!5ѝܝ^%H#,YNuv+qc7{!vc qџHuO-v"}H8XMzGQm?Mc:i610z֥3:k=zji@S%8~^uq^gqE\V,iH }k2f[\ ZH6(*qD2ݢj_@a9{kKmJ_1 5K:!nOq?1X#0&JcOY|i/xd41tPʛĠhAzLͱ@lbwԫY;̎紷PG ~C 9x2G=#u5I0qq9Z ,*ק7I).4}M6j}w[b2i˸ 6NR^R3\}8^NM!3 _Ęwg5θ7`,WY|b_ mE,t$}jC9qƘ'>;Ҹ8E;H +bfX4X6Z`E ˈoKiWixVF:jO :Z7t㲍J[רDk'DHv@QQ ̀eR"k MRbaosXF4,iZJ䘎ҡ>2⫴gPgto`|bY %}vƧKF HbN jbq,d+cUVI˸D5QejkZԩ74ijO pF=YQrb\G_0o8e TNkbfq@?BRC$mKlKc-q*,q]\ᾌfhk6LأVc 7$ ZUĢO]QE\n>2."FQ[Vc_YE,jf*-ΊK4VJ,IXA\b+ʉjV'2Xs iq=]K.&YM1:n'ދbhގĢx!m̎vDh=QKN:g㨨P/hA:?Jx$F7eQ3Ex4)W(zו5ckHkvsm GQ)oToF?l?4~C&s1r_o9+o߫|A{ң2͆?δ*ZZb}gN="?~vkZ3p2ov٥|*6%TtWdͰlo/\-ZXj6XbZb<̲L_Y.K+W+RR뿣ci},/'w\q*o2GeVXnoyXH^L&f;vHڠ%؃8cU;Od6P-H!o # PZؼ5JOv<=@*ƓNrZK_]E쭿Dőxv?[<_cPCђ8+ۑ![GC&UC_|Agfd'fCl>6+F1'}ci&Ѧ_T7m\A RYZձUlGleѿB3? EV`oȴF'1,n I+#-7AYikԔ7I_M%4ۢ'=ј ލӰoJ3 O6(F!= i@IDATl|~Z1;'M*4EKZܛvzm|Atxx۷#>fK9ƐLd`'ZǗGLDs/Y]Us9wt7t3" (JRFDD(P(99sαǮ=yٯoWSvٵ׵cb?IywEhK$:SNT{.YD+ڞ]G^|c]bűՇcnk8cd9MO7n5 n_6gԜܫ\cJKe]b(uҎkVZJNĦؽt."i|OzJ~ w>;SMc7JoF\J1q5][ZDѯ34m"j4\oD4t(!SVUhhU8"clֱ3*3ma6E#5A35lWXKT[q 2['wH\? CѕB/,搛6V:{M5iGN1hijN9%:cxLԛ2&O*G6xhCVzevz]}d%{!x#!2[Et1f+QK,묉N"v#W'&8.Z9/q.@.^1oK c8o!>Gq_C.~Zǘ]59'R=r5K !6wyrGΚ+ 6MrO(*P9htUgl*284G",4Rl vƕP@E|fSmI&FIQF[q%JQ_3SmL2G=<ш - KXc9iK.%qjvY6Nbm;IO;vAkKg_>vE/5h87E-J_m[ёU%XY~DL2zhzRAfSȗXEfN4$~,<|||Z͉GJJ7FxWk|KD,Xm|FJ91Ң"rA.)$Xkƪֆ lW575ۣHWR/n;l.o(RFT:-)6l Xm9f۱xhXI4W,\ODb1=`=b5scViWģvU}_1+}?b+"{ENXhY,#.%T]e .!2,]:QRK6i 0ŦNNOv8Sk;1~E["ŠLw`t"F9?3bM7bUqrlŏcyۑі>fF 㩘MFCʏ[ t\zylQ,~:Wm1ltTއTeQ]%_S߿gG,Ŀ(X0[>m /NU_ nmԎÈ+*P,zmҩѭ;Y3bPuc)=c12\mb{1;+E${9&7m?Ώ)8ڟ=>vIt~F]C[mm /Y/5DO̧2yw~19909+'JFʟfC)!9{[3݊*ʯU?ܕ͔y:ZG9rC"rOw9'jb^cWbp~#q{XK<o#:1X/(ʃS7 cd,%ZNA|I(-R G48 8ԙrg:רV^wG\兵4c3>8FLij>YP*-ܸ" lu*^s :kӱE3vVxFFFq,N2'b8AO&釿ӈ_EA\4'MĜ8mdbC~bq#5x/)ʟӆb98u Dsb12c45wʼn.jiCbMt&- w v#.U3&?P' 0 4#~]JTw,͡ăS='7m4|#ڋ+qr'x33|/`-wL <( &2;i90bVb$&ęFaIFcI9\NʬHiGv5RGqu|r4Dl#ޤ"CDiFΨj1'zolιVuO쯭H8}@ G[4RGDw}'J=Q3k:$JQtbKWeUZ;"9M +}bw#;xr)myNaO,j5r3qiy3nOJCQ?z' >|~Jn9#cX6Fҩ޷%F9`Aت%Vd,&Gplގʺ\iDw+'ceik2%[ a%V:ҺryIۼD !y<*aY ,6nRiuK'EO^aUC,b|;8NK,,,ejFk5! hiV jDu1CsQ"iNt̏u@M;4S-}-" <S&ơDKcbUK)ΕK!1RÉiqɔ -JqOԢaD՛<~'c;`뉃c{s)Gc 3UShi]t%'酫cSr0$YN'9Hrqq;qdCÉ_fD]bs4&?@cD,Љ85XN|:*:-*_*G\V j["kBH bp4-}Fs1TK](m GXmg.!)񶛌I-J3¸a1E\A1\}l1! cuMlD9EK1Z #g$XUb-!*KiVU,,EVDZ񚕹VTw[&<Ṹj` qw|a,<+sP&ZaY(-LK+Ί^L=A+:[+΄ڀZsQuy]WqB2̷,bK PROVj"n:v QQbۉ[Ƹ{'6Ds fFx#NLu5$q ٥RWX{;{>7_Q!y֫mUQ)6r'QtEa)_[9BzEg|g?WCXuAPg0ƕS8@n/h]$VCk~-S=s:Ki½* X?;2@;cΎb6f33o׻臫}*Wި-CKrmR Z xk UN{W +~uAzkV_^S=z}G?*U^jGυ+#s*ۀVYM.bL3aFoXuL4trklD%m 7ȷpUnzm-}@v1} 5lX>2rއybv q-q:='/N GcQE]bX5(ͣ?#`fU_;]-fǞ> >v'~gvm3EL%l|BL(Qo$"ØErv,ˋ &ETbZyUW qJu}kxzp^Gv72ƹsg|Om2sAܺpݼbSj?"ƈXEiL4)ɥf[bQ?ŭDh(_ tJ1֩f`{cqxJhC)DmC8ĵ8wUQ#"~-Tفq.j9Z-b|". jh_'b=9bbN93(?f+ⴚbned +qfWH37ۂKm 6Xg-ߊUV Y%:"K-|s1Xhf[dZn >6$?EmMc>chQ4E'-shQs2ꙩw~vq`N$3EG\8+~|y6W8?b1)jQ`p'_7'[Nrcb$m< &L #gufc-5eu;.X 02 1eq1qea^!Bg s-?>Zz*@Lq8ql \R1`%z= xh-ue(* ͕cZk%Ya1f)&Z`FcƘi*9:'Ln^bYor;b>:P;gLJx&za-vz}ts8sl1qkha0 :Eͺɛm͸f,ƌR %rN)?hLE)_k\,Lu-> W kRW]oVdotpX+p : h^ ;8uퟕG*˗4Pad.\E`ua#*# y[y3 g5*id,Z7_yPvwQGX= `<K̆TvkeW|},ŞbL`]bwR72,GS4!PC E#1nW;~9?_}Q{A_y<~m\<床iNhs%pBHcԋ"k,#$QoU'+Fwn_#;./ 几G'B.\>8_n_6!ϰw6$mH53P;.vjØQ+%-ѐcqT ҭń젝G~<۞A׸&*-%v'Ѧԝc61%&{X3x.VOps㯨i\ Yot^'": sJkeoyb_sɗ[Evw~~HM.;u%_9r&yREyyt)(=ϵ^vi79+ygh7/? 63ٌLyuv_ :]ɎǬb&,M!4ņh=[M0ͬBkD!qZ7;heye ǧ1?ڽܒx)6 gǶxxCaj5';#E,&+UyDbqE(XAl#֐ (_ZA;'ntܩmt:ϱ}~uP]dTvɇL9x>~a&os8kꗇW5cPt#2&G/JoĂOiu7Rzft&(aD8,z/}GEWcȎ8([D?u;Eu)]vƽߊ#lìS=A}6]mƞL\AS~)"э\C$kY}P)ZX5FuD vQ|foU1Y1 Y@qW,q5{Z+NXuP$6#'*,\S-.gV ՏhiNG/;ѽ8TS(Ds^r2Z[ t4A[✊8ҩ8qGqF\(&s2n Fj 9Ҕ9F1"o*I`kMkLV` M&brH<`_FO쬽?]ҁRi$H3EEP P0҉_e9r S߸4#L1 #L7"'ƓbbRñiZTE'o5=ʨtr6~QqP&Wq0,-gkЀho@슣Dx+~mqXs˸$jwjmgJgVї.2ڑG7|>,դglpc.uw_1-):ܷG1_叕3€1YuQkcJzri`]6W,CWm/G?ǯ2 Z2 :GQm*w"TA:n)-YqZ~ĸP7"q?k}yU:;hs~k0脳(@K9F?hϪ@j@JkHGʿ_?{!w mPql_\Uj)j!xV܈yȱx<@N*Vre?_x:Rd_#Y>lY7{BPngBI왵Drc=qwvob܁C? AĿEC퉖~%\}x8$" {B<+a;~0-;Q+Q0vIZT/hAU1ď!\bEP?޶ir޾8GmBMPJ?B&%F~Fg|boboV~l%)Jސ\rbf& 1ȓ)l&v\ Ymy=#7Ǔ x&N#8='|`,"V{3u `a!{U߮8VSjQqU"!6VMjlV;L#_b肹{M:v>3y(}hFx/ZQښK)o0;+-ork #ADhwQgqʷƞ+#cqfM#MlwKt2vl@lsɦZto}8ܧT̢?h%xʯGsb/QWbE(ftb`y0\֚sڙT=TRHT$X3\k֊6P>>c&j'vh3$H;b|4Nҫpod:Ff81~f:LqNF<&!I1άwS2Ss*c:E2~X6UK3/뢀ҵޱqll]ItmQ7Swh ^Jm15~k#hb7%BiMi{EEQڨw]cK_+הhsB[ۈKuϵ 6dDođN)-2k5m9y@sK->+n"g.dcjem*VFSr F',< c|Cc1[f3>&>?oL>-BseIHH%n3.?!_120|<Xm&?Q^ 2hܤ-V)G?2H|h_ᰜ7h$]ES(LR(l$ 3kh├NhK܊r}:Zhv&-F\>[A~]tܸëp/)o膇be"b5L숺B(6>1ԭu!~cAxdlªA.VY +лU}w?۾ Ϝ 1 Z i;\_qܭ84vYwcğs'$sKćXGt{!ybf`bldKwuVӮ1x#*l5yPݱKv1ئh|LWL">( /_ p!`{nG֨M6ڄTXJ6,VCMQ^<@6%;S'r8. }ʽ'@ڗyV.r !(?:cuqM>S:scCw8NqL&6"L阨(+&^PC|ObXkq_A\VcRO̊D^z32~N},Y>uS긿hRW5*'(۾`_w3-ĕ_ gAoK? "v-ܛks&{shJC9oASZu^R5lRn@X?| ٸ JޙS56es2,㼬evrkN1drZ.RA/MOʹFJκ+#aN! yYx6 tbryW`^J4qyk\?#Ǟ7 1x.«xxx/F5|/{kT]XL̏E/bD 0(+`ZQ3,s`nE(XH!(G) VTU~Gd캊uCĻNj6,Umpc{ήb sLS>ۚ!+&hLq8Jiե|=QKO:G8qb(6N57N<W*Qy/%Eobm~N628.".FhtƥQ$(ZR<݈fT hFm=Xk/O޹+q@L+˩u.`}3’ nevb> V8՝FO4+蠅6Xm]E0dNJ؊D_ԴsN'PS؇8]#S{NC VӴhqCD4lr9 ,Ml J?p'7)D,3/5yjE+0=bE#G8i)qv׷t^l4c1=&ocDsC)- .PbN4yfM4gi땿_^WVΚ\߰׿['n;)Oq yA@1ԕZ߮9BꯨsSݻ_uϡٍ^oCZh~]4z.T.-s^>Lfn+1sa0. Nlmț9yd㘮9%F Xԟ307%SuJO)8Ɩ|klXnkZ[B~hhy4@Yx9VwګY峎gΞޔ,6I8|bv&}[̉rhM|%r9CLq'pW\.w# q0ȡ׳!8;Nsn51Ir6O/qC)/ӄ<%$Zvj-ZFVڣ$쟷ױ"#~ FB^HNo]M8 aw+qATSRwZTEV3r/MTEZQ#ԯ85*jvWV; <.pgB܆͹9c}+,BRfD|ů>;12"``\N.Z-&rkymb;%[,_R + ',<$ɭdQN`b-0‡m8N/pZo)1UDWWDXA+q\~Z1wϟ9s;iN:8ďJbhB.&bS ebn*nba!U$b̧8(sq1J1pm>>䡏2j&0)#泶>(=J3s)=PAHP""zF J ?3 ;/n-7JGC跺 K;k_%kGiy-vٔzhItU&:hDԑ8~\GCb|:@l7 褻]3}tН衵N誅dlmZC-)ߥfD4FCu4zjj Sc|q.>X`WԩP~v;^i܈EJA^DžVisrȅ%X pEąoZyL<>*Z WsZXDβRL7"L4LP(F(Kj+|VL>5lqeZphP_4Ҕ8"v2[Ut'krB݊piE lb)Qtpft!Vwb4WQ7:Smp<2N,,1@&hL<苞|MiQiQx]|]ԿL+8~zո% ܁-ډ\st{@,4LQ7 |ՙX>91o˟Q{vFav3^Jwni.Ҋ[s:iN1b9\eG/U9KXRl%slb?ZϺ5XAWE1JS3D|L' 5TPT i˹aXaCdH3rFgŊetř2.9(Qff8 w1 7|/ぼM R#y.q mMt9q|ܒ"ͻ(ciXi|=41-/ 5\qXCi5gkMșyāZCNV @X&Y;d= uMS&|ӈlsu5uu4C_xiNrأF+&yolF3O(ߌb厱%c7c2U58䘚Wt͕`KϠF@7׭rOǯW[_l(8|Q&٢An+:z~ jVF$(FZQk-ZeBfCn\cZscGxű֟v?|^CM(]=bv(zM51f`Z_%1XUc,lџBlF3пVeFs LBQ3L4|۠G6w, _s%jF:ͩىY&O-79Q~<rc}\bʭɟSH$%7R^HJyyn伬mv|<7υ&WNch4{/?>1>6LˊBJؓυR#M4A OhjCt1 @];vsyLfsoʳ a 7 y1bo׈%@^-Ilŧ_Ӊx=%}-";1Klq'^1֫zO?VcD{L'_b13G0R&WĄ`b! YzbR3TYv}[ ꚽ|6ec݉p쓦>Ő6g:k3f#LfdXEb5ѐXՔ"jyxt0U {?3haWl"|;KhF6/cw+cO-zR3̳P$!zE#cClq:N!kqVT=c>q*hRK+ݢkAjZGgro-u@͵潔"-5LkBN,7@>5Oq"["t# jlbh3ڪc?[\`U %kB'e3Ib\oz>|^En2Yp%7[jY0B}0[;}0BK=8gi)(b`> ߶'\L8˅``+3-.`nbqkv[QUWWc=t+GԵMZ8%įCI^wzJW#ޥ CsObB 1Mqc Ytat鿜Ԑ٣v?e~FKڪZl$a-j],R;aiýB,E> fU\LLȪ֯8g n0Ms:>b^ۿ3&'?dܐP/VXn r6|8=生"Gz #06k9|L,|Mz:;rBk-UݰR6JI#=#B]}}MaM6̩8/Pӌ#rr.0*j98O)y''oɛ6Ꚙð_i1v7iXWiQd{ha2톪8.fEX'%iY'a&GU(n3雫55'f&la yfZ(tdlVHEٍ|+xFKW;' t샦cXcb^Ta[dcoEX[(w<"?"ť֜85K( M*AIuϠ ~gп긿*0W0tq*C`?jTk惠~ZD}ZѦ9o`k#yV+_q@ԎF8̟c~cm$3,>pĮzvA8Ny&Qe/WZjd3:UhX|P0z:TL&"w'_}E 뫝F(20׬ d>Y GscGDNFo&JH+ (_S 9ا@m]sa䏴B# 8+_@"Qk.V[VVYVXK.UK-wZb˲[fe s,w9GK0;e[@mS~A5+Hr9Y(?HLn/g w rNoѿ_[ki y8oL9'Xf \g>܃FF[y9R3p 9|$?O)w==%\hpAj:Ǹg0eC>NDM^&(r$l0)GcڢKM ?0hn0[Q+i؜/ |5׀29 /Yc1dcp97/$۞/1_Exw⫹$D> IaGvF].G|A!>KDGG69d{ٟ<:gkũuJ싍jG_>6Qe֌P{DUU7?~{vbByo mtLt]EEU/ FaEE?B^\o*XT@>EߎϠ,_xi\ZY@:ؖ/(Rѕ۵^.s*hfo^L1;_u [Q;z!F?>:ax$V/V\iGߌ7_싿Uv׈[+=8hhQ|hOFjVnUJQEȕ/;_ @(ʫ fl,` rw|Cbq%>o\tI?{ dg{ TP~INgr`N\K'94A3쩦 ؈&{Rt[@β"aʻ뽽jVp+IRO}3@AMm&䭕j܋{m&ꈝz%vB ĬyAGCE;%G6ǩi6jZk(K3&5$=_bV7&ʝ7")v%ĵyQĽj+x(VX`J܈:+${>j؇x5q]wE=⣸7S2S W_/ uɛ{!{fTBU@mSpj@Ivxn~:>űLt&GD];f}&w_p̌2fR1Ɉ6~(.Yyl?<|61)xs)G[CbhA*o$k#:'%w`8^ĉKLt|7DžQ)U]AĎhJlrf ĩuo.D{haKGcOT9W 7'KO~=Vh'5(P~L3Mgbc'bN/ZVG}458a;Ѥ\kE&ǿS,*B W޺xOT|XXtP7`K6[̅ؤ]M،I6*a}W"\.6XvX]Q#NȝQjjyEЧVco%0..b*oUT<:WtR0Y$E}%ݡUG%5=i:آ9qpGu{5ۈqb2V^1I4C6kIlO"NqddܞҐ~}'.{`3JҨ9މTlŻqw#毆ᚸ,z!;#0*:tə%yN>v}/6eW333s%9m|#M2^Fmv8gsd;v[(Z~t6V5DmK'`[-f1a^%17_"މ-F4i02ӱ(o&|Λϕ8\/_ژ]ǠA*ۆzFڌ7ǩy,68+պe;8*[aA̡M[P'ocXl%Xk\Y <'sM}15%xͭg xr;MsL,0&!;c'hDi~/ Hi,7 t +wLjtt*'Q@MTbt!:XKҬG{œ%: [{[T ΢Nރsͧx8(.ٱkl<)F'(#"bx7FqN,Uo):}I#*XпC |ޕu[WW ;=e?|P=P 'i6;Un׽sp:y%䛅S 3Ûsya֋|%!o!"ޏcE*Gphlm2EsV.܋2/x1h3<8/hmj:NAT?W:jVFjT 9 .Ϣ/;jknFS| W~3M7p#vTpc@GN+[$233Qo7K!* ѐ' fkn6G][6O܏|, =bJu†}|U-F¢* ÎPm_oV*1&CO֯X߲2.e^ȇ q(ϴ|-)ߒdm_/W^yMщ)'?]ϱVu+!gT:a!gK#Bvh>=suzsrx+|E*YVZ[ŶڄCSQcjTlZU YYkWꡑBAmLޭD|P+F!t$O^Ws]|F/Peݰ"k"˸ŔٚcɓsQMGK8(18p.j/}b qV$n̋m]/W QϣmĽxȔ7X؁q}71xފ+b>qs 1 &VzhJ^jb("O!ķ1/шC J8c!,7i ӟb;;Oi?jrsf՜u֣TΪҙ"| 渂X'[)DԌ+YwαS܈_7Jž!G g99&XCij\_U&2>1^Oy><8#t<8r\ Lw(q^ڼO~8,>x?Zk80I)VXfb7ݵ˥3z7v6`FG5N1ъ(exXW@~U=ڊNCMbPz|3FŁyt 9Xo!ƵmHr[68fCl (RSԳzsV)fWd;0,%Q ZW\U֪PHoځZ'W ۥM Coa`ނsH~}NzB @ ;H""* bAK{H=!{}1Xge߻5y]Wha}ȞY'Iv͑RdOL;!'pR<,,>=MōZG>s.Ǔ竞…j== q8< ,Wb#39y!yDLF x9!S;w<:6-FY(aԙmQmS➘XAV}Px%_5xΤXfZkN 1VKsJʎfo4!܎4(xt Ґ/j&Qk0 "KnJ#_,v('Km#,VVWT![ϖKV,g{9Ws$s0 B%FĶqllQq'c@MM"D5%Ecݠnd5puOl Z☘-f*ZWa1(~/>_Xp9qb+'XGVqAWRP;MTS^(l kVbjN7MB#e7/wUvN'wey^^"ȻpNYPu<'ؕ{oJmbvUI4"疁)8뎱yi~Ow<|Gma}o-bK-?{q P͵XU%# ڢJ9Tʻ+j5>BFh?ժ%wVhh_*w.DN:FO-2>`h{w[S(])1Xcc,A|@^ni>M֚8y%y?1&"yfOpx.^vŎVgȘ牞%*ŭK&& %~'.&54;y'~+sf2…-؆}orN{TGX,*hBCv lZelcΊ]b3}$o3R0zZA M=FX/~ݵ5:ȏ0bV06Eyj" jEmeKM9Q)ESD-LV ܹG+XN0%SٻW[l-y6%**⻚XZl밑Q)&BᚡV#18-lKLz0\nOǯtp;v1*~CqsL͉gqe./vZ3'ʡ,>nyV`L<*qa|-=1|Uў<+d7F_̶cH[btMi/YbgbFhZfq>!y/_%G cne>Cm(x`ʸY;O&oߦ۴>cjTbw3ȳҸ5͓qcKL-R{ϋ{Kȕ7zPrR-'Q TluJ|z;țr{3Ķ9!.%8w!vGMs1F{9ǒ'x.O OIO\9O&Z[W5FC%Wz(¼?w8=⃼hLpC<7%\ Nkr [ }k6gtk&H1N|D\B^%ݕ{[3up!տWolC ѐCr!n9 [Q+VhE>NV; 4{W3 6Ĉ5Tv-*0I;N*˯Zrɒhb#&-$*1>Sxx8^pA}ޘ'XhfBF[#݂:jmS[)Zk (ax&w1/N"?̅y Y'-WsM6ڬ:>PyuTVi'B58f T:UǶD#lI3=襉MZڈb.bi/F'6݈Qg|x*gF}N9|-CKѾobjL"M&hI.*Fskńy96%W)hSUP_Lbɇb<ȝҬɚl/i Z`hnOnhd;c $;y{CS2vHCc؁8 1^lkcme%s<[=bq7'̈Ε_Q+cj1N6сi,T?02OG')Z=y,#'!ƒoZgӖv䱚 [Ye0&b},5G[nWluy"Ğ112SUınˈolA|?z"6ꃚx- Ӣ}ᦦvJ9u}Ə5{"y{usvD[mhM֞&Z# `b ~ދч8+Z"btcJ,%V31x>6k]1^*`Ī#ThuAs qAx:,VaWr)m /D5@>d8U%^~R霜 Q= 4_ PN¨G?4ٛu#{܁@6"Q=GofM^Gɢ}l`rh#jZ#DaT Kɥ[*k`MY6YA/XY|)זkKRz]zz lҟ!Q ZPYYJТx[@%訓x[WWd@^>yʰ6ʍ0+Fh9j!-$vRg2Ձ|ٻj/y.=}k~!Σb=<2R[G3FQ5||wD8Ƚ1M|8)I'A\h⛱yWxʮcT&Si%-[BI8X B18x|vht`Nl/'[y3SʕA3>?:?`i`n >|ZS]hXSY*ߤ.;DMt`#6/Ml\6juz;;2w3&衉.DbAN :]m;-uF;-|C ZkT[y;+J|I9P&OHyD1>ǹe CIVQvD{uU`6% y|[}86̤2^쇖xl쩖YF@;6 mb8c88Έ1(*U=RwF^< /ޅף[\18㕑qCtNcyw+K=cRQ$ZD#;cbQTMTOft![D7[YӛB-)#Дf1Sr 4'Lex:Gc(;\E|+W_?ςIB:K6 *[)KMŮ {/pt#y:>scJ#Os">̟ Sb /&>Oͧ|w|'e>C~fKcN)co6oϓ+D?XbL$ǻ<=;P>{*U6O*uN*vxu g 8|*+ۘMt0t<$|ρ%;H@bx(;zr{Szho斺{q^[.47*$vY$/6fKA;yo4.kgbov=_0Z:ܸOzm a[_p&? -^XȻ 7[l!1+௮88R>ݍ1cA1G?>[7d<㯮k֫o.KK2#ѿYE/D~_5rpyRYCw Q*_/K+j[yhYtvP٩n-+ƳbKfܨ>l#]1XaXy%Pݩ8Kȇ066#nih%hZjt.:yZ>%PAD d|$ qWUepY)[dY Ux#'jd .esݺܖSMZ?:@{M_W"\J%YZBN2\|;'> 4Sګ!3rM^ߙA~!@cugGTg-,$Voh]Ies"[EzXP;ueྮ ܫȆRj TKU(/_+7 \9P]T~A% PY&j5CҝVK-Т_V+rmI<]u3=zBwPA% f 71BLaV(Z=Kc^Zf/GƞyjL&1?mcFWb~ֶĈx=MY܎3b>f/DDM4|}❘e<_ի|^U\D@Lå3< *jT˱ \-he1ut=ywu9p\l\NgՁޛ;Xh_b9˞]ҝM,p6_XyKa.K~֬fck S]+>i!o4.wvn?Cbx8z帜CmsXCTb~4'rv<~6o([bjlB>SrK AY]C&VRB(:Eomt~Dw&@XG`sNj @v-Z \Fcȱ51۬#(!wg]:Kty=99=윢?lBs\k>TO.7-BuW8ZܱՇv;:!">r6yP r!X싱 917CA/2 K!DX[#e]-K2_AzZk fZ,Y?-]z6} UU|NЬj5!BSV-5%oԦ%lZiנ]ި DnGԍ]/EA< ƆEgLa1Jc2Ts{hy =-IDATإ8mo&#-ž̇c̾dg=-s-L;vwfY}ùMoߪ^6MPcc*+8ֱ'3FXSl5V1tb Cc$;cV,/fJlƅvlӢ#Ӗ.<0b ! %@[CFžXި>hhtA3ZiDX!t0:4эm?nnaĶ؜_q|k6nvL|90XƞpOOu\P U=*P]Aq~]E5dmyCޞ낧_x$Y}ew+ۓ?EQK.E!ٕ{^cTϊ'*ߠNG; hFZg/e^].%kvl!4_֍3k~Ǥnn=nkW7շʵ+:tag7Nmr_ۘMn畜Md@Τ6gцiڨLġM:Z'%>6լ]xo`[hܼ7͉T/Ɂ9j;o$狹 ՋsqOP,cM R~H:G{?_$Vc9ySއcJ?f-,7cl wkt&d8 Ы:KvoVŗ/u#GWssKܴWVt~͉Fխl?[EcFKM{]{ͩ}$nUlhfBx Z}_/-2Թ^[_2knq !X`QR`k] ѼGb}F9|WyƺE\jh|qF~m*v9q{"H|+ѓo;wPy($~ ;vS9Zb\lj;9X QyuYVjh)7&Oo#>ߟ@л ,b]|=r/'6ΫȳU0rI_V_;gArnvͷ!m䡹1ϱfnY#[^ąeĻq@I{1=ch"@,Xpע|?>o05h }DC cLwba< q;q_hS?;"ZG1_`5/7ו2"WeCsxfx[8|2oǺ,\K\T'K;ٓ<9/e@fzHv""u %[PU^CrMp9Ǘahih (9mz{2A70%T!_!e bi֖rYW.n(A(?N֪WU*KjiWv`kV5J&Zzʹ* gkyz{/Dɺ]Ⱥ;zA}r/Gt1@rAa`F s#G&ƪh̶Ls<3Sf?a7b4'ooGlg4fF,~x׎ʮњ8&V_˽-6]=M݉ݭ˩}1I`Ĝ8bG_ _2cZ;*;c~<<sMbOs ]xXpo ID'Q(^VL)Jy× !mOڴa.4|or=V! _z%a0օ]]ςK朻0f `7Zˮ_u{i_b`Tyۨk^>sf1;`iY@@jQ/FP#}aYWk5#9(НA\7z;ѓk^Yz}uv3TF{FP8O :iW*UTg$%ވَhF'b+cS#/ďPٷ ѕǩ.5o f$-u0m3iegew1ureWWxRCT>zMS91nu|/ém'TZۙ4mxƗ.:=&J)f& eÄ<ƃ7^S5;eVk4`]崶o,4VUYjsEq|$+2WqyVYYX qd1#A/+[n>|&Pm5#{̉%ɿyvv'f랗 ѣ:Ev{_6U6&hG+MEʦDKE_^ΤMMѦwZ--j=ظEtv킶Z":Դot}UktBe8~`[K^sm`Nz 9 R'l\`n/q-EIBJFLǶIQ5TıT'+ns0,ט㈀DhMmΌf=IVd1ۨ"ݢrcy\EXSZ-+K-`Rnu)vѿ.uPY l70}r7l(QG)f5+@R ])#gO+n16_E:*\,D80&cc%ѧ819ZeE_? X*xaz.N#8b|U舕1BǼ fnPs>?Uͣ__W2yW*,4`ySM6׼<T/Kr]r65lC)s!'T[ANz[f/,/qa5[!Í h^Ī8%N'NtwGJ=>f9ز T̢]~BDClc!13VOLLqw&މ}ձRS+;:j-1Ye@ FݜN"Z^Qa_"\x| -3i43s'9"_y>?3!_wlNޝ?i9 g=ۺ-^ɕ݇SmNΧڽ.$m5hG]?Yd_v k ܤ%D3<Z%eJXW~۠1P(2%0S@56 UYH(sM޵Q))=lRMkYAZRc@T*Ġ u^=::yptQ魗_]]_}0r9s oua>kc4 ]NĨtکY7=?_aVRKz1O@l}YyWwf5-}O/s+X+vZ3lV,EÊWo8VjUYךVaN[q>:oˬkfw1lfEf; 1j(r"FfŻH?5SINhm1(&*bQGK}4'+$mC؂{nd{Ĩhb|W1%P9E؞i[c3+W dS<"7&}~;cc_ҕoq6 Aؖ cjtz{/+P=ɟrTK:k_1Ϭ0n)mʚL @5(z "[ Amc"LhbN?hSf&WOןsճNS~`15EsCCCbj-ķx8<~Pitck#Yb [5ⶫxԸv;W#ɫѸcbɿc V'cIvK܇3ba DTbbES=)Ja {L=sZ-oў|яke\lGvc9yMTts.cD]U̢AۖA9"`EI_ni? 7O(2֫׋LwC[Uɥ l nX hدO~d{Xje]qK)0ê)D5'hc/M&WqﱇɘG)x8x,WpdOs9-cvx?;&~q%~CCt,[LB' rbeV1_gIѦԲiz1&hT2?ǯ.OGh Y-!fn:2DOz[FGO@~ӢVB 7 <:3[j=MY!%א-sN6"t>˨QbZb6wgn#n9'8qԙF+nk!'?~qh"TXBtc!̲7/DZلXqˈ/Ĉ{XCqqgP[~5P?]?Ǜh = Z>E^dSsl>N'|[Tk#Xp=XeV_T*(S)G201L1ϭ.5dzQS55.iפt,h`_SJ WmIj^(^-Ւ)Z:ߢ]Nڡ3H[֠x% mOR}s 1ZR]L:6!/0_vjKj+&&{(ܓ'd,0q@ml .5<(w"TD8o|BcZ軨Éq`Lv@CGIwbCLND-pj 0ZB f(PE8aĎ}jkYxʐ}_E@ +ފ}/bJ=_skEG\nTv%x@&Nlܸ^!|I6a{§ֶY,{KgdG.2ˮ_nyo[åwxΊn˦Қ+V=2ݵzX;cCv$40Oʍ%QNwfc 3ɱ{9PQyXx#f--Ӊ1TN=[b4&wE]Y;_Tr#r*]ʄ]F٤~8fs-pl\];RC+C8Zgz$FRj|-qB|Q\;/j;`II6~7dH7ZO"Y_ H%6(jlk `-9 n6uֶ3 _`78i'6:[fkp\wy89Qې[E]e֐tC!v?ne @+J1@E# bża]Q,sf{qR| /s"6$cחqƿ+ rH!Go 6[0YT16o”~&ֹ \76)6H;Ǐ\bbWbH<͢S"ǎP)UWy^1nXce4'zǬXKzL'fŃ'5w//Cj| Gjo43l41 SotQI V?9xOx /J5h巖_M?"rt֓sCܕsI.&[Pkhi4-z .zիEe-^P=Z<)$;>[)¾䦶kp~^v<| iGoJcNiװ z`=ſZg oWCu E w`W%bo:T?&{>DX{Gazlm;xv9qx#n>qM}y=*,XG!S&#2֯\+ؕصZbwEp Tcl Rbs,*FS⁒a0 [G'b~dI eF[8$h4{˱u:gFUѝ{L\߉dFeOo*oPw lf#xzV~xU L֔%ye<V٩|} *D<|2lMʚ&Qd/P9ͨ]F+0Iݷ_z;ܮrE_s&eb\nasmߎnޘķ寵__%nXx?kq2(Lz-՛&oLu3bA w&G;`عmѶ|nG.7 NE6 ŽˀGgMSrOḍfWzb\\C^FOjI>;b_}1xawsQY4ԍ&~C)@<`⮴2Wb%15sU+0x>h6DY{i^ŒuF5jC EQ%ǤXDLjCO[ī.q׈ZY\c'`gJMLĒ>/mڕ~-vnھdK9 0 'krCԖ<%6s=\|SK>61v 7̤7d?XC}gT??.%_1:, W؜(b FX  XP2֕Z5eiA/nfj>WF6-Roe]f Kf%u^%Zk-T'vǞ;\| ј{+D"؆R>trn9lgwk~Tj}=\y[=z*jv9a_ច ׍+_C㨻zF,*2 JwcQ&+d7V:Q}RxؽⰲB߳…7*K_*Eɋu~XW܂Qgœce9".]Rl nC? uϲkXS?on@߿Y &- J&z,ׯ\1~5*Ѽ&6rnݟԹY ̟WRh܂YqFFƦnXTQ:R4/x҄.y?;3u<^仮,]۠`pj&x< OuMY$4rwR'sKtgf!7_n{%Vs!_ϫ [pYdsȷl=q6Λ(9E,bvJ'7qn z! ǣћ%Mb<ӟFцˢ)^fbbb"Ĥxx%nX2uȭѱ-׌nz߶GF_4PܗYa9L pjk:Z9XbG{Oi/<1vS0ݬ7Ȼrj9#{%`N.xy_ȉvaTB.9Y:N\Gv'y!w';م&Rvp6}/[6x7'n*Kr9[8zq1 ?4P҂Rf,y%\[Q4G}8 Ҩ@j,GӏkФ M=JYzШ(=[Jw&%լڼjQ6AhІhhv?B-Ft»:NdwlF7nK3WJ}-#kk6fh-u1/Zb, $B~YӼ7²EnA1z:y3C>Īc韸3fX٢VhllMōy[l= сkr qW4'wb|'z{ sCG^ttŵUKu*`ڽ""LL#O# g +o)&Y j2yf`Kc.%+_x;5jW߽b&^ɇ^.eC x| f1xœgcOoůJ1|RS1_բ(zh[yF_|^ZqpYK/u{xi\'hScur\U$0XSQ!= _7_neEj . *+,ET7}Dq/3-2t|R*U߿ 7,AW'>Yb @I[†b.ZPkbQșF.o gWǶ*7:"^L=mqbptx73a߿e? ?"n%:+*U5˘GE]T^QÚv?`|R +OAOXW750l -[E-ଜ3n|?N!1:K]F,zrrq)[1,<|rh᪙ˊmqL3kvprs}#pQ=f6lKl9X&x O\QQB ǿ by Ƃ@tIX/zSby&Fҋc5^\;{l+񺿹OA7AQV!`א^bUCK0-S*33L]M6ysM-ȺT'd}%S א-__m}ƞWSmL.))d roo9)M>"1{Sv&4"+r;s Jtsquu`%zu>|dɁOʵZ慄ɿ lX [Az_W0W0>40 dAQrPh ,*5끁҂BFv|(? 5A(qgirҨt5hȆB;5W4G.WW-AK-keM[D6EGCRK# Qt uzD,3{bZVibzP;1USȫfY k1<Ab06ldĂ5O%P+F- 䦆11 H4Q&b[">F,>7bs|;vc5w3vhl@#>:hC"QcA` V7`Ix?FPt0`2P4+c^0*(1Zf*bBTqr=+#cSrpyCXW(O),R$ "&=>"%)Οr} @6Ol47Ȫ%kК5s/ľK~ Y"0=zRE߲G4,%wh͡6Ҥэ~1I`MI]W+ HR|~dMƻ` `Ei[Sj4&hY<)ڗe&M 4/) F%d>:qM}G=xvi>͆ת2h';msO7]ԑɃMGyW=.)yTǓR}$JTP}PSG<>dS7e'^g-y y vx+:OxCw<kގx>$vgjPͷʉDY~ PmLr\NTL, | /SٽE`S]m.Tމyp>`t|7Fk͎Nx(K*7-8A~} =L)Oۣh"<gWn%l\Ys,"+~lMcyyL,)-0=c?\߱ fqegGpo^\ۃ9ꒉ,Y>ݶ70aP2# q>6X@-M$`C&ZǩM7%t+\K6*ʦ%&?YVj:<X<=b~ $zQ61c%);-1^0i ^͗eL0QZ$76/bMhRhP7|ﶂW I)剠wAa˔g.]Cޓ,m!{h`1c8b-ˢs"ZhcY0k. w܅hfAD+1!f= &yƏqD2u ?+7,g? >l| E@ Rxe):| #k3 g1[-JcZ>H`}L@[OE+Hi(i\WM\ަ)]hfhe4GK2: öiC^j!Oǔ:a:`])~3]OEa l>&iSFY?Yn|S?x:k>ϳ∍ek駯|0{m3nԞѻ&\myz-nYx t#Hз xLу@= 3:i@Go~@++lJv݋\ 2^W1{l g3a641tp&1N~ @gP*#Z)7I&m*ƒ%dpzI=@F3AoRk]}HS ]$qt.>݁tL74B-Aq{~.^+);ڻGk7XLJξO<˻G8cXbKe{ ylF[F=rFW-n 35|>خ-(>0luТf=s ]޹7co9%tPHidX_jL `|+`WzN-c"^v@*td8TR_ 01 @O[2k}5Z4PM [\~܃sH h7bNLg#8կ,u]pP 4rv0'A72LLr!N Gӏ@>: I M,h\q<`$- Y, dT /=H*y\`OtpuxKpG?T)5 H@/^h*uFJXJ68xެtccM:]G"jd_ڠ# .Q&P1G9`8]AIM࿧h hphw߀cT7g3 "Bj6@U8nm׫#Uk ؀?[Јybs w f>'Vf4 p A$n="f,c _u4'74$^m`r}pwH#leiS$}J !+B'"̒,f;L@&9&~C&Й.Y1{.R*n\݁R<'TE4ɧXA6I|gAM=ePD+@z8z/MlЏzH[ߤ7{" | G: h$@&Owv\;<2IAO<`%$ $L"=.@詻JxS@}>Y=)@/ uzk+A҃@ A7M6)S d2<#W|<&d&w`7xL908@jzeűl[iЋV1R\ΔqB0UZhگ4r[oN#Pc3~3Z.Jm}>V=82F/ nqQ҂c&@πX 0nwZd'i&E2ߝ)pe_p6RrGdo`&5R"(qp+I|'p83AH]YZ`;w:3IէBbn" -/.xCc`W U V-ֱX( I9='@7؂J7.[u,~|@sڮy)@{};u djg4q$0Bp ]Anr£T!$I$>>4IR+3X" #P6,$ XJ ^^@>9tpI6Un$j#;HwԂce 8 ҥ@ <,.e`gfh>'5Li1@;M*0ak} Vv I3\WJvx= tNb`?`Lz>@j@'t 2*jԧ/ vZy{`kFwؒ尥AGa *-:@_[hƉFk8p)} mE(80-+A(3m3h^Yr[pA%t  0=MM2A1 зMtO>D:I8 K)t"X I 7Yz2PpL,ҁt@6=X2Lҍ3ٸl Es%DtӅ nd]F*+@OН6ʀYҝ |;:F 'RF>LW ąrKClEr< !rDV$htJW<V[,N<i!PL>yz=l`5t>T&*J2 i r:JUC2$_.$d1wsA?mrHN_`h>滺7qUO}Dȇl`*P /%|'"J@Xy!ξ.[ˬL2ոLeP3ʺ\}FM(rg[U&Ǻ=sۮe,}Q2(It@ĉըˠ5Xlɭ%ЪpȲ{L+$WS Vu ||cki|Nt m9^"~'^x=8m?w,ky@{z{.>Fsr~u+@6z*R֥l8 R}\] H.({I;kg0ʁdRK3Ul&Xf2@t3BJ)P6@źJ ]^C! 63H PfZN-3!Iqz)oy[@Ҡɲ7 gle=SA @6y/x~VtÝBh>[fʁ'k#dAAj4]~wɯD"Hϑ pćKF`Sc!bF9o4-aѿAo ծӐ_diˌ~΃-1[c $f腨[@t` 7nؼ0+-;E zNu΄>-nE{vr//I<-?KY+P$N(iw+~ sY)c.aR: E'~[&fDj2"w7j7-J*pnUr 0LZq"W?z4N/;#1N`E9Nv/H:b ) ) i %Ad*EU?8 H)HPb ic#yy7\#gLb(Xi/]d4 x SMg 4Kw/cwo*~0'פ3X,R_Aw4Ep]gMmX3t/R@u4T0:k~^̈́:ؙ}j ڛt}IK H KlP+%,~H[P#-:I6@L|-p鑟&g [[ D9>h`-3>@{߭w/P 1 Z+5h3-k]f1,v*$,G;wa`/`LO 6HHߙ+t'rgm#ćT-AoeH$H =n2XHg$X+]32 N\ҁNz6t"gۘđA&N3'PM:LTb3iv٤Hו@dYI&Љ ,Mį VҋN@[OOe dQfXJgr^+i>8!4rOW $^20M_gS^ = _e { Y IAy9;hm*n C@cAN#TIqꇹWz\`˶Oq&y z2?~"I<1I<;)e"epĩYgx}Q̇l oy K\FSMذ]semʂqZo:h5ҙrte.α;tQSm889mp.za+yMrt9B}AlKZ*1L YɣR7{iC_g\cMqhǠ/P@SxHe Z @>@>Mh9y@Y:(gyU0[7P 4xM 387J]4RI0 6TBTp 0j%qT(r f WCd}d(/DkHWzͮ$ 앏r?=88 @Vzkzm:@@*` f?_6I4412kJhx @F`_{<5E\QVhQK 0hk dCw3)ɺ>&c[[Emy7|Q PLVFϋOOۚz "LB. `m+iJf4`nz(>}D^Mr,T@ڀ3Ȕxh,nXP*h]S*t GM!#G/d=AN~b c-;"&Zn'lba-/F 0oc;m Vm8-`@ Ŕf \slf P!n)kp6_!40/ mIWS@t?UȽ@Zu}@m-7K rwf7eW{@d ||N@P7{`1Vs#~y- nNqij:[^gQy!@նm>َۧ|tRjd;nDm\s,ѱ@x[uH2 2ӨݤM dg9t;~J9HF )9_:K+(=7Ra^+~ZP {xՎl}>oc쇓xLLSHP(9d>IJ(~c0+x^txw$[` klq5@9-a?J?#!0Qć7~R-}RMusiIp)rs,ZSvim (Tz {3`ӱv# Y'(d$=}\ c(1R2ߌ{aJL lY`)Yϸ5,V1J;i :?=k J,D5CHJھL w I$K/l>d"D2$|M,o57&0g$`'PoOw)˵Axl L/N'B68'(<p.a'ws6? l\w̪;>@T4`R X}RNhҤ.}u+.קh( kh(m-cD-Pam%Mkh̻7ףLRY hJW:L - r-cF@Ә,+c_(%"6*_B~>c߃Ng3b`9Q2e@ojjJZ,ojFV#6aML,AȷGgr#@aG!+d˾ _q/oLdYgu6,d+z_66nj{1O{c` 8HZYt/_{ˁ)=gwJ/d\xsⲏyri==ދ*M,aѿ/pgGZm~b(w% ɬvkb3>#q~MFo4WFE?CA-:تvi?[|H 3ĺ։/ 㮣 @?CO nESJl |`7 d.2EA\A!(0U.؁6}bf2p? s@&Xu)A@'%N 0MÕFLjI7n0JDhg XM:Wkg3*^~󯵣_>b1zݪR$2-fZ_GNUwѽ5x^GR;MeHE/e,Ar oŎ cny W H;HLVY+U 3N所lS)9 KR2 R22G&p.e,j@wxF'4 jAK__̩M q:ZM 3T o^4nңzUF7 ب /욽۾)ah]@ VՁ :;[i(=@9D(՗AXV(Etb JךHKTUP[vd?5@A X h@0(V}1hՠ@:FZ`5"m](B h8PP^}6K"D0"}D6wl(q WwƝxd{0W"&gb@RŻZ7+NP4t{}  }jr%9Uk:d\4`"ɖ'0۵2(aqYCY :__AW:Af{#AޖjYtLB A75)}w:|y>^vRC9t9)Y 2$NnO@_]}iiv)ӍWe 0u,Q\BVZ_E@-Tf~mjêݴU\IٯK&$Xr0vgc%1T @a(O$ȍ-ȁ"cAvrw" 9vt/]@"0RA2L<xQjl/'SZ;@ZacxZ\?л@r݈!2V \L46k-$fKt?$1 ,sg>JRY@F3&KM p[_}Fub~PgaF @ZgX}Qx S&A>1' `_[mǕċRB:R^h.9iw0OCvu;H @o$ OQz/p|:sNIx2H @8)TI)_H_R.`M"c@?d5*@N #thL[ABg ^tnԁwC_~ t&4Ѝ-Nݍu`}H 4ˁO+@޺F׸6` $lZ G%[ h zהac׃D4kk(m5؀YF7B3"6=f*4|hԕRR bN{ErghpeplwqB` _7^c6Fq aCC%ai_3Õ@& 2 d{MeggS"74&t:Ivtg's@x%(ǃۺE!`/g|p {PNнedC7$eR}x0ٍ_d5Y@Q[MqvZo:?1nmm\hDÉkZA-@G831DԤ\S={w7o 7IwПe7ir{C%{$o 0x m]N ^Ac{# R d9_oi0_z \ $'{֊XOgZ'4RrUR #Zmnk]_ ߟ}&ւH ȓ6Iv"҅L(2l~d'H`W y d$JedG ǀF0#ik䃔/(o#pHѲFdw&<`Tse!nJWr2)=֙<|Mk In Eg[%?)tst;~;N. c03͞wdHMMmjLv7EWxgC¥1v!7,J`k:`{$<Ծ[W_$< } S ^~$؉8I&˼4ټ 0v$_[d H'H͠W;Avv֒L2PKwr ?]_:DoZ-`&6X1ؙCy7&K6Fc*S3q\nAu+&7C]%XBtmz)0 0t0m@c8{Hݹx_ g,fX}CJwOd 0_Y.(H0hf{h6`E\,\58@ ./:!vPk h 1® >Hr3PI;5D"N-q@W+Hb{3AnZY;l2yǀ 6|e ?\n^ r~ޫO:kݫ* 7@~0 σq8 =\E`ZY @JkK,s׈rKN+Z'+swF9&Z|o|aJkKg:c?w/ڗ`5nTLG4 }uv#kO=L$.qGekLRv8͐2,rj?֮NQ0V QMe+kdumێ޾b8-Nz4r67 ~-9[$%t̗6 d0W)+H+ [/)ۚ3<%zz׮τy r{R JƃI~ =A6#ڑLBLIs\T !5m4R PpEpMN \lu. 2,¡:*rB< =ߙq ɓK:i9-:uK:96@/0t(58B>`R\@:t::3sI3 rrs%$Qv-`1ȧ ?7G~)D_yYYE-@G7 =g, }@Yd8Z+uuGMgK*Е5YU_]5?@jZړDe@rC=ᖈhG=9Vk$:l ~?~I{O#xJ7։uB A6QBHA"O %Ȁ!]Pg[u!昶4 b]FCT6qֈ(9F4Ē(6a@\hi'+bmP'&IU IDAT0 tIaN6@sI:҃> 11xE&5@ jy[&$s o πwvz{X]͌ʞY|_%N[wD.8 2P! @ߓ%(nS̺QQ~S乨:Jh[&5}?ԀK+5ZDlzv֩p>JR|2 @:\vInzd3z+7JW`!L=Ir(~.xfc~C9"k* <@f|R@^IAo)й2&|=!IW&S!b]b/`z_oeݘKAu?i C~@Q]`k eF';9c]ve_ /4pe;e7)"J@ 9Upr49XV~iik>O/}A>@75.xF.6Io|-_'%z,q|yqlVz$}*: z{x6l!70yߚ_X  GSL#d0,cH+(r٦Ys=[_bl >ſR>E1xRwlL)AcHcj![@_zzE~`nBͻm wz&]y]ϻT_Z9YAbׁ.ճ,POu=0Nn{10~ B\ߡmGT`M rt ̙7Jռ d)# fª-÷&&|uj̲Xc'?: H۔yS,׆[>zgGc&[݇$[.-`oJKx?QBA@ZOOFkĸ(4oj1~ h -hk  4n~ɄC@XsgBDj#FZpۉ6pm3h&0sFy/p$FJ7:7<ȎLAdx Ewm3|.ɍ\ ^|OHȒtHYz#GADDe$J'TSgKoPjCM:n7^kHD}۵ھɶ竅@ѨzHITˤO@> @s9cۧ%lW|Zv&ELVI# Iå{2y Qm)9 ʁDVg:AF|c`,KR2+hh݃堻1"`RH.ON&N(p|T?h 6vub`F$#ʷsxqidJ>!UqK7 \@?Nٛ<KDe7+]@j'w/eɕ/\ <M˼ drUH7!^[ȏr{}Ȑ٦w7NSv}ѿ+i6*~XoѢ-^ŊCOL94_߯O14%n@ @s3ȵR,SK }?n4 Z4Bͥ#J&Rԉ$x;6͞\/_?ǁ~)(vv;v}7^|7fsvND\J[vF&&Y$"K$$o%7y~?@10c #@ve5k@jNG&9@̕)L Pm'Զ\5Рcvm434ݥ¥ִ):փ-# ,cQP*INCʀ 61eLtO):Cmҝ U&טk4Acs]4WA[t8h7480=\Lg4nt6i1QKxuU5ikMG~^'0"^Lyz;OcYi{j1G?؞D]?OumvH_4rkK#?HrywGn 0n a[v@Bue B} 6hmv_ )3_8<P&I ak͎l=ٕMrH3#+! /d, =ht@v|39"Ol 46<A Yᕁ,gy7L X.Y!%+N)\Y4 mnvPyFt4@-0d>E9KPϠ(:/!h. }Lۏof h0&@#n`dDJR˳ ApWKh>; 8U Ce[L+o0Yv< `nOY+,4;2iv4< ud5R ,~~c@rC45H1X'(Ѝrq6^̝KHň% !M"@3~`%,tЋXePCrxq E'J)rXd/ כ?|y,$û+7zfo{o-0OxJ7Q~tABgF|-/~2PւcdaV D{U(ײ{MO6!;㌭?!;f{@3>-HOe]I@HzG@f7&ΊD,D,bŤ#WRJMlde,f_myn;qeWH[N vz1p= K؅Jt:XB`zIГx: dOژ2L| >`ImW|2ɿt^yTq;p#\(9 8F~doΑq 0H!@ Pl %N&Sd?kkP'=^%RVFxα* ts# }Ac.\s@4c4W!YZQzh x&@hks''eܫ}HZ`Υ3h/0c(6SF g;zse5C,Db>~Yj|̇8ϽvmtStGϷ~{tx~lڟؼ6oeixFύޏxu\~ uut=omАj[_sm:#<D_,83/6o?`1@b5"ÎbHWK&nQb`k)8qV+ hŷG#_*\[̎LPHo>.L;J{AzT {|M I &Y2fWN,$@xWz- _ȃ^ p*Q 2ۻ }٨Ʒ5S63gmt\| %Lt&j0jph XSH ÙFOG%3PR,#=ߞ70LӦ S4X|_B[a^CZ~lmCxL(] (RNx#Ʒ^`xyiHSNNa pVS2U|Rg2VO$Kg(W5wL.'#Z"2w8p qF8Q4d ҏnΠ- e$B-9xPyd E:d<R2. .`-98*@>H;[\'#u^|zbdd<*<{M_{0T{VFl7xQkkʯAs ka5Lu_V[_pV*K˒sh^uOVo9Ѝa1>8.90Cx!y!2$w\&QCouz4˦v@tkg,uk30# S -To0@Lku2'G:"}L^`T t@+%ϑL]Lb/׶.?j8{d\$#)dehSt3](J'4€b"uD$29 Q˷w:I'`milK(VU8-vg | cz.OLvMDgn00QO@Y9p8 c"j݁<62 xn` ,mdH q \Z: : !Y /~Y#=@:S{t=##D?R5t| L.QݜHF8}#״Mlb=3֛VWZXjA_ ܣ)|z1\azh/zkh~=^i C׳yɠ埉\q7HЮe0Hйo:M ,# S TRE=聮Tާ5gGÈ,! lц?oAĖ_/`V Lf;mO!Ux@l^hm%R8yF_/1 =uИ^=bߺ^kh;Jި1χ_ڢbӆ%C?.~΂\niڸy-q[Y?Ύ#r>_.̉H#FGG#c3{bAQPxgU@8@5p4l}N/` I(@9Dq2@f4/_K>H?+ a r?ȹ= x݀> z7woJKyM>'(o$?,o#d|+/+x {xU0hJMؼo+/uZC&fhݷ ݢ^H4B' &>R` cmY@,+D$HtxX#`ƾ?gSe`v)i(@9tzHiDizx} 1_apC#f8Q' |F+(2`kX,b> _~>h9h+p=p- -1 _`c;M]@;S9zgz60U| $H1"zPƀDy %L zt9#iP|n͋ Kdw-~. ȿdH-sp\`r:I$1$ψ4eTP U, 6e o,~*\-ޭ‡-ZZޚF#h8g=ȨH^^:+\zhh"@b`w` qz> \h1Cz0{oh LD8[:ڿOT~竌 J;¨&I6]$Qzq0C2әd&H}@e8"E6c4`KLqu.L: ORDKsITOdzxgz~>ӣOzH)ɘ)P=?~!~@"(.;Ֆ{<~~,1U6XuHT#\,<$`%bvbՆ㌼~ | `&`i#@xmv- hCu!@A"0@#qQ [` |qo8#AHe(#d{z3 r \hxNc̐G7 )fvr|'x7^ey}SsSkg] ̗gŲ7xJeCd,;/Z2~L 3Qg_Xcl5_¢M⋓ lhdjݱT\ܶaf4YR&2;np$o9)2]]2 2Nox.Pѵj/ O{{@rR,9;͛  NZ@ۂd<77?&W` dwh( 3-9hw:)pFd:~t#7e\/]mpe6 ת;j+٩2NUc4ԙg1! K^$/=y-2>xbK+׿a4,#SI&Sz "K=7#v!T6Ixuh7s29 $2=&d$^$EtսAH21tM1DC@@t&Lbl=E"NFĶщG>\N-kQnk,f 0MSq@o4? 7? s-НuGhU %5@)yR:( @zhg4;P@H9^J H];< ʣJmrT$2^yQ# x1X'}ts. r$Cb[y1ÁN$JzJu"1bk &vOvPGhʀ4XA._sw}"t2E5z&y}ԉD͓ˡi;h莠k@Ӏ@Oz6&VՎ094ˀ.@!3;Cx)Ǒ@Xt+DRp- .@2L, KG%ͭ-) j:q8SI:(Up~X<4 #<%To4Ջ#^m1 -%6,9@I oOqjARC̆mE7 %R;$gP91;ζ#hI )DNFR bgA ̀uKT;VQ)2m6ygن\ɞ@Oُ1@,gOFi$dK'1,WweyKkp>xjn4UB`>P@71Gr LN!mQE* y![iY( !|;[gG!~?,?bԾBLXD5Yf48jT 1M0,hF)%_)ɝIOJNVo_I*q Y^:)xz=cӀi?xY;H) Y 򭔀d(#@ҙ_ٙ{62 V_;_X\`)tlB5%V$eH$hK\?$ҁ^u5@OQ ,@/KW9d/2d[v 87@#{f~O?}K@|} ywy}@~'=ʁVΛz< S\Y Fsz9K@bQ LߖtXD });k}?{bDBvag`zU@X/4/Ymrpj@ ے{k[zf&X7gmsĦ818r3\D]ojW?9~Q'4^n@eYڕ:ɒt%$;FuLA ~>`-ZiC)`D]TGB y\kj⫭R|dIHku`$H&p J YH;pH,mv>I޵NπAϤ? ޴tP@gp69~OM@ е HK 6wVcZ", ~Dڂm؆.ҳr`菻n7Ư/^@#PM%@ `:-Al58!g_Lku&Hwvs27r/ҟ d .zH:]QD? WF3d$) ]8ݹ 7ȝ,XUII%@*@>bY :S%X.O@q!WWIT8l&(aG@eYGVkBbpmmWo`3k@)Yꨘ@ŷw٠f}8B 3G0t`aP8%-H[Iˡ%FIEj@ѻyRAߥ@.f@1YZV^P$ Dpl$hO-@*kA:[\닅;1Jg[ʃh:!W2ͷ%i5Fov@[BES;Qzj5H,bjytw Oh>$O|rhCh=[o) Y8T /[/JNh~~$(YQnc A3l ~-v|͒ROp@ $km; v]WgI-pH vi״%byg>z$[d)]Ʊ̈d*>O -wsunύ"lECϵ/N$]wމK,Z=4MoiI$xvۯki D{gNy*CH@.v}:$Zd?-6 Rw@QBgGM bp)Mّj|()Xn@zRdg*{̿^9H x.HsYC*GAk#<[ R"Tby9,2xL*]Ao Rz̗n]$+Շȫ6 Z, ̩4!Z[t5ňRCpՆ'D΋Z?D 1JmMQ vdg t:D N=*ʗnOqC'm:B7 yޞBOzA5*7ç?.7F (Ge.ާo)8.dCP@ fB`u]hF?nh:c9 TR mA?OzMr L)y !dG^pӼ( {SQq @+/ x;+Vn)3[U(O-b΋߿3>/zG=9 )yeGnFklI2Qdf\3If[F-,yQ=#ye)51ξ V;IPiZ?g6, z=nB :[6c d Z{?[l/\og=Қed4 oMZH[Ok/ JO |v??,=Ɲ ؒ 'T4F+ ~~=zώw ed"MgHh$!O`F,Lj1AE19mNMfPh]bvY2|)E|YR l `p,A!o_dm--po'9_f2eK 6g lm4?0#u2]7ŀ%#dk,Џ *Խy 蜌oSQSj-UTPJ5,a /)"k(S#Wր?L? $v?o9O'٣3= ~<A''3`A#`L2 9R^Kd>T@7zӌ6pd?KU@%-` hJHFlPO0D54T`s u42ȧ\O֮D 0[hnM&`C`'7))Ge3:=vFРD;|1(e=!KH3h hn}#0M|($`ecJt4o|]b`W0Kj?%ƣ |T>[$zhG9kϯ4m:a7uzX@3'&ƵCo&?ܻ<4Ϛm $U2l!%@oPF11Tq2K@&ctn='*D\ۂwz9}e]3#G)4U[XJ1#"('.BL3Y@D;at"Lg:}I` l(&vab{~lE?@M頥_qm4Tѿ #?p=nw#ܓ. ttˁi{ Z5@(XK+:3.PQH/u62!wum^o tI$#g}w+eӏ>do)ۇLazp1wCƀFc@-L̈́uǿ .w ? ! yրru _n L ?m<%Q)64`CH(~/;o}?$L 0͇LW7g`^" ) O@ԦV(Gs +&lAn ~mm;PƀU} K>=^tНZA]i B0](ZWL7NSVB$ ٷ)FA//bƊʤ@`@#1= 4-p-@%kY`kY k/A\ \4O0˃$g?ZOӛӁsYoFٯ hQ`R# %MAtlFHZQ& -ӈB Bp`;{>?Y&ҏj/t:A|C`4 F`ysBwՔF]E& Z@v.Hx;q,%e $ڄF5 l'bR"@ @hJ @mQ8_Hΰlyo28Ր|=S`Ckl"z0a֞?/4o6@fM pw/jG`L%   𷭾n5ݸ@>utڗuM#@lC|ʈ颁v$ʋ~ Q@cRwV OѼH."ji1 ۜF l l)g<'[08trhip]/5B~5W nK ѨۯA[Ju[j}C<.7(0=W]+QwnOfW =a~w&W lGUQ{(xBbMmC_#q#_ETێ1?2pbz"QNv|kO/kQ?<Ȱ+"ef<氬Km8Wwݪ1תM3N:t qI`2;h?z_*CۥvYe:pW; CA\pxQ.ZPǘmkl`-)H& 0@٤ЉoA#xdͦ|`3F3 pe`p$PV+@qVbN8>QAw@`ɗ>&w *З'C:`Ms -s_?CzR}C"~ϰAQ}LPo NFIr ZeVfU$GE`H?cyrʷ z<|4 持g57PvGk0/FzD5=vl'0oiӫS(zM+b죬QC @S9EM{1"1(j}>ھ,*Y`ԏ0Aweb1v6@{]t0ܪawy+K_q LԓG3_>= GMN'Q{91e(ыRJX @ЈWPo88&CkifF=oE/+K3G}c(M@owb>0s,176{b]-mQ Z*YG!X TA .3xW_3rz('q"cVf%p^ l;~4uڀt%}4^ vΧa_{t3AU⒢K8Y1ݺ@ޜT2NLЖĉ| 7#tX,W7zr&]%cIFu\@B4@[J Dl lW./= %|(ߋa.V ~:`9/? p70 ؞bgjY `!e ԟ ؟ r`SF)-hGM_Wڃ^R , P Ц;!0"Ch(K1C a[vh]`߷JPu)@@Gè=yR 8a P7:M>߈Aho& $sC?7jzꭾ-I/*wvl6IMFN6o'B6ڮ@hKS{<ןq^'1^۵?{0=lѮ`u)LOhǶq{@F1Ͷq͠ɦQ{4 1UiW:9xSjP'Z ڑfu.(G[Tk?)c(S*> (HSOkm/ Xo6ut \"o܍X 0.qvm`/?Ts߬z7Hܗc4tG &~k[T^{qњ>}=~ 0/.|+xG0kU&]'m͵*nE{e,Ү#?Sy]B/> 3:>B~PeC<1 !vK7*{ 76=xftO;wSYbz/,:(ij4C?>"5_zK0GvU 0G<|Ck.E/% /)SB:mrgeG1@oW Tt [$X8 d~vQ4_M&߀MT(:FZ|>g L|lƶ76 0 t6iRh(oo%݁L&()C424r#%fliPI Մ$Gm}X'$CBcvs/Ez5H=PK'k߯< F!!,dࢠ+) Xoh/!j_t_ M&@I?>=ٟ@5{ _dbwͧh }lm d: X :KxђQ5@٨*Zy\Wj:[k4ԋy> HKJ0EzM!Fg%ԧ10!N`_SB4i}p@%5q> hBGd14݀|dC^9dH_~w뀿݁;̥b 1!ߩ6aM_AiG&#Spf5 } Pd@oXRߎb20C-8u)@J쿯K1" 7PG:=\:P |E uf( Nوmϯ#0 xHͰ=:|?ύd@\ ^@>20@vuڷ0:64 ohAhhGަp?aԞ1pRȔnwlwG%F4&~7FD@ڒRo&uwtgy;0" G"#Й_Tb8tW!h^Qg.u7/ N'u?<žnG (_oJ-j6sK}lջ//5`k^ӡ:BpVcffISmbS"eB/ 1'2t>!QtEEZA57Qe >J˨AM=g#ީj3x7foa'TvvRm4 ,z9 xv.<מ;9pi ]>$޻k!~/}`A_jk--;b/$/Z* ]@3g]rւ/r6{41@Go&1Bc5ǂnHgn7Bx, 4ھbm@ 2j0l4˖:2`k`ot-eWZ . @\oSz!4Pè6TC)*o S 0z&B.H=5 2\t#EHgB 0m` ĹT=וR#@mÿ6 NnOpe$^B[mեQ?7PK]08:`4h? DV]}QnyLϷpoD5rmJ4 %h:|&Ӥ3h`5 ~L0R`4m4~UK]YCt:c17Љl Dwf ԉ'@+tUrhArEq}A:/o;"p+ .l^ito/ws@;rjН:ڕ~nVZւt nҳ=&}ܓ-a8X7B\yN@&̱@_+4my:n Qe;z7Q~G@ߠG1`є|wkaϷ͗<Ӳƭhiw%Uw5 ~9=,omok^{C%^m\/z"RrGѿ: ,\B<nzU}|!/Рpo9kxZg7Ďf!hF]J7Y|oj4gШˠ O>mN0օnt7Q(a|$C" @1RUSׯ()% ufV[ШcJM3[gCv@¤gM u:W5،=U X&(tS\TGjk8B۠&%/yKX;nѶl`9ShZ NM`m@e@9MTޡW&IEfPM۟@=u Z\# PE##S1<,*$<@ hj(Xz*9Vƀxƚ"Ҹ! (V~> 8wa 1`) :'.I,,`$&ο ~XR`!YRbiހ PK\@}JR (xV ԡ“4Ԕ0S۠wZ.hNX;7 ReD#y"S)) I5xAj`Q|c[)|cz{j% I[Wp$y};SYyk;m` Ga< N |'Uʑ4_ AຆQosop\7Sj=T)8}% Be@E?{Z~Gެ@ǒÎfWOzwm<ޫH6O#JEpYo7JeN>]']1 ۹_7PcjPZaͯw{XKdd+?b̉rэMAF=tzG_LB֢84eS,NJ 866 =?3XtiPg0lͤWh@L!qk"tā|8AF0|Z7R֘_mj@dw,Xk Nd&MQL\Ud Rq6* l3\3MFXJ#a[zPoWW[($rZj=AEJԝP̀+:h4B 5љ@tc$? m@N18J@4WrYԨ1|hj[pw;\+_3[κbprC Է Gba;5j'>uUBZ_r3T#`&_6Hw=--Y@r} _m0C9)N6/Q}y z;ɍ8)ۚȷFY? ZQLP_[z- y!sh,jyՀ?[Y:t 8Z[g@n><n̝K3Ak'TŠ<-Ue+k%:`)Y/O415]ְXE%] YЋ>`,hmz`~{eg@zLib঩@R#_}m·wどyKpo3] *VM qVTo*=m3:z ټZZbUG1͈Bާ(noA}֔(]DrCHHDz/>|xFػim^ +Àد3}BoUWGwo z0ôgwuv=,?@o(|u3kYWp,0ҍDP4@%dag'oJ $=fEʴ5U@ 5T ŋn@ Tk,@+I:S@/#@.;ƀ|o/p?%3/?M4?|\-?p.DPZVfX%N1LRAji3_.DU`~vEܡbݠwI.L: Δ]X<`,0M4DB H7>LSRPG` MV *h̀\Bߩm~>~5M@1g E;a0yzo{3@'W qDovZԧh@"봚&MgdΠsrPW2Y*ʀb H ڍE*(PQLQ2 l3j L&ilhW64!&do6o5d R+?|'bAahERM`j1͇VIp>T̳ODUm&QY{lfujz׺H[5)(<54khJ$ DŽgߧz#@kGD=hW7 )I?Q>2;̓A&̫pI̳h ]T֚ZC\y)Q<2牿o jZKSC+X=hhVXG_ ZC#4#SQoG`RHՀVZAhS=G䵀3"8F4F+q?em$4I!}@rH|nݔq#7 zXzju b=Aef4A-?Oہ;vzJwu,Asz-~tJ溰y<}%|sƯ3B (Ka8h+'M(% O#{3?̎${(Blch Q]A+4CDcd>B1{^ Ծ\7CPn6OX51btgvu)wPX:@Ok2[ttdD\w[4~60x;?5ۘT~WTV^ G6aW;[iZNZJ%hOh"Re1@ݦ0Es4!L Bк |t/^_Kc֩.9vb8jKu%4r¾>D--4I쇛lᕶϫ/ }AMBI JTXMkX))̤pC'`k0F049Z:SJP <'W_ϟ:g ld:><.񁈴‰2^nƗ~&?aS`;]if]LdCL֦/j0}xt5Y"ԪX{=3t+p'm1 |A'Nˁoَ٠ьF1!@- etG. @6Im<_'L8Дhq m@CJYOYGPC!݁DHi:Dwyq>yP@= 5~FP֠0t⇃4ܝXgO--:ʿzwXB TQ So@G_MERM O͏ Oo4k]uҠï&a6ق 9ADEj^5VoR9֏pmjhH}B-ԃ>C{NSմY@oAkUMI-S 5x ߪDmPd;N5֞{ 5O|u/dv&T= ްA eY?[!IݼIԭtyHK}8q:Ga|ZwElOPO]LwruW=M;o2 Q]/4CӬt>iWzP i*;1ojjmZ ISB}RQz2+`rlFM'.^5 vQpp=Vgu7 PpUdJ[=U׺ .7.uA/+_o4OjS9.ОP~d\QxU "T- FԳ#ѿ_檽_E#^2]kVo@tq -uK*bu,ToOeUx@ 9Q[Uͫ+W[if &4#F͟uLW $Yv u|UWz? >>;6ץ49;.>rp=dgp#IgC,P=B _p6_{}@{, r ofit\cJZtW(SmJD DG3b:j[DS)KCľaJk{l{'B!q8"uv,U(M뵧f^F-^`o㋣4 `[\@PhI)i)VRz`9QqRX 7QOO5P&aR2GC9x`X0W"0~ƎecPqY"!oC 5sQVlHCC`_M>@'ަ|A 6SC#hӬ+{i#ݦ" -^qzQ+t%S#ttgj >86G/?U Y!@\ڑe@VfTҬf`:j" 5PUf8x h}0iRI C_m1`Ee *=ƫ|8ZվNk1K2ZتN,xVCm-̐J֭VobZjaϩrR: 3\T7u7}}֎6[[b̍&%IaOR!eqTڬl!A|Q1,Ԩzw>!F=n4X XMfPͣvL1zu)8zMPn岔X{vkޠecTO=w>#q:TkVT~mWJ*O[XYeJ;D5<M ЗiAL'9=|anưV:UnJXp5Ck-n<Ć@߀3fr5W}m٢,}[AW ~qǻ*W|ܧp߃?@ݹm]{ޕgB? cmi@/5vkIP7. 0k@vul2@#6h[lc@|S{d񳛪̺=cDp ;5 | @ qPWt-A_s@r!Iÿ;'u Al~u PPKN!ڑF=Vc  i-NЙTj ȗ|J|%RbF'] +t Գx֮c; ZkGmJͫHzNd*i5i5Sͣlݹ@KTf0m@@Dt^0:0mA0,m= FIn&'}MEv@l^nM93xnouj;t '#nݪ|tgn܏GBH/{3ʪ^&d_X ~ّLK|6B=A!!wEEG"q&dFj5nzCBp +C}vC- \*צpⰬkςY㚚{ տ}I@pSB] Ptƻf ?綆jO O߇#nsRCoT q@\Co/&_e P\]z5yS˗ @@u5F27#$ZiT _S\/ ƢjTsO@(>wn+3} Շ [-([ZY@k@ ctͺm> {Ӽ2=!1L"FM$qR/!a"= |gErw(?de0`X}V7qy|w64"0p_PB'D t7A9@Сۏ fF;F21 Y }Am9o٦vI޳Z?(Mb ^z՞a1@& Pm~`cv'쥁i ^^?5Kˀ4M9QA[h+5x|yՂjNiGdD] i7 ,:A|ScZ:V`:`^J,Y MւzRK1R('8~G"l hCi`gXlrJAPF(d%P_kY :J߰X;XB B h}@WvP_)-FTH32>w\fx| ٌX6|~οOUtt#'  =)tQ`Yn8kKg@=\E ŃZ[1@wf.l`0W4R ?s% ȵm`BWl38̰2 `Xn5 ρ>x̓]oju3j"DkA(|3@;R -TS 4QC D` 4ZવvXS]گ {r+#ûfB0oN~+ (U)RMBIY4,y?_ B/e4ZF6QG; |%0'U*H77 abuod[;Bs$  1A :[=n@E[*+ FTMφ*jj0l}I/Q _4mqKIDATf[Yi}Ư\שx:ƁyYaH{WQ̰|5f5+5zA3tf?_eSx>ׇ!&$CLl&HK :w:} L`} tF370OOV/}]u`TN! H<=PA٬qmPHU[V6w'k2*a H#&@zPPcQ0 .Fۨ7oZ6 ,@=c@BPĿNi8 5^w v|.W:=eocUMOpt8M^e#]<Ķ?#x v*U ߃ﬣ|5WџORV(Nxa+Z1 ƎٚAʷH+A3(P b2 nZx8b[sE<2ֿFNw6pwq }= %33zb[i@ϸ[vs5va{)x43ZLL1hnz0!9PO_/P#5,gN+Q/vPnAϷȝX ?bP(hFZ$Wa*]z`zXϳZM&:HK((%YU'=R`e=t ~ p3⠭,7lGs 5Lk@R-YJYe| z5||F |p/{+xm :8 xߐ9 ]x@CxA>bS~&cFx?̝@  `ZFb$Aj'=16@og'SJ5c@߄*z]'4NoY i' ,25CJ%lOVy 4 Ƞe%ӉOJӀ433 N lzIc0^ 3DEtO3#I Uo4K @(ʁ^=Q Yp3w}Wp; Zo!FЧGϲٶ3/azW }t }1XoevR@ai yج-Z8Ocxf@PPF.@9P 荗e m-JK`)de!(V׮_I Eu^>ՠP:|s;| zj,PY{>M x0 \zQtϵ2l3`38j#Ua }M/ӕJP^(iẃJ.P 4L^uQmsZ kNRf4ƴ>Lr_*8o:̯<ʲ h0@! t\t=Հ^/< mމvxפԞJEo+=gG}ʮ[m}eh2fDn;t +w8 $|j`( 0@y5PcwB,ܧ k6Q|4|?-Z'@_],zDQzu_*wt}mZJe3J`-` bnmCk:\lL,ʭE(662X"msPFL|Db3`M7ShMgci}zi\ƃ?D;T'(vwq`;/maٙoZ5)*~زw_Fa׸/m>~Vz-2@ QX~5=sX*|[f` 2 o<6}C_`&i3жFIߝ_u L Q05@CT# ּZ:p3pŶJ;T^u=ݜD`~v' j{RO>;T 5 ׮zt9O_͛ޫnlTc) 1_&C_`tty\Շ;->[s- ]]a_n{p3anWt!=}dʼnx4Aٔ-7d-A1*fڴ큻MKVl`@12ͪ2@$﫭tF@m6ul}L90ƾeoeNИ"T [U VӼCT0 T/Z N@h_hSG]ݹE߮&Ae8OM ~7o$\Ascj` ~d5@3)Q'`5UYV_FjбQ@)u>F:_I2ҁ>}LPd,'H-X` (2eX\/KY͗a M AG7X@p*a'_~$I] 5:sy>.7֯QN>@w h{hSZ `vh@f'ZR!rq]Ne ugNMŏ:-%ױn@:Ӵ=h[r&.H24}@tx_jD%)(D GAYj.ЅlB?j$0Lm 4?*MǂQ5Mtmr:{QG0 bP:>{ʲedV$ Uw:I6*#ddݗv8/2H>Э頷io?t*kգv+Mp^9?j(T/Xm)"l&lY HIij, ]_*y3#lF&^G-%]4\:Ҟd?uGD'Lqҿ'wNXTn8o7&o8o||ImWjl޲F05 'Z3Iz_ 6/# d \ IDa(1|δUns2`y.f3Skѣ@wY}$B:-5cj[fXu8J2 4-MNvqحz/wzݽg($n˕ùR:N!XOYA`7xF8YSB_Q#cbɍzGn {e`7%(ܑ(f[Y?2]? 7 W#'s|?`ǿ.Ptqu.VrGc=~ÝsF& _ '8>zo ~x8 N`0YW ijڇ^ 3T󀞠@C@@bXEP 7 't\#]nTjovpsc烮3"*qϹ]\ğѮG/h!_e*x~#f mW5&Uhz>UGѿք_{dn(>_$c \K'=ӝmB̲\ᡛZdSM"wF#[un_DXJ.Mdi3hYxZI_Ya,eAXp[ܓ`9YUsJRO3B!2 ̞ήGbh=1l|ghl#QhoY@]_8풴h>%A 8I6;U#4h)-^ZuӲGݲY:i ABVXX7|%#?:O& `wn!_o$0(J`=U.R_0t.k\2V0D^ K Hڋe?֎3ʜe ^y ʢ Н\z馐1ן ?g;%]ASDN{@W5ʕQZ!NP>=z p6ߚw%jny4@ :-]o׀?46 7WeaX ~5$ex'lJ,Wy(BizJׅ`H4ADZNTO1HڱņEjń8|J6rI%F}ϗ Pbc^bc^L00Kl̯K] 5lRqW`"cQ7.Cǿ\p]zЙnaEг+ pnvj+}:7 |*>sǞ}e6i29\`臾 `#q8Y(בǡ>o a65bCPcBbM ۮFH7\i0N'lZ:*>OY?4h;jn pϊ_ >| .>cDU=nC:]5X5gl :u"J[ zؿ݀aU[^"+TPO*Х!dF!͝?Huc֎/}Ei{:}/bpwT-g7'\p̑gTl f5p s6''0l&߫j7O{FME_ly݉yʵt# 3fe6Fb-xzc㷧UCl[o._ ~w9~LXAAa8p靈WvPK=GS/e6tH`9 *=T^V6Z]f8eb~y"@k=bIT0eG ̋LM?.Q{'(C=:MWAzYYiIAi py@+p%e_m2*ȅFp-p| !(-8dWoA;8~~ i?$uMJzh/3uG\/& 8Ŭ,`-5k[ CA{SEs!WfWv^ArcL6d`%9~=PNCqZt"Bo`[ ZA\PjBorJs?I  ;pa^h/T@n424DLR9@+o[N26" z3l BI}0 f P$vgLOJwj5YA;m:CCe~v%P(fh❡m6~wsJ[w_+~#is(q0(ѼO%\n}F6^|y ZS:RM1$j|OSB/Nl{ah ʀfK9}<ŽlGofRBИ-!IztJ͠9 D )PJ0ZJ)(3/s˩lЗV*dvhT'hjxXON|Ny:|!zyzڛJ˟ZI1ʐ7 +Ķz@+P WPM7 ,qVn xYYLޝ(ӗ6~GQp,I UAјlQar2ޠ8g²pT@=x JZAT d+@'lkHZA@3 G-VoTNJ ]PLvL"禒KEݡ^ `)-3ࣲ~+8 (ҙTs_H60YIUiξa>iͯw}x}!՚|-2 V&EeAhX cu;d%t6O@ zԢ(47iYׂ!b3'6-E6_yӢrK[{wq麸'1ߧO@(,pW ̎0@aE(Di0ga&.7ѿ&6K' tI!IQ@KKy:~jx-ό}K'K?hO-<x'3ˠ-Ӷ@[) m mgBRCs gS >{~K_O_OoWY/"Wž@#@MTI*Bmq!^7kb Xlc#0s9. ܛn]lOБ(F}T 4qoTV4~vzD@9CW_?y.k^5ͷ_[B/fE"ѿ*vg62Ms ۇYB_s]qc@\7G[J/%~-@Act"2L 9= ǫMNzP \ihK%޽#rg9[Y~Ob/Çw"Ø -b` @DKEhIP?Xl]͓x\):Ƃ!A~zAX7Nݩ&N}\5biG~(vC[ͅc!Oxs{O_t~S?׀ʥOE!)5L-&JY*Y<~))VNXJJJ zT~ _rݬ6d-wuBΐ>Ui?;̎?䨜sF HB3&LHc&gM4"(kr>G0y#Y}_?R ӧktv G?+ FHĭs [8bmBm'}wi%R1?]V}U ۑeSغZj@_2F1@sߛ d/T pǂK|kh [Y @:xϔ:9,RN hTJO/ԍ # Jd @M:= d,ЛH0Y CZf-M`@u@j0{cݽ:*'? }:躲kuB8ȦC/v43!WK[ewtp>~3׀nsl سRP;ɰzFU/V:Kz.! Q#Ah]H^dU TcZjKx:zCj%泽~7uvjA AÁ(5T|pUνUSnHTϩjXTRK'vpU^kTϕ@*IQ׷w?j6woZЋrw!P-6*l3W[@.* n+ZP\ @,>Oz(N/-\ޠ**A=Uh`-P\+Z*5\T*ԅસX@zϿMVA@:A/*/KT/SO #k!X;d6~w7/BS Vi_*-Q?BЋ2w!ihFA=PdEL՛dQ$x?ZpySKzH*yXO7 _n'x L*ɰR ~=@4/ Z. ,[-Lwt?)Ay&"@ukilgpI!OZ{p{ʁZ PVk Ds@}M}n5l?Rd62@Mx<!_4FK@QʱxũMzŷ6O ՠ oɑ 0|w QfBF3Ab; b,hU{(` (M[mg0U'g@R#?Ƞm`;U6Pa aW "zu<%[ 8D")@:d=I0 0qь@9}'u(G<KOR@-h?V(l΁`I9K,qC] Xj-vgA{X=t}[Y5(U@P7`l(T*. @X,#j! MR}O2TC-` U Sg.I8O:*9nݪ2h@YO=KtɪEJ"F.q=Љ FF'ՠfڹJ+ZmrM h`;uWM;? J}](XT]%Rժ(2`5՜jeԨ(ky>*pj-:_RW=eU?U /7Pa恘zEʩcwPEju~8^ W)ֆ TPC/ Z-ЦNF ϓP yR-ңXo shT&Dpl5\gZ$P6J( -Ā(7Drhw].V3iVVq[-M@Mz (z3\OՀ\|E%X-XȫF*S"`U恔Z~zP~&!x (;Z5h pPڤ+5 := ,tB'9[n pҡתӠi֣ZU3+[jL[O:#A= AɠR,J]j l*C[1`{=z}|bʁR8k*Vr2k4j\ E}t4L wydDّuIH{/RWY9Y464ݴep9ڄqnX^tZAlB{ }Ԭjܘ|YwIlFz;̣շU3709z]K#>v\m&tKvqFa_2g}S,><kn6/b8G] "dmMVzzC @K; (2 *(b:]͢'fkh(!L7{:k܅{1e3#[ZiW\6[_ߒ /#vg^Zwb۵8u#C]O&y@oEr9h"p@~ V] :;GwLjvAzҧ؟]2~,]MS I?pZ؃6z& .Ǵ[hׁ#K/Iե`d>:\`=1AgЩ~t<0mXZf~}L1[z6+zA+ioAϪWwT@{Ej9`7𑭄꭯l,ږ/6s`ҥo5MOW+0(Ǘmmcѻ7E hN_lH_}f5.ěAsC!KXÊ Yv1j3H$l@  IO:&7 4Yy#.ZAS>cAe/À`>TP`";&J`GOeRHB u&v餐 ]=U1`dbfvh3O=RS {fh.O>H:Ԧti>!$'1]oKn=gs J9\e \A-` cVK=5\s ͅ<d*MD)F`I$R$EXJ93vR(D:O$ZB"U@"!pvV1 t:ߧrJ.2B\[@(@uZ Y 2*޺rWP9(*"TwV PO%ho)(PPjZFw8P@KѠ@:)+ʁ" Tj\bUˋ8VH^b3PL%%VE(F2RHʨ&Xˌ=ʩ1UP[crU'PF m2jiΦFհ(1@7eR@/ʨ&(s\P=Vw(p>͠h`+PJuA8Ǯ(z@gQ5\_RQ0o-θ[ջ"PWP-աw.ZOP @h%\(cu:}FQ3\Pfnw_S ڬEG@gFUu5hϔw@Fh-c@F` ` WR}ҁdZU.^SJ{ڵr'9;A$pH Q.9inH|i>?K`k=p'N5</JUJ6j͂A:SN~v.&=^]!0 d4^h}vq1sQgi}1/[M0dnB 6Q@m x wDi q{/2=Hd_M/oz:Yr( 6СSbFqKz}ܮ{N?]*}Fh+ij`T *z@lŊm%#t\e+Z@']H.{=]2o PVAd#*4CoC7"rDΑ(Dbn"nH6o#\pu[w~5cՑ2ЇH WU&M7/Hԋ0OdY˻з6ᛦ#tiGWq3;̫f%d[üj&F-n O&W @jJv/7~~x/1H Ell5,?7e80Om|[c6ul?)#)0=IpPH ]^6 ߏT xLdGq v:@f@Q I`lgRp^ߢ^0G~ 3>wlm[hkN.\8@w1@vfH{"ᾔEm.ɂ4 l.gb,}A=.K߀U;K~3a'j|,mt6F-nkdí[@'`J5$ubv/Yu:Zdf5q,-=&J@gh>aNmT#BqNS%/먤'w*tguWMh6`_1Y{ $%f ~hh߯aŒWg.}~OAIү+6Yx\^@('0䏬p7_0/R*k(&h`-l(g'bV3$d##LdDvv>ަ1[oCHf*ټ |4 d򁩌"`<1 4 \DozLH߉mgk_ " t _`.bW L:gݫSu0RLA]IYI\] 6Ú,'/heZh#3m(h5-hXccKw0 ܨn*K6l}Sh" >7%-0LXbk]eS)PR"ܑO]I%@rC- (+CFPFʴ&*,:UTW2( KD^BPA?P* TQxr&%|Bc+# xr25(F%T RA U)TJNܩjEZyVL@14nPOee@PD=iQ߿$QK"Ph5D.~9bTZ T\"E[T*B[BlɫG# B[:*(PjՁWjJu>Et5:\.P$/AS ׻Dϫ+A:W?M{:0ЖVR7וk׊HH/вx 븦dX2-~v#ܗw7]$%:T].eDW<~Ǥ|TЬ_Px/-@C+-^̚E*C`蟧E~K=π)϶#nnدx~]vbx..Yƺwc#̲pfKҭB]\ܓyn. T6SK_\*pa3o=HޘTDN}AD )tYY"##ށcnxMXskԼ!sJƃ{?u3]9roq.rmci'Gɳ[?{%4pZM ^P c$ ]6e<Kz"hf/qnt2CA{L$ 4Yu`h@ dFHp9gdzc . 5&dF6ЗlS0Q!['.{t50M $Џ3WL WɱRp/5l/&` :Ʋ'h `tkޕG|vy,N 1"<5Z+U(:*V]`:NZL=6g\ Vj6QE#DJ*gosQ SA%Pd LeS*R9Šw+(0eЕgʁbJCuՋ+# p3]TbU3X!Q*>,Џ@/_QE9X!|ngj)&B( 4z0B(|j( 8J -xf乨+E*6r@O([) r @i2RPa@^%Og(UY 4:;k|U*5STQ )=K+Qxh'e`^ĝjVa`Uއ#ٝ PsXD+e``L8ʀ媯BzAk XEEG~XZG)VTɮ TDURQky&K Y@/IU6Ibk<O[+fK/^S-6q"7ը z* W=g>ՔPAP2 U xdQ zCel>Tm@"I$F/`'ej P"riA DJ@M+q3\hՃܵIE/Tm]c۠fv`hKgb `UiBl#МtZ_𾮟$2Όl ז4Ql{/h_\?nmwfB7 `(`mqQ@puQ=8gD`f(4Uc$nM|@M+"A'O4]RcMv߂^p̀l뮷ͮÒ9kީ;۵c,@{Z,v y1Å-`OUVFN6AlY9plc[+A@нrUdZ-(Q{z.s Ja;D=tpuXnNX.9X!])Q@LD( N$:\PH;ERD >4y[)=L6q(X(Q+aʀhRP!QFߩ3TxVU x +|fE*aw+:( t* pָISZ@yՔ|4psXP>Ԓ WB$B-'(JU(H%yU*1(1b$,w.<Ӥtޠ@Q\^mOk-@Ei(8 Ҁ<J J2G%IY)-&REb' Pp 8p'@}=~dN >`jXP*tfUk h'%h \gJrq .9ܓ%2./ǁ)Wj]ؕKW t?V{U-VuSI|q;j:/JP3|xjA%dZ(N2jYLe\w (_ ޷o .( رMhAnNϋx[80%볉Xv= c{ n_pDmpu^`FZM|`=o]f'Gx`S.p?かm=(Yq|B(ՖX6Ď`k$j~G Qm7T7}$T@:=bz7BXFJAtR!hzMj427[.9pE ]+wuCцqs!2>vmޠCt[Gպo{{[_K#N^SnjU-^ 3_b::tWCDZ|>Ev~@OfE`n~XU,a{ @v^in\mx[Q\G{+X\ok l٠#լ n:X n S9j7 lL= #gsAw%[5a $u@`1I@giwt-:@QGK`V͠D͠)԰,*&ol+OV\=&Oh~lBZB9{W$٫40[@JOHCη:>(?u}o>cȢBj_G4jxymPiM41^ _Yӎ7"M?; !3!Nd8A3Hepp ~6uɖIhJ|j JIf+PC)O/ȢKHQ%۩ !w2 _:p[Iz7衁HB`gsؠ;A{t)tap(Q ''d9DѹHM}u#X;[?z{uuZ6d0&`Wm&"6 VzGUj>9=C{>|mlaSݞ@>n A~@}kun)r5 +J*(t!`+'RAV,JO i+T ]k,X$;C$3 ( (i\Uu@]F=~ٷ\!gd[u۵ăZ;IEzhD ݏn0zuw9t6-RTB[Uϖ_:4=u`[T>nV^a V]$E&ojޓ3B?#dC% 5 fD O=?~϶}g@wMx<`w(`W7QPcD5$H\=Pw{$}<o9@ ` Iב`{:X]5:V J%. mnӽPTyH706{ȇI t f':zf+dcm$ ;`똣A?iFi vt S=jE@jpp# W.s9Xquon,wsd42gÁ~\3MtG72 0܁]vU`Xn@o<}^]Qo8%P' kv /UuWXsWl4*n#f{濻_mv~K&k3frB85RC3a@8s`k`l7k+Ͱc{[YZI ѧ >pD:rލ%€ f [#O@̮ƮVt/1|`?m|[d@uye@naۓ7CBKZy+s$Пq-@Y8^⋿HwwbD>cāiAd_7LqL(T s ,Cfvݦb͆MA,z&{ j`W(9v"TDpYU`SU=U6Ylf ГtUniFR5@(A| JzҵFy@*H&uDZ'+=MPz @UB`(h|`(OjQfw.@UV7mRi*ԏ(6iE&=BH9E6aWlf`QdJ J)e>3 HbP\+uVo$(Y1`%X0X-%Z ڠRJt!9@%E䀢Š)@y8^r%/l=*PSuZdP>s,ի7L pp=e\ \^v)J\[=|9Q-@[`7 `wo/KσZw9V.SZzN:z)U :;<|my[}Z ׯ}_skaJy#f;Eg=?WD~!?2vFwq@} _׳ (b}MZ3@Qݢ*1Xn%%po1]T{61%a14_/֚ iȥ̀` sa;5ѱڸtƎ&G w P4RA9,@?@N zi&;2_So;~2@o7 څ x`<b%?)e{?t2 ۩q@׀?low,. D0+@ F21 4b@_0`(}4C#hB&p@?Х?ݭ쟠" cW^@L G6Y C{b?Ş@;Cu,0|:- _؟`)֕%: @Mh U$q)'H: *عT@i:LWTJ (dB>Nj[!>@) И R]z2|@+gK@2Ls\R ~=i6yVH14҅@f@ȧyʀ|e>K=. 䪯JAӇ :U;k@IUYMvs'љ$ ARӀ,3)M&xAwd^==I+A:|o `9Vpɹy`,4#TQ0,7P@pOb2W@~דN@ѡ<)hx*]>DX>[(TOgE1r{K`>"I@>A\bA+t4W:M \<Щj$@m6 (U|R :@ =\f7t"MV lpElTnEY'I|6k Pdt.V:P2F{UI9@`58R=u(hx4@k;PAƂd] 2ւt׸ ps߹.M>eś@Q vO>*BԥVj`OR{@(v[iV/a> h3Is¾_>վM,NQ1o23_ivܷ;- nD vw)uQ̫c(`o>2ẃ{jx[Я{"F95}߷矛\ u: ;, ~ :̍4Ѻ@S,Nf?ʻ8{x'dz+ ryt]b Upy`e(@rud=OY.?ҙ^eAKB£kYŋ+A/|X-xu/ `ھ-aW xطړa7UdyU;]@ݭc>QHijwCtXF Tү. Ɯ3 nܗD<&%?)Ldd' aA( } ~EZZo8MvX&xFNÀC` dB')3^?MG?-ۿv@_@01f, F*.Ɛ:SZ`|\8.U|dױ 3fڗ?8} U_rQ & VE@i'XjMG N}&#i 0G(Ѡi0F]S@S#Qt.С]ÁY!hN4ˣN`8;U3PBAتvh 0-i 䲉`lj c#M`eiӠ>@ޗzNMX.lzQKj4پ[r,U* B:+˥t<04*LS9i@Jp%HTpS)%lJH%JE|_)$)$(VhNU|)FlQJ1actPՙu.x y-ԁ7lċÝJڀviڭV`4Li)4ԊiYj 4-4NX[&J l@4]lFW#h`6PFЩT!TQ =5:'ԂzPejlJ* K_ZD,3)Q (qiQ ETIEhAII)H|[J)(T$C+(W!(U DU9UJHѷdCB0ץ: ^P;T. t4^:f2pQp;nѪ7W1tP:&zS}Dm>,^V*-LJ3Ğ[7˙25=2KI^Mw)d*m~-=Pّ_P<ɁxYjjmm鮶 ҷ}oy*ib;@L^Z8|(|?4,ynds)_1>ץ_Y ~D% [)7$ljiVl-}m_Ao' U8>!o`h_ o% [tnP/ZcχLfܠeH(Z\P\VM "Q]: Y3mJOYnG* t.vie? v0_#᠑nWvh!3ڬ`k>e} =i4$ Y`x0̧Hf$̷W4Fst;Ϋvq@ߎv!cK&M3߆t|i@J A`/:=y0,9쭘}|w]ak@X/{m-[A+mnX:clL~t caDyCZ}@_eweĢ1_rc32^j^I]o(ѭ6 Vڕ<Nn=jwok*:п>O .Ow1`| XJԹOhv#8 H Z,8MQで<4YLWh~2*P*@VME;$PrjA-z^yj5{P.(g+>^~U'z]ALW=, #Bǰ8tt | w=C.ݢ#y _[oUJl`gjJ{:G;8ݭct)khS81-#u"?Bfcqda(Ff[u"Ӂ{®Ӌ34:Hڭ567e1zlgm5_$oق1 ) =%PS]FCWG/z)^0@c.(=`YĮ\ t1 a=0 `0vOdΕ@zRk3vw{`6@BYdRN50aVb}CٕfECy@{0tԭ`X u|cg:AAֱf}*׫697=@j A)ՠTl9Z4P (y@=y|NjQ@[-TMM+(* =PI*)(,Rg@z"PK)\ (ʴĊr uPgV*: K(Ykԋ,#z T1Q+PI4(J@9TQ+E> S@>yy慒r@Q ڠBYZOB3:mX>J| R $ժP1hd>Qu\0^:rr),WQzR y FAX$Gs< xX yu\J)—v>`9A\eo,6\Et U,׍/nI.Q r`yTFݗK4$|`ޝ+ t"^",/`/.](g%;"`VNȡrЩT`e7o9Pg(eZl|"-=YPx۟2XT PV]K3Zͣb5J{$Pnw!rt#p>`kv]*P}X",VI6;W/|֐o ˸NS~68W/NQ1P)8gR<ߑ¿';2qѱplˬp|{۾֎ @p3?^/Ԍ ]Uen p]U4$Ψؖ.v<'tK&@ɰWerW<Pmw-ˋ @KV yAGTmc7ڏv/ai7-')P&e6;q\ nbW`,Cˆh!Ͳ5:F-( 4S8<؛16t v$0)`=3!$Ϭa/R_ψՁJ3Bf?15nf=}v78wЎ [~O$ kEAcb~G_w<`-hkt 𙎧.FЅ0ΤjSz7`3 W3㶚R`.Qg(`.rJAHpu pCxE6C@瑪[o`oFci@ie0^rEDs71w 0tD B[׵/i.ngI~(H큫3"@ 4H 5L{&+@?FXQ¦sxSzxP HHȢtя ad2ɤ k>߱;ѣLD)qf/H L NDU2!ȋv)Z5 بVvx\b*0Y'bNr`0In߲t*{D\cy<53PtQ` lչ QrJr6NЩӀ D-ȡ*x| &XkEXRl|'z`p +HW _ u$ OQ}=:BНACCFR AO+'5?V͊)=yx,6Bmy6@ AyVI!<ƹ\6عn\+nGxr@U/8bMA!ʻp.}PjRF)FJ͗Jpz9zʭ^j ^K@NaX>D<o(:BlNjEI2_g @ʬtN&$/X.hfi7N*.ahh>,C^W|2P/zzjg VLPҕjRBUMݳvu@] |Onu`Kvv\%hbTX6z><~C7Q(IDʶW@2[}@oM 2Ֆ,.N(j</|[Pz۫Ts`61b)T:ȏj:t@i5倶62hR9(f( Íwu! l`J p35@^VQuy naRF=@^*tt6ZA/m₨^<" 5hxߎ6]Ao;S?yFO:(# ptL-g 9xFBZ8P2I$CFQk(gPDB rƘdr0&1\M'#q98`H3(Qt?t |]֬sNݽUXYz#^[Y~8ʍ5Fb\$;zxVb]41Y&c6aov2-dq}!7Ϲd$DZ䯼ltlUEdaDmGY#NwSf2RatLq8'VLaFvS,RqV\:hc13J˅0q&b&8+Cll\ƹ;n$=GowpU=:2WcM9zL;Ga1ق)rGDٌ+yϔ8ж p~n#Qy7:HL2q9 '8xL6l,q#^52 _6« 0(rZ9Ƕ|XrfU})Wi%3:#gǛ.C1l"PbrF?&M[q(9Ø8b?MhqpW¶F!oҌVzSu=[JL28L4"ނI&,I.GF8ƾ F8O#cWbf#fX!b;y*K̏b<cY"ƪA<6<-bRtt<-qmľ96FlMEw7T,-sC ٽ=JdpMNjWfxE~Wng$'c\.j[7d_./llqd 9v~Sft6eڭ6;u3p:j舺9۫:zMuU%)`Lt4Xc*N\Ww *rUk}\Z#֜;X|ީqT4P1|W>{؋|6o'ѫv(N }tv# S0)E]ۉ芶P+юqYkǷ_!@="&*bcM\#b]Iq%q&]嵫yu "~ŧ)n_6{qGhG~T϶7^]7~o}<_{y|7g߉s95~vDesh_m-[r\y{Ge}~yݷ"=WW4lDE~Z7FL0Xg{(9xWo|Kñ~?Okٱ2#vb 1;FU~X`۰mL}{<]۝|1oǮ1)D/<,r;oXD?7+[wWZ+[BK+Yߪdei0w:w{WO1Ya;46{O QXW#6kWP3+;f3P-UW7< 9`KRutVWPޕaU?XmWZOCf=pުI  PD7yIџ<$ېGCM\}c,ńX#biJ|2؁.srjߎۣ@ZtCQ#cs*^O܉fǝ<@lx|«f ͦ+!efL 9W\ڼQ!(.Y:@6^ >rzr(!zFyB(kd^O7:n*_(:b-YʗbSf~$y@Pe2l\Ȗ~Y# z;;u((gu倯jjWUkWnvu3x[UmUj#6q lN XuRU˲@mptվmXq􏒽}d^ʹsW?cBؖ<'>~ 'ņcIcU5yi]s3'Ht5CyXC,B4|!S}7>@ߋv]>BeTEWL :KNW "b `mMl#j1$>SNfWqQOğK!.#Zc$GtM,/xX}lxaÏU:v;qj^SͫW7W+yQͫIn#9L_rwV_G_&齏拏Y?vW~hvOɏ?ܾϞ(%Ů~MͩJc=Xzڙ<5`\7Jj?!4r_%{ew| sl g},A|._/rg6<2˒U @ߪTV}*pnURSؒ BT,uIQ@7q*_U>EX;J[#5=z3@Ё3̉]<z"lM~Njy=13qu2kXY%V[VZBί}^"̳"-ss-U[ 02de'b>:,l[.5lsyh\Xs1b)r]ԗFwlTz0({|ͽ Jl6:}uhFq;u(}MwSE6"7yc2l}7.p^Q2摧Zvk_K9൯og=fkJ2+BK\,A34g7M;+uG/ǜeFz3o295Ηg 0<>*.t~X^"> 'xue@8#s񪎜8WY^:Vq.ΟW1O|Us^9Y9ns,?jV'5W5h&M5Ǭlv#fh̛ș}8'Ϋ;ó)P_ZTdhU:KșYΈ ;JG8[3]3qv7oFP cq>񹜗#g=%@ys4o-fL)K;'g_4l**0Mc5>o7 ͥo99@V'[XP5W%_ %_|UgqIw O1J?#wYqTǟSySٚ+y9 ldKᏳ⪆lRozLwiU ߩ8'䷫~vYq_VBVlQ*ҿmU9nl7U׷ yg\NN_1;"3]nk93t7cVYaVU:܎"oyZe |({ܾ`1X'tLk@0.&ƶxw `'K쏋!a?47ڀȸ/vf n^Q(w@<߈䑮bFAR S=s)ZsϘj>'5X}3U+YDZDtWja[|*uYDNVfꙩz{K;*eĿ\ 3u~@EV6"T90+RAfT _zg º^W`z]-WT*@Ѱo,.rf6fV#uU?R~U;j@WBd I_=}r4޻ƍaS͢89ϊ%/p׶#r813R)Zĩ ճ|KZv|qM̈zcf<K!Nܛ)k"nO%F3:,n#Ŷ/b8B>k/71_&~+t4; 8)(O?g.394sȋb bU1 cn:Ͷq7W&0#5zgru>G|W Ws\"Ňr2q|~!e{7גLAAGq:. jW;U7'j=Un^ z59Do$[IN-eM<}oUJ Gq{]y~ar 9"7vNxk^&?Sq?-?y,r ^W\G~,ƹex{zRb &WjV:pmY:ijbRԊ{Xtx2*6m|Y{/gh7z4yuaYنr}`&hW.SݢAX~$yy~9nOb;W{|{\ȭ6{N w|)g?3#ȹ3J/:˔Tg:sșQKuY6yuj8R{ 2`B8*ox7&VIU-.` plʐakd98 XЌm}Rޖ8qyy&P5>s]hhV"`LT4i6)mJr +ǿ]+*@EV$_e|^~OQu:y{sv*x/j'/%@UkrK"⌲9\-X_ۈwS\U`/F͆bB-Evz9%@`Eڱ"jJJpm|!'.?<yWZƒ g_DAяlSc-XL .(VJ%7%f{`|\=J9+,[^e(WAUבm)WƷ5@Q)_džTɡL,x[y b7{pUۼC6nv{SlR'jfWrK+V~e >x@ws-CnߜpFR2]jx\S{?JGe|>.cA1vUȱM|0)Y\{N1M'OD{0Ȧ\KGXc%%Fo%>[KY% [Ekx/Nn1;be ?s=Uڻz)1n9q c=y@OqT8>D 'x(1\m.(!wW* }c^=~** e}^ulWS6[Ϋa#j^KfJL^ͯ@ ̒tԠRZqdب23;{0l<|37˥oℼ ?mauXrD1<=-7bN>cm_)(.)6 L|cG~!v'N8QG ;qX1O,n92V|Sm?rc9Nƣw@x& P_TzS/lQ] * G4pbJ72z2$.^Tne{ո8 buwXgSOʛȥަ?O|nc(&n1 G\g?/ƯEwyT|CmQtQXfVᶷ(Ɠ Д+ņZsI >mGL631=;]}/=ayU`^NAەY/t yՓӳIlX7m;c| fI%PNCA\a`G:Y=F?k~{C8FͥO_@z댍붰ڽ[Z[T-!׼_=~3xYookgvoУGXX庭BK-%s8:\-`AYn6?WOU(Nj쌿A;I%w}[;!%,#frQfʉ|8(Gskx&mP^^\?b{l8;fX8΁fgLǟM r,DXN'b1Wb.yiDqX  ko1V*[fV(e˖W8nݱQo[u'MTOvDy)6AU&hEUER6"KH툒0FUeUZ+A}A]oHuöD0YTf6\X R>RCش`ߜV]kk{7{9_WU++RIU oæ*3<(KGO 5/]QȹǑT-6?cyF|*EF_/va,}44Ahwx'Z9F,?#k1)cfqUw$NϚA̍Ÿ7_36Oc˺ ;o1kok ctb7 c89c1H\K)rUh坟}/6~SeoF9̪> VT+j^g5'juUIn,yOTP*YΫey6O6ڰox )&g٘&޹fSB~xi#ym.8o;^G5԰#ņ⊞w ]`},mAāA([GٓCl[(=ˣ9Kax1w02>}?ǐ,/}ůzj_,Ԑsܬ6΂]7.1Pn ^:99JDSL:iqUrU=h8q3J՘4j;7جO4-mT^^N 6TZg}ejZyk ׾fʱm3f{OHW>?SBggeq.fF̽&gW{s*iFjL_VRs )^ejSK}Xe[]"b8ǜ8*5fK7R^{s%VB?9k]FZV4ek%j_0%Ľ UK:P|ʨ2D 9Wu. e4f_ץ0ϽKUզwhV׈o[`6YXElr/UK ,Nΰ̴tjl$g 3Ѩ,4Yγd՚df4Zc~a]1n3duuγv_aY '~ip/QO /7H/%4y{4+hPe{e9^zFO5J{L)fwg9+kvf+T%!6dZlH͆jVhCalv4J;#۱u]&ktZߍ҉m*:є[ av)mvd2`ցq96+b 0x ),".\g9n9n+U@`X4/d++xI]X9]%0ةzY T$`[ ni7]fmzR?v;ꯒpEUW8OV)kV\TwuO7)<#Z)560y] %?1,zaL̎%8؆='Oq[01 $8"vE3)>1o;E qV]D[d/.)kaJvL W+]ټhBF؈OաʀD* UoW%R`UU0?gAN7뾻UUIڙ_i99?J-𭼠X_Y6bG@9u[M#gșyL#T*0+FV,`balELQv%N}#ʨEC;<>O5/_d5Gg_쀢3M]DM&s285wǕA^mEm(?`ı mgEוTX pg=9bh`=P/׹Y$|-6(IaCm^kOp\;ɽtۀ~VR ?(/ӂ-἞Wsϲߔ߷8>΋X$vv]cW$k+Pb_M-NƅZr#>KM(۔asȩ4v-}kpV<>,8o|<8<a+4dC!x뢏]zn߇R88~s}TvJjnig]XoPW:~`UPnZEU Ƌjxskё]jlʰz`]Վ efgk $k粎dXk˪\bZ|D'^lxyrG==~ޜ%v&]gYHn9E_ĀIO[ Ga# >`l05g0ɖMl`Gg6E~,!BqY6t9 q2ey&Wa[O;ZYi7#(3o%ǔ8|^ VAbV'}I 1tcq29;Zk`KJx bYXaVttnq1VU5FќmN6gbu^X3ۉmuh\9=|!W\)·sC+jټ57e3q^ܢ jlwWۧȳJ2T-sYZr&hP=P4M}U+(ΜC6h4.ĸ2k)LYF\ŵgqLAy3kW&-MZ}'V_ګyG;W{ GEĢŷ1+҂Ӳwg誾7]~Fslss4{A\c4ggЁ9^s|yy}@5(~]{/9tќӋ_\F3CSvY@Ļsvq3fggA v) u\Yd;+0-ݘs;!}.'‸#bGL?_A8o%{<ɱ +ޅ ^z/3H+A|8݌2 5-򥘪wo2/Q|:+|>3]ⰣeI}UT`堬v|EEZ,VUE"'[Q9핌j!?s_AÔ#c Jvm&0`|ծU*P18K:)`^S!^'c^눳v%dMP"(c#N<艷VcM][nH Xd꤀uJ;J׊2 Gu_qy.Zqo˃w蘘M{|-Z!O_0><]1FѴhܥX3cmR䇈R))K>,'Ws:-~C^2bb&G޻8auT|4.M_h!1(4Cl[hb؏ۍl;`/bڞmHj_[ ٍ #pJ|-Uy>8|97|y7#u/99b#76Lj&Hz`s #sl[:@}\ ^*(Kp^<1 ɛC7r[r b2"Z14>wcd<:f-w;}zׯ]рznXe1KʯZjaxS?e;=w'Oٌ5y8 %u83C=R&[RCnsss*Nͥw>^!טT #2#R:w{OMތ}!/"oh_|%O#{y9>ށe~ٷ`kzlVB#B|Ru?߮A]vK56_cuIJ;56վJ, rj.,-D~Ψں,- 묰|XJ@ V:-"Fף~k]([n):-ԅ ϢMb;[ɫ YH~N.˶\g4:giΡXurd ˋ*܇e9ôG֑ r\_ſq4&E>b:q-6 ߲lMv^l:mc&%l|+ kƏ 1L{\<60c7_G' 7F"b i1lDQVBet q{`)24fh4V7ѯvn4jM9*4jɤXt,)QSGl f(Q=f;^[RS:54O ld_4Z4?D Lss1v!Zm"fjfF[ gh18[K"fkDs̳#<\f @X͟hb#:y͋cvIފڍm&f{:!\c,.3sqXQ"Bt_ޛXM$V[P;Xbيnڕcy: qYt=hD/فޥNRE?יGw))d.rHޡ Cمae`0Ëjct*)RSR\NqER )Ŷ[e'c4Vs7N˭m',5; 'qX^sI\&E9۶q]{B;{ ՘+#leL>x"[LtD q.qa2*y&$d%tyy\Ve# VU zz C$'۔/ke([[WKm*8<}lߩ/g`|rx5=>o<}9}V;h񙆻W]+z{WTSAqd[}^餯R~W<;1kdZ?ENMl|h#yB,m}$ohxɱ]stAoϛ]0Vr1ѿOW׽UiKLs_YLsb}^5uIo}e$RWŀWwj YqftY9㐯>׾c`_7|ul+~Kfb0bh5qa`E8չ=a9+~9;_!fb>F2`,YsOyA}| 95y49ޏf6l^eA887߬jYP-֖6+mo6aX[AVMрeV ,䢲^g.d"[Nۆ_5G2 s-4][ՖX  SަW+׍q Q*JTBT-6 y^[ȪWZV]فW,rqB{GS_&OC#CͶ<|1n|{&?Dp>9$=}9rU"'w&^^{ȏy>'mj<#^0rFbIdk8++mcXi(,kj]Pfkec xI Jʩ6j_&/;j`23:̨':cX)#Ƿƺ:"rlP1Z[^K&|혤5۱E:pŵKlILjN9VDJJ(-h5q vkX_A76{X]eV =V,#~;ј]U)An}K(Ĭ$3!qaq V忕PDOA𡊭NVӂ ي(kZo<9&s-1 dKlu,sӊ WlH2Bb:nk܆9*3ô_cTک]`h%S{yqhWFqCP Ȧ2)[D`aAh0\ 1_7٬J-hc5n7Zxuhy֡܀Vj,Is,7ŋ3s˳9i,0'Ы٥ %ޭ2wJrK"jx>ñ_>rLA|:D7_1`BLػv98C.!G0#{Mr$MGw>š)&{p풆5y\dOSqx1ҭW㾦bS 2mirN5]c}6c߉)y_lG?gdcq?qPqkp^QxsQ䆜?&rD0n'`u+nGYCcH\i lQEs^a-XS9s,4 sLiq|N ]領O`|%vva&wQ:>C9˳Ok2=hɎ|s='[k?dmWzhNhhNjsrnK\\˽ 1?sK',A,( bUSKkj8 sQ"mJ cXgagbCKނ,GlθXOoV;~: tJ,/ n* Sl#JJ|uiǚXcOc\%J"Q\j v4ߋG})v&vMVP&v+ $;},]$$[[12Vi'َ9Mv 179 YdvLn %t?zU㦏N_IE]h7<d.byhˮrw:ӌ?(]hͮcb.Ch-&zGծ.ml]k./>TyUpZnUĵWgxXKnS i&jXELt\B I>yQޖ7;*J C$rռv+>ג qpc.˪*ó̸*Qέ!ɶ$۔/KA]ޯ_Ǩl,|L2Rfm2Cy'_Yyv)g*9Flq.W'v_/Ù{sw48*Cߐ%~m%̨Ǩ!YfVWZk7Bq:gB]YCXK0D($]:I{ke\?=0(oO>2h Ot=#5Ghb66}}񷻟@70jMfwp*_]p\f>{#pQd9"&z<pO1 [I1x,R(ĘEiX,jg+~_Gqj5_]-ъ\c5+F$G}^me4눚5lm.׷W7=^m`,l*]U 򓐯z~eݲaaѧ. >s-q-ĒNTŽB>Wl/*Vy;z~ObC)3vy֢YBRtϓrjq g엽81psu.Fߩ5^!2rgp&qKA6(Ĩ̢ ޓ81Z{ G++qTޒcIF,Wt/Ci(If2*Z^Dy=7>VSWhTK6!%Cu5 o11O۔q\:qcOkrgG]yZ$_5qrJZA_;c8#f˾ >fa ٮ`I9VVJ?|V1wl̼%ג6'sX WIvl;iώV;rwp3WGyO_TeY?uGun %`u%sJݲ 꿸uhjFHg8ߝe %r|&rIcdm.*PK%ˉ*΀UzYRu:"Q1Xzcoq~gM|2DzK9;r?Kcqz^7'bB3AŠExN@>&#f+yL^xq<@h'9w1|1N-b`H-ĩ{DZiEű }'V"P;7nю8ʤ/,\E17^$hu_yY ifK\X:Ztj#ZuF;E[-:Ъ#~tQ.-B KVh.v![X]6B=2LbQ^/VK4kJj}X, 4[CZMt<+fs 9'gruDNef^^@)݌hͯF?痭Jyˁd -X[mq}V LsjAvme !h5ߡJ!.%ˀWt9J`$3jW"ei\e@IW^N8IBDG;,o} /#㿰tsfK9ܒ8sqUŪj #œeJ.^.C1M |Y+'~UhN,Ơh`-hJ9$sqZDVȭ\:Lh깱莈C WwlmlIGN̴{ F`b\\8eEʷ+xrE~|'$rw;Zp+Om߶ Ǹ_Kəq[/~C>l'$c-QfF_ )3*oEy\Z9K ʱ\QʭHW/7''{=_m\W!SA_U Au|bo{㕵V 2-k^x:7 U|d! (Y׻bg~º9z]b4B@>W9Nu:Ε-uWu,k*o,+ت&U[^7U8:)U{ˀ*ѿb1_']<欙2&-qd wAd` ;b!~XKx37}1>no4.O~E\[>'qI\n˳澲/k4C5Ό'Zb9+V ;zg=[l7?Mg_Я,񅊄WꏯUX]r^UdYklY7iXgjP}^-ʖ_-T<[!~yR#Xe@Kz|˞Y3cd bǼ3!#iVĿyD~F~b.y]kq?k]Am>WQ4MbN 'f{χYa)8ผnHE'v7 >]lU !UϭlٝSpZqekC8$s>_q},麣g~/0ZתSr)YA:ȉl/so3{a<Wmf|nq;kT)4*P|^L5$gR]x(4'r:~doɟf*z-9-yPneOQo2&7g]C{o3yϏ۟I{ט&Uɇ08<W!W`~ac@UrwIzPPV$.)smefL/U@7뵠}obè /k5[%{qkK 0\eZ*l, X1PGK޸$`sdkr]x ,%sQbzMG]|7\Kv*yGͧ{z& S4NϊY*VA0 -r }bˢWwRjcUt֎A%{ymOub+sdQP{/1:z? QA??VVؒ2Z3XU1[7Zk.1 F.Uly# 9YW;ZڕJ.7(S̭b i>mb>%UYRf|-5Vߥ989hj,$.K)jI^ {-ъAľ"$A{هʼn[bbH۩[TrLӟ<5{[94@qfw^tzغ#^jj ` Y7+NO:2FuĨxg7tMjV RW|Y ^k+[fx֍dm#'\oFҿ! ur:tw*RAi]oDa<:Kҿm*j-C~ b z@EVoTvFU~r:'VٵU{=8eX_?y]>\]L,K`ZwC /9rNu+kU]9[znݜpSo\K4Vϫ>jyy9J`p1_).yŨ<-EN#bƥ=͈u#gǍojzez7Z{Y%?72<op۝8$!xU1<ތ8 '-Fx bm\} "mc Mчvx鱂b!U@)8O%.ݪ|£.NRq#ѝ_,\_\(b./.﹟FmOEֽ0aV y{sbjϓ3bA+@Ϟbl;'78bF&lSgTv0䉟M{hj/qp#kј9>+$'Uw+6[e J-:G~Y?H8ou2^P\6Uvd5ۥwc(c>+_bG"ߕ?L"xY7<=+CzW>Їw[ =[OםӰ=[rH왏P!cbk([g'ˠAr6Sb/"LJ4(yH56?{P u_m/HR6T%VzrdZcsBR>)W1@/ 1H߸Cڸߪ7 @p Aw8]$$!6]css>uNtwUォj׽$4 0Z҆(8B J@H1s@z—@oRe ΄# !@i,Awn\m൑6mݟBT`'#u8;@z< Ec\dqs͋(aW{g&ʛ<77r\ՔHh0vQB HSr%PnԻA ߵZr܂GD]TBvyGTD|)d|!)@>yriy=xz7Iw@rD EHWǔHRlҬi+e(%Ls H#4M2CHux\AhWΒn2T\e2F^pՃA%={1gay =t$[2rn!Rʤ=N t&d*'H{"3t - .ʒ53ǫ•-0Qn_PI[[Ĺ9Y\߲_sӿ,'6E%rZb~=-g P0Ư3oh?@o#:NW5(*MB"wKa^ђt!4*r pߧ3{+APj.9*a9f~ T@al m FI+%Gd]f成T;erCgk&p{I6ӗwb ]AcR r \$H#K&H-ԿZXцkV # yt1 VH~6IHWdlY%dA~]Prxm~u;]J)c%(W^T5@'k)M:qz,3f%]|;q#c2mfZJU13MGTKp]hMjlV8%Lru6vmRxVU7}&𱾢ZS@u oV'L@N#% /kYw GGB3W&$]VVTVd=CkE э@<:D (.!ZN/ҋ(6y11G]J&0zt6I#]B8BT%Lf 01d8I6"W "@@(nһ}=@VPOLwz[ L$I@|L1h p8p43 q-HL_o F!pXF1ʤ3,P) Y(GY G9~l yTrUTRQ@>a4*-ZN[ *vwP%WBJ*(Q6˵:3Nʨ9W}"$QJ 0LFSJ#Nʺ9 gp 2A. ,!R^7D%#p5trLVj0D2ЎzҁQ=\>   d$ GRir53b`tpҏ3Z~@q9ha b49aq5@|G H6?+ܾ+e5ύ@!P(4skfN kr92(Xζq*@) ))WvKp)M*g*<FI 3iMk`&ɕ  a\ Od(HA=Bɓ 92ȻBzd#x'y^/|piYbh@ t.&fso(A }0_~ٟsA'IX'/_N7puZ t@NY]-P![8V"&Yv 0}9Y Qeٓ$T%$"Y, MֈtSp{[݂PuVNZ>dȰp9T'not۫/>RE^ȥ,Hot-E )$G-@767x)`;G(Mm\8k;"!U =UYG9w'P!gf~9PVIDv_IrԂn / nf$"{ _#3o/NY ECxХJT w>m] QMVMm6Td)H$X ^:yL(j^ !k>Mj(= ؏Wߝrl%Z'?wuUkcك2u'ӿ mEӜ#:p>GYjL1$s: l7:-yF,^ zx^onE~{Ї-?x@Q#K k;нaԃ9DO-=/n ["y.~)@*d Y1C憞БSC3 tL 5a407;d]ydÐ=<[x vL" yL]&!g@g׀3EqJعjZ[ւ. ,?Vx[d>6;(~bԎ3eRcF\9@ ( Fj95ԩS4=4UR P`ƥl6PB` t |A}}Ew"AWQ#࿣u::]?Yb>б!=ہkC7u!q@_ЏyE/m43xssւ.AN9 P XӁ>H]AOO$m&64;FЊ|.^x,-yZ ttH1{r,Z6qKmkkZ|gGYsG־-%>w>/ _,$Ρ؎g3"&H vtt }y^ZdpE:{h}w^ݎo-=RE;pb&S{ފ`wk)ûAؠ_PWz;Hpqp9@9Xé7^[pr-t":a}C8"i5*`5e"۸u͠@toPWh=@knOWؗ72Cہ6O|S o҃c@l:tK5~<Ŗ!&KiJ2ĉ:аKqaQ6`%d.b +Y(93Y`J>Hb@d3zKX,&VSdPd9 k̴ΤA$??o Mx41ha7RB>]YXjlf7hy T+9IDATЯU_ BYI@6Dl.?׀}Y7p O}4zcƸ  ;.(ՠ;@} (mȅ=%_bU _ āLܽr bJ {\580X 4MGAqXRpw2IQn}S#*piqQa_vv Yۥ/GRefU u2% p7DBd܊P|{mPqWq Ƴ8>NZd)]\_V2oowsR;viiږ8Qs|yk8h7Xhw!ƴ2zj/.IFd2K C!n`$pSly#y-EOK ոԊwJ7`WzQAdr#r $(?UWr~L{q L MOfny?+kHGM8r+%bYHz {'ǂ%t9Q@Nl'[/NzÀRσ7VLzpWG[3Vdq3W=)>+d`x2F':Y(A)I9*yi?ۀ.)k"H6pE^4vL몥_ A8BQh1韻ӿT;^g2uuM XjHg[M: z^<EXCwRo=?vk7/;X(rUy*H_Aю: H Q/C= /lW'gVYK #p{[@rͫK5z ]T{ڎWe:E2 |tP{8Ip^=n X%&wP`6qPrlQ>bKN : *XTY@p't< 2GLApv/kp%<*DN,a_A'OqD8XC p2PtAU'q띾 y_q3?x1L8AK"9HsƕHy4.@˩dI9? 5]2W# 6$ːڠ/er&gr!0|Xs0He-q.gKAkv@)/hj2uj8n!V`rLOu9pkt nYwPŪé+?A`hȁM\l?E(wQhk`<4@ 1 Y8pXMHl#dTT /4>81?K (U Z;J-&m)q`bkO6-ɷ [Z-kq~X[.Ќ0 f<  ;U?'YjܠB oX&J"l ͑3YdH 7D)m}|꾏F6+%8reKK |Oy6,_ Ūok38 @c)GA*Jj F8`ՑlsChlgκ0\=Zrr .lc(3ٰ2 B_rt~<2kW8 $2BQ a汉堫lf3N;vKR{;ZlFcJcq>>dVRLa)a,VV ݺ@ ]qt4]ird3LnySu'܈0 6=p|tv;4=@9ePkӻ|Sl2[elc I"'*:L0~sFe$g~u238@+<Dmu'Fpev#J"@SUNhZp@ј`-PE-+c;5V>o.(N*5yxCN"C@Gj !XE7sv~ ??!*D]~/v50W=`-p]oXa p kM d6LRj:YR'>֖VੵkZVj{=hTX&TZB+IN TP Qaj 2*Z\iR!2"@I6jH@Vv$I-Q2%)(Jdz6x*RjI:2:Հ֐ L~-&֖5wWJ2)eWY"{!:y~{uTig%FTlr-eLqSaQSmǭJo6_r JڈsZ[FWmPeVU SH7n^Ba Z@y4~;?-U=BV7U@ $0xc&+2VTʙ} T2`08$^2a t `/2Ur,e :$Sᬗ+.7$աq4R$aMD9;HTPL5w\k[ic=9·us<[oNr$ t!P:B9KiDF+U3 +]L2{j+sAʢ]GxuC< Y[@+gd`y IZ`R)S tq Lh~jR*7LO_Rxg/ckȔj'dizN(:yHi',a\4vߊ1j\^_) |#%2\<+MN߽P67} 34Q<`z]7KzLvUF30kEM'),Di66xtS{e0C=I߹ j{f]>:_z?-ї ~h?>Loo0n}߀]~u&ku:^F=M(pW$ju&(14]2:¨I+Yf8Sf^_m@ 6wCL_WHPK\X0fqm?|s\N_IGl8~^b%6P%Uz9ٙlJ&ʫ\8a!Z;X:-A_MvJꀽYy<}6t3d xlpծ\52J@wQ.Jnq&˩{휫Ё@jfWT[d>y.F`Ś 䳘@R}Ms ;U$kVMdgP O:t" D; ;X,5 t; r,FԊ:9AYhA X*@POE)qJ'q)26k2b)/Lj%@w}PO^;tFA@Y!@W𗁟47@V'se/kAa:~zA ^Kf6йAp@*ȇ 2[+i Zh9z%w@(^4VSyvU0JJeM@y1X[+[bWI=Of܈rM TtMv>8@'uwH=u4@ip pJ DZ~J0BWHwLϲ~*w@H0hAINdqJ5-Ҭ)}%b@5 ʋ6G$8ekwroDm0HBh'r`6jkCtI} yiYz Dru jccu%dWP-Y{~`ao5,'r}#D/'0S5`ղ`phjiõ^7K%QS@1&nf)Hݗ}^Ȓ@8Y +'Ћxr}9r \w8A.yq(p=hot? dA\ ]˵ WHG9fF`:ͮ0S f88@dnr yWhGOzd},\+dT8uAН$r5sv/Q'dnh4y(>ӟ-~Ӆv@[R l.]I1A6m.3H}K]h(dD@G([Wk77&NgZMm & T\ f8^VPy!e$Nl' ?]ѩO.%wm Z:Sy_7;/;X`8kXZwNena->] UV3@2&4Rդ Z% aM@exqmX[cia&DS+ d}F;oR /%P |O${E0p 2 M5m7Z#;r″o}wZnC@TUP/߽[cSj $Ĉ*bܾ=ל0mP-JIx݀s]1 ]oNjAq9i?_0 JQFkjJZ*i Th KhھsWݸV2]ޭN)r+:AcBY!$]$[aFqxI:'NY\g]uI:.UжpF'v9{pko{g={;49K@{<r"]eoгYB N]6!S*ϒC= 0} ;?4ڑxNjhjq8w {W[xUYV Q5.Qޓ_%Pi^<p@fmOlY rS,c-Py4l_IJ!%[75j6xaZ ^I $\XHl Ph^%yI(Qxԋw\ Azyqa3<[}T' N7}@oY?x6bJ&9Y6~m}ֈ GHybƐS*ANW*SZ gmM!YځX z"A INFJ*ȓ^/`/9A3+'.xN>/@d Yfzˁ9K :S@-}%\+r+I:$YH(.B[Mov=-í Lu_)jPE#`ˮoͿm./oKeT;_ }ǥt41vKoyCk#\Wn痃O.}>df?Ic1#e5UFaUPKIW$Mς6ݽH@#0Lg('+wXzq^=yV}=a:YkA_NQ}@ Ioe$Y\׃e )@ kR@ )$줌Ti|N)(3yk)^5¥d@;I;О4j%@28ہm3ɠoO8Vn䟺iq!\J t#{01?&R?&3t$PaB-&.+rW$*4̠*t B Xo6`a @"0V h͑~hy. _樬J=[?*1MAz؛*]T6 lCt7MWp&V0nȟS)7 1"tjsa/' :` Y`:E| . pE>z@-u\ mJ$ t 诠]D7-ywm//͠*4EkA7Z:N YVS si>>Ci BsxiD8З2( mR5ն_ Lt*_~s`TSE= 8`hmiЂHE@s P)B@I+ @s* YU !&ᯤD@h;~8VOpJ[VHz~[nUI#5 dۏЦDF#^cqMe}Aw[]z/8V~#L^Iu}Q FTQ+U؀}ĩZ6_n_|{OCD ㄠDŕQtO~}OkۈR6.qjpqpkq@m\U)@*5R t~O6LP-u@=}LL"{I'z3}H9 XPASDHULwxȁ:z!=Fq`L6Ldw~WP̔%>i#i@*[yX<ǓZl)h @ W~ YS/UvN4}.q?ܓ_<-DC(;HS-= #ndIIO3mlfϏ<ju|s`5PAu.x)zZo2ZZR}[|WOH()DM!r3(%1H"_ކ_4f$69W= ňt Mdp4IwUtEĂn< mml 7#z"V la+1#3L8F[g&mz5;torhzwʹ:]u @{Y$41_ ÙcM'. Q@TxSm(3 DY]Ƿ|5E"|+ʹ 3 므( Q6@x,0kag q{i,;/.x@RL8޷O;uʀrd:%|_t* ?GS Sֿ8Lw%_ zݪwӣ {lwo[~?|lfjW"{(H>NW27v,г/yKӶ[ pwhg+Em|i`DgyynKij4EFP,dxֶS3@xFBB Sf*n~\@ };vHp)F% @ :#y} %7;3J-o¦SxoHn7/q=lY:jXN ߷jiB%D Õ9dJHTt  C[f5I%@7HoZO~Y&?NEN7gRXYǦv[}1p kdR<3YaF[BIz`fs]9xfh2hN~6^a4g}$7U 2x#7W:XSu&a.U`Җ:\Nuջ ^ i:3WWTܴL֪lbXNgwѷAp~N+q&@;GG}t.Gg-.oOqUQρO/M֓uh#đFC ˇ(3i : d =e@I P#"*' ."N$LIDHq (H-ki)jebjjKn)mU51Z l*S q;eͪ dSl?TSk6AkU`J!>5 Ez*qDLU}zH2@Z4ί6ﵠX [$Jg$`/9%6nnYW;OG@ mlz:ϵ:I?צrG{uw\w+l?p|ܴcohq ֿ߯wU2;qXPgDΘ @$ T2(A?ȑf})W#@: A+= xW \]=rr39{spiNi:'%/3$:oˉ2C %oLC$O/=AA\3k0@he-*mYZe<3كD9'rKT50k TR [gPɰ¸ڎXĥ oU8@HWNւ4Q&e%،A[,Ws#.@uAi=DnmaN-ftSBdȏ?"b)r<`@$d_T0]m#.iߟl9I8)ykI> \6+qNpx26pt%A/z2CIw}r {Z^I=7pvIɸ#ow20EeW\>$sCeL}FO@?1o(\*BNuyocb~ 5u۸oXw}W[EMQ6ӿ]-5uӿbfM^韻N+ ^6? %Z-TW-+FN~װ*i_Q R_S? ,#cA?2@ \LZ~8c{@ŻrO[ӇzD 8Wjg`s*:)z.4N$;T UiMgAfuojTW$be?m}2ш6wu|s/?f 1kR<Afg+vð E.`G^.Xv̡ dJ!6^3 ڒ^P?}ď3TRX6\5<4`5h5d^?.c'̤3 U@+J3"ǴLڋXur @eLwPwS>v)Y^$EY{je딁tDgA.M,] grr9bp@r[*,'*ˑ 8+d g.8 3A"#6T%l`[b ) t)Y2tW`of1x/x']vG.f6Qt!]Ky@-; =+E3xXRSփn֝pnӴe9i;Iqyn -pDG'$XYPǹ'H .@@P۵LW+9@-3O^G+O mh^3ۀsw^q~G/-lU]~V/WkV?Ok/@eL1C5JCG̈́#Md S@ &Y[ 2" pr&`j k:`V{TQv67aX5\kb:;kcƹ ' XNvQD:nq녱~kh\Zp ZӤzh|Ž(uwc>Ȩk?hlh poM~duǻ#TN; i~6ϾG_659`bZ[1>a>R+m^[fZ7g@ʓF3&5@T{c Y:^}@,g˷$8Wa",]Wʬu3b3fC ӿinE{iMxȎb(ϨT3PgD57t 4 w gi\3#׃&WDi?77Wo G?Ts~ ծj7ǁ?9 H[u?ic`eN=Ouh{N |Msvgu0MS4LRF?CF"I$@ 5CV=¥V" V Wiᯫȟ|f F#ĘYgNZ.asC0(^9@y8J.O,0.@ί)+M8l+/%mq@ֱhǯ@3A< tLf).`3Z8@GTRk,̡o+#(Rˀ r.vSaU󻕅)CGfX/}@fl`)ub 3i CEi ?jXiqz4\ G (9@'v2HFuB" N堛Hg&pӬ$mUniq-b7D{x?gDG 損a=kpeH4%M`\KFK6SxvߋM JG HIHja?(@5&M+t6|LO>sz0.'Ḳ}4uY FlB[L }7VMAӎJ`Nr`>(]A2QJ?HgmSU j7k4i@px/'=[ug~Qھn4~`-54Q?}v<"e(6#{=! ׭[͔2b))a[.ya&{"Gcϰ@;w$"s@f^sw;@Dqҵ%FhZ2وi{) ~Gͤ3j@|ચZ[~ Tc~}Kp(=pB~-|zR}QpGTp4bۧJ0" hpIֺyoAXGthHJ'LzГ598E@s5y1| RXF{ڑN*.gn g L+uYNb˰鉋Ͼ3MҼ @xW:9 |/53w: @Ns ip(" :d{Ͷc\z s'/34(;' 3x]O_Kr=1%OEZ4\9"dIŀUIKԙ.xxCgYWLn Z,g)gր` _yjf;H&ȡ-Lo?C ;`@N U}6e \ ML\ƣG XȬ=iSM&$3Lia ?͕qS  ET6OFXIkcek%L&ӄpQHBWke_WR2F{~,5`wR@ \ V|8b& O tfIz0dxA/}*Cnyx'c/!wÉ%^v=+6_S[q/b_o/ jhƿ2ki׏JLq)@GO6%G'Ot?X;~OYK pY#8f 7? z9ɿzS@w^#J`=4`+JG\%ʱ^ z0NXulH=WtpF8@l [3I<>r3j7ӿ?uW㈏J[A:%TpWM4/ 0^ ږf 9 3lcmP}vb?T{Nث^6g+o 9\nb;m9+8e)0,/lppu kg}73p8t%vDX 5xt IWѺg]9@0J%Ufa $^ƈq@1)-RNI6BUμGۄtji ]X-ȉ)cb 9~wA(.x3 u?*.ő!Hy'7ȑLgLSZF1 @EZ*$R],f(~SK }=.ZΞz .e'YM_V c tdE'ƀ`nrv@ )ZUV+nW ?6Ϩ\̍4DˡM&jS @Y$5 @kZK[k41WmP4.Xw 0 Xf~p)z}Z/NɌ]%J&_{yt3](b;ЁShKuh;hkmw{-$A; %X (EZ1g¨!М7giƥgʁn>Tz矤5M$-m)I"E1ަdc!rkujs?9ֶe)p"_㊌ B\$2Tu/-Ge :96] F8Ǐ~GQF,Mi/gZ|~Qw6GX&Ҵi1N>뚼^S4jͿLRcѨDw} tr+>ep(ǀ>@N灍]6@t;=8@k_@D48Փw(sCV%{tNKY%@bl*er9R? }RTRm͝БrQރ e Б)-p4]3p~Agǀ;SMagC&S뗸`Aƀ-6/16ƽAҬmn`fMO% izׯ%U J'.2\ (ZC ?ZigÿAؽUB#fiJXFam~d&j~f^f7qeRJq2hr^HW-ŪW O87%殺J +hg!1?\zL6io\/l1 ""UUyqEiGNrA+r2`$Q n}L b`)Y"<ו:Zq*|k3@h{h-@+[um *y9Q`gy"~pORc/ f8y )@r˨r| ԙ6J7K7MH4 $BI@&$d an4)Jw TЋЗO~^_S`Y@ _1 XJjn& '٠q7-)]\<\&@q&_03 ;a)S?K2-oTKW$P*t\[^-8ֹpك5wtc 8uHqw mX9,ˀx :Xl&|:| _B=Aa.ce`?@:3{d_Nǃ)cU-6N;Vh;X|]BJ;7bOUG0OT,I٣)`C_6Ƥ)#z#Mz5Pgo#I]{Ē wS~w-3`?9F^J/'&9.z('ppGM*kאַSے7~ %Uu r)O:{o)woh:QзuIJxɓ _iw,[efSDl1]maox6v=ӿٸL{i41;޿fA]G.\ludQ'mAJ>o@0F7+w++էkw ~e  M(`s@RP2 TIi[n8tґ#tn~֮Z<ݠ  8Gu0F.z#jI]wDYjSMF9ZwOȾ)#]q^m $J,>yCm 9@i @Ulfkl堳BWv'[1y@ ,tա6^wAujV@fNYhjΔ99))ň MtSou @z].#yYHy ?d= E?A˙è|`3$Kqiv#e;YB l'8I]@~ DŽnt˙6ku!Uҡi!@ jyS| 0YD)퀈X)7lf>SR@r/j 48Upy3".bR4-JtHEL=1TO?`()6r7Hg(_yC ._g%fep,o)}A'ܲA>~ѥVہֲӀC+}Y^ I,Vnjm2q L-.8` <# >Wi4'A_GcY['xxϩ)7#>"Nk?-t9cm򹦄And~i*}1q.1:>)`NxuAm@v@@7м)Mu_\_KK"oA}Eڎi1ow5WtAsU\<𹬑Ge4AvHkRMN0$͗I]\$6[~ rvV?b-0,Qr@[%wrnHNnЦ9T3J6@ZNb^ :%aOf8w xOZEdvI P ,օkZ xpC> mr '>?;^] mZ: U[f|Jmw G\nq|n@ҜG:$[?S %'榀T6l>8"-Lk-E  Ve"B.WΈ IV >V?)tNp< $_I )~5_kw렠uG, ^ ̕ޓQ'K3L~ր&ہ)Mp++򆺅s/@#"߬ΰڥ֏}f@e4ťMh;$5Δ4qӿR{a efۼ[}"] R,n\Л?HBד]t [no*'a@{m Á9t'.h[q^RY w; ]*JŠ=N;tÕ(k 覕}_n %ϱqp)0s]y$X JȜCV߯?FnTwj'ټaɎ3W @JIHS 2)z._VY  8)~&ۥkrpebvsA~E@Л( rp.6@1;XE>x XͫCUMյ5RQz[#7ZUN8,W&95'ۙ@z#OH2S&GHϏ%r*G5" "5!`S<*@Ef!: ZGӁ{Xyѩ;fկis~3I Y:KG8FV5&v@[ SZ%wI5lBȿh) hM@GzЕЎC1݀6G&c2շ9"N7.x^T5@Hg @"jA7ӠkAle05dR$~f73l||-x o_6!Zi#d2MnwnejSmS@R<2Mke*Л)[Dc&cD@Y[>u ZD_G2I4`I4/o_߹f@Dٗ8!D'oryʀf -=B={7#*oN2OTIr@>==^ w#KG"2tHZIkֱK7C(pULpL@?zH`.f<\$@|)aZڂޑ }˳1B'}ė $<%{3$,VboL Qy̡.pYcen-;{N80]OQZyc9O&}8Põ/&}[p}=qu4ܮ4iO7Oe^1EI owUgK/,20K%b$P4 }Ү'7k^{}cXfSE 1zl:*R6"֫IÃs 9$².)`B/}u^.C6oԞ#P,& e5F5P 1Ҽ@='X*gneK9?{@Xc&OXN!y@;fQZ!'[rTHgv+f"gЇ^Uǁ+O@<^ 2/z5릨0<*)vRNrݔQL\r;f\Aծ-q]O I\9Z}ĊZ`# Ҁ,Zw: =msMm2@ Y-Nx{ȅp/p6T eP H: %$`P-@KYL .`)+kJteNKe蝚A3yS=ooj~:u7-`H:] r')rPG@3rO XȚ{ߤ @Sk"w9"J2mHk2.0KǑ(r {ofŵF!ݸ Hĕgw%$!BHڸ4t7j?樵zN/=syI*R5;Z=g!AN# %kn˛;P*y Bd p&0Zv]?‰A!YmiONQkRV,6+, *]f9SY,e;+X oRjibD vGxf(IEHH@!  7^t!r-b F c#nN 9 Bf62Q <^Qeò_+o ~GFaΞ#PDAU. ̬0 @m\jfl4}Gb* FGՇ5FG2j,l4Z]E@ U v1 YM @: ȵК2@˴J3@‖o̯$IK$a eNސ Jyӌ Ԃd'-=G6qWWÿ[]f:+%t"=Uރy@iK`/Z;9t*?SHMJ,e{'1$P {Hnv 7De7/n׈Ug[b-'GKcѿQSb0jZ?5N/蟽EնHѿzx㴺_N%]L7)~>~=z@+[;Df'6f?+n]v x e}D mX:pLA?AwypO,;y^՚uI=W[m5QG/hO10G_:1X|l¶RgHa^gb\U7a6?10 (`"b  dy 2xK& ,A2X!.;Q/6[C.dJu苬 hvr5p /0E<\bac+\/פq5hK9PTvkHo@`KC`UPL=PH (!`8gԈ&L8ZiҟVc>pH`38tnPDQR|uvm8@p, c@6W2@݈iEY>p1jۀd3mlְu*6Z;oaT. 8~5Ym~,{ytr5*a@L!5kTxN4j?8ހ(`bָ`e eQVŔ+yڨ4Э@)NPΰ*lF/LJm`A@pYz`M8tuv@;72[_Z~LXOl?^Nk9͆@!6> g#PY?XI"dV&;ß$$+iA+.X ld@Qdb -@M$-_:ϨZ(Ez ?*~\Y&#t#}dO6Bg)w !(}.8'9Žy)V: Kn]nF`죯)ҍC/y &{eTONGt<|~fqpm.&Q֞X-N8, # 1 rDOktJ⼵z@h dg9kp7ߖYK-W.CnY%t)>('E?*M̫x9q*y 8BY3$t17| |ZlILLݹ@Γ LNeOh%;fFV&gyFMt&҈KKo!7ڭpKI+:ՀZ} dׂ\z`.@~h}/ׁxN}14h:~~90c t^ȁXvNeO@W~' GP78P. Ў+A[um7rl7䔮}\c4_A_v rgkk`0m r`5xX99~Ot1b!8?b~+7Ybt~Cf YV2,@ct%+"+J$:ք(nX (ed5LPޒr>Df_EIX%+@ ,a #~ iE-MY8;( z"z (ejz r@1gwWq@j]ߜݖh42Ir plK2mqSu0o,;-m ۰׋|(NW {9 }Lڂp*@"@5J]6rfGA_OyxD'AsO<Զzz8<9Gs+fzr>pNGh5tjY< *Ҁ&VXTI;T4  &HH:i$^b@>-BIKy2Z\, g7AqIlűen%5 A)sB0@ه|f58ڐdE5>k.˹(=[(8oPlJ8 4xbk-9)ۉ[1v |w?l(HrM1Z <>~<B4!QdE ˠ~@Pn=8E.Ke .`[hD +YLXe!ݨ^" vZ6XF ؎] 멁`꫈,ϳQ{hf[8=Ow@@},j((nd*tpiy,im#-5З'Cd4)LKOd_ -;z!X9ҽk@$ֆ˩gְuP'EU G9op-O_ce[Y*;<Rw|V vFGQydV;[,/DbK0 bOj$/y T_NdĴ& u=ՇnBg 5Ϳdգ@ӹq9}t{Om:nC>vɰu4ZnQeq嗢loGw;hI>eޱd;8Ir@򝷛\2N&cL&f^e6?O<.moa<Щ2oRB 5`r8 (HBXqŲk%#1higwt /yPE p}5/? ?VYE2J*`7*M45J: ݪ?N] _[;]<5zW2$# QWA7bҴ`6@Kf-P ro^Gt]-軸,Á4x\(~? Z ̧sl$9:I[\'0\(tm |;KyKcpr#7,*!&@d7-l.P ABAZhHra*s pl)(ωH7 1؏r0A^RluJ,߹{X~8z1CP$i2I#LjNA(Z6?-6>5nT~uaaYK:Хst$ٺ6ۜfsئb9dVtr||td$S_Ziί!r<2O2{qBPZr(+r7U|䱉5lr@ПpQ:`>>χ7ܪ u.U2C7u%@=plph$,oED.ғ I`H%z 98G s8  PNw} hG <$3@XKhC) j\z 4JPv cip R3J5)uԂ*3K)Iow穲*\hD Rj!PIe44C=NqQbcŕ*3,p)U4GA i \'Fs@#bQ вU=Cj,MK,PIe# @@e r"k 6D`eBCJPeV &Be1DVJ]$$!{y+83bq#}H$1x 3 ȣЋtFӟa@c˱ԁ\ ȧā\be7PxvJ8;pG{AT U6<'{AKeh!%bi]#PNѭpC[\luOqVFU PG2O|3+W#1TK*AD1;'vo*9fhQ׫M tO;V_}O_j*<]w pz^/Ŀ4 ?/;1 L|!vYaot^xC<M:`(dȇ/fFJ~"Ծ\Y-5[ {%<@рJ{՛3inT I61D96M^kh=%>9HKZT}}B5d&gd` y7[]6#a#i!O%`d75x/0; Pf' B`4 6+M^/N\R:A\:Araܚ9_[z,6cbr>d4_IH-lP˞6 j.I@n)rAֹ +mX $Ѵ=L4I%2jLC5c\"¼6e}L#!ЀXR;qٖh$d'-plc}@Yd6A5=@u,<ɓ/'H|52$C3@E;p7?\s!S?SB \ GwnYw\s#M7&v~Iuv߀?.l(P~-How2$/=ܡ?9wnNznrY ~% EFqjY tv`-a՟n(5 J;͐0ׅFM/V/`hѿdK 9oDܮ,TgV8&M[9M7+tu1ZAJJgK?$l//7p@ndaN_ry_qb}ə: ӍEw[/>g@) OC [zWj . pzfO]nw",Z[Gԁ&hPh+`nf\Bf{饰a+a4BxdiTx74(q Ai9$S%^M#=  #b(h0moeZj1 hh>=ocKy@׀{+@5d%P^ LMr͒[,q-+ta8e3 [B oAFɠG18` @v9@ ZM ˘J 7kp zC;S#끧_?dks̄IHDp$e8 l6GȻgG"qKE)7rixd %6VUSPM\%a56{^^s) cd hC9!2>ҡBN/@-24 x 0Dr0Pc;7$(?[~U515<H _/(tuv\]}E{|l:CCQW۠#ϥ.VQm׺fꮩԅq W! >^%1MsS׃>J.{["s7 JoP_oPz} sFzd|haC,i8ިo5/]ǿ%/ t$?7r(P YR @"ym>!2~:>e%[;ΝV^)d<7I| "u '[Џgżș|f?M{Ħj͠ YW_U_M_}X/(꿛< bo sĮ֛!SVJInq~=S[h xs(VMNֵ2v:xQk=_^&9~'υ@IDATӃ`һ@V88- s"=A#-ХtP_x|w_mqn62q`kmDҜz bpS0L~\ljxЎL/њaQ'?r' (L@BiTV-{ x6ibbΚBqk d ҙx 2%hA) $#௦Z._ilr=ڏ9& c`܊JcZXL'mds8C2KWV7hiԆ4bE#h-ƖvMn$ V&k7UgW9Fnw|Lo(<~Z8XZ蓤3tW}_ ":BoyiwQGo>!W["9 ea/+'[/苠: Y2S/v<Zl]`e~,udSdo ŕxwK6v܊kA#M:]<t Ni6˖V2a{i⏫x @+\ /[n㥟JIp@7E?J 0Z 0"iF]l ]/Ql.4@v~͆;Չl[d/9t&% rlN] 8âo< GC>URvgaov(`H`mJ/ t @ykQߠlh{nPNK24I\r| #WpqŅV\1@C(qY]dTMc\̥K@b:N G?\]h,Yk.3S: Cz>(g[qkBú=ky xJ' |H 7qqHR`ź(\n b IW" ǒ@:/- IO {D:;+|/d H_*vPr AtR${âVA N @ARV\FB89 u$IZ@ 4CQi @8i50L꣐Pa(vu?x=:}xQjz]bkMk3D>x6lh7DHg #4 @/::F/dIr^AB-ݥ%xȓ}A/mmu孥/zl'HR"yU M ?Ho6^ / t㕀,۽g& /Om_A QNqG0@ eM9x1n] ?} 5By9z xKAu_ Yzd J*8Hnpie1;M?)pէcVCvUvso^g>D kEX%=PG/.=ߕ(tQaci RnM6.` N Υ Y+]d0HڰdSAxR);(766$u8J:pŷp u<6e<̨F7LKژZc @/v1I0j&x[gv=L`:kh\vۦnG6ަE{:Nk&!,X1l  V 0Pv_A6.&uy M߇qoV 7li<\ɇٌ8` "" }R@H,z`+ 9xr>8dYr޼=-(ZIaL" [ћ nu ' iN2 H@;pҶCqJcp_~]?$,ںˆW!+:@2l_J</h2@H.uPf"S)b0A_v1Z:[X: ň'F'LuM\zk Hߦ){{,d;uu<9PjZR`Xa9lbn Fi.9dy@+:S &.>A:Q yrFsVNyKubB| ЛaldgJ< ?j@kXş-Fdkÿ9oH ~t!{!AL^8|J: n3}P&' 8In2$GvH+0r.HO.p dBWAH?1 Φ ??ιm5Xib#z۸'5hR5'M ,. 6G /lbHjp eߚ:ه//CCž@'r!5%yd|! %WArxG;l2? ^>KI|ՃLzo; .R.@o >trH<MZLi-*yZyjѿ*Vx؝@D/H+y^?[ Dc57?n=~//khG=Iwr }iSG:TG5e6ɉ`6hzXL=x Yg;5 8FK5UxXGk8D4fՇe8vic'6Yplz+cC}]eZh_>b1eaYi-Iu@~&qNF-Ti"G3Ky'`w:H`7yMJ|*{`{KžrRmudtaof |)M:C)D¡B_b%0 I HalRic@': hz-.WfSw3c7)T\r'gP*K)9,I #9Ω$>K,(&PK(f,jY< +iڊ\ d(tڜ[^ 1lc4xԯd`S) J4(1E@ H6U~(h-lh4H&zcOg`HL9= @ns- i⒀8/M 'aN/}OeȾ 3AۘAh]ws5Tԁ k*KBmvG)$q!qQIb 5jhs:qyt(~b46cѹ?J[6mb63\I!hIy@Zц0_I/\rTd; R\?@N2d  {޽ )XK٧nTWKwW -gyA $ϛ zlj@/a t2O'RYG>Хjt|Ԗ#gѿJS D%(G 5GKo˛ q?uw?_ 2QzM/p9C{\GxW"ש 试gLH~gQɹd1.ZenTR]̰nbL$vϵvO 3Abu? f=AfmA8q ݁ot'71O2)XG@kЛNwo@AFڧFP &t;@kԅ|W@VA~hqV{J?`P(LPR@% {x%ݸv(۸ ~7Јwqal:@$` c}/,TN8Xz#E/ ǀv ޯ_ crΗ2d ԃ"[oy){%_^ygO\ rl! F c2toلH'H(@"&$`.X,?эHxHK.C @07 rȅ'fK Ln.ClXf93H&0}e Ћ8r(c&z(XeLZg}@_Ŵ&ú;zrp(j]`@՝z6pi6z'׃nz/:C@9J9AEau|&`;;1-K0D| `i%lA/7tvidI*Hg=M^I&$炔r$.oy/P34|vvH!6 l*7r?H! e,P^204-hGKPl}4\(@H8x]Q40S:񶦁 oD+K,Y!|Ԙߐ pA2.j]1C^+xqZacD&HNɨPkH;V,cFw=Mb{~2Φ1 IHr= <9R2p{9x4@pxnr7g<{$SyHJ.xZo| "Kp,)wyPHO~iE. mL@8@3 jŊUƈ6R'w^YCZ1K&)fi&W`K5t1|tKݢc_,l?m]w.7BrcA+t&zR_s0ƾ^ o-g}cOOB_u UnSnYodPi9BC0Фg[G / Rn%q"tK5qL%>VpH~g1H(@cpTD}t flt`[-c.t51v!gǷ/\Z-N!ytƁ.2A_`P˝cBZu3ca27^9u@7:?;(9f )vϥa_ Q Db40lvWNЭ(b֤7;RН!T)Hׁ<@]n[[A_op;Î8w({f~NG_@/`&ӟgu~ K2 Hx@.$E?Pu li:͇I?dAݜ>4Av@^FGܥޮϰ/p&:QT ?ekBSr'>Yi!4@b=!"V '!`@",!vL@ٖU M^K׷d%}!L͡#A~r 0E"KK<,grm?u;-4Vi7@fsHH$ `h /h$oqjhG )\Ў@5x CHe-= GKx]?-0λ![Ih.cہb(*iQ#Ҋ\ehO[:PMK`( Iԛ;r:<'IyN,x qr<vyw@F]z=/5+ [ .$@nĥ-'CfhY×/\2d>ZBG5H>-,$F(8;֐"?ݶhLoa'j{e~P2xĩy So8ڕG w+̀d -"Td{"/9vSM0$îW$YYh$k%VL(ӳ{sӒx(I%Td t~},H|9d o3{HW9d\vc|N<\~$ F {{NK%{u zx[@(o.lvlY?YF[ʫaR'vED@MVJgVRsJl\_@QvJ,E99, 4LHT*)N`T*<W=QVQa}_$pOTD}? X/7hkzVSA_ pܶ1_jcO4cCVCe[&7UrVxwZ/ A&h_ > W ig)T) z@|Ї@[ojO!Y0cfԁީY*!i @[=4AҖ|~aKgQBas ;2@3/,X njDJ?`D> b ix$8T@*saqɰl,$OI5}(K@@S$ MYp@݉^}\<s/A (c@V@ Бz0H+7In8@\x>sO4Di;&dd-hIKvҁ [ENFgr>P=,p:k^ [~m8͐r\=8Hqz蓺Y@;=c)t[ Sld;[@P'qwTI% %t@Z t3A'`o$] |AOy )>2M9& ]yflaBm/ R-K8A>*f$g=HH] at։DB h`Ԟ(yj~_C|%ooMCm3ZcJO $N2v_>A^Zwݔe_n|[<ҁDJyǪڶ4(VVjLki Hmwt!΀7#C ",`wZCGeNe,GONf9q@\%'5 D#3@);@i > Ao3xߙǿҩ,K=q%ă.*KHVB$+*+?B~HAV~On.F_ ~CZm3_*1E9C%' (ʁ*_@5Osf}K7Jk,ޘ bKpZ:?'NwwWP]? R:y.D_\8vA]{q4&\ A`/Uz(phGu_A=^{i"ܺw!-[HreuIiO5>ճn<),Zg(5aC0oۓ4 Piy̠/e.N}~VU@ Ok`$[M~2R|3C1ʬ?o227L.s!*ʼ`3A̸sfYhO5eo&=6>bm} I`h_ D?]LͶƃcnxI6Ϊ< r#P6+e)C|N~R LI/ a"Aǁ hgzѐpeʝ)Aõk{zVжe. Yfӟ`\t#X`nMErrUh5PKt'nx;C7Q p{CfC7 5Ѩn&BczLhKHrE^oAZ+ɓ@~K֋!i2< } U>b{R.}c rw?;@Fe\OJ9% 5Qׂ@~)o:UGCw[ÐӝAɋ$"+S[1-xw{qw:GGI _ Z}:XA$8w=w/w!hҖm>+QU\ r>jwyPa$(g>sLhNG0 Xc;brY,=I汚%Zl@LK7P}T/`0VLXeȏ;ZL/I@rn({m ܤ @=ׯBS8&cըJU~dT cM @- @ZB$ !=LW$1#Ɂ9B@ɢ,Ƒ' NI&Jۭ|kT"p # g .;Ea OtfG>|r%C>F+h4L ؜0dI52ot@FM6@kЕ.Gc.n@e?ԕh/ FqV W-Zo$[.\IMIt9v]c/tŀ5| >ǠkXò#$tu1f:VYAe[`: *Je<ЎMlf#%QT@mX  61/ͥ#嵶yiO+# zh2U ӓ#E9q,kA~d7L6W$]&G~b:HOɇ c)9ubw; Fn3@IXH=Ii&MQ{2ƌMחs7EǗ&~s]3{3Y|ch^AHKJđ#tzVƃd8`@klBdH~2Dyk$֝WmW<ě`t-M[}>H" DĶ'{8i!HHF}d87L6l9hG+idҙ9 '0#'Xy^)dlHs@zQ襂wzLL]2 u _4BS/RZ2@=rln4r]Uo l2nyN.yp39H!5@D*2, -fWňՙ_FJ_`4 t04&iO_c xmC[X`ᐦoi1z [u~ ҙ@_~FWw:rzܕÚŨs5q0mR1M?.\ = )[Xz Ϳ8]sZ㵫5j.ȥԹ L=Y_Ugup% [ GvW_|Kp!Pka poX'R(``K(` 4"#T \(<]z+ŅbdZB:<Dx킔Mz +4T0V(ZSR_0L7tP?l\X+.F3ɡwlisz DžcsiSpZ[h);quZߵxEg=~ pm_ 2%ILw:}O NO)]{z@F>Lee7 :t)=PùX{/zpCdlFNYsE#JjY,g# B u9"T~$MG$r@ N.)?s{au[q-SN,@G;#C7p9vJ =?W:*w07f@㍁do ʿ Z 0 ]Xo!&u&Xqj+g\Hp귬:&S qH} Fn_[6ɗR )GK<((鰱jۂ !R{5Vւ<z AN^9z0X X GrqO(=,4h2]2GS-.`9+@sЕtE}pF~ ڂ⿱)@g6&qMqIJ-y2^ 9d"';u8@2[uf6~%Y/-HgA_`m׎{]+^+3o,h`~Ӏ>g'UЖ Y@_vel(kh$De<߁!MF QN'q^aꈫrۀ Y/A%|"EcƁ (% Y>}`P&dn&f@>& vq9 IL ^L@:>N |iI D f { إi]{}M7o(mǪ۫G5LKޛWZK;Pb3h81'H6<ڰVA3C?l#zpAxZXI) [?S 6RH6au6 %>НtB/Jr[@%3dA)!  ^/CAnR9 ;ox+ABI^+'k q]?I*ۼz }o=m~nղH>Us]bS$;:ɂp^X5_e2֝UV'DE(Q#QžEâPIs:y{S뭿8`ֲT%|;ᩱy6wydH5'0e{Oro5.5ѿy \ڛq};}e7%:D=w]3*;+Q8kE^bOK}=+V9FnSrvgC7K3k;,wDt2IgiKuZ[~޿),O?crYug[y8}ݍ =='PzvнcOSL Og Y rJA X<%c%,]|od K.Ao$'J{vS!$h;6wvk^˪!hf/([.S.OyUBt ^N g${ƅg.6@$vF_, A6u {L{+Ej`q.{I  9KQAqoZ_ J9'ay hK;='Ё9dv oLť;,qY|rTS?$US %@$paRh̀d2\>MN"@D~}8cD'2 2{`oeuUWUS*q.Ͷe$\BYK$ Iid,%hCKZ]U^H7Lg7F 2@\ RHoҙUr. %[Ɓ&$g.O@V7C ^ xx ld~^37!-TQ)B%@<(H@^"t* an} q1ReJ>QL&,MQ&tt<+C% (;?f*ivt4Od~dnlMḍZ''Bפ8O}Y[9 U-t'0\pH? P;p<]砦^?:J7z]I47{5t_:8At.H_MQ\E 'ཥi&Dk7_߀ԭɨˉrL`%dI1}+k "Ez [' 4`Nz%p>豚-@s2ZiTdGaO|Bwɒk@gN5-lSN4:i%t@>˴{ r:HZ$t8 L בwOmyW$_>\`tT,YPdǒ4)i,B:NIЀ rH >4W_L9yOfK' 2NeﰆO7ځt -@5-,3XRH3Fh}fHؤoXF#EoLŏG {֝{GE5,?mp1׎ OS}dB sAYYOQA Rw?y#+seLKc ى#D#A.F"0wٕdaLq1J)n , qY3VYI hYdl6rrlakZRZhM>P#ѕY  q$_t &r@IS2x$vt ok^.xWq-[ԃ`b>kn׫Tol{ eW |9[ G ?,q^GR*񳒏t#3/Q4ѿx3Tz\cJgE<uf@E9PhB%D<*aFϲ3:ZJ箭QXO/fvs2IM kyYT-6jHA8Pk_^0%_C~ &A+ӵߛw?r9~ Ku(ȕzփL aF+%W u rަ!֞N>^ZV^exޭ_~L}Z?ȳG DnP  PcAy˭&D[\ɌW?m:uorm70KVLnG'9m!p*n> @/6MЀF_- VNhZ gƤc58f/[DR I5VVDžU:0uOKᾳkBy)z &v(' g_/@'gY9 WA.m ZGn\(\]ς@nM'[ kXY,`[*j9Xfo-a=ìYrT9'Q (&hsYm9,fE0s(8?\UTΙץE;cgl-1Sb~q/:LJvEKk-ȷL :Gl:8/pmGv QPw|0 s:ү+tipp#)ƈO=[kh K0 0\?BHu/ͧF[HMg;B/؉8zpة$dݣ:YuXJIGLa( v1TB9TJ0ئ>ВfrI'!&'B`* &=ã㌆@|Rr!V]) 44x- ??9?@$AZ(/?w=HdPco@=dǁM:9RV \`w+1H{fͲ4Fg ;VkU)GAĬsMmE`-WZuŶ,FL:.n= tg&(K Bz,Xfm:]@mN*ͳף\[R t dl"Qd ԚA~Z'ZA< eeƟ`E]V*tsO!t/>%N=&7-Aį`G` _6Qd#yA9d7[}o?@%F@Ir0w}Zbsk[/OE%>w pN#;)C]i>˜d̓@o2,w,r3q, r9[9riFxÂ< ((bPDJv̦K]p~9ʂ`4h \tR54b JW/mU(N@0WEtV@AtBdkAW[}dP%Aiz5oSAV L?=% Vz874@i= rgkz*!cMW]Ok%{AD_KJy9}W"{(`d u ;* xUulί{3U#H[ zѷ}gX6س6iXl}޿a)m>]ng >ŷ4mI /|ᝣ@ <+^6>wX&0J H˂($\kX(8!fEDs ^ϋC7:!1i?=7 X}Ȍ=rXָʠ<Vyvq**9H_6StPнWdT`J.ANџuƹo\l m m%BC?l 'JBFqHF|X<{_ǷYuWX|86cD'[%nk `~ B; x֘ˢnoODѭVug^ӃM9 kU`g}9``#y z9t >^xmLhf Y2 2elc3H -zP沂V \!5I6#,4vֶ=;nV[;KmgZ3Бnd0i`Ow'ݖ-4[}ªڜt_OAn_O2$zn 07 @_*P'%"SՌd8]8zy%8⩠HMz $G-UZX.P2L>beؼ*l z L& ?0U)(lpPA=Ǯn1 khz_FrL2ARvjXG@@..? _O1{l kX+?j.O3~&NJ Sҗ~ȥl% "[@*> %v N`|%;MmǶ`n}vgρ}H {f}cp6p͡lOAIÀBVXmxXދ;Lc͑Ot<@its@Ӓ`g1+Guq6;b9x&P `wO_.tǠyemmi ۠OuRrdbڏZl <|ib 7G Pg{ֺ)sRcVV՛{"ܺt_Q0'()7cA$]~dzz}!ϡ-]в^rn]sW[=箍zc\~3GY $0H Q͋'7̧>E>$WYO2v, 7k 5y%56wrB $PB< "A52HȻSD9s1t hC-vd' A/vXfzp > ՠܩ:!KPQ0Nꤵqr hrADzAp5CPy6W7}oM]* ֵA0Lku`ZAiFp\;"=j4\e e^1s g;u@п^ 8I~J6)oR}tf \'͜ ɳ ~Us$\O|BPcm,%CpeAcmurbU]>!+*пo6{g a _ӇVm!YAt+v~+TOXm]W[ [O$}W{?J%z(c{_?aCBn=J֑~g+Upvv+*k6oW&e &_L0cj{%hNJqR'R&X%]mޞWC_uAߴJ7蟻>G=C6CIwVmN"Js߭&|^S561ZLp{ƶUvwt1g7p=_rď,ۺC!aʍa 0,}_hM:X`)5X:J  ɾI)ʴHۻI&н,d:S,25gT*ڪgdʃ߽"q@c@f2`W |gh lf*Aװ#AB5RB-|ڨh{ȱIِy@#[zB+M~@=EXD?[}؇wyZ흗+DL)ήO?: $4K܅n*1P(Bw-09ҌDV!jNh -hRLs RN ׷hrs j6$U'6@{hבM[ LkڃVnГ\3=ՃA@{Nb*QqH'SfjY$W:< j W!;Dކxކ6\6yZ[2< 3EM#>_Е`߂cKl= <7o4a?di *jܚ 'MK)ɻw4пUͻm2W ǜoάz0H8悊l=~ -9S6-}6! uhh-ܜtBߋC9|~ 1`vk(\{ڎWk`yds!ʜ&&`U[v*lPf[u4\k!lݭV PÇ=?` {S}H:d mT{j}ol hK%4sl7^ۉǗu$\ΧOnl |KHV$_/&y%Zwj%„[ख़.QUJb#;e5ƞ zVZ,58C(ud=S0[Y\ț?XT;jwib'\ jGPv Y4Hn q I K@ܝ_$K#Q\C f:ў(pߌۗ%@%ӟNȥj/j`?M@I@N;u@KDfY?m{rk`Qq1"8~\i?X% ׽me,rWāu+m+Xq`Nf`[4n::^d2D, B;,MlPgx(G>K%hCK^tT uH@mtu"G @>Eu,U bՓK"m%@k 4K I:X^0ƞҞ@1P  _qMMZnW޳r5_* ] i|yiE}~H{񁸈l>L>әH,KÀ>L ;RTC@2 {3rnbH߽[?}|b=dR@)$J|qOr=:^nNRT\.=^# l48M>-TH!PiF ZԆvIb-Ќ6j2f JQ{bĒt#B 3ILzj@o殜 MLW& ݁r:Iq2sǪ@&=padG3R Yc L}ݮB-PoP&UQ<>A9_0Ny"wBdDAdO8?8@S_A@5Sez6 A< ]moC7su2cm=xz0QLNY68ThUJ}Pz_sWFkKq{h+R悀0iҼulዲGAUq5؃L7;_$PfSAsis0ƀh-[ 1~_XOc(|1> ;0}đ^x<|*A H!6mDA<.y^hwK\+R\@m+=<0<S_S;KX &j[o+|ZY[RL ᅶ>*Jhۼ4xaz7m0w 'jP +{5eiп$\*'B۴R޻m#;,*>Yb~C Zol$0FG}+o#1!/)übrp U8W3lL&0Y2uLf-%XJmSK?NaԷPMl*[4mugpzk18+/::[\ (e Z9ɖإ$=εg`6Kz`=X<`cMӶkxKLrx7C9x[B@S7oX_s ~;&Mj~?3 x^h[Ocrՠ:TW=l4]%;^-T}a>9@2k-b0X!пI`I-h Y ,e5+R6Rl,2jA5 00kw=vA'Z5XE"~C@wna:Q AA* T [G }|•s6kE\s:P(?w4th@: 6lSPA;&4KB[@V[B$qo =yO={:v 4ހZxZ<>WVVCG<>7T? |+?4{vۇ<7d/O QuDR9Hg>8YNAץ1AWg 'BОHz[90T} T֐ ȷj>Fk]Ȧp*m?mrs5"%\`ze8UP: (`1Dx3Ye3 +>{xeB/ G}bn]Z_鹠&ܯE. !p=ql N^B'⏝Bo}@PS_п_0P +u$${p^߀{t`f dxZFq{wCy !8s5 y;59 ﻀZuMwؖz{5wa'Vy)Ty,=aHʛ UJ04 7 @E#+f=S!\\IYm#G\YuC\_tZj+0޶YL[x~j3jƓ}.P=hl!X Xo<|J+}i5TOC$i^AF)@oH?[ k|` lV5@)KX +Hi؃r#;%3lVm?}2,l m[ YOxFZxo}|?=MS}X 9(Z߲w@S7_^MaM@]u"}/K<)f]y9ӥ- CvTx7 vСMN3g9@>;U I@rm4kO+ 8 V׷'{ؗG!.PdEP{О@ă#q~@G\?` +NcɿO9X"xv o6H%>>UGZR);C2i,d-_aϰZ Ie{fn X:CYRod)@-J*a/*kρjPVfqWzzN1B1p–ѕ,A9@%,8x;@J*lA)tاtNX:5ih?*Et0oUJ],P1||Ҥhm׫AP+p' nDs5 cJGiС|o=Nl(pWg i NJ#K"`o_ߓ4&{7|4 [6x{u6y|&9K|Oqu}`ǐ Adϼ{>K/Oz7%zSqjp:'w:%(J|-Mή/Ar>@+! ] q}A&Wd@bq#Ɨޭ^ `[*I[`)`06)zl.@ݭAC<î}cH=q5rWI`Ңj7_r75(K]¢TK}Z0G)Ƙ5o%.T# (nfNa,{E?ΆöXyǦC ^uꞅV uԕ] b_DȢ.,w~ qja231&b :DN_cqbO_ ƄičLPԱy x+4Tw}y`-jkAJnwkfE6 w3^4/MF7_Caָ0PZZPTZ{۰J.]fU [V:[6V_hz'^X{%r'CD{?m_-v킪 'FF؊n\i3@]x={@ظ``GʎnI)OW h/|['uvDq@+>x=g`3W@4rd j4, Dv Cp`[O$s`Y؍x@5b xtnͣ6܎n|kvknx.S,:guצt!ck+wxB`_g!k"ݣ1 P&Ƚ6B73ӿXK\b`}1O/N3N7(S*pk6\$-I26)f/[rl4r}t&ov l HgD5̻G2i@2 $~JSz'4VFM{Sp٠"Ou#: :i$GЁc@kIsXɿ_K8MEHźʂ<J*[ IK4(i(JhW A mR^ZȤŴeā(l`$9CHa_Ppm/h8= ,?- `j(Nf X T1A| ȓޮ@tUQN<_t::T#o0t\tT.8H!(;OIk$JփJp4cqi}6 :X ukPYͿj 5 KkA5g_T7oҖe9-n|Ȗ9(XvEpY%iIv~kr*s.luvPw/z + \JBz0BMDyρJBcR++xtKai*i;IjCԮWqЏ(c A>K"jL|c+0%E 1#}#GCOQwåeAMu^\]3k֬gC߃=ܠM`JZ g|R ,냟"EYA bbF.ș֟BQAsqNSqR\8Jr?h9Ot<0ZYlY)o~y]][{ح!*&{4u1~}^osDVMu@wIp|: žu=÷\dFt~j?<͔Op'š9@1-hjC+ҚV86@5 с9:+M'2TR꥕$N0j'g18X-<Il>IJA0S4Pj2yʁ#F:#*N(N=AجAT1oӉ@29\D{ѓ%d򃓁~@{ aV]Sp^'INj\\i@20 GMYL:A?`?"> v +@kACૄG'~?o>C#KA'_E>ݧ#ee0Q[`5[M っAGx⧄kci#W i!Zx_T"zw~4UyLc0k`6 TMn{3pL~%ΩRkO ׫z}ٲ!m+ R m6l*c!XvR泋A%1b}ꦀuVmxFl+?5$(>TNMc|Wj}i6XV+9`LLc;ouL9/<t:,Aovcd1PX35Uxx3zpዖxu?_%~ͥy^۵z=q4-KSX?JL)<"bhza+?̰9d Ya.WR3߇v< ]G ,%sv dPKRU#xs'*}=k֧&uFzaV {x~.>4`;W}j+ѹR8cω``mq6l@2DRhoǂFӍ`ЋE@}:cluD9[EКԓ%Ӛ\8Զt3QPfĿ6_OD,u҉p)O+B.ߦrfkjt)756@: H L>|Ƿvft*+hrfqDƊ-laY`Qiq`Y?=.-nJ-@`7|>f%+v;@׳p 4QsrX9@zD3cK'2K X|= R&ZDP)}j$Ѯv(|}'moRl~OYv,Hv{E*hkGQZSvOO%YNjoqǮ)֤rlD[~3_q7_q7_qws/uʩc4?ο/w>IkN >ddLP{SB"ﴜfgDԙNmta lV&Њz7ɠNԪ#@L3w @詃Rc

    ЍC AFtڀΣ-}gبaU1:8ts-q:TCo6i?A9g@?(g݁kž^ \ 6`Y0t&0 0`>ZXPOl=zK`K 1/'aA[?ݸ6_[ְl6ߺe+l։PB͙Տ'c z;v *[߁MՊCMzIF۴tY䅪AUz{?*15 /O}rvk~Ø#ӟW~GD`>Kl-klC/+pНng^olh,Xdk)-::99: m Km@3^=u+vRXt (>DR*5J Bp{UPT AK=o@+Lc,A+YMg5PMt=IOkdQc)j_[);β!LAPv;vѧb>wV_ vM\P_O7+iU$o}zPk+m>V7 >.}@|JMSǹ~wwyJ. 0!xn68ouc_B_x}>Sj)!sÿ84 IxrRYW`WYЋcBA -Ò 鄪pDbc#mz@_%uR؎Hh t((!68@s2ص]"ثLN:Ct20U^ɺuj(LP?J H.* Db++Y6XEG:v%Xo-۞FȜ\vmZK Ύf !LgnK \~=չ:ɯ~vi-?-$<1:ίzj  [x'CYs?0v[v=]QbcX?K=NP:Y.Ϧיu>ZmJ`%)B~G؊Cy_f0o24`vh3hݻ'-^|;̒vѲnVb jK v?_rk$V\;m-[u(a)In$N%} Z"J1*@G-? Au%*2^ NٲCQ.׀pAD[A2>DxF~A| ʃ4Frstct6Q:PD.Ќ,Ҁ4R|yć,U"]M> IB~gNۭ0} @֒J-khS1X []槐:Oty!ϥKN;j Zp-𔷧kM+JNPک=PF:ՙ^tePLg;Ii@!ժh)q.`iJ|4\G7@sp1@o. C7 4״ Pb-:Z%x t%9*U(kt:rX6:lbؗ@9l8@}5lF` pWIVM6P6 P,n] *©ng8=']rq3x| t"bUomw 6j64eLXύo l9JVBؐuq4Ay;L`MT ȏ\AɈ6߸|[>#APaT`bZٗDMb~1@!G/s0h_-R!h TR@FK,@uZ8M2M=` kDRWAKr=S:k8>`Rf Xr`=:m7 ( qFĺuź ݘmhHh7B70q@m=+}'րAςj&rݥ!:'Ӵ SP8_T \W%UcPx~w{JKp M@v`>Q@ 9EK=a_ol#M`A#ma*9ԂbZO҅@ }i@[=Bg {:8t|g,_Oքs 7R.|mAKw5M@ޢ @Ә :xE<o+Vv=b[3 6bl &`5]tM 9s+̓ɛlY`eҽ,a'6 30E,]co. YN`6KX,g-lf#>Z%g,%y4Ջj1.3 niz֮=jA2>0@V_1%~~(L_| + pe|@stb@jI,pEtV Pb{ȷS+q>K|&ǻOUW+Q/z^:9PHaQc~h{{<gzi~wO#(P!̀[(hE v@ #h t\F3@]҃ RP&5k Z;(d08Z-9x`$hfqɅL!1:,=K8VKl2\<]x I1l]]%BEJ ;@k\!Lf>pv.n@q77@qC~kAFk@kq2M@b8\֎.oJ83g7=[}*l\m毠l [)x'uDغ|۳`UU:S4Wq 9]$AZ;8# zJwBLb$>r'!fk=lVC8X498 % Z6jq3&G> ^{8 F_a:R#k* P;]'A+1E;kzy}E?Wwmj<[^7_m= {1/6@\$W. ç2Mքds Z\ J{6n$Ƅ"f-C?˙iZٻ0?1mx,{^\)љug'\9 t iz(* XxT]S]s!FMI1〖hC%_mŃ6U-$ - `>()̀_״ǭxM<> m30H`M wm0 ;lC!$7e#,-Zya'Nѡ˞©nacK*"+ t2X!dulu0 ,:X3ֶ/bp62ʮuz+5>vT?KX `@-N-`!0/'wE[sNG@gбDFτ18JUA}:Me yݦ_ݲ&:sQ9',:N2M 2J S5X0Ξb-ON[z!PD> t >Pt^|0F.w$]wn:6yx!jWi p+!  >ާz^wCvwhW QZ}W:8q=N9x*LGAЏ%a5|On&)kׁ&K6DO}Y_C:20c݁Pzc88Z (B1MS,7=5  :E(8TAZ@-Vs>~\Z\ #pREwg5x@lAw :D1SȾ,/v  QJ[yQ06wOI ճ#: 7i@)Ö VI % l$cM@!xE2F@F ƭ4 пϳ4@R޶3ճRJwvz5QpÕ /2МD{j!xކZ%I[lAs5vxtv {G< d<<Tw'`v\K&(cS@IzAZJtc'}N%عz@K&ӕR2\ [/|Vi`9[ C3M#TueYA3P p/@.[s~9?w;-<'O%e؍`Y/k ;WR KM[=B"`{ @>ϭMI^ϿsVڽ&z yL}KMc7z7-kd77 Waѽk}+J+:O$'Spae3GiJǘ-v`5xx <ݤ7NJR38jHϧ9.h utӉΠn2h_PD(SЌ:h0-P2tZ0x:8\AIS2' IL\=7l:wk:coR(l`-"y1A4Rwd F,c%N:B@@-@/A$cTWusL߀lݎ뵿 (ā_Z vE-;w’uk<\ezX3sӡ6.]]6p&g0he`sVtgӖk^'jK!ةe`q4:eL-HGsB0CE Thւn.R*AC r_!<(`_Q_ ΆHj0'(u{8&F e0/\;du<9ǂD`Z5T0!,W7k*Av ?< i$fz ;ZzW$+}`'m|+|dV.PRBW\a kп&п t6f}g}7:0 #IfBɶzбfpLd3# ;ڼ|V!q 7{H ǁR Њ6:h&恭p2@R@S`LR#8!JZUQ`(sn;Ղ*FKAe,2{ yt7 BY)_''=ۛm)VcnV`A=eAt:YojaM5.1p%l^Ni>n;V {VpTfTƉp4S[=7MM^~OM?|a{B!'L5fiп~vy_laSb7ۉa͉XZ[bC x;moh*A_څʬU  :\V:fi.<2nյ~^z'ds0(AVKGڂu`5.b =YA),-GZ0xPw~]KmQV3 (vJTWu& QmY wE\h>1 G_LGmKӬ+Yb:~.  igo[ ͮE?@E*Wf31[ꡀ`I 6; @nƷZբ%!PsUzi.!'\"[9WyB!=8< Jٿ1gpOf 5ļ,``~h ZdI=N 0Bphp2/+n" *[w m\:S \:]J^Z e|gp!:(-q*-:] 474ؤ3 fcd2M%1Od%o=9vvj%Zl ϳ57v4]ѓ]nyvuf8]M?i%p:s<4(ep ߃XU)\ Jݏu|yڭ7*pD c= \*HUfCpܒ??AmM`έl5}>Y kb6&6l޲|SX3dcaMOWVq+ozju2׃<]\<\ HH/ mڠ,Ae:XRa.'(fѠiLahAe 4dh`&j8#A'EHpA2[tu"k+ur_Q=P#~ 6AUՑ4!x7۪;T~_-;srӵz1_iK(X:u.|~LY0 fS!cR;/ \ dx?v1R}+}rХ)%gy·?]=XrLqS=Y2{ GwP_V g]Ao=t P'Ngu?8^@ (L#@CM1te(aP?NW?`>lmAr=)d5i|k8ub1] ]j ڤXZZ.]HIa m`9&1gΗDka=)9o?lM+oX`"{5.rzApDO۠GHrYkA3w8saYy ፋd\ZA[례a+)JP+'WaM4oZ@v;{{0$s?v!VHY&->=sAv&'T.< ?=h?[{jAqgJb8ܣdXjӭ5  ![)yd]E{@FR] 894ELpMWg#6t0v6X): Eu2 I=#WYQw ,we, zʁmzgX0yRjp8ǹ9}NDqn ~fBIb[^sSM'`0Npu3ЊqL#V嬵\u:=2> #7W @3"=:.1z{0;[i`0ޮ߷'coIvYtΑ>t`1hԻ"]@@}Y1 P֞]f.{yVsr??zϟ3@?1;H-TQM PY^9 0VЭ+ZcۿTHűq#t3%83}k_u #o~\˰Y6`%l7>ޜ #ket0TX<`)Y kb XAVZ\Z:,`< flО @}6@`SM/y^JSZT= Jr}A%j0踠9gw.?1#ebP9;@+@gk5T?Y` o-t7䀝G3FQMo`6{WӁmW~c^煺>aq5@sTTRHI# "Ldd("GJt ́W85 -]>tT rvP-ҩRVҒ -9i 9^AK{U[Uv3st9ЅX:Hړ ڮ:Bߓ @-vrt@[ς1P3|P'_J}*Q_`~wAqqW@db@7Ҁ<ЃbK !:=4fdµ0V%׮Z9>PXmߺE7HoOnYMǀ:qB]A6Dn{"o\mCT+@Q63R.6hi,(TG`6r&?g%UF9眛4M9GAAD"$",ID@Jιii9vq?Tm<}Ϲ}R{֪Uk1Ũb b1q?88:v?7Z+ g "XH(Ήġ{8(br "1WElR5bpǓh(ꋱD/(NYцk1xزs(-:2kꂳu*/GKbvqG17ǯEaVUx+ V}+{?5V? k,tBZ~+v@}գ6DB˪ؤ \A<[spfPܥ.'iˉk|D<6~)vزtm]3W˘gh>I^OxOg:Slnqih,7TkbOcMAQ|Wp,/mqcb#=vaקoNqfy_LfbǼ9?!7x-˭(^vƔ8[]7Cpf[++-Uuǹm%mU{߬oiWlVR4PF%@cEqỳO{>;⿽߼?W Fj5JGTj??VmTs9ڞ ZΈׯoY>odbb;=SBlaOƛgIi9Xd%>mX+ {J_&ZTjʿaa+C YmjW|Bqĭ8 GhO4zâIE*(mMCKA*|6 .OxQi':=טs1⥼Bdf 5>%~^zV9 ̩ oG[i˫ ]c gVy 敢ZG^*I'tYUwza^`m*6L<.(6Vdssl%☁>2*Z/N2")6@{ũqˉ ^rDVC sW ZOj[b+,}ǢDslFtU90oyNA<$7Ohݒ|$Ûv#ou|F*V}&3%y1)ߏ˰J+||1tc5W,5 Xl|oax.ќ|&c񵜞2af!kn]ɋH1"We{ 3yMlMzNEo1矸Cw[޽ݱUa-Oiӗ#ڜe-BӋ} PQUQLIt 畼B%WȞ.mO)K^O%;[ kQx9)&;]8N y[c 11WddR_Trr^3TAGn:[bVN/ &lfbwXnG|#N1Yͳzޖ{6scV xUj>&$ުotXXmw~P';&jWtj;~j֤:>q2#`{ꇬ:7ܲdfěb F'C@+#&?s'A V;Vc*xS}K.y]`@OY%BVkVh_uzʶƦq:v$ej?dZf뙙L9΃} Zu/W-C%nݔ;L1uErl'9"F"gɗ2a3wzͣw+yl^Lmtr<FˍɾyӲd}EjaC>X}OdQloU _-aR-1X\fLW>$*(U:H$?$uemĤγFNmk]&_:c؜3wc֠müa>ۉ]ǣQă~XIM.ur3Z-Q}\F4h ̘;QLcu^)VmMAc=[R#bMc*":kD,b͍!fJihylFl>EwPXL JgG؋8ތe8K_=qzEmP,^.E+!EW.=ĊxhQ1(Xgchc7qV1W{ȋbb5S 6!ы)-ZPű c3*nz(%]jyM$+Ɋؽj|'?u}K@~r#hS*TR]6Ļe02ͩW9WܓSR *S\N +6䥩xvVu]w?|&8'[`H^mcbJ\F<7f;qn*N<=//We<^ͪ^Ƕ|lSA+ZU[|llh ([*%@eѾ)o*oO@yߘhlFeWZMu޼Têmyۘ` J<[{`DzlnK] `]J\7&ZT:zؼ/qv.[oc#68}5EFXyno;u$,1D{1\W몗vhxd5mI-I'K!6&BdlnNyy0+<t'mkyc#rR|?~L|sVZYlCJHS7 .uaE ؐ8:~_7_.2fc}lEqP-oEXsU|):pi >j ۭ$nK`eu6 "#Vƅц?yēǫ&4 1Ю-yzb[CM#Je):=MZkWħVhQL|裷?~fJFƮ&uͱfA3[ǎi ,:P--bDXq#6N!.;C+i/cHJif1%PlaǣuL!7 E]L Z'bChb|FA覔U;J^nwUw|H{$A {LR=JuQϔS>so^?v x筱O:1{OY?~8 EoQw*5n{Vŏ)*zu݄nѲhGq!VͰ̂8~@8cPAK7usgd,vrD/{!DM݆:0-VD`'⥢ؘXYt!VcsbY ~fclb^شhKѢx4 lʖ(kIbخؙ/{ cQU qKbo`IY_d ZW >ꌍu[c#bkc̷4bm=jkka%c Ɠ%5'&Ǒ:ό r[Ww$/=[Fx8vSqH;!Ş:^W̴Xi}Ol)ZÉ􊞘L V!tb{l;Mlo!ΕcM#:(eA=pя{1$$b7g8yN6$ b O6ל(b| $.x:ZT\b^l!#;9b'貨%n91qҿt$رA݉)+?x<1y6ܵp5odO4mI0yfa',$1>0մ궬u]ީEb`b=MD)kZRc]#\bjWM>#1׏)gb[.3wb\_:Ts%dw;oxsXbba u9Q$Jځ`zbt1;X|͈e\Iihcc2jN8-ćH|UG׭ZMВ7*NV7E~$/ڀ)j1qra8.XK,eĀhWE*brDEJDNqsp'E?(֒x!.?o'.PVgdbx>v (v9QIyR^G1vj05wql^s$wyanD+1ky4EFGݬė# C=u7=]8`9bRf`+M4YOqqmޗUFZA䡶,l#wȝs=[䡹&0}/>ɉuɬ{E^rIN|1 \H\:˖I75AuÚSzΛ~wQ%M-Q*?W VJxܖE*{NmZyy(`]U9Ej~^  }~+Fxf}濂}Evuv~mj?"]>Nb;\q4EKCH.lJgdL|#x~`xf_Cs3پc|kđPez d;;ŏ-q>7苾q/ʖ~tfm[ڏlY'hjciʾWAjS=~8P8lTvM6iF0&U8S?o5Cak9saXhC&vCK 7D%qBQ^ѷ}b+Xi=*8F~bCb+Xa;M@e.$a+=ecKǁTrcfCt ]l(ã.U1؃R bTfV_PgSW[ F5~gfn9`V?Ra 7bJPף wl$QW^|!FЖ:ŕ?Nžxluת: Si4JmuhDx+uH[Wc*^honN$nֱ㢎lj&:ѕM/"ccQ\c~|̌# }ݢYC15Xq,%b)y+cn3]lOs:ܢI,~4 veeuZ^˪qhuO˫zFeZ r_0gjYߧt2Pie8hST͖կsJ1J_}͎e z-7lA\.os1/4֡!K.G(_#=ejΛ#po褉rl9=[f{ddG8[]{Kߢ݂<)o{-'VQ&r:soĉyKoǏ>:SP/7yh!/QF׼;?ȉ!-7٦ >;䇯En\{qU' 9\Kfi8>يZvcyk_j1jPr޵Qkes*hl/?C?-nM;F@|TM>Ƨ, ZW-2+ zJj&ˠe6/ tN[j \+ŷL.ăf31[M͕8s/9/ggȠsd/^}=d̲6'=|}JW Gظt/f;4W;c(6dѹ)Q*w3s[h#sɣJb\ONj3c.ܑ/'NN+lc:5k z}~J;t'vmӻ)SwNY`nIJ<]Ml/Й};mp h*Cpim+7o %vb;Jrb?ehd^>)X\QGbmt(] }D\qw-栋1y\M5<'1=v"wݚG y["g,ȟ?&]l_,8"˳%Q\Jnْlf܀ }ȃsccd)9"7g0vCwӬvXVT bThf\V,McC}]l_'߰-;befQᶎ1+1,:?-?ݠ8]cf9>/Ӵ(UsXTVk?1X3~'vWM1Q9&ec|C>}|lXg}\.:!1&ha+er#1E=z_2la8O1~?*,#vG,?cFq(D&ѯ D}|!!{4'n%v&"ڔ @Ba|ޢ2EmPfO#蠄uxzmls˼p{׿~#ڍchi&5N{qa8_%s{Y;׿FLtoBybT.:č4M!Vǟasu/@5ni~v_q'w*^#9#Ĝx+#PK~@<--t:5f}du/XJ;j(\y9t9RwbNq#qSmt(%FVim*EOK Mcq,2!6QXIb^٧0Vy9>jRd(t߬^d\? L]DNf|1 ;d}v ȁC%-:C8@fKMZ01]?_ý g.MuZ5EZ듋eGmnMvٔͮߧ1ߔj4Bçп/Ժ+OQ)֖ڙuG]Sp@>Oy?86oh:>lA{e]о/iè1&q8,9ܔkDڌVH4HUs; ׶lƀ//QVbI43ږi.M?q< f|ֶ?UmVoR=ixUIx몁&*[~{{M8/p6sz| ,ZYQc~1."v+WG{x}sS7OaoT=Cfh'n U96͈`RZyw,LͼAWBL*VCK!@ ]?1cy?XBkјU/{3oB<"ofY.אͦ7 4 {7ٕ<7,_v$fI'O2+?*f|b 3x )][aY )zXlS[VQw̱uϑ -mMcož/iM/N҃'VǷ bN ^'v!q*ŏchK )Έ64SJ|F'c(:'65!*zl|98bx22Ưuq-q G68DwhG)[^"[}Y\Meb qbȁL?aCVN:O=fҞcfN;UǬynuwrE4^LśuKExX= q1*i]k!̉yq&D1 ގ}t ̧?q]˺3~=ޥ8SD GXb8Bmq<XC _Da'b D;4X[ *LFeu-~::Hq] rW?4m+j&ě4~+<@-וx2aE;Xinow,",ʥq 4XmUEw8Zt.%-O.u;Wm|-M\'щ[?Oj1I b1E&{%cq;̚4<^ȸ_6;[ 9,j7Wb2*>27h{_i?٥?*5QJWTKĉvxu˼U UBim[Oп5BBJe٣ݬ @> T@Ue׺ LWSW8 UImԤ?fRrtv#F䝙:$CfמY.NߓO亼蝳k1m}ć:]F=uu"-oQ{2ˑSN'#g*՝l!o+,*@ZM)C,?V.@Mvv:)XQ;?b 9+5UOrI^9|9'n"X{N[uN޳Y_y5ɦp`{3|xQy 1 6i;[k(Ng}c~/9AYsnyCu-8WkY%ZѪԒ*yi]ͷGo06m˗VXo52>Uk QZ*۸6F#eVg>E<_{hLARm G@x:d{Xlܬ'r y].˙d\ơw>ÈHNsar4JK⛆ٍX@h/uAm0XcOXs1y-"bq:{@ch4#1^9!c}l^ny[Nq8c_lbl|)6j5cª{މ-.U-hۋvرO1ݲmV߅...`_rF,}9gwayiw*Or~]Iۺqv|Wϗnh5?yܬnD/R쬯iy p]# 0D#3@WQ%;奂 :6zb݋;, q'GhQ;J %#!>7fQQ.I6`;ga&k ~^'tZ[ZZiViiP>Q6pmۡgāxHVَؗ?kOW,P!3!^q[_n19VĴsWC❸\ xZ1$|;ό7lIDATeNfd|*Ǔ3rx֑gyȅ7d8lz0~c+/G\FP|3Q=-vM-<<" #[U9ڴ6y_)m$3 zƃ#g )D8 6ѝܶi !v鉯f|a֦gl=b2qb2Ʊ<"bcd_sE\ơ1+W-CǢv8Z{ߊA\Btua\I6h Z+ne$1q>Vƞ>#ʞ=*hEJ"Dؕ]*P7ܶYmJ1I7Os~ז}篿ܟ,gKV12#Ƣx?((*~Cu&+bXXl[w41+xO:EhHObGS7wb?<=qM4kq)+΋Iw9[)1)x[RX$Z[&ڟoGobxhNCTbk2.kEa>q#^22%C7m':0q"DK+4C3kJ eh`Q⫭$FYa9eKca:}JNIfW_L!f1"f )T]cjg>44Ro\8ٓsg^u4z`.~dW2b,ܯ||"lWIrٓsJR-+UU Y.Tt`ϝr;k;:)7/œTkNqf988/pKWcV_];W{!e`^}KޗےWT{lf;g{D;o|+9^hAU'3A.([bqN9jMVc"[d j@*E ګ_XhTkj-,ڭ.S\T\oR9kķka[m$5g{g 63vcCjo{ߡ*-pv [j753֕֕@kVOUJ[zVOR ؊PU"RYoq3w /n'9*JYq>hj;zMyX_䆕k{v [8Jqs\.g/b.#L }Ƭ6iB]رЏ|CvʻpX7ȗʢ| &` }_qmş`}梿yX̴%1-VDypq&K#7/'GV`k}t$~h+_#b *1s|).Goiq7M ĉ.CòV+bKo7}{F>f֏&FqmqXw5[y;s^0p\z_Mכ|?Oš#Kq05]q^"2GęydVދM!O~ayKYۢUJ6-YUͪOj>~Y) oPmX=[Ѳdceko1i˴[6ll?84'o!qk- 3:a5`,Ǘ}q?džh|?x`Ca~棣zK`jiJ״VXD3Q”~S;kgbvpV7,vx}t۲%SKQ,5⎊I|X,$.c[n;x<)嫘.b='JɃ4s97$rT6˥dl[UC?/!,= Ys}2sG/ _frOgu1"?0&)sjXa>mi^rS\h`3lJt]ȗb̮5~BD4Qb<1+6N>Q/ڥ ΥXGAxT(^'R"8<>9Fj^B#zrw =tq>NOln`'c% 8^ $}↨6:FL6ќXCb+b+^F c.qc-QJJ[ ۲ +L)WVQwۗb5Ypkx'n;<7EŊNXq(9ťԟSw{#D"4SRlbjILw-bYѤ 88n)^bc>P<}sqs D~,#4^%:F/n &Iğs(v! ġ48"fsl=b}l5bV1w=qO11:k .詍ߢVdFD3ֱ:ZI%R TtUXQns qeq.8/1bzg9s"4 L2͝hy}baxWkXneN>.JPdSimKtEw̉\`bٖxA1*؜86*,l˂Ycoy{!Żݺ4r1N7EPk ޳oRϏF6=k^YuhQ8K=* ^jUk؟B>oy_#1`YOx@rA֪(ZVkV-䢺/;"~Кk; 9yM#~;٪1+bQ.Mbd\QۖK,@fu>sZv-.-$蟿њ-yKN̅WGvϕd\`|k٣@U!ݐ4ijJM -|MCT4ST%hu>MC]hD&8BSkSKbG쒫kS{vK žܰƖ~ lGu]8V4߶bV_'abxGyn;}DĩrWgO~nMο&-V j> UŰe<Ѳ iXa,P(@ƪzTPPoJT߯P7->OYWWW`hRAjY&;r!Zpx!ʳ(339ĽpM?fCN>s9(eG6mG[#[a9kjoAlc`?3%}b[k|]a< ⇺O>j6w3V?/mNyt/6l7cq4F{d5o8+bgɌ=݋&)ZߣhK6f(5X)F_˵wXQ|9g,X9hh_&?o֊ku6|MNt;/Z/fڍ4*Yʖru\&<)o|:U6x~FӒY?ߍFsw0>!_TUY``lƆ֝vkkp?7z |96/cx6Vci,%EXÂ+}qit?cc?8Nѕ#Kɇh釞:dG;+fkfZV%?d.K*N6 ? ~UJj/`?K4333hyB+lR MJw(b#FB,o+9F<5&_7ll>EHȾyC>J.ι 4G*\9$PdB]g5ǽ𵧟!_<_kKF.)>";f\N.Aفbܒ>O/ٌ8?_7Gbh.S*>0ǘb˱&z蠄|5SҒVs~W|ڠd6G/%Ήv''ԣOqOo'gt!ŷc8>;W8.?2hh׉>]'tAѩ |]*;/ķcEdbjObobCWȡqx4#.Fm "n'ΈAiE;)Mc{bWsmbXFY$1fѻؒhETz Pb )%Wv=!݉se,ǝ3"=loMjC:n·?wxm Oqrqh~uc1"z\"bxXbqLQ+Z]br̋g/sGcP(6re}1lP׾8bE<:|l@|8/:%8{G1=.\ej9p 6U?=!hM%Uk>ACü!J˰4[Lk0R 0"uqi٘nn?]L2b'rnOENRtUm;p=ngxߤ\1Df>XhzU,Vv#'[lzPӦ`ы\I1[ ;|ڔ'OxlnØ}m"(fQ{pSWsy}No|zu)iy ž U=*Hآ ˪iU~'пS_[YC|R|R~*pJ jRyP}[U_e8/Zk]!o-&~9b^sLϟkgaQNCqi>YۏX5֕]FO\LOIl{B|S Ԍ܌|0qi5v]y˛]ҍ,+}oͫoߢtS%q+!**O2*o<ϳ/ȷb3zR oɤx>gNqD<%Wr`91)hym[l?"s$n?~m$ƫY*ݰ b]hjoV7cFƦXxh ћY@^Ykn:c|}(ؘ\[[aw6"oR8VU,7\P_Aepbc09Go0E{ɢ!l ^rhuM\(x/^7F@̍1]Y)L?x9;d' ->hy<._ڥ7⯦ZM}%jڈ}\a޿ᇭٹMOXj&٬J$7VfqƳ_4 0mVרdhLH@S՗0\lۼż%n!ns-twMȯF}'.wo~o7c_Fk{J7J7+uҏSgY;%moi:넞p c[2 2%.d!J%+eѯگ_8+7  ֽd7x3v313+xq+\'`#L7,4 ]t$:jlbevsc'<ۧvu~ rV%MNل-Ay}/d ɦqEB\wƙ=XMO(Gc=6<,ZZѲ5|j N+MGld6n&}_$|H|O؉!(!;э؎?Cü~[>u%/_NђE?j۬.yQ9ey]Vڠ'N3B+,FM!lۄ8%f7#+TRw-4P(hɖ,Z|f1@sbAnyo<S oR{ x#?EetF)_r(m(~ae.HKc'܅Grп}ZlJg䍁Y hO%nIs?OW<^ﱶ^k%L̖S}5?8&O=N,˥y)qY.}[unWY 1N{ 6@BA(B$ !ǚ>^וke\{scoțmp[nV&VTuP߁!nS.s'˶w7˻/]˵@)rdy_9lKȭx l7t"n/ s92`qSs2f!ޖbM]#6&囱%њ?kqz"A2ɭͤ<O>Vn:wrm.:(5/5sqgl-lٜ} pg#}|8N=kr Ge'h<;mŵģZy *1fUAeo/W^GUM碀멍7Q0~5SE h_T#wvEvMZm+vJKuWW_-+a_}{c~1k%秸6Pr=fr>fdwd|nEfܵ817#fٍ8g#sL܇.GK+4`KAdSlG~_3~K>U_ۂ/C}[DGxէDx4:D]5IAkѕ8!7i$nciKgk885&qk[@aw>2K̎iG؄x9#x%m b](!^]K,J[̦̀֌3>MlcwL1Sg81Xif֠ꝫ2W+ +ud˥-x~jZպ_MTYU|7w/E-ϑ3MZMT&1gVjn]k׃QlS8֭[]E8 F/Vax?y|X矱_ݏ':^ިOߞzU̻|ĭרÙj 1 n}u!:UH *[𰁖褛nD?éT;űqq'牫5ɋ+-q[tmyųWC<!cuK 1$A\NmDU]e#sgq 'bhQHyi'Q=EOQљĉŧpA.k4Cz ,M\B4#Clx&vDo{DAqek_mt%U/؈+j-=!UB5=5(8̺_=wvs/;|7ާܤ8nqݍeqx]Gc̤noF10&DӘXN1sݙ(n&y1>XQDCX0!JF2F\݉QRS Mb819Z{oŌ~J8bO1#F'AMCt`yLE͘k4Aøfѓk+yDhf1b,7x5XaURK,fqX`TgNe9 Gbi&b >6x,?Fku<59gYh:92'<%#sgK<5{7oEvKa:a Ϸ]Munn>4|j# KPh{s1D~#8(n ~:ژ|FcMՇ5\ #;zѲ?-~LXB^_Mƀ s,Vdb8$0LՐ4 ,gG=B\kyv;&}."Έ*XTt$S b^tldmu5E{'aRpu*ި;n*]!NmǏt~X\|Gg;{*HȎ8%Hۜ4hZd-UD+({*NZUTVQxL*.ƖTq[K0*{ʔzW<>p gZ5-6_yk[iiʇ=k'Z{`~tZsn(95jò3yC!K>_78U'|CsMMmȫIG={bqd rw- "7˟B~l 3quN*fԨwM4Ow}^݈֑q.6'v&+ѻam%rwbwbh+*2tPk]-rL pΉ)18ˌ< -v"~!4K_qHlG)JSt(11hWdb~qo98OLD3?{4}//hGkF\0"g8x& .'y7oةU ЄD%+DN*n]^˷n*E_gc7@jnmv^W_g36 NW%lWla M`#3nIėxCbĜh`{_;;Zgm p1ڛ_ǶpțuCWuBgtB֡6J ]5"a&q!A\ 4 pܒ /)jڷ.ϫWO-wb,#cg+F4t>N^oLlEn<چWsy&? uī#Cow3YlAyGqY9ܼ]r3rZB?͂!)o#615710 ͵5W=lVQաmDhzH ~~v-?V#o&q! bhķcX@'DWw; +5sNq˼'y;7{N;2"{5+C8:hgNٞ|':d{8s`-*_B5$vbs wr"dj(#SlVj("'N؝8hE xW͚2JƜ5G?|5r5ߦ⥺}ةIֿBXA'qDŀk(n,DhDԸb]q:ŨUUL{Fݱ|Z!ϋq y>F)fc:bF{DIcbt1O̥$(>ug!x=,v}QR&6ơV.1#ڡQsoxlbe4yIJ(Jxџ β̍s, aFl3iN}SO1$66GZ?;:xh9VWyB|jDuüC ëW̷_;&/[Lċ3?z<2yI| ԼSrÀ||,{rƪ|T,&b6:l ŷm5[ sbAm{Crh^C\U,nE˸>ǒk瑫׋8Ʊ;̕ 3:{eChmDZ(5}M?1`v_YqYUk~VTŕ}ߢJha`,EUtIeܯkZ>q%?qjM K=Y:y-QiY}~Sbֺ( n,+[QשKX;k게+kwu, qďm˗YrK#/.?hGNb37RZm܅Y.\QnT!gueA6hoS%97e+rE8,%|'ݭ_آl{`vy [ts""*Ө-EDf aL&eZ"v^'<`U4#Ʋ<O%̉Es fNXT<b[[s12fцAvA*'ƸD؟{AQǽ妔3ա#Uh]UЦR ҼBT*_7T״&ZTd}qS5nd6AMy_xy_A iMHE\4g5-׶hMlU!w+ Nں]sΰՇ6/g9_/y*gS ʫsW [05cp.qorq9V[lݢ3[:𧛶'y>*ǔm%_͍s m`DImx9ssD6 ͭֈZ넭1$amQ;bG#gt֗|N8#evy3q׉a aZk;,6Dc\aZ+>Ax(g 5XQ`>Z0F3M~cH,&Ld1õo\5͑Rlw37^ƣǾߴx2 A6#&&:=sB5vCYK*JYĿkǿsh*5VuI 5VnjZ.oі'h.u!~?Cz|{JLe+};oo* {xXkggn&o-/Ko:nJ>zcS߰U3} 4jC5a}xΫ _Xqe1ELkbbq0ryu9NcەH}0$oˡ^%N,š83N&//n(;r6g!WdyC6w+=ߞɟb(ic]nFn[dOojw\k#>.׈K8#k>| Vbr`#M_t}m7vͰolgd~'% 'J18o%kb()-DgŞԝVlҠ_0mru%u?])ے]9Vd7G6J5ѵ 9ٞH&~EmB mJ̄h(6%^Vw$]Gw $0q/Eb7(&5$@<ØNx~ _ȼ^YN(\*GC?n]\+ו/*fcxWPEO1bF2>&ӽoRXD}e=L %vn@>ӆy;et+/@o6yNG[Av'6Tcb)tMR9 V`D|ŸOܕs*yeQWXj W6ԉ2ǑOn[[ rn/Zs/l&v& /:Ă/-Yh;F r| 9-z@X<;VQ0,;|a59X-ŭ-Z]6ֹ[$ȥ$W/DVE5X5A~k埉ոؔzvM̚_kh]A{UT2/_Yj_ȷVfZIN[q!+C89GϥGx<5 :kiGmZ]㖍])76|\X6ufdgd3|ɘHJ6+slCܓOڞͷBa] ¬saĊ&g4K"V#t}UqB?Fi^@1+cK3ScT^B,61݉K d9x"{?%9P;bS߈z/s?rTm|+ _lN~[Ǣ7u1&#q/$ f^X;^ή7] vɚFD./?v^e5ѢJ|UIl싢E '(gz:#bXOghίMum*6F*iV+Ş1c_⌲ⱼ2͕,gܮfײ$o͆r >*g#<}]6rBcƫ9\B27'gE6q|5Cy$I{ Sen͉ztD7}~c4v@]~i={:8=OW|8P8d8^%%+Q&2| YW46֙n$ K!ZhZ8!/yeE0+jv;D/bt|'sbphb?}4S-N}&0_Ϸs6p[Ak,Hq^Of[>; Q6Դ"k8&;jn9j].nV/UaqOؐJ5C|%n&6#.!~_tƮv?Ȃb᰹i󟏋S >ALͰ+O UoWwS݉XH 1kĞ&qq4bCP]-ߎ;Ĩp[É}ո '>05nm_d|7SsK(߭Aˏr(w^lWcrn{fwr;ً|?WTYiLqQvd3Ďz,_3ɗ㴼60"ȑclLTWZeU-֣tl{#1H=bM=풧[egܸQ1)Ē|} |8*&P/S8E؄<-]<ƒu4&7wm ^uw#R~dKjS㱻P,"Q|K Ɵ~8b 5Sj~;֜ Voƚxi׿y8>=~qS]cOilO?~ Q ӊb2b~Ŵ5eژ[JL*}x5>Q\o[}nnx=.)k"-n%+o(މ8,qtlS@x1P,Ί1Bf3`r̊p^c#-mLq75|1vJ#VsVai%206aZc1̎1('蜬Tv2++5YjPqÌ^5xҿo[<%ƛ>,Tetq^98_ cR|KfV]n7b`:-9Z e`F|.']8n)λ/y7]%v''`e>Ődr-zCF/_#NUAfeu*> hgGl; lG30~#mϺh5fl[9 6';,'ĦQRNvm̡K"i9kWltTD&,THآjc[ZuWP>K\Wu/&**rs[}UVd䑐cVܻә:ݬvǔR|9WxyÜ]-|8ܪ|<Y^L_Ni*4S++lD%ɻwʮْ{N"v9v` yHnIǘ&j7̲,l2ϵ_[Dh.񞫱w(FKl#Fx46&ZĽ\NZS +.z.zE]֓ z$6fj֓W1n_:nM⏹mUl˲yJ̱s4CN Ғ\; d Y΋&`K/m4ϛr h_]M\|zt,n*kպi^AWf9ZWU+NW@`}7\㧯STJ0+fs@}+&4lK{a}gF shO^؝x)ΉaX&jlb~kVy1*ŝfA:1[/%cLGIh25ZB[=0 lg{`sL&Fմ!'N%Vǵ}~=w?c M[eËz' VtntG㣸(P|O<)y~}S|ɨؖ29Y6ʒ|4@yn0{?笘UG|#()~Wx,{f܊ސKn_}CGYG(W%o"T rz<oX|jS%j=j}<(P~Hv'גs_QlU 7ȧ(bs/xŘ#;}ܤQxo9=Y|_hvrDXBuS)@b:eU 0%VXD'Ţ/Ƹ bWpbZݐvXEx;~Q O\Kg]A<튂XVEqO<)(F,v~|Qvfx2⦸'VR<bf83fFkt M!qjY+ձF%Yta6&c>1+v"?w';,*& w3/ ngOn!v=G>C'qmO=17 >2#m"2ˬnVMN?[ k>1yUv qoW7%)5ȿ d+W yƶ1#'GL)gZ((gj>c5 -mzOP[YC.QN;XPU8V` ڸ`e%įM_kJZmZgo{ͧɮ `[:ܞ㔷WYKGqb@+w ̧57+_%/||7!(4EN7^6yϋF-v |{rV_M<#J̈1\sJd[6l[!ǔsqr<ʯqOSNy fX[gF;7EzUج|9:{ ^SL.R#_:qf|-zzwDs⭸9ZcžUxBrx*gW,l3nXh #ܼGۼG >βW\@C8q~{đ.%3m~5z#xlu϶) m} ֏YQVvx5e-I[XITozc4Aiw# )iY!$7hѰj%Zm܈N6+ t8T T,27Nu W3"Kk""}l5S+13X#Pjx{Ïvu"S"r+eܒ8(VWy;n ztfͧL]uݯx^ _4 s1ʶ>/5QZVy}1ZAF-5}sQu.+wlw2 MĂRoƏb%)GB:vDŽKI Oj&c%yXd?bH4`#!3_uj-m5c-z׫hoc݉jC bbRinZkWhShű XS .d=!^9kv9Ϣ{mLcw1K^ Nyf&yi.mȉ3Or*2!V&ZXE.8ofate|?_Ǔ m9C)l/O2_qv>Ln'k~q=>˻Ѩm '|ˉk' 7Xom6 ? %hi+]Gn.qt&eܖ;ӼPrsC߈vÕtyWKɫힳpqy{L/Q8Ɔ|xȌ||*P=t9:cE7<)&ٱ1Bh)(M_٧5UnFؙl_gχs-ލ'h@ީg|ޱ/Zr8\OX;m7sqs.jAlSDjEjiFg}ѿu%ı\OJĢuQV_t*[8qyسy붆o9=ܛ3v"Eo|#ȧQe(o8ʍ>sWm 9fVV]X]Dv$$J~<%N?p%;׮.xb%]-ʾwkviݺg4ϝڲmDWqZCG?MF Xsv džo4Գ~HÁ ܆5-qL_ PA|75&E>75-o=k6zZͳQT Dyk貆y(*8J93GSaA\N%9tnYEyF6{--3Sޟ{kIo)ʶ_su@>Oɷ{Bc;8/Efc\ ]o}`m&qR|ǎt d\Ks!Y4*h5I=6auάS) 4fvBo3tm1+MÉ[gbesq6Ftt_#:h [3u2NjQ_%+}c!lֳhW;ó8>s)aі l0M-sאַ4_޵rXzWqZZkU;7/@*kBn#T^yʮq F$NQnr6<()z^% ػl]ӛkFhk^}f Ŷ6%scgl<q$sDlN]bWkؙl^8MX,n ZUb[.t̲-pL96L71)wc.ka-S?J- db~a9l|$S1Dh$WE[Oͬph%{| O{<(#ʷcx)|N7rՓ}m{}f*sXgc%"">^ `ee#4/ 8Y,:*+jHG|ajS\o}r_SiJZRf+[Veѫ ʍx2ӳ[n1;b|7r i~T.rƗCwkSR׸p}-ZVs3r&k,/v&$flK>AѩvQPmS?Y 15>+ Zښ؆>w8[;?%oPQË(Emx<c8/Ϙ{xӽ~ȥK]rC_هG݈Se#,_.GzǗӋaw Ц9{F-*j|bfg5$H}U*aV5/z5qgJ3M&J̿_+פqD:MHf4VUw0A5u}- |>=>9yRC~Z#9:g6r-ɆmiZmB)/-[Rv)/{PΝmrhĨwOŧ4/^ţ1#^&yS-<% ލɍ|{&ryoGagޏv^(O-+cdl#ȷ.&wɍÞ#ي8)瑿g^17^Fa&a;r):YѲxO67?mqPY|x\;5(zQ'߉ ![ߊ)=]`yR3Yru[C8ڃx;E~M  >N<7zؼ7nöxC8gyY7آ[/ԯ(VXPR8xص8^0n&сuN!8K187^*A̍c1=1xAL K񌫩G)Q<cS\bb1 19+Lj'{`#2fCĂӱ9P􈱖p1'KҺյN~Vg~fYHx[؎[ݰVX,5b|R޽y 9i'ɻ]g!'bG=`|tR̷} ^I[.D3-MmpHOlDL"_q)X<'\AX='NɷO|%V?2|{ӣ}&Ȟ: mKl$bv@qV6/%k{>[ŠYN b|l$/.o,/M۔ ʉpr^WG9Nq~\L9=ǔm51Sv.Ed}GvpqA9j>@8({.W-bOD?ϟfuU&mZ>o6Cxڮ#dƲ%cXbŘiEXle.,mfZNkQTulj+zhfAK[*,S~cUcxfaWKLlxIy3>~F؋xƮO-&ɴQO߰vYW*TZ\lVNbq!}|_=P[GY_zCc|[C5wA(cCr%!q18$dX19Eƞ4uݫXoT\CU-?xdGi5[Klۙh+l[hЋ/ШVsYڽ,*4vߤu?e+ԾgGXQB!B_ Ѭ& #cqMܞ1Ku^@hO1 |s-eqb||8wQ1K{r||yPM}y|7E/fm()_ɔ(_Fv(J]]@N"/]s+c53MQgix=G{qN\HdT?|8WVڪQF 觗G1vqB4_`6&bSt0+WS;[=7 zߢn[܎=[c[aOȥ? Ru~bP-۝ջqs:ރ/2MZ׈>z qb']W]zїbVI0>y1%>hfRDLfiCcR4m (^kO,?bj<=bBL @brBeâ1bI|c3c^׊7tL(FDbT%&qWąZ ˭"=9EN3\L4L7XWA٦T̋,4GFOz˛kpa'/x :yd-?*1arnQimLu}b.'Vļ'rq/hIr[~s)јW,?89:/cb1; TC67ȣM>AV씋BiZ^B"@9̩R/穘\s1|Ź=>l.{iAN5sT3%`k3 9uzsj9f@Poѕ8a kV+5ŽH,,'cbB~[O[>f"=vN=>y-6'YGƒ؉n-5rVΣE|Yu1k> kOeCXVx,Q/p_u8T ڸ^K G6E:¸4q[WԴZVJi_QAg܆oXfVWBPCL>8[NƕyO'ɽcƻ)_*G6v?|ՕsӨ4N\O(Sv%7yrrˎ.5XP+'c >V꟮]@jzyf^;T]-A8}-wfÈOq1[؅SɃ)K]WUUc1uM"eՐVݓM}릜A+(nqj6rbSܾ&™;⤬Aqۺ7:+ˬ%-\Po*[WqX!Q*bʗE:w-U/ إ;M&7& w/>+ǝfEJ֕_#3->Vd Q3Wf8j^N单2O ~7ķsiNF~#UdClߕ-M⻔]@y_ٿ;yjyƗ]$rNn(ߔ5ܓo#v; M-Gc͌YZm(m k0:%8YqZ" iI?o~ax((/`U֐/k5֘쒫xdLӁjnU-R+Zkjkj˱ 0Bm]|s.vV Ώi}nZ=:̟%sP>7ͩq6ϟrBD̎˳Zcfꆬ>q3#O^]lM s{V8skߏхO6y;xoTłxA5Nj QCsgK06+v75nHt w2#'ƾD&{մĆ7?9q/k͘>5|PQ1NJ\bRX{clx(]qEetN7AvC;I-:-giQ踒 vh?⟖rG߾30.#6ߕ۴r?弫l}N9|ܯn[y1[9Mc2]vB=Ḹfh wgضػE8xspܬ5cn\pqMT"ĞèxN-MƝoV(6-khUٕF"I_DM&LSEѿddٴվXPkB.4!ZWVyuD%*Nί y5|NmÐ#޹h벾 1㸥\K,(GGOwװӏwȇ_ѦWۛiqƧɯ weYP~OrD^mʕtì@<91GGc8E VGk\X޵dGCmavЉ\cE::7V:g⠸f8 ՊBx-k-jWzY|5~CU#F7\ .@~`q6E`>X>&?Qb VCsUܶFqi^4Zb^_s]U\ v(M muT%џlR͛VoU6Uc6mݸGk!{Gc\_͉ox>:G!__6qQ,};iU)߈?u_{{'^v9&B/fu9ؑ_MsEb/D{8:ycVW9TkH?A\^[x(w\F9Řb*|?ͯODML +GW}v%_L:yKN7|%z T&q;lj꡿]2)O(_W(ձo6{nrPvƊE6w"DW,O2lW.FWkb#5QjTW*Tz;ԨynA97rq;8h(~J~x|8xǻ,w.s~7}r_3^u 89/A?32v◞w2n&qd|H-v*.h,z[g1XHqb61-bb=Pt)RLt]C㭸8{oJE~GL k$ H%N1?:bcDC1 LAkBM]1Wc&a>E{mza~"G$ x,_s]OF}BG-}$ߵ%G|A{3p^6"~lBK\H+.+Ȟqǘ?!䨼8O!;"y!9?hW|Wcv@ ldc<\C|ba/6( ?ri9_5~o=kJlj Q9ȟՎ{gZqu>ZGm7>`% &y ;R O|2{2+r$U|+{e|}v#ުRhܭkn؍؇'5 @rS}ɻpr)5mȳ]wyk` 5g=xs-$gX1qcuV`EM:֠B"5SYo ZkDg],D?78Ȯ&'>ŸÉZPi'bgYN>@tD7Ա'j7o+z5~>aÜrg5[jECEg}9*ǎ:W v@t2NF-{K;lwUͣ 9қ.>wtdž:Je||ؒؖ|| 7 Ž9z-\N`ݫyN5O&&1`@j>+&7-5jӢ#5 G1;^LJ cE>*gEYo[^$HwWtp8lmCpm8cM!Fi8UL i }д%ڟUr>db5䞼|%_5.PKc~9ֽ^; Fsxa)>$#bm^mS׎idsG^ub_dzx'^qsnMv Wͩ]VQsWY Vَh|Gă${k{c4)d$kX8Ƈ伬|&[.+:?]e=?{'6l^VGu﫴y7g+ O/! xruqru<^}xH g+?CؙbљzPL@Ф,f/(?/T(+̲AW{#fKuho+5v (=Y53%TUhFgMQٔ- 'W۲|ټ.] +%EA=$>ՋKq|f!̓_|==n:mͷbY< ?!BC+hhG1)+aESM(~9;aY@Gf{^}ȏ5thbI!$XhS̷|̷",VXN,+1_M@bZ!:hzzhoAW*x9~]G-[XJnsb ם1c w3FOZ]>D]'IDATsWWb-jadYԣ_QlD\cbc`jW򮲅{dpoi?2ͳL0fQ] 2vqX^f~Hk㶂VPDQz%@*,*e|ooj߳]߸hVUgۿS=^ -kJO n3m?R9ۉT4%M+A[t'ΧiXQ]IND|/%6Hkd:c/oɿbnWcבo7rqG&|yʽY&ҼqNyA')Ki27Rk׫'cEU!I^Y8X2\:a|ب-^`ei#@tտsըCնvhr钹`6v+#yLA>gGbWlbKEGN1bI;ua @eeV6OV)4:Q/q1GŮ91h @Nq&-:P*OV٣)uw-3u!&4$kAqB푸^bbpw=i<H"GflBޕs򱜚=[IؠHۡW0[Ϳv?sN;XdwjWGيl#JJlk]8Y?$0_3rR</w0 r:Fo-}; .j9Q{+@Ob#kL^ۀ89ϋטoeNm͈8\ڎ#~`=jju3Xb؀XKsGE{Ys[~re>!+oڊ!CCԈ'KmmbůωkĈy{WFv8$ךFI4Q{&vO0 vQxmY9vPUXAWQ& i1DAYE=4h|;_-ry;=Q!tsGW?Y7ș9Q;#oXMN&oLk(o!p㓼?$q#Т1f;GyFI>elBkC>]H[b^^C /kۣM\/܌xˁU.*yt z {+9bfo~u${0WkQr+QkQi7ɕKĢlȧȯ-3h95ک#=nNKx =0oB;@mҜf7@9y$Z9~so) "A>qөcH܋ͪغ>l[^k<4~o ٜ0qi&cKmhr"j E[OiQPUi8eGb4S^8-V<7T4m!WF_esK_Qu6 ߃}4&.RNe5\[oUfժjYe7ך嚹˛u,  ,}qlȣ}N6ElPL)摻7S[6<ƚmW=m!lЧQVQTÆ1rο9}):TF3*bQf.&ܑs3'b-O}2 +shjU ;ZdXn>hdʖf&hhTtYk<yGscobiQl{Cչ wͪDQFvAeXPkU)xZefeYn,AST0*d+l{cF54m^&6?+#)I>cpDN+|HRI"w.!/*3L.Ж@[:|3\atަڲɊ_,O1S X|T$9?d,rv)䦱Ŗ^ O1޹Y,?=:h#^+2d5S04.!jYy<18GقZ#~:،r6"}>JzXD|bcõ!2,ջK'b!Fͪk^he0LOb~i|;5qYGޔ||<7 XlJM~Av11bOC'uNfij٥y}׼-!ϵrD_!įqF|R+_yܝey[c^>zIt|UA`22,|m1j8TM|IqW%7Ee #6'/V=;/ۿ %N Y+?^n^>Ļ1(VhX3 ^ODu_Et%[&iYd'jrEN}1&XXGRàGݰ]ָm?bt8vI5jWOdV^YK"ʾ\ͪ8=_!ΰwL^Uƽ9^ʑQ$5 *J("e"Z$Vb ֶz~lj>8)N] ?>ΥDvYmR|X!gGbڦy'6nm]9M u.&ws Egվ+3q3n&vDCE;gm |nUj]GqF|?%7<͓ΰ13O#ó6$3s03NjVJ iy9/?M̗ccrQreÇ1o.Бcs욳qY-s'aGYrD&[cvta50rA#B6Xé-ϹїXx|_Y/-ݮu kgmf9W9֒_N^@3\WJZ+5ZWݫ|."7U҅'+NteVҼJ\V&щ8ؒX%VJ˵؄m=ne7즻{=_͌Hmgz  #ikQWL*8C.m:^2XTyE9ÿi`v%Y]u甒{*ڂ*aXT],:V˿y#t+_SEwF[_nTJi<ܓo+j&}cl琜Ju(/q17w5bFqN1 mkj_)F" ea*7z؜gTlD#TqXvsR.O!:)\nv2`LlfTs `{HRԤ*4S:+%[SQ舾 _byy%qi?Jڮދȶ5݇q)B|T&V`q- *|fTy~YϼMI[;hٯKŞ?⇵"wk{Bl8{8)M,mlYl5ӫxUK*GeWҘ`Q4FIl )GiZG-^_s*?td@N)!zٰx:?,zdܧ b(6/f77 u5wo6]m\٦wFkה7̙7AmlMH5_Z}U٥N/KA#J@S/y]#b/ t2[-}`Hlam;ۗcs+jt[!ѹ [YbX媚c_eݳ_נN;u}|1wU9-d[g;`m[77!b^k~:ދS-~XAy?hZr(|P|S(x70rfEީ} ;Bq%; 7Y}ee#Ԭ^f4m6ujZkF S;VcY~n\oh[2IGOf1&vU+~ 2X<Ɲ5X* <ɾuJ_GиZ_{#Am|-!~S{"jZZ;P\[lBcb:yZI9OŇ;^Ċ;Pj2,L)`1 -1 &/<+=>lS܉c<{McsWr[s?_3gsi˞9|@ p)ـ1x~f}Zc1+ZyVaA%1_\R$T (-4A3  Zzs>7[|Bq&śXjA'7=VE o~fqiAg;B1bu3f][;ǒm/Y{ƯOܾsQéCAUs\DIq\I˲'m(lԶt֐3Xe"Ye׬j3-pȮh/F зڿ7o"2:]vF-if3F;m~Y$TK,NϽpgZnkO7ꯠuq$Z9Oę98EK򔼸)~U|]N1xzv>i{Y]Գg6 )>Uěg9M&]3{&L;cY—^XKXx)֖ӺyE6DiAc+ɖ _y?#cqLa3̩==I{>6zz'R 8ꉍ|igUkJ04 {蔯W.CL"uE55ي*6.{B)BX2\.ZـGz$dsc~CȎW_d?{frl]ܱ]=Ku#5C9 ]cC@7ٟha^T,%w@moj䶥Vw/TqUTJ,eMLaMݷn,F޿c|ب|. p`^Oh(qy׭6o vԣ b6{ƯX'2Z5+{xi.ۂ~Eo+U`y3T#_.c87.!_ɟv񳼔8G{q-Wý_\/L\wd8oس jj+ PwŅIJڱx1-Ļx'ɣ-w0!YeQxƭ oS}Hm!3vGJTK1CN(,DT2Y~8Hb/b=%lsɵ-NG^1sW=iv!WĦ/1,b=rsOE|) Źvs)6q,5lT|X53GYXU^7X ̉2јe2C *Tw鿁}W@+>пk4Öy?0uMO޺{%9EMsk_3B>]L&+^*b6: Nګ8JP-bxY(N2&/ΣٴA|$7̶[.9lZx53U7rEfBEh,jՅj`ec+W&mVktE'tO?47<:wĬK15?/ YV!_)SC QEQ ڨ./F{NM~ݎgqzђ,h^bSW?!kaOe;vxY:Ưpv%99fms-#L5-m M0S[rRL2:Sm瑳c',=\ 2$k4WM/n{Ä3`r("FV z @~j ;_3tZR,bYŎUڇUX( <;GYYSe m["佱K n1>bYXCcBt$q 1O5l*UsVuWC \lf.nҒ>/hMR6R N89Xc ϭ OQC1ކSxسv6IVB|A^WY}r=yS|}*΂<=glKN(Q|sIܵÓG?4(gbEߨֶx\Vd-rr|([QơZ7 o:/|Ϭe] :k_M`=`Ojvc)9C&~gyuH~{f`EmVN$֋)Xuѕڨڑ-7S&7y[.>.=ت6?z8=r˲a^vqxo{]L&~'2VQXH̬SM sM MSMs:>7T1"}xֻ*7_ɛݭ/63D'f;439'8JY?DwUɗ#Ņy1#"z)F{ [q6ZbF9N m1ű5qsGnN& UU+޾'8:[^j5VOJz8rAluXDh ܫ3ʂnZYlXeyՅмf~ur^`F_W*I`;п6-j T QC,)Rƅ.=}O UG9//[GIܐ_G )"/AT^̦/yd{Q=)6%XLNl|J)[df\kiJ6d.s\J7~/ >03|C73ri%_Q@@c Ϫ>Y(k:jz顄Nl?9y}bGt6^9ni>[\jwf3P|GtKˑba/P.ù>5ZX{~˃Gv3󊵋zEw<. DR&QgS}9~qCZ0Tlq=v2~ZTU ,Vَ,exPO#;5\\OK.]37JmԺ,LDkOnyguW2Kq0*-uwMۗ GB>SF,T?{8/%͗L8;Z^ͪZZdE=<:7`*rjMZQ׌KZ_չ?۴bErNCJv5SNb@4rL1y? ).ŸNVR[X ĎّTWYmj0 cC,17 CYԎ@-X@j,yq #+_&q6q"yYtVF7k1-gAP-[v17T\PL&_n1\_R;.{ DYȩ r߯L]A9Z::cy,b씛?l[^|7{/WR"k>qF@YM8.aM*},ioy ?~l|ؼ[W.χzUnӎAݩKKVn.njq'E=n1x*&ĚXZ;Z9j7__(T+A&_3̷]gXaSdJUUKeA%WO!5|\c 6.Zc8/ksjB^P{P@ckb^<Ӌxs

    nQJh`c17~ ۜZmu,'xЭQN&SbŽƗk(;jq{WR dMZǓWsm/-mTqqڥkWO#rA*wqk'Ԏ,lU %YnZL!ű!/5x렕G'Bm8#A'Wq9:nZ/Ij4eҪU[hT OGgVI \[/T{vԿiz_TF)Yv?xŢ6Aޝ?d$ܠ 7OT_\^|I(>jxbiyIѹ ~g?H6U0A1bcV9A.QyJ4%|-ZWÖ$Iġ_{Y~1im9ךRW3rf&<9sؙNgEO?Ο%65bL9b^hO~tLj:m;6VŤhvF~r2C1< bElgz^s^\@ -[75J7i68W3 ]y>K.̦K4nS6߳.GSܝMy"eCEի=Fl[Cܘ >u|@opdlnK\[v!ޱ|4|j;an|RI:Vsk]&QA XhG@|x,`Y{%ϪPPW!:i#jQoXjך@T{ jj.ٮ%!FP/zG;ƒ4a w#o%Mey;96#Q)8bJ((پŊmWaß?(_mseC27%wI9#+{f+?!/Uo3/[*^WP{JN[M#iXlĶf`l,kr6qQk8 %G3V(a6MJ\LZh,lޛ_e+Nhґfoi&//cK->90G6x cG{b0n{qn^EU,9l_~)|8j6[?>U^Jf$'Uٔ8AۜO-—N8l<0;Ψ6KhȑMK6ͭ &>5-?Bo_伬Q9 fn2qn(Fe,oN.2YyX9#e].1.F{Nd;΢ڱo0޻??r?Y> 3?Ѯ+y ~vCd'V@CwryfT*_onUwVayYAG; <GdOeʲharvp a_v /m9 eb%7MeN2".$9xj@6MMlDWQ'0[)U}࿭WP:׻Wǰ0:cyl'<͈U#((^s~ԓ{ (n1hbDJ~oT҆nץ~aeBڗo||+r|mR&s_.r #,ݏYbT:_5EG\?+|/"򾼫hCR[bb9تO*66վbKӫF܄|?{lrIn] 0f',krw qspy>&||h|;3_[aPJ*g K/ =J)WJ _PB2Nڣ>yn>`8=HS[_3`_dSZ2O(WsPJ>CщRIQWO׬]‡] k)Wqdm'e]q qgZy/ֈsO9 ]۴ZrV~jFAA8:77պaiϔ{UUZVӘ7B몷zF#;1zc^QU7,9˫ۜ,%/( E;au%.^ _c0>pEM;!ǾbMs 8=SX;?ǣ)Ž9hMmGmj[SkJq%m^e8̓kme\XzZ3C%x1w-cim ."#/ڒˀ{]/_ʞ/F(7#%PL K28Ҳh8mH8^w@+@ff 9s)l6Z?]U{ nCĜ؍xϤ(ȳy&>n$^g<|c؅BwrENvh1* ߌX'm?2o%(//(Վ,nX/{#ٔZI6k _+$~Cl9rr|<H U Fo.:Eo}hV baZ`;`kbi^mqim%$AkAa譓+ *zݭn+\Qۙ_N>~ gzW`zY&)&c I=5;šǶyĦa9 L='}E\| ɋaKؗ<;-iBm~%E>HqTR\MN%#M1;lsSBms&v9M}ncΦڄluÈ}%=QuDnKY9_ɕdiRzQٝ܈OnȧDJn-~ȖyAO;;bd˼dyX7g-G7yg wZ5D.'j5>ɯO\tX 'b;O磳n:ə6!~ďCCZkaؙl?ɻ쮋^' {$eֲsLbl qh. ZŎlY;`e?z-gNSHI׼:>wժ1x*,hмN|}[X^ќ*>!_V[* Zgj]ITd*hח7bd~QRu͡pNwxf7ܰȿr<,?)vF Y,")^/> =x8x}OoX?#Xf+~XN{\ zFq%Si- !_hڬON:ϯ~Ә?n.~CaL#.ͫuA}\%^ʿH1%VM1ݱ9fYN#f^C&'ft֮8衾v!_/FswnQPŧƀڙQq>9$%m^֦Me=no#Iz;#ܒ K$-=sNg FM챤eiŌU{j6RDRo. o9 p7l%!njhA]6K%NwAfODajVBDx.1 g EX!V18kg3[/2W׷zuoyk7|ݠ]7 ډկbцX^fT}OԈAD?XHDHw䟵*Wm )u]x6&^'ʼnx7"!(`xE—yq|'N<1$bJ]sjMsRN8bϠn1 \uy[Ś;7.ءQqk1K$ެ>W%lj'2;q׍svFY1zLt8*Ls5F4D'Ͱ"'keRs5; T^ ? E$5`Mt"6BW+m:E7y^X%/ٰs0<)/@..]~D0.O#by9qA$/t0l6Ցl;7 _NfY#|[x>ygI|z/y Y>!gMN99!96Wo(`L%N9?~VnN'eB~EFQ]D9aN62;lGyN" ɍrL>FzW9pFl҈c6>ixj)%g/޲_MVL~f*;sY[lW- r!ym흡'v9쒿ʭɵ]h?4ɋxq~AVgj"o\E^Mī qNU13.66ɾ@o30?0wxǻ>"?3Ӑ Vĺz!^EFAnR(S%64$9\ˉ;yٌp59;[<<>>qJY18|F~#? 5KFX^o&VKwfae*+1&_.GCy[ Fc~W63Y~LA1Ӭ|a.?ve}SVsghk/?h(rE[l_gH\+qf ȃqkBnwrW,ikrjqlu<㾾e6eg2GYWЯJIX@U J"K%MS3zJqPA+vFT_&F]UU@vec|'EWT)ys7H[ZP>xFZ݅6ęMhJR\s]?Ŋ|ݻ\M?lSU;g6\ >'>OMpbho+'d;⁼Xhg=HN19\e>pv* F4+ŵ; =MN(sFmT;POv =Ҟ-WM\__ 侹rHvnquqZަ'ӯj{y1(>iv52cIw݃إV75$+@%s}0FajovQ+^Yq2\zԍ^:w]c %x,ώO;jpT _႘#/E, Eov3z-]cяyGI=x*]4UۙJdGjMM)/Kt&6P^ I4D?X/'l`ы0o/}z Aj_AlTCoڻx<;?7 5h|| d<%WsJ$?98O1&!,.'EhY[/Oq\vIٻ{x3w#ə\ e؍|& c|rP<2c+(P^cJ E)NE +Ke ,5[Cl)`ޤ =J 6 -19R‡[ގ]܉}k'l=9&O0|(GV|HΦdin@_]ȏ%AgcԜ7sTsN9?Wd yVƓT|L`q䄜sC(^y H6hl1Y7[,fe\c35hgVJ!MtX%ā|419zמa"S1v(jɝeDqc|3LzBv~> .núy.0\+DeE@,*/rQ2)J-[ͅL{+wO%sY=eMjo ,h|%iTvԒY+5)/)ǥ]욧YveiD^\޷xAW$ѓYJ0Ug%f9/;\CWzuOix{ ߰ٻڌi4s(ΘwŌn,첥\Ĵ݈6@VW%ߩ]}=]\/Ѫvq,">wcbtЄIdbq/Q&kg܉b|FBƎ<Ɏ٣ؖ84PLms%9'wx"g ⌸2KFY:Nh8Ƭo敪~J@ ( H3M&ZݿuMWa74V|:QiÎ/;VWt o3|g[GbXĴZ[Yt LMKmGnm +Z0]sc6Êumd=VM1کG XIm\h P2vX`,lq^S[rWX{P;=C^kHs,qPC~bkO~sW/ .w|Bt&ځ%V^v9~>L!^uFyϫ˱xE;#72>i:Y[L2_o:m˽mǓՎ&~s#fx'?GvIl3am{MS7ŝbn9z}Čv<>¬x$@-."q9]k;x@/Bd[D} u(O kiu!/:$*I%|i*˔n-v=Y)o'k7Bjo7п#Ybm͞㾜@>PD C^gsVq1" '-|E)~_4GܦXwo@MC5_ȉe?{<*oJnrO{nk85w#\A.$Zcoo:6C}a>3L24L3'gb,K%Ya(* s}1UFwrObh4Y .!c?8!Ky܈f^6؇<|N Y˕撣CT4}LL+*+V!˿zm7sg~|I [NQf18!lXR^;هI5j"X/,%Xꬷ/˫vy8FeKYȪ 8);+X\E:m*eWK;UF,?ZWM[Y1  rK[uߛe凕G wU!qr#qn/bQ<C^]R\af=oWI@AQ3{QBrUG9&.!e}cuqy9{̤WG;SJ71L} $֭*-9v2XlfBQuljUtϷDMll؇XbYY$Gy4"VSDoeb1:w)//_zNӽSkeC=.Zw.+vC,9_ɦS/>xb@Cno1OMVD=~]t >mE+rbdC>{ê{dy,6ӥx'E?+Sqtޗ';[ -WT,Qnɉ XW|ؤoan]nhغFw=T5ղthQaWeCm8KY_hu9`ukۢ3RF؎8!n!:ѮS&9ㆩj?֡Vm(#ũE:rW'ײ>kկ*^E{IUmk:M9HFDQ̊0 l6ma ` HArΩj9Q}|޳|~fWꮚk1;~;v`^  cVUkQ~LN 8#M=_.wAr`[l= zǦ`=ctjթ4ֳx I|t^-T*@˵E?FMl*pz`hrG8/?\w\wHt%h(9vNUʲAGA5Igy\v6+s} Lt;Ўf lkD^ $W%-t"'z9lJqQ{wbܷfm7ia6ǂҘpo*!{bFIvyi.4Gnte0~W]*\\3s=pGj^kZ]*9_A5ˁU< WtJrAL?t6r#_y~ YRFhĪA?)*@e}-~J 'q&IN h[YvY |BfLRХP&\Е\[H@tލ_%t+-$〦n[u`Dw@کpJI`3<|5q޶k"0Ow`fdy~TWlOV^pK_WJ$Y_+wyZ|EWu|Z|ȷ& > b<1V' - S=0udg廓q2Mqn;((WQi3i!1^;AC 8 zmHP8V? s̶am\+>`)d6L!G]VnĖ¥Bu5Fuf nZ.;t:.Jf30Ji ̠RN򉤧;&755 pݳ8KQX`| 9ΪnWnȅ:a}Ǖ;7Sp Ju_z.=v"6zj!hշ~`[ kbVvߞ7'|g:G vQWpXXtAcXÁʭ7B۲ni$ح)Oy~?ø8C<Hmp1kќcН=bئezd3)|ZB;6'[Zef ͷ઻yj4xߘ<ƻ[]ŵurF[gMt>DwٯQvrVAl;4> J ,Ϟ @/StЇzY!tQK8-5EG0Ao-R頏X@+J8Dfߑ.`1)m@Vwo X@uC'z+R3P\N!=(a? ltmFQnVnHЖY 4T ֖]l4mk)Gy`*jlyWXl~{F#Fgmnt ɶ.ҹ+Hkx}O;[Cd/V~q*nY@g>_YW'.]P?c"_AjR} B&5%i7tzˍv1۫É.oWM,,] Zfc U-5.P!X>!>ΆCwB@c>=1x+e8PuP@KF1>0u= 6Hm@oL%_g +akw9u'+5(fZ^\p=`B/(@AXGZp--KW{Ȓߜg$VrT>-(j+E*̺vjq{'^nDu*\ Yr!q9n9Iuܱ.Wǿ.z@h=ϵ z 5/u4B2A -o@-.cC.ЈE{RʀdR-HGm4P kD}>U4Tm@?тr^na' ,0H}FĆN= MtZ ւn`v`2!  iB^i zUCt+; v7?>NXz|?@pu݅/`Xu\5p .5zY?HKm TȇGghˁ5Y]$(mfЕ`؂a+lׅ}'0\ \g6Ip 0O:=d`Un|Raq-e8dV!!; fmn&"T(>mmk4,Jְ}? vճ-gͣQ[+wD,UOamʲxDZZ_J?ۇx+?>qEFa[nel藨%@45 ஶo`DcN`ӕ>ħ0k@c2جt~eīt ߂ >}d~s@t~t>-РA+ II_?m k ]tKx=;DõSkQOvz+ct,d[; ~;;@Jd6)$TeΧ raGR ]XnQ 86aK+}H hF0OmwZ#jRhܢl;5$/vR״ԍ94W(܃A7y+MWI}_A1A+ZKwj`8JAj[ [Џn>WD:Yɹ~p9hker -4/0_'7A՚ npO~t'T.k;} dbP: %(w Sjj teNTsj  mNWn17ҝ@wNkgQSP[Dj1Tg8)z gz \o@ۘt s@_S@ iA`=m'5rb tГj@QHb;m4X}l6NVE!xY>-8JXgMМ4[oZKkZ=A)Ȧ:@S:Zw`,ul߸ӌ `}ifsUh0ؑ]1t L BWp*W/@7h--ZGƖF@lkT@w޳6ɧ彡Ou4 Z+x!ԗHJ|f/=, =eaC@>qп_ 8#l' rH^ rgEz׵&k;];6wKj+3:S2MZN偖:JScYW-PN 'à t"ZPG"x&=~%S*r _>0Pm=~p}Uʪ/ -qUA p[**>AkoBBƲeX`o%@%_ tbh6p@] W sAWnԘ節H_ w5s*a:܅xGGA'3Mkq'eZu8 88Gh Z&V9nJ."t1PtR,ԥ&5& zz dҀƀѐX `ldiFhQ v-i`;v$D$ȳ6d*!h 68}VtaknG1t-ع@2u!X4`?%R- R/-^`i2ČZ>7"ؠpLؚ]wAnVao+ z% [!pî[G&+8v,=5;^u#o^Q<ۭZ?E e(ґ-akL+ t  nXoq9~q*5ͻSx9C0򽙃iD]c?ہKjI[Oca]_y ި-o IW&6N :{4jhl5\[Ӱm<kd]^u|oQ6 +c%iG/DBhg hjnV{tv.k߀5f}BkڂesL`#}uZi}AhڬZ 2}fJ WW9_.)99Lė4 n{-Nw ղ=얚Ͱ=n5U'P;J@t \Aw taS>g-]v.h 4)@idՀH"2- O)19Ӄ2;(q p@7hӅ~T#g7@*-(7%(>3K呠YB 1ݠw%:JOT"먿k/t-nA r[ :YWK5nIp%wρ*܏Q`S˳v}Bez[u %?eV0xRXM# zh4pM'^1l @wP3ZxA' s(_TA9v,ڠ:K]6|1+58R9zt&NW5ѕ͠=R`>g) 4DoTIM<ijj^=gֈ|} L>MTRC~PK*] /%$3RjӘR%H:@e wyd#^{ld@`+}ˡU{;+}:R_է!u@kUUzV:@_НdK.˱-1ڃ[_ U`炍m vrBsMhK G{%\-nҢA/GV2YlW[ [ ?KhzYDJ4l\$XE"IbYa3ϋA₼$/8Be?ۚ%ua#W(dU>.|3C ]`^zzpG% z:r9W^!p {Ek *uڠ:Fm#uZ.n Y+J}7VˁD`'JWI9PXc!_/;F>;*?$bL Jk~r-f;J .&'ߺfl,h7+pܯ49 њ mu3@#,<h4iSznTVÚWl ㊁vR e=u vѠ5҆+9N6Ms@'K;)!Z(?.z~#k[jX_z z\ׯ = yH<;`OX7y&+RC \Q sܙ=NU-s`7ztfe=} zV .pO$PQ4t 5J:N-@-՗!`uZb=ɧxYfi  xhomI$D<1NufYzE6`I Lͩk:f@/n F#jوn6m-Y6R@ BvF s`ngekn's ~ζˀD.jZޫ}0$~k| jm[B+2F/Vdl 6^W7vrˡvCkWw.vhVgD#\ ہz^݁6ꪚ@K P/'$*v;>&4[bvgfByB`dD6 8 0 b d\7>U !g}DS+j+gR86aaIW2Ϊ>@ m5Fz"`'3V4kvm>l 6>muC3[jD]!:jiDQb+]{G>=h;|$#]{-ᲄLP]C `?GXqF]Ylt2Xo&i^a~bh=`tNQ7I%j,if ᝚SO8ah.˽ ѵځiz:q;N dHbۀ4Sv+ /oGeWTB DdR$T&@-P49@3:P zQ@ϐ c 3!P J6:c.JI!f0t3`gX=iv= Էm؃fV` XF(WMl4X9I7Bf>.j@>u?D^Yhɉ%HҊx)y;XZrUƭpۊ*p\: {Um`!s7?Pi~5L۠G4KuG+Ƕ%$.] DcnsΙ? '@3kac5FgxKϮLv Uw`ݬ1ta$Ж< n׏%t M)I dQ [u*,mM#JFhN'!:3= @QkH;i` ҵ́%#A5( z[_ +cϵ@Agj~7Zs bӴ6!puvwQXd}X nrσw:vMJ4]#pIug6g w1'n[uZ2ut>T> { t^޻o\PQ ;iꃪx1VJ`%+u*p:j z>.ԓjEjV8:̇ 3ZA_a_ӈ&sP˨ $A+ ha{Zeulm,6Xme[ v)[a> ~.{8@}`7ʼ<ݼ@N(%8* Tsm,$L@Z ؉ >;Òm6l[]_-?-? 6@y{F41^:}ka6mGm]t!o{8-pP‚QI'W3Tew̼$| S`%P6$ťUA8Bq_aпjU?o`+X 8{_ X㫭PטuDu􉶸IzefWAnvep n4|ַ<n + wr x[Š5\MA@]A#4k *c~dOgѯLMX )%^AJU|p?}zB-gltڨ O>NQ}vItU}X?`y ]I6 }sƷ Qo1Ws]և %%-˯=@Wg,H$x$MK#שo++W,|W*Zfh{^O+v/ ZixKcww h{87: |ާf>˟5_}Ǎ =4F}U T_g7h(qp!MzJ4)L>>bb5 v=)Ju$bʔ1Ij*2i$[3StdN:Pj d=d Q N}KuДe4 Rf@mHʬhAC`mD,:S Е=5AhK.!9"RtK"X}V4[ ր[$G.|d{7te^68w>hvڠ6JvE`f$nҕj D:٫# _]F\[^nċkLO:?&T\~? `<ʟ*7a7ۇ İ9j7JKWt :N'Е6A%3\gbY`Y5oڰf=^n%l9 Id!:hխ D׺Fc Zj~\?>@|$ 0iR38hnf4v:@c @$Z^vOFRh79m;Ͼ+AݯG@Y# A?k2+w| :|L/ Z54E 4G_iz}@w]zuC;fuW!:ѥuZjjjvdǓN J ='G,~4)POS#(HX'$R( |os9M]:4%kkNWb=hJ|;Nȴz K0(HZEk{\2@6h&B9 pS ̭Nإew>E;B7ϵ67l%0 b&n.ߝ%OZ#*{>hl@tTK8}A5FSp4T<vJMz꾶Vz{fPZzžIu-zGfP7{- 9:ZC೔5Ҕ9auo @K=$SaxxjCA|IzʊP/gT@+p;@ yhy:m6k;6A_.ѴJwY,tXWHsuc=TՇ{;xͿXpm :*%sZ=rO`ϒ6 ,~'6+lvRHrE`T@%O/H<fRAOoO#4 2LR `Y g f@/IթքSKcA]t'M4@mh LsځJiM֞:"XK_ N vΰˁgٛ`;dXK pVn L`"Ɵ/T7ZS/'6Lہ .S;dZ _%XZIiwRaQ=;23&"Bp`bP]k <,W p@HxTZвSZ vT8OtOؠJA淶!6 F=O=kL.eM|luvZ9 Y?nG֖3:Vy#+:aFn:h8D[o%}*O :oH0iRv.qF슄QAdh}hY`h ]n߃m"{Ɗi}˨X.^KU`)<ݤ} -t7.p?;XGD{ٳ?u a} ,:7JIݏ:VfkUGAl:& \HgFm JOc٠Et LQWJx%@ W$$ɡf$ڄ5C.q@ckO)Bϐ6YV'R@O@pzs \t>=1 N ~sP){)'(*vǃMs}pϻӝƏf&-zn {WAzOObWV^S! 6$k0zm @~6HuiH.h3 Dl742Xd'a6V0`3{ le NrvKn~`C?\u PٍJ C_A10ؚ?'!sa}DDD@:i5u+_xXfDmNXY]K5D] : 1f~ɨX50 3i'fV=*+n ^ۢm@?h ,: EEo'{{l~JUgVl пfJ[ G韠QȥUпxe+? WK IƊ0{_ZՕJX*G4}淪9@j>)^M*w;q[-npAy%4Ǖ<an +.XP'NPb(pV8PC=^w牷["(짐||Bp/ (|| >M3tPJt;\;O6Cp[r?M _\zkhM75]'Pkk] 6z[/\nX4gbKMd7zV}zP }/l7>যN`̝ _78{($T PZ A:xܣ{jvV>\yA|%ncg~:M{Sݓ@mtVm= z%Mn g7| Swa}5z;àUH[i@c=^qe3cZ~.J٠|Oob%֓v`wU ~})(D@, J8H `3iIaߖBaz5ҙ@ vOPj]O:@]NMYVhLM 4. Zр&@;#Tlm֑@ ZOZu~cͦ?`ݝ9L^p7 @=CbG]GpF4uJm%6wۀ*%m75FCJֻܜunAޘ,'IJC+YyKB I-jަ*Yijq;a`+1ѐZa}ݮHR~ĝv#T_Xvv3v:m;`_Y9l_ÁޅEi->`ٖubt:@;b+uƆ0f#e&d- k %`3cKi+}*YUOmp^}gL h6_3}A3~_@k Ğ6bcpv8V_7f':uW]v!:&[CPGf߀~@5V5x ;NB`4kM,Ӗ@*%^ I^ 2)@' @Sc4hFgO.XK:H7-"AӀTCArR5\Dz)~&Jp;DRek[ubϻ,7dؽ0to~G]pj|S^NCNp}j +TpN'sx6z3AL_WS. Sh%T/hj) jd} 9g?H 4OUtҀycAGi*Lyh2%b%h6YLQ6DjԢ=@iK%Л+862VVhV~ckf#}\l# I6|~!>?~`oO>u7U><A`?)d+%T69)ØB_No*y\Ϫ)A@ %Z@+ C{9.`GPl/yvmul} z|"AJ?^i컛FG-W):(5 z>l-aktpw-l(V `I R*rUލ GW^E) $Ap蟷K =), BKCw!HP:$wV-{Iu֩6kQu#4Uz̷4@U]% nO$j U9F0HW-f! p@n$ xLv>I_>"T؝ ?UO%D+&TYN)p" 96졀ZFQڥv}~kHfWshƩEAfD} nXC{9y"xVmzeuupZQ v%@`\( -u_27l[MT-sգAW}fV9+{'D}}xZ ˷Tú$=^|zX:}"yO_ڮ @nE-e;jUZ+/64-sBtsi`90}t}bɠI.?mpc+Oݖ[R#Buw9ueQj +4 t %P_zPS53~:`.Xf>Pi 0=۾ 8(ʀ2a\l+(b!0֎XH< Г?v8M3lDAOXzPV 2,e4P,j.&[Z@miBK -ithH/ Pznm]o%([;%%@ xRr`Hj.1槐YZ$eɠ+5>Z % gZW`%}-t/1 蚼0% -lq P`qWnѿ:ODz .hnw Kʘd6CYF-3~ĺUAMkx# HdͶ 8J[b{@`:}s7;~#Ķ[:XZVjjY+Q/*8 ?|&8H> >/ Z J:e%DD'}F#6fۓ6h^6N.yg@"o= =zkD-Ƃen!58kKa<>q[3nknqՎ٩h9[2^{Jd}K7 Xz)`Me'Q߃xl\P4v8h`LbU9 yNHŀT@@6x60vp h`m(>Mvuc@j6i@  lWd+**u^ڳP^ -z'C~7G_2-yDt8aJEu}ꢤMOYMطknk bρ{;ߧA:rD< :  nwwj֠=DuPԆcHu$ip9 th0(l5 Z<Ӏ͵4BO+Xlgt_^Rj+)1IʵFLhF3\B0 8mc Z ְ_WcO-/~B[E@>{)vP"!ϡ8^^`~J Q  Wb&V-O:Y@SB+A Ŏt[Xeؓ`{ad=l=Ƃ zx`aSEW}JfW$$%lJtq aˁDd%Q"(_l }{~'SI6 8'eAlǿ޸@>axq@aпdKӂ?[5.GYlZ& /~Y~w;>VΌD`[کu|=ᒀcu?6`=p%pv-:-pSAk@A#՛VAM]'ndA#8F֠Zb :)\3_I$*oUC= !wH߷xvr· _=4&yvhAvmCZ C أ^F[Vb|~{[χcӀpT۲ *D`Z h' }rmux4jBQqav`r/BB`׃B5~4vd~=V'֊"' +@O i>Q1)s 0@Ql DѫE`# 6Ƕ f~nó^q b 6;iTT;}s5n^w4tht:Uwnc,p X TGr;@1X Lg'>ɞΩR*OE8c/xP=xX@=jܤ4 ^W}U k8"QhI_p78 2̱~{8 8 0n"q@fx:|B>9]A )wp,w.d:v Tn>x"l29ld-g'gvS%=RV&;,[3zDЙ33vv"a_ij'P@hSh'@-lp-L] }{m4& Li>1m@po`g6i}.GV hkaσru!H\[7.pAtku"5V3e0R}d;Lk v?sMy J4*}@ukBu1BYҙzRM`5jqH PFա%n&փ#u Pnӽ#4!G,Dvt5d̨!jݿgt)p̣}f {֋ :2gl_5jUw~f@3qܬn@j .]-t9])5MqϧbArUK>@8 ((s aU*0+l,@Vİ>s:Ձ 4pu`B`RYW{l`'k:Y=4/셰Qo<@ۯ{`E7D?/-`e[=hKt{ц['5JyZhLﵻ<򕉚>)XU?m ywJп2_W<,M߫DA5yxj 3V̮ :_H|K8K пW6@'mwKAj[zϽAt3w+3"k nW p怒~4f>\QƵ*g>p@}zr"aiK[aU<_Pg[ljCg?t<T@U BuZ|6h#f<6v)5[{t'|^  `AoaԈ6] Ggɐ)]l5mDmEfV X5 7|jpe0dwFeR1n휼 qhbw|Q?ހ2ϼ`XBhVLt*̺lMkYo}l_{mZNrFZ1nul ],V nxMuMGL 2CwbK:`йƳ٭?zB "MԄHG5Za;Ӏmf/[P4]lY )Gj5+>!PZקr9*2\HDXEtVT@eXݍ- 5$ ,oiKsIAk:P=4kA#k tY7~;tKvF/STH%hS&g=h "z&4v y˶~4Z|uV"pF*hd%[jSǣ3C@Y5;X1t8hЈq;a>XQrcS pHeb'X &Gu,Gj(hهΔ[>6 mm0l(7fXOγF`E6ۊr-R2,ۚuu%xǣq'85 0A! /DYъM`u`3f.ЈXՃxE,iEcxzh9Rohɣy\{w ߏ_qmmןo[ .3vl&h\j4ȎK>`%3.UM:V;t;tБ(>fto@?Uv3؅cjoJ H"^ (8 Juh~>m 4Ω,6F$c.`dR }AmUz=F'"x{bBpBlĦ@YvV_J1wZN@* Y,`BЅւ{@A]A5J=AVɺSW $n5= <<\~bZ46A[i%s@&IjNCmzqIԭpX-cG*<' zQ*UÆ)>{ismVǹ8ހc~[Q؝OܻG†ݻl} : 3*V=c5@+C~5ULWȮPcp5_}wzc[ @u{8 KICJC?ncv>IWO?/OaUxq?ʏ&/yIfjXW rשҍ  rzΥv*_- p^ZS|ZT^t4S]4X]Vq6p `6 ȠX~|r6i : ya]z л灾,<{pXuI6q_Xv132 DKN>4-Z1}sflpSm-/[pljm'?:kil*peR7v= >n#5l',EW{ x,V롅U'aخ[Ie0zpCriEtؔ{'@7`Yr ) Wֺu@^ˮ,{N<.Nka| p-: a]Zi@S˩Fi<O-f[KZa8ף!\&* OJ!p ǕߏD@|TZbʩ fx*̍]~O6eDv9 HE'] R 2" u5yϭ nK(àeO}  |A|o* _$2zsE}бtV^R75{\Ǩ0fJ:j5HTSBoUxĶp=%e1{8|b;!\ (9wnae 4m$X6d@΄J:u4,K]!L PO9TfH%)`gI8 i6PWhDЀVM%}*`75XtU Xk'gOqێE&v/.P {o)tprC՜{7sHZpww f7GKlVpʁ;t.5A 4Z]@@ǀ:c@haڂRt$k34P4/hGSA3iXl_` #6/{o!6h]{~I/ Ry~9@yw|I9{8\W~azTEPY~EU`!J eUxpJ<dHdRC6ĵ޺nVqv&X#llY%Ak6ӶAZD4 vDy%J0_~:j؉;Wh'joKK4 >yp*F{XcoK3jg_X]k[0!a>+x8ʿ 9/9VIпVoCпd+ п*_7]jaz_2F,ek!9Z<X湍nڣk]A?Jd٨1u "ÊGy=p^ .4T_;j zZ9< :$yZR` oCp) %Ny`?[^XlwD)}"CZ֢a g~k] kGzj19akt2]@sh9o4} n,;ցM[ b@4#Y>]7۩O]t5<{'tl\jZp[l3D7&\n ESa _m#Nڨ(NQ9g]s/|5Av7g‰+/+OPմ+>v˄,r3S*d| \>=+WLE{ 4T[ oѳTp}j beci/m sU^%Ǯpkb~s~8g5 Ӏ%tZXWq3,$.=4. wVL:G Ap ЛhvϓiYL|0_A>>VT*Vu]Q AsHVi+JDB J:. \J|bPFQ (W?!q.}b )(Iâ}@&@6{M%M`8/mM_3vv"h&#+0R6=t-yr"m).z4`JU`o#ڀ`LNXgD{_rcoP*ס*?Wx rt+uһršX|eHB]aN'ƫ(Y;]M%A{ 5klMZ[Mhok-[]C?詂u`UK]β:`8;je5H,$o{|@||Tc ܒ2 fףZ{B!A:H ( ҫR{B c)|:uܙg}>Ê ăLA\o~c xy$.Wps]~;z9$_wEw7`Obv |'668ix'!,w,_;U'P,elBo!wRʧrܒX(͝c3rkM$nA8"~Kx@/{:jdN^:YXW7Kq&`9Ŵ'`=%l}zX?0؏s{=m^)+~Z?xoȮW !w)Rymsqp帼4W^^PI.eA.Scgrh.}mܛ"Wˮ|8) SS'߷puC|*>V羏m Omi>$7>ߍ5D%ٿGՓ?Y"jxۑ8B~Y<~F̈?Ƿ-XX/Ųz:"H "%؆"p{}qgcŎk=x'.-&WwppQ?+o<|87#pN~=|<#GcJ_\tiv9uR.ռEn[W&wW$?Z)r\!w#˝DnGHr\v8 >Df~-OC\lU7$͚sn}L`^7coxhm#68^6$e}U @KMx8k%·J;^S,o>=σ(ʿDsAJ<^}q=Q]-jBx A m: ~Q~cm@q\ 81h:S2V("WGeѮ\7=Y},bLw6n7N'C,[]muŻڸr|hMyR>O|YnX^G8$/[ǔoO`<w7VeXJEy_oW.4۝[Ͷ\{쯷;aVݺGǥOw6ZjQM9n #*5`RvYu5rFۼr'7= <FՕx8Fs~f6I9oj7G h1͝O?׼Bcl̏F"R4U?3/53wo27Kc1NTk+Z\ mX+&L5|,ki{|C䕱_=`[rs^b?}5oiSTö:jX:EoAX=-NnɐG7؄wG("y>18*zQ,bo4K[}?.PmWaC)T=b)(gBF ʿ/هR\TIC%ҭQ栳nf^f˙ VVu+e@n&vcbHrľ1G8"Y_atۗ i?[^>v_(6*y,9r޿ ٬BGOr*yZ.ϳMwlΫ)/̙!Sʻpm6[ wV=9>:d_}Mw,];uoPͳk7+ VVѰ+"ZgjEN+MY\m=Fuٸ|+QߖsDÂ޸.dm8-еyPZU(#P-o+ȷAW/B+-CHacʗ(wEc :#{V);cSUAùȯcQ~=z6D{VŲJyN^98L4e,K36k>xIJmv9'FÈCcNX$VyrL"϶qYl$흆q>NyW83&.93[ġ9:I}_5Aܣk˶)('7w;Mٺy.4s_g_zJlu!+<`Vyk-cKJ9(w!EYN's *-ٞ:ʚr[Ga]Ƣ hN+󫑨>OY !].jn Q') ḪY- *>V̮s1r@ H̝Ϯ՚hk叙K b+7z}q/Da:k=dQInnӼBe<*g?6?rsەk w>AUDB/?naVyNn{qu͌=xZ(3V;ylm6[Uh]c9V穆0ЀV β%@p؀ߧ* l :e`i~8l3k[-V'_=7c͸6%~bkOQqyzG7c TmЦm7a voEs4ѐg8c5c}4Gq"L'L"Fqka{}Ϭi.⪤d~ W59?C[ c8;~\| cx<+&Lj$>Glݫu۩oAYހd@SFUɘBaF|9]`d QWfy WB6mkjrŠ}~ZkCͬR2ܘy9w[Ҵ41Ё )7.5#=9|6oW7ȇ=2eǓa | wf9ܒr/ʇ9 7"c.GnnHnLnwzd h]ɧ ԌCs0ԝF'}o^FJSTV9EUAvFmDj?r߶6ur \rF_q[msS֏9Nͩ|cy | xiVV͔hyJό4oػx`O3M0,oW>ԚR,k,ykYrH웟ġMd#[NFOg<|[.`⎢O1=k`\{'[֪<~]2 +ǧ]q ]vI(O Sf;0-G,*A^UˁO#6?y[r#?`Wev5w-e_B+[䜕ms rG䊚sKmM?GκM%=K=}-˫'fypfFsh *҂ 5󟎾v,e6ηs-lTFk݌zYփF"`R}bST r׎ڐo¢~QI>į[#9juW[d_*&w}v73z|;ٽGo<=X22ڟs}Y{the9>~٦;`rx.f4U Z4 B0y,fXf:-@6->bcϹ1M K1̍#X3y}s\Ĩ-&3f ZK[fbU6lmլo ?W'v=FOi: wCyX+[]\SDgyZE^T&O_3ʛYwZ2-9('O7R,_̠||_C˖XC~*?ξek|O cӲY/6\}X8?ߐEeȮm% 5{ƭO #}#Ijݢ(TA;]E bV涍s׍v%:Nj%GA4sʋp2g|]'*Ū;i*V*q 1(ĺDUҟG_Eyg?VM[qV1X)->J1x'CwW_G/EU8cv=W j>q?X9пFE ̧ӣr O`fMUKgs_CпJ߾&σ=UWP_gʏyJ qGg Yzݲz'Ub<("efwZa\JO-oMe;ym\le8@mgR.Fy#y2+r:NnɕrgGxV]e+!kin(וqF^0cw褈lnVWYBJߥ*n|S˘_/ߪ~l$h2̮?g!*T>鍅mw^ge}ϻTꃬXzHLÍ5ҧsO}?$ex<ΊbZcrٗi=|g Pވ)yUM3b-j9>(/q܈˫\Cs=#ȞV+GdYOQ[bcsfb^<b`tގ+(060|k z0iedzeVCq)%/y Ie m| y9<|rɺoz ݒgkrr\:$nE;qs ֽ 쓓1;Ȓ|>. eM\b3=IJVv?̍xSpm9W+UT0ܢaתV-lX,dX|WJ~i$t]̮as-zLSCv[zj5U+`؎\;6Iy+崋om!0%*ֵy €X3&3dF!>/Vi:iJS'6ܽDž+}l-8Ǜfq|#ޅb櫡\|3  K˻bV䒸 K^xg99!_Ο)g|<)6M Vѝk7}G]pǠ'yxc,?n_QST6QFm[9*[eFn=9d$W%6U-Jgx6[~3x+Jq9 O,VӤ@{%![0rb-舭bV# yV^Zr#cb8-!N+ߊJ,]yӛ1ꪇ_n~6;*)yKuq }vXYc|0J'ɷs7`5Gn- y6&缈Q^Uzo/Q5oQ Um_Uc'BOi ~YQ;+l +hX% {W(T g7Fni*KS/,oIj9&b"o*n 6g10zZQ(Χb:qYY}z^}޹X85n)7HU (cJщ#&ɛⅸgbbvl5u,Y -*@kQI7' YWRù_V A_-|Zy=V5c [Mu gBV@dst ><ِ;@-%MʿOؽQ~k9Ǘ1<,{bnS|ocl)wpb \@5rr.si+akW:156 ZCX^|+(r9 7~l+;h[':Lw9/j6XXTU+OnY0XLZj=n&o"u]VFj4m9VZ)Ҫ%h_' *ѡN\*AQ_G Z܀"1m,`<|9w/' # s/zeD`b̾x({g~nMe?Mه<V}抂tJsnmW۟gV>u@N4oq=N4[UעU٫Nq1xb)Ay*V ' %Uxܮ$VpaN kV~L~aqb^~]zxaa c"R!u? oT'V=9Ysݫ+Sk+f5o^%?%ԖRy _D,&-w>c>hX |BV"kQ',bWAV6-)ln~% Ĺ:ug $6~(Nb EAE'#xhk>SZ%f\TL/݋x9VK],I%6?Z_?[4UEaM&UvG3[BbWuŷT̃U i!_.]VA@sXmZrF^ 98]qY7't}Vlw6yl:єe9:oq9./rynyQك׵9i|g|>d4uf=M#ز *QYz!?Ab%#ź!q['[܏~ > \Cw$_̃QS|x%-O#9gYӥrR~TGm/t?O8j_bEب\bcUlD(~Rޝw}! keؑEg.߷z\7Wxx2+%9MeSRh6JtE,-_gkX&/]@)?1!ۈCLDo*: 1R/zS.7ױ}.^.]h"hUPXRhSw'^$^!~|B<y!ylZbOojG06zZ 54iPX%&xL0gZ?˫3 H6yWUVYb{MOoj7zVT-п:N~ږUpc|ӈ9\#1X2:~SbK>Nb<uۉuqA$qcS&n)~\%,f^+n$?tOĜxͳ*D gYX%oϬr0oUùH4ǭ^GߡuVj_ laJ0ŏ2o~\ѽ]!7m쑷_P3Yʞ?rCg\@9'e:y=\Cz W#W ?%1ٕ\%ɍɽs\'xD_JzܱJXE/cQ ELj-z'ƚQ'+uQ5:G-*Hcђ4ޯ$s1uinhS)uo洸TφMh# j@akSLg/ɗ*[ӱyVޔhKkr~@oKx3:z'6pk iZxXT߭ͽ?›[~~v9A^{_ypH\1Tn_ "&6E%x2֍'F:U8wb[þ%Wͥr./| rz9JeBqQ']rq~{uVUEGUc}5C 4oZKϢ|N-w$ɏxLe/ru[d<37%wvWcpO=h^BhdI] 9?$7ogI -[X7Q$?!\ji]'fSI ^3țқTlcq-V&8Xre3#62<^,ȪR\ϛkKrRv!.sʭ;E'S.t:t 7-A7obML*ݪnm毦k@ p_na7F+nXUg׊9 r)r5XDG{S? sowh c}?NzD+,X #їx0Vqf}e~(nO7 +TNhʛ߇WMBeY ,nKgOy>^,g{.#[ֶG@\$_\GސOgy-1<w/w!Z@khǒit=E?KխjQlisKc*X$ ؔ%q2Rtk)v,6ɏ@Ѧ&:P-,VX!|蕣O{e[s{qbJ>XPb"SKg*9&^1#5Xx*n "7GlpːbS[lWccBl@fjߨ_'vQp8~R|͸`YFbZ߳[bJ5oX:%5٢S=۝?ˆ83ןX-֊P,Oq )hX 6f+L/aĹō8ULIq`q ΈKe1JË㝨.JTʝf\@c~-*Pt6*k>V̈*E:ݝ`Tmп_Uh]Ðֽj_5c Xuj.k(Q?|pʕ[}r掸Q9x)w'fS~ܐfx=rr5~ι/ĝuW~ej dSe+r#0Azyn{`.cYD-FgI~,g5b0%?=?ÐJjk&`Ӊ]:(~7Ʒ_M䷩I-ܯ 4` IÆtv#+W8fTLǩ5mzK<2m 6?ϑX!O<{q~^mL<mIcz=>ON?7W-?9)PrB49\2 6!wt =^pA<{T/a?gG _Jb`z![n`n]S_ +d3LU@&ji >1;Fjo}!w :W Gܟ8:i|b{Пtz#L"_̽N|*&ɫTʁ y7Q#h>?:{meo>.EєbhK9::}َذ|8Æq(Ř\bj.%z[=f2vx>D>?e MwtJk&.ր9\[,*VH?b<6VÚv0Ѣv'#vr8J~\O[D8&(UR|7;ǖkD;(V-K.+ږv?d]{?PqQU)G? 'SlHy!X<C!>]cN>5Fk666(XRz`1:k[l~zUPM W)?~^`|sm-|o]+}DJBvnQ`%lYAbo[n8II|GXn%F7%?fjġ~?) *f.~Qt+N,mby\X@N~YǬ.]CȾKE`]\GdaܔO;@s׽nzbMVQy+:k#V $~jT&19Vj{58J2QoT+g5eiu2T:P+&1'Զa'ওǵؘΨ3lͨ7N0EpT5|NP'{ E|U̩[lq_A| =Oyc7OR8*>#c .V~HINi*0(iISG[s垛~ܛ&K;zyv̻Go\Vz y#צOg s-bc|]:|5sZz\`VIlzcWno5Wk&չcoR&;<8rRCKpas9 ']r\\+vtRG͉ pes cuM#pmq9 h~?#{GY37.SF[Z a Oۜ|s䳘Cb<_sӖ '/fB[rVU*M hڸ:(KB>Pܤ/yix "ŗ%[^ZU{w8&tL^Z ql>#}y,1&>|:('Bm m󝏾g}G1iqrكGkĩq(l\^L\bkr3ֱ636z%?3֋<-zY)tQhgZ,.uUPuY++:ayr6@uf1ڛq6\lE⇱^Cwq$ Jg0er%s6n_uj|x/+ߠDA*@M)M>bG9&x MQ-yPk@/3-]3ky#yyn0>20|nhbTvSs%IDATJ_%5<`{r&a0 `!4 M@-*E%QCX*߲ϕNWtז8)jc9*n&6g+10)zcc% uDca_MnCoK-,MtZbuU,^%ɿdz{b8kk5qƋwzu't?/@yњygzgn3s0݃X ߬ B_-`uv C5cm֩WwY%f]U$ͨF;~Δܩs;Vʄ뛛oޚ_mʞyRy ^OdvfT.N'׿mdY\_Oz\=۸\ .R*z ֫{_Wāyva2qr>se~B~Q.2x_~ܳ[$3+5WsN/o6Ʃ>FuOX%18gՁXL^`iqB؏ə&b&`9^z2L3]F'481lsuB`zUۧ[jn^;MM 03 yH\'\|j"w7zr$ZXZOqFDX?9(%GR~\>gϨ>ZM>[q[_ՆI72gw̼r!Amvhw=^Ѵ?}p *vH<@-Osw}/^qܚ޿e3eq.;SQIs^:69<<3;N8Wι] m]ǐpV>w`ŧuyƘVKx _H !ۿپ7_]GT yf *VJq` ɱ> 2h& !5I؏B[2t xr\ /1*;WE865@ly1=~?7z).hdx=/MJ63{sTBQ'ěָ:ОЀ~W6 'j`ȹ Tۮb,RgK77 [GhZ mzB.ŘX6/7s|0_ٸ1r^r'rx/;7n9,<||Ѣ))~Q^Ma>w|/v!VmSqDs+gR~=/>(֍s7o6/s"D&-c-li`eaڋ `E>1ďGXrbEX$z$ѡ4: ֲ%b +??XyfF_%?,_\c)me\KcEY=ϮyY6m{Prc/9ГhQn[[}V0r,9|Rկa]{<0Vbŏi#(= 7Ǎ_ h{`={z/{ϚКP-\uqR1x8D,S|]# cr4^$c"sLdxl~8WQ}w͎FUL/`+Y5h k?/:Օ>Nucm[}$Ӳb4{V瞇A>sÈ|179MySN-%oa&ϲ.ޘq ٛ\T2Uȕo\lT~MthlC^ڞnSqz>Mc#nؚ!2*p9u@? bP]N|҃?~{0KO4R:#S1ԯb eFVt0GV[cVA 3(0gvcNcD]a<ڄ:A0DL02c][*ƢWۻ 1P<8?Ctj =< ʭ<˒/E7'Sq#URRgS[ Tב.x}v5+aHiI[{i<]~4S*x_7M'S${QnV !>}_S єrur| "O~y'9&=s\\-rjI5N9`LYwAz6l^;^̮+nS- rO׿`Z4װ{QL[ƵTSgsx|4L\+q_؆</c'^`}=lClݱr=bup.~2\7W o10ʟ Ļq8|x272jc̆Ή{<~Cg0s3gJZtjrJG?ecE^6Qq*M\~v6gSl'"v.c~`W1!D>D>g g .}N5=&5颲ݰ#laCvKYq Jܝǃjb]?ĦOя}X-)@En%M4+6.P.r:~\uC_q7rʒ3ɱ ߦIJӷkXF>]d$>A[CIimC灱%""0C5#iOӢ3ƛlbo9-ոu7oпŢ@t*.ӰHlo&zGB<ƥĊh!F؊X b;DbZ^ Co95|luO돈1 [Z }5,x%9 wb=V/8w;۵c@xWT.R8':QO*3V_CfՔИkHͳv-пJQEFOWZ(thВրt$Zn=gݪXk'9^vͷeQ2W[urb/gۜ3,`GV]e+Xy=\3r=&WRAAkLTyVfbKXķӫWb+Yy_S1:x'^!z[/'εr omWRb윌h+8fMT3C*0-Ǣ+M1c0ǚd49 9M0 3_VcL,kjDZ9א/*?0J:!ЭV)߯['fUJ|G'~a'N5sɼ oƓxy3k_bq&س ߥ ?;yTܗ?ƃqw5P7qrS{%y!7ɧց<;,Q;Aܕ#)1(`9㥜tO:q'=Iv̎7h~Q&%3"V$,}7NL\ 7\'vq缇.a8xb1=Dgr4苎N^+,EaayJlo~'RQ&Zs"6-ʡ5HFc]~ȁMfr<,ץ|6Wn9#V:i+_g-rtِ*n9E>OW/ni|?651fRnXnocC,ax:}lדƪzv'}+JnmOr`~!g襣֤GVo4c(oc5q mǦZ'S0"|v6חouȣ|#Qћ|f;D3qckk~үV*i 48BY͵_-/c5r(3S]MFfyCMI9_(0Dsf`o #cnXG,Q9OT1pba /j0of>1N|00ԜXu3m b -M7c\8y.Xb\>E\czs(Nwn>LnKt'P,J ٓbIi3\b2U-1ئN ܌p8ŋXz?OOV' .$ Ǝ؝\\XUsIr{rJ jU؃ܳJ|){W^&aG-G%s3r#[X%*Zř(;<<=[Q9Lȉuk(ϙO_-m9kK P[`!Q*5 m]; 0i>zIyr\C9;I4K:qp,Nlb&qt?&q*{kM.[&eI렏vqu\B\_<?_?^衫n}CS]Ile[NKZ"cU+҆Vľv~p`^v"ZGҢ^I.Sy9?mbS˭7c\:0WOm{NZ◹GxWRM\u"IqjAӴQ3%&F1;&'azbWbU6666 C7#UK=`7hۭ6Z+rBήܹu;Q훤U o~(jXeڭbA_/=j"0 VvՈPEqq%Sj)jU?2/3ιߧSGZJ<c7-h1&qqfюĽT8&q{l)gbM%@~Ig~z Ř5א,6-kCMr#XJZK%ԯܱEUo4.J`j~⑼) sDqG~SqCEW ngœ ,2#%Ƭ||]vjz\ oWjTr͉"ްfL!w[I"GC{[.)=[WxGUe{8F* 7dTtpB2<ޘx1 ǣqn[TJT_h*N 6n?GAB~`]s0͑>!~c eĪx|Kd.hUxM3OM#YZ/ ĵ9 ύu \+?%?7Q?k[Con:=lyhڸ˻R yk18!+)E< yK6C1K'bXbI.ې'NybsMٟfM;V\4'qyh>?LZW'#'i4ŋX!:|';@(W+1+y7 lyyz^`:3j@mUzsD@~")߼}ozl|3[(*n[meH ^XRcXɚ rX6iK:VۉA ecU|J[\B q60[g_[bg⎸}KM\1&"/OT\[C|_b\ll'Uo@Jl'cs0;**_Uo7? k,Hcп5 PءK;ٵuYI~S>(n%̙;hȏsC9$WY98gײ ?d{݈[;&WOh6Q=ٲTG؃Z+bWdGq'Fz?1"đ0K6R9;]:UXuEsMJ̮+nu.3plQUo~'*NJUomrT^lDbqD 0knD~ aq[>.^6OIܯ7q$UpgL=gU<[%@S!7V|itAG԰}iȑ$F׶ecL3kB['`VbtlgY꼀ۛĶ?-M+|Z hc4ͦZbVyH4R0 %@CH/R?jVY):D^3VeYִoOG"q\+RAbyQ<-yjz$ǝQ/g)&[J/ÛRlWns|#F8&qs^?!SDb,Cyn^N[\>Oy],),;̘ m9|9U_zQYʈ5/e+⏱{N\|/ٜ})\2VZN[6;(l{9sfE(*){}s H^;ې82O]-hirNl]!~Pls(y6$4]7:#/u1x<7^,'ųnO഍zʊFTU/|h}Fs?J̌o70ϳ[Wm_/k@*&AtQMCyݳcVVYͭ!E|_70*Oӈ) )Xx61Г:.ogN9gG_s9&A<;E x|$vZk!:?;̮lZ3;izw*H*" (X@EJGJ cIy|Ǒܳڳמ=k}_u4zO[jKH> oEml6$qb/LŘ*uss < CxJ[g=t&zfX b׸Ma.zcV'ȟ0N#vsoF<8ށ {]bbsָXCU].ȇ+}`6g&yI<؅N&r0okGȍ5v mX`7v*Mv"6󤃈 ,/ TOQzT&x+3@?ٿB4I)3V~s92~'4wNq[nv7`׿QGraΆ\59$òvyf޴602y;EƫZe YR=`n @o*)@IJ\TL}?6 ܱLf#M`t:#gE.En[͈_^ &B񻨏R'Pl?e4ಋK6\7hե϶9@9W֞lV; , Wk5nmz{(56z͸$r'z!ٛڵ8v*jo0E'QW{e_7;Ѩ{#xo|K7\2n 45ѧq"Wc؈GĖk%k&ۊْ*ʵv;J|8%$GTi-e ZZ`kZƺ>1;HtqV_ m;wsFOr_dzykNRϷ⨻7g-.U㑣 y(A7Q{cȷX-wvp~ q^/tv옧'i36|w5*7EW̲4bne5Oh^` _ cy|O:_'뷿o7!Q{5[GGlc\lFRt12O=]b\\GDR􍎱+E806%N#v@1GIwE{_ފxh$ [G:)0M17擯q3!)!8L'Ojv0^σ~ޗ() ǂ_PmD)%U5Menqh4?j]TUgCe>ԩz=*c)P^ߙ㋷ot 'XU}E1t[ CW2i|.-6wSK TsE,$JuAqR &78K/%bK{v.Nk^,T,Q a i^PݿK`nn<:1 Segt7u7ì#u6F{|L>oZcNxp-ǽGCcmcN@㵪{5g{*_ >sGvR'$IL|g<pO ʗk}ϛMjw)6|n*Nqz54hڶEot L>falB=OےS IXjcSl`ն'{7>E{b)j xև)7<B.#k&/ uo>?dyR.%d` (ے;k7`߫O=|-]^^x8#XAbVNlMMMMvwcy02_fm\̫ ӕi_OŻ^&.A,34=7Cm5-k7V~N6~fl~%˶moM^Kryjz;n9)%ɂ, 8F]{8i_1(Gc^WMC7eR"W_}I K _g;>+mZb BݤcC?&ɗkƖĭ.6!upġbX)N} -Xh%AqsJ&k}F~n6q]}6j@1Lͧ{ypbz}x.GEx1 YRܮ5܇x&/ߣ7O>v^˧yf־;P{1n}LM1@|3]6O㏧$~tDr7kQc3ߏY%M&c7b;?#_ͭcuGlp~+WGZvorԟ{Y\ }/*O&琓W+j2i%O ;vOo&Uޙb[*vu% _6DC Z! XQpLF/@HK-"󿊕Zۘ߶v#&[7A|W7<7$%.Wbub$CՈ(R!) qK*zӓR_ƹq@9Ѷ8yL(&GP|@obqa ŻQSⱥ%u諸X!dP2*iIa\A.Pv*&U+1+7(M|6*ٯw(u׫k|0/qy KwW(fQ7K49İ|;Sދ'yY j|Cȩƒc6Ud>_:즍X lO%{>2SIζbA7fqo1rƛ=̫cĔ,yYK2KOYװgdu{\571 0Vp[TɦVWX7Ts Q?hQj` sdz,81=c80;b_lM9=)N.~8/kzC׫_oAƿq%-o+a57MjGC+P4~9xŘb>MB,6ʣpks;7~ OS:M^Q]V^C|&'ڱ:־kwSQ{4M6/&}6#<vo۱Z\E"4~@X%'Vc5bg9Fl\9 sM=խ;b8S l{x2[10~IZvT놪hhJsNX@`sk}M"_7S@{9 FĶQqH ˱uءx'?2PFGOkqM7'tmvC}1Sȟ)qq)y`ɛ̯EO̲$?V#ڕ@~Q~/hbTe_(GewՈcTW۫_dS=G Ue[wBo]+w6S@434mcc8DWBcb뗅T!o) (ʔ||%ӶeOF/)6h_L*9i}wdz7EA)Boobm~PeW,*ނ , *>hr7fWnnע:6(UбVT.й 6Ke*>_ٽ|$-rBy'JJ@@|JQ;QR_%o|Livy@]n#Z?oL9>sfq[1sv[s)yVx; FWW/Ϳ0Ii3,/xl/5}oz|Ļ N^$~y/]ubIFKO}Q+NYV54}L9bI_Xhƙk"9LɕM2 S3>ɡVJ&[bͬ|NKr:!l!:yMo̓Îǜ8'y/Ww7@>kxɇHV)&bYʴZBi|H.%ܗɦuO$u_c/?_3̯,Y,r@NL7Q;ÌFXMnA+ U&6Hv(S^-X3lצlSr63Mv#BjU3LٹV@_ꤥT. %`M(MPҬiJiZOwVMpG@Pޫ*vfߪzռR%YX:&Qװw̛Ƴ4^oį;GDت؇f\QC}BJrJvq$.tOhJ߹kʥo9j\|lpݺPwd)=W{ڏxѬhMw2N^G~Da3r+rsC=A7>PYIJ̪=ofj34^7+1G1=eb'68,z:NrmqSCXTy&hcjclc19Ulc˸Ƌč@I>'Q9`SzKsuJjv+tA+W7ld-IH wL ˉ1`b8\63&i)uWly{4W^]!Gqc|aۡ=v2l^Azewrѩ;]1}P^ŎsMY[`72^J8T|Dgau^Q_V_.1\s;DYJv%Fg UvկgDW㰟+/M3,ޯk.UeCJ5xxob}VYG3LZnsQ~t#V"C_L^CSqt:hkב+eOs%̱?O.-aO^K~4k#uNCD)jcog yQy{|C"5M۞"ǰzl/e9λk)A7DA^ 7_>iXYŸxPijq%$' SʟlsªS*roZꗧͪ8꫹Vxή~ ]sCUfdSnu@\A/_:Wq5_co6P)M %W$%3l1J؈|]-x\ y r. N#|_pq> { >g恹2vJO_-tytܘW/_6ifUҺEU `F 7uUhs#6ϪǕҹ&&& rnYat\siu-?-uMUw*=~g(EG6^}xrQ`Mx2'.Yb QOlZgs㋖QlDqDqZ҃ wމAy1 O߹k{0k})[A ~z(ռ)w,6'O[/<)c8m%$y;ox C]ci~h@vxɳjHLcq_ؔuEFmtu9-zğr_}ɵcZhF؋06.Ħq8^AN+t`' Mq5qc>Z'XLt>.)JI /i؝"N?b]t]NMYw/m>fZ!N;Ɂ)uIi~Z־q:G6mdjax|ݔ?|ܿ*S ZjQKٮF[nVA֌ K; CuqH\;{kGLm(ŖD*c%XDTqx)nKF^O)ިy'x8Al{6"/qXTmw.}\X2oL+ӿrwqe WM*+ӿJJdy䭠k.wǗLES;݄ ly-BxbK(FO5@B{U|AkivZ[/RVQa"TחE/\N\Xto/ݽt˺.yelq K]eYk6.a,;qβӨݛg^qVjk6O92ŲN^YN67'. 6Cq5c[l QwDu)6gꮮ۲H/ͣҸ8/ԍaV Wv}4;#߾GPZ;Ͷϧ} 6Bڼ;-Φ'QqÈX}W."-+B%lO+$LR:S|T~;OȧHSt%'z|0!d<܏%?ndHg@߅W˲kw<:av"?W%C>e趬ui%~Z¸J@س+`E%k% ޢbȊ%oIXQ-6M^jRCm|!#^;x6q3u; OS2`Λz6/mKOoDqF n|}%6#ZVѝڣĎUSk[q_x)@lm[`= y9G7y# NSub[kUZvZEeVJVX۠4k7ަ?7wa%[(45Vibg5Lb-r;PwJGnff\slΰddq~?,CW*)KqJbv-g@f(0*>mK>=^{1׻x9_kbg;O&ƞf` R PRk+&@b%#,[1Q n]__-LOL`5u7Q=]:e**z5b !NMC\8T{tQ'D/;ǣ1zZ?vQ\Cg-6ˇF7/4"yB^nvDi'bXLb|,V3lfN'ɇ̷X ,C Ilƺ"Wm3-\s-0X -q-LKܪ??œ,hJT*P} jJ@ jQ :r? R_/|fS/,X0n>1{|h͈YEqvllK3egmۂ߱]~js%=ryVn+HgNvő)cNbh];xx_ 5ټf{39륙WxODt'DƷ?EX'v֟^;# Qjr9,x\b!Nk88'.Ȼ6ߍ5uQJڡZ* h6X[lhML5"2ExqcmE>O NqHn-ю|_Q8 4: MʍʤkKx&aӆ#_N?6k5ӿՔE|t)tVn%5S;zq;)ψuUCc5biԍx!ī}o>4O !]ٵ7v|u먍mZCvn"GNvXm@>@<멿5=G>WƸ#aY& $DZb&ͬ2.kf5^ERq&:pݱb/bdZ~}-cs(lk1iqZz'dƼV4P7EiWM&T9(D^R*@t_hbόD@-bb\HXT5Wm茉޵ͧyNtwofX])s 2?}xb 832stKn9?gW,H1Aܒk0u#cbB~̌3wVd l7Trqh,Tf ҽY4*^^bWji.vJ `jTUGWLu~=ugN}":Őؚ5^=N~PL*ΏÈ[Mŕ4?fsks= O|-/AڧP6[!}JT,I,oE\?1/^}yK>Cмh{87$MP.,k_h*qcj7. a1 f7ܸk]4>}%?4#G`|_YJrT̗NY-K@R+bVx/U^Z׫Ѵ-% *-y lymia,Z'Vۚ6!c|A&PoZu,.۔s"W|ABq%wT)}wqϏ~\<W͈"Nj8 v0)>-v9wwߊQvǛ\-?x!~ӛ``\\~t9X\u?UZJj,xe5ǦM͗]Yv0*cVTҁU[eR=8黋&*Ϥ[`e=Esu9Cki>u7[`L?6ӒwE|{r7_Ϣg/Ǿy;=U51&[LjXvvvGh&[1v:f@Etf@Ŵ_*ԝ[wtӾ_ytǝ:G%_C셷=GO hO^Q8Z?UNex}oefaC4<7Aօ|jgOy:'&%=`1gagǼy9n7 u2wy_/^ ?KF\BwqCsq||;^S׈}G=&Vb#k|kqc\I\Sqd@IfҠVI6fZYyyC^d1Mb#$-8׾Q)䞖ֹe̡ܣxܤ\ؚzCظ#~zʘ]xjtBo7d#779+_GIj=c  jǑybگT7|3˫,LtXNjAt!]o@*UI-9g:\+XAo4QD񉊲_TL ʂ.֕ӲjcT[ahz䩛JHSߪX_G]eIu vbw`/:<{4bGaj%~kDg$V8)V.hELDq"ŋo1'Q]yw7=zCQ+N!n+/j".V dC:'/c|q">kbGa152}{Ŏs4?T[ 0+ ?3[wͫ_k(oVVudWzt62]KAt͒)#㹟.ݭ>yw{jSlu+ 1CtN XE>H+= RzOboLUjmm1 vDzb"r\Sob_%obcr |=XF 92ȫ>Dvk6Eԍ,.`|S%n)1L0L {/jq\VLńb2ѼtOcc|N Ē8xpčKL#b4MMmħqX!mD&/,JfƠSϱ&1KlV^3Gġч|"u[GW|KN'FсDGsԷ#,ˉy{,#"57'GEA^{qӳͰò9qZsR}gwg}SL.scY15^^v~}veݟӒ>v9ǹ G?˷/3`q[el44'yR҃`Q98;GEp%6,׏|d+2rg59ybc׼S\>qyCXELf~O|$ҍ18)0S/|HoQԒRn0,b9c`*JNP PsUK*ڥ|eԔt\g5_g*?.wKhrX1@?\`diSWJra*ƫsy\drӊ9?qNu do]fWcr@>A|C~7[\yK}%|Gûs~^`V_)Jٖrv˪rI3ZVy #nq7VMH6uWjZ1 gӹO(OAT{j]ީbӅgvn=ƶq6Z)qX15V0qp %Ů15Fq^=uE_bEߍlfNP6EQJ>+Fqt>'R[)+7bq'kǍx3WnOz|Ds ռڱ9:#^ɧjwΏh<+>+197v,j/]lP{': *c(#؞:רoDs4N̕!{Z-6qzSV?xC:L]\! X WuºV27o@'EYy;v}4`Nl'Op@qǹ/iK3e+){6{4{} ^O.XFݝjN>d,%+5iZy# F˵ jߣpew|J3$6'"6ϳ-%O8v#]N|"ҷr-Ѫ.fjly!__KʯH .VTEuxYM2Y4uzE4h.=t/U ƱMq#Nwhl%pCJ4[c*1(ŚD? Vcql͈\!7E1bFOq,3^?fOXDy^lW|cF2xxQ{6ތcUNoy7t]/JO+ӿzcJ/,5_2Ey|_颿D 5.j_[]65i˂UeצrnuQ.YJe 0tu =o){m5:7X](޳(דcV; CsQtc<@K,[Ğnb#~Y@nW\dC|/F[x}mDv˙9c41JAOz|&v4 NݖuhUŞ7d(8 M3 L3P7`f9ڤh/g9hqQ_@֑X9& +eda"dE.G+hǛh\MpIuiE=1 FLQRl[OFލ[IKqXӧ%/MIlTג|hiۢ܉o%#mqc/ǦhbsM<33)8?'tt$vs؜#2s1Yoﲵ䊉Ϩx{xm 1ڏi93=tp3ʞCi 7[V́uyWfrC|CE9y#QfJ_5IW(erҬp,e:'ya]^I)C]pXAn;W1 xÂŻ|z!3G0[Gx^Nj9 J`]*``cωD6eZ+4T@E!,HK%ZsY@}I4TkcŸk\f~5L3s 4{ PSX`EP<9,ޏȻ|9q2oe(A?׃ڴqr1.¢lCp}cpjn^%%!e?V94ϋrȉdC@JzWsUL`-9bnI]}_+A xy7KA2-hՒC*y7U?^e >6kl((EU(6">Ł;P̎ђ8X86zƙ}X P2:%uOqԯuծ|r+f>#o̳g?My Q<zGx(o'ȟk^s{Y z=Io۱uM\^,x?/4h7qxǜv#gmςKK ))ƎĴMcXh$v=va14Q<G3(K vwkc%qqp_-oB*oIB iJhN:D9`OiiyðÍFXiIlX"M8P\%zuMӒ+ hd?]y7p)g~[ݏx}UwdGIṉA0 w ~K,moj4ځ&#>64^c,M0#kr n|+& XP%9]D3KЬ]jȦJ*sy_,kʰCҤ/m *+/]GLum ݬ+z'VK?e_&ϷcWd<xȵq#1-wA11ZR=j4/֧bS؀ 1bqoP /?/.X.{ƺ1Wu5$WL0Tc>'nL _3nsSn>Ѹ7(&#cc݈cdvF//x.GxJGOؕ`xxm\<B\C| G8ϩEeV4:+&rz63+N:]l+왷?;&7!׵%J=GhxD̴ױwȷj1>bC~ ލx4NG80?g71>zǬGM8wtoKrsbFT]>txKkzѩwΧԁ϶\SoS֠ʿr V#)k36UNFЬQl1*qJE̟Ĝ+o#G/ &Xe:8^SM=ɋ{G3<922|<wC%I{wO8cFęxHx=-c)>Q㰁>CG| ЪhVI-Ԁ@$g3-(hJF\hJhr nS:?c |}??3<UL/f]18&cx~M|C5rfrf|7#WQy+...8 㗿VU_·ǑڱN91#jSodmlu7əyWvaK>yh]P{l4끎=h^u[U:r@}%V.(}sIdSz(VCr(SJV #vbJ${}P;akylٞme'FS|j0 ^p?qpX=1b"0i';ux o$;緩O='c_bb{+"Ο#x)£A,zܖN-Lv oflMc/Q<ˏkX3&b!+hI2|7V[V\y9[^0.M?=MI!7$~cX)#vq`YPE;5mjelb-bH\ʻ68>G" ;4,Z[ 0HNla0Q矈M8iX=fBq c6bqѯؗ)f/0hOݓIudwr *Ɛkg.{ۊ5>ZWmsMo:۔ߞgS5kHSHLlYEkQMl?̟ո9 XRD--XQ);MZޯpoǕN tPiUR qQ۪oz*+HldP`s}[ b_of&'.#ǭ18E=GŪħRBqui&ce;5/~AѢt/:QYPt'1+-9vSrSCN݋sbCݢ}LQqE/^⸣=74:U[@C̀rӿr뵠ہIW_SWMVtjעJh2k]iWce)]*宕qʕSo^ka3Rs4uXhw)631;2b9hгppn+#lbm|[ +b-ŽjqĹ1 Ggkk.֏dbS- 1iq8(^fmSzog1Qh%1!'[q&YLQ TyJmlbh(fO^ӉqU܄֘:$lD1DMכҘFHlOو-RSPTbxqU%w+&P_W,#ȒRk$;#N{u=#Oݸ9e9?o%Vʡ*#NUpƒk_<8|=ȫ0,OjQJ~V*h.~2Oִ˕\Hvӷ~5Ҽ :ԝIkv*&"Z 2F`A,L:ݬLf5^ EN9qB,+ 9;b<ڽ`>)J٣%֤Ymέul[Of?f_!!w}r,#7˳=G.ZA=^_^V6B;jyrN&Gܢ#oL|lYk f{"h_ey#]z| -r1q m$0|lO0lgIhehn~ ] 4ZRu—jr}V_+wˁxؗ ~󕯿z=~WWYY8Lr) .2bd0̫b`X^:<[zxv#cbĚ?AgpA[t|v,n˙mpO\6ke 8{v"&3[ŏx%};\.kgz)6[B-(uAjl[UǿYlXrVOJBl烝zVoyf;tq=c46K('ňXfuv.qYP n!^C#~8Gt[mqׯ7uyg˵m8Z6 ȿd'[j/CB>G|:)1kےmx+y{;/`G+M\9nN{Hk7Sbhbi ?,ˇMw|(^م5b_{EGGXΈ50$rZDqmqomo * ^񧸔2 |4C$-^ho1ZiVM 7Y擷^fUyCaM9zkqBFk|kR<[<GPE=ZNr\=8XYM'W]8qΏ>znu{_ y|lQS2oLFqP\\>Yqr4#1'!Ŝ(a+sIq 4NJ qB4 q7Vˉ}7bxr={~Lq7H=.u >0]7#>pb+&1xX9>I*71ٻ^8$s[^Ģ|#h,v/!뼚O\S|C?>99XwіOf1yh\%Ns_vKiwB^K5 ț0ڞsi?4Ĝh-1 /9Q_\^@nd79ȽPC>ű~ZimE["g6fgǺKb䍱y8);]6ۑb7+Cepo)iV;<0f=}4XE=#0L熰,c#NG<ϝ[;}p2z Z) x|?}qAL5s;'>v(OO> ,XB=ȋbK򱪣_ve*^4'g!,T-SO.$KpM;@sPzVMmRGgtJꁾ5 lduqEeSV;M,џCc&y"F-gY)v%zƱ=Bu(*)Nh3aO[v e_QKm[Rw@y0g"Kso*ڎ8h_{쇗bw>tO QѳCR(ˌ!8|biqEg 9P|3ZvP }q1A4>6WD8 iQ4Ct 9TC~LA7Ѝbh;hF7bhSl:遝kA\^x"zǷ'c8Ŕ8`?EX3~ǬOǦ#x?y|.6 >fyR? 1;o`5?aX7~+ņg9Ck!6N'lE^LԊ ?gryOL-qvA?k~ o1 6ĚY17w,Y-jdףu \-b-_Yfmo\3.($Hpwwwwƛi݂b$!!Bۚcf[{׮VY:kZkXs81V.'{Z7Q(NX4kS7GF}5{:^ +ϭnw ]~m;tú+K:t9^6mkL}욗qhs_s ;iVx=Z\Jej*=(PLnv"F5X3׉XiĤ8, zǑ-_k? 7R8%ef=pbgӪANw>mnVK^[Ӽ:%'yމ yg]rQ}ܬX^{i?֦+Fe,޵*Br b3_E]SqkX;ƵYęϹm˰& &kY୵#uҙaeݰU:Z[ilkU#kEXRb_brl{㈘M%эESEءE堚 㨼J [R9MTsρGa歴h˩]i[,x5TD- ݋q[̈ȅ~ (87بϔ K *cX7XR+0Sj0űjyw_yQ/ֹozd 4JŠrmG.i׷9qR,kEe7 TMMsKN1y%H9P_⃬XxƧViFK%-i>q*~%)GT=!RΘNC\SC,l&wf=ku(*X?i#'Ĉk G$XxuD2/Go1#EXdjDX;4ɸEtoƚ>1*g1,fFCt{~2X%zB,&h)Ūm;&ur q 0M0GkI]mwMԉp`̈han%NEވ:3G86bSe'x!z)+W("ۦW`E)8ؓD3hj^5&#,a+Rt2h5]+e˜FNv6_aA!Pq Eh\96ߡuJt _!TW@Xď!ޠÕ91{D֘c.ǽr@9|OXvVő15V%1h#mR/r"ś"gꕭ~zc]ƱYq\>]#F+'꣋9ՏfhXU0<)1fqmѸ b|b OP#bXb틝͍ɭmTIes6Ҷx ;iWCg_6 ;=pWϧC`& 3=1[MЍnpP13ő<6.3y j)~: P?/"o-8C؛!׈Uw4AZԨ5$sb̲",V͵+j[YGloC{v/1- ՋIX- b u#NֱްVI_ bF .&ŜhObm;ņPDZ7*oQJTԺ^P)T9xT\_M\\Rٝ_L+#V|S#+ߢM ϊaQWR1:GCyknj'XN hvQ/_Tc,vm/)+_пJm__5o' w߁({bޡ/h]cZUWߝ'&-r f[S\m(<܅xW"hi#bqy,1&rJۈ4Sž5ӌ1Xq{ f昩~ى7^?q5G 9b{ {btg0FCc9<7E~18hN?!9Tw#)S}cxă#0(ָ.$>KfD4VP3="CƑ^AsX)B_r%[~d}Κ[Ag[[ |b}ݬE!v'7&aǑ3s؜lԷ=Q?O!"[ٌ}nD\t*s|}sE~lܾ?}"lܺrأٚ]ھm^P*cS9u%瓫P]Hv +tW#ų!͔ymlɻ ̟R4*v6"!qysސ'Yd$y_c#lǼ"4͗x7(o[^!m+pq{;uYT' ;In}>3G sP>!6*JXવraz,6Qߝk55s|,J *㭝%dX,ř;yA>_͊.&zbbtՋ-*(Njq3ŻձQ$/B|fg(/1%5|1zH͛V&W?~@L c87yiauGgSP6zʼnQfꮋ:aw͍G":aAQV"1B1 ת+xxoį>xGӼ;Ԁ8K8'Ɓڠ&bfbEci@Wc5訣XE5bMkc\Jb`mbWt-!m%"fDMat Flbb\3N^ !3XJl?)N69VTd+nhB1bUlN.' z[bK*%WQCp؁bbXxX\yPI's­WAs8(GJĥšF G:~7A87iHC[pK?2GO{ywM 5='|I|M~ǮN xoWԋLv0=|i!Z*kjFkI3A',Tѓ8_k{C7MK47]S46Kc40t oE4/؜ Z9K5N].Te@gc<ߊ~W4$E[KX}Ϛտt4Md.Oɿ2%D_xW*ŠQ暉1|۷ 𭱚iA1tV7mdeGm\npP|XָܲڢD}!W*qnt5g6zsuz|Ɓsy6϶hv;ZN/|z0,bT5*STVxߕjZztmSjNjϻ4K!Tʏ6mᓽgĸsn *ODE=̏NSy0rw\f2mяⳢAQL_[ڍe[ZuD{[^зH?^oίPWs!/'bshRKޒ$⋼-&_x3~E>/<^hiT͟2)ʱ`Nu ﭢ5\q)/=OS29fƦĩ&f6~#^7^pp6x-bKknM%jiiġ4UV:im漋NZaJ`䓱ygH>g8X֠K}ޠ?V5SpM1ad?Net> gk*niα)?u/qУgϿiNٕ Tcr4b{_G_x X=^qx,7_hOɿajIϛ8*%o10K6 ̰beG::d=n,ln=\nc%KYĦqđG?<=b_[{1ĝD]4ω5ULxXbXTF>.E=c:)=)P9?Or^2bϿ:%9ӗ3=ϤxҶ4)EGxqQEXM}q~~rzŚgXOa ܪgz"GnSyƚz/XOZͺh>jZb{ĦN3$ s:92Cm '-r#bo[+Yp{Hl6_ec|cG 3E3N ͯ0mq=??YxחBA~sbtc &&>WҸhK=,%-mh1&Ye X?y_Z>u: h8Kb8}b/tLG/?"Os\?o}=gPT=;f쌏 հiWÛ9c0Sr+=mFE!,!lr5E43/h~5呣?_}4}M=fHw%KVhONS'W=QscqWj|H1##9دڢ5A`fJF렜>V>9S\BSYWXRyX@Z*bkDU=M!sQ PUeR4Tk{+MT,RX =N8[lŘe9hzNƐO3 $AvȵC9hU$Sհۀojvciw A%ghF4(v/gyiK]Tcv›{ՠg\Xs v>͏/GRXCudM-_qթ,*:MwiP|Y;WV ;("6_]惜sJ!V|rPy}~MP\KrX^yIBXy cr;<[o]d7?x.66zf[ cƝq#qGO886_le|\[%]VE[l`n5!8' z bAdm5ok!V/Jߚ5b(ňeW(/Ey/RmſCJ(ߡu0kWE+пq%qѼקFo]zAXj#{(Ö]|-ȍLܟ_r71ہG ^^-0?7'8O ߛ۳Ҏ."FyA C잣MY of+a "t47X`Xb)R]wj|,XI^_9ٳk?o9G 9lLRio>S{~ an<_7sj?E\k#AjP ԫ7}^{mURk5VF.譳ĚMTi-^5ES}s(14%7ŞX ޾oF*nsR\Fr;/in>* ?ψbpMe3;EiOh3#z|l9hDd`%=_̋$:c쬝#ɷ".I4#݁Yy_(bZ,%E ;?$613B8xhC^+gn쇩ڒ'vJQȶrFGX.:^J,z ;ɤs>>oɪ[wZY5cW~z;"%') oCkB̚`^5@:d$o9DZ9~9\hWYj?K]Kotݿk_UbtݞkŘ-j/?d*G*+F# ,S1$?#<ΤhG.FD.ت9Tw2b/+mv{ӝ,g߬;Xu0E/>5:O]lMpdӑ::vq.zgۼMW]WVnq2ܠ~}qV wxQ;>Ѿ5vS\^')lT; i=qUd/w.:`wX`e"A;;Eo=/&Ի9pOq ؘQ1#v",G3*T(rܫg=޿\7Y+fZV,UK<0/rݡ}EW*-5vRO<D{=x5~Ǟv/y/CO^;?♼_1K!,5?U߬>6ףQB~*}QԽ a}ksx٨kKeϰ3=Os0v&ѝ̍Y"|gGk9zū!T'`boMka82|7"ߊ|%%ߊCbZ|H@ԄhZj^i酽kqyEycz>*م(kS28[zycg]U+ZڅE/Pc<{q/O]kZy/q1* *h ѭ鳡5uԋc"2D= wR%v V&Gk[!!*LOqs &c 1FO5:UtNDoe4_D[Ժ#(XFqv-oE˲_iK1J{s#7W}|%cN\7Ŷߋ+7`|Yq1yz\]|s1<<~.^'ϏHūwf(-{= ZEWAV-X\XNy5R{e[W:q+GCJ&AZg'GnMkCs.y.^DŽ|$6@c:ݜ|3Wo!ٷ(޷@X@|" wx ?kj9?叨Qm(Q{?F>C0_y|X x+>W14x|*:qOr*!c 5X68 ?6X|}aq0%wטW3LQ 3<,4(i LcMNs.ehXވZfz!hϦڡg-tuuo s=D[R@ō2|L4A <.E;hCL'zGY0m )ѓ8Ѽ|jt!ԏ::MJ\!eވ)yG,!6*%[9!? zŬtrc[LckkNw4 f܊x#~ ;( rb_6 4^<*33ɓ= SvwRN}]HK:*}rާv[^ETFʮo6: dKerlr9\YCɢ4@l,uؑiE^hQs^x*nݼg.Q/1>s]cd|"Iu*gT#^wm_U@?؄XP[\ZGpCu߹ţ޻ tv(uƖў#G4ۓm;{ɜj+c}j @+Zu^w5#=4Pi*IkhjP6`[Xd)9tǙG\9{: t5ӊt8\aW+nVߥ2?腋}Y~KeP"xeN1' C(:cmReո Gr0[0Ig3sEl;ǪEwqM# 8EFѝʚQ9Bыb)ZcjsA єJc,ۑ73y7_|7M9y j+,^*~e Zl[܈}+[.~.zx ƂG^|@.ʎşسcog޵rvINjE5`ппWAA,MJKa4S.LZr[FZ`-j&5Bi<>k?b9BCsK> x%OًaFܯgv& ;`فnwҹTv-)^#E?ZX;'F=ԶͲ'qhSl$l<<<۶Hּ%O\/dԃ'OIk#cP; .~]k98<ה%sn98,jF9J`q~|(07C|3?) qĉq]G1„8#L4?m JlE_݇M2%N'pyۣaOexo}q_"ZäDZ8Sׄ5Ê9+Fɚ՜e59:[n!ʱ+r(v~lB8WJqpe-޲A~Clg k;cGz/#cSH,B4_1ދ籺/#61DfĈ^t&ΊOJcvm1U*r8q=~a%fj1{;V_׉\/D5)dO brُkr^n s3Xt-k1CNxu7|p$^CKuYiSiOS(enC 9B90lBuY.ʟ6Q -âgښYL[xܨ)zQ`/-ĵF|M|8:_ 7Z#%7M]8U)BK)Ͷb bV/Tpiy[r䯴 !`0OCsEcE\L|%\tUӦd;-Sa9!v!ő> 0=4-94ʣ11[9$_z>NTn'Duv;>xfژIpA/5`8Ld (s>ĕv:^.%.Vn#nfK6#)fGr|p Y|iK7%Yt6]XzqtyzY/NxkV|qM᫕͚dql\Mu )1;SyLۜñYP۸ǦT*^-wRԛT+9gEFb@Q$6a uuWK9eN#gן;uKu l@{[YCVbqeSϙƞ)/Ϋ 'Z8}kpa)qMg- /kMׯJ!`eL Llm%XN}pN\sq5:f$EMc;:Qb5t#oᠢKq ;.־o9$zy 6ޓYO4Pi6wq ^P~ƷG-y(R}D`:rT &03:")ښX#-V8ZK,^F8.< )&ҮQQZ?Bпп22qMݍr ZFZlZeh%@itΎy uIUʧ֦x9_(^uAv$0+[ MbocR~)~5VB[r`;TC1L6@ #4s]4QJKMb?Ikm4_ރ&PyyEsim.넃lc8,-yrdLBj&ęv'1d1dt?š%9L3Wǩo7ĉK0%3i}M&0]̀,Y9egtj<cϽɦ?N$pIa=L/)fͿF/b* ?yyA+mCG]з8XTbO1bwl;[8[:0O'.|dq=17Pc˜,&a| Z&Ǧ'Z]7yuQv0ֵJb78XX}Ɏyyv ֎u-e.;QM6QY/̵eV>cl,$gLNQBpn6fm9a+,x툆}>܀-NgvOGi؃؇TZN_iJmĠ!Q&Lr@$g9 ˜L&rjâyN^=I)Ė5n? w8bEx$͗}Ch#}oa&_L+&mflb0e5~?@PQfo`{5xZzrZfoWqyfcb)x}9f`yf00&PԩZnƛa&[<| =%4OFlQK>fR~Iե0T T`ź{n ߽ct%o2#P=l:Rֶ˵p"rا8AQj!Ӫb'?g˛ūq?˧}Al|>N≸ލ#㛸%/~S;J}K1Ϊ9&ΣrCl*]c Pb@Lb3l\'L/։T>(/4f%2hq;ws ׿MzGAmXlկ U![!_̻\GlQUSO zh2|Av7>ȓr<{↼۝d%Z6|"ծyOթyiE!DGb*Z ޫvVm5?r;Q&v%k{4DJLX=lMlYj7I~VD옯Uhg|bQlM)(*Eg7cF=5be듷L4#w=yۛQA ;~L4hMN㸎^ǏH/ޫ~B|TZ\K{Vܛnb[X'RiMW0m+i+El?ɋD[Gů bpXی،!Z*J?֧mc{/ZS\N4'ؐ%⒚Dؒ!L_T_lV[^˼]?YH1-*S)7rrqe6u4G\o+1EAKxbYxJب-TYqVVq\3K_Zg|(o~V5goQ-_п҂ \_-鿿'MwߊlB\Y.phY{~ bSkߧ*d scoKP:˹qfsk&1(7y9r,9;fۢJmҮ8#myRI},Ēl#i<1),gjeռ_6"'Z_c|Bc,3A#E#b}sC䪖b^zuc SWL2#N/`+GZv:cu |ˬElp mKb؝XLΑq qqbb933q+;KoXk5cѨ_{| \r0XiFSMS&s3(Ys,Wh^~ѷ& އ#9w S|&wݨ/T_!LW;#ؖD_ktw;eSoX M!a:C\'rlEe-YiC8ثhF Ջq@lZ sx1,VƎnjK c&V6E[1Iq)ގmf*3DbttZfT/T>Sٱy隇r;;ebla\25ɓ9iϗCo@~5B7Ujߘ=,C*+L!H^jg>bihZ\` iuS0Xa$5~7y? q&I9fCW@;֠uM4+%ZS7b2N--&|Qq%|) ;7D*m ԥv};uÁ nP0ܟ/gnqc]ι.VXRv+Ljx>uaҮWqf°JXz(#m؋j$GA6EN:qjE7 bx&Hqo,bA,-cc)v#+b!E;?)7q E{jǞE1UD{XD62Uh/S. az2&fCb ld~~/F{sC>M\%ϦrR9ؚ|+kOq?amwC}foIUoFGb߸/n"omމ9pb_c&v}X8?$a20NA#<9Ss*94aL8dY¯CoLꗘx\ E.KgA 9_X="Z\%Nmle5K%мOlel6qROkLŮK^|Ϲ`y.'h70+3YZ874=G>@<0,3f`~xM q,?Y_L֚inY[}K쐣b3r=ڗVE~[./F_t/uqOug2%;{y!U 1#F[mmĶq2Y?/΂'S\>k̢&՚l˳)FG>MtǬ6;blM|)8e_,p>xܯ676\׈ٱڝ6HϋVM!$S hP ~C!G蓋q)5$'9FX&Ey~ rb !>4A/ј^AAB12 )ť5a#s1 yM*v8kXؗ1?8؛Sؘ}&{8x:'Fc*b8bwECgT>*NсE*_+ٗERWe*+q(N<'>O}:W_Q+SݒWG.ϱH 򧸈<4?71;`-jDWcTq9ћhͣ^Ythdž1v8Xs;[SL81}G)&~Lb1{G|-=6/`ooL(6~]^zWQQd%{le.Vلᕮ=eۑGT߭~H.W ܖ[@.aWk.f/ ?^h:\/v uegkU@+Fcr8suQ>v-@4S݇H_IJќ\dO0waۂ 3 ӈzMliքטlio~1=M1ÄCbf%WbA>Obqlaʿ]v#a&i6ZTUC#'z'PnQ-`B?)g–T/X95>5L2%Pߒ5ή pcCZBC&: ɱ |W3砬,E2!N %ؾ 8]I-_Lwx[grŹ 1| ¼x 26!A5TF zv裳C) sQU4'-cOt:?ֱ_l |w 7㝸k|%.1ϛAl~ų(bUãUs- 'zD\b8l c7ز80_3rt8%ߴ~hY'_#\ٟQsu{TcA~tvdmenp ӱgqm~V\oS<'3:l㖸=G88f\{ZVKѲCWm2=,|&>#1/.{DK[Gw }e.Jq-.w߃zxOYY8;εΞck3xe~vi11hI xRw9a U.]\ ߲*v^|D'Xz;&Fņq$[ѝUVgۗ}Y_KяP,xb d9w?=_|8=xcŒb<U B13-PoJe\1Ja츫DbnOՊ%E2P\PKFx؄8XãI15>&7ю9\Szz/,؀lFϏrVY< GW޷$ʎ,P/ ,,-cqm+:@+&%{@3b[W Kt`i9IT5Vת-(ww.x:/LqA읛T٠:#rbu:yYčwcǭWZLո5^zt^D{!'Օȳ|<Լc[.O[H+xgϝ=>>T.34"^CR%w-3Ŷw'f-s޲Cpl>g IH p-p-Bp(ܭp-CI :{AZku:=16轷 cI7 +x|M;Rlk7x[GX;&Nϛ}M~=}Ct#%Ό|G~GcØ@wOޔc󸏸-NW%QLj98 x3h)Ku/%BtUa)AďH mE>oMm466ΟbxnqHCY ْ8QXiiqklm0?XAz]T͏ɔsZɯđ;YNFNCN#_m?%_y)&ȸO;1Tȷ3$]}<קd|iH S̏/B bbG[&:`NˈzֻhB%,O&?m|C'sX/cESf>4OCOxqw4,uPIUBم\eb+?y1[E=XUqf'آQOx8x%"vPK1ԭ{q.l_Ey+ޣo{$S6bxK>MvkK>_VI_bߏ~S3/_? /#.$R uGpK^P9Z{܌eF3}^N;A~{s9Dk| 0fvپGŞb*F}öܱߣ^r .Ӱ+ xW#{codK^-SacwKq}t^FaUZS-;rClJбŋ}ǨK)>SKqy|VAxn5Z1e~(. m1L^/p}]|+#ϋ%7}4i(=67iqVA58Luf_Z+fb~#/E_g+kZkjj)-j MkZYVo=g@e:򥼆 v͹9L}~3C^Y~J^rNQޑ;[򣜐JwpEM ql&d_ɑkhiar8!~I*7YnC܍5qOީ(V7Y2+ZX/W2z\b9sf{ =}z9¸ؘN'G)zjH衕7ݫ[ P^'Cl:i=3Rc\?-:jzjjEX;D;#E˼ܪđqj)ڈL=%xQ506mYM h認ĹF,ob2b؅|!?j,M4!+s6?b=sS>iybq'~qEX'GG쨗^afF]C;{X!'G?ߢ+a9-$6BLWк>[S:[b]ux ؘss.bif;_fΓk>aތׯފx*k>$.$%i 0PL~y/EљѣU*a:1ȊyH؎X<憐Wj-hMtûGL$@=4Jk :c}k(c]}q'1yz! hh]m$ k~&&&fy2N/C y&q XMkc0'n;;ݏ!#Kv%_A\m4imuψ5(U#ў3P\R?R@soIrU7<=}@F4:(cńbs8xPKuEх⃘R\Cmu{⡢'{gR=إx7+X0䂉oCbR1!78;ߒO{y/k[|Fx|!6r<̡5c̊^0GC"mп_~UG_5_#?&~*Osbm__Uļ pݒKU NY%9"?"E"/Gqi>Q.!{WMȿ!д4ٹ%ץZ+'(˲9<a Oy<&csQ."Zd;8ȹdaߠ*bHqB̈!]sorjބ96#?gr׽Sŵ /c5Plm_#.ra[5qmk/#n%1EwO:{Uix10M1\ܛʿj16OWEH$&Q6\+1//GGu:+FȡU詭-!V-'V:00ZM 8&Q\+;thB_AF/r.9T\'Q D;]$W/DU<`yWN(oE?"&XRFqV"SO|aztA;gGlc4EAw Z[b83BѠ̋T,EXE.%Lixl?cq(i&Ǔxmj) C4XʖD'^{G凱7NWwQq qx?S^Ă*&W, ֎;8& c >o8 yVKd/i|$唼A4*zX; UjK(5w{7?m#z +c Ya}{XH9HMx&zSݭ!*G9;y},bJ+|s$gD؝h7/' +` m}n(k5D V@tQ5,Z O62?{<&d!_^@.=Y2:O“Ϲ]"']nTi hm/e|"!?dO7y_;P^fq,ƱLq>(8i*w# ?קr5/o}j\nٌNPel\,,Q*fŷu[aVv+F^X/R1E+ھ; y:.sˉ9 Oqs/RD(fCCq|6:h5=ѣc1_q~/[_t8-z.c/JWdpIVF#\]t~7V7uܚrr+A'Ǚ3`ڌoy6!Sh^P6x\(G)>!&{F3N9f^8/x?[({cxo-<[mhS}N9R~hr>o^Uf*h\yx6&SWk fZFKA; AԶb 5!, (4l} (nF:TccPq.uV OņlZu'eǘRt^?g>Aox:i>!QuRlO,&xԝI*g;n F=iLdf-GWu(^.nFnuOR?(>5((ͣEO1%GRJ_(>B89ʢ=gs(6[x/6)x"V{X/0%Y⢳Eg?_%7)|/s8+'#k\ORx1wޫ{y'틊0kP| jjP kТ&?B}?UW_׬6jм׼3,+XaFKzNyy%߉)l:FG'#8'Oyl_\crp9,}cn/l@~V~;eY%jE~RcM>j=qw'0_F7rh^[ްNv?/ָ c49Q2$OqQpl򙜋#ʍ LGOo4F8XS)bi$58̭1~f:wM4^q;-ND7ZͲ8%ΎcASG,L=U?$Ҝx7P>Tuubk>#CN|}K~G%d-1-cLFZƼXK ĚYo ON@b}yCci5֞N#>Zb>S<c%4r b^hqyWŊbr>B,oZPc !ebem [s}ĭt|C-y覃/s ѱr hh]UhSN ,p.0 c8WV#1ݵض%ZfHStJ _Y}U#Kـ̺і|Q8)vqqxIFbW^ }2€ubhp@\kub7-mtWIqJyLnIvUS5bw+9@eGͳ`b(] ʩă9A,dֶ_q7._:ބm/~@Jyف|]q98\L6/N!{buk{۹&n4;-<_a[X@V  cV%#RԣuuzCTpWϣJ0P9?=#lG%CA~`BMt6J;יNfFLRo]n õX|kgK0|)CqSWkx-2AIDAT&wXuaՂb?Skr5=osعfgf;|k.[n]g{W]SMÁFݟ(C;6W!ř⤺7C ^D'81<mbؼXԭem{K*uq]_7 泺#x1gG@ޓc!ŐϺyU.df_8@IǁȊ`aEkoRphq-#߬V\,3v5fck56h3?Tжed9Gg>jg 6\\Yb1јF(redHe U%8ؗXx(w)&"YW|gsE793_ qw(*9u8Y-)>x_AI_xx7֣0SXF1A+qg)>SumW>ľwg/1Ųˡ,߲&ţ>`-qDnXD>fg.*^;_LZФX ,s Bzn[S9k߯п_Wg! k_5r4if.h^i56@}-0'oV·/s;mg|Y_G+Y1vAyG{?-'rݳGNjd4nh(*6Lyes6'.O*gQޚG?c|K{ʱ.>&o#qY*1,mr 9| b8<5'xhZN籪ƐWY`pȁ6u?V=A6g_ ByStM1J0(~418gQW[b}":j2fWqOb9fS=G{c֢<8'hGTyNqjVr+)#k$:jb*>(΋o4!5V':'ӈE19Z'b̎_[1F9po,cZhbQX1?o4v)V6F#7M 6l1ގ涍q]}9t">4W?1o؀hbNL,gu .(c)E.bN.4YcrAwN!߭9G6:@tN{vD(+FGQn|}y%F#)O 3k):Y诛 j=bw Z;fe1ګV'Q=hLȧU m?aW-V-ӇXB\yW-~wu&Vյ ad+Jnyr,G6ίFrhNwfwʗ E ʶ1[1”q\wg=[<0Ibmbڈ"ʩdO>dj ȫ5 0Eձ:ZU¾ahQѕUX7qN8Mu`|޸*-۸/9 oؓ)ltrssK&?vɆ#)_o{*xyo^[8<=4׍×~ߘSܗoMؼ ^#("Gb+A]UX@r,KZD%Yyx kodM|s6ힹx+օ7bG7솆-Dظ-8rXB {uqNJ)-.!Om 7#m܃TN6C_:_&?Wrj9&| 4#/fe=u8ǝ8@Vy9{ѨXX=(&A(xOy(>|m1ԽT7.Om=]7 ƬFFkbGSbNUGݖũ| oSlXַ~{Ğ@>GąĹPS?(+TuukՅXm:@I7A0J]FEq-#*! I[k7(ľ^71b՘n %<~\4aAe۾pdrё`V5ՔӪ,\rN㉁*_wb, 8ت&ؖ[y{f>olC2}'!wGbb\|LeUQGqQF=_)~;xxk-sL7S,.ZIOQOP'~.6%K#(D\3`3w1WG8M) /7tjwwcXER>cJ]gu^\.Ua;vUXM_:scwBΫ~4,74Vy kYhq.W}TjEYf:0_zjxa-΁<=/-%f<g8=_,{疓1\|Fé;xºnvu/kr*"Z-c}r\=Wˋhxܦ| [k,Ӱ򲒥]y,ku ,YmYӥXbK!ɽNN j~yc|2"cB|M<~XeK 2|2$,-bP\gXv%?|g%5bk[d~At GfD(u#n $:GjJtD&Qⱀ,ȗrJ,>c-FީC9ì[+rYVzхC^nF[bӼ(#?AWWǣ5R%XݻCN< c []l=F71RJcUubkt[_m[s]|(1q&^ACm:zDS=9@.2% yukY V-yxn@s>FqF%{њ8$7RGg'W:p|,rc SV&>'gŋ2r]Km&}Xلij_˰)WUU@-;l/E%~UxS|!8vU 9Y#brB{b5 ĆV\R>Z\;Y kYÊX=gEv=n?N5! ӕM܁ oPD817&wj)wQ 1بk9=bucECY/1kqcs~8l?Ku\BWoв\Gy{oL=gY_Qweݪ/RZ5_RU|PORwQ,+S,.ꋳ &~;XJqDXSc^|F{qŴ qo19S_L*ok@&GY׆ W3G-HO`rs 3Y9[kjGѝ[`zdqOv(I0ϊ +Lt!EJbh[lG(D؛-ScKS\ˑ&X)gnoۢ}>_&X<[rlUEj5MY8nvkƊ9 hN9Sc-AW|щh\W##꼠y;%=Iq@e Q(C~>X`E7^hN&F_ƆXEOw1^B܊iO-XhYTƚzDXfp4R3lWr[ߛ^+rnWȖS\O.[eix9;:ٔ|-f{*Яar2~Nm:kpIf-; N@+w^>Uj%H5(jD#8Z /7/!Ԅ`TuRA|WB8r(?}HyIL>N'SъX_\xc7qytܒO6*oU,'cMrLɃ,<s7(}rcx||khѶZ_{{ͳ4I͎ 7U;+o߻ [Ӣ8]|s}}2z[~CV3j=y^Yu$2=vSy7܅WnOE.g|ˇCy |M1Xw=?^īUy3I,,4WcƯ~GmxN&7C}(R({Q~SR.$>Ō#zf[:nC?u{W.]DOCi@1M=M6yMd' roL;l 3ɛp?$}̲Ci8b^uW8EĿ1>!aJmm  S)AqoΩk>a1a@*RK+]Sxkw-4IZj.l9qD S6WScsKQG*f7LgYY̍~5k?;Ѭ}77g&>_Ȣ/ubXE ~zIqU&A1=KO*Z\N|[lM4N39:T4SE8.+ꕣ)vYwUȯ!}q%9j~IM@gc; Wbb|]N0 ۙc}lWE_2) ,[_7H?b.V@Ar{袙N y L_Fp,22r9YIΈ?b%g|a7mu@GkEElXy|FtКU4]d+|%5[8Pg>v*c,y=yuMXjsD3O^ =׿M׿g 0F`}H΂SsRuԐ`349-R^ r:1H27:x)kYb2]&R^aLގ^.kčhb{|i3+!`Ki{9U\x%ȟV5p}ɺa:Lq`qqq }Zo} 9)bkb81 &.$ά7B@m[G@Z'ԿsZ)%yK&qVނh+99J1\}ͱmqQ-Wx 'b[#аQ\X΢ab;wp~/6<9r|ôh47b|q:Ÿ6+~Is#(fǂ8bJ,(Q_NJ(xb2-/S_Z ĤELJL"[x$x;)  pY(6)/~&։X|sLfyߣ!fGe\8.?:*|Ŗ1<&VzātsAՌ9 |X{o̫f`}3kV{V-oN9*oa-Ck}5_kVf%Hg%44TRO4?*mvႊG 9#/%0Or:+*_&W)'soוw54cAwzvJ6 ڍn->nΏݬat>-ƶjhە-~3iۛC;ٵd\rmB\z2p:'/u۫QR5:lS+;ja <EuEE[]2|v,讚:.Oo0蟫.T>TKM<T߯T_r*BЯv{+WeRETVXO%ۨzNiu=;i&E]tXХ"hLlI܀ȭ*c/9c='3SŜʬg6L4炙9wͼ?cl5Yhᖆd_dbCADOGAPe삩Ffk-طPcy!qL94 V$N=vVO;DA4Q >9&vBU~Dylmt*)#:?&Zh'9AlgͽV ׍S yM o>AKuZV! baYxUŘ^Qw[2KWhESlDX;wZD~'x8;k<j!I~51Eъ0ڝ@r͍"{7"Vr:d8,{b_(gG~{rܸ;wm[~҇CO~}/#7vԕѼ-M}^51zu&(ϧsKW* ;Y;v=H'x|ۇ1؃G7`Q.G/.T wSF~[.O L1"'n${<3)'?rI9'f?^_`_’WYY|:~\sGVyN dh+5}Kt+*';Ү+4Ķ]k#ziBlCh!]]k+n*y_^?ah=ZV+ʓZދULFq:Ylfo9q^qIѝ\MM"]XHnn8ݜQފqYnǼO71^_\,iHne܎ xZ{<|sY|Ok0wOfKOX6}ի ~=OfxWݦnbi;2NoN%.>'Ԅʻh؃rMܭb #ϡdQ=4OYAؚ;e>h2O}~#)y)n^[Įy2b>ϤO hbr+ǚM|(*^to߮GWÏ _!?B._?S3NUd| T7\dGmWqo[cOHg<'$OpuZJ]KL%r17w`tQč1ݫO؈~..{x*wq_=g?6n^Hyzbc&ңj.p~+lfbe״b\)ocq$Az[ TC%8!#,Ϋ ChРl@ݭ6Ut&֫M`QCq:ʼ#D tmb~DcboQ*-)|q/=:R,⌲QexrD5R+Gd>⛓m:pf'\Xk]?Oy' bn9?>ԭ/:U@)fM&WWSK)521EJ4?\[X\ רk7 k_5]4QV;'F;C~V eFxղ W2Ɨ'˅ĩS^>;W 떳:Sn_imUVզj[.mg'R6\r6y"pUmU\KZNJh`ʦAẽT 1S\DR{\ j£<۰j29b bx5kM*?W~VUIe}qMFqjכ*./^Kk_eU@/jDE7DzT kTAR% 5!`XuXxF[)߫lo[ݾ5jlJrG(SK=3Un&*@hNE=/(N"ΥWV/w?^㯌:3yXp_9e /1q܌⋵~\j)ГwV}Qb-b9rkb#W0;[`ä Dw5jbC}LbrUks# jXc_("Wڢ[/6y.#6iYA F+/֊ e.y@CgWZgK\נeH/+ƚ`JŖZj^:r}@5qd $NcW=Lt c+efGlAm]I>גU?ѯxXZ3#;io[nagKavA$FEwc߿}`^Yw+Ho5{q󚏽±̘8t+(7'uFCzGnd.l-~WU+T1ׯu*q21YC[o.Ϣh'ORM|O|7aĊG"3,o"L ą5yubwklObk?al>g0PR9MUWϫ}WC4c}m Z{  eo_\Ct;[5\Sy!."H/y\Ob5F^d8/y h|VwQi`ycy~)4=-m~2=bFz%8J 8~}7/r׍[˾}}<`yp6gX*bv[lWNqFb*Ύ8;%V1 YCaU.s U'E]+Gc+؟Ğf\s>f0uq!8"D$6݊Jq`"+QICl (WmEq@Iy\`ndvU7:m+.Oc;R/hYlDtbьb#L2">n5biވ}chObgǫ/oq⸸>'!(]!(-'bbn jt@̋ӽB<ؑm`̢]&6rCV7wĺS^b؈RBƮ̼-ӸO>D,0Go0-ԶU~FmfM*ky5ӂZ>Z'~I-oi Bj`Y#IVM]kY-W6@]v;7eȧ*q.]~yoN< 3@>Z Odr4yRY4L[wN|~|ݶ6 )_HeVEη$40Κx+/R6{|;𜹦ae搧Cy1w RAcBrMrim&CCUuZ*Z]}JxWk|WK'96dx(e{-jF}161-'gpmyD_zOW';Wzfx?n-xx_8e4 xn}^^teb]to\jlGOֺ4}K{PQn M-_O#0Pc`;]8yWggy3@{XZ;a~AZvjNF'b_stG>Wj\g1`+aKIc [N,{Mv$yN=N~ĺ('ŕ:٨|d5fLozЅ㚝JmAݻO_x_L͋FsZlA~rgK(γb|?MkRAWǝcw9ŠhKCb!q5/,0֋.%D7wᶼ1z!H#g';p<:$pͣ$։֌cVp 0mckE޵E4[>ƔC&\u8΋utCNV+̧GU@tSS .-G_ՉoOjʨY,?b լͽѬ5`ԄELW_V'|厍/ֱYVH@!O.r~yNnyNO:iHRvmxQq;|݈XC%R(m_BGa 0 ʥ+ېGW@>Ru)dg[ף:+:֘YXGtg$ UXGc;Oj]Ao弃7k#kj,>ωs_sm?149b9Jb*JzG?jEs0,A_AQX``UXbXiPgl@[=FaՌQW U]k#" /TMxD^[TяB>w=Nwv3V+_;ˈ{ЄE)⛧}3@>=׿˘w bcb/]OL,'e% Odh_{kkЕ886 1Έ|n; ձ&=Xr|;i(Mb_*29]9z]#u7 b`\u1Xi#k Zh MM3 ,5-kU_u% Y3L rNqDlw:=S1t1-6(3 vʼnVְ;:qw!9',+iDR_h\x +0cSK1X1zmXlEzGX@h10a0nIWX{7-9 ^[0 ?7Ğ1]j?G [b%fQA6/G@Ϊ0W>[CIv{LO NZz=wvcĖ=wtŗ`=lKy9XCW}rT9X ăyXH㫘TE=F'6܇F o3RT̔9jqZ]_Dfgxdox_>!o!e Cl겺1@M9/ܒ[>x!DË,y=O9#>s'Mƹ?|D?*K.irr'<ᯞzټ;MtԞZk9VT {ƺv^唢zXX~Nkq7&~_ E% +MM;΍3sμ;ﰭ%kՄ-:hh5!`L qI>{1H/ꆡj[O:L1։"+~0&GĈ8&GJFv̶r-G =EF9l/ ?g=r9 D9s0h& DۀL0`M9'@YKku>ν,眽\5jܦnL<އAi1+<V'6Oc2^e1ĖfhXM̊XL̐J )x|Mue;i:U=.]ڐmtKm"? |֦'{n]c-)hʙfۓBs{~G'k5끯-Su֔u_w}aYrw_}_v<^-欀~9)6 x#h}U|&W44e'fm5+栱6k\u翋"KgsoMhPkkM5m=^:뀅yhhY3>G?b~1 +;Ac!zbj#3L+bUDL,Z1 b]#|s [Q+oeOa[[bC˚S#kD+GkbsT’qcpB56;/ V>>MĊ߰<-I?½=c?~kqSNjil&|9ܺ<'1r1r)X쩍_Gϸ8bX3nEM GbU:mc@]R9#F`YSbġ!gf_?BOMD]',Gv%D+kmQlhyk`mk͟ã^*ގ+T#z\PhĺxP+ #NtÉZ!M~:ďFtVPln.UX!Gc=sqB,Ck}cOl^, vu&./~)(^/$:ؖĶbX'6)v*v(Vh'V;s7~aLm<Zb,B\ǜhX,ǃ׋yh|ٶҚYB(;sR seB10Xg<9^qk>2pqmu~4lK4'>:pm؞y%yOLbmk@Tg3O3Mh^*bm:IT<^z}=}v;!دK`P[nCV];cE-nwмÁ); 7+!wvqw<_ݎ'4|( O~ʧV؀r5NgM+Lsb-^kEkieeJE53u suOs2 ]St@.KEtA#,Ӷl[S[EQk,Egd96~ګ1Lj|d|\/m,V%o(*Iym9wkz`j~׭s_OنinIbʶ4枔!8O$wc!9"ɮrLΆ?% x!b §rkw&4cB1',|=Drm_E=P͠;Z9 ?79.S݁I0S^3jL Uuc& 0G;(O yR##j`M*&(ZGG c">:iOtY'KGtM7\_< }I1P_}1(>. ͘0ʐO UP#& דX߲:`f lEfY͗mZϻ8$66S#FoE]v:" xr21Mބ3Ļ ^'V١]J֜蔫?9>7k]r 1GOmDAObx D|!Cbxܪ?6&p@7>2*ĝqmǁX#'$v5.9'N8'[TN-K<"bA- aCr߼Қĉ8 L,sc1ؼN,N.-$C0*q;V1'abkZ.Şd ]bq(Ns9bbk:65U崰7źb!EbؕOINx;ک(mhyi7.WMWu/l3k=PT>e9V*@[мq\0k=Gz|?2p1y/UEv^Skbg|n|`HD? S^kO0U[` vXƎV#08$UgFFіMl[tM1Һ?co{{& R|S9A>- |r_T@vL{1ϧLq`lyeb`P|ġ˶=Axy7n o7pK|}siwzb#%;q޹%a}mGb88;\C`@lg=l33q:qQޘWa^[hqXPM譛>h.hb˜~ڣt%;XWhV܆ /`kV[bxk$;W+Uuqj׍r S_u 90gkİy۪usGLy2qQײ\F>-Le7rDlerMnhSye-<cjj>5އx7w}3 [d<4)r"kK۴X|8Ugy"ct̺?"% U3(N ~ X:/`i* I 4hZj>ڐwVt-[茮Bt-w}EJ~YWa9[`Y_7#Q1AtV@:&r=w@{ibh&Y8&އYc{x͞M #jupbU(uUD\lb3bk8^t$FF$<ȷ؁fFl޽X~>rg|ۆ*ylkg}|7ւKΉ91h_]I($cǰNũ8DO;fKsLrD{:*Gq b zhUmtD ZƖ|8k}v#677Z3kZ[/l`}pv(N#w#ֳq X>^ކI3pl(zgŦKl8י~ |^3hgVCf5n?e r_kLCpP~T^SNqfky/z^.az OlBlFSV' W'RKb;!_ԕ nfOz-B?;? 0<Ͷfa{DlU#&#˭t$w']s#Ȼd39}qw(bs=3iNߐ˖x> |GxO|۝ ġqDtuUD]0%[Xe{c/,&H}Ck׈IC֋_ M6iNSLǝzZr;ǺW[Q>aQfu4Ǿזc ̪7=B~ZE4-*r?ϩ GE_Y2Twˊ)_-kUE.{ھTųYl\{^N7Wg9/_!31-9([sl g2ʱu哴|9flAs^+y ys=*5)l94ery07'{g܏e XO/M{{rG_i"yp>(r<޳| &aFW%>W;|k1U2=+F df=s;GW@rhihm~VbgC;G%_Tb٩.[ԹJaU 4QXCDH`ZGb+R}95 X XW<-:kAYb ,D\ln MRޭOGgO[ӈ||af?ȟWcDqm [Xa|%%׊e_Y |kqCcc딛ЪxKIQhb{Sq݌#f^FQ~s"/NRIHDrDQ.+1,Uc 75`gK]>t?|骕m~żg~(o_c~Ȣ,~~ψ)٘E%H}%%Vst4&c q97ʚSB _AG퉁ZWo {k]q8/qt<FÍ5,oCp@`(kgņjq3q#K 1w͉UbXx"3aL'!E@͡DаE/VxnEGQg#ZXav1񃿸n)\<꽞>c]p^qE'R1DgⲢnjؐx'> XR̤ >D ^FtӉ}K;,+/#L4"|;[Qv+;fO{b8?*߉4R%gLs<o1\{CInFђT{G)oY3҈x(u #b<#C'O{.XNqi\Lc}s,CJ&V*b;> 4 \-vܘ nqO<d5 z87|!6yjn7< kekP>X>ʱbri9%wݦ4U:_H7)|GJc(P>L7G[̬4̲\̶O0../;V)o'w\gKrf[rX;V$21O#sUȷ$?#6[[89w6!D?:qOcb qGb5ŏ18[X):Oh4~CᄸfWNC05mCqVA18N0k_=xѧ[~5-^0 -~0yWqIqț8-n)QN M<-bxMwbf||sD\Ix,#| 9dpN'0ϧx/[ێX|r,"U⸘FϊJ @jjtOSV}@n͍n=wokyLؔb2yy?1Wk!+_@<{ȼ-Y?+00 fFb7ĦW}'#(6mX ?2V@>ٻe/Ӭ!pRV,e5iF\a.pf@ߺמt)y\<^ 6K]B953()KyJѽ/8Ɖ/o8(?"n_HI{ O5 <~2 ^{)[bJ.> #6žF~QGőŲ6ƺQʹ,5`'qZtd?b؝ئrallF^褃^J?#h8q{>G{5|jnxd, ynx5N:q[ cȷD\'#Ll8/>/ۊ}^}w'KLȃc0V81BKbZa4k&^xȧ%Thzc,ϢnJ>a/MĪX6chk+\dK5Į_xTV3\TuXĞ`^9Z\83_5t.?'˱;C`HUR~N-n؞_T[;P6;SQBّr%;囔g_mC6fK)1:م\lK6``5M`M_Y} 3ݗX cR4_i3 Lf k4,ט9'.PRs,)K F 0w)տ4kTIw-s#sh$ TKU|T4Z@@ %qL}5 P.ZEmQV5Zc=mBVڢ׹C;!GGW,?&;Z=r a~t!6|OgUHSbMl3-uKmUb "4O6ڙXV>Ļ>1 >ZgxB΁'p}\bq1Wc q.w9 a"s,jˆw:q*%W ~͛v, ҀC4[DS6؈̸8Ss+ğg{J|?62?#ߨDp}7ʧRdž:1}Q7ڬ%.%~dlOR|Ht&Iѩ,SClGlkƗ4|TlW\NQ8<aXF ?*VEbXzgoY(!Dxm-^$.e3D/[QbL$ qDs|_zF /'v ]Lׁ#Y9mrS#)H[=W^M2ZNDCtf̱{iaMt-~}XyAk?8Ċ* ~|: E!2lYP2>VƀV5~H6Q4S\{i8~?W9w>o60?l&J2'YB/psMϖ`#5䍶v%;cR,twp/k_91:ϟ׈."M,\<˫Bs'b#zU?!'Q= 7\xr˿[z/|tPde pV=;K\/r\ g?('Qϑ?[cgK4UփʅunS ,ʕȾd|R"eCIr99d'Gnːk=7v&;O|O98禙fdL2T|eօܺcPs03o6yM>Twv௳yc{pS ,)yH-ߙTXP GPdnV"},' J0сn7@kZ&P4Gi砅VZW#TZiY-s[R;*J OE ֚tEu#;vs-+_{zC~t"FeX2CYo+BXbx_;y? Uzjȿڙyr@0:n4rF#SbEox_DqDV1ܣ+cU#IV"61bXE76.ZƺɱVO Oбؒ)abLGq\,(Vu=ڰ̦zr ;jeSw~ Nr}-wAYz,Gkŏ(N/x3vNĴ(XX9 =F;ba|j>i<gc]p Y(pME/Rշs;9kk5)gdBser$Vr ҉4bvkƪ/s6}8m60yAт?y+؎xmaSohWs"/Ml^`1b 6?'|W] r“ufa]o某ȿ@~b~kø[.<5k,Yty_y yg.hg9ҫFSolyp{18)\][៎M1*{*+pʑֹns<In%uPF,(z僱 4PelklAtX. cv83"̛Om[쇝7X" |Ww}Ѯh* T@@m~o f`| v0 /Ŀ%?EģYI5ߴ%k+ce#,CiI&g 6"G7bo[anX)ҒEg.ةO~Ow/Zn[z|: dEQ56d&>n--c$1geΊ/|1GM/>||WzkM>:rm '_6 dV\ Yh`v+jZ*Ď4EmVS"|M*w(hJ}#T6{_CM/jTgvr}WYVXhy,|fi m,g ~^k瘞SXh9ܣ|lO_&l>C7=~锕G+gSvInX ^/krScC>ݲ9)Wd\>%ٞ\Om]<3~zG/tWb 0 !p-Ure ˩ĺz:ꎱ)O3?L͉}b2_UbkuYẢ'Ul +ry{M\4^"Q\J&LT V:+ܤ193&G- 빌,'zP3 .{<<;9ysn \Rrm|獔搜Fo0~b@͜WnNn(&qFjbm6j~MKl7qn87Ǵ+~H>l9zעXuGO=W Tnu!~`E8|h,&nɗx-/{\[|]ٸ7zcƛQJ^W+A*6yty[]#Z[ ~N9[ˤIz=MҗVcG6)FF1P_'7',q)9Gq1qw}MЙE',lcZjZewcfiCvNhc h֏ݻzvUH?Pw04luA5 *#u?ju;E\6ꂊu_XBoeh}@CjHB;zDol_6oHql5K*1$O׈OkC\w˗|<5/[.O,xޗm瓛1\ɡ9M=l [29lkW5ȵ]Vv tT;Cy y7<{3ϋn= ϜCNiqcmtb^Lh_T-&œ1{ MebLQ6 FƘN%^tx7`|"Q1w;@_:+rZLג|4_ӞgzoY}l e0|$'w/h{6m^L66CD~PtP+@yAQ2~4a87Ϟn#qsתZT#_#6S;PÈNǦm)^ SbL% /^||g^b8`q[V1 PAnmh's󬀀yU,[NZ~w5+FQF<<SRob1<+kJ\sL$?4׸Jl-߷ޅZڕ~ fZ[=ߩ.;%Hۨm3uUGe&?_^u[֣-낿gB=R ;ުkgQ-E 9Z|ZKqTnV;?!&yq~YmrJc\<:_.#;ȧ˹lZn|,=4-OBZJ/ Ϥrr?^Vv!3"7uX!K ?E.tO4xx)>x|W3o.-ƺ.ku^d!ZaV5E|y ̵D̳$U;9[@ou`o:} W|z]=^T@@|V . κ4*rqKDJe(уZf4׌Q\Uoԣe eʹZ Mjeh[kW/IDAT7Mc;lC-BرtU'tխ-镇bc!?L 6P5p4Z&bsE|+jJ5Je_6 &Zېc`Uލ=' pkw;lw4t7q_Dk<g|BeGST*p]x}@tQY$+WvӦ`޷v2jk}9^l1^f}8rb +vbWbP{|&p+Xg=Ję7o6%fj%-⯱.Ijtbşâ FwœщbvlahhSxɛK6oG>>sc?4Uqr"ƥwËaKbXCew<" uўu<~#w NO c[mt&֭EVv9X5Fy?#rCů ðmUO'p`q٘S)o)%.U.5b4XLrb.wcln?8hMGbyu=1 '%b #Tia5L9bD(?(za9un.O"qV,<7)v8!=V 5Jbuj=S8%/_'ȻV"`  t謽h_a馳談*f@ ,ol9-[Ek|?ז;:|Mc;=+F'n/[=s'SkФ=Fk>&>=Hʉb.Z٤ݚ?ѿ尾=02ckxGO/igmp'p$Y>MsQNh O Z&9QE>-1;VqO'LO_ůVjw*DeUA`UYQUܡϩgmE]4- ^עV_RQUczЮf߂t Tps?P;ϭ+הּtщ8VB衧F`s/baGˢ>T+IU"65,|0_i yc;Stn9.$^}\@t@h28×y]GAXqh%=}wոiƼgNaWRM>.O_;/zh7Lūvu9o-ƖS| x gNpq>5Ê%b T^Xފ<./|q~QQM2TL,|mq-ҷmr\D5"P0Gչ_XS,]_wR@~_3G)y1P)Ya\\cIk)K3KJ,MzaھEX\jfAcZXLL~^4@ABr*z jM9hf}>%-,nڐW鐷uuZ[S7zGO`ay30b@˒[>WC ױ07В|*{j"FOKr{Yl87_Ǐl<ԫq4 P,"3<+DjkUBw{;U0 YN[|cVٺrM]5x?GW 6CSı1OB]c]&q*1+@-q[< Gc'*3sQ`b =Zݬk(f 6:iU8)?0 X%̿okt'^&211Nx<'16 ?/Vb틝hV|Y-1bź\hf'q"6'[ ||e5k!SL#֩zR &z/ojh@G T_¹f=إ_(bbmܡ؍qcd\'=k4zG?7qNޜ3zĩ: R PyyTxM UJ#ueodf EUX/V &@Zo.Ĭyߎ5xL05"'Dfft¿RϦ_y5 0_.`-]W:whK oƺm7e}I':u+]/n)~5K_L\_R/)+% o *u0d+kA̶5-}]\FrE5>K&kJ;@A0KXIg6Š7%hI6:D y=t&j`@K<l0ᆓ @+*h\ͱa끱Ukc;rOc. wbu'5O#!' d?> ,s+4))ϣ^T6k9XNEh{ߺ e+⍓<3_ .j:iObmGʼn,6bbhAv!W7PlNù=E8Z}p倻;5ߜWih]P,Cx4zP,-(1x83%qnEB2FsOt+YL|ⅸݍ1-EhMFMbM1CTWq{fQ_KL#ߎ} PJw<+0"S|_v {1<~HQE؛2>&XochB(E?yz_ ]OզzviرGjg~k;ī~:e14&/#ȗJ{bk<.g/q"K?gVqLՑ*ȋb*(,UUdشbC**~c! k(l]Y 4lj[Tk_ZįM :Dwu[-שhYgAVܬ_d5FvЋ\ޯ]5+byFζ Y\K9)?/)"(2} zXvR^Z]gʯY.\)q~S] ~CAپx 5]s]@~c%35\.~<ߣ=K [y^w^/Y,rl߳[?K*ʺÿ$_ŒwiT'TXP-RӖ2 k\ ,SD`h1æwY\o@@C}n]-Ja[5RI[F]jQny֝觯^_r+Y yհc,gcccRC;9Wc-?^#Sf [o&U>@Fc0ơuu,Ź 4ê!ɣe񈊥4ּY+ɚzYc7yq{?x?EѶZO6oX# V+e(nbK-|g} \5(^{='Df@tahñ?ŴB1Gtx9Ɨ>qB\lGaAb4>&/|LmOzļxOFt2͵8=F=jhmkX0b-PoU+ED hͫN&ֺiC>\3>M}!ִGlLNrtˉub"ODbEŬ\t!iy1Mq y/ĮFhC1Uϒg/_h,)1g霕ʪp=Zkfe&bWF8 -#9s,=AQ}ʱ9e19ǻ;=qu"ĭqi0Ǜӱm>ѺŦP /0}綘ʴʬ}rQf_7H{9ܤN|UG[oOٛq8p 'y]kE3g'f5$U`P9Cs5;x)еf VTqΪ!)\>ګd.o4hWfY`l2Zm_l:g o爍sNa,a\>Rޅʖd<^4y7B\ ʯȗ(r_r-(o$Ajp%盗OKvuJ;&?ʓ_%rRIi5p6fTEM}I!_`_ۅv.nֺY+巶l+Q_m~i{.][?[Wz;@[צoooo/.|Ø o*/ZnKd5c\I0RD.G kQ/Cl$Ψe=B!P uvZe=FG^'ϡ$#yg@l yQ 3kyb]cx&7F;6Iyyl^;p; mq"C!C).5REZ-P)P#CBY?f}yYu2sfgs^}r?<%Smn 1ry/Z~خ:nq(aUr'xyX\_).y[ۦaIKg)ekYʗMaLO36N(ZӸq:^ȯ3wyP4-b+b;b%=уx9.A8 ~mh>1&ӢK]@<0^L:]J|m1t؍\^s+b{c4+zQ!ĀQŞcђTϱ.'_EqTN!/sb;h7-0Rgmny3>#敃^`95KOG;zۗ?/n$z5v*$ݍ1Xև֡,Ŏ)|NyޚSoy:W+B.31fN[C o` Ơ.vp.6g0Z])x#-yl=OXMp9xztOF'P\XXƱE8bvs׊wY@⍢}8<֍Iğ]1="xccDKzXˍ3\%1NDlD<5Źƙ!X=SofIݱ롃JmQѢ&*nV]l.6M*hy L抺Ua2oio"1@7w 6tifŶ+WZ +b,cncrA~߽`" r30f=9>Q?84XG6޲R1\/],S68' I+loxX?/pygl?"op+ bŢ,/-Ǧ^q:Ww acI|Wl8hV:%7לQp7Mܦ'hꜝ GiF~;E\!DleRY|DF;m-+=(M =5CXPV5Ewync7?"o0nd+Z"=c zd:jcDKѪ7RZjD4zR磃.Ħ9E 3/N28,FWFO2Ϙ 3gfh.qaZL쭝ICd/ow%ťDWz?f϶;bGS$v36V", {׺x#VAL /qd~Vv|@yM7sr ;toa؟;T#xGD*'%?sRv$s7n`+Ƀ}sw%serxmw|6SiO1.9ܷ~O~}w#_.\d.X_~}B`_o%KT_ iۊ\H-oz),P,w_խ  BUm`{nMiV=LaD?t%>*DbgbP:.#~mTrI78s voMxOS,8Au/4>,x4xx8Vx*R (}}QL"E<9>Oᙘwqp:>csI\d/[Yz bM{ [U>Bۅu `Jɧɯ*TC}5Cb5𚯕x|(G8?͉:3'St7 1}ͪ !֬c_;[?{: DZX?-omҿ("`Qod@lgnO18_u]sx .tY,?x1ogyoqby7c_L#B݀܏¦v=p+]KC /G{V9SPO.˵6S钫?zϯw<:NmN~SD}4A6v[V5iuM\ٖ*SZZ(:hmSц*/Sh+b!5Xb}MdKAku3՜v0-T7m6ײT7t2,f:iV IϚ6Kʀܖ &oK#R{?jR>ǔ]𦦼]tfy.f'响ǙӨ{K1GsZ'~5ng[thLіMk+醶}gOGk=۪W_1J+U5oC68ռwT^غ5O,ոy}QN.\1 qUߔڵcf ?1PnR{r+Eąy\9+qt>Yr*Nae{yH F?i{Aނ(j)W?u} ɝrp"W\c~֍a`"qd->Jez]O̢XhOэbaD*3qԋW_LtZrR8hOK1ƜBx:]:r|ޜCqvίɓ](<ZKv(?-Ǔ1Gg/ˎ,yM~Ȟ_mO y#9rGrYȿK'7)'2!Wɥ/˯`a~L1 j9uZ]֕Xnտ QKYZ7 okI_lo_?? qqf%|}C5zl_|/5~nPlYKCCU* Ϳ< h^KWRjeM| {кmut]=}_+@c5ZJ8=6ClDB#s`"˒^Ηku͠؄iOi)ލ947^DH118x!ŨbL,KVqb)>)71CU #Fyţx1MĨ1N°x"6'[vɱek a} b9dG-F7|#Q4-T16ؗ9H<-zc(;ȋll6#b>r`r2gdK,h?ȹ9òWM_R=SOr}vj qwU;OyLլ^+pzT sz{6WlKU0ܾp\=YQo!CGn&wu;pA$Nwb>L#Ênxܢy?rL^& \K~]!_Vp蛃̥ړR16N'ژo˙cM:qHO3gS;<ŌN޽cw>1aҳSi,lj+R~Cf;c&xcbk'eU9X ]{})B\Sw?VK_>(xjJL[ ~\WF&76+1x  ei>s]rsnMGQtOٍ87W(%vC,HO/,aܾlp[bzUDkŬ8V'#|J\`[)1ΎU)9!'"$S\D xbDtmviA Īqӵ_i?<p/ѭqKn,W\Ѿ(i_|FJ\{(*&4(.~LKbiёx1ĘkcB|/"*~A|e8(6&~{ "ֵ,!G7G_UԕzԕV߫/QLщ5Q:*X|cM{x+](.;fx9{y=B=s39<49trXȾ9??%y93PN2?%卐KK粐+ew6.-ChK֮EE'~kgÛ`#";J삨D:W{8qɿ97g^p{r<wW=SOG(wf=-V$/UL5̣8k.%FmlI9Zp;MwΟ#s}ɭȥG7NSd4N%Wu &&4#11(S#~h% )6=}U͎vD[b1ڠz>V#3gaqj`;nرrI+ji1D~WO+JsѢ7Zsۙ@ if69|\,euLz4 ⢸[ \|]ؕ|)]s}}1$(v5*&o40e+%DqDEH_[Ƥ||nI4ߺ%SYLX+]7lqbՠAS+!'FEeiL8-ޅ|"⯵cyXM}g:2$VMV7&vĈ],KLk؏Xc!q}gR|Lt&،GyM,CCc#?w#>/gƄeE.[^/oB#qQqq#׊4f֗ G4Z_RcRţ),މ)qB<_GbwމN̊1Cgb؆K_JF~jV>ڐ%JonU[tԡwP.+TOfqYy|al5{Iz wz8-ȿ'sG6d( ˮٖ,G;er^}(8V/P^PA!dY^~Wdr?% !*ls޺?X;^s~)o&\M=[Ϯ#6knybAtS!cW3u cV|-[܍cE(W"`Qo GcZKv I=U׺?E^vN.@pzϕ數y -Uع_a=b~"ߤ|M ֩MDi!0v6uΙ 7}@fG>Nn /7^wy ר%E]f`s{`/z]Qhh]?_ Wy]JG26kLWU~S}(jv %;jMۢj /}tFh1 6XkzbCٱ:ZWc"&~}%'^uU03.퉁񸫈A>D_&u#=4zURbm)QlEіYR4(.Uk>\~-r2uPW ͮn,+i|ؼDbbϊ#)->[(zQ|gFwQq[L!%;Ae\2F37+ vVV1Xn`֕A =t+֝F;StϨ+j3191okxjǼ9Q಼5o GņybEnd+ks\4tʻs\G/PYޜGQ?e9(/R]3([e .ەl~0a+ sߜ0l^%+Vr8M1L_L֗O̍ :Ss &.5L29xnssz߭$I,"րOq|NyՕ="Y:Ϲ8ִg8ʃ(Er UB.ktnANfOR<C^kY)!vԡL,e (L > ke8mv vO RbogG-"::z]۩*Ӫa|4Hm쫉aĀ|+?@ ȋ<|&V9s?TOkcg MPM\4oSSYl7Ύ+:9qro/^.0i"DX 7QjPV̉Լyx򍪥 SqtW$n]gٝ8>oM(u<)pE9@v/.?UyS9AyI9 g ~jSvDs&PΤܞ_ٌ9V5_nȍGn@.@n܎W5 &fTuvZ93E%ja9lj6,FWG9ZA\u}or.UDB5mEE(of ׹?Id Q,Dcv巶o=MgkDFp[j R4#gE,Te,8Nrm@/k],7fzսP̼WϹZF[ձ&l- M[禺 [B4~smoVk=~ב襏.ti뉥 X)kXf-Kclb,gN\Ot5tbs}Ygښ5zcqQH s88nW?NV+VQmMDP-7[XHq%L.4%>%fST_A|t붣a?yP] YUe QXU1C1cŧWgi|QQ*^.[\R]<BQ\_GMbb<^x!%&{x=w~trqllib?2XU-V{Ţ:o:j%Z봐Z̳`:ŷ+SL7j/s\~c8w𼷼V?Sy7y\ r<.!gfk9#?|$ȽʿO(g厔(),?麲k9U8M-em(jz- /!V͉-f/85qDx4w)~X[[accZFm}ۻE(뱈XWw'8'rr_Pq57TjM6BUyl(+VykMl#NG{ĚybŮܪ#xk[wƊ"%gON9і[3Y@~R ûqVWpמl~){[?{k3׹j2r\=k:d\6qfndeoq:^5\=WMu)/6DXN[GXŜ0bt04˰M?<C^vZ6$ֶTʀWBπ]*ZZ X"0G%}Z:Szh"63Dbd+ɗ{16ьuv=h-U$㹿|Cq{">4y x+;eg|A˔sӳ(c mЫbOto[Xc>mȇ+Wz4rmrُQ_9x";f4DKӈj=uZU)넁)R74iUwj]~fiJ~mNs=Os0Wst[WfϭytvD'sƴfu#W5۲PBu&uu3E D׈jFΥas%ro-W=O*Lߩ'W~7?ԯ_95A,T ѦjI[E'YcnS.0Rh,oYxstRM FݳߢoU ~ ouŶu zEU=U}坩?Vk9 m9b*GbYĶGA,qRnG#$tQD Dl8Dq b j^nD,Gq џ(+EE%чJ4'SU+s🎹;2o$Gr 9wkݹnکf=D _K͊׋&xxriŔ6/Q {5s XhCcc,ŕu򘻈c|KǓؙ8鱣5G,GoK`;!XX_=vS=*%ӂJw=_ZOqV@k1=m S}rznKdr\~/9\;c?(M(G^oci:SiN4B(7*4rbP~UeZ~Ϯ:p+~Ƈog6b䖹ynN\&(X$_x&NcDwwGM"(kTw@[a5v }Q,F,"UWjSZ<ط3ӧ&7<=Gev-Obm2YOOX9ռQGͼgy]ץͲ Eˍ)~mjNG=&VKʶhi2qiLyQNr\96)௳VXAN<^X[mͶ˻>{v9nw6:+#wU`YCtL+腵ceeȧ1M%Ō 4%M83J,c)h)0_c'0WٳfEN5+guάMZB:w@gVչo WBtrΨ*ܚWKGkU@Pf 877rtrDz}- [ԹcM mRC#<]%cNlsX<sJ+UK˚Ț(72vKEedjUKoh_I.6FWݴEX\':bPӟ*N%M|~Ge7ZĚCM_'ph,O ".c]bb +ƶ^B|`k5hYW&ȠW!ĒD3DbSbY~DO9+lX94~)םv\sw<ߵi4Nbb?h4+&QqG1FcHEӐ˦g)[7YM4rd9455}Ay}> ݼkM )1Wfn[Jn32˝ru }R^X x Aq)&Ŗh@PU-d=S9BwvF(>X -oms`1>Qu6YOhrp PmX \+MֲƸ<W̃Q8#g;݃c<與[>IQ>s׊ yC5גs||$͒1T>ZOVk=#a]7=sÁl=Oa4ȡ-̕s\;bd4#G7&EbX[]b(qtN[:Fd2VLb80+ ϔs+=(7rD?Uʮx,({<ݫ]ի;W/H._?*y=NƀXX0 7םl{Cj뒗jkO?5BGI4ʧxI (SL3c56d274Lafk3* 3'D[9T=DYUkfhI+~3 3+B*g M3e\ݥ9QInfg|5TΪ:RY5`k>KlEtbN] yBS^r2"jÂ1U%ѲvMP4-jZ F+u I ZCwrhb9AdMC0X袣UebM5?+ʚօ8=~a(vrblD4L{Ct|\H n!nv`\F"*w!āį)'5("#/6{_/Ɠ~҈g=o{>bZO@gP,S, ˊWhTd"/1qx}; q]q-{C{b?+zD#g($Fmk9ő%nuqlsvN ] vC J{tֱw^X_`Y7}NU*'8|}_xU~׼{=Q乎uF0LM߂JK|#'ysugyk{͔KwIi4,/Wrt[ӡMpDӶUrM-X9\1w uM7uo.&!s1ybD JSppnQ8;w V%6+-AsGָ UT1<*pX~t\^D,Wc(؛'͚W,jC|ρL*kq%=MݸǍagw 7N#Dp_x(os9y<-y ­˖WyTkb|9dKz/&b1?yWN|tiǯ{<y!~>~c)̿: Ȟ84g'\4V+̥(6rqYoPeΉ}‡,qqq3M-?(m P9}|*O1Xr7nڣ﯇{ti 06x;dSnw)7hsr9[(ivE[hs"9ũ^-7 qQ9K\A33lWEąH9Q=N*nu__ :$@oiQߐ-eEf蚧,mL- kL5~jWg~eEy37gIc`/}wkI9hclL2VE 'v7Xj41M۴vZ=VkZMLi4wZ $VMd33#*y}1L}*Z`WkULbsK//ِN䄶{}<|c=_Q@囍bkP)'^*:8PKqPA\Kcc5gV'@WcWhKSoS}(?xx ^ćxŸ#16w6vcAL6~dEdKbsCDwS7,Ei2[`J`\_Eͭʣ`\NzpcC`7=|;܈3r<3ODK/Y895?$OJN!_ay2erTA~O`xq/\MyM#(w(r4O6}4%fgsQqO@dy4]Yn S2Ӕ-)w͇ȳw7W\OX&|R+O\u%6,Iw^?X3W bKKaE(߈ED|5`u:)͇qVm6"3 ގMsޏ؅c))W?SbȼO{ƐWy&^ɫNce4z'Yyˈ^.pʕ-lzgmȫ|TCe1޶%T%t8u__~wJ~75ݶ =h8d_7N4NɕrMhlC'xLOC>_R5+v 6-)61C-bQC@{NnFسmUY#&Cw3l?yjL/S}/籮r54Zpss*w[-kle ,$VH6tyy7ycsOr5#sq7\iT +\8{7RGrs $ù:XL%5?\Xxm$K(oc\uYI' /%ʓnGG0NjވSL4/>! qQsWk4ZIi(ŧ9x|nR-d9ʤk1dS0׵r`B3S1:a3bL6}OU@X]%Uk-JO=%|E-ͯ/f ٬o^uE-oQW[~+AXkv/~Zߦ]۠Ktq.:n -NWLlmk1\r᭝Nσx -&(.LhiX|]⍸b.x0^[\Q/*x%5)n|bxW1 %gcbT7yӝG!^A]c?(|*Ww)O//(&ܞ)+)7l*GԲ|iMw(njMt>c]Zsk?ly:Ϯy hphP !M=?#7yTyAn; HY '`S-܉5SD/Ɗ7VGb_XkAjeE5 o,EߍET|=uxG5X%hZ<^rAx7.v5hؘQn\Jo\r ;b8y>rrLޘϓ+99KE X8=~׺p5=va9_+ɍrHc둗H]h ).ny|'6(,G+ŲĖjĺJtYL'fVv0llž/O#hw$fְ>嬊 ,onNQMZ}h_jB t1Vfnoaޱ'L K5c+V46}Q\ob[y4{bq|#%R^˗s|Q\c\O+.izB!jy,^h8U}a=kƜ.gu)v)JZ*O 2!7'>0+x'w!;ʟK wD yG#)ϋ]ʖ4/ ~8,SI}\uo]:>UH=țX?bX<6!ֶt>ES5gu s,bH,{>&Y{ԮM^ S<9sh/{|x#wsZ~CMq4q/|AV؎18lklM]'ƛD1&&bw_{`rlI9ս׵`*:Ϫ95PX ~M 5: ue?֮T /A0X?o!CN rT^a_G෫}gz[j,ZV~t?W*띆qѧ̊?bAXYKhaC+lh$48?Ѓxďbi[3]qtX+%9q(q::3^ tω9*ýM ݉k@aU/Mf׽(*4b 8[NW6(~DZZ.qs|L10x$Qƽ΍Gu۝DgǶvv~jb-?2 zz[tN5rop ϩ B1{g^н?MqL>MW!YY=w^ivH.}S7rJ5B~RCe4<ܓo9r~9ʏhZ| fh--{pݏN஧M@ӧMBӌiiZ|rr冔=(7y=yQq]rw<u] K "l\HDuLGbF̆S;ΊncR5'xw,E߉EtTQJ;b#s6!ވ ^q+4mWkA\n/CN \\q4yW14"OɏytΏQSzG:]C~?b]_l.N鍫EMG$g]stc sh%oٓb\ׂ;4#)|pŹ !G_]eLeG~u@/>F?ZN9L5iN#iپӗ]?t>-o|𪹹 q 8 C[@yI\\wmxto={/-Vl7Ê?FET06[D'"z`pU,M~w0!hCNc52AVy%gzt"NSjj9Wy9ID|ah}#.1Fx>8(_1/v@88v!4Ա#F/?]$!N13:`B%ُ%Eb>18&^%VP'Ϫ+s*wՀTrq/~#gO}pgbbqhRusZL*&C1 7QlS)։(/o)+((M1xh[NqW1kvJYW)mxrBW|9(_|4O9|SyMyMk](-)-gдgAM+nkNM/ˁ[a'9;-^i~iڥ545/WOF:M/ѴSNer:ܰBG[켑ئٚf-6+Z`y؃?N711~H̉"mc`t$Z+[AfѺˡX1:C_ Ţ"`QE|8g~l0ujhZ4^$Ck Z;P (u[--/)/>q?y]?eA*b܇D7wʟWhe>N yE|؆E/crhtɑP=7-h711'Aᘙŧ,)n5rf<:-T@VѢǪdWT?QP؊f3|X\E-U!f;;C$̗,K?|uVI'Ěx yK>`4G:E3M<_4 GK _fxSL>܇h}A~>&ės_".§Kca1x|ilܦR ܎1ukטPLIfY@1D@Sq@!@.Y *$o^7cU@$$Z@um׶XW[j_EZEJikt]SЦ:] WX&MbZƒXϊz(-ubX66"miKb67ŇDKskA<⡘2k[1Iђ8xXrC[]O! bEa.kX\ɱo91f[޸|:і/>~ͦ E| WT^P#v7|OwǫHۉbs\3+Xlk)dM,CUO'UIzy߷M%J?& ^w|ո32N'|(!/s+"gi8?3_kdrC(6oWr<\2wg$3M?yrJ<%1t̯ 6T;96"P$,&b.R EU"P[ v+iCTաUgXMDߤiMߢ[9 5wR+6覅vD/u@="'Tc֎j6@kjm 5<6zD}1FhcpvH{-,wXvhM Tu?qzM_1UU1.0؜EQܿCMqFM߆#'ZՎθ;ׯ?/w+}ۯ~ #ox'Wyེsx7+5DE_(*QWDq1*\<(FY#Uџx)FR\DsX8$:4ݨ1ą1GD2^"8Ϲ=1x.F;-a[1n"r[lb["CClj?a]Y[$uvXA;:Zh:R*/+oq͛cԐ1 U|*_m$/}j&~eNO{SmG^nUiF>r4f,9+gfk|4%ӹr!*)?| )P/-{Rb)QRv+rVe c,Wu֯o?w'I²nO@<ߢ A*rsʞercʓ˭˷(Pn-/}~dDskr7Wk< 9&-. ֎-cb!+v+#ߛKqpQ@1h E=Q!j Wnuy-{j9?Y4p豨oc6[UAuc!à~xW- ߤ znK/Q[ kysF"Fü8O&gGލh2}s/6W~ SwDS@삍&ܗ%9MO9OCV(%{#ɥ165ay"v2~7, J{ r:ɷSym~BӸgD^h1״| h8+._̷0׫j1;Z|?"_q~I<3/,DZ_o&:$ĀXq~s1f"KVkyYuռxJ[S̯Jc~׀%X.&^AufDoK?LΚkjg?&:jDI: Qk護误^5F-:ыh@'Q?Ԛ[zjod[ޱ-.iUV%!FXhu".nGwbGb} ($gWI," @|[ϯ#ZQXGUɂXƠ?_7?`cwY^_ K\6ēq4T/oB(*&Ap|ox" 1bZ\{R />5(>;FI1xx+S FqIQlwlbhIt"ňxošwOhpc1Û$>v_lGc[o*Cl%lE5iB[-FE6׎5i\kGfԼA9ƚhQĈM(Zxh[lN1 Eb5(W.bPUbjMe=fy-j9?]zƪG2iܬħ8A=P+OkKqE%ύQWU%.fx<3N?|mq>s:"/_^"b\;15^'?ȯ|5ϑT/crfL:G@ɟՓ78\J<2{'Ȥ &_˞+>%Jš٦Heܰ'e_.)V/.*.%_2ŭfq eFI6чXhJcx|Uj`gc} ynkvv%Mbklf=g~K:ZjMGk*Ilg@[M#n,&Z/bjhb?|I^W^-~;k[n\}r0yO4%96/FbN<9*[&e[0 r 'qȍ./El/\ܨ1tU7?&7B556[Uc-^:w_tqkϢAuf٫u(ۓS(&QDL&YOB.!?!PN$V9S1[#"6ZXݠ<:D+r㔘Q§v5/žwȫtg=.-,/ǟS|_uKc1%G.ƺj#2?bMQ5LWSk#?FϹ[|7-XV3 ,sUU_A8*lS5kuG+jz+w 7iK,]{4K'>VJqzY+V@&6Wg5?ZY-şTl#qd}j`lKfW]T7@IlTv">)V~]xUJѽ&ٟT#+UEߪ,?[=1Vu3Ura ^Fg9wQo<O'5E!b] GP<3 Y|?[xbR1!&GbSϊ51$zPw.qeޚp#^58:v>E+IīQD7 ^q*}^V;ߢX;,]-<9ۇ\Srle N#߭#oWӟɞٳ+r+QKn;Ş%Q ل}΁7GGⴜUI>\l+Q+VqjlB 0-v!5<~Gib|Of`z%Zk׶88*>3ymlu ":譧~XI|k@#ha%tLǨv~Oĕg5ױz Zɗqzݪy qխMz#rLF`8X }k|Zm< 꽡!P%~5ljqfgu 1eO rS}fbb|訍uX♋xw. 5qm|N\?q0RjL4)xBL9 SKӫbskKk1XRY޲&O T ]j ͢oi&8X9EG Bg-Wz Վ5jEw*~H[Z(j̎kw-{]po_;=88*7ѺJXb'bMbqԤ݈멎̪*ުc8kYm7:Sx͗yo nz^Y'=SK4* ƐW|_WM4<*P@Ѥk9uuÊX⇨/#'ŵHt1?;cxx ,x-&R׌$!la EccFWfVD*Q4TAK /8`og_;?_3;۝p{V}VVyYҜgx3'BIn)o=rvOK[AޜGR~^XܺlF9VNrYw_Ěћ|jȮm}GT˶ʮx? ?7P>\({P((7\|܆r߼"O7.{QZyxCW]E5om8#^o7c@?NqLJql,UVIqq{eUEXLyr(ʇݠү2*+Be3Qh14>ky'k9i]F˪FފSZ`TW<[bFN\mgM^S>˛]a%p~^'oz^y\Mj(zhMGqbt*Ÿ|L"!GS*Gŝ8QYNpGsrqo?ØڜkgoLXS5m6 K7"5eEd9ۑ⏱&)-:GCsbX7c{-N>99!ލ;Z9Vǚ-v3le'( kkV 詧d| -umk+jl*_WdNML;ZI[= 3ce&[ &&D_3N_r{bo_ĵV8C!aF?PO buZ:9lMׄ\+o7 vl?+Z[ex;(f`#,eX+ߺ{=Qw_{ư g8w-if3׹S^Q;87ǩ%cU<(T XV.dʗ ћ\r4yxU [30JK$W&;ƞqcvu@~Nv%ߪɯ/=H:m Ǒ7qȿ9'Ap 0 :2;\6A 4y4D􄥘U%DDm$Y>FN Ll|_j&U@5#־* wXSGsj{K4EgW_,&wV+:j@#Tdc-pZg|셡āĵX@VsFUKk,n &WeŦj>'+bHum25Y~xy7Z||7/e# bV4[*m!jp1mS85PZ(C|q4.#Ńj$.y(_^1'#c̊>>%%~>bB&bB|Z<'rx#&y /}:x\b]ZY5]f%lc9Zi af5UcaSc63|;x^"r#0y:o2 mOLi|l&ٌ0r|T~Iya~ە] 噔r0@e٧Ne]9rRC9Oq{c YqΏ)7mt̪S]]T:?CW{_R*gSY(סrrynLEٮ\<-*KGM~]ȿ{`7~%.YMpaq8귍!ެҍxXWHx$exRZC'˛>"1xyGLs_w^b7 =UlCss(+Sa60h([ᓃpWOKܾ;YZt-AdⓢEUYblڹFBm]99%w$V݊bűE~EMb@E _gbSn99^#^[#ZU56q@yvV1( A3+h^#iѥJMDNJXU#?` L$x|efVnXSݰjR S^J>gĐ`o3(پВWiX ?aLܖ_cxme8yud=Kv_?r,%+VF?gq2nmQD/88O ,~86,zeGg]7Cq^\OUlg\c:C}em7qN]WWUex=?-M^JNȉ-Lrr1v#Sj"S}D r!V]UAqcrpuNNUS' p"'nUxUO`b1T&&_յ<7k|U31SGLS%f~68E8E,YPv'MUA|KNv:'n/NV=9fZb*9`b[t>_7!zL&v=T}:D;$> S%J.'F{TgMaњJڵnmmQ[-OGNz{~sΰIcYߜ& yGGO~᧖qhC@LPv͢(^őр8=f{wёhm ńMg 83~?E˸x0fĺ1)Q􊟼Kq^|c/`b|fbx'ooƊQxllgbWK?£ ^ͼ u,YӪLXQ{hW[e_fo+oLTcaU94œ2y̻6O1Gٖ,K>hj'8:I6lCr^~GސQyeѼrJ^PC6)/Q?%/Q-Q*.S߬W~kaffۿq﷿s9]k&6٥ȲYUze9/@yd9?ْrreq"v${'Ptv)* Sʛ|fL4c,$_y!60^Ҝe5eDۘE^.N#j&6E|8J:n&iPˠun8] \AwC'S('y1匬i-r^ѕʺ9xꈱ~0!ъ1ajW` -qWuP' p-qNOW;ѓFþ3ar\y 0#;qBt/ mH;؁EgR>S0\;6F^F;F yEhltVyVoКl]UL̫vKÄ*HΟ19 edkf#;{5}F4lE~O7:%o$ Cm,ᯪ ab\u7 KThU;KU`HUI-QU,ì*(K~桡KTݿh o5AGU*JvyO#)/ȱ3KL^@9vQʗCʥrV9,_ʑXt.A9~][5KNSqLlj ~_ԯX.r,%˞CrS5)<ܼJ6Ay4U3,3E;i6\ik=[8@x%ĞDع؝T{GřOSR92.ub*wWV u]snԍip4ԭ3hQ2~Z^g-'/>+w#)J7mYS6?0̸x>:םA91xAQnO9<#fyJJ^1S=^XH^ioxƓ|k~h{bHq(Q^_{#iP+:9L!G%C9J4IbSο꘽:cVsVuu_vjK[S^WT5J6lM1:Rv (fuŗd8$/ mPӢ5fjE0Vò>.$ %D<כfhgXk'/~]m!0zeuZXA/.z4"9S#+buVuV ռ+S5loNC,m´|yZh\ׇ[̡f3|//72dzF6Zya]kA_5_wZ>i-/fkޗɺsu攟dȫrIZM9/})./)l(g{7˹,ʙeR+_+Jh(痟f:VbF^LeJ߷l e g{纔 rrr#S>Hs*yZn뒽cq@x@/zK@lgƕIK\-l+8ؐb6ՋC)8rNKqx_w2ԭ]1TյuB]/Àvo'嵼r`y-B-0yb]Nj/8 7mU~z'UͪJ̸%~!oƭx u|| o=s]vR ý-><>chB0[Dx{PMʮ1&&{ rhqr^C39hLgJՒT%s u4~OI/4>zݵK5"h9G1Kc0]#1M30]+mǴ1|0Kg-0`v C`-qj >q82-O:in#B,Nqfׁ\=Sеؘ8%)"{ %6+ޤ6WM(*,PPޑ;w{ r%ʅn-y\)O/ӰVn _Z@~M gdkZ4si^ԏ%64CV{]ʋݎ]*Vj3mE=_YizlK!.RA8joHwp@m?} Wwq<:y5^䳪ȂЮ֙>^uDI.ygrGUP51Ruv[U%DUra8X_ImmU - ~Op?[} bUչq֩.&>RoP{8I8[߬q|}Ÿ'}θ:/o˅cgO{/2jqvhb~\3Y4͉i70ScXD\'Ī1X%l>tCL!187nFbψ1+!^pO O1Rbx< u[8nclgsze#cW8&&zK|![@ew~3%v裇?f^J3MDcuN I1u)S-odɯ3i&𺗱Q*])^^`:yI a̻s2$ W"/fG\(XO^y},(\C9!(#Pt\B^S~Z闕r4 me]8=#ڭ-hZNWRߡ3˗l&CԿ]QܥܥO9n| ŌEb|ѐbbX1w1Y|l-ȯ'FS/s95lQ;1sG6YU OF_̌ U_XR4Mc DU6P #WbD+$ݢML v.Zxbhc7A ubzKtI^#Z_~z:]U'I;V+Mkv;Vbqmb9fa~S&Ook,;9,?K!^ݞ8χnB<#΋q IF=+w9<7\5;P6K\{rEYyl>(/_^Pȓʝ))+P~S.QUU6^v+@٪][sx4;D)/(AeeʛʖP>Rvu/csrUʥQ֔oyuy_y9)a>M3gʡB6"9}X#o#2v}`+{ ń_Eb{Mqh\KK_|K\UTVYg6 ޕrs#TTʊuBePwU]Qwn)#>-Vky/ _s|VG@5}bF|?↲KيCLb0\wQTN_(HQ9s*}9uriov|w3\{%Xmӳ=e>StĢk)}rE m,)(>80 q(f-q`kEXm6V݈F+y!&_<7jc)#V2Z{-yALlk``kX|ϪzKtRvV-.hhX{hCl]s7N @fXFX:j:fjc19E;s1V{?c8l|]=]+lwb։-ƴk![lm 4C}lJ+H]uMq8/fz䧹r\f_ϲA#F F6ƹ*C(f@M $/f9* lOfܔj>+dkdj5rQ6eK&:g?~{3#jȷrm^r<rirTffڣ1_ncJ'wB7{wHGVz2^i4ysY^sگthm 5{~&e{3惉Oy>Ik3o0o'M8oJoa/>Wyx [kB̉**  fTcbv$sPE1X/Ɨ9AǓQ> F,uGxn'3KqE^S,Xou,:k8JWי:kk5M5EǷgm&&f*&r KcGOC}o9|%JvYp M |<+y'J62)7}NVJorUK^Rf?k(WєQ(#)'&eGQolSNmWtz8*]ѣ~3TX9_g/:%G'W蕗2IOy|ACbRB b<ŀ4!sSq$ASb%(Stω1bQՕrd9*a֕}ʇ!O1YcP~RL(SYY,X/Qt/N!Ū:r q`Z;S\N77M[t zEA4.=10ʯvOy3ki\VVhgɐ䒼7ڳvVKiVQ]VWxvެBZ&^vi mڄfg4kf8Y#hyIeM:胆f5_mc4Pٴ3 6XTGcxսZ,j@P^RX^ȲYr)>Yâ~KZz pE3Ӆ./8kQ?<̙0ӂyfN 2}Y͝cf"0-_^gO3Yʏr&>Şx9GWUl1u`͸ `-fD/:JjTQU5f/c.*&McLvց85RXb 1Rñ_L S4{vocFuV?8&_I6آ6V M\S _OJERZݟY;wUweo1ƅf~yz j<0(,/SU\M*) [V'gE~s A./rD.)";0|MyuysSWʑ-_rWOs ʯeY^]w-j-z}϶:p4FXem~tU\%%^eoD>_O~ygBe>_6%ms:YPvkaenau<("CLAvF8.LbߡU|]bbb+y\ űŌ`bn堢'AoeT uAK-oVP9nQW8cyky?P 5[Ԕ_3 =ZYMc7L15Ps\qqwSYrJGO{Z#}4ge=yW^[|-r7O{ y `[7y`á<[G{ ׮r%wN+ڔ,֤X5(ڕSUܞoPP4).ʳs.r+{ےmb<}bsm%6DT'i͉@4q?G 4*]_;vlCcPOgK?U:c-jV}舦"h PhRAg+jhhj[U)uX݈M\8O`.bO=H;ŵKc8:8'!7q6sEr}tr7N'7rMru{:y;Wuv #!d׼qJMnBh+ud\+X1؊\I܇Kvl8d $G;dGSr|-7ȎU }`j5./TDsPd[&N{ tf}=Y1ô+g5;6μ#_0QJ_Q>C#9H4UmhhNVG~6W}K- k+fLøxxbJ#x^"Ǜ01#r1+މK9ދ{_b{]ؐ#shJ̉N&y+ެޯ/cj6fӨ'1ƽ.!&=JXf"c&ǹq4{JL 뎉~5vԖ8߀2ñW 0S4&y0a7z͔oUL ԀvVeMD#u_%*˰ |s1ÜZt?cbuv?5xbO>mbë>d>L^]sbX6%f,S ;/ɫU욛E_g?1ȡ97'P>oȱ9&ߡwD>Sv#R);3q(?/gRN=˓)G nص{ʾe[^'NWonVCpP`",{v(Cٶ˞sr3v>n^ZIAQ[.,?'r97}Mlk$w6(E|>9^u[~-n!яeX+$Na3C5ϊ)nU OyPy/T*uUMBePwr@f-4sl׭k9g纔}AuD n,CʲWxo\TOPB̆eGőĸ؅rYOǚCo'@GsyUC]r]Z\|޽yfa.sOxf[1mWhR-.X|q4(S3chOlSRlJ6Aa{Exbh^^ 1hF/qg9Vqﱛ~bOm %6bַuɧjnube]:櫪3^KJӨ PkMPhDS%hĖkQkO~Xb|[v<Gw _G3C_"7}ty &.?yTn,pE\sU/."fS 90Enf6?gü\OU᰼3rHK=9( hA-W" k]Kˎv'gTr5':8!/ɓAyH>Hnp瑛m&c]} 7]{6"gj# ?Tm5P> vUIggL,6jCSeYhS}(@Z~[ǥCPߪ)_[}!Zjǽ}%wK#1/iO0zǪA\d>y'㙸$x4ox7w%an'vP\/b+/hJ>~GLUTV—X!#<Sj__Ďq󈻉OcD\F]Bx+j$Fѱw]ck-p=,^Db>nE}G) sFE>~z:rMbĦؽͯ5ⷙX`oyUcv{MRops8}Ljwi^̧Xc}IDޒ}$9i<\d ېMDi&S9&ǐ_anI>Q>_J$lʽc|aq9<=r5X^\~ vk2?_} ؛rZ9*Or](ܼםsecnAy}.\܂r|(!w 5b. r%ʞ1oLnl &G,HՍ슾qLK(:'V ㊝bPVʢqDѤ؅bb+wewUv[PU9*ʶuCU^ W7ykyov>hrz<B,nXV Q< W!_9بv hO *AdN\Ӵ%cys^ǽEH&bDl[<}ҫe}o/71C,ou㓼|=/{ bRP\A,&/Q7A9<_ZPQmvt{q]&}/ xflQ\Yz$EA䡱K삽<–b@c5k^V#zV>D~%J4GFhTҶV;R4hŶH%G#ϵ붎CO (?@1º񴷱}Kgs {MԆ{]| |g\>ũwvͱy_ٔ\;2ܐ<8ٕGlU~Ǽ-SCrۼUf{䳙N\\ju)/'vvÞzdrm[{nƐ(o#Ouqv^OqGq;N^y7{4?!x(_2 OzXC?|䳚j`ĀIY?N~UB"~# дF(k.k7"XdV85[*ݽcX*t!s/pZ.v&ΖV\U8-֎5p' x0ƺa8X)<m`bC0ڹ^t!^sB ]o8Sgcg(#)t1mO9||FNϩ;E.*9,)#ʣ(g:8K 労Yv?+wN6߲)Lboò c*v\qb@! ]CqmbiK -EJPh.E{p$9k$sz9}d2Wv^k|e @Vkerg.rh(+/Ooy(!ڔr@îgnGvsGkr Zi=Ҹ8?؀]sD8؃88x8xKqEѿ1؈bJuvǕuZe(T~*mv|/Z-kgי6SAh@@рݹ>?)N0]; SP3>)uo8<.)N "C'N/?$oȇ^#sv+ߺy=gxO!9Zxdܓx#11?!Uĸbb_<(O#߈9&r~yٴeoPLEoؙ =㾷Yr'T+J?ˋQt/( k5v.΂|%vc؟}(.H3:DD؎ɷ;gq{|c8WK':ZRlb?cW>'/ȓln8bsX?cC֏XG7k5uC'vZhi )ib:XnBl?q[q>a1*zvZ38=ׁ7qe '|kŝÍqT.G˴qi%y;'J.kա=yޫ~*[^y61d]6[?!n %E<_A~&L'u.Ïr#-%>̱y9,.ZF..UbdB_ 6|||݇8:&_5Xǩ†ȱo1?LY`-R+,SuZ暠֚cuI;@X]XO_=0zƦNV6.v o wvMv-q-~ -KM,w0M=cvl}(@⯞5qcܧ c7"DvO8cĴ}Є)ψ' !q[O?+Q1dNq8k+Ƿ"x3ypƑ$>vAl`'E̶8BBl/<ZZ1oGkV}Z9R?A'b-u@Wkh:TO-k~Ӛ_}Na%n16yfY~~5Q,Guy|i'Xl1?w;8$_sy`ޕ8<&+y/r\|0XC,g9M|'K>R {cm?(協ʃ(GwΔrgߥ\{M4}wOѢٯjtuáʩT(ەrxܓg?SnkQdaʣs|Mޑ999=AvdG/Z7Oy襥50NFqj\D7G?$Ɩb8$,.Qqe8PFXcqE%Pٯ8_UFC_F}aϠA,}]?04 WɀT~UþPz]P(G/U< 1 ⎺jը{W qW委g+91c(+cL^]yoH)F|~"c}Jl7yhA>㳼!>RK^kl̦ؽ,_P92^wсbG1*Ϗy^q(f]P|Q>zW6>? w?Ǽr{qfOI|yׇ~J9Ţ↢Ťغbh*8"m ]nml;G؊غ*[GDh1$fLtRbX;~J7FbKN!z] ŦG=`wiv6%dc`Out z;:3~KʹFcJ4v ĦYuט`2{kq{/x$`}F9z42|F7ߢr>qEt!1&ېK|k#ڐC|c9u:#SnU;䧸a$9/ol uې/A\jc6x)Z̭~rP]l.1ǻlɥOjhM>mk`?#c9:?޵|Twjۏ-[f8V99y UV +5"WE֢ۥKS-Hcm02֎2D3KuA3 @3mLՇxP3wk=k% pP!Nps,6+0:çDa +}%1 :=(Bhz_! qqc(a~`b9xT`QOw_ĉg}Sh̊Dg9mcw13ݵ0B-ٸڨ'z QuZ^NDk^Q_׹^o m¶Zkn25GU~J RZ[hf,UO7ׯ}K #|%y QX|%U>fld5'd0^&pr<,"g-7&_-5LI79]rD*gsM~c-ʧ\N(.(7ϹcdrdB=/(Ϣ܃ry1S R=ܘ{>sYv;iz\LfYqWݮPN*rnX6B~e>J̅ك]"W}S]lFIEqY1'+_q.şchK.6-6%WD؊X*!$D]DK^EL2'֏_sľy{!ΎkFuq`uFA/{Fثu`eNlm#aSL^}c=UzZXSb mmں&hki 1H;0Gwi-=1a0o 0$|j x>e,6G_}Elɗt3m ʹįc|*_ӑxB'؉|>Gs<6AGm7pl.W;{UO/[v/WXB6Y3v]v&7 >ys'dG#o܏qW6N!G*0;_!\%Gv8|,h}C4xT|;1dt1)b01̷Pu?breb A4Ȉ5'vZ5~a zX;`=똃 YD뛁n5 1m1b-bCL|1xV>\4W '1Փ/j=bkN2`CJd qA.xǙ&_v`oxGzԉXۚgBlβ^~6g[uV]5v%O=9K xn1襛5XC[t9k%|["-k Q+giZz_W_YIJ7w2h\_(S; Ǡ+l>IjaG2'3Su;} 9 yy/h7+~B~_g[u&w N>k.PAOWrO߰?rne]y-tS_GRΎ噔;dS<܂r-B !E:.9\[ r|96~iybn[xM]Awĉ1'+Y[g !~Z?!ljŕ'7 O'QE5AeoLEFAe4Pѻo]W7U4 hi߭r5/ӋPbbi?|m]>VquZH~]>TA\SN(މ -y?%O3"W16ƒ;bIܑ2 ]|JZLeo7R|^\ 3T*P*Nu;~ܽθ_Jrә||aQc'=Sؐyc#Ō|KlT@MlS\SlQMqQl5A`ZB`xDщX/Ec.!kF̈}c >i1 sF\hH\GllI9J[Ko$b7nKc( b]``;W v]d3:j#Z m. T4A;TZj:iJ.K{UfQ$&n4%ŷ9t1TdrB<Oj1(67P6z^6΅b|9GX[o9-}lCF~fX+^.(. 3޻X mu'puȷ-10S1;_ `oG/{Tp{>5a}?5ɵug3M8jEN#XV+Q(vQsYGX V^p{|S9&,2bɿ&)oyF@No$_Z2r!9:)J"ȹhoS^\_SU.-잣&rIX򇔳ܙ|yS yHف >w_H^#I ·=N@<|ރz+䡼rv~mbD%y"lQ^GRUΏ)8byFq5P,Ų/Vاwm,=[cđ#*W[}YoJGFŖ+)&GoˉAq}FL_ĺ.ؤ@q-)c^Ct1DCFGbA̴)-Ώm8|0!.18~OfBMڲ8B;ˉZR]lI0`0`#uwSu{Oք%Zh%Dc͈Ԣ5'ZjWWүXf[*#bZrD3TzOǘgN`Xθx6&'?ʷ訇TÈ]sX'a]}lfFb89{9x)߳6oFn_]Ǘsr~xC _#t'u]6 >/}Ot0e1ơ`fb5b6JsXn$[#z5F3 5 KU UV kTimy1nRkwh)6J ִ tu5 / 뚇7XwBscp5z666 69 f6 Ŧ6Xo@6M5CceZmhOIL7ZңQvЫ& 7wwD}D~Ct]oUͨooVs՜/=[Iѯ Eߋd3LxM׾[I+>!A wϒwFclu6wo<#yBE_^A9| ])cĶt1b^q*AqdўR9*{ՑUʙPlh JFCg=NkFl2<@ۭ4J4 hQ}wU`+*pAŗOF;h ݋/{2v[>=Q)) ؃rAy VlW6<'nČGy] f}*̍s|9q%9"#"; s5#Eȫox;^WI73bv|OOoc()1c9%oS|x⻚ 0e=Y 6lPק[]@{aVɥkR*=)?+c,AIUbIt(O-*~Il˧)NNQџ5AWT 1(GS16M#c:B`m12ƖDyOl䟉K VeYA2}CSGa^Q>bklӉM 4kzz>#z.zX9JԺ;Zk5UM5Ӕhdjzꦕ5TX`Y~O(fVIjw>ɜI%&f&&dz`H~Mwa= &ίS8vXa~M-Gױ%q|sX`[kݟeVI׈+j'9:5GW?C7|OF< JfBG-yl78˙y4%ina-rgOeM>F9%gK9c3sT/)oq9<1?/)/ʧ;//r/G|yU 'w'e;97hGNmzGiԸP~W0 -5߶gPWrsS}e~@ylr9yA@ʝŵƔbw*m(ۑbWPUŧ5~V#*B7u}^.&AbJD64 X @? 8~ˢכܿџμPY\ ńA݁((ZUu7/:zW>[,Eb,m1|)/-CeShϹu=MW|>{h_Do@f}myWykK|[3i|DbvGgL\y]O(˩q P|Y(FbRy9ܢ9'!^/x=}AX:Ŕ/:qqAq^yK#ũ#ˈuKq/JsbhKRh]ba4'ˈJ,FFSoK|G;b8v\w qKEV_-ȑZYLWBa]h(6l[akCly>[j`'8Ŭ@\S-Tfrct^KN+,BbT媄f!ŪfaG7m>,1&L6]<03$3$'ze,1Z#Sɯ5u5Cՙo4ym·Rp''TJԾfZC5z]]66{=̉K]l+˰زZ%u+KPяª$@5R-k9UQm昮0/@6S?vj͚@Ib瞺jm)z.qXnjO[%XL5wbh.=׈d^ĚHZsuj{?jy+|GZw;:R+buǾԈ}}4ZlJR{ j|cyz?6_u~N?Nr({+_E|UݟiOu.ՖO͸|?wzqsrEbk|aܗ,s\AJ~E6#}rnٔlɗ.s򊜛򻼏QD]pJ)IY9<< r (fsxܒ39cV*S6w+Nm.,(=P-7ћoN./&+[GeyI6 (~4'fLrr]JގmzXM_mSӊIDAT?'35NE;!O~q1,.+%v++QWC10~B1*7CqLl\] l 5~&΁JFC¥7hЀ oX}YV2l’OwEPӺ7!P>_,Ogbr| b+K  䣱ny6yB9*nfǺ$~iwz|V&D>!t4(b(P}s/N7hFsoO[7]4W)Ƈ1 ތwyz'{ ޽^2}~燿WN+])*+RU^'R̊q6Eۨ'Cʙ1bH/bbKX3R'Gbh,VD?%֍11K1^7GuKؒ-y]K֊ W͍SCc[`c tE;؀gkې;pCb3lnaH!I uZ%[I{kg[VVk5֚fj]K,ªd82UDuaUlHs,P%Uyf\Lgr.Eڱe03FY;oV#h-5 0Sc 0Z~bbU"~Ŗ֜j4}e[Ej\_kZ jTѿ M5 5dcK-ׯyNulIJKtԤ l˴A'k ڢm-$==QﴧǢ=)Ԣc$I{ǫ W.Võ ڮ$2V5BR96{s_O𣖸e+V{ bKjw51ׂZdtk[EfL5ߚl.7!9 }oJZyۘoDFvWaEo gטkFEJ'?O<\gԈyDulb yRN4$'O|ɟ猜@ޔߔR^Q6ZG93.o0$,o-?Q/͜-ʵ߰eT^K;^-64Cٮ/;neB.sސQ[N)OyB&oiy,9 L윍Y98{-r܊<)tyy.ͽ>zw,:녦v1q6ocq0<΍UĒ^I/Ngb ťW9f E?ŮPW]*GBdlPňZ}]m8vԗ$_R#4 GЀ/ [ԏ y)GQy WELQP(.B-_uYē/!ZoėyKHqZ"ygySF>oEsrh|C/AhFywS|0_O~y!Ք&Q]%n'fc<1wcu,īѺMyu+7hCb^̤8b|qLzS|TUKh4o`I[n٩>uśaGK~& {O=ޫr3ZR*ؤ-GNĿ؄gC>.g?##%΋}vVpímP14wCg %6qla64[ lWEzzknBT#ҝU5TW{[M hJZ<7W%VMZUFz)wb5NhթXXJVN:.3"ɪ0vX V-x2XY–5?f>֖Ԝ*A,kD?jDQoR#E7};c=*b[be6ɀF?jǺZR`f`a-1FWh]K2aGڬ{PЮo_Q=WshUV}#_OQ|~#l^Vw%מj4Rw jd} sT*V:SU$p9^ֺ#}?~9B ͯO`љt<`kpNjg=ojڈr+V/~[[7FgɯO64\cٯio|+|+'='&2~ ӡ>3ߙM";}77<ϭ;rP)h<ڈ|/QB\@~cs-ɶ d?ڥ^wpQ;޴ >ޤVgW \[(iPnV^ 'r| ,#9lM-7(+rYm4SfAf'6q.syy,=B8[ob;a8,N#pK L^q]\HlR\{Q{;gSŀHLNt^"ވ@||x$_wAW>bEAqp)bŎQoybHay{t'Y YPGCw|~o{pw{uxzƛ<ё|И/%Gm7.ϦElLl;Q.(!Ć+E P]bCbhcXbP^1(6 эhi`ՒYo˘/jb@$1* ؜X#+!8=EIA^!q PV>ڡbMmD7ĦA-9^l KE="zbڶ:늮:N!TrwPrjԠJ:rв&4TsUbL6Qu5BKB)J+W u/xY;zVz_ƁW?o/L?/*)p:]0/\}`X=azA'y꿎UeV{zafv_bY#ν9\7S-?ѴYuǚh&2`[u(smMf0INrrTm1FܧʾPkWy mY+gryCo6 e;7#g|\/fw1[&y-_wY3e{} Gm%hVs[Ia (NĢ86N%.řĺ،n/aŝǙC(mTZy *T*P]*T&7:m^ rő94Q#bJt#š_ 3CښRԻS{X>GhrG:eܵv^nmzc<FMjнA5$XCjg -V 5p4TnJD[%TՎUڸVIM@'cBAJ*nj/VZq?/Qq}wUW]|Y# ]T*wN .\DYU7ׂԹKmf`RȩV׷돭n1&Vuޱ_|2?O5|5U}'Mfd#F>$|?WA^ak`ҏW I.#ɦ!713_8$?mNU>JϷsW<:;R~ݲ9*trD6ʯrN~Gw{UJb~_oʫA|,qC.yyJ9lrpFx-=նP7Bٺ8sPAySy啐GFPnS|rlV>C,"\|:}+ےM?6w̭q9,3p}FkeLsm:}M10_I/czlӣ%.:V۱SD􎓊݊(~R -n! ׋YEtPlVY3*[@xeW*7z8b߀? h yC.YTnb̊ZqLڞ_~W W|~ˇc=Mg*ʭkĴr˛b~^7X'W|&l{j_(\ ;ZOQ^h.qO7P;Q|T-%6"GK1 E7bӨ+Ec%DcQD؈XDSE]{ƽ15"*KnhA+⯱~ GptHlꈁEq qrumX^Sˉt#X2[NlD Anf3[-!or¾ֲ6z%$A9ceEYGktA6TGZ ͭ M5TܰpDUO@f++++GkBCjUBCX 3? j?D,j`Ut>P^v^:v^_WO䗯$D~y#az~s_Ok\ovq9[ub=_}&L2߬tOs*|_A9ڡOjR]kYM.%_7Lc m(Yqg혘wX\PǫF@+}QyYrqG_;\LvSrQ^T?rI̵ie&Mȏ_rjN|:ǖ99#?#? .|(S^#ʇ1<_{d((B)=$Nq`#eۮUbfL4rQ~n8ONX YmG>yR4CqɦQ0rn<_Qޙ[g#ܴBٟk6#g@=J̍n_nLqJ& ?fE9XhGCDjmeW #G^?8`͉v6&FĎq V[\MP؞R"6,.1P][״8 +b\V*fG4Q9:A oho@AЀ40/U!:2ZЦ0iJumuAq_WPӺ%Pu]x^!ǜkO ?ʛ#+m]((oY{yc,_-o€|,•z-s?\k9|wW=I^[c=x /c!9KސUq#yW іO'D_?(fD/3y̢<**Ƹ |%vYl8GS>?7v>`z쀉={^G,յ޿|4c?)֛s)bÊ<&֤83֍D].oUG}My"7DwKA1'y ֈub,X?9jlALvq{#ǿq?iqEĝlhF\;Y d{_^[9j\[~m2<2z*_m_o}혋~~j4ڞ_͟oj+#YO6CxsJ>?͌ͯ%D:,HccmՈ&x|Ϳ/_w?Nɛ=`|ޫJ@(4ss^G _oEJe>"5.IϷfړg|sWrv!نs9IE~K6BN[9>!o/W(#sogE55)rGrTv]ɍAs=A<<\BnEr?r*9?LG B;j}{lwbby`͈ۘ:%ގ({Uطm Q1X4fSlP|YFP,#Pl^y*'W6bNPQ ھO?q'Ҁ4*4ݨ]תJej4:ZvF9#W]D;+C5gٺ@y^yu]ScnqzѣؒrrWƘC~7W䈼 |y^ͭp\k1y 1FzX#Yy70'4&NüCVx:se5)wcV&G%>ē1#71#]bI,$D;Ӊ0 chBLX6Ό-0׃E[110íx(,F[>x76{K[mnoKHb Y+?qɱ70hI#Wu1Za.:#*ho]?]X]-AZz#Awt]踲vV <[5QZuj;}+UᠥU kZW/|_0PT% jBHTF}Ā՝re%;KW/]?'kN}}B y+g|o-ުџ330Ōڬ 9$t:Y_78753-ȷb&طx4#u>˗ݍ<)nOcOBc֙y;,xfړ-#2'\?4i9"oB|adcG$w&=r#~Yl2rYoY3]\ȯŜC9&$crZ r|yI~qE~o4W^i?͞Swhl3<%$Oɧ&Ю,_ Cٯ 92_l5rP9'? %|,́\3 r }s r}ɖ77'{6 SDnw8ڵ@ޤU[mu3q0@3um7Lb}3c8(⌸ ;ǤhBtV ~G]~ů)xqi̥TK] bne?((.bB( O)P]Wi~Z<k/gG 4 4 h@o/X[ŕj^u9P^7 n.I랄j~ly>7iG/PޜW///$?ͻN +1I|\cɇ= y>=|=X#|y0:y0G7\dv#8bC\(&- $ޏ2>1X/GŰ\/fSE zƄN41،xLb_C836;BqYl vf6- xgsԑxQK/ƀX<2zBJ=*Fс'Z}jQFGbQ Ǭ8GLYX6g1 ;>Scb;vfڞU[l֚ŦVZ -ОXvZ`Wk}-9Ш&uttAՒkh=~} j,h' PP/ '  Z2RKt[=GJ'Y|;ѩ_Ub_걗9fcz͹^_QsԢe-T0+0Q3uR+KQYxCv<{K>2dOy| {?&{zChᴼ 3oe;6ӎ|"oV[)䯳 ~dZHy yAN_[yp&﷏5.S@\;'E6w(st!ܬrd.#F9|Js~!ykNIQ~].G w:~ wdq Ͷmz+Byt<3|P>{B^jA.;=sj~B'nΦ|;)SOv$Cn&d}܌y#rlRnj~E.Ξd?WHYh3J]bg`g96q~IDYJ-?.0G⁜o-/ĭF)x_݇qTދG} |_Au?*yWr('M,#~b=@|gAīyuD|=bR/%M_W1:&Rcc^'ŲyUL< }cG7EE(N -&?m52ft5۵NE #?p #iscw3/'be;/OA=GG-1hk[D]t 6тb@̊ ֪~_71hDcα ~}@L3ė14nіxޭYf:']GP]Cmd?(Z/ GF_b} 4=v'1 {?.mMmA 7& 2Ya6 zն裨vh'zie֪ tBck]IH{ͰL;5% ׄfcԄF5aæ$h\[W _ o:/j3Ys/9 j,5,sc SUaVr(LNjWYh5|cm~M=|SU"1ȗ#[^|ݩdO/z8edm ']KZx\CbJ>Gyz'0$gen~Gٗ.Z#3Xt&̜|,stMYXrjNVdslsɗrE90pg̉$'|oP<À{6WaqV7!#h6OyiN.,?|cs_(/O *GA>^{|oSrv#Ɏ9Mt.#Ǔ99&Prz5ɮ5G %ܑ v~lr˼%\j1:71u;mR#<^hl;[aqqp4hkgx ǤhG 5hر8?İGĶŕ1b (~Zbje(fV@k8* ŕxnR:eGx-gW_h@44zCpճkba1sQu{nP>(fCy[Db=(/CqQz>_^Ⱥܪ6^"G b'IёU>Q/?%[s *z OjW5|mx۞'1XKDϼGoθ 4K|S| ՘OD>H|9b~<_;%1g&Q^bnL/ 6ьe|)eэx[x0:xh ~ݠ8 qb -mM;UC0ʼn Z)Q۽y]x*I kRw],ĠqztX+&GwbVJ|?&x="֌Q>ƤG-,6>&ΉuL"^vs܃bhCuqa|Htt8;.$\,d[.(Nƙ 4mO+bc=w lC 3mb(6!ņX& ȳ1(Z[G?}֎W-s= Y :VMʭ:DGF:Զ'ڮEzR`de"~z__W_՞B5>?̜INǛdZu?yLIÏz_7,w$gX25ߌ&#:L׾vvw<߳{t{,.IN_GIEe?;ɹ|SLڝ+-=d;l?]似% dlENy|/|ӱ8fu!r*rr~m=s~vۯO m|&?v=e˼| _b[Sro(o(@^@>AN95d\R~G9$#"皹%sr}]6䖹cnJ9!Mik uvq6-$gwc}Nv_c?X 5` 1<cmE]bgwXB M No)FFbbFĶƆ !Ş3x3nزnE>j}جREuJ*A*=*~ Ch@64.0_e 紟W^riX(> uCݭfPP7;쮺?sF(^EE ((b(MH[PBHH' {,yyu{y~{\ח.k{g=sP}zTV߄+_VϨ@>!˱9|8/W'hrenȃc\O4!G9*/6۞| ng͗1#>sM|%^h<37ǽ n]f8DGRl6ͨ_]#qZ$:ǥhH %^TbUxbY<;!1xMl1Hw5V;Oqg|6:Egbkeq4q]|D[wߏ+Kk"^SDs.>#t >Xg>1#79BG40@/s2;n@;j>WEld]tCBtQ'tٖb<-?5',FAi K_GoUo+ז,\/nJ\-0,ltiƊtY>Ɩ&gD.2MK3dR~wtoj'qUisr1Lox\jq9G+1y;y Ao.~DrF^?{|4->)Ns=9^<5/To0⼏NVrLN$94ND~SsGrkHOrMb%9;dCrr*e\g"MB6gr76'V3B:Cr@Ѽ@rAnʹd2f|TosArݲ7 G<4}wGIG XW88ӟ!o8H-]HvKVܭ`an8w6΍q6KHccqe,Ą?#AqWG mbTTT COʌrJa޷o]έo^.)*ukw]h[ kj@ 5.p7Zsݰ::s7PT_ 7χbPMu,C6nr!~t)|4&2Sn?Osvc71}͹U@6 }E8$6M:"6Ć>z㛱+380n 17- yD/3bX<qqq0U3ξ#:U_R]bI`ɥ N":9*q0* =MH"ڳG` EL Hb7-4@-bG<Q/Ub{=ԡOtTZݲ0U좽aFVh%kh@a-=@!o Y %Vh( I_Y9_zLܭJL.ae>8 L%Uou>%yat54˷/zsyC|#doi{PrNޓgzElMg4H^n qZn'Ƚss}wmw Y'blMF]ɦya"ٖ\5 W>BȥCrdb^sNuvx}\ntTէS߃hH:5|0߀Gn]/dF2WA^8:BVs 0r4zm>B6n٘U/2;ܝ)[ȝ,ϣ0,8L;'(Z5R.x˜xF DkP#1,S/Hmb_vq}ShE6Z)8!cpT8! VU~E_̢rYI+P**B C.ʰ#s'ұqox2jn5_5j?`)!{m#.g)fσgRt P?2> OOA[? zi _2hcTאr\grEEn<#x*͇~n.xy9νy @1B_!𪇉.8!x"ވx%xMLU{BQJűh3bXGx"*cb-ĥb\/ʞ1zvI]f}倃[\OI+g}m7y }ȋ7⭃'<"ǖcH7LcX3ck%1'ӣit&>_5v'ގzx=KqL<.b;D?bXb?JuyG·zY>ĹbG9 }a_ cxUtf8=Vva  ]v[ ρzwt-S :⟔mJ"fC2U?0fWj=R+,W-Q-,$3 x9tSPoX#47>#+7-,07r892z\+ɧO~)W.IN rE>lX(2&SHr'>ȞyVdGU*̥Xs.l!{f3Zj~Q{NdL޵y|/hG8\ f/$wH– 3/sP =EMr-ե*7-C9(es6!?w{g!y|Ւ<#sd"OvϢ:͸*slqo(t4ɷMޑA^)Cqb ~_ɓ`ޯ=^M$'y؝4לb\lFsm LGnݴ!hozhubf~9&f>`+^'ވ?-qgXZZVt.E۔RA m1~:SK3m K,P4kIfjF~h9%{Y77}U?7SZB"`;r*d^2tZv݋w=/C [wl-G-r0[Aub|&ANώYG- YalO;dwrqȾd<^dOɝsCMaI~ٓlG 䁹 |LElHmOtLmtC D3v*1ggNsbM3hO.Zǩql$ZFI{W!)bʙxʁ _d;*E^e@Hw9߷%[w TԽuUVAelA'\k5PuمnpW120Y"߿3~ T??TiCMmmߪT}?֓+?#VZ}ܼV%"|y4yfMf^YCvocuq70ݓo93,lFZPo=;uՊ8ɯy nsc&gc=5!w.u1%Ώ'XE,X=bC Vc*,ދK5qO&Q,$)mx6k:ZB)ko| foɯ>=4w3{Ͻo#^y Ƣ Nf%/-{m\)z;xxcH̆[!:ő/5}qz"B1b;O4[1x9.Įqc[cECn􂽱"q){#019ݓ&;5~ɻk4;7^8;Nќl^CPS+pOA9DBɢ$-0A|O5CϿ5;J}߇=:TFT&B~~Dv)r`[ `94{@~5{B/rQ3KSv مGv dsnd<+g~6 9ّlrXIɎE92q'^^%[<́hpMh >,5Z: PEtG.>~x15Ɓij1<a]+!vW9Ϩ U+؉8W>T!欕*PVw < *4_ ;Ѯ_C 5P#j;TpJeP_*Tgig# 7T/A޾EXPA}_Vae"ʐ\[}z2<_߳i&%Ogo L rūf{{ɗ[shcwZ嘠n]kKaY^:#bQ'5 KcZc1#1F,Wby ǝ1c|Dlb ۆ[!6P &ίQ+C&a! 1&KbnbB<7\NkiOMΟzߤݘ=o[.:cHzzo&A \Cc.-iFZILC\[KuV)qӵƏݱ@A,GC 1a sqxc"g|_aXEpadTbg"JER0 DWl.Jk^#1_vs s>c6&i:&4~c}x9/zGc5Xֆľ%vwL4=q\J4Ľ8㱊VCPx!UD;ơįخrvľXNm߭w>_DYeP92*?RJ8޷ݯۥ Z\Rvż ~Ws鯡Sj>*,Bߎ}qI߿uYjKo տAu\PniNjTOE PFO zwΎgwTc||PZ|+o'I'ώr| _#nYx6ۀwO'gx$-9͇hY*z>BM;B~?bb@hFlQy>sb,qa:&w)L3hdѕx9o}x7V[x]cbRi%A0b9*1/:1/1C̏gC$')a̎n= FQ7.xt`ȥ;7a0Cˉ;ᴙ?y0 E6I7yƯ>bmeYO*v}gjOÖ&[h_#qFx(ēvŽ}\L<g׈%zD#ZqSo=)rYa ESJ2*´e"Pw Tv-Шs}^N*.]|、jPC 5ǿ0 17[7s1:t?Auz}nT_3/BGPݧZxg7!oЅyWZW|+oԀzw|!o"+Ⱦzu9- ȻOqvϮex>UOm$ߎ?{>y'ݍV.1/N|_$~;kDܔ_ٸ<K{8~͉N<7bϨlbL4۱,D Ěxš4ƣ{qKq!F?]mb"Dâ =竝;^w)~Ww|,,|yy륷t=WܲV~cuU+z;sEV[ؚYjU/3 kO[_nֺkg@}/fHZ}sO83tTŸuʐna^*w=!:JIWK(cP*j2E4Px2T&SjNzˠ@|M'@rmqȆ(ԽQ-طe?Z>DwZb6MǖZBvhߑNmv7H=0ӎbY<.vϹsز֮+$_얃!) gQ, ]Ty5G)9<:vrĀ\Hr7e_̾ك~#:;͟`u yz˾tNv 8o#~=Uv[s%^}-0F)Z1 tg@ s1x}qp|9}*Ųj:o= '4&:fGOynT1. qy| bN\g/0:68Z#1HE@4Kc^B|胸+Ei?oįO)L}♸ij~g?<Pn#N-<{CԹb] 1DpoA&BG[}I/C=~HLU.!$ε8#q:X3=M<(X7dQo[uKX'X1`uõ=g9+6Ú'=syxakog} 'n)|禶laSύG-#`͏oI}j}2x˩^\rhRԩzaqiWF+>p_U7v4q J36hCNiRÞMMok>o7i4?i㴹/[OlނZkݝ[[uZ=bǖ败;lvh׋cV{n..Ytor@wk%Yܾw죊:/1l={땐tIYeȃsȃ^bqɳ!opM]`Trer Gd7h;%Ӽ\FymyDodOW8l05CsG"-{&p=C38= 3Oˬ ,I\Cm)+? t3b8{:܉^&ƅ1 %ė?-W1_&,U,!QWy%%.qqHe=] {ĞGW;9q/Ae? PYT9*պSҧ*;-EmGx^A'Z_C 5?Fj(\pfG _|Yv7եHj#Vс՗!W'Buqu1TO@|~ s"#7+ȱcș{4:5>9>$knu:99䝹c6% &/ˇs^QLK,SfiLa1$x39{m}c&fbt-:hJ|<;hITⰒ ߍ]4yv'6#C+n5qK||9m1[ėIK'mb"*Hloq1Mď1/~W_7/ŵ~gkϮ{k~\xb8˾~BX$jNQ@+FPb{0ș v(b|@hѩKmG[lwh:¨~F'VGp}A3_`Œ^1}R]=jj>.X `*?xZac(ɑ|,_c n&z<7`|9pAyPLޛ}qe hzdk t;/Jg/;B0o)xo{f!?<߳,\X}3/"]H2ώ.$wJ^H6ɽ7e=rS>G-} pAs{-ar%F\{R|/gkU\dUibO 72WA;I9ݡCFj?£`͵#z&q}Zjwb  q'[,+:1wvf/?-+Añ>Mbdҽrb4!FĞ."FU *COrLn(Q9*Ub[eG-$uA..EZgj_PC 5ߔ%!t'sX[8oWn+[ 'P^Q RApTrJ=T{UgC.͑P}Z>P*Sd|ٹR/U&91&s 90UWrt%ɝ9q^yy>{BYyyb+g ߊ< /I$#7.r/em> p"%W^M{9XWe/'٬|)Vk^h EO3ae8,dGhW㱆z<qwlo6p|>/ e=1,7^9*Mb@b'b/Bʝ= oQ]prTޭ4X[+Cg] -/@G'OέgM 5Pzj/?>*Ap[ F>+P06%AP%!pwu3TytTW4mսlr|>_AWCίM[hq򖜒c9-7s||4Y{bF1'b+܎ϚM-O^x?9x~s@S+,D; MDxcrZm]u!:)c!y!5jgS'\=m&. fBKa1D7/ęX/}EIwĨC\<-pe 95ڇľ!.7ݼ8_S4PL_Gry9'S9;kqcgv4ڸ>}>p8СXyF_\p??sk= v/ * ;SBbK)oEު$k\ N>Q쓊KcpMa^.M/o792|͋ipo=C>/x Iwr=G·' οn#b`My(y&3ȯ \dW:@rLޒծs1oߣ;\GqDCp)MXlK26|읯zk8lɧTr=F^wY:Gw+@~\1NR[XAudrqqȧ[93#G+%n9,9!u~ϟUb(qލɞ3cG9h\*Z,tM%ziyr-R^;<]u%o^Zb-#F{A^f ˱(bAh&^ٶs e]=P>#qNd D2'=ę W%k!Nqp= 1z eBwscmL `2R3)f!{!c~ fZd&m(;b ?D>'vSoUwtIgt6ڣF zlf:,s\yXHGN3,Zi}S|z],𾷱2&9u45Mh3J4&_VxCmy:c*[xgvm ?ɧ y:9c$1;ĕĚ/^ Lj9DC@\8lP|Br$TP.ĻUPy*+W9?2bnF{A)_M^jPC 5)p?9n 氞 kx W:su2Tqb^1Rߩ yLTT>QP}zSy+ș5ȷUrn.I^3\6vu(_$ɣ %Ζy r{d>f fOrI73/<-097Mc9%AR1uZ6 do4LK^{g{BSzOb sޖi{<%FQs?X 8N8:XsƐRiGKɽqp }|Ӟv6ݮXc;:amXSًQfn)G+w*Sv+˴r`\u: a걐W@,B^>vZ99%{e']mɹI@>'+3䇹&O"Gk-򷹜Q,t@lf?|&,r,[=-'3.zc8fy8r&3 rhX5񦡵>$ڣa~4apcz曄?g OU%G1ۀ 9[=1ZWdXaE Q|RYaw=]N}"a7Cc섭MX_;ofz`r뉗uէ謝蠍hVhYv B[El-Xo QuXaUXjB,\- ǾsfcV f`MCT43tStSql馔s8*Szw53b-~elsxSs;of#^#Էs<s1GnjcLęfDemg0fzrcjkF7J]!h6i#)]4]Bt3>0 6D졧30!. 6ru~82^:Bn%G8%{D/GE4!ћ$Db?G=b0ʑ!>WAMbWy⧕Ae ߸2Vi }*}!ޫtʮI_|;"?ƿt?eM5PC FPC 5f`[ .c18*-OrHuT4~ &)V 9rXnՀ\š|#%Tf9֭| Od|f||3{nZrq.WJ:"0}ؚw,̎+zr~wkxRc;|d曑om:6BsYf[m[=RsLFkl)NﲳG!Y #;g"vʇtCW]:4- ]uR]trݰ.O On;}ݴ\}Nv }4n譁DOU6YYVjc) -ZZyI4H#4@V[mmR(6`ubVD"--!I``v?|tM5 t"a f޴pLwcaj K7mr]b;棻K:FKɚeb^:)C\jVZ9FC4ߢuiwn^-lv#dņb``;s\B\]eoψ/:6F/=/CՅ$nрx;vXM+%Ge7EGҷǞK zD']+rJiIP#/6V6@[T){u#B0ҘxI$5PQjC*/ը|r7 }@j(Y՗BTZ6gr" S|.!S ;8瑇OFaINy5le8xȼ+gbn\7aq6eލxM0)gӘ/M~}cGJM \Tҭ M---0m%3]{4 ;h?6hjUQгхqiFޖ]4!Q*t*U%:Yc.XyڠK٩mڡڡvC4+jۤ6X֨BKT55fc!S Y*Wl kmXkTU$J+ r˱rסRoѡPS (5֒˵Xbjj#+G=٠'hh#6e:{d3>,E=C\i ֨+ 6``B tÎ]jz vRW~bw'`cNy,p磞8%a'i`ߌS>lqgL&CGTÉE?x=85^Ae^eh~ (\Ϭ W·ho@ejj4~ߩ0po~SGeѯˣFPC 5__)1r+1PW}0e~6BujQwn{ ?<T/|9qA~\,W!V_8|$e fsbn;B5dg]툳xv񂻳Jn̫MGNy:7'9C|b,_݉)pލwy-=1˔| L n"T'XcL+r X]Yk*`-Xc=fѰ7&Q)oV4ɦ䕨/{+Ujʂ|AY) 6eǾM)oEAߦ(쩅"֯ݿ)Zhk4P*:UNRJTlH`F5h5KJXaXtTpe(XUB|-b]BE ECiXS<ֺ(H- ÖG]D:fVz dWtH?a1u,91X8/N;;]o/G8viDZ?9qw?oV밧qz,{`>ntX'Dcg{D#Ed6 i}V@ k 1p]9̸ *c*wCVy*b.P92*gU@UM>WD>+k 5Pmjbwb  aTd FM߿+rT,U7@+M?ˠBWoerC. 9LۓSry [94S-$9'x3{rdOX7r w_&d,_ʧR^od8?#WT}9q/fz|%"1<XreVƋfcfa%qrEa`S-h%؜+-f@Vj5Gj@uhTDAR,_45ҘhVJi忱F74* {D?"ETl)G6Qh?+k+ו\z FgKi>Ui( eP+m$ꀦ::ꂖ:Gw.zumtm[=lvzO镰]@G]GW «eC{i#4>L3q"g18)qF1{+Ģ8k%#FXo5hS/XMX?v֜5F@.g賜oC!v!Q_1q+D¬1WSʼnr46E0zt0ij?Cj/aQ\L|Lk'弜%1,5b(\]k8 VXM֔DA1k6ـ6cKӷ^R Rƅ Urƿay?TOQT'@Alu+Sbؿm%(:MKBƚAىovhND+tE[BEgt@^;t6vD/-1}jh(7v=BSn*;{wtw'0Ϊ|i 9fcbe3&1%c z|,i9 }l c&V k-lS+b m U[QDA(,R9Р7(r?>])W/)2"?A=`](44 MVe]YwXlc 2 n];V`Wbw]1TgaqnN^vYboDZX'Yil8hDC]*b:$mKwqSFc7 6EH|58x>Z˙JEсĐ wB \SJR? b sN h|By9~PA_ٯjPC 5P?p8Qab`yoc~d#_^p1e 9#B.,L sn]qY!,w(*> o5P׼lU<_v LoI< Uggѿo^Düv2Y(ɗ|X%b~J>k :V:|:aDz6u+ =W{i0VGOkb^$~}6fْ`&ayf+,4k􃍥B`֢j { сm@]ضn?B,H@kaJQqe|`E]LE`cMP3-T+B{vDv@O @_Mc(vp;CPboѨ8"t-~o50udqdG8&:8kX3ċqZ|87Q֕=Su' $Ώ-B<{|1$*ǖť)ߚB>CQxܶOѿbd ʑ N3!)]A.΃Ƌ࣓ sO Y|,/soOIЯj_PC 5P#kJ6S>% +pyˊ\<_-<#Qi3@.*䊲P RQ$Vg83@]J^Yxˮ`pn3 uh;s9 \'O ycnkw?|F|섥-|&a{]yn[ȧ[ ib{gS,ȇfNi%Z{[g4AF9Y̷֑ Qx ҴpK%P-GR-B}_Z(? mQoK 2FST$z D-ݣ+ 쩥ľQ88WhRm5V9x%Όo[|%щ <o\@bOs[B\}+ og@ꛘ7CW!Zx?0Z@+1bn!eѹt/ʙ6%/@_b8b8bEP9$V/7e=8꿹.맡_C 55j,~P*N8'gԨ?v=kVs!gKP]߂\A1ks RQPk # rjAQ /3)";Q9RI0 tWFb3!hW%S)feMi)Y,qĮq#Tp 4ݭtA4ؿ4ijj?5j-(ʭmvJpqFyi!UqnN\V}rU$ydR10Zxȵ-J`B0r#D= 䩐W y!ezzʒ\ :W7\?ڞr'KF矜'4u>#䳎U)e= HcBuBl* U62/Rc`D@k_CPWWcEǻEmlg#(}v6\_E#TC V: <_vq![ZRav+ 22h8z >pD1) 1>h!GL,;bSQWEѮ8)mhmn_V=l=Gwz?aLOKa$I5Wj5PC 5XROoc/ME ]G&s% ٺ)^v/@m GeorW0"w3M R wsʔE6xw(<_t#Yw!or!I^KAT&ޑl`?yP[+ @'iC.W6oq}ymrۿl;>Moݣ|7(jt(:z>|}{Gp\DAEFB|8hF!3]"_KOdo1 bUԗsx>fCYO,T/…soVxҠ _bA }Z'j(j@ 5PC uS䛙W7zu_(.S-׍<y <,C^ǂ"-r?o( ӽ/uIYח#R/[` ?o;x7$@~b2XFb(,m) ', ~@1HLkк,;-Do;9 q hjMqj\X=!ƤQ.;zRZ3Gy\J-bq[[Oi^B8ahR`+[eEF҉ jUJ""\I(Z) ѓZT̮UQ.zZ>r-ιhjE9̝esn@k^ŸO;ڏYҍKrzeL:[O?ȜUY$COo}-@}1j=fl?8-1@l/a?-ЂVbJدqhO{ _rOXEAV$_8hCO I'1/iDJ$X)6ܞSU`e  4c ͦP p tzJW|vz}qGϋ̲~޵>xTYvEzn ǕJC i=}/,8,ߟ[am#m%]7!nzycf[@2 7> M,[/' +_dx *++φ:v4 ,)½``6d2KF}?g,) ""2YBeY쯵<>{ Ø7vdI|\Ĕ |=`}h/5U!&/6RN+&gGԞ=b3.PddKPga `Dʋ|7ԦAL⧌͂&< ˭StpA.w#P!xq?9M.%]\2(01W'f0 d| |r$Dg@ S(5r[+cLC̙id4-]:*@*&Rq7{=/:4pѵO@Ԏ7Y !-)cK[ zn!׫s/9_;ogTPtP)P:Ȋ½!en/uzHP6 pq`ZODŽ̲VR-`RjV@W^^Il p@9[F}n\(Zt;80JoĘ H+X@9 '(JR@L_] u"+Ϊ~v1hGub^mI&.`|>eB;#dHZ/E24kD&ͪ`/zFzÆnlŗOdg͍F'>]`1H0:-Q@AB+ 3P”J Se@=^8qMUУA.fCxj~It V%c`2\y0lwj i?88a٤?3O7m^{L{Qc @?g0RL  ld)03"JEe2@!DP>TZ_+*z @ W#"N=S Kw+L5HYG{[Bzg.&槵P+c(@*Ij3N9-OpGC(gF}~aMFqx 7lln=BE B![`Ocs>-13eN񫒢Ip+!->_l42WP+?PS(}ՏTgurK}fnPY4 "yhc(;'>_^*,e{%; {@p5- Гz}?>θ`,4^[l $rOomG&(ZF8 էԟ]ɻ .xN9Ȱ %a{;.H[RY P?V[(Ӕn5B}쳝emq; !wsl>`2;iN%0`όfOË*Q}_!T;C-@o2i@*,?/ۭ,t^ͳP_ϵ}_-\rcS|в'ʇʷ\z@R5H;RhISl5uUʟ }R6.:zYR&>r@/8SpގRj} ƞB%gw?ߪBoB`ҹ;t~s+c=qR بp|X ~6R1ָ?]|S98E?u [oj0cQ9G1~Q^`/@Ȳ@U >otЃiz8r{4yg!ACϯ^NL(WE֋Z-}o8HtJԻ[`zѵ}Q^ޱCeNK/ BEk4gTTPK` ?/\%/V6No|5n~ Sj0#05E_e ZX݇ |uEX{Q߼ 6=8qDȊwvLπACߵ}o?spKpk {s(*;ry{>i]nS=ӕ>JeGY^zxf,ul[6о^"m[~8كi@Ms(9#h7P57>2H٬Ns _KôYL;OkpTF]Jnpo/Qa:e^@kO>To)l`'oAH+{ީs4ti/x6)\)p:n˶kدV؜i->l:{1pMIG`OӦllӗ6~wm-4VGmNm 7;m{+{3(u3E{w?˦_m-MQWS6w @f )30xu?ķM ﲓ8Z_ Xޥ{ Ϳ#Hh+>d ͑B]+Flyp1^CVvj? {/m{6 hmC-~lm y3WnC]]^A`- yAy@iѠZѦ {~R Ea3"?Ki 08ivI@Ћ_v\;`AJ\|kM'l0 8|.)@&:%-].@#`8fHW2Lw㗾 O7d(f@=E(؋kv'pmtyx |N>W]z=ˤupw;>@ǒ8~r=p;*:b>s`ހHH d6 7m e\@ a~ M/ț@{@%[@ y@! J |71s8auHKp7Z }bubŤJ,Oɉ/=>76܊YɉN.^a7þgZ]NxƼY7ØFga M`lQ@O|hB/=inOπ A:L 2- Ϙ#7`]A2%KXL DY /0DYn@@2 D8Yg1ТES,c,-m @{ZD.rm*HSY8g -H.Ȁu $tPPbK}m_[U?.A]dMwH6:txu_L81 6 @j-ҷPz'zTo|(hA:uC kԁr+s,qoA+ rȚJ SA DޱFqY,IQ -rucE8X+r1n}4ztP8TlJ=ࢴR{zž>t!$Mݖr p@Jg-P@ɣx@EѪ~JpUwrMxP_ÍLy ywO9PZt&@6pyŃڷo=ZC>PZvW>br0[#0ˎɸ66c+ȭ 0L2 dq aZC|1cH|Ny N*G{ Tыeoۉ)B) ]jGg KlR(g] }|x# oBڽmMD-Egmڗu\MZΆK:^ƻg|&/\!W~O`ӎcqç3$4P,/fㄉH,C57`Ŧrnu@:d. @9z{tð Jg^`Q (&ֲ#]jcYǀf,x [H? ͐n> M;nPaIaٳקvl ;r/TZ!epnL-N-ާsc@V pS9S_aD?-J(p౩K%$&7Ttt+C^awY'/]c{;:VgE p6$b L9-dѢ&ذ n-L-/j3wϔgíX%C!Ho c\tML[މDz:@gA_N3 H8bL0 K>; dIa# UKzli d XrzaZ@+˺vuHD,%={QX/_C֍>Ǡ@10j˨@rn3<- xuE-e9ϴU/]Z;׎4Fh9Y<]~TʏPr6$tfR\KO3ՋNIT @%-Św`(bX_4`3G\/ȇ2@P d ?4wY1ʜ92?fq}hI~,_q zq 8p_hf)`;/|&H;IU̥lXA}i?[nF:l]9Cmlķ1Cï?o 3tZnx$#o;k J6'jTn;*9΢5" W1ߜLڼ)g]@ˢ, wAfd `x2͠ 27`{KΔ@fhbelg C3 >&Fm=vBB]<:yv[T6YW~Ey)-F͇18xMa׍h%-aG*9 +bJOSo(U`dV6⤇o{Q|sf;8eun|*)2,&/² >RXohp}Rs9SĀ/)@,78P:PpI(xP*T@ Q''A>֚nJ]ezI Zmm^ͷvRZ[[3{-PhFZV~N {3J[l2fb:e X-ꛃXDXQl;h7lmr-ү; W >-e4]aI Y]3e H~gqG D@ yiGa͹VJ&WX>e9n+ˤgpǻB;BE~$Bc׾:*і'f. @ N{O,sτ_٥5|wrQE )JJdCΪL} tɜ9"D B LLn 0L^d{:f;29rqDs֮l+i Z/|٢欖 EA^q$Φ` db'L< UdhP-lF^ȢX$|@⼨lwE+ Rt.QO۲6.?t($@TҾ#vG^g4^J<s`LyPQհF)MO`V/Ƿ͂=>zSasP&zg5ȆBe"*oR ~Qt}s?i;h@|\ξ G.By2A"P4n3h>kuͦ1Dq{SAd^LP; [" q߸ s!+h InJz\e)@1F*@T (ה :)w5@tVAU; hJ,Vsk .*m~)wN)q}D?i*cS`gY6Vy @۲iY:53JH`j'h]ucZ*cqn; ;.d6nCݧ?Cȡ_9]xX=f5-inzHWRCwVDՂ*@Tf#rrҌ\B Ή @4/\p|kB]N7Fk0:P H*`4NxVe)vDi`#`Kk b$BD^  3 1-oMHɵeGu{^>;Doa2dgDu`Z,*e sf ]:F6Uo1"F>.92z/}/dFLꀜ mM׃獠uEC'{@5XX!.{xqm+[_\Sz倈>Ă ̰EՐR)xs̯aQNVc+}->J$(>= 4*Zn}3D+>V׊=@5/* "0x_bo8`,-=bjER}n:f=D#r< kD_Y0`w/f< 1CvaP0[ll =cLk+t@kALڒ:\%@̴޻E<,&=;f,i6mZXm{\^9KnN@DO1! FXW$ ˃%ixWаkem" 3qńt&3z,F>.)-h AdӁxșX4'Y+&]]`ȶ;{S`jMGX`I4LY+S``Q-Ʋp'{W~k6}> l'PE={KP 398//Ԭb= 6½. ^- &T 6r tr >bOB-( fw-To2=®G bj`8cPjpB,{K Dgz8kX5)_Y9ӄlaKFbAx׬) pټZgnd@5 L9cP<>fy-| [0/f~aO98Qk 5| iv%Q۬B",l1V|`g?Vګ=}K) W]3P+({~J(T@wmY5>*:'b7/1Q0b.QYP bA\a .9ꏃlέ0cD#,OrXȝ_-`7_ÚI!?abpXCrX5%W2"ύµ'`ߩc8 exV0$nfA,1yPa# 2:phaA,$Pva ,|.Gi.cȊBM|P*rvc;bBIIjN.7׸jbJ9u{%€Ő:׵ |TĀ=9'Awǽ}x fgy7 j[Jpbu8JmI+-*\2\N9tk +Zy޶ &opeNF\~&(F՟. ٔm+$^D\myuU{Ac*I_NK\LٍNpKF|/nF%PΊiα%Ijo9(k+ CDz3QY+yY<8c cGHH0zeC× hG+](sˎ%`Fz[(?jGxX;jW~u'hMm  `1yJNoRh<yPg6#c-lzs/x8iA? IH)zUCKTv;Oׇ_Gxq5ur3Š*y ;{ }y>Q}AlZRx}@X2|dPZkuv뷕*{\6MާHv8XD{R~IeV닞 *]{zaM!TۘU81v[ܷBŲΧfT"52RT߮TlP5pհ0cEܯRp.R 0|I-gԹ qz1L>P{}9KnPCBꏭ[/ZsPP=ob@Pc!^[9qzhdE-4˩Re羟~}/=bށX0mf0xfmZ}bY;:*ٲz9w+˯(9Z.WMܥiZc\ݼG䤲4ow* -(աk7_@ps u/o˗>JeRJ 'ř' wO_W[<񯦇3AOnUg3{CW8\wVFu[l dnIAZSQz2eXP* 6rq!M&ۗܗTKD<*zpCd?vMJdϨ/{>| J~gt9Y{:{qzGZ鸁E}p 4.>υ|I_ k ض[_r9ްפSZ6@kY";HK8ul!pd<S KbRʵ{[Q|E:ZhWֶ}h[`pE4\\$XRG'75;Rte˧wTɏxY`M/tINH&SilY 0zCM.-KаqKeA,1 PАR!2sKa]O ת֣5=cmqUt ɮ)Kq@in-T'+Kv36L;ZkiY#%ԫDKª3:gOo\fej5eS)Y04iQ.=fmb*qXIbrY(vc? ^aP)4jmv۫|Zل # ?<{i !r97YtKOTXʰbEȳD!Y]qC!-t#9IƿEepw|[hlT~Zm{3ӱ1+#K6כS4Rδ'R#W{{ 9{zOqnyRx9S!i729NK&]k06X{ȟ`egus}0涑K:K8@+>U΁!*W*QR2b`;6TN\$wȿ%׸<s"OB&W~?fg0$NSܷ걌/,RB u$<+W]"J9u9 t+mz|͂~i,^ q¬~Pp %Ùi,4 \-#MZʖFa,xo&.8*?HYs,߳ '#d(T2AMSƉ_@+S|HО?*7A$+}JSh{S+kPH-Xm`+.A ,5*yxzOCYN{>ZK-:Ur> >E ܱn,州O*8zLKlϒ8}JgLTn}P=z2 pY .,o3wG *aKyFEm =y wodeL2R&W2ulj.G]~WAk+nm]QZj@ ƫAZE:SQx-l#u qj(v$hwB%Z zdS5w6Ii^}ŶmtZ/74m,؟.9M.l+ >tv3U(콧лN()Wzcz7eCGFP R_dsUW 7Pt+g>"x>Sr0Q}Bޗs oa$9M-Tdn0@V42?}zABTtb~JJƼǢv@Llm5A۪FE6VK -ImPK&NaP3XVPO !Ϲ#b}Π*/75yw~)P+KuK3&k@'#Gͬ wk<fo%\#Z&hQ໭ [j̅ԡi3_v'[Aw 2B$V+'g.Xs_wͻT YԊ o r!A_=Z x<;"zh~ {3S$rZVx؜kk RWfUPk`'fw5`j}3&_kJ] ny!1=cV :4 <`J;^[k ~||6a̬t3,:6,fpʄW[\A|cK˜|翫`ZjOm3Lzۯn"?4֎y#D/ kS@YP=vڗ; *2\H6gO+@+U]S|G9v9`G `l3F KB NDCXfٓ1@ܛQ+L\;w{y g-wmȮcT+CSìҦzlNSwaE>ߟV,ڒNyzsB*&em5ƘcS^u)m9ZM[[&!θq}|Y*P3nS!aɉUϲ;J cll47E}r}!vǬ% 5@+!_,dY~8/Z)mi߾aRn#a9x^JvNt=QXla1'~*Jx>8jTZhܭݡ֊"_lwd/\(DrniYET(J*Qi ,Pg'# s~݇v\Э? /XoAa1ʶHMp/0c?wT_6)ZVԜ!Ǫ`WʉWngNnV6:8דF]㥹1*ǂtc1nY֮a[c yT®ʟBQ|eC | ~=/P}~0y 7]J)L} 0[#rOP˺U*U13L [Ş΃7w*<6}>oc^ѮSMCiqŬ ﭹA!A-B EKA˴pj,\s^ @}}DDrdN6`p[!O:fmL:wPI{>k.F!Sʸ4mdV;pYf)_(>ub8( ˞  R^r!3Xaq@ijg8MOHin@3Yv'{+]WJhLnϴ}U97}4@]=))hހ h `m "!6>4v'${Lj4RJf.+v 1  lU}K-`}!VEh5yhMYHIWIw? l)`5˟oz)}Z`ҋ:9X0Jt$(ZIӯG=[ٯ [zr&hoGdjb?"@c).-_B%A% ^*r* )RTkQf~KPxe[֔OLyǔJ: 8 0sk !8{?=?-*-?@k+” y `WSE@{_;50de1@ɫ,v/ "V@, ;-Mjj A*yBjQANjo%]O홺.)ON6`dnw@ 0)%Lyfi|gt2aXWj+9;뎇M#S=H0\ YJi1@nkdTPKY&itWc!9!~`B`]m6>樂Rrf y/:8ep1FM#Mv0܍\r,bem( dnphէ^gq`P9o`@xbp9{$l}p|emh'Jv@K^h5o@oB &յʆ^yl"fPS!ÿj~e2t `U%=0v3';k)9qapq;=Gpd1lݏ:%RCNt+Y7mn-6Ƽ^겹 ܹt}=@VhayMhzte[V1s١"U d峙j KLजX[4q@ pj =$ w`/e?`/k `dr88;6ƴ&ɗrJֱ?-wXv4z\0͔Cgg;2'هT~: M_^? @p6K9J{ ˭Bّq/8z9>{;l>\qʛEWO9R /x\͢g `˜I 'u Ptc-:ϐ; Q?I lz7L=w|U/<2~'b_;w%~JvÑơo8¡Rh9vy?m Ko+d!8Z`ہfYeI*0Ҿ HspV^ߎF~U g٨"$ouqo˩Q_'Ao;6n l6^_?LHRsbqNS%6n0%! O+O9F[ڍ :p gh7*[o.خ[ 8e,,:b5[9 K-ƀe%m7KݰyZMm=I֦V_NZ:%Y`he Ny`lN[CK+uu` VgͳFm5 ne\bAo#@IAdμP~FzoR\pJ3LtK5ցA[gLHkϰwp\3(9H+m`n zςn/<  ܙet8h8p $JX,O6R YX;5mukSC9-ruئXZ[ulG,V~m=gl,f8[WUF혵 lE,1S4{Uz@eț嚫 'tVٱvPϹ2 `,>yܕ@:J88J4V0 aЬ_^WI$32ț 3.`x=^ඨ@ ('u]0pw+?^xs| F1H A`d2ކ Q[(F=0,ϲύ|RC;S];Cί\Wہ_p2G9j>/U@mZH),wc :> A~]G𮑍,w7iNG_Gi%onQ^b Me*V {A#G~vtDI`cq`0u;|mvui0@0HȖ`<X s @ y; e\@n ď7Vֻû6X \h @dfE@<o @V D} y ?So~k? JN=vkj` H2@5J T`N# (@!$`n:(i.3c+I t2{L"A8AFu|P@GyMi2t4b$׊yں~j{m97JS#&s獬_\ y(ǥwLΫ{Ķ lrWSƪyTi@&MRrʡ-ypV(W4x4Xށ%CVJ74Zi{P7!2d> qP@2 0r&9e KWWo6.@)D h"@Gi`> oi7,+ _Fdۦ#M|؜mDf^i3|m7nqU;g 6?u 8"dsp;z^W#Ӟ^fߥZ])@ 7IOBX8uεA5~0V#Ô8^-3'yI 3f'lp)%\iA+K<+AEޔ,-2dyT| ڜ;@spVA^\Mx@bjjb(16iz O)ks$f450Sm [ekڌ'۷ÔN saf.d*+RGo|970:yr8J=9p{a βrߢ`Օ&J&($@'i~C>Ur[c ۦ1Q@n2˾`䑹MJe7fJ_1yHQ/.6Vs/<с{`wPEnN z< .'AgA- _L@"w* " eLW@$*P p2 oкl̔RJU|]|]P23̴J~XQ˒ w_'ha3ơmI%| #x͏0Mi,kb)aڷߤ}9{UJf K9LL-ⲬK0=nl jT<# @4JC[B˴&2v[sS #rzJIЊa2 >)iȧn;+G> G{+톾, ;"5-3+dw"T][5){_p%8zpiluml O,A+|4PGXSzH[g iY+ҎA´e 99}EFHE|HxV03Hz/ko Xl. ZZ;~Uom ]$}zMi1R~/u"@ʙiAVeG@%!8  :HRoߚ>A̳"' T^2) 5mnX:/vmhsAY(*\}٩pl5q!n= x0{˗ }elfDeLJы OY`/N)XJ g]~Wz;K7Sz ?'bYoV75,X,yzIwZOdh=-Z_519hEzUd -%AXw^^<;1=p1M( _= @D3fN$?wMN_匧#)⇐LG-eSe@w97L[cSə2 p*}.*n{`oU% Rp6]Bx3LLEУ}e>=.A|Qcp3cy}zJx%VxK0lsn#!+@ }3, O"CbD6еP \l@iZ}AsҞ@Y t{ZxxWgϐˆ,]ԾE@@K1Z=D1, iMk-Awju ZqFr\׶Ij: *X@c!&,LzoQZU~Jd= PT1k\#ta Ō1Ifp=۬uDU& <0bf,Hrzv1/BNUn Q%d)>f6li8g3Ҝ @嘚| ! t.*Z@) NgnzOO[o7>Y0_Nn0Щ0Ws}@;@lӚJ ;a#/r2t4H>|~@cQ\&~|#*D|SkdOxϝA2##e!JHtMt 3/@Fo2d_(N(Vz;AgYg|TV+ Al}%Q>'6y;$tIi| H 2BaG)X}w5u y?l<ʃ@,霃O';\z:,5}tޥu.goSoln%PzƼ+6p0#f&EXi$'30ʣ3Q? =NPKY_.@%Ϗny^hAOlҟVG#=>@yǁQfreH jʂ k_u#5A29wc7e -PMA@0#:7KGqxb2Kخ>j29ظuAD5p+_OOv)I:WoάL%Ӌ3MOP}% 3"YfD! P}Y>N05psw9G֓A7u WˑғqPmD_8Ziǁ c@2v&RRV h+f><.GКjIvɊ3!鐌ցk#m_ʦ| 7BYd@FpȻ/ ڒP0V񙀙݋AO5'*0 @f8Px+y)M"C@d:0B GpQźdl#PON ?Q@'9AV~ju `Ҥ|ԏ k[˚aWq3Ɍ40)#~(2TxRL"1sdM#f-!d/b=O@UC *ШK|vڱ¶^^44|B N\giy!JZwCs_xXL/yJuCd^xP_a C+Zkr _s?9tA1$IA523 L0lAm  ~]r( d8g@M d2-|dyn^ofیU=b8'ձWoY?ʒc[f)sPOWxP ڜu?iv*,kszҾ0eeq~02i>TWͩJgmbWwD@vNh-8ᗟ3Fe-ld1 j" G_>J),PC?  9ٖ*u'cE.-Oȟ̸J3*!=}ȇ~pEKhs{aoe Ȳ>x*,[qf'Y` ,C--@ѓ o5 Z'E-m[Zo!mnZ>KW [u Dq[] -5aD:Lu @˥} \(&JصjaJAeN[b{l<נg.e_Nǩb*8d?{Dsq&M},*j4`D]^C62i UBP=Y/U}i3m=L7)i 1W7~ @PHf i"A>>gJ* aѷ?_X\+`"&G> Sb6AD;%Z@+fkCA+;}.>Admb6XmAofY =T_z 5Q֩נGX^ƺt2i/h}=@|N?i' vw.VZ~ AOD%1IBdF;?5|fLh3PQޢ怎Ƨb:,?w3SGM(w<4 O~<;o+=޸q3tq-?IE}`퇓>z[XukԶZI+.,m(?,8>8>T%<^r1⮙pGA0ɷ@dX>"yxI7E*S4l@ܔ2()Z%O-`bH%-,΋@x^m*NxiI7oN:ۢu"&EZ*hJE-@ BN^Ir0p[GZ'-\vg>Vď;S_87@ʖrd,h[^6Wh۪V&N>/YG\*w XAϑ`oow- C&\ ck_j!ȓ5 RRF>7D=ѸHxҀ$cNرw Ol&h,`6-Fάp@ ]88/t-GEq.:@x/$} =~|Ӛ?1 @ص¡^átIe ;jY% &|( |q$ɴi9b8v@(q:5)Wԏ O-07- gxvȷ#\ސtx`p~Ks(''ܢ'r)|e=D)O)N* &1Z:@iٕᅭz0 ?)ЫC+4`,t,7@6b(;'5r)P|vy[1Klq] ^T"VL bJDNs~D5-ђz®gXڲDz WiK}Vr[ڭc5VqSr Hjtq>e jz <HU_nsʈ)EjN3}۠#wB[]'q.kބ\P-yA^\S>81,#Q2 0կKP}|~?I'Tl3]q{,ygm"=2n3:| 25V ߑc9 $*= YYb,:|le]COCp8΃vzȉ`lQa tE2Țtad *arhG<)yA5{%ĩ*w0"]=dE~  MGD3aqi(Tq+݆8 ʣ2s\Txk M[ǍYo\CZ]Q>ny}45Lq s*uj f"a۟.`Uf,ARR/ XY19~#Huy @䌏 RoS(iK)$o=KŝDـ r  TQ~PP=UCvW6=$kYWޏJZ"?h3L8˼3!%Vɕ}/p6]nb"G9RB;KU N]l;#PZ<!0Oi3޶~+66h N5ȃfnB@>~0=wyϡLjY;L[$"1"Hy]eEx~L.Je`xLN)K3 ?HqM6CóW Pn|+nC8U Deԕ)*tI7D ;Aɢai ˁz v7.+Wm9GB)6gݾtv.@B0m17+H1t=oP޲WkjKpT0y|Z34QV@閮qA_/WH~xJrT|Lүf`iOa&W"|` f&uإ0+iPוATJ^\_GB?W8|\D@ط $ugj \ \P`ٹ'_1CU:hb x\9tT{ 8ࡊ4 ? 8*u< RP<𫦉5eyXP1qb?=RTJN] 0%$__e65SN{5rjCW?xjZt bNb @<pٝO ~)Z49 8 IIT6Tz N;P14UUԲq^/>2g`5g;IR:7܋ MoG!+R0cd&2[kuUgEiCNsaRtXz| FXf^[@ ko nɸvֿo[oq[r.25*);+bKL҃T`TGGoq|[UweiBw?Vi5$TPnZ &JsLq(^r#o(D O3b([1⬚ 8t3E K-?)%qM}`ʤ^i@{.ga%ZR6 [ݎ A7lW}ժMbg>2 @( 1LJ}Sp;@/_72ec´oE;γ)[@ؔ-'ЩH(Y"R%\;Pwе eq}^ c>@uf[]V+},2J/2$WP !/\[z(tg*AU )k]r`nqAۨO~;ÞO}\> vW|*,/h/AlK1~p-pޡo`b3h'Q@SQvɮ2v憧A557ȃF"ω}Pcp"| Bg'Jj}M gܥE@*`a9,i_fuJĄŽ.o > =gIYιGAa3W5ߗEc{ [QKjkʅ,R=e0Lj !/gjfhf&1Qnmm/} c*U6r^]   V(08Up݈'T${s{G54/CX6e%mz`&'R+YGU=2(UP4O&v1`t/AVa(jY` ,W1% J+!QΠp~ss ~)K˂Cs*)+dc >Kwq@ )QK·F] , zKq ڧ* pl듥=Q8F,}Fua&T<,bӣ(?γf׭G% M$;J;U,# GH r ~k0˷.9 |3Dgz xxvW A,Ҋ@}h=Zap8TOU^r !UĊX_!&!|>a9_f(y?>/`LԷ~"J̓OVҠ6胵$-zL*4.,߻~a@7K t1LO.J|)|b{x<>n7+.Ij"8c !ehR>R o-FBe&2Tm6,(l\]q0 `W0?,{Ԁ3Q{0Ğ[phoթib#;| L> 7\c +ZcZe- R@ )"@ b" 8*< "ExA מ xY 1y@}C~s$B^{RvcF);/3 As~:KwXClb DL"2ez 8=`a29(&3Cx5sx9|Q\y+]<@FqFv*VRh @_ >ԳFϲPUfM1͕9-抛?2=5@ uIu_ev5wT  g:~yi# j"@J* Ae /?a5ÄlB@4wmnW :|%b ,Bv(ޟ0#W~o !:{WS6*N)3̜L;3؞>/bCǂB3..İx9?,=0(.D?xL3Ku-S[<[34ka((v D4k]Ύi!fʪf%Ǖ]sEmTng^/!Y8R*Ih;*puU3"zsmlVJs}))קI Uz%OӤS\ISRvȰD)/c$R.2q fJP2)O2o>7;Sd}RN}_@1)G (f*Jn)!ReR&Qd/4Ld) (9#RCS6!MLY.uV%{T3_Uj R~{jK~nۯ(itSRv/id=RJlRyERߖRolpHΒǥ42 _'K`cbjZ#~b'cNjb <Zk9ըϗlwۺ=vFqfC! %/Mb3?v0-aފj JluYXed= #W;y@ůWvK> sL ¬Jf%۔fB1&&գCg GV"k (aMȝ;; J6#+<[ܙ=Ild)l&ZS&X6b릍ӁƎr0r } .r}~Gkaedv0dfٷYf\.TIP^Mu[jX8֬͞5֞թ0OV*l}9+x1h]ge^ ͪ<|ȳg&?Z}Z`J}(30ư1uo j<n \Y V'zw&fldjIs>Gv\[̔=SP+.I}VdPC O\މAϧ]JU[jcbM t;!K!0WϞy_f_{4~-yvQ^(X{{_b)( ԦZƀp7j\&=(ߌ߽ՁB, 8> u5n?G*B /$>[՝7,8t;8f&fV_i&̨i[h&5kڀvHK NbbT=l7\l>]\@xD^cwvAXY%Gpg1 DQ~ $ Oy$4 ~p`Zk. _&MNP[m51}0O¼*E2[>#ӢsAG2g+{ t]H)Đwng\ѵKݶpճIO:n /S @zUW y6E RxgffpwGΰ[':, 4pѩM\GnCŞLW~"=tpj5)'8׷65Qh$2[Mq7$ڤh-@@$A "8 jbaZB Zy(Jf͆ Hޔ p}bwBhp{F{yTx ;Tof٪#6'ib5 wk$voem<{9Pױ֩*B= n0؟ uwzՔO!!9yZRx?9iH\3"{;βcX[i`9xXp%XR ܖ.cX%OM`tPD43ƹ )^(ׄ_=oeďmZWӿ?+֐pSZK3t uC?3<;if>`X \ gȚ';RC_km$!~=I3B==WٰD! y|m2ya3efgBS<}:b^/U\x6kHaIaz9dXNeXvXbXwmue3w|Kgr=s\XT~.|qѬE=CʝS+˗?ek ̖ p@s6s7yt:rǤ j냹ʓ1+FqYZ 8D)YsJBo\6:t|l{k0b32UՀK ]t; t`Hc"]&A/ejb 7 T _<"F_eͣbvš%݀?>]@\],}pyŧBe߿iouKe~O߱Pgv[x/ϬxO1py>8︱rhdvS"u3}~` )OfloˇLg<"3WxD Z7*̴/2۬C !Y[Wm^N!Z7L?i}<@:+mє-t `a }};Ƕ?D}fi<9 ۬Ι?m7?}Bu<>hCK}]к`s5?Qi[,z^@W"? =ߜ-R @3utpժyQEJ7s\c](r 4({^#2DL1qC(Y+^͒zK"-t/|+| zuOߴn !N 1T?O##77y!2vrlndGY:ʯemcEA !@ےY_=SSx@/pԫ2\XӼ!yp\oS]'008w;0>F\b4r쫚rWi:/1 @xw@+TB@ <Zy @'I|"͠wWC oƽfxz\rrJ!~mߎ82SZN7S|e_0PsPՖ<`˫_^ =|+ Q`G q괾7ZHUr!kKmPm$ ec-\u%K .=;dMW?P{,]Ҡ`]P%gH3ˠFfΔf[ƑA[WtqKiw@ P$%>G&ӕtQzox0.m~ppz 1/H{͑1nN;L*9D#MRHߣ| 5VU5A+N4){k88 ` 07c@ PAAGF~u3v9 RZX<VZgpqw^'<NZi&@p yBHS]q.~AoVDffWcZ5 0 (\NOG?([ٔͳ6%@/2FsP]1ZW{WG (c#XYPq8b| @vTDCtUA5Նh'hH:,tDR-RZ_< , ꆪ P3mrF ~QFYFɇ/5`sf߯4oTTmJXӒzZ:~AuҫX8u=Y:o8,{V%FvVM&{(1?&yei/~4qBa=xz:  tR 蝴V߭o, o sx\- w[B7G'p?i%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/96x96/000077500000000000000000000000001322401607200203755ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/application/96x96/cmst.png000066400000000000000000001012371322401607200220550ustar00rootroot00000000000000PNG  IHDR``{gAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME 4`cIDATxuU9jnݝ' ]B<@$wwi6ڽ׬G"{g}w}9S3XUC/]RJ)W~%svʿse})7U6(u4+ OU PC -*aPߧ3@Hs*@h# 1੧1C%]"!B!Dȿwu_K)x , Po^b@@gk~6-*i׷ô/BF߾e%~=4̫ei%[S;m.g咽ui21?҅:_J w|giEe-hyO?moTFo/ӷ()rh9_LgZk骥喇 }҈ -tY O>ظH=zR?(Ef&}@iʼ}qo2\˗ZR# AHf:*DI\,S<; z@^.n?6W?y`o>oܪJ0RRmsT-,0 FMp7;;< Or$GFƕpLtgV@xDc |`[~A;@9y'@/, g+6*T+13 ;A*sMJEt p-7e' @)|&OstB;]/t1S*v983۾7NzX2TFST ' ldP @-* =ķb*!Vp_D b)* גY9M>̏AU@ [\5o r}=Urٴ*XIC3grSă|eR /Rzړs&fL<)P]jW0J/)M;kgHH* mO.FZyD>ϕ[/kyz #e Q4^4nU< *uJTtT@" T nܴsL.ΈWbxOQ0gDH0Gp=W~Xf\uvYhtZBmg֝ۏ+0&t6iiUg| {L- "y_GPez;o?h^Uv`I?ϙ7kGɛooE 8s@.@V2)eM=e4tߺ&Cw,RG Y I2gD+#\@)m{QQ@lPnHOo d"DY!jV}7܉U N»)(aqC]S}6SJآ @Z:ʡ \_W:KA9v'F3euc OuNYK^m/d^)H;xT\Af|)s2/p}ĪSGI288]WzʠQ<_9=Tw ~KM0u>Tq@b?q@S(2H 1#DT"B>yZ2ʆE˜} ΑCuq^Bq?Q׵Re~oIWF\p֏rμ|rϬ s.ڵgη=xؐud3I[C2;Na>bCȺ9t;{BNW&mĄ/׼9 z1@s@x" FI@ӮQ2TjTTQCxFF E0ƈgc?T}Vr/;eD1h-Zu} M3ԉ%] ! ocN L,-Rz4 -]q: VWJ[oͬ2@&<$ WemyQVdI6]@nDGefJUF@eŶPoL&C Yyx;a3oՃ8"=N$(]D0ʫԨ(2BR"@TF]Q@tėq`RǏ?;Ut x>(_M%1rP_xl0Ù|z꩟wYM`c׃vR*(wڕ!S*țnȶl ORg/9>iB"O=+WjzưnGM{a C_ *@VT6(\%QJ+}Rxv{ Oܓ˂{U}ZJcտ_fJ%&^uF_XΝ_+0(+m 6דT*bM֮ i@^/%?e/^8nX8~Ǡ8}_nu< 7f,qr; y t]hj4cU8h05]&>Oz+CxW}r*~BSM2ZR㖧u+%;xGؐ/7pT~pT)pQpj"4 D^Q f]`ivemmG{llG`+o [os9lS6bVPBPB[B/,,=8(*r @\9b$Q Xr2uVs3F!wL*ρ?Nk[XFs?[/=YZNZ*lކ%57^^ʒV뤥@dXqk*Ħ,$yn6s\.MsXXlי%ϥB|GG(Qb-O,Б*Sdx:aՃФ7_ [S[?u3[^kK2{.wd3Ip\ʸsQ,| h)dwZi13zCW捴ȴJ;`˰{Ws4Q?l%ۖ%Cxe1G<8YEuȠUDiPJKހ6\jz'8b׈[{J/)VdPuGkt|tҟ:!?4Ta]kuӺT%?Տ;gŕ\T{Ű$r5mK!(i?e{7VtK5-%۽!#\ N IUV\rpϦc#0.CBxy@^QHљV;I⒨"ZC鎌̝`lV@y l%~S`>5o> 5/h ϶+`jV .#6;؟9e0nc>IQDh`=]Y׀/3@7Q14Q#^y w{FB] +ebFP꿮E:*ydҧB?05y@Z uї7+E`Rd늵: 'Cf5fnK5S@'EPnEko< .mYf#rsגϮ/#9!2 _h#`] ͚VEo"]UD  V%*e `0F0*[7eXD`%|(. e,XDI)A)8^Z2 QNFjx[K1Ժ.j"X߃#ho`Z:7\=yf?x:>[2~-{YUG|5H-t;x\%"}8ZXZYQJV~C+F^;m?`z(V_uTd^J\ $Q = z~}>虧:Ѓ_-_ ˗y F8d} UD(b.XEULk] ͬq2Q xX*_+IdyKfFF7 2Y֒Oi:C y,O`8\^~{߀ܣ@ɠ=;=`تA]_#Zwfj\I՟eP"Pe"X*'=ǴlF1> wuL!@(Kyd2b +Wu2" A,dkzjn,t\!-kR£>B"fD<SN Nh qV;;_ՠguJ)I#!$O_?6J$WD&h Gp.-͝@S9R>bY ,*\.X߫U݊_;-[{Ba~ lk 4LWyu r1:C5Ḱ@ d)EPMA tx2'} ^@smu1^mݳ@ mL &e%@? TƁ =:Zu%O@~8{o@,Z+}) KoXB=v6WRدdvXC"NlϬoT.&,}6/_+C$F1?}2j,Zx mLA30QO~ GYIw~7O\@mGEPX-s4 z_'l6Z=Ƕl( tIYհױow}Ύ9m( ]^L/VVL>oڈQ'ްɎM[[\X.H,ce8& Mr "EmqwiQ!_ Qh*"-X2yS;$jjYd +\]0;}< "Hb6-YDY|Q F]wYKV+/>K >y[p+M B^pegZMu"O^C)hԦh) eUy)H,`_GMo#gͽڹ6RS ހa?|[ashd͠ZIPr5UH)I{AJbFfSpljփl= ENXeun6_ֳ4ye%z\6]2=dydk,*#dm0uF*ί:>P(զ8Z Deuh6Tׯ ~d Նv(8nҥk˭9gW@* >. \RQC.[\ڛ̓HqL;!5!cII:HN TzCG.>aЕCq+!5|30o9V|c9N,b}-݀=R:ҜrlX }KI/zJ>-Ըh1bE uh yE1pA1;m1,PA+uQvO@.D휖VB;jB(2b2*qZk)yA|Z(CKu*RN1DA,ZVF b*pQW}uK TH h/0'- Sf3v{՟'6սE% zvJ"u >vth]>Kq9H9[5J~ 3d} YGO֌JOx #O3S:LLw͹JÃO>2&Y^:7EudY5ջ̤v /=bŇc=˲CŚEږ* vA?|^Pɼ!(B@]I)hڱUA| Zr hJC& T4J) -H$k#S>1 &@UYtu| S9A,yEh \9 9⬾8 Ei#bV/tޯ\ֽ2kMxz…qF'ǥ"Nn^u׋OZP3Xxap<5YfQF+23`%XD-qWqO)Xiʢ'Wh졺~8ͺ?~ 25EN*()kJ&X+;)M}{6}"v=#IcbJ^ iqj7=\n|\~/XKU!PlP!R lx9%Cy9nJ0ǁ 9Wb>j'_RbŘwZQ_UP4>]VȢENv#NT ʧ@^oP|%QYRUvEmߊ*e)c}9O_kYٷcXläݒckބ#NˋZsf7 KȸeW?F\4r4uAVc6Fmo#WjWOڼKsjQ7Q!O ts2K5Ys0(-3s ޣ)a ЖX C9K=ɲy z.jSQo`J' z;]o2 7wMvs=E%Z(,y>PRyC9m: ~I)ȁˢ|v(D?Ju Z# R)pӆyǿ @gtR#P0i2 yAZT,y9""|DO M( o&ǵAn ePV-:g0/4T ePwU YrKH rCU6ԓpnGq^܄"us[Ŗ期/ *\1e/ Xeު ܦɹ})ۼ#<;ڗw+6Q$agdG]2EbOVOkςM&Nm{lsWw# Tzh`Nzte9 Lg7%D?NnCِf(TOQ]2ݹbI[=YSglc,3(lo^! _rn\!_A@wI8 kb:/7z>ٳ:x|c2s=v r ̶6ׁbDn%YKdwYZ5#d6ZU>ڒ^ҏg|%K)_MIFTĔ ) iTZHy RdH϶sy6 غwVƥ(\}0NG)魡^rlW\ gGSzr{mika1AХp`2u$s>_3R*8yvŭ8z sm)M+R*kekÙ%cዃOv[`/x#(LVb.U;Vs?MBo? v5D0 _9diO.b[1ҕ@I2@5(ꊾt{@+I!igj\;<˳`,3/`~bl&oNmQnm̏6`$}K`35A,546'!n fY`1`<3#b!A$/̹c'8&32p5ފ`, b4Gg,=#V%cnfaW1FU>PL2k׿Qt"@eP,rGqnt-jXSۜآӦyb<06SP}>x$[g=[t :] u68:\uōԊ"MeTDWh!XU U~ <~Eg]JRkt :fY.Q[GU xXb+T:\ >SXRB3>wr^]`l7:d_o ~j'0TgI(f؎Sܧ"L~__8V'l Û2T}26aPjtAYo$}=O9y Im2 3֦'3 gV'!8jBV=to  Wd_y5 3eqޭ;%+^oq|uwOe{:d֣d>ٳ xW |3]fe >Uՙ:*v9 _0C?H; 2 N0NHNk**1b+LU !|CS1VDQfwK܃k=Cݻ ϟ;uлGZ38;o>9@fT|Ү2R嵑䃶4ҏLU5e8 xdU +"2 %}_uJɢ D M/!$( Z(6Qw ލ2"F<0fiH-P'9>Ev)ƌ ֫]$K_TW0n@K<{y) BCxSgxMw3`=EނnJ>zN Sq"T TE+( uLk]rx5>e6ṪCvQ^pJ!a@ xb,ץf2#SHͳ} enz|Z rV4` \C^@hd]P -QU? 7K ]X j1N@ܫiN( v|x/!PTu̓x:l| ~ܙe7P2Do B[P|:]@U5 Ѯ~S2)xAze "I2 tBQ(?4>BC|t}1Q[( ck' 'ܒ >{ǽDAP{CAI1$ŘB'x#/\7Nl`sc*:;I:(T-9#_wȲ`nݠn!׏™&]^dmяöB~t淩-p:8+1jF to b}qQ#D7(P cq DB`hKbݭD/jT~P]F2.:C h.Q}ܵWX_Ǎ~gE/1|TBF\| 9  9 Mu=P_D26jA7)6uQGr] rAu2Q5 C.:iNVx}~(ezQMove8*8 :tNƶZ:#85Ă#a^\-?ws\:TYAZZĨP<%.#s\|N(E_4bo.PV5K⣱?#FpW#r57 Er쨢%*CC6p35vc(ݘP!}Pٺ!(6ռ(E-E> ^GTՊZ2 P@## C 0s%n|Wus3@+컳q> *E @TމW<д4~k_XB#}ϴ>}8pu)ss%w.[:pv?S :s~&F7;N?fLpy.pRZn`5>6h'͡S$c{_r+3"`r}D_5M^<?K;(d .^䏃_PpQRe!=5η4!jFr \~s5_,s,V`)-ۚlpi{nr (Tho;vhxW8 $iHjYf1.G0Ri_/`ۏ@eV dbQrvBQ=$-2F|E4j qü@q\͒&} > \ƙƣ]qPFi–f/Vgn oG|{K*Ҝ-nfeoQ?a 5Sg$uX8-'5#D*^b=Pb>MeF$FCslN3^fDf@qĩʷMύ֘hȼ= h@o@vRIdi@Hnxل+ |9?o '9D 79Uۢ($ RCIyHc b0O|b K@.Vvq@DEpՎ,XS~:jnc,D ^ W=OKD1q@46b0[Xk[ngf.yO`L7:/n;ՌZ+DS5Se L<@z 1f(:Odg\f%l-uJD! AfTU,>^ Hd7PS@TSE!ر%3lTc k )WZ:~gzb81CNb'$F *'\iOx ⠈< f f\qM/OrLz➨ bB)qzUt-`Taaw>S]fqPa7=$|e΢vCr"UF禺j>u"Šgd@8<ܩ:l;kJoN'G%.52`56OρŗU?QElsf@|P 5}%MfWSE ا&Y/B&D>2o!R68n P8ٓ q(]}U4uL1kEpX]nשx:uF"ª']ž h<vYMq@ာQ`%)8yiWs)@^ہ2M_NİUA  ?n$ E54EP~+,yh{}D Lt=()iHm `!ߨ4 }&f4̩!䂙{Bo\{D)XC3U5QQ2}$_1`]>_ϫYԽwt>5/VV55Tp IXgUJs/d} ߄5vek a {?6{>Ⳋσ*޶jNTpZ?>)4-4+ˀ%(PWIP@eLTFQq@9@Fr([&'q-Ԡ@ A~YzW˵jg1mpvV6qQ Fwٳ7r/L$=ߺf}` *<1oϲ l~wdlv)?mSh_UV+5(a%}i4QZJE }\R1+4o6$I!rmS!4GyJar\&kg `=3nBĆJmcPՁ}േ`yD(: jS) =IQ'Wg3ub=xL_iB7^ 7 BDv =N|: CGFQR4OU*2((6>F]P ݀OPnTasP4灾 2P;s=Vం?༰NsH[yaGο]X0Kb܇I8 O4u9@6 Z2E1SO}a^m {hsh"lJVҸ/J÷#\9w8o7 ;}_SIV5XV@޶eZ҅OyGP˕N( N*5Wx5#ky[:꾒QP'͜Z@VnmA(||奔r WzB3>C1ѪVpSԉHFyoSX!jqŇyN7\A5; >@ڦ$*bu )ΡN'*=s i .ڸ@bw:wsG v1b%MdaT-r/g57byz@PfѺB=os-37О5~*8 [l\ajBŃ ny[@v2@&U YnpD}m%A;^BilݪԵSfKan_B^I4}j$ꃿ@4r㫷xϙ3.h5JKc/8{$^jw)A@xÀ vbA#"fmNQVPt8 X`ɽR DQ .x X^4)`|;JKB!DPb%K4aq΃Ths<#n"3^ʩ&݂kaմEՖ.AO`t*-72gڃf?loE) nX'~W0 c1h >Q}\Q\N95('ɣVI?'_ˋ2ZG{X;DZ* c&v_X:8-~gΘI~[4RV6Um"tt@^vP V<7zش*#ܛU /'ZF$ǖH凪mA ՈBVZMMpl6^ "4Z0K哅M G wyj5oDM1DEqoD]GEeQ @кɺk,E)n/Y)ڛa}Y›ëe"BXZ.*m%HVhc9ȷ(c6qaolk9F |,C-A| WOaYtp[S(x.ü ~ґogq<ůR&r3ca9r¤Vuda 24pWwd#yW@JVV6kjcվqn/B#j׊'$Aw˜|:ܱpzp)1]njs.4cq Tyݼ!8=*Ԇ#8O&ŃZ*W^*,jx9"s~T ޝǻ_ ~jm8 XsPlmPnP0X9O}ik-Ojɪ~#ƃ'woPGI!!z¦/W*`>27V񾭗]lc.Ka;fbQ@\D :Q#>9V5v5q C>koyaeHAyy | F^p* @6xK6Js3ʽj<.3To`0 @ R]^r 4Wz>O?crc/.15PlyYe`;'7PSAY09w@!.óʝ\ďb1̾Ξ)HDG<wPY2υJ$j; ֓5X vu)ӏ̸OxRZZJ=R9DO|"] n#D"] |]NtҦM",{FK€>ܚ@$?sn_nBF? I)?&{q 0+F, =!F! ]K@@Ds(' a19hW'x<b0k@3>GP`=<66ܿ?xUxԪa}Ĉ0wɔ cyGP~K< S\lqiP7bB?(R]8{ߡ|w\\Z#`G[SZ_" P`P L$iJ氿ݝ7Z  ad0as-h9~q>0ppĭBblJY Dx⢸/X+ rR NH8*@AqO^CF EFgx!:@B ?B"-{K40F].z{zw\|j Y!k}uqxiZņ~Ǿ}-GʢXi0cRiVUr9\:ܵ߹M]/=OA!V@ρ_ 2. lY+lM&,YV(e+yrLcS=@Eȗ0MTtQ8k f'l϶o{I*G(\5OE{"G)誤1 K { l_: d 8(*.Y$πeK RΊ`QH/DM1x Rο%("dѯԼ M8wOPg 3hF4R&F^B"`Utߦ>n@ 넁{N8i5WSȢQ:\[6O56.ϯ|*qQM)G5qTo)Y@uF?ؒv; kr}7=x,v"DN22f,fƲ*&: gY Dnh rMD^!A_*Wl sӳGS\E*P.V0P3f Rs'8;x)祔G @CfC0).ַ^#!ZFG}LR9c Gxfe5&D%bRb@2Xh$. q@eB)oqpԤֲIPνp#%PO~`+B' TK PRl8wa@ڸVO≢$P)g6|ZCd!XW+CkM.nh 윬΢SOWK1wN)}RxR,OFycPmsb?ЕgnFnU$=eq>O?.pDb1: "\3'.7eNG-G _%ȳVP6:@g9{(L߱uCSD?Q .J8,3 =s?,'SrB{-u+64,|MV޷mX@b|zJ :*H9}XAAkRWKoZrĈL@e!pYg;5_9S4(]1|m+CL̰yq(DA0,[Lo|zF:'Yn+_{`h%vq  49 M Z>Ț G5w|A :gِnvq Fü6}wxPmaHɿLַ |5'|`䈀?jfԜFUAD|4ץjPsq;!Mo OxE셈jk슨Qc~6(5LW=Ǣv}P4 QXp2 j/ pf+n)gm֦)o B+L^|ѐSFQ+ګ o4W`'B({lc􇘤p/_ь5q[5hyfaawim,kկj%K!h=@CJ4Rj@vPKEUy)mԀz܎2̓ hdu Y i:}E9[+e/x2gA~w쯓 *YeV}ʎw~3D=!8)}M+6.$ѷqwZᢕ#VpUha1]Kiڃηb (R],>N_ οXPIVR03TJ=l߀3VL-k9F uQM*HIVxKxX `P-`!AnV9+aKn!~ATNS'r>^߹vEG˭GuDix1)/FU\->sޝEs'>fp}p6 9cE@֖||Q->i{y%tlF{SSg햹L>{?+q cajrJ< ;@O(I=·sRɺV1c 4u="n5j @TQM簿fbl "\y^МPZN^AT1Ep_ePÞ}qlΠS_8 ÷[{m`,5e݀.o6ay5RT Xho;ddf+C}':(mT_m{W>ul0BIW@J+iS",Po}[A lTR#qޱ`kwB׏; GWJ ɼprtT+G*+jht|P}] b T~ſh \KiIRJLht_+B3wN҇]!eWJQZʁb% \Xh_pw:` ?(O @/TS=b9&6gP+HgGQs-;v."ĵ%ΗghڰSa:LMTLjZ:5A8?5'pYjdݪȳ;/vVswuU 8+ dʰa3AijU{\ pap.WOoOe4c @BhP%r^:9 /|uqe%A")i4R;uDyw_@+Jǻ̗jsFiH`cA$񛂉 8ّY\O/Vݬܺ z%Jf #:ie,4$`VጚJyFt}ėJ`R@5~pR:{ߩxZa/^ T?ّQāsγB>v>)&9]1wkr9l .k]X#T9Ev1PbGj7N+ Zdl=?p{,?9MeYо(R3ʏ/T`BqU-阠Y O͙)M cn$ ` Ҁ=qA:`NOCK}.<^=Yz1Tcߝ ' @/W=2A.3ox5gٲVY;nx^ҦBOVaCzdmCn/J^1YC p 6h]8D58nQYZjXI־&E3K&4c- @hQ% LrQo' 0f+dqWawɝl־ŏvg*oV>K< F>@τNKըIЪ쐤C:i ՔCiB#1x/GAsnaݱG6c4[<`,C5|`鬷(?3w6Zuj10+DTqqN:Չ!r*rXQ I㶴AB扇ӌEG\s;FsXpI70\s%23mb8yi0pKuz>gr@nyB~7rAށ=< .~'kڅΓIBӒ ':O.OA%{B݂u뙧 E+RJ a\RFe !G;ΌJ?Pj28B3ZS&M]r\`i }*r03'ä F5|x,[鼐SHtoN:Ty ޳6(q r= HSw nUi@ff*A~3A$4WATD JM9RKcq̏LnˡDm,(k\,*u܇v2xs~~?emXfհ_oL3d(ccEj)OH1aj܆W0u'ǘQ^^Oǎ?p<wS اjԳip?xf\@! ;5kA|hB;r<+~br R_MdI[vHaLq2D2weYOALY3ÃG>y ;\k~`ͥ`^kg7/] q!5 թdUWK橘v?tT\(Y g%/kzS^΄}[rޑϘ^!GDg}!uMq:\,h4#}bӇF?X_[P`)~|Y\W>mk,wDKOl-SȻyveq//zV –G֌uֱgpwM#Mu* ?kק)$@zز-+%Jv(qXȶ-ڽcykc,w F^'k.sX*8f@#HeFU+Bc|l̆F 0:ɦ غc,Sm0wq00͋P׼@Cի|;r6-@ ]pmMwl\*}3\ uwwE|,s6wOONC(YF˹3x~aȝv6[}2$Sh;[^\@4 r|<{WGcn S{>O`(9X,Ϭ/!c_fRFH%csHڑ !7NΓWY6 lh޵[ FYl%~`\5ss¨gܖ߈QVJ.7!_VA:e3jEmYcVGGfuq۽6/k̹[u{/nվ.sFfWO7RЦV]9cC)YRmij9,[X:T(jx*XoE~h1emG a̞7mA@cmD͊)+SEF׳HHe[@UZU+>c<Ġ"%`;m6t,׵tu*zئooַ$pf45H~H~ o'fz^n> GVx5\rĵIٙ8 mOt0ҘmldBy̶ _W ]32`3V=2>P~Sy_,g{_BZk~Y@ȱWkhrc2QJ)ǖ0C&&X:qut2 :2惘DjF@Tԃ9{yK0%\x^`&MmQOe<{ ov5uK=UGTUPYTUcm{$=/=ge׉5R܄3 =; Yp_k>+ʆ ׂ`dzN8ϲ"Ymvc6h`.caTg| lio[_;^|@ 2'oѐ=E {6j=J8 GB}5IJ) 勋J $(!Ö7]<ƈ. *ț"@CjZLWrQRG7w eH=e9Hے8}07D:>0[@;Eu8T2cd?w|UUǿ{K \zPJS``GDa'Cl4рT Rl$0r~}7)ܵYwaP+?MpYߖ-뮓SsQ>[ppQhAK\Gc;;LK7Lodd^eؐ`A;wm"-) v_i[QS =5<0?P9&)#YE;'180q&t#ÞZ_`n>`wHV~n?h lbW^P -W@!,KB׬X]qiK Ү읶:+1BzxOfLYD [lџ>掮[/|s`]'6vr.-%RZxӧ`ΈE[>|n^W݉ZI7w]jX .MC5 7Ceܘr/rn<<|%zgK2Nn}n?,nvÚ*x{1T4e&n^^Do۲v i..=8/ySi7<oͮz0?(S^{P f{O@zy5,@۝P'^Q|]|b˗jw}? uS8ǎ[dݟdG9xXE%0o9HT [Q2miZMz'd 8?n-|,(#L}ꬿ]k?ͥqȾ`LZ}6azyd`﷋L[# &&$9jBx ̓GKSucAԆGbڗ/;=M#r7xmX5v<w-`Յ5yyf\@)@75\T+{IJO G+r=ĎpwAZv N@vIlc> :]2Z"~\/< @0঎o? $.(01!o@RcZi+C;ZdK:vn8of`Sۅh?]JYafَLL0m"jgr) } `Y`bj2%fi`9a@H d6z$!Jjn,uZYN^E諥6n_8j=E@Swqj Tm.sݕtYSsX,w|pEz!7[}k8H_ڷ֝J!1 ?`r .voc(~ꞏOw)&e¬2zdsP3,7j]/օ_66  OQP}Ƒ}U3&ekvVFT!l B= 0}GD 3[c8qCzSD(ψP_J%2g-N}3Z~2gn=Yݳ8: wbeyE+ ijzA`h GQ *M.UTW9%n \}Խ إL]Kz4]Սdvh85pRD@hy&~.&6 F"' Rh1@ǔ'Gb8AhV4)!a1, ղ1`+DvGn{CtJ3@l[%zKl wc)(_fNT[@[ܢl#K'0TP:*`bdgf#幽mh^k|d}ўP DAM\ kI;!ڻ@*$w?HIDATUIG/< `x7׊v?e_hFk:w#@ 4K-h\ 6.W4"cB*ɐ4E$dLK#‰TzA,(׊,Js.\Эor  0@xvq8ʻa iJ7ذt`8G&SuK5F'C3fqwav1XS UzB%aJûʚR!CG\_>bYc%tEXtdate:create2016-01-30T17:08:58-05:00*e%tEXtdate:modify2016-01-13T19:52:17-05:00^tEXtsvg:base-urifile:///home/andy/git_local/monkey-business/cmst/images/application/cmst-icon.svg[OIENDB`cmst-cmst-2018.01.06/images/application/cmst-icon.png000066400000000000000000011072041322401607200221770ustar00rootroot00000000000000PNG  IHDRogAMA a cHRMz&u0`:pQ<bKGDC pHYsZZp#}tIME "+دrIDATxuxTg睙 BRh-mBvKR7ҭS7-] qwydYv+|?׵̹ٙ {WE8V+):sY?eggO?f;|,W7:8ǺT1Wzsq9_$mohPtt,]QWg[(%_w϶ymibή:s$bꑪjj9 ,G>+;~nnՕfMVOyx&m!َ(77Z%LM&jswׇ,V7O$*Yշ2''C=9::U]\RqVjt HE]+>z̐HzR ųBޕpy^Uja}ſ_+$LuժjNKg8[.gi:*}RuRY!EMEt_UUZoT,.-ݢzjXw5̣ern\Ue:mԭv3ۥ""/OܽgqO#C IN>{{`yQGO5zNnQh?/jzGjDDL5J֕H T0'kJJKY*H)bbzR/),.t~@ y>7״`SP`C{w5₂gRJlF7h(`gZ{6mV;!!/lĠ ) D@|-kr`yJ6"JP@\$~oo hlNlR,3ՍS*B8ɹK}suNK~A䨞%5+6#볲BCDwԥ\]<%.֞v3ѯm+YkCCe-icJ5=i# :E&cڴ[kҧMQzCB..F%䧆!^37WRUgf*!99_/33w:_jOY;gdL]Wkퟞ^="zsZ2=P]ma X[4흝Oٶekǎ""؎MtcG\>W;vԱQ%8X& 28oXr]jlHYVJەjMjm\VT {SGYRJimМQM޲Lqs3NU> ٔk3"B Mqǎ:T+ߵoO g//c8!'reJO}78"wHo Zhĉ.ȠYo߾}Zep[NLc=%"BL˦Ν=&?N a#jnmDH{=.5UfO7%E%)):֤dى-S]vYE?>0F|3{;۵3E*_EEَ\]*҇dBv*תdܪ8:p)n| ^WGzWxHRUUkLL>}Pfo%Vj-7,Y_MO^ʽ[79*wdP>m z\nB"aa}2-5U`Ѻ~zAΦ%*Jߤ^#W/ҫggs)l -9Mز$Y JLw_^)J)F4ohVzЩMnۧ\j7i!S=tܨ{e~C$x?Ъj+)\ތ).N %gsM;rZ4AKA]==^[7^SDC~eP 32(H%ed߯Vejg߰znÆ.߷oGUUF\Xt9:Pk}W.8ַDKtWAԶy.dު'&w3w^ud Ӄ?=xpJpnPXh"fn útڂl\ C6I:T%T.d)@Z3E}$%ӪZٶMHYo7M}w_^)J)F6wXqdZoomY܁mq[5p&=f`9e;77K(+B=@={5^gq9hyaݗhay,9k;tk, _7}z&Wíx)Z;vLb:U=*m\}vQZ:0 +Wѱi# CYPdztX=O_犺NԀ\G>:R-ڶͼ<}>t޽ϯ5:/4WڢEim6;;wRPгbaT*ÇKz:9t'KFh2I^Y)Zןޭzd6Y?^H2:'G_>LO?dժZQW\aǟ8k*+ 堀-ʕqqwthzt)K䔘e:Z!I WcusMZ.۶پ}7l0EU>+VL gbb14?גS~|EgmKԍ2]&OdftNIQ/}R[RM֧˗W}RV14='IXRmXy^V듓'2}0uZs-ɐ7TTo(#%P\YKnXd.7.//7:&P&f]uqi|QI]gM&饲EF9VWKJ{Ε+Mh%~ggG jڑiy%Vhz`T/eer9R6~tKr.RMLa{bQLc.T-gѣFQsdMƑi;mɓUTȫC"@bJ1M3^hbx>࿣ʕqq%%^^%PpڨhYbJS_Wrb۶, >`ݰeZ1&TrG%JFELwu]~քVoѢE6t)9R٫"믗GD.gGJ\] ӯ2ζͱ)x-pɓFZ" XZ+QaY}r)\}ܥwFsE͖ͦv۝;շ=}dbYXpӷN -hf~9kw1RW_u^+/p7,|` j!rJvʭ2T=WN/\~O0:&Psì|}MWuk$WS7(@^FfI)ϊ G?GU/ؓuϲ͛QJ)ehJ(`h6-ZHkٹK#MϚ#nMoiԩAq{{s@zLe'KoS:S~:mHIIFD @uf AiՖn*OZjj_}eUvwG~%#nx@ 胺X{zڭ27L믗H bt>T#Z7GG/ [o߾}7:&p.QphJt;c#Hs뭲R{.\e~sl|'.3#_|a: ozJfʸ//iٲF?#uft>F"X[GKQU߃)&SUEѣF5=GvުSe8F4q{Pir!sBy̴J4:PvdZޢ@} S 78U)zWS'Zj/'eY_߫n;컼xh(`ZkbpR!w))wyU/-sZ'P<+*TYJVW:'-Z?!u_ >`Ѻ~z4QͿ.֫hF/߷oGUUF@D hVs- 7ݤ{^2ۤH://Wj+)ћNU:EWY~{OM5:Z X@+o߾}ZrxefNSn)>|'uu"VfTW֞Y"WZfkyMM]]Mjl"uugAjjk/JY,"vvgXL&Yכ/X;NNNNgo`ggg'b6fɤ$p A͖ͦՏ5k$Y￿M11(ٌ ~  o2u\7k~R^`ښ*3jʚ*ՍEWW7ܮHu@U[xƟ7444, GXsrrpptqphbk,n9:]c޾Xk_xӿo_)nΕSBe~Xo~_v,rF@[@ 焻FM[͔9rkdܪ8:pn)4TTWVVVUTTTUU5^_QQY)RZZYyv"^6}@SpXrrrrqqi,r:;7^vrrqqssuuqi/ox3E/@nWsՔj%u*S3yIH0: X@3Zk_y%2[!#et9|zg PEE%%2Ҳ2LL?qG7b//{z7<=XrskLx)Z&V=ۻâZ҅, IN]n[]f[=s՞Wvdt>h-V²bmiiQBUaaIIqHqqcag&S1Y h,lpqqsk,lyxxzzyx{7^vwo)xb}4yT6~))ʬ>}W:0=gL,+3:. X@k *G 7$^rqw7:4wUU"EE"Ņ"EmiiRZkG5;O-ooO_<=EE||L&L&ZbySN2R_| .۠w.jhʸ>}A3G+z\lojkjkEyy" ޮpYR׷qo߿ݸ= ]fd6})_/[f{QkMv ٱ|87(`@V_G~Tk|Pɋ2l(Drr ^.,)--///7:5|gWgZ~~"AA>>~~">>"lNMQ٦ؾ]%rk~>˗?RE XyhёiZۻ%W_Ry[ֳ[MMmmm"Px%-GcA+/ Ҧѩ@5OJG]&EW~HAuP55Fo[P0ͮ-]/@S:777ZI[~~"AA"!!"vv vhѲ|Eo{.Ë_v,rF ~0gTGQ+Ǥtr~Kzzx~/Mk0Uff6##//'rNHuummuѩՙ%,}ئ`HHH@@PHv &khAI^Y)g_nz RN(0P7WY*ylҫggU))ii"Odddgsd6mN jFO͖&*I-GFã~𙘘ht>ֆL|<Xxy;WIqEEee""ii٧O7n WuuFirsi׮qrVmۊoߦM68mƉZFL!K/*sg:.QD$%܋59n3^"[,FzX6&rt'Ndd`~Haaiiqih]LԩMPvBCD-b1N "rT'oWSUO'wѱZ Xhb wl{LvUR'MI-Λ3Kfffd4nh,Z>-`vv"Ү]Rg&guԶmHH64TZ#u\MغUQ鶇^xa׬1:@sKhV|_8hyb{⩧2C6nѹ<%%"))'O$'gd:%8*/H^^ڷԩ]_}|DR85W8`)瞛mwҥhmt>_"Qpi"yyg Ugɍ2ڷgC珺_NS Y,ZRPT^S$gǏ7:'7@رSN9~q~HEEUUU)@kvfÎ Z!!;v ҡCpp6"fl@sv%Yy'|mOe(d; XhUڡn~1-VI4I&IHҀG8!xdrHQQiiI)<{{;;;;`۴ رcGm;t`?azJLHЫmOW}vҤh?~Z;>@2ȴB>& @S]][[]8*5q/F0/'hv$١CXH۶" h=oyfKܷ|9,s/;LL̛'o&\ZkEҲO>;*1ĉdS23EVf3:-@"ҥK:5n Z:xyyx@B5yKD˗/7:WhV:[oo{R#z֛oT=O(WUUV$'{շxɓwIذ\,bE#ӊBBLڼmßxBRF}׍7JWD.XٴDRS3332D㓓9rɤ$ܳдfҸav"ѝ:u,ո  0:%Cݦ>6n>ؤGlncUpAsì|}7׷|AGS{ir^wN$))-IcDRR)+0:%777WWE#"^vpwp0:% IMM^ݰAV9G-~ѹ( X8/V+)2]ezCkpl+u{yyEEg'Yǟ8qHJJzzZjYF@ScggX,";v ҭ[XXDHn:ED]@˥fwrfW}~ۑ<{SSP9Oѱ\w]$CeޣEN6:RNeggf:txbǏ=*[TTP`tJ4>>~~"=zGFѥHډ(eyEz"ixyr,Oi,b(jU||~WHi套 :v4:?ff9yL9pر#GDJJʌN 줬KvԹ)j\Uv:||@/8vl߾ޥF?dʸncƨ^]+ret.\}}CCCȱcN8!tII"UUF{{;;;;.]ڷl1GΝvqssvvq1:%B(+BzꫦkkZ XM+woIX){eJct._mm}}]H||r"= $RWW___otJ2M&Y$<<$C޽##44s5OJ裓Z X7A۷Mz9{z̐H|3E'ERR(Zɤ$ҾH]DE%jtJ@vNjkΜa>;v \Zu?ťUsMr:wL[GG~t<~<1QF)ԩmېbVn"z5<=ݍN PSW7lM1w{='!\堀,Zhf CnEirީWYV rHjjJȾ}"qqǎQߊY}DFFG31 h^0^RS?s1sӗha@E X}[\xAzzU|ut z0:srDv?xPd#GD˫*+NbV~QQ=z:;;;oXB˦(`P2ݹS)ԴiF SP/ѣ"{$$:$W\\Tdt:b"]v~ճg.]88Ԩ>)I;ѵ?>yr 4}Z%]/{ǡO=OYvvFZƥDvNH8|X$3377;t ҳgDDTH~]v.ҥK;LJLFZի3RU<0[φG XTZ[,U/*pN)!OKu^^FZCOLٵ+>cNLMٴٌN 9pwwuuu߿k=Dѣwo6mNRH|X_/if#v}yf|e (`4;1>\ϖ՚wޑR\@k%{w|"{9rHEEUUUD{4(:wo77WWxźP*ߗ_27OZT]G [6؂);/$K%Kn:$x=G"= }{\"O@kvfΝCC;v80:gO^t3:%J|. Rm:qûeL\X;&&V'cO$מ< U#H_9]\DVf%%?.c$& Yo߮]E ޽woР6mNp$^ 7si #R>]n]et<pPh"V+6fj%I] h򊋋DMH8tpHQQYYi 8{=E ѣo߳->i++IůR.'_[kt<pP0Ȋ󇅇޴(ߖQ`s-ICCC*rPRRbȶm+vZkmtJ,EwnD ٳo_mCCERJ)pnJ|z*뮉+F/.EvxeksMr:wL[GG-AnnQQAȎ8 sg\"UUFǧէȠAѽ{ha $QWWٻtEI^ϧ qγkfUNLϗWvdt.9ZmVǏ=*ew$'gd:d+8Wfl޽saz_K;ubRpNsBGgy|{ӣ+UWgt<[6؂);/$#s7sYYYEEEȮ] l޼o"EEeeF[dȐ^<{}E\]N4oj%'zqDŽ'ݸ\࿣XRǯ{Eެo%vnnF,ؽ{wٻȑMb4N 6w}'ehVIh-J,k#TP`t<p,?i# jw{Oj=;:\@sR[[WW[+wobb\ȦM{%rt~~nUHH``ppc!_?~zqp7:l yHmG4):xf~5GnhcW_UwɏnI-UWTTX(oΝ";w?|>_yB%+1qUcr~ޓzĉF={ݻwN9mٯg.X,M\G/lArO~GuVcВQSZkM~ nE WRkEFBdփٴi]D**Nhi,]8hP={=`С"FU/Z*uL|?Xs(63gbx|eeF%Z?'ܕ׿Gzz1!}3:eflذ{֭"9/blVl2"{GFv&2f̀Ch^-K32L|9kք h5-6u''iϝ+uW} N򸽽ĉtuvܲE$>>%qtgaaڅ\|A]$ҭ[N;(S1ߨg3ŋVuuwyۃ?*(0:/5@?92^' {Œ4Vf8phBwo&et:`?1c:T]Efb1:DKdKgϞtW~G-2: ,o_ms2|R^;9s|!&#Չۗxvm&WTTXht:/77WW{_dĈ}qqqrrv6:4⧢VCFYû񙘙it.2 XX}[\xAѶzyOJ}{sFݻwN͛ؽ[tAdذ=5_AD<<<=NKTd]Ilʃ<0!,߬>k\SkДPVLrwwmG7OMOubZJ-[߽[d={v1:Ml2"EEu.2nܠA]$gt:`oK\n%X20F)m86}ZE|^$}sF(,,--)={oٺ{EN@8G$::,,"Bd„!CFi>8m[\+JK 7CMܽG #QMyxj}H$_*YY"ڵm޽G>,bl6hti>,LK.h(۶hTWq11 ,I[o;˳Ɋ&nV^ rBR|W%8\%}M"qqIIGhF""ᡡ:L0x": ȳK?a{;'Obcp!PMF>2-okM:R|u&]5:SZj֟OI9~ə% 'N:tȳK5n8ϹˎEv\| x"A7|^&psӍK l+rGP%i? @d„BV^QQ"J)ҩI ͕i2]͚5}.5:/<;y.q:oJDx@ϗi2822'\\m[ㄫd&\кoԶȤIÆ)ҭЊP3%+wgle{X'?W/*kݺ 8(\BZ"5A͏gӇf%L$ҌA 7:VkmTM*9wdeēOqYYK Xyƍ"''=J ~)d%ҭ[N; 8OVw⒝-drIO?tX9&ȴEaa֧tWr~[8\W\\T$jՖ-7ݛG ;:k'2ucNJDDo߱ѩsl<.(BM]Fu׼$$ ߃8gb9S_-HѹsTdccEv<|AfZNZ.]ڷ k,dsvb"s"^kmgorr;|O6:֯߷ãnk{I=V\TQQUUU%~]۶۷cH}}CCCrEڴ  4:רj :pꗇ>}PfB a1VѨQz^BAw2TWVW_sΝ"55uuuuFRJ)uSd.5Jt/:_ ~w۽X,_߻`_.P(F߬_ٽ{ +Zk?rDdɒ^Vt珽Ȉ} $2a!Ç8::888mسgn4p`7,D/-2k^%G_]j\_qةS))"?X6:q\\\]E&M6lHC{Ol6{J+/=§z B HLrwwy&D_zIW_mt..(Yr˖9pرS4]޾"S1fH^QQ"N@v!C,ZU/$)iI/W 3JKE/߼yz={> vBCE.|E:tnT@w<{w?hFNcEmm}pYbۧZn.r?N$&fXO?]t",4gcde抴k,ltJV*jSQb]<֍ X1f?b/dG/0\qfΝqqtUZZQQ^nt:l6-#0@daFqrrppr2:Z %ɳii&FcQ[u1}ZduV9y SD)qȷm~vY Z^_o%aC}Q}iU'ID11:s^}~P?im?ܯmG\渄8U_1|>pwaբRNJ*#ʧWvRڥku}GŁʻ*.|޾Ԛ+W=U`o_W]}ʪkYVjeoWX[XLڙAAmڈ(o֡/X'#G&^RnFN` _Z0o_qQOHEzVСѹjl6[سGdŊ-[6n6:-sjZ;UUy,t*7xq\SqBMg\TxUS3K x}[kjpu;;AJx XMCIJGGs/-(({ѱ࢒k8:]Tb_ѱҏ+pt,YXGҤJ>p pr*i_VťhEz7NN5ug}\32D ݻ_?K#Fjx 0 YGeꗒ2p]Íhx@X5K [(F䌌SD.\f ӧssN@`kn <6TEW Γ++xMpY^U5+]]sW*yVUL ?jW&G5ց~K<[[_>5:%ץ˲)NN _*y9?..%VE:9>PIeKQZS\]KW\SUd.Ky"w޻HbF拯z,.nҚ ߏz0:u% MYRiN4|_^kt.?)/駍׬ٽ;!!t\XѦ5sBgJ;?\Q}WVVexǹ8w{Bee۟}FVT񩬨yד : X-x-/ϿZ^-VS9ŧҟ˾8ܪ\]2 /.i?![Kյ߲U˫3^ut49%СMvD{ҫZ&o6 yH^V7o6H׾ˇ 3:ubww]Dj=;:\/)Vmr="˗oڴaK Z&1|Jz[Zx[Yoʀў**"t<ҿ>hZ[sY~T'?/5S=4S遹Ezx+ݽw+z\åh^ju'}6OJѝ_oY.jM͕|3[3:ubW9aP}I\et.srDn͚EN4:Nݩ5v.OTT|{ʣ$2`GYYh[|SJJwn{%ee,rϜHez#`x~)>K&k'2²>+XMڪw3}{zfxg}SG;/ӳtq|twwFH\\\]En//ѱ Fy6Q3LRO=q,. BJZ_CN'K'&ښ+lٸQdӦ}vٴٌN@#nGoxwg< nw\?cm.-uϵKF묖X⡀r4Uj-V*|)kqH^t]_G^U%T}jt4f˯U_t}ΙF¹eZ&M.okLy,Σم1%_|!r {9|X6n\ZT4ڼޔ`|ͿMX^}%%S@Wx_>BY-ChM謁1eﶷO3JZ{2+do9)Ǯ˫W*)V>Po hQ,E]:]zѝ{.hϿ{͕-Qʹٔlo.j"sZ'^PpsgYOƟMN{l9%o;]g%xM~Yz*w\O{[sT'o` jt@F shܸ/ ޘ:Uf=/K6FBfl6Hl޽;vXѸ`]]}}}͍NݩaJʂW*.nEu~K:DQQ1]? XTVC3S=GJ%_u|fyFvvGSL=S_+'M_md_̚X д)R"W|8&Ʋ1[>lWRl;;!%&Fn Zkbp3p]_~q$j+##''+K䫯bb.={4~NMM;YYP) "܂vek\;G;44V wK ܾczЈF^@eޣRӵ+lS[)-0i+R.ωI;T8"#N{DRVe{C9{NO]􉏏mmdqZn+Pޔ&\㘏GiѶ[GGszn-} +@Sd1m\IOYL߬_ٽ{ [RRzɓ"~lHnnQQAѩii)f ?kgQQW; hAnvW꺺?&7YffY-qZ&`5,u2Τe'ǝ/7'-U-0p~=wʇ_-)n6mtTOVUHIEb|6=jt,D?9õ8AnOl__suYx]4:|367%lA[Xޯô.o皗krҀd?+"rR6>ukR}hDz2ĩdg^=""OWmybo}09OvΚUQT~_ 1//Cjss{'FHAN쮶Z &˜L:%NQbV=5%?''xS*0|HyyFyki[KK~w(,8?AOQ˄s&KݡnϷon.Z฼cG2uvK^옚:pE 58(_77s6{s]U͚uq+@EYqdZoo@Po"H.3F6:ZEfKEJKˍN8ϩ2? &7k.?evKoh G&`#eV wKU;*y[~GgΉ'~<}"(d[Y]]~M[}3/~; dO}&k7z[hVy'L,i}[ʕ; KyyUUe߯Ybȁǎ%$ ߘ:ԝZL3;ݗ=6ҷ]eQNENdos>tA[Г=de]wh`OʒYݷk{<'((c iI''v6ۺLFXGN {`9_f˼Mw 1<muo..FlTWq11NU|?#E,@re\\a1c2v==΅e߾x ׭[쒃N!Ձ=rrWF-5~"]mt|Q3=;DEH It=~YXEy1(hORhXɝՏkH3:?*rg7j^={?x[]wcshhSo0s6=$FRcc+(+'Jc{*1͜o| I0kkE~UDIH8tT>n3JJ"\6~=+:eeJ -͵Z9 L楟Zf <%.c-K6>.cg3`Z8`ssv6:DM.YZ~7# h^(`ZZL%{Ly53sF>^]_VEw)x~Vs?WbN㳵~_cmn!!@>>R_l;/6ψs˳;h>}*Wߩ6ootfK֪r^y7wcM>}RV3X"~.. &(2C2suYxÆիEo?th>S@g4jm99_z"tlVK"df_sJMvUDDN}! JO,tHc%>~cC] YzxpʷϕTft~_S7.!nެtEn3Ǯ]۾i;w=Tl&#`a}Z>;9/fJӪd gΜ-'f:al2@lS- /MzH>FB된q_,_"FDZ~嵺wm+{-ߘ9ةsr].cL:L m`VKwKiY^l'2RDD.1:skМ>PWMå/\ zݻ_ K9YR:GG~[Γzz>~ߍ8p̕miZuw{g*cZM9U*cG۝:Qn38L5J֕*uӧK 6>6lQ$o Xf-暸Yy&jeh<+>Rjt.l"}|?de 3u< +^}>MO'llF_ZXb:R&`}skLjy4{~?5 &kR[fJ]7wÙ_m[Ws Z64Q]8fٮ]&O'OY߱vүGv;W.0mj۶@U`V/۟-_Km(^j򧟜wWt\d:G.$ Xfi)97,?@%r9o83jݻoYl˖E.W|٭OwiQCwu}ii%tknV Qh-3Zj%nn(`5% `vaty[^ѭMǕyMzzQyzίE]fdUƛ wNjx:M#@:VTD&YYFyK?nR.HowBӧ+;P43+W|5wRJ/dtl啕"_|rO?9rDRѩ367%law 5xh]=ujGJVXͣ:@颀V wKksKV<7o#3车RS[moe\zç>_MZZ[,7=UPhn3:ZÇOL꫘KE*+NMjSwj0[N(Gfc뾺:^BritPﻫod;&cZ=:Rd7K2-okRgBA k'N4:ZKcc׮{w4:4=()鷿#RN{ð}W{_U]-ID)f4*͜u"ڷ).!~Cq gnw㔷2عPQ&H2W|&>%&h_ߖ|wvY^50IBCê*S>={w `@S/<&eմ#VUȕ+I\hҲOe/-**(0:ϩ{KmmtLКaCJMMlv^"d?D Պ Ҩä6^{x:iˤ (8Umۄ)Y韷m[*GG@STiXwke S~U0WW܆ Y>kr.\R]+~^hJ(`U  DFM@իelFBˢZ_{֭"˗oڴqjYF O01%laz7þodLjE-+.>a?Oi*ʲ.06v}m!cegζrs𰔝>>["v'N5$|HsFfŦMjoId9 ~)ӫU+`ǷJ;o2YzȌ}r&Z-ϯ5HZ=ȴECvemt.,UU"|"))F ϧ2z>ĉq=F|= -w55|+CN 8(^hjLCZ)`;;((~3m:uG#۷?P]+Ս O3:?%ɂg==|渁AA_"=%;BPd3x%J~Yκ7?r;k Z' XCL藿{d[ީ[PIo6JJJKKMUiiyyyѩeiknFynMZ蜋t{ĉ>{x@*yrY4ÍŬ%#*?97&}V ۲됵mۍwčdhg&^@kS2$؈ֿd}yU?|mYoCPD'.$ X jej_w\?To.ܰٴDV޶m&:3٪Or3Nw~!%"NQuu""rP9^pz]Үn NK;ZƉnn1MT;-رg% do9/l }yjjʣoWeYy$ݧvFEB  b,nw߭ =7|IH\hKKE>tEDRR22ҌNe]%. OKO8ѣ!jIțEERL &`>R^!7$m׼9#G%Cvk^<@eDs_.1:/+TۗR˃b_zHN\|_RѹDْf(3N٪y۵\0O+_8/G+# R O=%1 O= 刋KN>vL/W'*Ssfol8P$ybLseZm6MduD6nܳg3?gꨮYZw|yfEw1)i}C W(̀ ~έ~=L[ 2̬ ;;FFJ=<4%S'F{e4-y<2Q.#,б:sgfQݾ?U]3,gkwr8Ip.P1ɳg;8Tu (|[Q?qFBPRR^^V&`ҥ  iS;955}D125uʣ?6x/ep>QU;s =r}>6<<|u#B ͙7ߜpdf^^@?dZZ]]~ot< Xd}<<cZLޒtFBpةS))"~t"UUF?.2 FNrᤤ?vitVF]ٲfktJu  ZSs7l$ך&꟔=Kmץ˖KDx8,MՁg'}4dsphfSqQ3(`+JJԍ^-7rFBvf)w޺Udٲ Dl6m652KN[^YY_|kGnyc|5YdtRgG@mowɢÇos17%&~sŶ-~釳##jW϶7:/$Poq0lElsʬ'}|`RJ)e߃Y5ȴER'6n(ZfGG [eeuuUg-_"G8dt*NۏVWg^ϒN815␾AIIm{VUIlRS+7.tN2N{咬ذaΝ7>>.]j|6P`]xzdͶT6"ZvG8*:PPбZLy.7+廼xêW?*IᦇnoZS_}ȋ/~SyvXy]o}w˖ݹ.{P޹UUFp)dͶ6uߎschryNF<~|y)Y.kbIzTӯ/;{DCdը?lڸ- B Vs-! mdft.4o7߿{ȫ~ w{;45nڲmoj䩧JNv r `tN}ۂG^yޙط7jU#Kָ)e.LzBt'S3Ϥ=_i׮F?ּxEQ(n}l2m[syjhhhZEjժ%KD~+DV< R_?Q_vxرye?5m~lڡQNOV7.N<[Q7]bǎW>DYYYFre.)]ltsMOZ~8#zc5]dt.~D/-ҷ'k͛e̐JF)..//-yc;޿T rpgm EԴ5>b!!,./Ǝ];n[U Uﲳ3:=#.--}!7m<[DllFM_F0Fywv;9SG痽p\ց2}Qԩ35S=t)+%%"/| sg|FК,3mZ]epukj|^ Xh{|t}`2G' X̀F4`'rzyݕu7ٝ|;/$MzF7^ K1 Otur˺:hz/~ '`Ivwڥ[>yDz вQVbUmYW\!t]xl'y\h^NLOy?ӧsssrN50Yf,}= W/g z+ۋ &?l/(u:_rO/ v͚k7|.۶M)et\N鼪*rr:>'ڴ[6:zf%ϩ!࡝;h(`@ #OrY7^"3zjl"˗oڴaȺuvmbt*-ٙ%*m74xLgkl3Ou^5Cuo1Ka_<-3sUsOlmsyyw L9ŵ==sJO|]?y;;)s:ׯ'͵-פ wϥyy27ѩM.Uvu|!h ?Z",MӶ\wR&ֻJ]7q+VмA<0+K.˫j%_}%]~*O>YdBcN:qTZ"sF}?>lZ?{ĚT_\L򰈈8H"k-WS%44oO>c~~,"3:]q:7Wu3Wjmtn5ͪK,*V&xxXZ ]fi/D)n3GnHvqqזݙxiPСQqҋhܦ:uNw SzȌwW?˫]c7_}RJ%yh!b;t!rO +&ѹvhӌbP\,u/@MPD~[*g}| M}KUf> 횬ԭCP^4zlHNxjJa_=ydg#@ud|"DBqRTlCԫge^=#<#}|+| PMZ>]QnH)^p:ۺ56(>>% :<ϋ_dp;+n;m +':HcsPB|CLC':\]z>hlsfehZ3mgBKnWUGnp/ްWyy\V^O aĹԽRkUeeM6o2Yn]_u@YZ5{Tz# A=5 F 1"W7o}kUp _P uT ت =)Bː!-ã~R(h$; ^?l$IDAT~Jyhkzk6Njf(ߋKkާ߿zbiwllӰc[sA۶7oIp0?0,nPRT/"yY8Ce :+K6/VQQƋ2/:A񣻶?Vu;Ż@UIhRy\ꎚ#,x#5R̨(j@k|X^e P ,_jr삂<:՗?&N?%,xGsS{R?U܊FψrA[NTh螼3j۷/SooMjܸh[٢Rj{a%+`;b3BrKc \^:u.uH-I\ޠAo]Vw&|ni/$b޵'韕ػmFmrrde&,z1OqF:so||djykeqh@,%$*5/'%%&-]nݪUD,uT aDw#'bSN7cxin}J6uPg.6O5vb;vrvյ~GF{ޱ^5V{֝9,n*'~:umD}5nCaa,:ԽlP{%4RP0Go#~+*ZmJQ ~ +v^rk–-i` 33Aqv~]>m|Z-uTm9s8ѷnٲ~=r\RW@u{v0{Gӯ3Yn7S RAuˉ ו.*;ʰsS[&i__okwI_bXHkXϣ/ʿ0hn6ȷd 9w:e9%lu:uJͯ}|D c #hd`ơ$$ BB/D9rE qAAQzڼ&\UT$#ɮb 1}^P}[ګS|bDY{3ΑU*":LD, +o:K] -byu4+.n~ɤFO+ O?wԝ5I+ԕ}(%\m[Q$S*ifzN:- `HdϺk l)~GCvOzjrno߸ҥx*7TLsg V^t 3HD=np _siKُ˕eSx.=uv^g`X@DL^^: E oX^.,Dz]SOMJ UMѰM̋!.U :hkԉLd7++?̨r)JԝYE]C9WS952ߓOfFٷh2/uvd'.,ѠiFGb٬V7lX(55;;3S*îzwU^AUgy־_NMItJ&&FjfGo}0|i~~uv,ȥeeYqv&l,˫R//zc 带"&9Bg&$yWs/ o+l- w|NDDtYXk2P]+hԬY!yudЄ{ XɾG>| :p85CB/ JKH qQtxU7E-E-juR[I*͠TSGwLYe9CἼƿ[VHˈ F5LVe.ɴ~ka0X~55je3#X<2_T8kM99?lRFyVEG)mjhB-+kR/fF {msEH=Hh˪3PλwKw-/(eaCRPp_ԖU"~ZVZylO8,/8ds,xh{\muVR_ 'g}TQ"Wm"u `#[_cݡCo5 $Un%r8\.S* ւLw{<^~=z<1RTMVihnTdvOשskzi:u+|\ 1.FZXRgk/T**xG"IiӉW졽h\.Ξvܵk"G/i6oZay>*v)*Rתp&*RwO#sjM."aΈۦ仉0P=a .9xWmC'ŜmU&URwAt3'NmrDsj7yCtq:>B>wx{<5PQƴ\6ν#̗ɲ+lurCBN}~8>ŽL3 .).+*YDҲ2a [",,6s)^-ӕ4 *;f0l34\/ќ70RcW'yrnj=cve-Řԝc1F4i֐_KJ"A|^-p:\&.3O,Yv-ͥW޽[9ph3g cy}?U1rx k[T R1V޶b5*`HTM[W=Q5O[zQQWB_- R\\- +W2^Ui4E*Wt^^.4M*7J#Xv>&:R?Kՙн(*uIuToCmE,-rdwKGG/-gini۱Ix݀2{WNqM艪EWWUʁvo_S "/DsQ$ZnϞۉNr@JDIQ!x0IE*tv4VedHNlq4S(3va#,.!tfddIID^P$gp ; Eǖ-Sor1Ҳ"sJVMo`+6}^ Y&J<1&8NO.GhZn/!)xSݜxd7 Ý9d2;ĤCWw+~F_[TG(?ǘ T/r%& `C_O.r.uR@vѪU۷ IIRWd叉9~+DZEuxy<ԲsP]\r* +3^-wnNKܮxS D4-dKII"E..s?%]ϳ#%3*ΗWWUӫzNQ0){{@B}+#+qއk|l~+O[ WT'GOژ6+**$Nv}3;b Vj07튏/-N=2x/{j諯bc׮%JIȐ y;uD}S:x<·r$ĉ1֏-f @m*rP*^(XuHHV˂!!]p~v%٠%%nKK 9LоtJ}=1gZ:Y/z̓lhb$yt=CڳR@MMY.ǽPzzzl[m]nyH^NG+L'9urɁW$uH>)vW^f]P X8wȇAu H>RWAUQQaD}OSP/uOʙtνw,)<qLOR@begDK~%Sֲ4DHLk6 ǕD$f_xӨEK4#].&bXGJvN )K/NM@D="":DDDK]-mA~^S꒪ &2rV3/%%<nJʑC^'V^onmlU8 ;zl 9YzF_H <83ۡ_9H XΝqq%Qj}A HUCYX^Ng=QAAiiqUp?yMqE+][<6E۟1uPY}m,JզZNdysM:aoEEH_>,- bOeuQ ~0l0Dӱ#{C,/oB\ҁJJƲ2Ki*2~7T=ys_G: n᜔J6ipki%ytGI<HO@_gH)F2L,u+{yݤ1i^DD4H\Rwǃ++ iP^ha%l [,Y]xGݦPؤՖk<כV[!,j {a"zhHDw{*gu3.~vm дmsm92х>>RwBc=Y1!m~bcYad=\}C7Mm0hwmƍF\{7\ ܢV&2fY*Ή{!8,u?acϷȴZKjӖ-Zmzje UɊ: a=|~j4~Tdґ:o@րl-_T%+XNW1Ng[R+dN6 1N )D +XT)b17 L/4w_Oy~/JNs/{EGz'|QTTV!A-ղSRtzG^=P] KƎMo xb'n m/w[C4n RwAՐK?DfjJ]7\ubL[6CVg"p]/\*zs)" &1 ""PocEDwزTtUlS!o{^^`.]j1.O9LHQZ,`RwtZoG rgj}ŋ ۷{?_]P5deed-[f p8RW {R"xwol`|1*_Lsl6>rw۶-BɫЭÖt u]<2_K.a[dP>Vj4Y^@D =rws50c} (޿bdkXi^V(L;-Zk4KZq A3=ki:z&)5IQܞ}. &Ήhml:TyKj&6g:PXZv]蔲_86%% _3ƇZDB^).g3Փ'LS4yhOQI7&˙3;4~ha4΋9ٓ=}e=͛;rpTb],8R&+r*#_ߒYYe=+OדV EkfJ[&LdEE~OdWTm l6 @U_!cZFcNg]պDO#W\5L$i M}gh(ͩ k%l0Fhy] EEM[[Rraゃ~nUPRWL&u/T B?a/|aOlj 0:ʣ~<]3QpڢXPko|MiFIUÕ+7o&&}ݖ-DvK]wOv@ž?lk\uY,Jv",aLLn99;F}yy[έSJƤ>OcW`|"`0Rz i s(c]DMs]sbm_հ]kpO ߟJ;Z,A[}2}*l6a [BR%@g78妥֗MM4"Z"jeIhl >}-F ׸dD Rݣ6*Eq(}似ڕxok{®e x_uچ1#z<}SϝlzG^] 3x֚T1Blfmv"rE2 dGJlZgצE.$5o?1C.]~=!hժm*D >,A JK_t349Dk4ѹ>7hm6l@M"eI;o0i}rg wļRVGxDEz>-l;4 @m^(cdR2h]Jf2NM$94H6[x?jjZ _hgyX|uV CS&/z Ϳ?bQ>/KGbKD?Bn)ޖoWꊋjeMD|yT'P4_#""%m$bB/!s"GAD4^j|s:'HOGn`b+O=UPɇHj(w5Ĩ>`_~{ֲz*30f ߨ4+|5~޽i3__ԉ%k ]#f5\يi_OtnpL-^ӪIq/Y|(,fzjG)3ϴ]'=I7$kЀD?GUg*}*{yηz}bDt҉ȟV1SQu/M/MƮlyў)l6onfӟhn3fTi. UxrtRqLR;YXnVݮR69Sl{Jʡs]vRY a"",wm=ODDy-oO(D_Ω/+Fx͔7=>z"lERy 9 K7g?㞫۶/TRwΜveܹs"QW5C/G:ǔtI Wr5k&{\Aky_y֧t)>qVيCBx/#"bWJ3U*c\||h7 caDDU[Y""JD:.!uMͦ9 Q?pƩ^uFunKk6۽HwSBU8E RS?' T~L޴w5rv忚-_RwÿRS(\7>33gF{mVRwM6wT*e/RCy^H{}:A28;&wf@kl)nܺ|IO RwNz%kw޲soL Ք&BG)w8&yˍsﱱlRQ8=+u10VHIzG6w /۪> R?+p H=ʂ?&QkcTϴGSߤ䩍GguJz^K ޚpasNi5o.~rV%D6GztXd aK/e 蝷ފX¼<: `@q4VFZt۷VtWO.ɓW\@O{lۆ+SJNάgf#Z}c_;^O偙HID#(u$/*~FyNt*=KE jө:\HsTg?Z:7fG.:G˥iڠtVT4w#.zrۭ^rɎ ϳNNwL8іP W\nltw]ᮗr 7NBԝ-^uk\rΗ V1gW95ϙPټ)[& 7o{:;d$bMXSJx"Q9h=;YΏOa6*+e=߭߷4SgjI{Wf77bo>as_KST(>6ԝJ^̐V*i0N -[ w&3z+lca+0^@ c'_.i$t u_wdOB^ _1[/3plvuS*"Jld鈈(, ;9'3( sDLMDC O {UE8…6EQL^$r? Pn򼢭ۭ(}hv+;nHM[n*N.(ݲ4(*se v=Y]a :CW-X㑿$[,$ YQS>zrkbu"U_vuS~yTRAp\\)[ yF-PqLD)b(\Ap,rvCF&PW\{v̽].w(_3i2+=ܓ)z:W垯i>hn\uQ cDD4uişGsf$i/FU(>|n3J>%8"%k)u ,4 4()Qʛ+ǻ\uw"M7]`cc_v<82H) M]8(3=*x;}ft,.mT1#y>3qNnY 5ҷުW1??a ݇ %~SJ:u*.% ^~>'L10ƚ?Dj+z<=>Ğ~[v=Pf͒~Ft4o! PE9ς`qT*jF Eۆ +rRuDRkyzCzP/vh1`VEDDiw24JˬL9BOq6Je7dBB "^rw ׿ڲ-X߬_O.Ѕu% r'|{>rݏ_yMis9n)龶 34ZKDa" Yuw~57nÿ"اB^PBQ+"zZCw&ЌQRثfvN37놨gݓhhxJKDC藖v3 cl/msOĜ-'%+:WS ^篪 {xQLFM$'YК+|Ұ.| IyG_Ν9`1U>XPm~ZJWiE 3g*֮ݵk ^Tgejç\tfgEH]&-m>OxoO4nŋiEY2릤 >hͳ  ~[ xA?,FqdԆӖHQ~|\sno!VBn_ߎw'cO*L˧e?CD X=%Dէ>\G.8'ɴ.PyPae"DσD cB +lx/eiJo+'"ŒEޯLFDI]kx6zS耊4F]4.숸dAFDE]tQQfV{gZ}ud-DD5^ g ǴΚFG{}a>1s=ݺ(sŋׯ]{֭(kv>|܀}7ůI 5/5J9zZgLAAugE7AeK]癑YIC?XV&JKv+Sn_-$ /iw7.Ժ!S7z^M -yL aaWz.:b:(嚫Ty]:zǣ ߽327\~O{E$Lk!a۵TcU^RwHXP8pBi3A~{7 @/'%%&Zm/` za1q64Z86)k;yJZjVFÇϻ tFӼy֯-:ԝpoa B$B$gF{U^<Ő`YU!C}uRWJάEy}h)Qrg fxݑ6+ 7o OJ^9(88cAޭ-Xo:RVOgD |Da:0maaF/+,icj ]9ރZAs"z[:?")u'cǦőϫ۶l ~TYop9bڵ䤦ԷI@ 7oZ};jpL<09HwJU[[Y;]kIm_i{ɚּԧbb./٨MK Ll+Nd=#\W-ectpϽuFcޮ٥Ge[EY2[qޖR򲲶ӛRmeeэGI[^^ !Ow㹴5~~sO ]eEQ{AF˥ry9uٚoI!XQ^ԥA賡WTx4/ݿ=Nh @|Ǹqi0 eGJp` Nv{=MMåi6x|ƍy<v.&cPɓQ7gRwvSZQ@]'5Gt IO?:u^K|q73mob fy""ցu.o J_7+g+"tOoKKʍ.=J%uelh JYggSuŕ*R"CDt"JTC/H}V@DD-HOu5a e>a +XVCtU5 `@;9a\aqSD-^|.)ܺI7s՟>UXl͛3_xdy߳/+F*U,uUEOg uޔN]:ߺuv>̨K+ߺ֦aC;9JRI W~xuL7}))e|Vԕ5bO3e2G>YƾnȠ ))R+ٝخ(MngWQ `L. _~pN࿑Pȣ\iSi`Ӌ#r]/Nڷv:ũTZdK xF6Ѿhf25jr,fZFF7wGo*]aS^Hq!!Rw+m`p0YMooF|?JWnnQQAҥ֭^Md96UnM=`2wnXkm坑!u] d yMOj곶G,3޿YPx?]u132b>qWUU4`?,{nRnKv Rwm؂$s… +Xjd]p}OdlVU4xjK?.yfG.?vY{Pjj[۞NO?d\'5ޠhlZ^cb$[%dCKPݱG~N]gY>Gt?D)t60TWXrQsJ=O/??y.眿N/cᐺNa $Sz{q_x ]S**F>\h4+*G&ӓ3yf\ÝƟ161:I]UoYw^ҷe'kn-J/EDK9s7-R֕G~EI6ʘ4,J ̋snh䵥",uwys&>SGdb#Fzr{觟<6O&L`l|/ `})s[|<̙RUQaZ,xURb4I]&BE)w8&=ԩWǓ';=Ӿ~jɒZQQۤ33nݩVV\Ѝj9MF #I}pBp]sty3Cz{,+S}Lu9m6XB6͎}NZyURwSP{5H֣{f?=plFgׯ^M_\\T$u;1\/+[pطr ^?'lf9os>z(sWGL=ӧn (-@JlG&ӤLqA&_Qnt:[WH =Yo~qnS]=e67 dALYff23A_VgkRt>C_7~Ŭ>: u#~/7iSOI֭G8@tիXj{Lh|y3wxu} +|y1Oϱ4;ezx}ߔj/U@X) EѯP=IIOoZCuT-C6ԝP&/}zO5&MRIȥcϺk l)Yb#u?G^x g?.u Y)ASd]'OzNhι\Rw dVvڬΑ-?o{#;'⇅\lt=(ɺu o G#u T9W,wo,XOÄE@͡P95*,lS5kC;鶫ԝU S4cNfxRުM Xjxd>D- EC*JJƲ2ڰaZ"r:+|J5=>uǎEb :mf9oNuB]E**-.(sPNYoGF:E ~(@Kfs;C*r *_7Q%ԵP]a Bo@m Mg(B} [ܟ1}݂eۃ-(8L_rN׭[VdRwelV+__D,u@r*y>_}wzb$n >4GKwƻ|ĸ=7f$k뢣Ŏ@7hG155U%y]ny>Ɛrre#"\J] pf+x^Xȶ}49篿cn:j `˹L&ǎOdyZH]po\nM|yWRWn-Z4([X?yr|(>ip)'+ȽE=5jann{jNsss-u z|GE%o'*yTJ pw _#ϖSP]k:Ƚh'~{Rիo%JM̔ b1]c^FCt,P5n;摏рD{Ξ+7n\}}^܉đ/'.V\O^>g]KCnו+Ɏ)MDDkh(]RYk<^:*/ݼY.0ўq ?K/DD*6nI, uB`2P=+&9=\^rgnrrY\`+fh`6͓r넒ӹhΖ:j `#s1d?S? +WnHH ڴ={au3=`B݌qF]p;@ΛR ,*jJYX!WF%?o.oh-u7@UGcg;@u:WK|U7'/0NsFcQ?%.'t&W=<=o^L91fJ5w {Ԅ&Ңnݤ{+++??7oߴsv[hr_=~)4޷-~t{.ݑ22=*n0\9Jֈ"- >=R#/T^V̵%cl/;ƈp}Ik3|^Q|ruv4 ɷ?Z@PQi?P+[1EIqOZ ᫩9e  hٲ ~pNj!O^8GyC_E:(m)P KLׯ N/1lXXO{ÝKη .~xT$>QPj{&S[6_7C_ydK.ű!-[v77X@-fNBUd<1p:].hŊׯ'2+***]MФyyDד'ՙ^ʎ_~°ES 6VytvqMLL|7"e``b[;o{heޣ.Fꀵ<8Ko7VE-*֫s8Ny5Be,/W{u\.TԅPԭK?x*kNF̺$333mCgj&  `BKj2G_PR9xUBB{㷭Wں56(==//;[*ڥE&E]ukO9EYбnQLSL{bBAA 1XޱT(^I~6qrh荹z9<1G # @T|t8N>j4&3|7ѯMugьe1?sf;f/$%uT?Hd<:apۼС{^MN~]ڥ˪NL^JmUPi;kj:\]:v)]\-i,jzYJx!!7c2V|R/Q)*u:y_2 {hRi9v;5=h5l:VS>m>\>$…! dHj;⊊ڵhS^tsNv`uh=Эڶ9s؎t,u=GWjE(#vaijP*cҿLQ2F](iP)0PO bo].={UE`P?Z XUHd y/Yg2.) aV+uFD(GZ x= v;~f>1ϳa 5ieH//8ugbԋW*{#))==5hݺ={mv`ud磣ܹ?ح[RwSl#5֔ݑZ]bZ0嵛!!)Q9%%1KıYpON5/LA#|ҍFGvzHDD u-Tl+j&ْQ#FT^}]Pa PO_}ߧK~}{()1ʈVܺ_<Qxل~B(>4sLnCNHGcox|&{nNmwwQttUT&\L=yskpڲEO=_&'\gK6^ϣ&ψ m>noh5@R)x~Y;GE>|5@ 9eS M& Kf{򗔋<C6H}nP+MapooSg+ߟ{mc {0PG8rqޯx?XK}{cǎc$y3)IM]| m޼C_I]Օl*MPgLYV+4!!up^jƌ[,((K!w|``Q%e(ϘTzŸ{|+*|w能 {(DpN/F(Qr@I] "SoMPyRg@Ձ,0x˂l,Y7\q#!hӧfӽDo=똕3zKbLRwtW=A?͡u䦯iԭ[7eYou#  vTR@W9>pgv3+]zbhhn6.1ɤ\nADDQ?vG) m$WM))cϟ ,`GEEm搞.)_^Ԁ!' ?oߴ- y^>Qс#+*zY{TF =|;c9 Ԃsv2 X[Ib,JLQNoVd6WL~We-ETy%k[y䗤.GO l(W-ӆf_Czoff#"DM*g!Z%{p޼'fkFƬQaK65k&u](z26цモ ? `TC_[P܀7g̞-u6:w/QrrVVz55\يyZ?udÇCR'k߶6`g(LQKCLMF*a,OQZhN^\o+._=+h XW9\;ZVn6}4V_{lJ'lV'=>o߸'9&B cKM+z"kJJB{2ZXՈr_+RݕSTTP@Owo*u @_W>82ਡn '֪r@+)'9Ad6wt? YY@|XVs{7䧖,=^:!a@c!G/u *%pYVTϫlmwEfz/j#Xl(n"m-""G\ߝe ڞ9spoч1Ƙ-u;vM%?Re96ъ7r9RW,[|uL/x~0x͓]bMҖyݰX|xmX%c2["T7|(^,^cfС3E_[ҥ;gj0PQkl$'u]{GNgSMw R]j@4]7b ƊzN,APҪPQ[dfROyM^^=g2&yTe\uYmXYoh~?b_NՕlzY,9Ś[ɼEDr2D6M+KX"dc4`̌9SV&u=v?lޓ۸]N8rDEO/Z<Gb ^y5΃ɟl&<4.7}mz{\}yޥKV{{RkCoŷWl 'R (U_Vqlay-:C'֋yZuUN'""z""BDD >Nxk|&ٕ;c1&R@kaa|k0~R*R,u-Fcy9ʕ["v mY3y gwС(cĻ[fM;/`ERLpIIW%%6 }jDd6?T%(yy)]U_,`0zǕeZwڣZ""^ @m\JzVtԽt%6R0Ր lyjr8X&pNQ,$"e"(@MBæMspx VyRw@"o~w\J#MG=+m%Xl6U*A_o?39='lRT_my؀YRҀ"YRBh""(|n6KH""!"D4I&9]Hŋ2ws?e _y%dc!,~rsu9|BT*u=׮ܸAtOK]P3r9P 8zn7c *c<6s Cm6?2D{FDԶ촗Q "{ .LVlQqNWTPSqޘn&ju&2s7:cC!P6Rq45f]]=\ݮ5 '^ jljv#g;MD&:(k| =܁oOϤX_v/oŖ5KYX^N;vlD9`Ȟ9nz췯Л"ZT[a1#rs\6)JM1Nh*fզ K~-C^uf:֩棎$V6Kue:7TR?T]3;([)Pe5C]8T9eө=RphMiaM{kP>+wwyz"sҒR9Y6PKmY*wymcL X\8缔JrtG/^9jheS>vn;RًT*UiP9Q*9J%-A4;=/ųX$9dv6Cf>Re9"nf9C[5^өSLStz꩷9%ꅺdCNyARg*ع(a\ȑ#y[ RQRb4]{-R ʕQu"u&/#E1|>l6@D# ""R0""CDD "y&[Z)d tRlldJNh/*M'JmcBp(Εm +ٝP8+\% +RQ(~%a<,D˽nUmrVPr)+n8Et /*#].*MS}AKr{)_t/hzF:rl(҆V-g!÷}RT%su(- [\0pNN[`EeDMp<QE+nݰfs8;_ڬ˪NL:ׯKPyνu&yAD1L* &"ִnDD:E$?4c}Ba9gP8p^t4T(3o?T*_;{:ߒ]\ \rk ~ps(;uv ;o:宾eIrk;Z.wW.wzH~O^iG#/r#s>b<]-k';8ȹۭ*+xYrl-!/*\./UGnTT\[b˥jvkRT.䟶`h/M}1SU85O;۷'^qB!sTnI꫕[\R0pz{;t;?t(--'wQOwWh - %p?%]ө'N'}uXc"zcPG9("En_:v>֣~DDɮod2{LGsL.w6;Sd2w 1S\]./̽scϗr~\.\ܓr>y+D=Om˅vQ-eȎ"A HED$ʄ\Q?JZ> gDQ9CZۅn('t ELK9(u)QT&xmm #}߼KDK7ҊDDNDۉ G4 nťUWF6DH:&ٝ<7yJſg+4:fj%Zj۶X"QOt900Is _Ir7fhƄn'>|x^k'yqu~GAM\,MK[d u@m,;'%iQ^;rn7ʕ[{넺l2=#\3ĉV[\zX.MJAwPMoL*u@m,`oVx)??~:|=pwlzȾ}[9sb]>n'u@mW [hH.yIƷ:t6?׺~^r20P3II驩DG\p5S9OJS:ꛎRVcyNV[[KP` o=ݺ9Ϛ6M36aYkז-DsιUK̊ǂ.>>kWHPy_ZdP<"u@m,?9˩ l2F-(1ά_wDeeFcy5KxÄy/y'O,aJ*J_W*s+yaFsk|ޡL^?/SQjr)R@5-`ԣGnY^ޮ95\b H-϶j%uܙ˗ΟOHzѽDo}NnRvKpTJ%2:&wJ(0P2X2O+ 1EǍt/5LB&D:5&h":ED?=@:C5#p"r%^m5tCl6^ᆗf6{l%{wb Riد1˛iZ^&Q>\~>z%% b,d"u@M,bߣRJtl7ޠɟʥd"={nzPȣ\ҧ' \{hhZw~Us{{ \hݕ ɋvەj@@npiG}}NRID' u("RSWDDD4TJLwǯLWJִZd&6 zN;S=EDTy}%-y  +Tg }dr>]V|\Ds3nsPG Od{?~ٳDׯH]Po\֪FI8(,*|@U`_ M|{)Tnxɂ SgIyN<#nAVJr=No_vc}5++r{OSSGl =]NK~ "cy.zMGpη"c1fKPa O#s*G?[R7?WRb4mzRT/M7RzƜ+)I`U٩"_zS½% !  o:N*G* :)PP8w#{ln=mڴx8fSÍYYct1(2)դzt*+ f`gr۩tCU^RgTgWm-wh~B{z׀~o/9BD@{|0 B ~&uܙG/\8s̴4k˚E|g 9~\hHgmen{dqzٝӮݬ|͡CKT}z=>eR[-Tcj\`  XФZgkr}QQ{ؑ~Qnnaa~>M(f*ʌ[‡w`Aw4=3WMٗ6\uw%'-xyeqfdc~GG>hXH<pE#|O;Eԩs2 `AOJj!x!=pq,j%嗭[7n]F/SԴ}Y}M hl=kO=Y׷_uUگjʂywwF{tow)vC|jl1lIDATes`J`.:ɚ\UZm[= IPH|tԋjyuV$r8\.w @ֶ{[8sf|nF:Ż0w4&]ے?}hMȻ.ΡCYYDgg?λa 6tllOM5ݾzb˖^?*.h.<׶m_UzI" .HPӄ'cbb?p9û!4J1Ƙ #i[o@F8.I7YûaӅiS{] g1mou'YG8-鵡/o.]u={4V2r|Eg};A,˨5^[ ccbx4Fim9Q7@{Iۗw\~ڴiZZw @C%@4{{GolN ߪ/vݭ򼫠:v4[΄:m'{I5Xp~<ە.){T.yw54/jp뭼{w<b{]PGgϑ#hzSwNfb""ǻ JP]r!mϭHMv4$SUw5oy&o*{:-w\ %vNWu=FMqVoiϝ'ZuϽjNR7HMWg_6>,yg$CTO<;t'"*eD$+xƌ35_r:#զ6%fq{ꌵun7ߥQy[sy0̔)S\$ `Acce##=$3O1"_uvڶl]0i5å{6]4չ» ̇_(Ò PlJr(8~sCg%CCKX6UxW˽7p3 <; STA.pV^_ S;**?'-!"86rrMMjh4>nd1ch>?0{^uCV;(w\򚚪* ۾w @C%@41tBQ틿7vJXZ}=*hvVU?/<:hkG^p1~85cݻ6aws܅Z$]d6?W:V?"ohQN<9S}jNV %{uf@6*~L>>f{6e4n\io;v5J]W&,:l倔a*]Ot{|u+Wy^o=@k?.w4~l6f5O]خe0j$H.Z7ouTV˻ | \pM{f I:5a^\ ,L-= x:ݑZ%&] nF LD߄iI,k,ӫ)ݍgZ :s)5 S>bLpeu#nzt&#^%"*h Yms6y36wOC'TQtڶEuk"(&F^Qz|owQ"A | c*QIHQq1cj5Qnh4DGʲNG(Z-{;su/ZFa PߧۡwmTRwÕM~>$D'*4CA{uf@~nn2qOB! 1kjxX5K={W)~$rF. XV:r[7eIxq:].hٲ-[֭]0i5å{6]4չ>Eު{2FGDϲ0Ԑ R (IDzA$ďsY&ӹKߛRyavBub@qxc}H|Tj73Ʀ} 3$@Ã/i4+쾿m6n$XVw @C#@41tBQ틿7vJXZ}=*h[8T:]={ [auSS%b!<7p6#j_WϞs?VWU)^OtDek4>T/o;v<ީEEb5 xw|緾|KDD*l;n \]J[QiSvlK9F=|n4`TWͪWGtj]C;59Gy {qkw{2CiVTĻ,l׮ẃ;M&=WڹᣡC}V}NW\LtՒd5nayڲ2u |nRkk4}.ZzϦWflU+>E9U᚜]g_uVJ*ׄaL6QK񕻥96mRcIIa;Z]iA0L_[[[;rcL낝60D~ʕDX] GQ9VUݚvcڀ׎MGCy]_cFm:wVN銊{O--%jVNu_D xDOS{":1+W߄IBN']}gT=/^}heI4O/ͻ.hXtta֫߹S MQ+gaǾ{ws%*6AQ}V$ ߆}XM]to Wr bfpv,o;wz6Y ~-N'[WNqu1U_a4XՕvn'g;.4otqI#_Z/5w迁tҥTBsB⋼{NAj7hXt#MlJFITpc}W~V:="w֥o꧟)SjH{gOQt8-3 &MRxW]~.sj7Fض-^*^]Y}]@\WƽIIn>$!n%&G$] LV3Edz)o@qm(!ns'a0 кuUՌOQ4魼wvw @2(6_x@ӡVQL:us͘VDmx ՞{N z5߆,q^|PbJJ = Vf7-d@N-|5)r&[\@N8?m'K{,]aD(»a'hf;w=z[aݫZOۘ Z&9J6r؎s_+-%?7 Wvr-Y0/qءާcǓNl*9].*UvgEDlsx֭,;Yz3Nǻ.-ևj!'+Ke+/7# FVx-4mɐ#y+&E9T☘ߟ)֭O*O):&OZͻ ]}Fsʈoy76s`=XР8޴=~`E\8?-_e˺uk^c'8{m5)k]ߴ-Eƫ_ˉUC3(,qMxޙ ֚5=l=ק'sTf;g=hժr#"r"l g&"=K]eĻapPimMkw4:f(0˗oݺ~GѸ1-=p"V=tU1gU/ߗ,6$Ҽ D/VV ujB4j$lk9DV[T[ޕi,9-mdw.]w8{B潇[Tʼn ?NAݹsQ{M;8a^xuLza+##y+..,$:xĉL5 Cmz9,gX!mLmB\ Qnj@N.({E`;࿞~Z$ Y]xiڂ pTf+De/X2Ќ{͚fn:zEH4eƩlVsBBxw)i֍72cu w4M77 y# [[GBǻ/SXv[ƻ@ie c nْvxSHR]Q.*ɻ չAGu.+/|ƒ->^N~*_%j4OH)Տ .~MD#=yKvκ=>EwL֯xxw[K:B5kVDN}/7Y{6[.5R=ʻϡCYYDkӍtc7tcBq'_a.h:~uOhK]@unPj5p;gO]s/>r~~9f~Wz>5'Dl2w-4%EV3r.?Dl,|5uZ6~ډE4tJexY|}u#H%[X4;?l)U*ƎXZbi XpE얖Vr@SghY{;v;{/AƈBDeHd ,o/,z">~YԺv'N/ z}˝~55պ6kۻgnhl~pZ][K1ƻi|U}u@kv\ϱ} ;z&ծHRW$KFMo GW Ǝ0WpnZ{]V~14l+WرeXMY§eY=I2d]b}*0pOjQ;Ē E~.%\payL,dlтw:7p5eZ]Wǻ.]T*ukF,Uܾ:|[$z.+fpt ꍫ.|1P=DlMN΃9ju5c{TTTWyЁkҴ?X+^OW9R䙢)ˢ6t]sNڑe[VsZ- ccOv,l*IوBBdw 2yY*wŰ׸s>& YF#NtN;Xp92}:e".w_ݶmF"YVM "cD!ۢ;H`{>0pH:wѣkβ%=zpztvYD6e5qϛcLQ-ۈ*FR.8EϪ20W~=Ҭ!C71f;Ż6 `etҥT]G*leeDee;ƻ/8eY5JMT޾MY 51qucW>>pwѣW-ϯ۷/}F#\qOX0x +/[z]${.|?+cLSU*6usI{i\kZ|3F؁d=p~-۲e:"r& ABSOgiq\gϊμUQK _9raOǿۿOD=9_ܼsr߯WgVyW\8vey5Z- !/V>gL,W-l~&1w4M~ 1DQTshDvvAA^щyyk;>G^j*DEmt|~ۙ=&_sKۮ]Rrpޝp8?p~*RUgG]ĻbDB4f$YkUhGj0?-z⻗.o}7J->;Tno,@SG̻㟚4IxW@CR.۵Ewͅm4IoH礘l‚+ %nǏڱ#{˜\cǦMkA " _G^*3JG ,R?&fOۻoyW #>zbد#W~lhw99&F}|d>%.]y\N|ZRSI{,?cmjvû{Vv߮٩h0{Wg>˻Ϟ=UUUV#_w:dY5ʿԼE[%鴫37knkƥ}W9rŲ=Ҿ}AV}oL{U{oZ»㟚2E+8_vpi=Je ]m۬V8\u_ݺF0uؓ~ߜ2'z\Fd G5FoDݺ'˲]koCw`K͡wLo52n?q=Z}%ߏ1 _]8lƟw^-!%eep)ٮsIYA{.D(D#FHʻEV9uN-86]کr+Sbtι?' [wzީ셓xSB&"o4jw %Q%B/.jj־l(8xsGLl>fNxVb7uYvjU%%,vSIIQtַJ#¹p}GT2 S\sLKĮ6?Ghq/لݍ3=qw{q\wI*6LiC_?=<%Z~Ϟ;xaZޠ(Q1F}5qƇmcPr,J*%2rG\Z̞ ;̋6uۖouSmRCbxV\J-[ k.ܹC&M$=J %& Mt4c WӒl6t4Nn+!HSz}=]ryUjsrrQ{3ZD ?rw4.l7geRl~DfjT+xs0s)JwQ,ʺGGQ9Mv)J®n++kM^l-*i[۶Ts[ߞpi萕wdDxxT3jHHիJe%&QrWjJr>YoM {Kvw)} Xfm\Z"/Gs˫IUwnƍa4UA/G:VA-1`V cc}sڞ=೧暯#W~=%zLg[$hoSRRxwSSx8S Xq[7׹}p JROA{v=RRt< D@9g۶%XVw eޤ(kuyG5;orwJ7К_onߧ;Qr˘1ߝ^rc,P=kvV'obNIB.L4xo?R;Pj- .MSaOX,rq`yudԔ)WpQ5YYW}3v{V+B>lrɼ;a Ԇ$EpYƻzD[8{7++`FH{H#c T]u_Ug%tm?zUWsǗQ,6ܴ&cǓ gw> ^5ũx\sUVpͻ¹yw*ug%TWf,u-x44D:&>ZUZm[=GV>|~MӮ]Y,6攡P%P`,BjE7o ol8[-־t&TFWV*w*uaevf,i7nԲ"ɓjHtY\u9ܪ9:] H6hb:=h6\g2=ٿºQ„ ?λ~oHqシ{ɲ2ƍɻ2 79UA-` sp8}o櫎lzOwˏ3fіmٯֻ-ue˚ZCjSZ$G ¾',[sjՄ TWǻQxwЯ+CrSN4)/ /Ri߾^uUj՝w>zλ޽GX,k ]GCi&)cNު؊۱ǵݑ#?4[:]<8+(H]w6~whqqu/ZF#5|$ ) Qb(zk.\NKو,]Lk{:&1HnT]B-,?;w `1V ,h,=1E!ڰa;x\  c+SA$ K+Ϝ~p۶ߌ]iiСo\2FaAv`c3ccm/;uT <%'L$w45zYo\^>MqqOL? %A˄{XXh=0DDT1HKu.z.1w?zw aZZ(p{ʵ|ss1.wZ=ϔ~Įſs2?k=zvksb{tJJDIĻOޛYN-y8>ۢ D]"އ+-5Unq[uFYKx@-lS芊hc)L!Mww41s& {1ѺuwoλP%P`f xE!"~rv 7WY^~Z97<tj'8 )<{G-Z*yKe\QKx[͞{jْ4~)S4whzRSE]qa6-$6œ䏷5QR'F5wTVi,ĭrQ=`@~>c˖%& Bp̻ & `5qk86bi@ҳ'{Gdg8ATRRYY^λfp|(Fh宕B3t'LԼvuDF]cVVT4KJ H,?bcyK8(-hE UN%Rk$w 4U뜊/kE`KVhemYQ=XSfV#G^waV$(*;kmm֮ݽ{6W>t1c PdJ(Y29"j""ؙ jVSN,pc^XiLk5)"%%Z-t:=kIوL& 11ﰮHyWڅt:"ʧ?{ ^v XK$ wWc'<$uÇ2؊ aVzg2k?W [ffnɓDżkgÝ* !Qk7{Fh M(.n;^"2?c[_|!dee3 m'ߙ:8W>};-NKI!h:7yZmIIQ\.eY]s-2/h8hԝ}O. g/, }ѐ|x5{&׫Vg.~c_ygAÂ@Y+{!j˖S ܺu|M~jP{h>+F{јm̧FcԼ}(akjʖ6s'*+[v6lT34]'{5 .% 41+f-H߲g̠TEwN%:uw %Q;!EB"NMC9:bU'WUWP5U Y_dպt>ihHX覚5-E&PU-Xz~ h@eSRzX 7u*6_AÓ*8jq-$2I akKEؔfj)毕 x+NFH usmя7XM}oMgR =֮ݹxW\3B+\kE|KL];GޞTFTtddYxUPddDRZAuul!oJLJpG.PWG$}k.nᜮRߙrC{.V@,%IV+?JMA*Utdf68SBddv슊>6tP^;UۺUAV$ͭPy[wpoϭ]SRHG;(wś2E+A dw˅Mަ?*  '\-w\I~3DD}ĻV#'~CKiϽ)rT:i)*(/':v5qf#:Yzv|EE/TLrJ$잿iB> b~+|d&Yi~U55Nt^پKa/|4]Be2LO{PyMjne>|"\jB8Nc=k1akjbFEf6PS[?bQ,>$ WzdxvHxw@@ux˵`[p gy zo8yMHCC*5q$qý/RSU*:gktQž `5F}I]v{*.2z~P V+] %T*)O7|K+ X_f-P ^ b!:xĉL5ScΩIpM_p||ڱJN-腸8*ˠC/KŞBV>=}MMܖ(ULJMM XuuP/Mw]DWe T[b2*qj-SF9w@}vMGъ S⡅ߘLo:Dk `"(0PjeLyW-jwGShۓXW*+?`Q{@*?X`΃9WH2?e>o*w#% :*. ڦMI$ˊ_Q?Abh R(Y(.7 k=iy:(D<ʵ'%mw/0̵#ayOQ^\b6'F56ƨzz!G9q+Qf++~t1FcME}uhNYq ]V }GOh"";v>_ɳU+Lzmَi4oOۉ5Ew 9xDJ \D1:C,swttVok/-aUU ~pb U _?ߦ-[xgFfM̅cc3XokW=hϞy\^nAO90&TǼk.ѹծ5lbc0eXDqq{~@ ^/.%lF#ZB x{EW{jE?u/{M&"X:wjB$r9ȿ+\\jIjCN]fJ7-9:q}DAĚIU^%Dr `p0`Oi6y_v VʠtV˻`4v!fO"HĆJ*(֞l2Ւ,d2Qɴ7h6 $"0""UޠSSG5ekYa݃Z[wjEn}v`+[pUr2A3N =Z[owJHZX``8u:fPmC]n".uDD&Q)?tqF3k䷏]}$YD!!D̻ E!ZEU~KZ,6oq¼CުK|-IUUnAvlw-_Bi]Kj,ĦjM̅cc}Yom[=m;xp^"Ye/bFj'c߳ǸôݏfÏ''*T>ɻR}$3Y-AAfPP* .ﱋw݁ӌC:כ"Flw7ׇ]>6f N ynrTYRMxFc>eg[f8N鬡iz=5Ngq<[^zܵAUVlw!D$""Ԗ޷vw)#soP mk.ޔ)ju8wfroVz,t_Gj?M_iz;0D1&i\XRlnMf6%njخwT曔aF+iwIDyz^Y&ڹ3==-w f 6 brW-ms yD=v.knH.ݴOޜ/)ɫ3.3O;ѸijW[\g3 (ik4?\A~hRVS5GhhPːVkDj!}mЯCn#YCaa^j߷뮪?S`.qxZZ3_qV{7B(Z"jKۉ}Z1ӏd"8D(K៪oMMQ:>nn_n';w[N\TQto|uv:E7Cg qGCaQTW''ZU8G] XSfV\/0իyw?ƍii55AApakd*a~#wѣDV^_ϻ7dfL-edn4n^zzM=2)Yd#xy}V[A5TEZmeM"ST# cDRe)588f3-45\U_oz,`il jn(]H{ Gn޷xO(mvj_Zۋtu?۷t:[s@_Lq٘3~^+@eDl:DD$ _ Dt/NST xSH»sƑ2HR}u`I2&'^wD3(wmmAQw't pNr~/70[ ΂٭Y# 8_aOx&(x#eloû|499$<(^`ޤ%ln`z?""%DDB"Q jND<)@cqe7w=h回0}jG,9VR_]kp^~QQ:<^LY,&(w"a 5'"C](џI?bw` Z (DGKʻsUō5UGiI;b).ޫJ|2bnMMQCbhM"CLDO`ISjTTݞN۵43w\ `l}:};LNNa3Dŕk.a9ÏS-z_FmkOݮkK/--T]hs]ƞmN3;6)Y* ._R6PP|4/:IacT#T%gC\4g Xe0|p2́}ЫM[C&:@uQ7DA]ԑXe_jݦV;j)Zm[uz^s ph4DѸW.tJX5TM/>g 3 u۽=JϯkQV @StnK#R"zxں:]Ҏذ/ "ԋY, *7D<rfn󈈨M҂مdž'"WjV>Q/5eZɻǻ0%lCY~>%ޗr?`}aÆpX;FFYȸE>%7c۰) J[h!ZhI[)0=zDlDSBξD(uF'@з7:-mq.MneZk0n~Tgb'LȩSҙ.}qwu$>:^N?itq9Zk}NW?uC:yWFxskVlU`?"=@D dA!Z"ZLSY"@rp%庋5(w?5iZ]Wǻ/7x/^/QAռ_\yOTtTify<ѫL6͉'"ߍg4{t7zPyo#@S'~H1ݺm *|;44Ѡ Nh%ͣo-e^5l6(='x\xmcǤub?|uN7v;;P+j~yyYbp뒒ǜ~-goBlhi 9:&>`xv3Yô ağkc٘dsNus|Oqvj큮1#ZW<׍ZjwWVKOY }ADwrۉI""@*!"t;VZk1՚wY2ksg$jڿ^RSEZZg.zQXu 5Q:>}x*Vvx+J3Sw2l zhr]pa0@=cLـ̣Uts;wfd8@$˲Ccc<.klϻ':?⇨6uaGz¼?z';vEó2R|,EcVAؔM3333 !B»9=׻i>r-jO֭3Sp?DZ"lbm"64HD OnCpDUSA{nXa4,3~t_s:vQai􈩟iC~) ^EΕuzV[芶jm1N=EqmZkKhnkVɒwzKqDTKwQ!Sng8wD~o?ϻd]s&O$w@ÒHܴh]sjSmjEË}Xmȉ55Taűhl՞w3\ylR>3lbC2;b jz>zС ք=G˜uA @[mN?ΕvuiPԙTX؛:NER#CNrzmysw{kV˻JKuT̢XOrg0ԓc jTH&ˆd"FDDߟ}j""z~"heZ pUY\.I;S[rF}+S.Wz P\DCΔgZti~ъ|ٛl OhK;ֱBo g2) шdhLm7!6-S3a}UUGy{eIx8GcZэ+XL£aa<3k׵?;Ly,8?jħn=^gx:r$; w Ov:G QGDy7]/GǔYѣǬ8rěgf5hTLLƙ͛Vֶha) >%POs ;9W}}e3DD4:~/To cEJUөW^}r?Mt*s/].c602|N/݆'uSZp^cxХpU ;Hp1l6{>NQ׺F:PϹu>V#5=jųV;:׸h\;O\kZܭj5<4DeDD[]1"ʥVDDBgi H/Qu&"9&[(׊;Kޏqoz*9Oy\kUt:{V]q*C=; n|4flGC ""j`6txlQkh DDT˻ ۶m85[OmQOe=ڷ){,(.޽=uYP\\jl;|$'}wb^^ּy]u@)lR"1q}@?5g_79@DBADپmM$|U-}%z5zmK6Q4n\umxY_vwj:xu{\AnG;v>kHx =q0ws T*gWsn>V;KjXwj+kZmr4i4lO j{kZνUq>5I=M1[0'Fo@!}t #0z$LEDDP'ԾL&GL5SK'M:5 S\ xDl6i^aCytS=Ʊ_*Zazɓi:Qm@j'O]piI+չR3gLՋ:GRB t4tɓhgCɬȼMaah@\?!A=އ$|;؛%I^$w'}s_o8> ""ҝ}I""GEqcTF!O1JͤI/v:]]J֭vHvǣKSǣ:ۭG+kx 4u<C~9O@KAnzM^T~g3KZe!5ԓ/I>jWDv{<zܣsuT݁j޳M\z~vW}_<Ւ1zJϨ,]n;;p­Q eȷnFDTBDDTB_Q0CDDs:NDD}%`\:jtuXk{.V^*NG\ $9qr,tZ®U{{S)wF Q+~IrG~~۹ ]!OH62 _;v:?cytdmpn))~Do#2eTuuIBvCIxh37\en޼<ݪYD54TL$!Bh,g=:~x!a -!>:GD6by"3R(z5ob]RS":|w\(LDƻ⛂} X ˎ6?( wy]?y^,ݛλ6r͚wz$A?;^IJ~@]_E%/ @uS٫N%oEo:~J}[RH(IWeJ&7U11E \S==_i4J?zZ<ĨhZMED4˷9FW%,fNo;DDԛ‰=W~;Z&"bND-%7ϤgH 54[XHD["yտ5HTIc^]a1)N RvS^[X Qգnµ*T(= Uj\r<)2 BŘz"}.^OLC(U^_ e1AuPHݮQ{<_tKjyDGTu(duR> "=}CwFQĖ_?s^WNc_M#r&HJʧ^x;TE9]Y%/<۽D;Û~vSy *Ŝ (t5= ޕRE}awh I[_TDQy[V׉"`#%/dJ+PnECv(WyUU*Fa.=$|K{%:AT{׵DP۳7y٣\ԁA$Dq"GDDpr>{=Q<J$$h""ZM^<UeI6Wy_O'uuDD;Oj(\+.IO\9((B)0Tۈ$ W_?ay ʆ҃cu+.-9H06jֈ!]feWyW5ߑǟ^6\<Ӆ?)wфJ/goj"+Z/YџU[[1_3VEC~$oiӟd==EDoH1!AH&"ok"'ѓ" ĉhJ1+ŽcDyJчыFe(&L:5%%Er΍^bGC i;M{c[Yo޽{ m8[9zx6*vb1N?uw բ]R狋[`GM3X(]TZڕڸ:~VZjDˇgyhfbl챻sf:T\22w74)TL+`thZǠA#cc}G3(.N^"EQu\lWP2=#^iRo:wYG83eSnw]NK#b1~ m2xw4uw닍s<~b潦ߵ[&qO7޶k͚;2#33p1?ƻj,U8w?5eZmoZ ?WkeCT; .4w9 `<Д)3dYQhϞ#Gy\Zo10t|w++y Z)cO:y_n}{ׯaϵok[Mݨ?"tBk 64jIR9F#unU>*ͻUm5(AA\BCAy4DQ@ &CB7񱸸>gy^O^8x0{16wǎ>L$ˊh=hq,qfbjcmVl쭪ot=\9J5?\Lp"T1MŻ.SJ)S$b]и8Җ-7a..{.$w#PȆ˻|0u"e/=2u*s=λj;MFžuƮ8zE)yg}9).V3~J} f]c2b- SPCZx<phG_*`sZ t*)5UѓҼ)]sͻqn7(o_c7T UtҥTd>?aw 5|ΐ=rrE"]`VWjKv͔7 BV3{=D˸SGunK2iiQ_Wb21F{ySh4zKME܀e8֧Uok6kO;BoQ2X%f >ԶU+Kxw5U؀unjLuE{+h|o[^^b15{q(I:>dF/=5k&Տ:nmlyUS7tr:yw4U̻acx2@ G($WX:cD\#IV+-5U籥c9&,4$EEĉ;dYQ(-#Gx\Z?ۻufv6hZ{0k‑_&#cֳ}Oڵ'qm60doyw4vB" PhtOU*=khd"R5۹ Xgҡgfc I g{"p'x_f3Eg&(FcN&l65I;SG_MxWASVxPXԒSEv.4ѣy=[8,8 Ycc)9u[6G(p)V}y ɒTu7+Qq1cj5WP]!t:{?!5Er~zՓoޱ eVԿ?ncbxۗb7ZQHHuxn &pNнǏWԼYp܉9QQy 'Sҿ*2RO)R: ժ1%M#wj^].v|pۄU\,4U\^]_~KAޣsGbJ[;aG64vp9Ż62|6:ŻR&b{2/o=ؽw~1{/sϞ3wjy$/O7S3W7 03333 ."{X;L&"]s&OV-MSV*?>VlV=?8XN=rVu5=׭[c,@e;[S3ݵ?:t(++3zew 2Şab7RoJYZ6S8Tz|fϷmz67dgf\j "!+.=9BQd P~_I@=+ HF$܋Gjn*!Mա0)MwQRK8C7ݺijpe6訚zS<#GxW\ZIhWbռ_[WW$j9283=e&eyGDG䣢5ziXmVgBMŻ.G 0;YǫV+^Oٹ#UNT6O܎S2a@sG;8nbZrs y\!Y,]:u5w@CQºDS]f$*t5_GDd_uz11ʄhΩ9X МZ_`h97iZwxTe3I%{QPDZˮeUeume׎QED@z% dv!⺺Iܿ+rOH23yڏVii 'ID,y*l&Wq&Gm&&&|jʕ蠉'+;{`#8r"Nya`&W]J]:ObcaEu|Y8B}hqtuo܍KI--~Nc--D@to[ $V)*>4rpųUmWR}cDU6rSD7PCW^["mIp<1C|*+ zOR#*o?ZWZ#u`}98_2|8@Dr%\ X]d)lBC1r$(CD|+n),\J#ej!-!Xt @t;teL11t:Kg̚Wj/QMM(VM X 7R:7U[Bk:Tyڵcu7(`uҲ;od Hk³ϦB/:۱{Yczͪw3u>5}}(4ttTWGtwQ_/Q,U5r|l)%%U NMLŶ'3a@t= B_LD4>c㒓9.";VѯeY:ͱygЪEpa$i? _˲A.?8GHyg=1cFp<5!?x9|Ka }S=gL= IˇeY98c@M:)Sh|,pԶm`tͼ~3s4u"讬-! nHuuC`@ e[O.'&VͮP܆w?%}j @-j""/ȿ[ܳ}kENZlQO <hH#;_|A[ӑipTODD4^WN&"K,~"Igu~T퇡u릔PrSM0h,w5kŻ%wOyY}`(2OEu|X܁^^cWr@ [=/ ]||7] .eAK;F8֩ݎEEN5\2>937F;ONZ?$g8UVDC UVR?BZnoZjw4Pwn\\ >ovD+/--7m}Msj7Ն_? >!H ""қD?/LBRI<9F$BD)DQtdKmޏmDDCh|jgy(D BPtzHi_ٌ6lk@DcGVފVWQVe_:jl_%%55|ԟN`vY5Q5d߆$WWSn!~(UU!u7n{ӱfIXg}{g<*B8OxuDzz y}$0zwCDD.bj&@tHę,!@ akO<5q׫kս;;fNC**CDiu"S\e=׳Nu׾eѭ: Dn4ProV;gE">iDkXv۶۷g]^YMMٶ{StP?CPo ˩9ب,!%>?'WUja||MjӔ|noD{@BWy7 M:|o"&#?@|sjqir*|y~7הWZ ;11pA&o|FlxX5jN\Rl,"Xh"/4VO S O蓭[YR;"$$O4e~i۶ek [3ԕrY: ~[>o\cceS޸F"D?d +*~V]WM sZX@4, w vUӷ%C?͗ Rò4v{e i:}O8˖U]^9.㛲Z VkeEXOa) r29OʩI^n6Yݳ\{ZBo;}:e"=jd4јpli^oVZ駺\ņ -IK$p\ys 11DuHtDD4eFtN]!?_hV%5/V Xr Æɲ,2sq$ΥV(`ujmݹE~NEmA.g>nuu9֋M_J{;q/?8xyMך""+ THuW|cV_06[ݭqqu6o( ղ=pb` yxFb:ri}N'"l@$ɋ8q&nj.1$xZzSjSԾ YѦ&ppzA`'R+n7F{!?~yvj[~}G6X ,\n67UXT:ZA~y""+֩xn*i:ǐfXS^=!Z@u*u*/:'R%Jv"'ɔAD.!W[NZ+gվYuN\\H?l֥VkpE.L_IW"Zv7~ח>TCU-!SN&=.}qB-URcsQhpkk]X&Qhm_j\7k4aǟ[۾la6&@> 6VSia\: D#tn4!cyJEw l7n9IIb$IԮ)TTB1?N;S>O}8,Jtjm#2yJ}1Xfڲl5/qq 8Ձto@O%+/g mCKVg!5zu28oO΋-Mxb'fph*|yWWyla&rf"&_toUauc06[8#Yxlj$hVL~*JO}9WYu.AqiҶIX{wQсSt#M(/gAgBk3(hRe`ϋo޺`:NN٪x~kllS}mM6[&2C-4ַ En[".bYM Z6ٷS+e o>ʞG9T?ƾh4۹ϱJ`[Vgk7` 8"%11tLtTg4*;ONixjt69ҫ! d׬*Y,})6`"oДk S^[uAX]DOg&Eײ`( _ZZR: @>7ytz_e>S\.".uF,F_u| d wɂtJ Xju P顋lJ(`k{P5: ?׻vR"@pȑ4hp`Y١CD~0Ʀ9/w;>{; #_c>Ny>v7{YDD0=ZUZ5Znm|St]іVggl-_Bb\XAؽ{l _Mwh1Ǖbu3tɹb]/}xsyfL b3 522x>">뜕/lk@oJRY8.XR h]gICA`;w:@8e/&iDp*/1 z2I1v۫JQF>=O "R[9':p :]bb5d6?|s㇘s=&pܠX'}N9O9XS6i6[(#d wewnnq[{۹%1qh]A47듵 aOԜ Y52y.3ǵHm8tz=|:T|>u$yx#Ij?_U8nFDS4,5E17n:Z8lǏǥlAeY)))*bsbb ]oiaz&˷Y~olO2UKвG<_lޔn2UPZkնmXbi2><+@Z- En[zEMT|[eLM'tfrCq͖Tbl9tye0:ƽLWlzG?4,b*z-{qOZv[sm/Oyy~ܼLxQh[BQ+} Xuf4un ҴÕP:V(`y ?hP^^[[]Mtb31/{Y@ .hTJ:tIdr:i;]DDW+ZӝO^7T\a:qY.}KH|^xdD+) , ӪϪ"&Xg+pypA ,ۮjBm67ǒ^B_NJPR`pk$YƹݖF 7"+ބ{gNsEpXs$$&Q"b":i59KQ}h%4RYHlD09爢: wm3s]z3׭Wi-xKxٰa,r,w@w|fCj*])&={+.N}sVTu'•RNܡ@-˧,)ljŻD!17tW _ՎXʚ5jcbFKyd[CK_{o:tF}/xU*:,1ҥٛ:g&pjffpp!Q秦NhN"NYE=OA St\ʓK>N{~ ֹ Ds)6[ uYG>:VSw OsLtG{Q/g>55R =[dy)wv8Lt:rJDD$h* ;4[mJ7f4lK[Y,-;ږ-+][oXnsYne}Kx)^=_-xH?l~|-}&77[ͶQsa*}_>e~ƸO^tC/^o+[cIׯ3sOOrGQ#4DɴJn.cڗϜ.@ϖqj~tWrUJ4 XzÆ< XCq]GVa\.9@dj[e%j$\~d"%7;$}өZ:;>F?|"_}>(&5ln^~z:2tye0:DK2 t_|'ͱO}&vfOhZ˳^Y6L5KuDtO'"ä'ӉH%?I;mzow&&6i:OƌO_sjp(9B!:YV\9Wb&,ݸC>uhCqܸ&Ygu*طhL5;iJzbӿC,J>[[ D-n&mDmʄ-ʄOfͮG0[]_=o4蜗-6%ЭhWWYDL8Q*zwy}B|;^Р{R~(I@)"~ .tBoux/?Z6]kYG&T]e|AQV"*Z6yuͥw)lDn,Q+|a5Yۼ~F";499u)\K>׍P]3gOwoy@wCŝ<,Y4֖=9(OOshU&l%LJju:)n!"4e-M'x&i4쉍FgM)%Wkƻ̮KFǹofsw.> [77׻SJ痘l6i_\pv`ђ#/D(WY I4:Ofhڈ{ x@H]IC#BOEk5}`6S)k:D/=~7g4Hy ߃֯o3u "*/&r:=\Yjwҏf*+i-aUR$ә~_ǁ4=r|Sm?ֵg49ۖ+ܢkq2vXa;Dҕ8&^y"Vt)݊-ooq5-N:$0LDLr,D~q--,D,DM"}q:&Sɺ%8o աq~agܮ.6U|on-Ӎ >Y?fi{>?ODz" klu 'YZOߓ\*93EEuF+`E卥Wl.G yFOwՠADԟuhWG(8n=7仉hTo&_Y- ]I?o X{q+=Dg,Mx7M eGޱ!G lMcKyFc[뵶gLwnw_h bǞC'Nó⦭z}ӿ y]j1c%4}+Qrr+m6p)IRW JaIj u:ݻ%I'ڼY "K)ro+]n(;jnyb1k)ScşͿ͒$Yc u#_|Xpo~O7̸3U~˧u{qeϧC\  "ODDK(GK?"}DVt꧱lNONny91ba'R.Qrr? k Wʛjqպ*"8rګs,;%&Zsexc#XЏ=60h|7]?:()))*bs?ńN{q+ s$1LXDD)wQS,P^*Ϲ680>ryھ0[݉9F{5ݣ<=yB(pxW"hOQL7hW~MFYF暟b&$?spK-Q_I."zFQ -g}~'Κ8S@4k|<߷O A-*^KD3(uPwc8#Y*+X68~|XO`8*Xz P3s>D: @㡫Z_6_|f"מ\1Zmsc]ۗCk+QyE' G<+v3?{^m }:Or-9ʍt\5b2kMMDk(w l6MY='ŧ)%C+rK[cb \K8]K$OS;7\;& ́ߙ6uu~ִ2c40] ?_,ԗJd^:򲝋ѧ?e$a]vBSB3Ás}hwZuKKP䓕/?RPV]FbXϖ4ޢGQ5S cRu ***++-%$Y$i"ctҿij""s,m584ޣ""zn!mG>`)s_rk~<)Q/>Jgѯ.|j*|>S@ta8ss#_b1}Dci2%"@EDd#t]zy͗H=sR|nlGWއ]zQWa\R:@ )|F]u5(unL{S|r.W>W&rK^$G\z4Dd$h>exhN-ηt:w}zXw~{P ܯt$e2A_O Ctps0=C u3FisOX9hq\8Lt=:]Sĉmhz.4*+|3و^]u nkV[qA}~8dju{Ƚ'^F0Ks(ԿB} `|M C F߯\Y 9pn`T ̟M 2=@EĩX":^ǎEyIDDt*"aP [^[kOMu-ܯ+kc X,+ϷN:`̈(`s ҿ k(`,:,KߏG$_LײNg[Q}~dayCOX_ODYggIa|0h&={O$3)'"%fO\D탹DDN2R3QpxPN<^ h9u-lw,}y\M(tFʗy^#j|@w,x>LE{Sk}^:6z xD=%%uՂKjkhZZƍS&͝''UTHF:SZjC11)Ŀ$_p.KJ~a5.B!ډm~ݨ@@Llм  gƓobBo L S7CΨ k;tY""h""^P'K%)~/;w ZQ={WT@!:Mfh)@l6pW/q~},*: _~es5lDcTΤ R^ q'DǎDD jQ~gGhµRpl4 d%! V^_H.N㨖>C2Q.ωh/>LD$ O8u=]u'x+i"O/O<3B@FBh3CB5H&, ܥ\CFުCRE6z,ԭOs^uFJtMZms3+"L~<}^_YIt=@^D+WB&t]/J*k_29ҮΠ蛙$m_ j 5~ͥ}vX 鴚uΫӕq />{4ݮB`иTl _`0b$%It5}BϧuDDyQ5 FDD4=Dd2CD/ѩt2/g=P\:ig=rr5Ç+"<^jnu6}C:Y@ݴ[RYKe>,c5?Nn%'~:WT8p,PWkH{i4˸e9g" 1U1=~p X81߹dٶܲtoR~z˫~^x/^(Hѫ#"JыL"DDPxu[{ 'M@].{E10+FO ~ CE1hxLA =*kCOD1xqbQ JH1 n ܀#D ]%  K`A{ÏJP=BUF#]MQWO=y ݬSu[ml<嗃8Npt){og3u՝9C/?tYkqQI>D9%s_|?}Q,-x" $8z8"r8*9joKN-$Φoh L0)SDb6bQq*D!KA@y [ ?T;Ygڦ"9URN愜`" dIr `ɠLJ V[&R [DDKODWIDDt9~"?D .S4N&l0UDD #oHCPK aMA " //b(лn6-$(_-q\Gq(O5RDž. 5ʑ2 y>|O烖E 79.~3K[<BMȽ+Lr\"}A|~ik8[obji HwSK:?wg(=w}&_Ozx5nW,]VkIj0:U[~[-ܭ[ 7I)R1SBDD7ӭDDd'"EDD|";}Nos\"o%FWSR -s;87LZtϐ!,6Q{%tF_67*S>{&- H[[⬬t&G%%s@ϳm߮ےG]:Mfª`Z,NP?A Jw}\qͦdwV.'o^{!5WQ;h<](S: N9#vݞ]M i7'2 bï?1z}[t$5.e}k:/hvSEu=wݥ&$hݺp`ey;޲,?g4N|?o(j*oDy"5p2J헤dg+E%IMs+.kL_jQ uMCy?:Iw#sS2=\{ O. O\`0ПNo:(*/g 2 隿|:@vۺW%_bKy3F^eE`tuuD Ny̓gڧXc]^XcIUwXSB`|6g7ofcԇ?Yҷ/WG]Fr2}Z-<=]}Dp\ jJɧq9\q @3y;M99tV\DžG<<uZ'Ͽߏ[X k'{Eq{s=de)$h$㫠@6w5ξGWr]~s XqN>uP` tJuhh-!W:OguNt4|8{D^=&Օ畖lsZBS8~^fd{B~eu^=YeYe+IXp'k#}Y=ťO2 XѢ ,P+..dyطCϼ,vb?E(:tAx&NL>WnWJ ҫ! |?ssڅ@򥝏mc#R,,hX@+ەj*ۀt4{\i0pK٬ XgqIs,P$F=~D܍x-@תƆ+*IIa'R6et/F[fi:oe{6m/(l[.e'R#F(9NͅPMk>B :.|>U=M񞴆={bknv8Z[v%+'uh];VɑwE&g eE]f&Nvg#.QA'4ߒؽ?xpz }8G'ZΚWZgVq(`@q|ҷ/$ȗwb`()+P! z( ,/mvI'_]}F: o兦{pOU^X';/˲,GYzSѣYEIIU XVjS_h:gm<5սhd'R+N'Q\9 w22y%[߯y|=l+&deo^ idtQlk#h-~?h˨ up}HoKj͜)mmDi"3ځfD?n>]kj5ʙuj6%%y#O'Bh?I* Xʳѻwە:uH/.Qb sak.ߎUьy!RI~,3/]|1'de)Duko4t(1@qpe% XV}rb&_@|"Jw|qh33Y牔LMrpbM&j.IoK\u0}z8b֝D[^ DsɄV+ǩy2!m0-u8J.SS^{_^D@3x2@mګYY< Nq3^DN:^x3'un X@.m Xpږ5>}+ijYԴiF׫ sN睧sj/wpԗ"O5K+y^E>-% Pȅ#MOd=ݮE:u^֖i:ƐfXGPkZ"noQ@W2aOVS&uT%ͬ@{&;_;C-M&"I"4INi:/?_6-m[{(*;hEf&K+`qk*yLbHW@ϔrwʓ54q'Y8q//;|IrB<=^uu:Uݫۏ0ykQo1~7l:DZh9yFtjaSkKAi1UQS +ieFUBc4L))tee55X=j| i9V@ϳ|ئkoU䫙3Z5c@F8OYܖs\+/;;<:̇s8u:c&Rh K߾N5ז}t|8]vum X;s(;gwq0Yg WÁ:pRV2E+\Ku{w[f&'aEmO5:O yo_WsQbc )S? X98w)wEm XrKRC+ZTUձN1uB2z8`׽p,?k@luHM.N'VK$ˬ@OѾsl:t7p7Y:UӛkС sPZ\#GW|@ @bN1żjkkJfIbDYoG+ڗMp%%q\(Dt)N+97-oWlu8H~wFkpвٔ0&"&Z@w ?468l6y4W: &_(N`=ݦE%2׿?=]MMCC],˲)mnf9NZi:ON>Y)q 4SM&mmSDNz[wt];|ͭ[é@eh9uFtt,GY+j&<B\{} XDce 22PctW͜)X$q(Dg;:tܚ)-.uG%%Ʋ*4S+`uy;^n6o+eu 2iMMsomox9ӇuH%$p\8_<ihI-'+[ԪyLuw2@O}OHLl\NIN:I< X8y><8RmJ«`(qM㝏ԯ} TX=-Q1hɶ+V P5Hy50凸-܋IXj]dwUBQt8X8qڟde)E,Hmt^DN $*B\/)8`=2uI 3|=džv[yD風IC=p\ @4p |DnŇ.;xJFoy~A`[s֛t}3 KOg'R a%\j]EXǾ  rһ(`E ~55447|FڤKϋngxۑU@BBӳ- ƲNSVpa4u" Bogk4ˮߴnE쫾km?fgo^ i[9S0z],Jd/ݼ̬,yЖLc E`zKy觟a護Ah@ !xw cc֭ "X*!a8ڔΫϩjA "'FT9:K#Bo_CM@MMc# X6*Sm?4ukkmͥAt&:MǵWƦONJ"Py%ӇA YhXm-Nvvxtxex&AJQ8j'4%Կg0 R:)54N>Y^i;p@t:7bcVRW~ Ur r]}Fcee|0VBwQP~?:ͱٱ4.IIwI7 :MT;["簾|9zpXaFngcRKONnk͉̓g:nZY駋ME>ޝ:UBw;Sd0n޽Y艾 w!'GAE3s(b%~@b"^oz:ѲeU;W/ ,ӽތ W&fBUZ\i4uP#~, Ꟁ]vMMGXj'㝄Pk[]:GgaEt^"TPvl9zi4/q=6'uHiJj4FͫY!:ʲ ]}ϗBzJ~xCYU׿|{J j-`W~Æk&<>rwEZڇܳTkuu͍StrinF޸1pu2؝m{Ztgq a'R6( 1QviN*rK}s^:@OeMkW8ީ}em|ɘSVUUioG҃zmٲe˖- <"&W+Ymllh`c,}i.WGֻj~( ۾볱֬Rtz1CYنEН}+_˖oLyz },u`A xk)E_bcYQ&`i4|s`9'S vY牔=(˲,<2;f ,P'at?\i.і yPE}E(D-t7.n7Q\ǩy̦w,T@:Zke^XTNDÇ<&ZBWٿ_t: UוՄUU$ӀZ23չ`T rb"T]kԒݻn$=ttMMXAj?ww;zri;ba'RgT]P-)SDd&r̓g^ank:`=5!uOnb.35Kq8X׃Ծ"@G竳USz%(`@~~J R]^9G$ɲ$5445N15W~}pY'hmWl\D-ӧwU\?w۰3+u$xUzrgѢ=wKW1矯Ѩp ѥNEhŊPhd}m8lJ! X򯶳Z-|'=?&`8уctͭDP(+QAme.Mu"eXkp4TVdӇAQLe%א!}DiL $Ng)+%I&SyhnIRo3h:@w aAtihQ(E:yy꜀ծJ$pr,˲2R]Tw@NMҫv v{s3( 'D|Ii:OC+%kv6Ճ}ݻ95Ps(\DGū f&rU6ɥ^׷yyDn,e @WZ0ZY X Nªjl:~ X hLOMeTSRppI܌ yzFL}}ؙ]eٛRxa!NL.3<,9udO(}23Y牔ŢJ'tJYh6m i"WR"I:.6)(yu{e{jM+͕N4K꟒:FGƦGY뛛Y>c'HwNnmph@)"]NrE%kW;hH3@qԩ^V .>wM}W,mMw̙W K]ߊIX"?_+}CƲ*T 5IkY(j9S3 X5445I,K4p៺:7#]l5^+օpܶ]N<$ pצLQVw $fN٬sDEיonXԨQ{DeB!UTT Xp첳(s \ٜl69@}Gr$9:uc&/`khhiinfcťpHo#~szW9L(n7QLR8.&;V=Q)e>-MYFKoz'_P ]o`0&utV228.d*V7nME :N]jɲ,˲zO%g\Lbngc''i~@~ pV 6M+:W.nLyIP[V尫hz/<% :K\.ih/()I9z B踂AP~ͯ7܀D>ߊzbXE7qXknnmmmec&.U!K;Ʋ){|eNƍ(1B!i"do99\iÒֽ\Az5Qr3WZ…:S_/ˢV+j,`ٟsݪX<󏓝RMr2J=3rXkjr8ZZX蘔39(`z-n|y\y`[ZztJǖW7yU<4I\."Y)bPN j^ݹҕ_p^)wqz_n.UX>4a).$Lcվ:6(fG6ZkQoJᮗeOIj*=D~05,qgn6-mk#ONqkrw [~'jsNUQhD(5X夵"6@R_r\@[⊴4y"Ǝ\ ]eǎpX':pgM:xg^yyՏ7\R Xq@&}֩ IwbN17CSU<[[P5lT@ӯ ~?Q &NTVLDj$yOֱXE=ek+>ɑޖb+Ի\PD: t| Ĺ8%%(j_3 'N~JmjooTl#EPe9gGF}d,֚V):&1:stw7>S\yͧ=%SX(,k JsEb&r7JL,{Ҳ)8\ Vx4O~ֿq+99DJS~NklY(d6NsJ\DuP|e5~2Z:H6)-/MJbD}K~U. B֚LIZ0!@= Bo*y~ǘb>mV X=@cQbnw8):&9"k fe`ˬ&&TtUihPArr9ݶde^TJ6eŕNYwcn.5kFUdYY`駡 ѿP EɄjsZBdszL4ELOg &P\ Xkcw5lӧk4aB@4BV}3vl:@Wհ>o*b{f'R}|0H4j{@wq$=%IcBUVRgf_aARRa|<$ XLhXZ=]KӉ>^&[ObҪ!(4V.?S\>+=CGԷWc(EQ9V?ݾc!t/[{\yPA"-WNKs}/z[(8Qn"U)zt> cbB!"To%%Ǯ@'C{_%0 g8: Ŝ]ѻV}"4&Anގk ޔvu> .P)^F&n7Qb"DžBDnc;Ssr;DfU;Yfa%tIR W_| İN:"?_=U;"c'WBjٔފ({HNfkmmk-P7,5֧m`1CQ5k_ޢUaf;X,[㉉tDT(.&T?^XTDAxcU55|=#zR6:'Xz Xdd{۵ݵ=6u,y@KOT,P;QUcbjbVE#y%85NNU Xj_m:@G,yakrsվIblQlme A,cEE^:M~:U}誻,8yv_UQ[wlXC (ytV:W=:GgbE@P& #jeOy*= <6A1YYDdRMV*ղ_ DbIhl8yyU}. 6Z[ X&Ϡ,Z[<z>]'ˉ&o5j[ʟ.{pLy"eDg% LbQ\ykӇueM'86#÷4 .` Qld0(s5׫iRPt]Eu_ڳtXFnUƇ6}>}}塐Dd˲ N>(`AG|0Hߵ/jb!;yT:5qz dt|z)f:_^j oﳷ5cCU=ɴic7Z3 ,9y+g 5u n. PN:N85>?xaA;0ksZje(`pݘ'jak.O,D?mə:GgvB@O0x |j5k}vɿz!#.hl8w>}X牔FM, ˲VKm[8l0N^ŒtZW.iq4 Xp<(?1[pBYzΖo\w Bz@T3 X=ܧxgz.}J.~.#uH%$p\8Lt晢^eu')F=7XS33ۡ4y"5uF֦LNeiX0Z3Y,DmmDñRkԶoOx պHN( ˍ4eYe9G]ov4@XeA̼kIsY'5[v3WdfWб:U)p"N͔)IժwWm5Sv[^e#R1CNi,iԯ j;y";h8ޘy@=j%rQW%\:GOp\xjty҅1`D'UZWN͘Li_56n(ɡ9/%ba<[i'$&6i}^UI',^/QF:'@t`0&ZQ$iSZzQI>eC? >.cs:nIwX|(]|[ɧMM`uiԽPAEm[=2+uY=5Y-T+,h)Psk^Q$ad զ4p>L|/{u,_mgkk BP:!?=6WjpJ[\ljZ*tjyw#͕wN]ݩ/qhXz:3K:]_ustZzMj*;|(DtIIw]l$!YD#t:"I"GxZVגu|^J6UVqη_"8K:w򸉛Cğձ^_>T eSEĿ]ȝ,Q aPaX[ yGO ->V, X49qqu Ԣio [z~;ơ\kg2}܉7;uz کq.][CjemGѿ<ُg?vp||׹铻._n̿W%#n1~t|'o@!7Bƈ'q@D|b'?En~6.ێݥpJZ:WGAY&b>>H?>_2/Wq}{q)ߎ*5:cr F{p)x=~ё-tcZg>u̷7NqOp_q2|\١a@$OҸN|#nr d/έ2"mw|UvLgvg~:(M3?Hy;|_镣C_ w:1ӾSd '&NOB!5k Ceg]my/@ ǽ̋|i' ws{7pvȻ{w@ VG~/ߋ۩ǿC!vGmݫ9r;c.?=k>VOyb#9N&ki=]DDhr"Ƞn|;Hk6U׽lr|G|Ӈ1qf`0'o?2yÑg6ikBsow'tV3i8'^mu= I&ϓ>Sڙ3Ud8Q }a=5FHN9JϪr FBLB$D+VBf34=Om,k4T l|utvZۼz}w7y9wȯ h4q,wX+vpgFƎ IOhbc=\-w: …}1Y'8j'˲,D^Npl5PFt|PSE=%ʉکSq8~V^,P .\#\ #cU/xeI- D*-C!1cf# x[tTӅ-KF?>8 [e:fSs鐈袋ZԼ …|n _u5Njm16 XгHgK%t9Wn6\j Ղ:_ԪDυQS ijC9uk_AB?q&_TPCkfM'/RIBeEϫ{ ti46_7쵚> ,y :53\qRU0zVt^̟ y(D:YE~ zy3M)_r=nv;V\tGWC|X8{pkz/x [s_@%VRKOw|sOb2ܯ wp%j XLa.,|@@Mh虄!_pN4SMse]Gi4ʉ /E5,9de2^*ܘ"yu6+BK@X?_N"Ըb ӧBk\s۹1'c*UUpy^}}XE9]%2Ibh nj钔4fֹE(#|\=颦ōrŚz&np| Xp5綽f^V)E(.ai OƻuOxh|&(*[偲6UXS. -RA~87?Co:%_Vw wQ,kSZsVڤFr#M2k*Wֶј+|7`ߧj~H=`pp;'@]aӇ sE] 5u PiӔ:j_UZBpܹw;}IUmNmwe A*(HE1Ek4=%6 ]TT@@S? ޿.>޻Ι9>qcG|c}wq3^3F{{F2~%&XAȫOg?mk}rL:=E>4QY\D,)Fsͱڟx p$h s*]m%><'bZn uaSGȉk&`?9C縹kIbnqZ"u`b!]Q$|hvZA? o`|E)= X:Xo}_KRQmBm~(|DK@85J{{FsM@Ϳli15ҕZX'N~EA x!.D@ \`mDz+ӛY' B8zNlڔ}h: jXIX I+iv4 Z>#I4pϒ³fɲ: D@qgnUvg'%UiJrZ_n9g➍[TULt^X(<n~Uѡ<=88K"ȡhO&ӷźyæ%D :|(SX,EzQmϷMjT khL*IFADQX ^X[I J'ToW(TC^]7A s7tv&=p+MnwݡDUVX(I^IiG Mv y,"a41l X XO| DYuhmkwӜhO>Β.)`0 \[Pyi>;dj.k=y庴'ˍ׶],İ 8}$y<@صKUV~n%t&mcC)Zt=.>nbIX%%r3"*xgSklLF瞕sQo,_O0YSE,wB2/KZ~ |qj6<AӈN?]Ni`0Zdr8PywÓ 3}PS_l|K@_+k2c'?O^VRx)nT ~q>~ˆXgb*¶=;C uӲ&q"#bD' C+U4M;+@xWoYa/?$u`͛'QLQ823'<=M׷]ښssKZȲQZr^$߹pDQN˯`w7:G$o+`Dt:^WEE|jU>*-\nw=ShVbi7j21XaD!\_{ xj|)ʰt).@xX#mF*W4݌IXC5x{f{}Sd"JIs%uX"BaabX(G@;)ߑr]gxkKaLlֶxuy#r$pv #ah>ZYEUUu Uljzequh;V{{F9D@n3V'6|\< X([sfLu*.6YHF%gElpXG}`#.LtUw7p .I< haksL`A1響{Bo%=^H>sp3wN/Ÿh? 76͉>t8M&'@1g3ΐeu,pbX=kkܭy&SSGGNhy5t |D& +u}]o::ˎ_%TP w "0on^ݹ,P޷w_o1(`2OAM408 &Ѧ] n<)b駅 M&j}D"QF{EjͿlȌU4Eu.4&4lߊBiDP ڪL'bNB-M~^feWޘV&`]KHx|K@ SyjrAF?7x((`?)tp)D@5nj-.e,YT_$՞h.&u0To՘_E~o>tYv) T֬h߆nοCxK,ţ 9/+`\DHT_o X&Þ&k'UG<@7okP:d4g Mu'OkaO,;wpR $,͓eФ^U-hSۈU|j3Us &S$iFj:EJTUm6'\ޓj2Ea#9>c^Xfq)!P(*2VF"k:׶0=T- 'Hi&`r+XVt]B,LXA u+LAhm^ۍédxx1Su]׉Fy JjJ:,Yb"ʕ~|<7z+:!-+ؗ GTQvൾE: X! *a<ϯ:25YC*i$1X*VO}j^>jMyRG?-\h29 /O`4e(D99NM/#{Yg$ ؟Tm+X,;T'L0NCѡWgy|fgN@D$Ejn<97 pSx,`:wowHjjӺՃS,He23ϔeu9wbi=M\K'8lPhCdP k~|<9y3 =sU__Tӌ:x*v_n X$|euYJi?0])/f n]i$&2D~i%K.`T\_7fX|<O )~BeF z{ֆ ~?sdlڐO~s&߄SE(?EQ~ݧ\L;WN"_5Ωmc7tQY-&~ l(TÑwY,Di㛒SNuR=$)C)Zt=nk̋7xEt4ee"Z_lpcF^psO[.Cޢ݂|$Qdp;!ܚۖzPŘ[L rQU%]owz>w9]wL57ǫ_\^L{zPZgbFܔZ:@%6ٻ+avRēt=MZRW8G|ʤ7^^KAd! kcJZU{g6O$(3Ә0񾊐Hu+jTLyn}7QW%?~!8.DA̒9dFS]jk5d"r@_ .<ru{TVo ҿ=7ezYj3PUy3Ńyqa:`%˘_-\eL&M('Gx>K\SqqD^}/4nl͟EG^ݵf9dIr:PY^Q<";r6vt9b4p xX/M3G-m|NRBڷb& nrn:AQ|xANy4tJobxa @ ֚o(IXA0( ?byw@Fq60 v]$o4hvM":pe8,Zd29{Ejyfc'\6VrbL1 w46aEߔ„9ɯ7+?Dc"xM[i02ƶ ?4JIdȬ7 UEL"r3`D~0ش<ֶmͦ+z,1r 8&^m\ݸQQbbu]>Y3pecҥfsOQBQ/.,MMŨںR6: _(yI6W]DDImSP ׺ETQ) i'9\_X](*-(ܲW%%F/EQQl6A4VX*E툜"(@_$g^ӓ[{T$rp(S#Ŋ(|`7>_?KN~݅ZN/Y"`H~-TU}pto|NjQTL"%G]>߰.jkc{WxkaSo›(`"IXA<9>cci>;db'X'lLJI1(J-[f|SQbcC?91>%&]xaoov@(-^lL╶C@_+m+jM,Au4 Ҽ?>!tt?ȘT+[Y'$m~+R]Xe:ϻ4Fⵃ^F(` DI,@Z/~a%tZ|OX?M[<F>䫀bcR@(Y].W^V58f `moE~Vv}ߩʲId ϏK/(qqD~?+W o:;b(Fds 毀p+}-73L&=~\EE!:UZ^Ю734~JIQT&1ih<9*7nXZkJya+5s :D5k^=(n>|}GmE[[-ڵk{RƓOII&{ D2v(\|yj(QeH)|ɄWj+WF>1lBȟ| 'zcw`r)@_ef W[֏0 3r[T36)s[uum{0Kw/ [ B%ҘLNwN?. V>t2Y,ޑC5K].$A`"/D4ό$,I5N=[@ȟiCcߊf\x7ONi R46,7o8sM.ӯR՘Vc!rwgMc:vuK,SOenZJQ"Bm`ݘ0h߫z es2]k/no26Xuy(TChD}|͈S鍸pw]W7+,Q4W|"ly~p P%hm)zכ|k܅Z[ǷeTMͤeשׁʿ397؛;NF|Jĵȅ͉MQW5ule ܥI>?򦦥iW#(^ٷ?O 6G_/'?vbt yHA;"mD?#],Tj=4˟]A( W }[>Wp،}*;BX7Qe12X~E/ ;ϵxHD/y$\۷'׊H"?͠Sv_gZЇC']+G?|?Y;>Fšk >=׽:iMO$kŲ:D ׸ȱaI֮5&a'I8 h1C+/yӺ]o׉yy}?K/҃'|@xz5PcjF)<8q*+PxGxo'}+~M Wّmک`@(:xP׍)#+ԡ/$h&vg|W:Ody KCQ) |,J_aq\zk%L|c? _k+<'O! iPyk[sj~҈h-/ hxQDBeE!1XwT5&h ]ok#ٌI3HN6&p$\D6*s* ӵ/c4.!-y(A9p41d}IGҥ|OV(T_(<Mzy,zzn*-ω~+.=i4Q+esڶ>ڙOuQ$jj"e ")VX(KX6,֦ag4kVl I6P[VKZ̓#b0yeiF 4.JZ.V+[',IN硉Xw_߳V~&b !V4VnncOup5Bύ?[@^ogi UQQTҼ*ngBOFla_ (Ta:`gZ,|"R>;nWҗWgf:vLqY3d$3Xk2.ءiQQDf2 8Ct晲$3;xoHJbt`6ew :OŽYdW' TݻU-Y;SvW#;;;Y W)M5-] 0 #&HU22Ǖկ4Pj0|h1MC; HcZ,xNZ*ˬs+X'~ږ};2&e`J`5߻*`Z1ҥR֛?}s0J)rw7D@Xƽ9[L_&ޕ6uFQ$9_mM=L&\M0됿tC$Ej6;cY! "<:`o*nAF< \;V{{YH[KtE7[Q]ccPAƍ$w->P5tKtB_ z_/g'Xh.5p[8eˬd)oSyok؜y{/\ӧKC)~?4)zB?1syUee![ըiF7&FR}LK>,|vV)l^J8ZT&`A| G1 OY+,OAӈΕeLʀPٳGӬV5m0~?57g!INm^mWυqvYca!U\l2jjAA Z6ٻzF)=M 8xppᵀpvuv;:1tg)`N"M Vł;;E^?}'#zꋛ޿{ꢢX ܹt}A˪U(mڤDgթJ:M"7ZRSK_M8 aee APO$u;w. #MMj堿2c<Z/o9[i)&`A bL2V򦢵Q ,H"O%0*`EŞj6^'noNoF_s Բe|tI{) _m؀&S$/CxZgbNi`@ݟ8?e)JJ.8"Ci9i# XD~#VPhNp Bq/)+6Պ 7.< Xve;bbj :Oƌ1N(%@X^Qbb<"u>dE{(z/ Xq iDqN'<eN7;x/0Xzm~TA7,[f2uwNfȘjƅ]t7B,\hL<{ro{q[<ڟy_,%:#X".QJ ֭cc^ *F@eeWM' {QztV"n]$f+*Euymv^j?^!@$e,Jh]xj"a84l65*H7 08r=@8E$\Qjgf2)X11Z3ΐeLʀPٹSUV2L8u8) R,\h<& j]6hޏ۹yW P Ըf| 7 u}wϼuH1|\y:;YXE}7| X XE }3RϧVIEQ$Zfp^S r7NLj{:3l͓e(* ^VRLyk"t;{ IJU%:IrY ^Uͭ8׺֚Gm32X 4I<i R|l&7Wx~5b'RЇjww:Oa!GQ(<†_p+PC6 IX,.TɖSwRƒ%&sCtuI(JL 41.>_:?!} 7{Mz?[?Pߥ?*Qq "P}c;R9"u|kMKwzyPM#JOsoեԯB k,K^H_:`;ǷΕ/V ToVVkxI%1¸ ֯ccx;k^e IrRR@ųߖk~B_;W)%_y)=+Cb!4JBUeOfc&xquN>瘻,jjb'RO+.9+Dܙ_׶|"m}s< mc v116[t4y>ض)(u]o!Ų}P$ ή]jUT:@Ig]Q޽7.nǦREɡ߹͵99zS<'J3U JPX8+ ߅~1vq/+H$5=d_RL&**^)ytjx~f̞[boaR92} Xaʫ^ zo $ie(c'X y/۷kZTQy9V ĺu1PXxGӾ~ckz'T}?=*^9 Eӌ7y.TK6i`' sd9VׯNRTS$䒆Ox#a s\ev,>}7塀Ś]$`cW[n2Ļї#~_/ZdLZ0Bej 7#c\|Nj^uvLx%9~jjwƿ1|Bx lh0VjK 7֦-Lt ~BC V@I XwEEȾjWWUͧ1P&Sw7)sc^IT5:P s]ة))%9wWEm7~|Knw/9֭ETS&4GU_ׯ7&ő-4>svq..{$(\ߓǥ$ozҬXr/J寀E$ID--(C9gkݙ^!WLt;|]K`!kWw٬jqڗ<߃/Mo'&fc @(^(o[(`& K4l x0JޒJ+gS2/!qU{yIIk߯ω>@Qbb::t]X u+x~[rWW ()4~VTX׍w.9~2 G5 U2=):kVyI{'KbRN[qOfc&UWw(i R,Zd29SsRo$uoҷddm*e!Vy|pƈKNun=󺻅bj@_9+JkBwtv&V_OM3h#y~˷(j%eY:wLr(`I }=mO;)cTIr uk+Pk#9ɈdOwݵܟ.J;tW;5W_%<{,;@ukUJg焓rut3Ere&^a|+=KJP7邠(__?h3x"-c%$aXS  l)m\'eLiFjZ*7VD9 /)ɸ`8c,W~i]b͙t<+$oV~^qz^r!ˬ+Jb0׌9otjQi)2R.IU%%_"{3Q:N٭;=5'471a!n}7 XG{grY_ZH_l\X?dc@(lެQQD o_Q{=U+@W.zH_+'5u;,#xlmƲN:jyt$+;+`UU^Lzua .q<x Uߨ.|m F8 uX)y(4@ne2E"cի#cx)iskZc$@(x$\D))| 6~ߺo0lB_ ڮٵ+%-{f~M$!~XiCD+:ycy~Lyf8r+`kea,8%˿Z+4VU Wptp.V<?a91c,#a￝ Q4 W˖aRNs1jfUX ^Ҟ/twW2_knUZJJpaN_,euu(}~ܔ2k3^\/@[RQx|0wԆ7?nԌnd#Xu]Q$0`F8pfLJ;-` t&`fBw/ރ(`ҞJ؟X 2231)Bgc⒦c1=[ X t-2 X<9?J9k.a'XDNxwY,Digdii5!wjݬy6̌n sl/rs#X@]isxK9;|^mK2Xp kw:o'O~Ue&/9  `yucUd>fr YtW{{3-~14s&LEuMgթYY3Zv.Ֆ.5&Y&ʕJxַMsa/nH\-?|QqVyc.@ 1_g<>3 v BXO({ZTug22\yfLʘ>2 t>DUcbZZ,1W0̑3IX]].ID6) ϫ!!,^,..]*wPq8t]}ՃZ/z猚ֲ}՘~Z, ` ny8u XazI^%̽a X%$F \wN|Qɝ^=F;gbLʀ[W&.:N8uޔG?YU%]"v/iZ!t̑e(&F'Kyh!@(V=1qfye ŋR_+PtomF8 ,`u':Otf9z/yMMs vO?ne,wo !wnYAQ$uE0)B^M&/PU/h?/1W 'n^o-g7X}6QS.EEǕN3@ptLwYxz5߅ja<>iO*/g`u``]Q$Pu]׉]^sLUQ~¶\뼶6juy訨("Iq ]siKo ]/?sﴔ3I'IMI: 㷍}fbUi挟6 y^-eb{AN^i R|Q./u $Yi)cDfԍ9'-nwD,)Çb+}/ ,M' Zo^/U 3X ݎIXڞn;g X:O_/;*2 (_(<yzyr͔/?m۸3m>]n7zuU7`g7nQ**soUɖ)g8OB5[ SՄcVǷ:&`A J6@8 u73a[ h}UW:`0XJA pY'pDޞs,wW?W4'u`&^$y<@#E&jm{ݸoG-)/mo/u`i,}:u$Fj|!t:;$hFUa&xmGSf[yU d%H{u:xEWmy XHlV(`_^k<躾׮JR8L6uWjOQ:Oe2 VRH!gJ9/N`zzEE`B:֮*B e8TК3GNDcb@(Y||< f<.#eRF=Jc?Opt:AYLk+ .q<‰tVifR_:`gc?LL華ߗ|9-\h2UmLD_~<~RR~GpNgg!ߝ̾?ş +JL áb؟ pgŠ3d !4(Y(<`.b]_xǴs_4s؊ "+*sr_-U 3"~)59)aVZbݎs_]iiw8ʻ{Ij,cRFJ Vn3mI ;ؿ{5bʢEXJd Du}6Q}Qܳe%݋eۑcȱCW ()A Hxk*N*BpgkB޺,zRt`!k񉉬S^KY޳Y#^P:@8N`|3 s&N{'xcO||L^:*BO$(=P8lc0@(Zeyw̉3֔kO1g\3u JK5bax1t |D 7T6׌A 揤wF0 XRv ,֒vV 9ꜿ(Eڗ c:yR[egA&O$PcU]g<Nɣ*+1X<2KM55`ݫiV+'yd+pg y&:MM.D7J{yB'hnfBK|HxH|( IM){aÌ޶\)'Z"۪# Xt 5ҕ(`@$Z +#Tm(|ӲW<8rߦe3Zv~Bqs8@(ZS}OM>|y'_}ߤ[Fn>frE7X]]O?Uhi R,^l2a^ߍ+D#Gy!GjL QkWc~?업I~37J3^_+D0 뺮};f\L`jOQ0TPU]R Ǵs$*#fL^0ɪ*S|ߥa/sbcJ//BoJ?>u;yRC|ۆ6wu i-v?$W5<[,G nXkv;+:lqn,";FEULy'~?q Vx|+n'RUN2&9VY$i0 4V ¬);[𫑝{!!L1g\Y:37+,軼<>EӚ~[{ XG_'t 'BnN%}̟OsRTu.9!5,|O3@}p#6 <*.eLʀP[ZQxM'pc)qޚ?Vs캉 +t}WQp6Beɒpbx.|^`k gڏya s@x$Juߞ<0 #6v0>W׭hn G"~|}{{;?V_?_YKKC _¶3z:@is?kcaWiIIZ sʲ: Do5.!eHY56}֨ qM=2Tnx)~? X*ӦIC!:#|Rc#@(\cwiuB^wN͌Zy d>|WZ=0&G`5oW7NH``PY'{(`ޙ4T!lY8{n2aE_uYY.wIT<;d! RZ䫀xꊲ29~uyGUǔVW@QLr 7oF,3S~i RQ xu)3ί^k>@xݕt=::t]ۍ_H^)t<udg:` (`^ e)Y8owPaK7nO,(`c&{QzuT3~X9zo`!d@!+L-Ђpf ߅*iSo+| VAvrS+``!t]uڹeCY īwkP 9m~f---!+!>Tn4/ұ%?vK;bbj4>R_:OF4|=;`!KX%ZfpWx67Y ۗ~vl~72&e@Z(<ߏ,ni=xR#&1j;+*XVW$mܨ11@X8'=.[fˤ/8:Vy>b;Ӟ+8d0 #1QT(%(pjoS^!OTinfpW_koZ`TnZZRRJ 4013?L$>/]aX Vt4qWvn:ʆW>Y2slת*q2ɣk:g Tfϖe(.8E Y6 W L(~\V~˦_U_:!cGq),Fa!뗴,=~ X!7pg Ʋ:5V7HG Ov]n1ކy?//8剢O4q(z<@ Mو.pjCOo{6'8 X G﯇|T"8" IV+_!ZG»L&qdMvLۓ?'PoFE&uIbx/J4s$TL> H WWE{Y>\< ,\W00OKG "QzY{-pD\'#ESh綀-P8pu0dd$%a!_6ٻ}pJm}3 XeL&W-Ax2 0}dbx1qK'bN|^Q xmEa"Ųef3OGP ^ՃbͿwZ%@dݕrM=ڌ(CZr8Jnqd(P )s!A""THNNMe^h-ޅMj\\cbcE!u2|>'eLt\2rix$'e㺎?zB<^b1Y(82yq<QeM&In7ј1|^ FXAȫQ.-\[YˆK'xR!+``GQ(x@E5 %1 h71Q|J//:`:UH ˇB]ukŘ|iXFQbcY x)i5M5wgRNr>,aլDfpaBg HkUdFu4+WFF'~3͹- ZNG ^#$w_.z!BCRW)Pb-3355=u fy7(7͍]]#m6y7;JTe'XvVflYv:YHmlD|_)ښsuu%IoR)NZs~W2 ˸qKt&Sg'47F tjkud" Ub&xu_ycm--@d99KQ_3.b0 #!8$[Y.ܸbv& \^mX5{<#ÞATL`Y+j¾` _s1*[%Ś  ed$'c!ok[oE }c|9l,c J[K+Jt44}:}cҔѻbM35~W06nq 8JtKk+7 tfM#vkrB3^+[Ak^^(g^?Y'UU-o_VT,Eh GNuԷt mJPQ XGFiaVNME ]ƫ^G ꩲ9v{hIMNf'X&ICSO __RP:@]%hjWJIU=z3WV._m{b]ֲ/TU^q@-fm*o7[[,1N$hhi;W(Jt+W=*S<>&gϰMJJ4bax €]疍bKe&]W>$r=:Nɬ0NB߯? V(`\]yNҵlwLw([yeeyRiP"zu`$$*̙rNU5*bˈ7lMmmm<_R82f89yRś4t(<( _]q:DDAPCū%KX'in6ܩiQQ/8)?o:%ww:-1WM^)Y2%r8Xp7l(&u|M@.oڛpFDT_:Ottd$kny Xvڤ?o]vQA@:Qo˾jrcGn5C||HKM"y`+۪U~$v5[0)L4z518׍ImB^}狏5Id.!!AeI7kAM3Y^WyyF7[a@0#~SGi6 XYB 5{7YVdh,NUeh&Uf&x ͏3r1ćć&1񻢱x~񅱒`5^+nؠl/01~҅'RS: N7&]U%%(`A񺊰AxR j[mz]v MݻYC`@8kȨ?3,`k˗NLlyw{Zb"<:xIr UOWqqZKM{h\ NN{y3 7 n6lPX"CEJwk_eet~V[Sie䯀C%uEQ(|S_g}W]78eyxb*G9Sܼp1dHFFf&r}]]^ɲmu*.ea@ n[X+q*ɣsvLfWUË̹K{r}Y'45>R՘.\hmժ(9ݙ=X=l_uA^Fg'*-$,;^'`!zC6T<:Wfh)( dѫHu vCdddeNpx3I\\֞o\>˱uM7O=7u`͘!n74)6mRѸSW?ɳTWSc}^rIDAT{:!j?&`#X~`1`ٻWӬV}_y5T%kLKȗs`k#CRvw D,)>Xez"Hsk>†R0 tLNt 䖦$L룦gUS7,]j22 ܬZ䫀Y'֟ЋI`‹ǟUWg|2~/: X08\f>0aWq<MoNdPHNU%JL4~M;9(`Ҏ̧A3 XZ-|:`CdF,l8$9`p2i'zY(EduW[:MGş5ܢ%#YNr}7ƅF'áH|P7 s&8,l^LbJʱ]]sWI VB: mNB. /ձ1PWk={XCnnz:VB-ϛ|fE^ONnKο%$%&4VƤ M3VjR9"Ŝgry9~?Ez ceo/)+G>{̛喑3i!ɸVyQR>\y\toζR][qEf*~WD\Kx:1+\ U3Wvܓ: z9s Tqz $֭{\//TSߘ4ǫYEg ݝ~RR~(ۊ!YAa<>o'f"Эӳ䯀udbxQTg˻їՏ\Wwet4<LXX Ž}NDLYX3  X<zjZ'6_5%zul>8 א!+=ݘxu,Pظ(+y5᮪<s:Oto'ZQ:GN"I"#io״(r]yXqݍC[3F;o1aீPRytL^T2:Dcsg^z%Ik2Y!E"]g"ŪU|O uoOIGi<7}QuxMڵxUx)=u67ƜwNnS%%fN7&`L|HjS0 X?Ԥ9D+lQzpVC o UrjD9 2}r:GEzBX=}FENjq `'RgKG8/{N+ b|яݳb'<4uÑʅ[ u=U%ooVIaUx+<e ,'mi|Z2~{uUxfN90dHf&VBޞ:D;aSS;gt쾞[SfΔe(5XA VqqDF$occ`rҧnw7PXin/.x>OyYDR#3V`0uik+`< XÇ󹊰~k3MQQM着X-`Y|`6,++;u k~u~w]R@I#O Xed~|b3 s~3TW3XLv|\lK}\q;kݺ( xZ0Vu}kچS`?ܟ2&s&ZZt]t=0myWXw/w6M@8_:UNv/vMTFa7+CffNpxGQܿagb⸇jkc ԕسb)KR2'\֩/;[hTIe"Ň+::XlMwNF#h >?IZ~˿i&n0$OP m?n&30,7vsԦ(D´->u^U։ _:0tC״["o*~%%j&ĈSui{(./jUU:Y*BIKh4GpIFnt|^hyCM_u ~C%pqVc% 'H `03Uو^:ܳեԓxX菂O3Gnu"4WRf3ɂ>9EE|Nwk۱9O*lKX]@D޿)nh"5S ڛwt;ujЌl"IEQ$RUM4֩~\IJNGchȅ(`@p;S6Æh۵s|%f ԪU~? 9I=s^@/|MEjapDOuTݿG2G>XB}ߴ\~F!G0R]EV7㉨H|B|XxBi$w}R""zR + !jӾ$TXPBM$Y׍1(`o"x~ZQ}: @t %UGD<"*)QUhdQD ~JN}riB¤u#Q0VVUU H^A ȎU&D: UVض*%uB_ ZMd2 2 TVjDך:MbFڬ~y+KU5AwF':;xGc1ofc>8~똇'67 o~ǷE'Ĝt_%%f6NHIE!JLkίo.hTww $)_:^_: 2u ë1#%%H_: fs{szzwҞ9S$$JJ&U%>9Er|A*  SNᅦO$D65`0Y#4W'?m₲2!A!i&Ĕ\.`(,sVݾ9;P "mQbe%!X8 p1thffV޻/[,U jh/©ORv~s ԲefsO)^co* ﲤK%MK:'arh~'.E[%exK^i+ \)QZ+q*ɣgϚy`p9+W*+47@:E5\ӹuݮV+X`Kܥ_]:GE|+ 3vHx1 xہ'c!8 1OBGŲ/%'٬kQ&Mu￯(11Dݺ󊵔5[<eq9s"P"n줗SNwVY1b^MZY>2V+y5ygZS_&%|S 䯀j]$,+^ Xލllmt:S{t[UK侙) yBonÁD;::`De\ Ul8d%"`Ƴ߻Gq&\a:;]%nq/_C ٥zbqr#wf~,Flz++fzI;!jQwEGEc.cY\߯ϪU|OH;'Թ}C%_nw=5S#İkUcX,d*?>u;}Ӥ: @ jY:K0JJTb!6Ly\-G| w~e%%$ƦRݸR is+`=:MD|?Rٿf Xq lo-//)a Սvkj*uN08VG(mZ;8vju u-YKVgbz7njo?.fKԝ%F}>Ӯ^WyGUccV jk#ZgV4_~iQQ/DyI&ZG||_Xas3̹ENiE^(qT ~fՕN?uaFKɁHj詭GVzy&axRFߛzJK <́wR/!"y\ ugNllݍӻlmߏ&:Q TzIZ]= Vkݎ9rq?,Zg^=;jyG~Wcx|ǾpRo$"' '""*׳["}'8&")/)Ţ9sd$JH RUi RZdLHJD.,2f:Rr]IN]E>0VwΟ/(K+WqqAO*=`34FNZRpx<ߙjFR\}(`E\AZaYˆjtY6b=ASRVwm;&Y(``5fR(E })l㊮_v"*x3tl-QQiλVׁ=rO,qju-ZnߙW~ O@D|#jDn&Y~E[]/Z,4$S\l^VXi']"W5-@S3^""u*9i$ONT4S}b|v{ kH|i\//T3&?vҩ4VNpdd8ڨ XΓV$#*/W X ۟in EY6Ie_{}bHNmnR{E^/fk!eY$"EQa 4bvÍii0{@8XG8.cTT?3z\QQ]k7\o9Dm+zq]fskZ=mGTnnS1DD(%-ϧ6|1""ׄD߅#QRO;ө5l |DNjbo/4)ū-RK&x-vauݙo$[דLhMjTukcWMLDC: &ᆱ(Dݺ.IoKߎ?+$y͝;厊rD/G4wӈsj!"4"2^w"zUGDH. M׳Nn"Ao: իy_=h:֙W >^(^s?e·_oLjØ*<I=fƌ);Ʈ(xŝ ;.!Mh>"u]uC`! XEEN?|nH4 •=WNgz9qN8 8,mCe@a!Df Ap 3RS3(^d{{Zlw|tt-w?z.w|!:p|3:u'ϵfSsZ$}dD"*"I^DDtqc.tso6/PNT\.W;WN8 (v;ޚtvJMDoۤW5:O+y>LUm63$ )c^.Et4GG6)?nuԤ^{%:u*-5 }*Bd uu2rFsE>6Q&: %^BRFjp 2SJlغU?9bU93dBkRͩiiD:G͖kcbU(p,16[Mv':Zߤ)H7CFDDדQDDB#O]v}dm4uL==S@pu]ya&xdJKKwc`$z!ԫj~Zqq*BHq){ϣ7_h9=xof4ֲB/&79|O6oWը(il%Y4.+<+,GҠ+`-|E6[Qeg5XEEY,QQDɩDͬSiiDDi7}:Qں~yOTTuuZN|؎[zvw11=k\qnzw>\ۛ{w!냞_N;[DR-SǿIzLkp1: DRCnyr[:i T,k&f﷟ڽR?Vh6Y;B7Ϗ;iJe抨SL SvZcVREi77idLi^):ΊzӝtJ؅5(b(" ݵ}cf~5~Ʋ,~|w9|dPܻFl\gA芛B~`0WN+`笞82B%%` l N\^ҷB<:yQRf83!jb[3"QmGSNݝJeCEkTګl b;TqV9T*]{3rf(!0qx M-  w \?X[d-i Գ4M7yHdC{-[oo.@,w=xLEX96ͳeZ>_+\!X.T2E$ZNjMzڴ1 >ڨѪ$z@>i JKF(HI@T O'Gͮv ȩ1 \5pU,K aW>j i˟(jj"!Ɖ,LbsUUv҇oG9 L>xOsAV ºU׹+//4iC蓓C C>([QuV OB4ij^8*R\':lktz9>36:|A\j23۵jقO  O?|3FcO΅BX8>>$GVMiШTl,TUgwj4<[\*d2r`<󿻬1!%\`EnD"4UVEy:E9ZT^/h*$s+q!ۤ3e'1u) hZ1e~[5Breh_w|듅oD{Eߋ5'G`V:WC=V^g~.]8.E ܽ22Bm޿4sOb@tt!,`!2|s|CտRUi0Fj4i&Z6c^Vb`Q .UGʟ $9ОdžPKgNM!\iIpj~˗&W4sd.ט f@ex)n%Jv; |:Ev,ElL 7 4G܀۪t&WKwk4]f9f XB52Wh%HHI.M{ܫL0Pդ:˲ʡnA_5푭S>v*O-otA[ l3FN|jT NsF"Ջ<Ӡ.\>C ݻAj\]i¦N@m G A+n"M$p$ >>**:Tzm^o:j0J$'Tq B- 3#tK: jKyTKRii^퓕;5ڞoj,`I1}l˲hJ!^}y{ߝdvccXLd1OD|؍7DN'LL\>)#$*G8wp ? sA95~xj^.sR #PT u*PKh4\|i&YRZu.B͍>P3ZaPT^V.6 .h4% A,f[3˃Q")"* ِ< Œc+H x[Wb[J%iNY5|u&Ľ~ksjW [:ttd: B%ڹ3Iҗt@ܘVcpBVAp;IO0V[xd24F|S?+{TVƪ>r盛j\O/JI'i?,jKBW~+2 [|?w,#*`@ MڢOZi<@F0yhS[|yP,`q-33))%`v: B\[+&^BXB!S*9Q%j MX[?SVkew0juG<#‹ c#׏!\ gwP<.7ݻS +?Q˲jU R| Eurh9~^`_|UBf' "hٲ$`߯)?Yvlh`]B}V[婆ZmߺN_ן'Co )kl*V4-D6)Pk^PlYgD}fCaUOTAďq.Wie\ ,+Kr9!u*PKXsygTi¸$T,O fHT?cBL _-Jۭ[~*W(7jV}7NiGI9AWetz!B\uMby‚9w VuZ-r&O^ n\mX `$@*bvKKN_O?;|:C\BOHTLkk5s2ztmMhZ:F(qp1 Zf6;y3b1?'T*BB48|ad2R~+5YV_a)vq_nwI cj5{}VoFLNN`,P؎4TֆVŪȴ\.2(i~|A$.5FS}Y6vrӤk<M'Jyۭ!5.g1Umh O\y2++m]Ѯ$^1s|P骬eE"dB~S.=}yoDRqMC}t,1"*:BQCo07s <~ݼdwʎ\S>紼AϮtsu:k,'=e-}-6+td;BRYE[v隲a:]AZmtK/R ;x I0@,׏!tu&51C6=J$22D{ظqB dgE1#/꒼'fNsJ73, rR *bPAGAmZym wl[0AǪS$ZЎO.INCdf&`UndYx06D-i>,` px X\1%%=`7o: B,KZ OI PKc39tJ$%}_U9hL6Ut1,}z=~+_+r6B`"z"nY*l  $L*`!,`P$Eϊ4Y~C-S5qGE\taLuA {E"T!.TT0PpM7DG v:r Y[LS~7{7#~UR*K{5DEA".0IO].M|jۭX1M5^9=$Fc]z3jk>| \jpkpdFIK@෕|Qyg=TWsF)7[ŲM$j.\:Wg"=};xuQQ11*\P8n7NG-邩Wz@KB/߱֏ΡRv?h4]V kLkj+զkz˞DfQ 낕\?P[yѷI {wKeZ"P~~HCba0Y!WPhM | ;ٷ|y5ePhfPS,]dɷ*@ʩ6RbZfh ja&r_P- \.Xq ǃP@ L,1]Qf<\0 )_H$׾$ F$:U㕾VQZ-dÓ\gA LSN'yWKϣ n zY@g0 :4Ծ}JJZg\!xcbnXrAyBr6*bQz^_;4~o۬2Bf]%\\?!t&p| ; w4ݤI8 5 M% j4F^ Y63 n ١F"IT@'S5V Js]Ф'F*M  @pz5_ϩj"˦ďHJw8  8O dN Ut2ikCH( 4򇔟\]=WJve\i].A>I$lĽgXV X4,t23 zTmV q e\Aư/10Nq;X᧺~=nݍ߭47: u옒, *>I=feO B-_"SU} EqUōe OjH;Bs^"D 0|., .f6;yS*j:SSh4aBa۽ 5F.(+lnDwv2#jEFw*TR*C LgP X6J%̲cr8$nQX-]#}pPhZkO֞M GdOJ[{biWw>tFmlw:EO UWJDv5ZG oΏWWPp,ET7I79a}cڽz@ nnc@m$M67\I`0 Xر]&bl\Z]Lhw)oGAs!f;AHnF݇Jeѵ{ jިb0z;]"@\փjlmyb1̼8;xZ @-Qvvh E 2 R͕A0~NF:ϊ\T7ҴR 0c@CBZɂj«.mL![J C?"̧İ7e\?y3PuqJӽ͙TU @^`OȢ95^9CoWt*p4AE_u&mB*:MYV"у[A":˥`O9M*xZ@ڒ`p ".\B{.\_G[/Ν0iv:N[V+J%@\\DDd$@EE]]m-שkWt S 8,;k>&fMnU^u.P\d)pU$RZ4w5G2 aq@M$(<0j{̇r_"\'ipelf: j-CWI iNZ qI7~:⿘"%ѳ\.ނ+`ݡI8ZZ'hZ*:Miw>W7jaѦ`O&e_"z.RiY ɢO;SPN}|劜}0ЊqPt ùN4.дX УEa ,V,u4jckպ$@Vp XUKc2 ;nuC$,,`!>8):-} >~ tD AADٞ eUUS [Ta0[,#t:&,  ~xGB-EAo';ٿWe, n7@b"!d+V*@0[ɏR =2,k1)U\4Q02rehj~%h? ]l: jK{}%nDR͢o\YB.kR6(˝NjF, Z!N*f߯zZWnc[zd|OB1bb ZZt4lUh4p: 3BdIZ0 ͅ\i7Ɵzɴ O:v}n\j벲226o>p`n N+j#bciA5E v }+;GH7+k4%?GDTU%2.Z-c"Hxi4W$klX^H~x4M7iNB͇aB [" dO@&,t 0Lʣ1׺\3`:~NW60 r߫zE[A=#.~C3Ңi(v8)D7njE}rGZKC\O`Yј>qF݊G ÃA|K'o gcR|8RY]P0oP+/o >j0Hr)8r-KUVZ-z\薯 i{<ڀ>"GmIU;ܖc:Ղ LY:ݹnU] 'DJ>V)Nq8"f&>q8j6;Ac⧃AG؄iZ,i.݅ 4-$& ) ϋs#Vƹ,2>u /#-S]?r.8p<($++--#pSeӢs֊yBMǓN][:l`-ݻ+wՇ?xأ;W\dmyttpf )X,q!_sGxRKB}>.cX5|jQMfΎZ"h sj˖. ]q\@9x ,J%%5'ۗfƦls]zTi:(*VOz[;Ʀ&q8_xh뿷KZEPcST ߕTM/ը5!+! Q9 7mbj :O[Pdr9@RRll|<@qqeeYשgGo=:΋:Ad:BmߍA%ז|`0'9VGDT,Um4/j` [$xx#t=B!󽶟l %x$g$OG> T\i:yȲG _F|fDg1>m8aj͒۳ DBǁj e) _A4M'V8],ă1]c) :r +T"3"TF׹ S! S[r8"VtUG}_! (e#flj0M7\4V^Èq j$$tQxeeI l@Z(iP$\`I688- `+_ 6߷;efb Cn݅{*~C'O*B};MH{_j.(#2QP<2AfeLgl-Ӊ,0! {̦b_D>ٚ"**t"|Р,Î4TՅ |鍊zsx 3j b^8ݐnj.dY*pwHdr !Vj5I)qq/o j)Ypwj[\Sr RoW QQA"MSGd*8nRrw8DǗ3֢+zj> XuȠ(SyiTU],IQ^^ !$y畁ΝsҟXWuҥK؋<+s[?djI:{mTwDZLJZduÊ>}>:/#njy+S=:;vaz>hdXB!&X;kb>SR' v;G䣖);uEq VDn~+VX=a99" B||y疯SO:B|@`  8[jU-/x)1qgJig5oRX*.zV_R1;̷81{*~Pc X|S_f5gh4i8&8a;HBaolu׫խa=j|s΁PKĖ z !+"KMq{Z1o/E%bQv|GRo吊Ҹ `Hu~Pc&0/X.6Du\\;aDͧ2tߜȫ~`Pe;󠶍$PI1wVaiihĉ #r!Ob ߓ_"nUG$#&/.2YYa՟DF.vIZچtٓ~ѻr)oXSlKſV6^PCtuef >).]wq-As3gRa"i&sB!s猌NPfIJ`g Q6IGONxi9Ыׇ5}1?-^QNa> CNsoszXޞ@aZZ w'ŽD( טg D9,[|0^UQE:ŽI̽n7VtB-[vv ~N:$ t50әLf:EY ۋ*U_^ķo9FEFr_-=X {%?i\hiNF`6G߂=GoSֻw}?޽k0xzO!g}DYlWM$l~,[yUXC؂چ׍GK{E4,Z>\n2eS7%KZppk;RD6;~tyH?E7N}Zc_%%?%ZGWWFE\tUJSu:sI!% 6l:n22:+gW|}F󠶍&xcEdiV޶lKas/,ݗÆEFԑu^xM|t4(Sr)pRBƚߥBapuB!BͥaD"Çϓ2DAmWȲexMK!M2@Uw+@p,SK~J_j͵0p#ϊ  N"#ygDR}ؼ>O*:j#V.ZSAG}=qZ:,`5QBoa՞=>2 6Y\A!:"?#΁O)oPxxɷ~.Z3mř^>:_HƌYG v3+Oߡ#8!PR{ > .W6L p""B+jKV}B(DYPeĶ+0A!>4S\ rvsDwu|aq5_'`lo ۠$qUcazՋ@`ٿy3yPHxվ}JJj*ijVHJofWnj[[g52ٶ_V9@kd}_Ǝ٭ٺo߂˺<{?"k 9.Wx B]f W zQ/QY8B{\ARhM_.{M+:OSZ T= j i4M~2< dZ/E^&2|t&`Q?/Z*]tdǛqb'/3 >&׭:]q!Og?(xdjцh ~`X\M{Ҿ4]9t~F=[Y5`=> !!@ FBs-'$-`5MAb>\]KGu\^5Vv \A“vؤav;Hx=B-UHESUS$ X XdP*!xDـ* X"_Qyv}s\ ,`]&j\ד'ge󠐮]۷( !8pAds]V7~t/D,:tKݢ.#GyÒ]_|g``73ٯ|!{];$eY>2“z%jC.qdD,N@a˸Npb"-ny3="D C:z&Y{#qh6\=hw__+/'`KUUFQXBWb21gt&S6RՔ4:١,9t<(DrD (8^EZ$: *"KV^d~cĈYM7p9ĢW_,Z*ZxB `M6-VEPꦛB4(*bY JNtRE/P6F~ :BC`#wӎҵ J4Еuk0P-nySe uDCU X #8,PcedVM=f__x; }Q\=xr&bׯ:=ڷ:BCE0; _utew_09)j4V1v#F,v~}|ذsG}831̕*W*Y~L@!.cgH' 7N'^OMsK E=aXl| '_$rb?^Uhk{"B|^=witB^8 !>27*)A Sj NbctW&"◽냫wp/3f_^uȐߊVNXcV!Peg;fWa& x: 5/ƒ` ˴/^ tqaQ6z? []" jF$8|ad249FxN`?ڲza~q!jL~.-*B:鰭$Ỳgf VRɨGU'N@+*΃BT*\U_*ߨp$*&^.:gh]5vO~Y3zMl *v{WOc@rj]K/DIX>G, "D#I.O]DuPɴҮ4-+$o%x^,X11JEOYi΁Z v>U}9LJZB!e{6ܱay*B'l ,=e/sn,Nji5lzɛFtIȑV JҼs+R"B9;>qcdf }~: j=~/ U@dڼ</||&-*_hPb #}89 X͌,%K֬:p W">9qe7p_NnMYV._0ѣ}y/?z]gO(\Eu Psw}ri ޶+2AH`X: j-Wv>0|PU=~Yt$j Y_^ lRQ}ʿa6&9,A34t"ϧi8GEՒIߝWa 5Ap+[eF~!yO).:_Gf'Yli mC-R)鉉XgA|aN8{i4g{b^u֪{Wj49ذ7+k֫Q~Ү{;)W22\2Z\ ЕźNPq;|/{Zk9gHT'B\. *⻨ + q)'j[b3߉o=74' ,]I!?CjMi%\),+rEz@ X,oTZsi`}/B-` 5 4s|OG6+̆a}u.ңGYYϗr^ynrjjf3yau9U&;N|x⃅mwh4nx8E,PuDC?4ݤI"u Zݡ3U0a"7|QNɭb<׉n j8MtAWXò^JJV]CQ{Q ~K\;*r7ϥз_ LŽ5Fy̍WNU3AHP|NŌ]Uu-Ł)x*rEn|8'OXj =?o_8pҤЊ]P]dy 'YT-Vhw𩖶{w_kK}>\tU A uuV.ej[ 5<q8u~&WYVޕ+< Xj1w _~ufZs.NJ^(>vL6ZE'OMӷǟPS JLjg4I]uV;=tKZЈ#<?(YM"y*#~])PK~}hU_}9~c퓦< L/lw2/^"j_@&<0%įO@-5 :⯦(]W#?+*  yeV`g03m x{G aٕ ߾=V `C"$XF[Qw:o/PL l/fs5K(d0$w{0>8]((հ (>4o LG6?E.2L;b6{8~H(?EͷL+UDmb(Nj㩂zGEB-YA)'k"q !WUBADMdY.?K+ۯ ^Ւ.,VX$GO*`5%jH1 Q g@G- _-ZN|0-v C<Exaffrrj*sEE\BFe"n G_]\\ fߤsU11g,牉uU}3;PJQw'Dkh7 € :c$ΊMTWfNP^qcPWoE,M'lWN'hNjnT!MyXVsBjg$ٗPcdU|qrʅ9'&޿086.^ (:3jx NBm`Xo#|Pm\'twciPkqL¹s^U]tUܬqO!=,aF bA0oxBp ,Ptלh=Mg7g͚*b @,"5kB+E,JZs0Np%O.x몾ݪ΃PK2~JJP'Vwsr"+qJxEG=\p]]l"; wU|V{*)3,Pc|;)}wqvВSu XWO3CX~yӹs׮\@Ҝ?p̔f*=Bn{|ndCV-ݧǏ}ȱcwd߿WӫWۦLF"B;/P'\o:Pױ#Ey\AڵR wgo|Paa  &] u| 卵:OSG2@u5yh`5Ll%l'2OW7 4+Z V#nJ܉;L!OZu GYYڥ(2՘PspMp}?RKl,yj(k"69:ud7_5jYF!C&URDhKtH!℥]c gvPPs[߫H77 z?XCjm_]9aPQt~?o!ԜVl JXX@ p΃zdZɃ;iZV*qI sqj8BA>^6TJqǣ)x7*'xO^zOi 0_pxdr`>B[KÆ !8׏rLQq8X6oM+_=.G{WW8u*aFv|Ɓ;ubO,Xſ9+W'}H$ig,THh1˥Z ÿcc<&4@QUU"@\@/"G"#8Qyߝ'b^T;."Ça3&`*cNQ=@t)u: !$t%O^;v u*5>)z >sFWT 7~B8`8r'kWY 2iB!KE!!; DjWN^yV-T(.CWquKϫxSU?jx׈]|_q 6pG@\E*JU+}TxTF׮o+#Q˴rehUEvkzA Z:' "r%,f|ժ(s]͛A%PqR$j;. 5S\ԩqa | Op!%ëz烗a6YB,`: YuU8'"сs3MM,U] ,X'CU!$%tKttǣ|@5[|Ris4rlKnv&֩}4zm,Y"~wW`>jp\_ɿm.5fG]?ʚ4I$ٸNZ+ztd3'W)-9!>@{OB]W"·;pJ1)TRŹ\:lKZw#T: Kf#$+bx뿍g  ΏOIoa!ש.JE .:\A4-2XuK'튊ly\:׋w{EEΰwmx99UXBme`_'j,Gظ"$ Z<,9A糀l\.`!ryO\! @y9V 2*Z@=YP!`7:Gk'9d̃K :};w X_*Vbjz_m=ڣ)pboB!.QxI׫PT 5].Ju6.&m?Gxb. n;|~C7$RiJHCv6'_ 9˾P\gAdŹWh:+6UpiQȅSgӹuΞ <>t{QkDӡzN /,nq ]NjI;TS|wlsU_q-TL1Ejpi\v5dW󌫫a#cveQѺ駇5=~çݹ΅BԩkW˷lٰ mj/<!PK&8NP,^=#jJٚ uөyLYayng Z&=z z`筂$.]TB\ z>cu_TY'C&2߁өr؝_~!;pQ~;w,/,˲x8J";i"'ѧ ! 5 Oпy@ܪ8!Fgdá^zCUxqH,x7Gm|䮣pedҤACa@׫Ra6}QTN}tEE`mг'y.}{0P!:\B򔗳HpMg${M+_7P@{u*PK^N«#_W!)f"қ<-)7˷zVTp9 ^΅B:th.- @QT*p8NP㸿Hn(x5xmB?Xk Ҩkk}>-#Fp:5h;Dl-pWh9; T*Usg =bBU\+|kq: g5E_} \gj Osee|?᝔ux +i`dU߭(uP$pR'a ١"ux _\h1Bz[&s}|% a:'B{3GhZF"@0M)|?gj^H$\@|}TVV:|QT5+Z8R󠫋e\-yAlgIqXj)(7+[7M߽T5MB$cyBHUh;:+ V9-9}ь4\q j> \;vд\uNWjuxZ`שjZT Ő XIAW&=Xl6s KiS0T͡u$}eI?*ߊWaЭOyJP A in|b+Lp,JA 5F&sl*z޹Kv y(Bm3۽qu 4V~~hax%|`?|>'O]1u=Z l3vВc:u X-Ȝ:_َ0΅B $rԈBzBğGc؋ ^Y>|D5̣NCN]du4-p55K۝N[Y:ץZ2T|P,X( 'M"h-,G^[P. =,s*5@qfGᆴH,ltdgݟ: Ήs ON\?}T"a`s|~&, d?ISaGy4^x\u5HZ1?q!LV_h{Dy΅y$f>cUXjaˮc V3p`nza g zBT" 9?,^ˇūA\"ԉ io֥ZOtlQDl,7Dn#O rE\ B1?| Y\?*wy _L$l\@Ex偀Ju<@Yf ղIOj6jWl=Bf*2qfy_6[D `&UOkzjSX$wCl߈:@i^Oi:tGL i,L?e1?bd q ۋR rxJ.w>%r9s-}7EqP XW3Tzd<2>߄'`v$=aeڡеOZ#ȑdtrV 3:=}aݾ.tdօ-p DBPЧOVV׮;v9rשjNsJҝ(nd{m"B1؋ $HEZjکVk(]~0j%e,hi3ԏ `u-0OwGPȶC,ON/B!+;;TNq|ҫY l: Bm]ܽQG-q%'um  ]"(:45Z.:$bGG3tHi)g\j>Ƴ*ЂmUGL(C`.7~Tjqδ scͯPv kE-~O`)?˪S&(9\,0IPޟQT0PQ0B,rZ-tN7`>,m`)\sM{c {5Z:䷨ M!Z,^qC'JWNmF%ޏxb:("jMkK`jRU U&{2GmӡWΤ,i.]JE"4eY`PtR5Yv{O]#0 f]"ϲ|=/HBϿz ^>Tl6Wf`Pp:CE,jY>q/j:Wa~Ֆ)A ^o*D0$B;J;Y)\ĖPغ:V*8{F&?ÉZKUUwJS^^h,B"##o\A͍ &Zϣ>m[r<pSC~w[Lmi6`Hgzs(rS!8 CӄxWl'D6AZPku7̅,ިm1e6Gt}6[%zT.5np@jX\?wܗpAh<\*c 5FF!|T|avVeK籀{`&\p>!ZYvC!lFe1ߵk}~T\`BH$"X зoNݺy\BҸZ'D2V1Bj{)t8" 1|cKbY,1QuN'+=W ty6;{MJ /|[n vW擝:Nw@oA="ZS?dF~k0XMo5ڵJ3b T t59,KQ *\i:{|7  |Eكe~@3Y `hZz8X! ,O ^06]8';*WpWit'43{!)* a;~/Rk)ۯ1(Rfa}Bn:j)xV~`Xvݣ#t/׹ ҫW߾v?~˲,A|?B=!>WBD7H> `w {~nI%z~g#l%eNYL(ڃA a$[`׏s 뀇'(*Tfn: j-i4Mg쨽[mv9}uP;5/aOW/\pe`P9R(t8NښUBؼЊ*8-"2dXTp5w:#@ƭN'АpwM$+2S*M/9?ޣT9w86*I^Z*wXth\Wc6_,) GJK()JNx Z0r5kΝQoxlh<?C.~PjibbH$ 4%6BʓϗE˲v{sg'1[fow@Ć wIoCCjڿZ>^W!N`ϟ;k0lJs\,.Ef&!n\нkZhs `sՐQ^CdDGJJ΃7 nĎcto8~M;wIk:!Cz ?Ϻf(Z&;']]ɺTc>}ɔ#\'ne/t0 >Q :LK#r9&M D9OMZ€Rxs0xϽƕ[y"VQqs1iZ.`/]I1LPX(&٪ޏi?:j)V v{ϡ[w+wX{VK6Ri}}-Z0ϷlJPp/ 4k'yCg6q“7BX|Mz@ŵЫԋŇ u'G#nw|I uScYd* yK-p7+߾frXgr;u…#kcb-3cGVRVO rkJ(FW8q!;l<LҀM#L cgƍ3ŏKj6+7)+Xr BþX (| <\x5p@vs۶J%@}}h!_e}ΙqD3m:B;K,`SYD#bu*څ'Yݰ{0@?482eu-x<,-x<0Xz&4lK[^$25ўTzH$\?te^֝euMŠUA\3LRiY}0uP esM]j) ڨm62X{?\`8ٷhS?!I#Ye{A`@kk[( `nzXnm۸NХp~,YLҫǧP@Ri1ɺcKSDT%1ڙ'6eMA"}\?ЕEs0o))3y[D"~;a[RPpiB+QX[شU;VY:ץZ"Cbłhh`Y TV(Ntrc{n٫TS(*|T&n΀g-C-vӖb9Rl *wKߝX;gکzG xe9Y^E8d@rqt޴jT qM t/L{4&6saو%Ob674M~j,.Pudѣ 3pLKEq]᧺~=傷HYly_4{޽C,Bm5U|"7TGaBZ+tgn̽vň==}~4݄vϞ 98lϥ륵(^!ڜc'RSTA|YV$8te<Q6>l2u0僌, .̢ft?rb4Ummh4-rV99Fv2i^}i*(j.:xܻ2m@a#u_3̙]yteJt8֮kC^B>Ϙi[*r6>Ytu)0Lhz uKWz/{'&f_Bg*2?PsV-fv$upOY%p!0u*yi4JJеkffǎ=u*.ct !*^ #XDMAQϲ&Nsj&*ՆqOlhH?$ Ik7L~+=,2rFNw)˵׆d D9dgj5mLoOeA9Bo~EE;kGV{_)V = x<\AE{@{&H7AƳcQ<U\BqeJB<# ~ _)gwX\?V`[yJe-W.Z =6k{vpwp.UffhVUMD\ina/^B?~0pHtaB-BllMW뢏U]*TF%[eM4iK\A 'Ԩ5vA{hOqC{׏5 ˆsΰHIXd<|LfY[QQ6[/S Ge[LxW?4wv:OΞ3]WBFy,p4s\ID"OX߫bTᏁ=*+:B>o\uN0棸55\i[iZZCjw&XVU&ZU!I:ӧfgN:YS#gO"8!RY{*DRR.>u`o_R `6ugXOLC?AjkvW7^.[ yRjYw7{t d&eIBFO?3nw,>MN]sCFݹb{nޢN 0 R*r|Y{ Xቈ5^FE>¾Og.x&$BRW}bZ'[iEp1x\l;v.sox(,X@|'\[azߟ5 2 !8 5etM{h:jȟ{ٳ%vܾ;ߕzM&}4M}vֹn++Uo)7_mzݟ21:N4I(( F\䫰u@+:e +*'}BV|,+Cr9iN7H5Os?SϞOrEfQ(hNy<f+t}V肂KG ~Ɂ+۟1nI,%dϕ&`EО7zTyy4-r_'`4 UW6#;nycwYϳF9:'//YOe%qP.ϘNّkj֝<#az`_fs?7+{wUvܲpNS!ti?&a):W0DDY}"x5 W"9~~Tt/%K.MbE0lbYp'\G]M-u?bgg3vvWv :եBo vӠ֢aD"cB+*bT}}fmrRV+yBWh Q'r:Cm%%,Ls]|HΝccGi^ĕy_oa~>>S ґ d&u)Arm 06U|[}JUݮ1Rr9sVuL(U J׈)qR0M? ys>:?+iՕ@Q\N,˧랲$62c;7H$Ee}s'%u76wK8Xߐ)-s'9Х gl${=͟O*B@0hPn{_w\B҄'a9>@Q=<_p?!.]o:gbnMI]?Է e6I*\GwwOFG: N: j-AWt穂^#Cr~rrB:v+ V$5maB5+ayTa;m 6C~Iu&JUiQ-lU*Lp&_mK#j&]=uMK$\@|Jp4i2ZҮ|b@Tce{&)ĆNc\ϟ߼CMB/N`8x|@[ã&'aorC{@$ v?rh(M[ ^ Z9A`5cEnX[;`H'z:5m7?oy8u;/$Zݎc?qrMPBW׬ [@qk+zfy9yBW_WiSmhe#m6s֭ Jյuk0PׇVUg]4giޡ !ȃ>_O64 &tEEvpMکS}kx͸kkfiwn\|:7o ,+lo_W뭞7;\:ܓ̰U7ߟ,!x<\A[ !0 :k*\P١C\Ai“K7FuP)*f8iw=]Xxi#ן޷ϧLyuS7Lݪڷy}PSX}䞨l\&j}XӤҢKLqq\iЕzQ@_C'lm6u]i/O-.Jpe}7dwZTur:PF: Aտ/+Z A!)g٘W" ۏnKV~_fOsLcIKJ"#Sfx sA![sn*fT:r]kſ!+{Hyp-}Kҳs69cc{hioKe 9PV |+TÆ=`)>aw-]"{UEopƾ&^a>zu П|fM0RqbTᏁsovOi)yBW_xrVw64 TfwQX8qOI鶂yK/+B3yW? +IJ7ʡ ػﰨ}9awPرDM1$wczbc)Kb1Eņ";1euEsy Iqhce,b?]>>?-Ι~j38:lsnݷoޣ9T{<:vl׎ՕuEW˯$,ht~,b;q̹pI}fLܻwas\5̹_-d@z_t<{&Tz՝;}Vrj0u;O:BNKHwAe6kD(Nx_(zGVYA&<z(eCë[5yyC8W+}G9v;zhWv86ﴸ'Sxt"LMLN’w*wWa?:sM_{N#G"8W+(QAǙIEAZ<<ѐ!={: ݩ[YJs1&aR?~N.虰^YY lh܉/=;ǎoЄ=9~z>cK^:7}diq';[Xg4u.MeN$jQ1n{2&8=]eRl}I=n_H=Ù4Va(D'NXW[gF*ϥ/ \qEgGsm+{<:詽r>|eԿ{[ݔ+ 7\+,j9w"*J&b}|j ,%3ĢZOO[߿uhwB6InG~=-p'cZ>}:uޝQjYhQE#Sy\ʷ98MQ{6jzt7u򞪃_X4slٮ]ڏ7n.ļVP+Z¾gF&X{1 ^R,qG4T;Q;O\n.7'b4Mlpw ꨔA`?ϡ<cP}Ԁryvؽ9g2f{TZWm_zp.rrkA33=;rS^.KvRPï׺]rR9^%~fz:Vy-$`qUڊufTa73&l~M׵Xn+pƍ^fAno:=\.Ɉ֭W/iתP75>-&8.nN++cb;oz ɉL+ _J+|%t 2 cj"Q$;V.$hm]rE+':y5ܾ|!`]~sN$XX,D։X6:݋5筴49PDsO![OEE.vڔ52˗-鐜SRY~]қU!ZWؽԮH%M]779pw/дX-~KDD 0 6gO={N<|H7ڦIXo+P]5&ﭪ Kee9yyy}ro/-&@hu?qFWwKZz.4ԨQ╃a4uL&'')^ΖAް: HICcdddP>DHoEdX~uO(eeSAK)+EhvYʛ*gf #Hn.EP}:e\":(1O#W*ZJ[Eq;/8:.zTtvhZ|Mrb|дhX?; Xp9dVXϯT&S)u tk45Άځ*vKz N n]|;cΙ3&e &`#:ntq/_fZӥKl,4wG *3n?"%@DďE^0ϸs3%xΜwhC ]}?WЪp9VBBQU:؊Qy],)߰WtwL~>< =ww??_rztop[g6;9 D<f1;T?Pzq oݍ %uuvGݾ=T=]?X '\3 !xZ $+Uc[܃e lS+G8k2MK/A1^DD}:C{ۗH&0*t)_mżV{x{'ݾ=(ssyfݱѼć[v {w^F.i ?y{H6wCgyGYivx` y|Ws@TWg-bIU5Qє|I>KppgтffXIHkdCgR=qqDcqTՃ }2{='w.*b0 #2R&Ҋ7)<XkT'Eyr@%Eh M8[Ysʗ^Ӽpqqppr"!&ucH//8}RTLbs% oA= ;w]ssL~xO=cvc)/ljP1~_+hIIҾAu9t(ty@q 9?[ 955DYx & QU'_~ԿafŤqaКm?u/"&ګOt 2CWg癳!qRYqb]V":>Ͼxk(iC Y!"$ĚzsQ+VlО=U+/K` ?fOKf=Wvs>;fhOhv#L+̕<_\M chh\dD7nHdspsW<;xֲ$;{[ۥ4VEx7+4rrDQIg:|'>8WzzXE !(($u(~",bs4'{7мp#>zbADYǁE: 1~渺P)[p#!nG=Nw…g?푹;v7),*V|[EX5Z,gbxN4?}˗YV5,fkȓ~k1ڍݯS4K)<𕸮}ngd8jsg0N ^ן[:ݚ2E.Ah*բDn6k4v~\{uu=gM_-?'ϗc6XvFOO"^7BݹsK=p=o?˫銟/{U_+K~q{e9"oo⤲ .P7vCߒex%*4 Xm(/dYHo@Qv]`eI3,j_1TÊnv v~E%(:xpOf+JOwMt`ׅpEqLOgyGSzo Bh8",yrw7i0ج1(aC3w{kj˲>8vuhƍyCۖmh97n`٨Q}:@Ө^ZB9&avghYo79}`={~4`^}cלy@R=ZM&GG)툮=}KqsMMMelh299Z "襗 ")WD^p?\W:@s |Qz,kV@ˈA*Ղ( ZW)Xe2>KKL ln/K)-h_мG݉}Dٷ߲,22((4(<< (u#qDϖ]<(5_^V`ˇ =ȑ3|O g.Ft":V+yKک4VKd)WWNyAhEQ+$®|t+?3OtU[^'Ŭ4>N:qbc@D= \:UR߹ ]cV{})mFVɤ82KUT n}_a!)力-AN=@˲0::l7L{ħ1OL[Q2D9M ˶&}CqϸDѯR_a~>7ӷo^9vgv<~jQWɎHy f}qrd@~!P? S)55D kBSIJz|:="sv&aI/d0x{](}d;L&eˋŖ>/~<{q%%= ()a:uҽyV8uƻ(-hXOf9vE?'^8>ee@j_вqI55bO?,&&,,2((ϏuS3̓ r]T<ݶ=͒1+v҅i=rsUە.·qJ)VTTLFw٬ղNx155{t u6< }'.gnSaZM pn9 +Dh6lĈ޽1 l!+r'ݯaF 2~g"Wd߾{"-)WS/p2GexHv'<յ+D:Մ-Z{C,[,^~ݹ_UН$?uV^r!IXwCydbኟ7KWi6PKMROtZ:1;q0;4b,e <ϺtjߞˋuQ5B=EhZ$ ̉;({>ok0_5'o5 ?9h^@۰wߏ)S L"֒fW/0B7fOqYY;9TUt:ka笅իM&gg֩lON (D߯8aۅI1F},G.=^һΎ X Z^:Gca4T'`uxARybYY~"?'Ki=8XgOb"%&Z,[6=G0 !?v,&a㈪bK'Y튇_IPosK#hǎ)}F 痜"; 7R\/]=qַ -0VJK7zoKSR==GRYX:p D=b3gWnݲNxIחh\O[drt$?ZX۶M+onܳm\cWZ:@kM7++.\n` ! X>.ѰΡSGd/Z-t:|}~qu@ QWC׭TÍMOgYΑ:{yN4VW(7}=gS5&Sc諡'33zvbŽ;G(:xOH7{QVlWCu_΅*twgbce2(8Ze͛7xMJ~Rt;G x>Yi!WT0گ7XiivZhDpueaIl Ww[,D'tDg4zzUTC=b!}ϳڨW=`>T]:OC J:HY,D^^׊ݱbKŪOr4{Zg"w6뻔8uhPq8ugƌՖ*+DqԜ=ͶmǼ7sAG&TV 5:㓤;&_ASaWՂ0"gasf&<wGNIq7vhKjkYiiFʕ&3ȑuuDom]wmܰV>㭅W^뽼23A`DAѷΝsS;W$5~}<\,7nX,ZTW;O'Uws1 C|ݻY,#g ~z{ܫ%%?: +8ߟu\+ EٱYHBO|W@끉Кt^˯=q,8uru2D&alɓFC'R^94171ƹ/@[~b8)'OJuPS/dOf^. hDJ4\\nlŬ['|C4hPmmp0тI_99mpU}aй0}nqaiq:&q3nɗ^++Kʿ܉(i"8TZ-emv[G+-8r$(㜝Yǁ,#.#7Z'=YwΝU]uh9gV 2Mߛ j"ޖd29:Nqv{TZ+Ch EEu]:OknqWFbС։Yj0xyXa0u挵`\T$r_Kj (D۷DY UӧtDYVs D{Dn8+D;guuO^ ,˿Q}i ^~b)_io:ãBB23ssY;cR7jonu=&wJϳ59mL}`x8}@^4[ W'+X MzCAEe\qsѯñNEEܭZ;Ǖ+se]ʝ[$U:WkU_ڹZڹuvDQ;;"ZΪ/huuD%%(5 0_"޳ǎ:`r%ت8? 5~|y9qtu/2k'rв""uR8Lqgy뵖{$C]TUQ ?w_•>bǛ@k X R o;!CXhZ^KϘy1y#]tڷo|յG^4V^2^Oq&4`+6nި?,U=wF뚃Wmo LQ|5ᡇ9~^~Zӱ%u&`u떵f| DWXW^jq$֘˽^T[.u'AC``;1ԣy*fݸ:WClRIs|Ѯ%^MK~~aC_WPFh]&Fug:EEN4 q-.k;G˃?m;lщYsܭ)Sr-֪~ƍ&4'[,{JXaf&<Mͻ>S.θ~l1?[nzmڪGʚ+޸:y=BzW RSQ;W_ $m|ZRCb괃5_#-LꔒqN}p` X(L:-۰u3& 8|8qj*`+ u;*<ܶ}#Y7N:E(7Y dݭ+rX[qbgGTP`"U]ç8t\ wsuo97cǸ.\ng@[T9N3SB~Ak\ 5~nz^ JN’UkO n+-eW)܏mX@ 8C,KL'9"}{iNݹ-?9}ǂMd^f~@`&MR(*+riZiziO7{IJh;эs!?䖞NNfx~RMyf?;UA` Vw<+VE(dD>-KtTTg?k֚[U? >WW3{J lC..))rweN<<Νn￳wf„'xǿ`#L#L kw~[7y=W>"I/KjjޘO:4PV: os4Vj*&aɤPEQ ʂK4*\),dx\xrf)%;4 ,<9xyEGw: @JMXp50㧯=:ݸ} wŠFggy_?חfiVl`6;: W=fa0 `ٱkuOI(v׃8alSUz~޽]^ӱ` feTW J:HT'`++Ks~]sHM&tf$Vyޔ:if9@P&1E'H:>:ܙc ! ޽nm]4_}zJXw+!A+h*M'?'ϗc62H|bV<# ƽ8eN\VVnϿoQhnUO:X,.3띊k$Lpv^AbKeo7,E_gtVPq?nNihIqaᇬsquurrv&֭gOiVmT7k__ybZt4< Qfs2άa#Xi,oo녤VKT\l]A(UO wv|#T2OE{7ٳR=-Z}|\y׳\'y_Q:GC!IXeOUmXt} RJH[sz׹ܛ]۷]Օu;S?}:$DxVޢI*"'Rh*II&wo Oc ;8u͛N qRX*4c3NٷMt:@[p3W-VFuHqӀTDEuΪ+W1)zEE_Kز:Jɠ5@ xNpgFիi!%G,={ǘU;yؤIX=M'/Or'-;g<θVXVdغH]Y<Rѯcǥqo~1s9.{P[:Hcx:\cӕ+a>JEIXp"#Y2/8Z|܊e>~&HNqW+'_D$d.?tu6܀f1In[m~r>ϳwf^#ruutFiߝ׍x۳w߸*3Z"OO~L$>Qv+fmhJTmy?7wG~>\кUT0ftOXyc=wV/p Yzv &V7DdL&)|Gԏ* /]D>=̿=~f>%lIpwPfa=I$`Q?u3 \.?d4ueҽ HkY[rye%`+L&kjuS*WLba@\:9yckz^t<0_"ATjgJzX0/u.{0!WF~=- R{e^Eiιy! u8W/Lclž}VKTZ*-Á:ge9>bM_-Mqϡ7S{xe}n׶F(_ί\O/~_{=X-r 島uqb Bh(iJV-Or_a{v_'e[Ot{鏊ob4-^i\6_W)^:ܙCBÉPO[u0ȏ)g;w3IxECtnՃ)]=PX W&UUӀEA[/y8 {]oA@SqVR˔O]\XoD޼wVL g&8ŝ7L)ZbGIIs:4.o_/^<u*U<8joOܾoڕ+sY _{8뙗{Q?2֩N$E jiVRItŢVNxc/.  7l"u^uuœ_P4yիeܘr(Bk9UUmeeOtK%*(K^ڕA4Z,DԝuVh6x8ZQq%2ns23A 28H^G'>W{gw^|[&7}:wޝue~y\޻)ܬ-Evyd]x8]狛[EOLT(0 &Lk`ُ\lvvpuzuB Ņb!rw8u[8>OՌkTChHC֯gxn $#dG7Wʝ߶iA'jXh^Êcֹې×:ubZeЕ.vtWq -UWN"%Ejkפz!p-W|o@K9VZ_4Dd$Kx^dSŋ"Pfωl֏_0fr1.fgoTINK cosÆN2Nv]Ύ9ۛuhG·,Si44֨Q2YM Vk-b4$iO7Xhk0*VF (D&tCKjp_yqQ8G#ix:]f3gޠ|v֏"d(>xO&4};w% `yY+-5ի,Rwp9VBBQU:؊"hnuƳWtB-yښe^xUp"#yhd 5M*6}*=~{vvUQ wPIw.jҒKTh<0qG4uȑo<83paDR!;w׽{/jL+̕<MCBXi,{{"A 1Boh*.ZMt Hys}~%oǣu[-y q7 i>%[WE,+V6E"niavI {~<w,ӖZ˖zv<0JVM2tѬ Xc>$8i'GG#jyk8"@SXdrrb힞iis&SvXhÊcֹ^2:u)N@t2Rp9֤I VBSE'Yecv93OUPRW*.ELe2i@*""Y*ϯY1Wv]U/;~'~H׮(uz,(`M䙸{7}Iy4iyqN6lX"Z h+>Yp}utt)gMpwgL弬_+ C<=Yi.]d2];i^ȁifёH'8i/vaNii2(Vo!VT";' Xb2--w-?Wy;~j(Wqk7Vf1P?DGw̡P-:b L4vlCN2 q-ḕ?>2wj ֹ8sp"Qr-#!A.+hj7Z XRu9DQrcfd.. ͡{we&5εkF#w==DzuH/r Rc@P2jzǏ^$Fk:4qq{N226jK~Gm\<1U&KY1+8urp8A 6L.flř3FC. a]B>vXg?Rs]'GZy !\]9b!rs8;~wrFxդ$y X`,(뭷,q{qqGO@$ gZ^*?:J&9Qh=^]6-ug]=7 u: Y[S(X=MBe2fusuuVSӳ4h Ye'WȰf"c"*J k2>#{d2T-߾uN4!p4{Dڜ:4ر;; r[8$kC_S~:f3&SAEyxXݻd:QXI N6Y'_Ҿp{WǺt^nfv>}PA`""Btںju[uVfgubu/q\K:M,i.##sR)J%у3i_+ ڂ5NN?,?{wyڪ|s ,hoA˹)Yzxj.88,wvee|Q9:!ҍnn4V\LIdN7͎Df_%?)1"z_ל4~!_: 4 A30-zw X**DǬN:E՝6F`0ROGm?y9$O-%w2eذѣ]LO'*/FڊkU7N]/.Q{c uo[wNDQertϷrJ&_) #TDs}gny4͹s{#nM)|'*"ԉ\}b"n)W%"}CWEQQ%xlr۹DQn'?6e=7΂ ?!Ajȳe\-~ mAP^2dX}ͪ7r٬ܯU6UJӊYSQ2 UJFI)>X/(jTf:fY9W]n6)JHQ[#WTp^S\<(+ JggiW %TDś`P6-11:Ky"};\811QQDqqѝ;>}ŋS ae?oGwpr8'u ndH.'Gh֭3Y{~´4ʧ&Yd.".Э{[SXQ~.vRY]T>Tz6*u_tW 㳦  g 3Ɓ JAcaBa4nZTZ&[1傋q4ID}ED{i*)i*DD#yWnAD =!Dt:QWB"~E"n>>HE#"4QK)A|Ld&#)>%q(D7 "oGO8/%ߖ;JDwn"" 潸BDWH ""$wF"*QyJ~Co2)7L&=}&*IRn2D5&&UFuɤ~d SwWLLvUL&2#v?BD0kϚLNo۟t^SSVSVV23oܰB!},.^4hOLJ<ܱcgn*F(fxֹqN9r8ܬ,*ށvR_jg͞sا_8!A*JvLOZԙ Wz%' EU4`+nE,r9tv]/)Cڄjuu/*5/^R ?)u)%uq*dA}eg$&7B_f(5Th=$n8: =ADQ4N""?-EID{h䟿~&q]ʅ2ID! #⾠&@D%q6yXd}y6g,Drd 0x0 ˉkzr(wDԇb͠=DD\gΛ#V n (^p{IDATUꕪ ^Fg:dRxޞu.h<0vĉD_}f/Ho,]{ֽ{T M:@kQJە:OccUq&4`+6mN"cC]o.+6<)h#\h}ϝ* 6~tm7=ӿl,QdzPO*U`剿}IDD.&i)qù*QD4[-E;ASBRX O[(JRNjQq6l0D',RǪ0\q牊딣L'yTzU@&l 3h(u5["V/ƝNruّR[i8wڵ '5.СOb exu]LL_sKKkzT@A\س pIJHP(0J f)n(k~gǔ:nxk-TwFS[[^!"?ˆh '4ϟB=T&&Fz`&M^K_9ja^f\8\tn8T{S0 ΅xy}:͝3,k+,F֩EQ,)[I Xv gpU1Puh׎u.hI 9t²֩ZEG?[/\FA{f:EmBqg6dӀ8tl'** *mSM&+D$;0I0jf)kH}vR}E_RxQ,=DDJ'5FOt/kt:m]Lw|co9DYs=8YsIscp@X Y'E~aD$QRV&4@yr:0C5]bbt۷_z4g88T* ьMD+V# N2 ~ƽ旕?}P|PaI]. >Zbo3 ""2E.ˆzhZכNNS=pNYF#iYghcS4XhnN(SUI3GDψdqh(j^WCz vzs/H'ߚչT9ֹs!Nwqu:֏B{9bMbW~ld4oTAPF"aZ"Q5b{zβ\$ c;urKٻwg\ʔyII;;; sA㄄ ڳg~D{~W32n +**,d eeTrgk>;cǎ?.Rc_Q_btguuD^^MaёH8usts?qq?|3緁kkfμv]S_NReUq 'hG 9ĺZXlSA뢢H5iYhN<&k'zvӘֹq&L0`۹u*&Hްe)W/߃>]~ee4!yT/gg '{5__ī}e:iV8`6uWاLCXZXfZ6[e2kzTcu:֓DD^WF·k?up)ֳKj9NZZ~!ӵ(<7:hEu ~4ŋJE4t\PyE#d/ )٬s4' 666L]+}G-kkǏ_4jcD ׻7YYiiD))驩S,mLS }eb=]d ʁglAaHb2yBQUED@SYlBο88e4,87yNO;*ʩ[_9=FDQ?%Su R~)߮d29EԸwLt]Sxҵkuwۓn]ƹ~TW/dw=k29~tu:vlcZ A 8#G˥FҞs.]db9*]^V;͝KR`ggoO4cر&Uh &Le؞=9֩l)xyUR^:Oc h]9a]A֯7?MÎ F9u2Od;9VJYw}׷k{+d}l1wsǎǝ9+((MuY5W^U(X?3uϷJIu`eAq(ʥ RĔ1Z XwatDn8$f?<<4"#ucg??8xծGDGXǮqzt'_KHP(*+Y[a4ZOPnl6;8Nx|75~(:ۦmj"}A,]֧h[l!!O$ةӯ᛿w7l]xvv3Sx≒I10jP*Vݻzƶm&4-,&0:"zgͧ][Mc!CF"bnkN;wKP<wXejuڻy?g=:OcDԫձNb^Y%Eu[li2qr?pJ}HE]=ur{{QQ[Mc=կC%4ּ] PCwI0ЀW[ںZ1xosz;o$+ 9ìcS Є䟋v< ~2Io4;B.ˉ~{1@$H1sk=/>qk·S/2  . ^o4ϕ6TsGn,=(0 '^qU}awCï|zӳC6Fd8#*JJ)қ\QA$!4655֯yqUU(ɬހhF,67H<4|}=<&N4hiز,d?>ľ-,(Ύu.d/|%[:Oc)DH4aBQU: ؊ QT*ΟX4iON9WX劧]uJ,yB]3:!`iW{}5Իnܴg݅gwZծ]]W}|^][JqfW!dW?ϋYieL&gg"ANDfX߮Xa2NsCG&%%%%%?*ۆ@38u.᯿ sɓ@806W/Ν:t`-^]qZeޒ;0ک + \tԅ ^^՝jM5;{Fp`寋/w+)drtcǻr3ݪoVUw^^/\<۬C8ѫCmףǾq#==a@#!oG>QP:Gceg Ri: 4MmAқy~*z{1Z X`q'k|%mzIMm K|p̘\]Y`xiߝ]rqDٮsܭA`0<Ѷm yR%E~'ujrj jvvGos7W9]M?8`[޽um|έG=HPq"ΐ )SJNYv$%LNNS pYX=p7,".bDoe|OqůmYէ]FsK_|_qmٱqK霜:Zhtq!~]T*in]*j5ѪU&MliυRQR,H:k g͢P-:bMcذ^#)2];iZcGNx(:z[Oudlx͢r܅^ cT*"A ?^.flEj (D/Z/I&[eP=h6+*Bu}X']79!Sx]X_-=mںkW¶>~rѾM+l3ou}}έPcWz[2go8iy3G|`"2Pt:׬G9Ec6[+X`,4nN.tbuhO|p̘I\\lvyxحò+Fyvq ԼV7ޞu>\.%rr8_t#)l++_SLsucRsxz#^^NJM?WپnާGvD5#n/. -vj9awy d~oֆ۷Y[>htwg OOLAP(X{\O&َW&L/@ .E5boPkX灦ao͜9~|BL]|4,q֜Pq\٧ͥYx)M$qBI;fiO˿OE{x Zw4*gU߫^^N us.ٝx,<<-X/Je@Oܼ:GSٸdrr"ZZ+nĽL '9X W>4}lZCװBV?d4epH&yCg>]<̖^Z+3#.e_:OcED@ԥL׳Nb.ёF|;S6a9NwIZr3אָ;eLʓm gS/IxkT*ֹ {u~rw 4?6=<XXoŢ}:M_s4ͨz;Y`I—`o#GDg{/fֈ{u: @Ӎ2U/w\,,ӫ0&o0oS6LuX=fOZLlu[ >O?m-b?X,>>:""mO~ߜ]]% )/gd?Rs]yvuf0_E͛=)[*6m~_x`~lx'qxZr,$u/4ZQK;t߷q4oY灦MtcL: @r;hYeۧfkx^cY ߝ:2U[r{޹̞çڷOsky'Ym>wiuIfk OOEFw;ܝDc8aHkW{~6 VV.&Qٍ@ӊܙ_.]z`u[?kQw2bo鋗oo5PPY~7<վ= D11ַMaNZĒ*GF"Ιu-BGSu-wî)g'DG:mzJDFZ@:4{>|X`iZo3*uɱٓH#a Z!g>:&&B"! r9&_ASKJ>i|;7x "q8Y2N.I,*Uu5tItoWbV˹`U <1frz>=4dE&:iԩDT˕sτΝYvL+u<"5Pyzkhu.Y/޸a=y)UvTf"S~"XX;`LY2QryNb[^^]gqnwP֒}]% =:4-WW''ggG8{d2pb)vjoGY'^h,wmtfM7-ž_?H~tϔPTWqLM&)zBUr/96Y_L_79Coub KLڛo".Hˇ ͫ.,:/4Lu}8vOYiiׯ JE#om%C'OZ W?l}ܳgDii>h>- nl$`78¿͘AI7 ;umMvaaD& 4|84Gi͊:M'hΧǜ]ߩ32jԚ;تx'gV9֔)ryU`+xhnޞuƓ?.&;jfyKjYLQsj_?I}XNIOO%\AKڊ:M:.8.{P[:+ū"֔)IPkךLNND ZRS^N$Yc}&YcY WvZ@(;[(⭷X9pFGDw}~)?;"D4>\дٳ_?"/]:u*e_}W:wV**+MIe|t&\r* -آ՞2W7e&<[TooOD1 (Z6-r99Ar:vy];7X[mHd0XXRnƁ3h/ ,͡F[P@Jnhzq`\J@NoWU .**[uIKyTu t]zhϚL/[9=Ʌ]dZH[򹿗jFт֕|={d:ѠArym-Q\tDAAT{bB7OOֹZbQˉ-aޞu*OGAG#[N -^Rcv]F{yy899;͞=e}d2Y#fѯ6'{Jx@\z5]/Ld/-ݍ=h\{(d%$t|<߱Aɦ2,7IwryU%T֭:"g\B FRt;B8uȺtp4}qǍ qȲeTX4tcvFXm:_lYiDy  E(`؀sb2~K^uhaaD C: @$dh t'^#SY"s'K;s 0~e㿚e F8xֹbbj[RgMR?|SQaw٬ղNx嵲Af&lf@*kkoUGj3쯧&=|.=N>}ӈ3ECo$""avx/q6_qΤu|)?[nXXh THj8q.tOX2lQi]}Ih):4bc{"۷KXiZ'aeo՘m]rkCRܞ ?&vݪc;q{i'݉D]s氬- Qv |-G߶?i2vɾƉ`Vb8nSҥབྷۉ'~[sڛc.wnRIYwjZ'$h7.@DW\ =SW?]홟~b `4[K~p{w%\Oz yyk4vvDO>DvvjF:@T_J"a%'[}¯~ue>Bu1*JnTXOC2Y?^&RH5IJ2X{˴L&9jhR~ 9=(hc1=pbhDDnXhY5]>{eǞ?qg ЂWt.mXhj;ֱl X6l78Y-|￟sʯb ;SLN$dr9Tv;pp0\ Q12{j۹C]O&Qv?wAϞ_,QAiyģXiKIGx϶LFtbo:MʓAV&lfes?\0s#ҩ'/~K+An2߶xXFJ@sybxR7&}c'q]ֹ"1=-9R֢[%\mcv]FmG=:4G7u֭Ӗē'{ڝ򛘈gg~JMúulڪKu tݤ7Ѳ<2,?-S{G鈂9hdlŦMf#WOWi:F]tpcG4aBCx{]P 1xyQ&?X+9$&F*җgc6l(rOo{<}UfHQ'VTdD8zINٜŮؔ'J%Oig"DD$w<>ein^dAA J\Ng%,ݷsP#~ɖ?h-QzL+{4]>UbvͿ5 `b*>| 6kOB!+DӦ%%E쌅oy ]hHp,7ΤO|ܯ/4u6[;KQnۧ |K\niytqW⸪ARk!MɦLdWT?b@dig-F?栗6ݿD1nj؝OtϿe~hꔳg'j;dc/('aZ3\AJu(+1ꠅ[LS^>%'7֝_ݘ7=.[Fv=t9;tNNT*B 1wzvnE\}?Ș]P=ؚڬwbO+?iʝ77j>K3GNۧ1f?k踟?-ZH$&Q@lb@MiD#KNq8 [h" a,{daBOϝ+?>6vgA.:*v'7s32fL zg!%m23gKx~7ʏ b{;vlۥɓ>!bM4yAÆI$T*vc8})no|n{Q!v1 ce=ǚ^μ_NۏZHŝq`2545_rܕrAD'?ݿq)ne==p|j-\f̽}{|+WٲAXq'V{k~P`+Dž@V~[Ϟa'=[x6㣣5"ٳuĮp,7.-( o:jTל;ay{ԭk+߳52rB"Ap䱌Ҋ "!(9jAGnl7EBʋ4<,lôSl]i`ƺ2^@͡vvBxի_^tG-KMLJ50>`d;NbKrkoO]4_?ݻmNʈN|yCFT求>>s.,QٹkG_~ wtwf࿻&VSmW߽u8"BDEMKDBgS[ рzV:zj,G%Q6C.Uʟv{vltnl̠;2twm|)?QdHlNHS ǻ9l4M#hZ3g r]S~'{_p:ulol2 >3(,'UWSdtWϏش++K<x0QVtY cc_Ccbj/SG>x:nA8rd^}V bݼ~u!qAL27-t4[WM=p dl`W+lZV]mu-^nJVƼ ZR#ԁS0ص6vq &m۶H[!iDDAj1bLMfg_d"ˣni|ڣ?: It|a\׮mzإ=aaG\-8"( [*Rv߰Z]xeCtv]\MsVW{ac6ߖn\kה_ӅÂ?KΑG 'K<; JKŮfڼٱ䚰٬ hU׬V{ d 5wkqI#rghhYOB!v'm<턺޼q&3kz?ht!#3=]MpzSfi0]\)\֎L5Xޕ _/R_ZkW*jZʆs_ &L3"ZF.xJB :uȐѣ_oJJ**ck|R-^eO3F|p\F Ms534mvLUYηwi+^=\ I8xfS tT/5VD-9-b<~/?!ǥS.eoF2oR>4<&;u+&ؽ[- jOu߈Zqn+RNqR3ǘ< JϊFB'yeow4Gd\͏qrWfmݩ/-ٿkOo~l8#)Hk׎. SؤIbw99M2xD}+WL s}kVk߱~ǎuPb9*#EFfn=Dt>[:$ {(c@uaVCt:uZ;h5O!e,Y[^^>^|.:##YP(ޒeg\ײݪl"ʧDgM qr:MEgo+3,w /x3c7RyeI V:Gc1ƈܾ5qn]^?8" Gm n=.z;A~P]a 3*ZǦK. M[ԈNjOW`J|yr?GqG^ˡS Ye  (FL01H$t]85`TZQ!v  5sꆜ.KJjuCIFSWީdFSQl 2P*_[[*d2K,kDbVYd˕x^=CnSEY,Ped6k]SfTX3yy޿{^azB}:O%Rs""ap]WXX|SU ^+"bIyϘ+/hkNo)zW!v<]11u ڣGb"њ5;wn"vc҅e 7pSu'I9]ϟ^:Cwf]rvޯ?HY2_ Z]6/Ep0ov$ӳj B'aɉ6QB4H+% <BO0l]ۭR#߉ۄⲲ:Zc=u7u#Sa!=&NDԃ""z['>"MDD[^7BݻZmNTag^7Iyǁ,ۺnP]YCrБ={(M>\?j6mbc ;}1S~MCWL9K8yRS.eo;MﹸD#W3YZ՜y9]" D4@7xLV^.vVkՖ-65kfY~AatE&x; "zHwYNnZem69.^ۥ]$ NpAAqLf|6px^Hd.lyI\znސK.󼴀ݗy4YKq]>Y2H"{/y#?3%oD ((~ϣBb?-1fke}GqyFpKm7QWRQ"Y\[^l?ie9F&c X:I$M{I$n|3Y}-oJ| /ao]c\* g_˿b_qnR}YdR[m {h@=sb Ssxz~M<776"zuWMTDvYb@B#>/KO;sEwH|Pp㣏(gcΝ{ *,,++-%x֭kĮpL7;y) 4鋦u3\%;5w)]jw~i2N_ ¯=.S}Wc||{Z=ta9ce|Aq3fh!b@Mͦ #_iRsjzsjt:vJICm6ebb"FjU~*ߠXe1V' Eժ-ZU6jEEnRc*:˿im6REGů6l(}nXroidݮxUb.OD(DDl%"D[@Dɝ.$J' x(^QBHCDD^$_տ6ddI7kRK%I*5vdVo6W:fJ7̗̟d&9ZxsrL2Lfnmze9/| )qw"rd߽yz{_4Z9}yl [zD8C֡Cb9uDbanfHɌSL 2Y|2KO&r*}pŔmP}M[rwMzrae9Pfa r+c%-}6+{+OM~gCgg4Y\i@ڹ \իn%pa cV7+3|uIjEixT}tdRTJ4u!=Gh?\I+vc*|NwGr;w9K nD /.2 ΕSe?>vznܜp퍈6q\@"EC&O*փ𤤧 \NtݮR]ke3 ]qSJW,e+[, l6R4jQv54~U{N魝g4B]tL&?= L&VLo*<%"zJрT<""j/A!4z=UJYx:e/ _tnw#g2(ѯo߰T"jgW֞a3ޕ M$Cer_ekBc\l+o%*QgN5NW(L[(/\V Oc.x:,R2(e|pky}|bZk̬&+(`5| @,v\ MoWJhҥIKYR/?É.xj?ckEŎoտ?k*mG{On..bӥR)J%ѴiII=G`?XAT\\E!uw>*+|v}ѥˀc7>ӭKp'[KWiܓG.|RH9}80$[- [|y\;K$z=;c8OJr^z[4D&lAP55E&gi.u1\pNuq1+f./|f4ʎKyz|  ǟ``j ":.sJr!IҒn2CK:2s;+*hJ-DD4x?Q(5#"8LV*Ӈ+eRBb_9VXhWT{ʛJJU񖉌Lb{Z"c0x)g)+Թ}#}}zܟQNvb}6y^.RLxr0O]B@lg۷w{CY{v4#j+OND4m~iJJ`1ٗsCIv ;ղecLw{AۋMpk9[M&;o=7Ӊb@ͅ,xzE';O\s+۰!g#4?02h ֬!yŮplv8!j=S:$Hx㠓|7WtC>{6lx~ѬYsnkmejk8# 9a$1> Vgg+/Cgg}1SzPQw .uF3v"JDD?=xj@%9fIIgrf4z3H˩^TD6YI~c%[-7K]39*UQt~W24rZOz 3^|4cJ`:5t=C>jUlbnЁ+WG_OD; j2 `3c ~ܒHrv /6h v<11uԫGs{@zm7V 'wm^D/Tlr_5 rԃ3zm:&uܕ1|h)H<qD@(=XoKKW*Ůy|Cl?yQZwk@L:HacOD]>TQ"""6"ʦ\""1Zwf,?ع`FS.ZC.8Szw-ɫG\-,RKSK=hҗ_Tޯ_0dFS"Rc^ƾ1rpUFD$9ĝ jY~jHԛV[4)'^**겐`>{Sb?n !@eRR,a1%#NJo|9oJ~0>;sQ Mwsfbbbcʈl9xŮ*Ku4E۾r֥۷ZyDmE?¶&pܾ1'~b।s3#,- A6J/ξLYm- [|=׭T=:ךU˗z5qNM%$,k܊I%oIt&6z8F٬6eyMA|I=ZmѤy%V[,R+[VKu/Cy^d OTREJݼ2~dX!"_HOJTV&v*[\qLv3{{_.ֽ<=|~/8oG֝Eynn{W>h(,""L㉈2zpMDD{̿@[҈(442 zpD E[%ȂMa 9^P,"D ')pB}k2YS7a$X ޽6:-m˗b a׹|Ȯ]%lR|%zhժ}{"l6=qj[-C&/\۶&e(Lzo_]J-^y??֞xFʾ4W鈈h؏ S++; ]  \ `6qюV냯I||6ń,SU 6LW +*=;ޥ2f =B3bbaiJwB0NW̕X6Q--1Di&`\T,*QAEFzVRҬask>4 '{ -\|!Exν|}/1GD^tH-h/u}Fyy\~Se J땕i>:CQ RhF 8^7#}CQoc0 Bz'tDڐ.[VgkfYP`޽6to`ɴ\)v<[uЭh2LDG\p@$ZZѵד4H͹}^^n,L/,Mb ~F.,g-vq cb!wΝ6VKT^^5~WiiʵrOy*ֆg |"wr\ht'7\h$"uDDԑ* cM>2sEtn'e?|To\^N4|ꭠnٙ0W]V%d+{rscLJ^jUlϺ)f+ؗkl|lG&FO.'""#U^54/pL:":S|f4;Pԑ;wkֻU;}!"*׭  +z=P{T; |swȻҴqcsiT`1ƈ ѣO"b1Μvej̹9 &ڶ G^2}x andk>-<[$-Ps$'[NNbW<n:GTҦbMYRӽdI:]k%KNN%NN}eohv)VR_NB4]=|}Z=3-uOuMVݬ Y" b?KO~aQRtn@L̞iN]bxÐ&mtˆk->ϻ7{0 }pm۷PmUjoq嗵IE!!z*%$G'&Hd2f3ѕ+n]Pn[VHW3V2,G⬒HzY[x^[KC\+YzFzzT"Z8=m'yιE_H-il/>;Oy_'Z__v쏘\xيZ{%֚+[^p)t{fͲ*"ww"ʢCb?ǶԖHIT =n- }A+Kco45[pp WP^ ;7#.4n*vCx! ^%/l _P v<[D"MX5$v@pJSqe3S/q`M K_:xLV^.v pѮ]vN'vSRLmkʘV aYhOwɍ*h .d9]l)2\N I-v@fL3cE}g;i$W;w%$st~1c6mP.Y,D p$v ۷l:^_5bw[=TxֆMrbIp mt:++aN#^}AKl]gw 3;5^mjfJOLKVώ|]ԳZT>zFLZK:RtTHqI;!tkɹW}?.VQ̢Tnŋhy#vJpÇi.4IFRD/ڟ}_*v,pX V&/ZG,ġө K/ 6f U5 M=\]X[qQy^R,HOիe;&vUsv&z#Ə'rwwvvu v4/f84׭J[ #eآ;[g;փIbW@MI$Dwl:5O#SNSm~=,%'~#C}ޯh3S\NzzRQ;7˾o &->ƍ߼U+>R5+;/ppk^tn׶2g)ш]NylE# 嗷ִ7>=].D!]S -W%x05FGBdY)Ƀlߺ%vٙhƌ#b:gvƈJFߟ1H$/TqؠzӅo-iCw38dj[m6h$r##C\sG6U:^DQ/ZcLAuwtx/oչu'ŷ~̙Fa_ߛvѸu-)%Y3|||CR)}|NNú j;eE=ŲGut צxy@D$2 lw*c,Xc,Dž3E7=HRyybw8\]^ziq㈜u:G^UXq%i]%`/ՏyRMXJ&++j Vgg+eYA?UrZ=y^vNt_i043o[j[q/kځ;ɖ4r9' d/KI~VzZN.^ ,J>xlslO|KǷ`E,Xa"YzJP^ޘ;7PVZ*v߅,,mЧݻtZƖ&٬(v͍WZV*rݴL vTjJՉeq+ZZ"gOB).\y(5rk_Hk^tjk.Ej1.?[}č]׿ĉ+ x+Cefjy.\ZJ.m~~/FqsW pLg'soòex6NvbX%l…{|;'G.'aOY"vup /(CGv@DӧD..:U GTj25"hp$;Ż]c._"oCF:&Ā<{bƸ(?1RER9g[ֹ"EH~JWPrZmhӕm-}-RkC]!'#-$ ɮ{ ֔בuF<%/$n#IS=Xج^;̘NԭT׋]5ٳck}M:SSqV bJ fO}ϭd8"KV*-oPPK$E2"[#VT)D^X7jT>N^;?,.....Ί q.OZzVR6$&aʤϊq999;ȑy{yx]P 0F_UqE-R):tk^=4`'T$?M7Lo|ƙyybU n?(/G&:fbw\]u:gg3{noo__rݴL< vTjRq^=-֏>?Hq~OȦM6NGd9g|: Wr{٫ND7L P\dl Kl|k3gbM<վ jcn DW__i˨m_z?ǘg,Qmݙ뎄Ɩ[*{Wnqdf9޼y..%%bwaOf˧_"ԯ2"sZNVx6Nvbϧ(۾ CT#> 00f9st=P=(2\N II#GԩSUxf8lb$4R'^_VƲmϰp$ "j"'aE슿Mڴ(JMÑ`m'Xqh!GYyְ&sɸuV6MIqy80#78b˷ۃn5"ŅO9u]{]fwV7Ri΅I׿")&yS, X-&D:I6mL*J&O4hpM##cbĮǰ,TޅJ3.j6Ku5@u~>nd2^ ) A"!:xfSŮy|./c˛ lS7?_i05llް,l}rs[ҥͲ:V-ڲ'GA= SRRˬFd7g޷/uz88h^#ԩYVĮ YG/ϸ(U;hƿOs_sD$]5W \mdtb<>2nhwm}j>a\fPSQQf%׮ n|S9=]l5T{ޣEFyy昮,l'\Jhhw6$Xw_+x/v#0:ٹUq½ޭ1ZA޻'vT1]EԵkB£?vۺRJBs[(`W8XyS~}iX"W=jD #vȧa33Rtoc+8ZɰXtu 󳲆\m;.aٳ6th6urnD,] O [ Ot[^|;/{m4G௳vֱd+,v<|:{ :mb8* `s"웝-J VؽvUwQv;3۸v:#qjzQ:bw_ Ç+1~IG^{]NΒ \n^tYDe]PhѠAD'8|8L&JbWcO}ϭd08CX*-DHx:%X&`}A*%:rj,GzeewKRP v؂q5cq-wL^i8mg:W^/v'+verJ]\vEYu׷xE˜PPv.$pS ׏k'NWbEՎ vSfTSh<.:f #"'zՑ#Ǐ'hT*G>1 P'mq_t H~Wj[Ã1ɉŮGqߒ}6tSĴK[/Ůgb~'zM+,ֳS 2 2u寫Tْ|skͮtqe[mbw'L~Ξ z/[V5x#oOJ;AP$Ĝl};ͦsdAWN_ʈ9;k:UgQTEI5 R}u;վWX|ޕoإ+yݝ6>vK?N/TNP*.սT//;jSmMeKc,ҺD8s&h)r=P=dRTJ4n\~IID:4mڢUwTX*mq9Ww *~ OƍV94wjm;VǥGzee˱Z}t?w ⲳDIp]szJ.;rS^prg|̑_!8eogbgEHTJ$/;71L&jYүPiڱ׋1qDCt޻7QRR׮ ]Þj`NjT!GԖl$*dR&u-M&"_eU \mbtb<>9iֱm~wOplNafs͚~meIgD˃){VY|"v2ڦrܱ'Nd}_z2}Qђ+INNol3oqNn$=]FΏ7/10x &+X-FK6~.z1>eK 6JY̛*HZs\廯d%Z"BG܂Rpx?5Ap1ÃJO|d5{O|3ӽR,XLRRt2c 43hVG[GEijZ-v< J6H$vTu[x8(^n8*Gq$'[bW}?755U+l6RbN97w`H9ֈ9 ZhÕjRF;  ܎WSft>Y&K{$Pn;#g5AmLcbd$$^.ST⹸8fP"#7la2tm}ƍw *)9Bg 8E/y >mTb<>(pEE]fKr!"ןAioroە{i<J+Z0d^ ʋKϺNSTbAx +\8ej5}+vCK YFF IO> Řbg\֘RZ(҅:DΉ՛'믏;e QݺAAbWpkK~ZE\;_UT$ Qy9cW~ťMb+^pߘ}57u]ԦKd7\ NG "jzۚ\Ky!uvAN )ǰEau'7Znܧˤދ1^bgS omٓz赫WMQj_:t-4hX*x| zjg'޽w]h˻.:IubW@ue1FeͦӉ]YrX:mo֯={6-x4էm)]o^^Rt6Fv|g^>>?<ue}D"W~Rݩ{͛bwc1>eKoP"\&`)7 ltn,*ru%yV.\U*+JNٜĮ:4z{_|[._6PfRYٶ۾Jm{gOJ.`kAASoII^4wn gbg_,'']h0ڕ.sG.p MDFFG99iZU4l&RIyzLeeU[ Bu\W*&4AˉΟw={RPPWЁeebZ! j[ %%ΏVȲZFR:ٰBDGm[R/'b6w״Ib<8}CMI xl-ml e_BdE'3@ 00*{$ \m.Ӊ,1(2\N Jؾ}D1V('m6`(.vu% ݉vE&{=vYZ-BC6FCT^^5ԋ9]:6Dzc/\kCݝkd#TWʹf RVPTv2FK:-˾/Q + mFl[@@r% .O h 1xϫ[y {lp=RSo|9oJ\;]>p@XOMiRP}P=իu<=V޺uF"by/@ v,DrJe4)z=I$6D U8={Jz %DL2bDߔ(<]su!TBgh?JN8T]vӲeIqq,)bT%zn봴]!Gh^'+{$^ CllݺQQDfN| kPX,FJEdL*BVWV:Á,VWW `6.J%<_|\x 3/z\'B^r뭿H^n+S A>Ěy䱯pGXƺs\̍cCV; mK}#or{y(mr2g.QFԨaC9./wz^[Υy8ܑK} CW>TuoMJb,) W5o'k|Yz:Ur3ڷTOK Õf3fdCBŮq\Yyy^^D&SYNG$$_ щv_oZŮZnjGT;1o.HkT[pfkİ0!r ^_7Qee pˏ,q KLo\"ԼUC<<~\CT4366E1٧OzYfR]]v-j `R碓22/$ӛt 5JVM6tD:Ƿl)v٬kDD&SENWu Kͭ9U*vJǧܭP65yyJV=P YL?{Π1hYrB–k6jdh edbwRU(dK,@w{/ݿTzx,e=z,f#GlK<:Mߙ&Ҥ~$~/,v<zE4++K0%,CZP[bwcH85!h̘Ar j7ArN D3թЗ~=G#q"]d#o;{ǎԃG]*v8oo__77bb AۥR"ŅHBV"AH bc_d2/ZkW5似־&b@v7)@&Yl9C~ݣǭ 'v-z6X\wI^ߛ,ChH_tjf:־$3 kԈyKZOؖu킶bw,7ĻK^_evL<)v8&ZT^x!)i(;u֍j f:GYDz}~?ll99ca!wp2Y6MRS)<˯on䅈9a+Sz>[wτ鴖 <; E[%~w SJ>?{tFn5f b/0ϥK !!bgSiԻwÆ..%%СkW:CoБ? ÁnZh@-m- V*/$2++5"]!-//tAŮ?/,wws@?2yMj> +K*w~Jب{77wbz~{W>&\*Ө+.M owdoS*ve@PZ.=kΔv:9?ґE'{%6݉T&ww - _})S}|Įᖅ&SiQEE^?UQQrҋ/L>>DD8P}mftD?`֤_\_="^\{1YYTo\ .LL~AY:Z2؝/ؿ^J$k p![ D"v_u'̥ __(0,,[{T%V 8?e}+ԙ}a]<=]]܈f=zdN[ BV^QJJy+ɕDCҮ8}j>r(IIJv{9-?o_{XY?ฟVpxExȌ_-޻/Kwm8n՘i+@!J Yҷ\aabw9]RΔ˶>#F NAcIJNfbQ.s5lɨ]d2T*%;kѓ&]UoP"uwdɏ=` =*-bwAI4s1&5oޠAlU+)'jx˫S(3fÆOV3K/LDf3QM ii{5^Y)vTv0|})!Mm޼dgSVNaúu'z+77ggj>a9L-^xa{ůTbW}b%hpٳA_t A>pl"3&1q Qu!_eSY/QwMS>ŋ&?檕̱X<=b= \ }Okq=J.ޭ;1$d˾+\ҥE6m&O8p"R.Jϐ  \2K:y9T%#u]UX?0MbYQ.zM#)>eK&rl鈦Oͭ[cǪߟhڰ0VZbqs#6h =WE0hqub+ڢrGԫ7b}cUNNbwU^^nnU"LFᔷi{ݢ+3+"~۶] [7Gmۄ?vVw횐@@v[Lf,v%YJ%燅-YRTH4rsn.sϹܿO)Z,b}<_5pcͦ-^\5x'q=˄]&?IVmPS*/0tR- [#"L-/D4gY֭E4ztbDJBP] /GD^(z΋NJ:ztgicOuwS jF~˖jb]&#Z80KJuhwq!jF.-3u-WW AĮOO;n)vQBB۶:ai02&fKZ賴Bwμ6x-A/-A"8Nu#SnMN&*+jM&Wrs#Pë.9j,//In]XX( Yt:Z!:5)i(S\xhݺݻn%2' UU/WVCOtm:nMADD4] yz߯ߐ!DbW_ՒZgc BEaw'?oi$LNY<<^{m?}Q[ܿnyqTeJ[ɬ֪,HPM&""ưR&pkx~ThY9h>^/v@m9-hb<=>,؅ [ҼݕZ-}@D,] 4iM4rd^T J%v@,pHgî# de ƍ4FbE"8#֭Ev""CCV޶m"+xjɈLRgg"ɩj,օX) W;+ĉQ ju~ҷ~~:~sǧ ƈ(] dRTJԿǎݻu߲U 1]]a Z S<1Zl؇LVc.- }P3ƸqS%'DǏ_tu3Fd *գ[Hv"L2qRimZٯ'-mBo6#C"\saZCu_xMQѺȫ4lu] ??qKJzb?n‹R\L.,.^-i;wRfDG5R)DF%$O԰aݺYs-D #%"Yj>\JYWbKϷ{[bT֩,B݀};^v;xGn@D>@|1QZױc׮DD"Y]x-,"-~bCV 5Jd7DhF {ѶdZ!La;5[FD&޽۶={+bo6,?5rj K6$j:eVm??0$0_ر:ޔ{zkӃ/_eMWuf\Nt*Ů~t:Z!=:1q@uŮꆽH˾1VPW"r HYcJKAðCQ/țѦSMUj2qzbb~eϞ[** Jpp CRytp‡[>̒Jm6a4 BPܹ;u?%E.Gwiﹺ;!!]HUnLSDJD:"zQZ~p1cu:''>`?}׮u[2{_a j#civλ@s.}CDg08;fk$22:(""88$h]n%x֭kĮxf°j ê[5H.ʐ1g'YMsNwx8yYYb?o&ݜ3F{ΑЋV]{XhhQbIHNND4]BH8N"!ӧ}.]vmѢMG[7Ba ?zƈ? `@kvO<Ջmڠ>))]Hظf }HTՊ5å'M8p03g]|jۉ*+FAJ6TJd2tnRddZ9l&"bIfidiql O').y2_v),Qw >wqP//R/8~Eo%/Q7DDskر}&%]ӳ&&v{Z;ȝǏ w#׵ܔk g#_fŴgeVUtS#R""=\Ѫ]M7'߿cn݈ L.Ns^XnmD'v0ZBrtWŋm7Ts5jD-[-jDMIjL4hHo޼z_v޶`I,j0K"U fXI}[M_>>rE#+[5W;gft{Ss=<F st0 gt=:~Lk~XQ2BwqK#Ow!x7-S;ۛO~8N9;t:ȑzO^UPLf?QåK2c{9a,cg]2.b*l!Ej ԩW("bė^"ڼ={p̙bW<;\Dr{s( ]ʹ5 ;Q .DefvP > b %̇ ѣOfbbbc~iǎ͛ Į&,,c,;<3rvMyrz3:#{o2!^"CܻjUTwVqW\%@Pd $F{'\jr^'Hr^j앛sc?F^R/h#oa7o8;ozzVxA̔]ϝU4ߞ+uR"R3swwqqu暩Sg0wᙵs- ZP`t G_Ϸl/7a)7.tnMM" ۷o,q?n.b6uSe]]/[8;Ѽio0?u~rara'x9lm}-m✑%{I]r '큓!!y XOgmQQ-ygX9ȺoK/ד:m;$&&&jm^B-ߒgŻ2 +**(W>y*h,s-q6[Co SP>w];|ܠ? 9}G55?`] ~3e #~[1jl9ߟߦx!3wl80.O!!K<в nnF\ȕWN<}Ȑ!-G G2)=zÆMSQataYf͡CEE߮&zynR$򄃃]ܴZk;LJ͛V:h:zieed.OӧBu.67p87 X>ϖm=2p I8cA;u3&LF?O#rSΚ%ս{ϞFWQ׉VP {L7/pZdJiFw~XC $ӪоoJÆTZډǎ9*\frx>XO yO bz.('w7p87 X>ϖ-(9G//(hĴu{jWe7,pr2y.d2E&O>|hSG?^jX,ԫE␞nӹt, 822est/?5e?.৚E6lصkVommp~yTuάXmJĂ"/ [YPwczWܴ2:#w`u <[7Յ7(GOe_y|j``څY3x:2}B>?.""4kWk:E9+ɶ7jrv={JXLRgh`5Y󋟿:U>-64z$9voo<63/000{{M~~o9*:#ggGG''3ǎ0AdܸaDL&E/ԭiC7wTS]sZ;;evd3'_~)iߏ0 ON ֮)(())*2 sZmuhU{QQϭO?s몢޶ **Kꥳz8VXWG08`٪u`Nʛ'JMq?Ǿ}!(daγMMskC-bc##Df4 ZIb/rD-\8]Sg hg̮c5-SI)Sfknٺu߾{EVڲeFFStư+s(*\Hзcߍ ^ZU6/}mopnZ`; :Xm}VR]պcܝ.;/ljO),%w6ٜcl>@.r啓&͜)2p`TTtU񪮖Zzuӗw78`І|XzH|| *0Ѻ1䥠ǽKJM+w*)H7.3KKwE~PVtZ{/zA #}߯"*Yu+)N:g_ߞ 7{/|}kWe7,pr:9@ӣGdٓ&M.gtˍlnYj{]r9Fg v`٥]\, 7 ol6fٺ5)iիn;zD'_냧v,+ {>߈҈GEee݇|41EϔV'xw ~^GtSk:voSe޾'_o<Q$?H$>~ӦkERS23uKkkw# ݛRLs<3+I9O}TӞy ~]5^$6622*J+'O1CӓfͩꑆJs|Yم+z#M/K\ 0 5OKKM[N*@Galh:l8x>_Y7'sTeeBG+&tYk~8['VUsԽ#x`umqXOSɔqԬc"N;zz<_|g)Aig o,jǖ+U\ о̙sE3gDFunt3z}g+ߵ,@7t q}\;9 urP watk455777|ݞ=;vlذk֭" F: n&kk~se-< L*pl@W𚚰Aq~몪_ ^]MhĶVgxwrC잹Wf%]HAQI{npAAEOV\^FsU{e^#u.\]]\Df3 EƌX'FG:w2Y(RftkTUԈ]}"۷۷wfwBW|w^]'] ]5:sׂs_mmj ۍ~ :cwݿ% KU.utޞT jKl//յ7JMյxeōSʟ̨m//):'d2DF0`3Ǎ0 hz7}>`\\\RMMFg'Xtr+ջ5TL?}"_yߊ&9>3: 10ILLLj-8X\eۓOr7>?-W~HffvɓFW68OtuxuS]}x7g:ͮQ|m]=.uuKkh~ˍ#\5n46]:̩{sOxXgW{5,ˋXT<ܡ6'Sjf;:st,(TMܺNNGjR=+NVv\S{a]sUJ{0=884TK/Dz5<*/[ԐLm]/lZMs[t, ֬9tĉj¾e\-5]əGoܸvHQQYYiUt,P8icCΕ;pzR~rswW*\q{`_mW3G䭷d>>FwgSAAIIQȪU[n$ZZjjQF_11=zDF̘1f̄ "ݻ]NjY[+TGst{Zo,~N]"(HC/+Ja4s!/ Y7hJ ,`=ºu5k؉E"#u 7 8KSJJ*1W_=&Fg0[EkoM&yzbtp.[};,p>t*2kָq&DEuޣUYfY|?qfR\\;Fg0g]BF% M{OdY8.\:~<77;[d;l9t(##-*О!8mNj׳gFWg0Y-.Ve~-L;¯zj5`s&111Qk`byqISO|ݮ5@ԳgXXn"'1vH߾=zI/|˴n1#6˫,mFBFƼy>䥗nX D6nGYnjB{0 8?5N$[[{lھg8x!YNv(3mΒ e%q 6 0BAAiiq;vl"woJʡC"6n]@zAbbDL9r8.]/zDuٷvRˏ^;3>48`6oROϦOVl/g"nt`Ҋr-[ٶm={D덮c1M&YdȐؖر"FYTjnV|+~o~kzjΜx @ٔ+g͚ o-Sjw ѹ֊Cb?CRҏ?TW]@bZ,ȨQʼnLctW@OjĈ3WrpZVEI5+Ke曧_;[-c:+vfVwO?{,1ڒcrrN]nIN~ՠ I%FmQUUmmMȮ]%%l޼w?WUUV]윝DF8PdĖu@eY|y3c*/uߪ*h`Nku,}o_SCw{#Fe6Ȟ=))|=;v]}|D&L6l(a0@jZڨU뾷6ط\׭3: Zkm2 ݦPzL2h˴Zk'ټ4]kJ@{RJۣG^" C~[.]Rn7:0ݴZk־]Lt%K'Rwg-IMپ}{E33Dl63g6L&H߾=z-2vC޳RJ)^~@-P M!:Ou:'N6 _| p}2prZMw%kb1**Dv>|x~[))(/7:__Ccb926v ooOO//Ers%VMsҾ ,18VxnMt)7EyD?z]@Gbkm>.mہ{;qj շȑ ,ҳghhn\ 8RեUsXdmNͫzj/]TSct#ٵ+9y~]ڷO:0^n]ٿ"CƊ8;;::9]tP Dcmig&b>o |0kAK=$W}1$򄃃}@GvT~~^ȶm+zH}}cccupӧ_?c 2D$,,((8:LݭW T?7ߜ3gl6 XYMvKŦct -Cd;ܷOS_޽u8sezZ-JPO6M]Ͳz2'9<p1h֬9tplUӟ_|Q{w7 L󋋋D~19={>p@: :oD _:1;T[2z=3/f,6nŊZ;8-icS߯҅ [DkCٻ75С3WEd޽cbD8PGЮ]:'P<@T=6uqR_[D}aάss]=m<#[uRZLFQSSsssHrrffZ-WJI9v,=]fv+G׳gTԙUttDDϞ"fd6] tR/JOY$$WyV--'.uߪ*q`s^:!CVyN??ވFwٻ7%!ݻSR)(8}:F22D{:{qrrppp0KxYcдRs}SbdfXLB]n3gELr~@۽]()(/IJ:r!;ܿ_:Bp`Ȱa/2lX߾xz]_̗-jHf^/n;KX,v1VNL̻t)"Y#U.+?ڢ<={RSjh>,RV2ӧo3FTU*Q.z9sbjl4:} :oc>! qy3ϨOsm,_Zkȱc99N$&9,o_jjrHUUmmMѕ@2OdР3,mXTjnLK<{fYN,(0:? :9K]fyR-9~Z?={]aVVVnnvȾ}-ìÇE**:__OO//{GdРU]]P׫M>O}.pkr]cI84$apXze#Fkfeg>-&g] M>>-CZrPU/E[ٖ-FgEˀCק\_+MrPm[H??ӋÍNٿԖ+g>,RRRQQVft%p~x{ rd`]]w/[ԐLk3\RJimt`JȘ1Q\7+FjcI~Kot/'Y9"r`FƑ#"O]:-C .]D ;&(`@+dzX kM=-3'&^F@ ʷڸH`);Wtz1I.<=pUT?rѣ"))YY"6lt%:+I)I$""44,L_޽[W}CݡQdܥxYd&M0t^ |udi"__{l zH*˟$6}ξ:';3jV]]CC}ѕ(Vb'V pV2kWVGՕo,1p^+##; Ç33] E$6622*Jh>}""z<39b֮UϟzME2 09zpĨ(YEG 8}+d?ף@'RRRQQV&r㙙"Gde;&.R_ht%ε`@}{ݻe`!ٵkxl2;@'sD'wPZ=ǧE[ٖ-FgR*w?gSY@VzôiFw0NccSSSHzɓYY?rֱcg[hDzn=2G^DbbZn=<`m٢S3^o۶,ߊ qhJIz>Or ee"ii'NYii'N;&R[[__Wgt%@-ս{Ϟ"zEEbp%+""<1y^}hѴȾ#W6: la6eN#Feb|Y~ݮ.SP,SvZl6L&𐐰0~"#{ׯgϨ(.]&-?Cz.?s3fp0@}{j9:02kEV+ip%SURJ)8`]YHGT LTUԜRֱc'Odffg>-ּ\3wwWזAUxH>=zDGGD%it%vGjՃSz}9s(5@ ZBВɓe\z I3._yyUUe+h<%rh˕JJ**ʌqvvttr3,[3W="7W!=]gy}@)nt`CWyD$Z*g0 @SQQ]]U%rT~~^HfS'O8 ҽ{pp׮-W#4{CBDfl6@TW ) W Njm:ӗ黯BK?S|= ihhllh9~#jl|gN6ߢFtV !111Qk0飒+t^,bbsNj90/"ӧ EZk퍧HnAA!!"]tr.]DVP$Jݚ#2wM~{Ҥ8 Ђp Z\쒋gTgt0uuj犻kAA"]܆$`t5{6mUT)78oYRn7,hkjjjk[Z?Vч-VV`''g3+RtH: qssqqq1 . }ztJ]5{:.߻<: 2pEPPG5F^?̝>hol6Y_UP RTTZZV&R\\^^Vv#-flh9׷e8fHz_sc{i\CI15ˣ{?y}`mTeTx,z$Nz4ettTյ"EEee"EE-RR3UUUV=kjX,aOSޭozyyyLJLF? hǢ$JݚfA7,*>xgԭ~=dcYowi1~}ٵ^quUV2ܪhlUVVTmfF?mQ땨<=E||<<<=E||<=[<-fX+Qyz(p;di^&[ǜ9s(esovdu,}o_ؼ6v\y_oP]wIpu5ZgX?hܖVUܶ]YY]]]-R^^]]Y)RUUSSU%z@:rwwuuum9S˫eH2hã~//T&jdmJ)}>f3?oy0ߺz.^^="7ꞻat=3jmlVmmMMˀVZH꺺]ZMnn.."...."ήgS7nljmt&&^x:9K3'/KD%i7$7e}9mccSSSHccssSә!WSSssssOolljjnnmll|tU_X_/bZy-fkhhhhhlkv;#dVb6go=bXL&NN"&R&b"Ù?Z[ѱϭ֖o fbqtlsrj83rppr:8ojfaT%{OO2k]lfRLϩSF}atBq}\;9լJv-9S'#FYu@$)Iooyښi/_>gΈ@ ?YsPQ"߮u5P|>xyWZ_/eW|kc8`t:&X~VBFƼѺCJ/Դ;BZ' `t@] H\|d)a1#KK@ R#[$}9z^W9;`JZZ*7K/'}Oߢ΍mROφ+Uڡ#Fh<\. Sڥ(䓙Iqq ,LBF% ѲQdU+-H~KotXj<$5yyr+w-_njj;3fetK0p$dd˘(p'˵tz.Trbt',PO6MyuzI?+~ X +š{mW|FuR&L/ 7+MQO˃uGO퍶m˗O>堋 &Xڬ5k**4=f$&>`F,a謗K.%SZFݡQ$X\d5< -_ܳhoպu!Όvo}v슝>>mO6F^qJS;ԓ7 }d~v(Ps9b$L}kң:gUL|j;ki%emK\fz {wp D,Mmcbz|L||Ng;ozwnrtbtujɑt:W1{ 0:h`Zkm2 4uNQȑ/ fϖdޥW 0Y-.V>zW_@uDo^|wPJ)6:H`Xb f~+Ujr 2B\"[B Q/jyD?%#;!A+Gv|sϢU֍WRFw,VNL̻biu0_N>aE]'jXA#zܗ_NJ >>Qlݺ@)nt'Й1d>k'̚'MuzV.5KnүOO;A[%[^-- "Mk׶^*[~}\\\RMMFg`9z{RL|Q/ fϖdޥW <L$Cr׬ah Z[N?^;Keb=I͚%SjN rR}"O}ikpZVex5^)lt&ߏQ_MGL>J[Rx A 2x}D$JԭYY$'eҚ5M,^?{RJk3; Y5-;͚%',#f.7NLj5<\:Y->.5kq2X%}̤~Ҍ`XA$d}˵gKr̙'M8FwmRnW2_~;N?sm!VM>堋 0.!#c^X箜%'e1i@/@;dU7me _F񳲛vZdȥ Fg`Ϊ+Vlvq*.0@DD8tյKfMz H񊌔.j K{*."Bf}_Ddy/"B;$D/d6/^UKtDTmSrBJ`zlRwfOKѣoU^ @zDȦ{wOje:.q엗""<\/T^?d//jsq=}ZK?+KbvʒI2N^Ry<+K*ojfb$+!,_蛑irwwž`J՞|kWizFm _vװ0iknxaaq:aa2[n;9|jY[+V~I9*囜٣fY7NR:%7#Ts {@G <[<`S`ey`ml:K`ܥCBtyK@\$ݡDQ-Y!J d![= P=Pz{enJקeva'f(*+ssM[${թSj)%'gJXLRy ڹ)+vHۮҥ>J[ZugZcWZ^PǔP~~*g_?wywe~~$GG'pVKfHWKJJ<[@}\RPEEREELЪDSUbO[- TM'O((w~ajN]ͭ:N2=iQ>ҩTZ߼Vw3yB7N7-g!>%zD{xCjTu%tvoyT"< image/svg+xml cmst-cmst-2018.01.06/images/generate.sh000077500000000000000000000005141322401607200174160ustar00rootroot00000000000000#!/bin/bash # # Script to enerate differnet size icons. # dmenu # # for i in 16 20 22 24 32 36 40 48 64 72 96 128 192 256 384 512; do mkdir -p "./${i}x${i}" convert ./cmst-icon.svg -transparent white -filter box -resize ${i}x${i} -unsharp 0x6+0.5+0 -background "rgba(0,0,0,0)" -flatten "./${i}x${i}/cmst.png" done cmst-cmst-2018.01.06/images/interface/000077500000000000000000000000001322401607200172255ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/interface/basic-plane.png000066400000000000000000000012331322401607200221100ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD#2 pHYs B(xtIME AiIDAT8˕1KQ߄eİ DKZb|;4.X X&E"6Zj[Ad:&uL&{(s_ <+++{佯{$BMj8S UN ciU*wiӎ `ՅͿٻ_ꖛC27ll og9PzԂ#{f'u]--[KM в+.zƶ}ȍ% 1K|׳eG К}o{c1 ߴ-z,_vh\ oN.] Q׌\,])Ei5  9m"}';闷/4{;x+N0o[]LRjg%tEXtdate:create2017-12-29T00:21:00+01:00&w%tEXtdate:modify2017-12-29T00:21:00+01:00y{tEXtSoftwarewww.inkscape.org<IENDB`cmst-cmst-2018.01.06/images/interface/golfball_green.png000066400000000000000000000022321322401607200226740ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<PLTEzani_Hf"ky5EXbch[^ ?m~mB ;WfkkfW<  UWtRNS#CPO@  WݧL -#=., P6"ֿ ? N*P*E.Ӳ u_1${ G!W1Kۈ+,g‘N >S\ZL3bKGDH pHYs B(xtIME!PIDAT(c` YX9Є9yxEDŚ[Z$B\J P"D\I %;Ѐ&H\K$tB!o04ꁁ^ cY@PjJM@ GIс PmT "1(3m: @  ""7k6 '$z=)9%5mMFTNn^~AaQqIiYy'򯮩ohH&^9Mٕp.L}%tEXtdate:create2015-11-04T18:23:28-05:00^5z%tEXtdate:modify2013-07-28T03:30:33-04:009 IENDB`cmst-cmst-2018.01.06/images/interface/golfball_red.png000066400000000000000000000022321322401607200223460ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<PLTEzani_Hf"ky5EXbch[^ ?m~mB ;WfkkfW<  tRNS#CPO@  WݧL -#=., P6"ֿ ? N*P*E.Ӳ u_1${ G!W1Kۈ+,g‘N >S\ZL3bKGDH pHYs oytIME%WħIDAT(c` YX9Є9yxEDŚ[Z$B\J P"D\I %;Ѐ&H\K$tB!o04ꁁ^ cY@PjJM@ GIс PmT "1(3m: @  ""7k6 '$z=)9%5mMFTNn^~AaQqIiYy'򯮩ohH&^9Mٕp.L}%tEXtdate:create2015-11-04T18:23:38-05:005%tEXtdate:modify2013-07-28T03:30:37-04:00vIENDB`cmst-cmst-2018.01.06/images/interface/radio.png000066400000000000000000000013671322401607200210400ustar00rootroot00000000000000PNG  IHDRJ~sgAMA a cHRMz&u0`:pQ<bKGD#2 pHYs B(xtIME 1mSIDAT8˭+aL8>QRa3E)VD[R)R$ř( 5 zYx}u:SSsmzD">rZ@" B=ZPNL u!צɓ)e&O: LyBm9DkKy%tb DPȡT!Б2 1^ &ܪE-Z&P8VX(rLd1fVlUd"!g DfeU.V&Z= { 2ʤq*pW 5\}\5j.-gɥmZo Ίw"KH"#o_V"-O8:bjl:<ǁS 4#f7ϰkMfO&_c*P1ШKNFFŇBrSa0Ad姤~!FV^DIΞ_߉L\%tEXtdate:create2017-12-29T00:16:49+01:00bA%tEXtdate:modify2017-12-29T00:16:49+01:00VtEXtSoftwarewww.inkscape.org<IENDB`cmst-cmst-2018.01.06/images/overlay/000077500000000000000000000000001322401607200167465ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/overlay/overlay-warningnet9.png000066400000000000000000000012141322401607200233760ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<PLTEzGYsd7"^t?Ljw>Y@Y2nyJ+ae X)T>Y BTLTbKGDB= pHYs  tIME*'6cIDAT(c`ED%%X$edY$mlU88$T5эrvC70426Dbjfnaie-`SS 6l%tEXtdate:create2015-10-17T20:16:28-04:00+%tEXtdate:modify2013-07-28T03:30:42-04:00IENDB`cmst-cmst-2018.01.06/images/raw_art/000077500000000000000000000000001322401607200167245ustar00rootroot00000000000000cmst-cmst-2018.01.06/images/raw_art/application-exit1.png000066400000000000000000000025001322401607200227620ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<1PLTEis]OZLXJVH~v6I:FL}9CVCy7A{<@wr6?vs9 s֙tRNS&$'%&%%Iy&1,X.Y YYt -Р&''%مY0IyX-2X[X] ,iI+iL =obKGDH pHYs B(xtIME '0(RIDAT(c` lf恱yf BB3ED lqYfIJI2gϖW怀*\Ihi̛z$abjf`!XXZ-\Ȱakgx 8:9C]ekt2(psws F]frI@jXfMP0xHuPZփXx\F0HHSI)ԴM`i3d] Kl2pXWl۾}[e3buM-V ;v65XҺsg[?]*VOIa8ep 阭ټ>%tEXtdate:create2015-11-04T18:02:38-05:00Z%tEXtdate:modify2013-07-28T03:30:32-04:00NIENDB`cmst-cmst-2018.01.06/images/raw_art/blank.png000066400000000000000000000015351322401607200205250ustar00rootroot00000000000000PNG  IHDRw=PLTE۶mmmIII$$$mI$mI$mmII$$mI$۶mmII$$mmII$$۶mmmIII$$ےmmIIm$$mmII$$mmII$$II$$$$۶۶mmImI$I$ےmmII$m$mmII$$mmII$$II$$$$ےmmIIm$$ImmII$$mmmII$$mmII$$II$$$$۶mmmIII$ےmImm$mI$mI$I$$۶۶mmImI$Iے۶mIm$mm۶I$mI۶$I$$ےmImm$IImI$mmmI$mI$I$$۶۶mmImI$I$ےmmII$m$ےmImm$II$mIm$Im$۶ےmmII$m$ImmII$$mmIm$Im$ImIm$I$mے۶mIm$mII$mےIm$Im$ےmmIIm$$ImmII$$mےmImImI*IDATH  &W RIENDB`cmst-cmst-2018.01.06/images/raw_art/info2.png000066400000000000000000000027441322401607200204560ustar00rootroot00000000000000PNG  IHDRw=gAMA a cHRMz&u0`:pQ<bKGDC pHYs oytIME '0(IDATHǵVML\U\̛oPƔjeZH!qucb ]4ĥ;c(1؆4PJ4`2!427? xxFTx 0;;[9Jj RjNJ#clW###Wl6kc RRN7ot766~dۯBX,'''CPa{{Kݧ].ZB\ _x~ȑ>R-Di)F> tttkR:!Pٷ{z~Vpw(r1^n{+ J09%|,QԩSCޏ0TRJ'](?ŋPQj8m^ablrf9Rs;3u ¾G*NgxD"-p8\[[UVVAJ)/^UJ NE[ssqq.JS1b3u=(RjCHdE)E`[ɹw,qgPXxE(m%o4秦&J%gfffF-#X,>X(BTg۷o?*\4M>> hhh???uuuCCC)))~~~}}}:::iijyyy121qqqXXXXXX000sssnnn"""&&&ggghhh(((.!tRNS3M5xT!+@xX:x~b;zf 4zED};V|eV|f$Ua$2.;{x3>{w3'zx19QJe 6xf$4xl]U$ [b'2ka! &$sbKGDH pHYs  tIME84~IDAT(c` 02agfae&̓./ ($,"&.&.!)%-#+'*ASK[GGWO] f s K+k[; ;8:9cE,"iBXxDdTtL,D\|BbbBR2DJjgdgePaQqIIIiY9+*kjށή^ X<A%0K7%tEXtdate:create2015-11-04T18:04:09-05:00 %tEXtdate:modify2013-07-28T03:30:56-04:00n+IENDB`cmst-cmst-2018.01.06/images/raw_art/network-transmit-receive.png000066400000000000000000000020721322401607200244030ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<PLTEϩŇxxxǼvvvuuuEEEzzzkkkmmmzzzRRR~~~nnnOOOnnnkkkNNNkkkggg{{{gffbbb]]]OOOFFF WWW999SSSRRROOO@@@DDDÿ3ݗytRNS$?,d--x BP45*$P4my5s4sߋeKW8--w-( 5wbKGDH pHYs  tIME84~IDAT(c` 021cgaec"UY̓)W]/ &*$,"ZS+&.&.)%-SW'+..PJ* jhM@*obhd"nbffnanem"nkn""~ @&a!2/:&6.M}BbRrJj 2sr XaQqI)6PV^@x9ؼ%tEXtdate:create2015-11-04T18:04:18-05:00a!%tEXtdate:modify2013-07-28T03:30:56-04:00n+IENDB`cmst-cmst-2018.01.06/images/raw_art/network-vpn-acquiring.png000066400000000000000000000024611322401607200237070ustar00rootroot00000000000000PNG  IHDRw=gAMA asRGB cHRMz&u0`:pQ<bKGDD(M pHYs  &IDATHǵOVƿk{<1MDMR, ĦR#Eu"t̆QHQ]!Dy PZ`f"Ol{hBx䥞ε9$p]W€i ==' py^Ѳm^jhRU0dww߿\P̲9!CkNYYd֞>}u݊_~r4Dz/,,4N{{{0쬭j/ mchhJ)~ʕ+^:sƍ%W=ϳ:::\!D:>sLX,͛/.\gڶmj?66NNNRIC)5tZT;8rHNk(޹s8mZj'OT$e%U k˷pEi+2D۶fVRrR4#"b$(27)lggJ3ZK) "i~ak$siKNс$I5VVV޽{:VڊyEjE2fPA Je{0;;<ຉ8RL^Rںc"͍KGbz9@k !O{W8X[[[h&ܜ[],MAqb14M[T*Alq<]^9#? $!E%6F"bKGDH pHYs$$ctIME84~\IDAT(c` 021s srq  #]tʕKHJedߐWPTRVQy]M]"}KGWO춹%X ]O/=_?аȨ1 q I)>zAjZ:CFfبܼGE%eW$VVAU]󴶮ވYK+m]=}&Nlq<] ^9#? $!E%6FbKGDH pHYs$$ctIME84~VIDAT(c` 021 sprq  ! KHHII…UT54ut!F&f V6v` 'gW7wO//o_? EpHhXxDdTtLLl\|BbRrJjH&=#31+;'7/??/lTYyEeUuMm]}CcSsKk[b{Y]=}@'L4yT{M1s9s_p%K˖'Xk[D =޴-[$;wdo8j( áG'N:}rg.c+Wvč/_ݺ-rܽw?à a\vz9(%tEXtdate:create2015-11-04T18:05:25-05:00<%tEXtdate:modify2013-07-28T03:30:56-04:00n+IENDB`cmst-cmst-2018.01.06/images/raw_art/nm-signal-75.png000066400000000000000000000030431322401607200215500ustar00rootroot00000000000000PNG  IHDRשgAMA a cHRMz&u0`:pQ<PLTE̒~hhh VVVĹõ''' cccuuuJJJoonTTT}}}JJJuuu333pppppp###EEEGGG___sss popxxx]]]mmlccckkkwwwWWWVVVrrrDDD}}}dddKKK{{{eee%%%fffZZZ qqqbbb111YYYaaaMMMXtRNS%(Sny|xlQ'U{{V'lyfSHHSfxo.-t{Y++Vxx5'ts: @YX: 4ly3No*~p"eT _)B8 UNᨂ? 68 Q#=j @psK$]W,;mE4>lq<]^9#? $!E%6FkZbKGDH pHYs$$ctIME84~YIDAT(c` 021 sprq  ! KHHII…UT54ut!F&f V6v` 'gW7wO/o_?ehXxDdTtLl\\|BbRdrJjZ:H+2;'{/`(,*URZV^qFfZZwt2Dvu>뇻wIL6}Y̝7.`"K>~lV#2r'O׭dF 0l۶xEa= {?>r'OaD3_=%_x%,~sȽ~- l ;#Hޗyϱ'%tEXtdate:create2015-11-04T18:05:28-05:00,%tEXtdate:modify2013-07-28T03:30:56-04:00n+IENDB`cmst-cmst-2018.01.06/images/raw_art/stock_lock.png000066400000000000000000000020741322401607200215700ustar00rootroot00000000000000PNG  IHDRw=gAMA asRGB cHRMz&u0`:pQ<bKGDD(M pHYs  1IDATHǽkcUƟܛۤ37Scj3. ]BM7b@ N]X҅;BD,I.Z)*)%Nҏ؛.Tf1C},9/>W,HQ.xR @ σY{/@+?28;w.(Vd u?%r߳1_F\wS>n'eƇxj_*ZRהRE$yP=FOxlooCcS(|3;;υBx<~}pppzzzfOv$FFFnx\.e23g1?MOOOaehqq1q֭Sc`` e}Sk IENDB`cmst-cmst-2018.01.06/misc/000077500000000000000000000000001322401607200147535ustar00rootroot00000000000000cmst-cmst-2018.01.06/misc/appdata/000077500000000000000000000000001322401607200163655ustar00rootroot00000000000000cmst-cmst-2018.01.06/misc/appdata/org.cmst.cmst.appdata.xml000066400000000000000000000045551322401607200232320ustar00rootroot00000000000000 cmst.desktop CC0-1.0 MIT cmst

    A Qt based GUI front end for the connman connection manager with systemtray icon

    Qt GUI for Connman with system tray icon. The program provides graphical user interface to control the connman daemon. The connman daemon must be started as you normally would, this program just interfaces with that daemon. You can see what technologies and services connman has found, and for wifi services an agent is registered to assist in obtaining the information from you necessary to logon the wifi service.

    https://cloud.githubusercontent.com/assets/6935544/13554586/d6b3febe-e379-11e5-92d1-b66c9918c5ff.png https://cloud.githubusercontent.com/assets/6935544/6433032/c90476f6-c032-11e4-9f07-897a075ddc25.png https://cloud.githubusercontent.com/assets/6935544/6433031/c901205a-c032-11e4-9caf-af1d2176d9fc.png https://cloud.githubusercontent.com/assets/6935544/10594662/5a4e4a9e-769d-11e5-87b7-a6238acd3983.png https://github.com/andrew-bibb/cmst Andrew Bibb@email_address_hidden HiDpiIcon ModernToolkit Notifications audio music player tag library Andrew J. Bibb https://github.com/andrew-bibb/cmst https://github.com/andrew-bibb/cmst/wiki/ https://github.com/andrew-bibb/cmst/issues https://github.com/andrew-bibb/cmst/issues/73 cmst-cmst-2018.01.06/misc/desktop/000077500000000000000000000000001322401607200164245ustar00rootroot00000000000000cmst-cmst-2018.01.06/misc/desktop/cmst-autostart.desktop000066400000000000000000000005771322401607200230220ustar00rootroot00000000000000[Desktop Entry] Type=Application Version=1.0 Name=Connman UI Setup GenericName=Network Configuration Comment=QT GUI frontend for connman Categories=Settings;System;Qt;Network; Icon=cmst Exec=cmst -w5 Terminal=false StartupNotify=false X-GNOME-Autostart-enabled=true Keywords=Network;Wireless;Wi-Fi;Wifi;IP;LAN;Proxy;WAN;Broadband;Bluetooth;vpn;DNS; Name[de]=Netzwerk-Konfiguration cmst-cmst-2018.01.06/misc/desktop/cmst.desktop000066400000000000000000000005731322401607200207720ustar00rootroot00000000000000[Desktop Entry] Type=Application Version=1.0 Name=Connman UI Setup GenericName=Network Configuration Comment=QT GUI frontend for connman Categories=Settings;System;Qt;Network; Icon=cmst Terminal=false Exec=cmst StartupNotify=false X-GNOME-Autostart-enabled=true Keywords=Network;Wireless;Wi-Fi;Wifi;IP;LAN;Proxy;WAN;Broadband;Bluetooth;vpn;DNS; Name[de]=Netzwerk-Konfiguration cmst-cmst-2018.01.06/misc/manpage/000077500000000000000000000000001322401607200163635ustar00rootroot00000000000000cmst-cmst-2018.01.06/misc/manpage/cmst.1000066400000000000000000000214421322401607200174160ustar00rootroot00000000000000.TH CMST 1 "20 October 2017" "Version: 2017.10.20" .SH NAME CMST - Connman System Tray .SH SYNOPSIS Usage: cmst [options] .SH DESCRIPTION A QT5 based GUI front end for the Connman network daemon .SH OPTIONS .TP \fB-b, --bypass-restore-state\fP If restore state is specified in the settings file this take precedence over that setting and not restore the state when starting. .TP \fB-B, --bypass-start-options\fP Ignore completely any start options specified in the settings file. .TP \fB-c, --disable-counters [Experimental] \fP Disable the counters. May be used to minimize load on your system. .TP \fB-d, --disable-tray-icon\fP Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. .TP \fB-h, --help\fP Displays this help. .TP \fB-i, --icon-theme \fP Use a specific icon theme from your system. The Icon Theme name is optional and if specified CMST will try to use icons from that theme. If no name is provided and if a system wide icon theme is defined (via your DE) it will be used. If the icon theme cannot be found CMST will fallback to using internal built in icons. .TP \fB-l, --log-input-request\fP Log the Connman inputRequest for debugging purposes. .TP \fB-m, --minimized\fP Start the GUI minimized in the system tray. .TP \fB-M, --disable-minimize Disable the minimize button. Use when you want the window manager to have sole control in minimizing the interface. .TP \fB-n, --disable-vpn\fP Disable VPN support. This will disable (grey out) the VPN tab and the VPN editor button. More importantly it will also bypass setting up a DBUS connection to connman-vpn. If Connman is compiled without VPN support this option should be supplied. .TP \fB-v, --version\fP Displays version information. .TP \fB-w, --wait-time \fP Specify the wait time in seconds before starting the system tray icon (default is 0 seconds). If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there. .TP \fB--counter-update-kb [Experimental]\fP Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB). Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented. .TP \fB--counter-update-rate [Experimental]\fP Specify the frequency in seconds between counter updates (default is 10 seconds). .TP \fB--fake-transparency \fP On some systems the system tray icon background, which is transparent, will display as white or black. This seems to be an issue between QT, system tray implementations, compositing, and perhaps certain graphics cards. To work around it we've implemented a fake transparency for tray icons. To use it specify the system tray background color with this option. If the background color is provided CMST will convert the tray icon image to have the specified background color. Color is a hex number in the format: RRGGBB. .TP \fB--use-xfce\fP Use code specific for XFCE. As of 2014.11.24 there seems to be a problem with QT5.3 and the XFCE system tray. There is code in the program to try and work around this issue. If the bug gets fixed in QT5.4 (or later) this option will remain so that user start up scripts and commands do not break, but it will be a no operation place holder. .TP \fB--use-mate\fP Use code specific for MATE. As of 2014.11.24 there seems to be a problem with QT5.3 and the XFCE system tray. There is code in the program to try and work around this issue. If the bug gets fixed in QT5.4 (or later) this option will remain so that user start up scripts and commands do not break, but it will be a no operation place holder. .SH COMMAND LINE STABILITY Command line options marked .I [Experimental] refer to some option in Connman that is currently flagged experimental. These options should not be assumed to be fixed and could change at any time. Other command line options may be assumed to be fixed and should be safe to use in startup scripts. .SH GUI INFO The GUI contains one main dialog with separate tab pages. Program help is mainly provided through a "What's This" interface. The "What's This" button in the lower left corner will allow you to enter "What's This" mode, click the button and then click the GUI feature, or control that you are interested in. A right mouse click on a GUI feature or control will also enter "What's This" mode. .TP .I Status Tab The status tab displays information about the global properties, found technologies, and services. Checkbox at the top right will allow you to put everything in "offline" mode. To toggle a technology on or off click the entry under the Powered column .TP .I Details Tab The details tab will display detailed setup and connection information about a service. Select the service you wish to investigate in the combo box at the top. .TP .I Wireless Tab The Wireless tab will display information, connect, disconnect, and edit certain properties of wireless services. .TP .I VPN Tab The VNP tab will display information, connect and disconnect already provisioned VPN services. .TP .I Counters Tab The Counters tab will display information about the Connect time, the Transmit (TX) and Receiving (RX) counters for the service currently in the "online" state. The counters are set to fairly course intervals to minimize system usage. Currently these interval settings are hard coded into the program. .TP .I Preferences Tab The preferences tab will allow you to change some aspects of the GUI. .SH CONFIGURATION For typical networks and access points, even hidden ones, Connman will find and automatically configure the network for you. If Connman needs information, for instance a passphrase, CMST registers an agent and this agent will prompt you for the needed information. For most cases this "just works", however there are options for fine tuning the automatic configuration or creating provisioning files. .TP \fBProfile Editor\fP There are a variety of connection settings that may be used to override the automatic settings. An editor is provided to access these settings via the .B Configuration button in the lower right corner of the .I Details tab. One common use is to define a static IP address for the connection. Hidden or provisioned (see below) services cannot be edited. .TP \fB802.1x Encrypted Networks (Eduroam and similar)\fP Certain types encrypted networks require a config (provisioning) file to be created before you first connect. As of 2014.10.30 CMST has a provisioning editor built in, but it is considered an advanced control and by default it is hidden. To enable the control check the .B Advanced Controls box on the .I Provisioning tab. The button to open the editor will appear in the lower left corner of the dialog. With this editor you may create, open, edit, delete and save config files to /var/lib/connman. The menu at the top may be used to enter some information automatically, and many of the input fields are validated as you enter text into them. There are also predefined template files that may be used to seed the editing area. All of this can be bypassed if you wish and you may cut and paste or type into the editor directly. .TP \fBCreating and Editing VPN Connections\fP As of 2016.01.26 CMST has a VPN provisioning editor built in, but it is considered an advanced control and by default it is hidden. To enable the control check the .B Advanced Controls box on the .I Provisioning tab. The button to open the editor will appear in the lower left corner of the dialog. With this editor you may create, open, edit, delete and save config files to /var/lib/connman-vpn. The menu at the top may be used to enter some information automatically, and many of the input fields are validated as you enter text into them. The first item under each menu heading (Provider xxx) will start a junior wizard to walk you through entering all the mandatory information for each connection type. For OpenVPN the second menu item (Import Configuration) will import an OpenVPN .opvn file. The import will extract and save keys and certificates and will place the proper provisioning entries into the editor window. .SH BUGS For the tray icon to display is it required that the system tray be compliant with the Freedesktop.org systemtray specification. The tray icon is known to not work in the DWM system tray which appears to be a noncompliant tray. .SH Author Andrew J. Bibb. Project web page: https://github.com/andrew-bibb/cmst cmst-cmst-2018.01.06/stylesheets/000077500000000000000000000000001322401607200163745ustar00rootroot00000000000000cmst-cmst-2018.01.06/stylesheets/airplane.qss000066400000000000000000000000431322401607200207140ustar00rootroot00000000000000QToolButton { border: none; } cmst-cmst-2018.01.06/stylesheets/tabwidget.qss000066400000000000000000000001321322401607200210720ustar00rootroot00000000000000QTabBar::tab:disabled { width: 0; height: 0; margin: 0; padding: 0; border: none; } cmst-cmst-2018.01.06/stylesheets/vpn_connecting.qss000066400000000000000000000003011322401607200221300ustar00rootroot00000000000000QProgressBar{ margin-top: 6px; margin-right: 5px; margin-bottom: 6px; margin-left: 5px; border-radius: 5px; text-align: center; } QProgressBar::chunk { margin: 0.5px; width: 2px; } cmst-cmst-2018.01.06/text/000077500000000000000000000000001322401607200150045ustar00rootroot00000000000000cmst-cmst-2018.01.06/text/LICENSE000066400000000000000000000021011322401607200160030ustar00rootroot00000000000000Copyright (C) 2013-2015 by: Andrew J. Bibb Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cmst-cmst-2018.01.06/text/changelog.txt000066400000000000000000000272771322401607200175130ustar00rootroot00000000000000
    Connman System Tray (CMST)
    Change Log
    2018.01.06
    • Counters disabled by default, changed command line option -c to enable.
    • Disabled tabs are now hidden from view.
    • Do not change the visible service in the details tab if a service property changes and the service still exists.
    • Properties editor fixed to allow an empty gateway field in IPv4 and IPv6 connections (issue #148a)
    • Revise and enhance the properties editor dialog.
    • In VPN editor OpenVPN.AskPass changed from yes/no to file selector.
    • Allow move before/after on connected VPN services (issue #167).
    • Offline mode pixmap label now a pushbutton.
    • Offline mode engaged now shown as airplane, disengaged shown as radio.
    2017.09.1
    • Removed padding hack (issue #166) from id buttons.
    • Allow configuration of VPN services from the Details tab.
    • Allow CMST to close from window decoration if not running in system tray (issue #169).
    • Fix appdata.xml install location (issue #176).
    • Fixed No Reply popup starting VPN from system tray menu (issue #175).
    • Technologies and Services splitter state retained (issue #173).
    • Fixed segfault with ipv4 and ipv6 fields in VPN details.
    2017.03.18
    • Added Keywords to .desktop files (PR from klausenbusk).
    • Fixed missing send destination in dbus policy file (PR from Klausenbusk).
    • Fixed segfault where system tray icon could be used uninitialized.
    • Disable vpn tab and vpn icon menu if we cannot connect to the connman-vpn daemon (issue #155).
    • Notifications use system theme icons if available (issue #157).
    • New local icon for wifi tab (wifi_tab_state_not_ready) used to address issue #157.
    • Modify cmst.pro for Fedora build (issue #160 and applied submitted patch).
    2016.10.02
    • New commandline option -n (--disable-vpn) to disable VPN support (issue #144).
    • Fixed showing error dialog when connect is selected from the tray icon (issue #143).
    • Provisioning editor and properties editor nameserver and timeserver fields will now accept domain names in addition to IPv4 and IPv6 addresses (issue #146).
    • Added wifi rescan button to Wifi tab (issue #151).
    • Wifi rescan controls disabled during scans and if there is no powered Wifi technology found.
    2016.04.03
    • Removed unnecessary calls to managerReacan from servicePropertyChanged slot.
    • Added nicknames for display to wired and hidden wifi connections.
    • Install application icons in all sizes and scalable.
    • Improvements to internal layouts.
    • Added appdata xml file.
    • Added ability to tether a technology.
    • Can reposition tabs in the main dialog.
    • Revise move before/after to only be active for and show services which can actually be moved.
    • Added three templates (EAP) to provisioning editor.
    2016.01.26
    • Added a VPN tab to the main controlbox.
    • Can connect and disconnect already provisioned VPN services from controlbox.
    • Check for screen size at startup and adjust the initial size to fit if working on a small screen.
    • SignalBar class removed and replaced with QProgressBar styled using QStyleSheets.
    • VPN Editor available to help create new VPN connections.
    • OpenVPN files in .opvn format can be imported and used to provision a VPN service.
    2015.12.03
    • CMST icon by Progandy was reworked and made cleaner by Hagabaka.
    • Added feature to run an external program automatically after a connect. The Advanced Controls checkbox must be checked to access this.
    • Expanded functionality of system tray icon menu to toggle power for technologies and to connect or disconnect wifi services.
    • System tray menu can be torn off and live in its own window on the desktop.
    • Internal icons can be colorized (color selector control on Preferences Tab).
    • Reworked internals to store text returned by Connman as is and only translate for display.
    • Fixed issue #118 (tray icon not visible in Plasma 5)
    • Fixed issue #119 (not starting when XDG_CURRENT_DESKTOP=kde is set and not actually running KDE).
    2015.10.03
    • Browser selections in Agent dialog improved and added xdg-open option (by Yaohan Chen).
    • -i (--icon-theme) command line option will now accept a theme name.
    • Theme icons not part of the standard Freedesktop.org icon naming specification (mainly wifi signal strengths) will be used if available.
    • Counter update rate in preferences upper limit changed from 600 seconds to 86400 seconds.
    • Minimize to tray when ESC is pressed (by kriesoff).
    • Restoring window size and geometry is now independent from the other settings.
    • Added -b command line option to bypass restoring window state if that option is set in Preferences.
    • Added -B command line option to bypass all startup options set in Preferences.
    • New CMST icon (by Progandy).
    2015.03.01
    • Translation to Chinese by Jianfeng Zhang.
    • Option to create a entry in the users autostart directory (coded by Lester Bico).
    • Added --use-mate command line option to try and work around system tray icon oddities.
    • Start options formally only available from the command line may now be set in preferences.
    • Added --fake-transparency command line option to try and work around system trays that display transparent backgrounds as opaque (generally white).
    2014.12.14
    • If a Wifi service falls into the failure state provide an option to try and automatically reconnect.
    • Removed -r (--wife-scan-rate) command line option and all code internal for having CMST to WiFi scans. This was conflicting with Connman auto scans.
    • Available services now shown with right click on system tray icon.
    2014.12.05
    • Adding translations (Russian Complete).
    • Fixed response time for Agent dialog when it is needed.
    2014.11.24
    • Added CMST icon.
    • Added --use-xfce command line option. Code for XFCE that breaks KDE now must be called with this option.
    • Fixed integer overflow for counters.
    2014.11.18
    • Removed incorrect validator from Properties Editor domains field.
    • Provisioning Editor to create and edit Connman service configuration files.
    • Systemtray icon will show "online" if there is exactly one connection showing in the ready state and no connections showing the online state.
    • Systemtray icon added for a connection in the "failure" state.
    • Fixed and cleaned up behavior of notifications and message boxes for various error conditions.
    2014.10.15
    • Connect, Disconnect, and Remove buttons in the Wifi tab are disabled if no Wifi services are available.
    • If only one WiFi service exists it is no longer necessary to select it first before pressing the Connect button.
    • If only one WiFi service is connected it is no longer necessary to select it first before pressing the Disconnect button.
    • Single instance code now checked using a local socket, not shared memory.
    • If an instance of CMST is started while one is running the running copy will be raised, and a message about a second instance trying to start will be printed to stderr.
    • Wifi signal strength bar and techonlogy buttons now have frames around them so that they do not fill an entire table cell
    • Autoconnect property can be set or unset from the property editor.
    • Fixed the IPv6 validator in the properties editor.
    2014.08.23
    • Removed tooltips for obvious controls. Tooltips now are only available for dynamic GUI elements (unless the user disables them in preferences).
    • Detailed service configuration dialog.
    • Added scrollbars and additional information to the service details tab.
    2014.07.19
    • UI updated to allow notifications from the system tray icon or from a notification server.
    • Notifications can be sent to a notification server if present.
    • Accomodate P2P technologies (display only)
    • Scan WiFi button moved to Technologies box and renamed "Rescan". No change in function, just a more accurate representation of what the button does.
    • Connections in the "Ready" state show ready with an appropriate icon in the system tray instead of showing disconnected.
    2014.07.01
    • Added "scan wifi" button to force a rescan of wifi sevices.
    • Added a checkbox to preferences to reset the counters at startup and when a service changes.
    • Finished the internal rework to catch and process dbus signals.
    2014.06.22
    • Check to make sure only a single instance of the program can be run.
    • Shipped with a .desktop file and icon.
    • Internal changes to catching dbus signals.
    2014.06.14
    • Selecting "Maximize" from the tray icon will show the dialog "normal" instead of "maximized".
    • Enabled display of size grip in corner of dialog
    • Added option to show fewer details in the Services box on page 1
    • Fixed wordwrap in the Counters tab
    • Added an entry for the Counters tab in the Help tab, and added scroll bars to the help field.
    • GUI settings can be saved and restored between sessions.
    • Improved response when toggling the power state of a technology.
    • Added Preferences tab, tooltips are now disabled by default, added checkbox in Preferences to enable them.
    • Forced small delay in starting the system tray icon.
    • Limit the amount the dialog can shrink.
    • Replaced Nuvola icons with AwOken icons.
    • A manpage is now provided and installed.
    • The system tray icon can optionally show notify messages in popups.
    2014.05.10
    • Left mouse click in system tray will toggle the interface up and down (coded by: Brett Dutro)
    • Option to use system icon theme if available
    • Added MoveBefore and MoveAfter buttons to services on first page
    2014.03.29 - Revised per input from Arch Linux Forums
    • Added command line option to wait a specified time to create the system tray
    2014.03.13 - Revised per input from Arch Linux Forums
    • Command line options to show help, version, disable the system tray and start the program minimized.
    • Added SSID field to the agent request information dialog.
    • Added check to make sure a system tray exists before we try to use it.
    • Added option to log the input request from the connman daemon.
    2014.01.18 - Revised
    • Improved error dialog in Agent and ask for retry on bad password.
    2014.01.14 - Revised
    • Fixed up tooltip popup on system tray icon
    2014.01.11 - Posted to Arch Linux Forum
    • Added the counters and the Counters tab
    • Fixed a SEGFAULT when connecting a Wifi service after the service order had changed.
    • Added message dialogs in the logerrors function to show errors to the user (errors are still logged to the journal).
    • Fixed SEGFAULTS if the program fails to find or connect to DBUS
    • Added a button on the WiFi page to remove a Wifi service
    2014.01.05 - Initial Version
    • View and set global connection properties
    • List known technologies and services
    • View detailed information about services
    • Basic WiFi service management
    cmst-cmst-2018.01.06/text/eap-peap.txt000066400000000000000000000002131322401607200172310ustar00rootroot00000000000000[service_peap] Type = wifi_OR_ethernet Name = peap_ssid EAP = peap CACertFile = /path/to/ca.pem Phase2 = MSCHAPV2 Identity = yourusername cmst-cmst-2018.01.06/text/eap-tls.txt000066400000000000000000000003441322401607200171130ustar00rootroot00000000000000[service_tls] Type = wifi_OR_ethernet Name = tls_ssid EAP = tls CACertFile = /path/to/ca.pem ClientCertFile = /path/to/client.pem PrivateKeyFile = /path/to/client.fsid.pem PrivateKeyPassphraseType = fsid Identity = yourusername cmst-cmst-2018.01.06/text/eap-ttls.txt000066400000000000000000000002121322401607200172710ustar00rootroot00000000000000[service_ttls] Type = wifi_OR_ethernet Name = ttls_ssid EAP = ttls CACertFile = /path/to/ca.pem Phase2 = MSCHAPV2 Identity = yourusername cmst-cmst-2018.01.06/text/eduroam_long.txt000066400000000000000000000002651322401607200202230ustar00rootroot00000000000000[service_eduroam] Type=wifi_OR_ethernet Name=eduroam EAP=peap CACertFile=/etc/ssl/certs/ca-certificates.crt Phase2=MSCHAPV2 Identity=yourusername@domain.edu Passphrase=yourpassword cmst-cmst-2018.01.06/text/eduroam_short.txt000066400000000000000000000001261322401607200204170ustar00rootroot00000000000000[service_eduroam] Type = wifi_OR_ethernet Name = eduroam EAP = peap Phase2 = MSCHAPV2 cmst-cmst-2018.01.06/text/icon_def.txt000066400000000000000000000167711322401607200173270ustar00rootroot00000000000000# cmst.icon # # This icon definition file, located in the user's home directory, can be # edited. The purpose of this file is to facilitate the use of theme icons # that are not part of the official Freedesktop.org naming specification. # # QT provides very good icon selection with a fallback mechanism. In order # to use it one must know the name of the theme icon you want. This is # not a problem with the official named icons, but is if you want to support # any icon theme since the name of any icon not part of the official # Freedesktop.org specification is up to the theme author. # # This file basically describes the pictures to use for each icon. Format # of the file is as follows: # # Comments are the # sign. Any text on a line after the first # is treated # as a comment. # # Each icon definition starts with the [icon] token and is terminated by a # blank line. Inside each icon block are various sections, each contained # on one line. Each section contains a key and value pair separated by an # equal (=) sign. # # icon_name = is the descriptive name of what the icon is to show. This # entry is read and used by the program and should not be edited. # # resource = is the location of the default picture which is hard coded # into the program in a QResource file. This can be edited provided you # select another valid resource which must already exist. You cannot add # resources using this file. This key/value pair is mandatory. # # colorize = (no/yes, 0/1, or a color in the format RRGGBB) if yes or 1 # the internal icons will be colorized according to the value specified # from preferences. If a color number is provided the icon will be colorized # to the specified color. If no or 0 then the icon is not colorized. # Colorizing is only available for internal icons defined in the resource line. # # fdo_name = is the name of one of the official Freedesktop.org named icons. # This key/value pair is optional. # # theme_names = is a comma (,) separated list of theme icon names which # are not part of the Freedesktop.org specification. The list will be # searched in order looking for each icon name in the current theme. # This key/value pair is also optional. # # The text in a value field may contain the vertical delimiter (|) symbol. # If it does the text on each side should be a complete resource path or # theme icon name. Text to the left is the ON state of the icon, to the right # is the OFF state. This is used for icons which show a different picture # depending on state. Play/Pause in a media player would be a classic example. # # The text in a resource value field may also contain whitespace. If # it does the text on each side should be a complete resource path. Left # of the whitespace is the base picture in raw_art, to the right is the # overlay file to place over the raw_art icon. This is only for # internal icons from the resource file. # # If this file becomes corrupted by editing or by other means is can be # regenerated simply by deleting it, then stopping and starting CMST. # # Icon selections at runtime are as follows: # If the -i (--icon-theme) command line switch or preferences setting is not # used then the resource name specified here is used if found, if not found # the hard coded internal icon will be used. # # If the -i (--icon-theme) command line switch or preferences settings is used # then icons are searched in the following order until one is found: # theme_names from left to right (match will only occur if one of the names # can be found in the current or specified theme.) # fdo_name # resource location as specified in this file # hard coded internal icon # # # # # interface icons [icon] icon_name = state_error resource = :/icons/images/raw_art/application-exit1.png colorize = no fdo_name = network_error [icon] icon_name = state_ready resource = :/icons/images/raw_art/network-idle.png colorize = yes fdo_name = network-idle theme_names = network-idle, network-connect [icon] icon_name = state_online resource = :/icons/images/raw_art/network-transmit-receive.png colorize = yes fdo_name = network-transmit-receive theme_names = network-transmit-receive, network-connect [icon] icon_name = state_not_ready resource = :/icons/images/raw_art/network-offline.png :/icons/images/overlay/overlay-warningnet9.png colorize = yes fdo_name = network-offline theme_names = network-offline, network-disconnect [icon] # This icon is only used in the wifi tab, not elsewhere. Default is to same as state_not_ready # If you would prefer not to see any icon in the connected column uncomment the resource blank.png # line and remove the as shipped resource, colorize, fdo_name, and theme_names lines icon_name = wifi_tab_state_not_ready #resource = :/icons/images/raw_art/blank.png resource = :/icons/images/raw_art/network-offline.png :/icons/images/overlay/overlay-warningnet9.png colorize = yes fdo_name = network-offline theme_names = network-offline, network-disconnect [icon] icon_name = state_vpn_connected resource = :/icons/images/raw_art/stock_lock.png colorize = yes theme-names = network-vpn.png, emblem-locked.png [icon] icon_name = favorite resource = :/icons/images/raw_art/nm-signal-100.png colorize = yes fdo_name = emblem-favorite [icon] icon_name = offline_mode_engaged resource = :/icons/images/interface/basic-plane.png colorize = yes [icon] icon_name = offline_mode_disengaged resource = :/icons/images/interface/radio.png colorize = yes [icon] icon_name = whats_this resource = :/icons/images/raw_art/info2.png colorize = 1361D9 fdo_name = system-help # # systemtray icons [icon] icon_name = connection_failure resource = :/icons/images/raw_art/application-exit1.png colorize = no fdo_name = network-error [icon] icon_name = connection_ready resource = :/icons/images/raw_art/network-idle.png colorize = yes fdo_name = network-idle theme_names = network-idle, network-connect [icon] icon_name = connection_not_ready resource = :/icons/images/raw_art/network-offline.png :/icons/images/overlay/overlay-warningnet9.png colorize = yes fdo_name = network-offline theme_names = network-offline, network-disconnect [icon] icon_name = connection_wired resource = :/icons/images/raw_art/network-transmit-receive.png colorize = yes fdo_name = network-wired [icon] icon_name = connection_wireless resource = :/icons/images/raw_art/nm-signal-100.png colorize = yes fdo_name = network-wireless [icon] icon_name = connection_wifi_000 resource = :/icons/images/raw_art/nm-signal-00.png colorize = yes theme_names = network-wireless-signal-none-symbolic, network-wireless-connected-00 [icon] icon_name = connection_wifi_025 resource = :/icons/images/raw_art/nm-signal-25.png colorize = yes theme_names = network-wireless-signal-weak-symbolic, network-wireless-connected-25 [icon] icon_name = connection_wifi_050 resource = :/icons/images/raw_art/nm-signal-50.png colorize = yes theme_names = network-wireless-signal-ok-symbolic, network-wireless-connected-50 [icon] icon_name = connection_wifi_075 resource = :/icons/images/raw_art/nm-signal-75.png colorize = yes theme_names = network-wireless-signal-good-symbolic, network-wireless-connected-75 [icon] icon_name = connection_wifi_100 resource = :/icons/images/raw_art/nm-signal-100.png colorize = yes theme_names = network-wireless-signal-excellent-symbolic, network-wireless-connected-100 [icon] icon_name = connection_vpn resource = :/icons/images/raw_art/stock_lock.png colorize = yes theme-names = network-vpn.png, emblem-locked.png [icon] icon_name = connection_vpn_acquiring resource = :/icons/images/raw_art/network-vpn-acquiring.png colorize = yes cmst-cmst-2018.01.06/text/license.txt000066400000000000000000000023151322401607200171700ustar00rootroot00000000000000
    Connman System Tray (CMST)
    Copyright (C) 2013-2015
    by
    Andrew J. Bibb

    License: MIT (Expat)

    Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. cmst-cmst-2018.01.06/translations/000077500000000000000000000000001322401607200165415ustar00rootroot00000000000000cmst-cmst-2018.01.06/translations/cmst_de_DE.qm000066400000000000000000000523311322401607200210720ustar00rootroot00000000000000sAhwA}nB1}B_#W"H5H5-/e e0;<%?VE@BN5+H5+f(6++(jDG`G'G*cNx$Nx$b>;xA~B#L 6 =]D.$99 4:4-7y wٔ:44"5WD$?4o.!XB&r ]+-J#3L,ML1L+L1]w^-w_1{L,9 II##X%Y#7*0D48%C諭+Z50(78[|$a=U30 +Y8[|?e0EA1&7Q&,Q&,"yA<^9EHXoe'~ A. 6L <* Mg) cr4| d+ , ޢ7 ;P :; S0 OS- dN$ mE '^ ~& ~ ~! ~( )"b -" 7N D5 P c4= j5Q j5."  I ,' 2D ŚI ŴI-L >/ ^C a";_ c~ h> h>1 pS! }OS! Z8?H ) F )0l Ol )^ 6 ׅ_ T^L VR@o V`@ i?2 i?2/ n $\ . h. nI,;IELN8d)0dB$H Z I,F~Jh1Jn2NIUT9"|4-/6iNX&Abbrechen&CancelAgent&&Verstecke Passwort&Hide PassphraseAgent&Identitt &IdentityAgent &Name&NameAgent&Passwort &PassphraseAgent &SSID&SSIDAgent&Benutzername &UsernameAgent&WPS Pin&WPS PinAgent......Agent<html><head/><body><p>Aktiviere diese Box um die Passwortbuchsteben zu verstecken.</p></body></html>Z

    Check this box to obscure the password characters.

    Agent2<html><head/><body><p>Connman fordert einen Login ber einen Webbrowser an. Diese Box zeigt die URL, welche die Loginseite enthlt, an.</p></body></html>

    Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.

    Agent<html><head/><body><p>Fahre mit dem Verbindungsprozess fort.</p></body></html>H

    Continue the connection process.

    Agent~<html><head/><body><p>Gebe einen WPS-Pin ein.</p></body></html>8

    Enter a WPS pin.

    Agent<html><head/><body><p>Wenn ein altes Passwort vorhanden ist, wird es hier als Referenz angezeigt.</p></body></html>n

    If an old passphrase is available it will be shown here for reference.

    Agent<html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html>c

    Type the name of the hidden network you wish to connect to.

    Agent<html><head/><body><p>Gebe hier dein Passwort ein.</p></body></html>A

    Type the passphrase here.

    Agent<html><head/><body><p>Gebe hier deine Identitt fr das Extensible Authentication Protocol an</p></body></html>e

    Type your Identity for the Extensible Authentication Protocol

    Agent:<html><head/><body><p>Benutze diesen Knopf um den ausgewhlten Browser zu starten. Der Browser wird die URL aus der Login-URL-Box anzeigen.</p></body></html>

    Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.

    Agentn<html><head/><body><p>WISPr Passwort.</p></body></html>7

    WISPr password.

    Agentv<html><head/><body><p>WISPr Benutzername.</p></body></html>7

    WISPr username.

    Agentf<html><head/><body><p>Was ist das</p></body></html>3

    What's This

    Agent<html><head/><body><p>Wenn aktiviert, wird die WPS-Push-Button Authentifizierung genutzt. </p></body></html>Z

    When checked use WPS push button authentication.

    AgentAgent-Eingabe Agent InputAgent6Browser-Anmeldung gewnschtBrowser Login RequestedAgentPExtensible Authentication Protocol (EAP)(Extensible Authentication Protocol (EAP)Agent(Verstecktes NetzwerkHidden NetworkAgentStarte &BrowserLaunch &BrowserAgentLogin URL: Login URL:AgentO&KO&KAgentPasswort PassphraseAgentPasswor&t Passwor&dAgent,Service Set identifierService Set IdentifierAgentLBenutze Push-&Button AuthentifizierungUse Push &Button AuthenticationAgent4WiFi Protected Setup (WPS)WiFi Protected Setup (WPS)AgentdWireless Internet Service Provider roaming (WISPr)2Wireless Internet Service Provider roaming (WISPr)AgentInformation Information AgentDialog8Agent-Anfrage fehlgeschlagenAgent Request Failed ConnmanAgentConnman Fehler Connman Error ConnmanAgentConnman gab folgenden Fehler zurck: <b><center>%1</b><br>Mchtest du es erneut versuchen?RConnman returned the following error:
    %1
    Would you like to retry? ConnmanAgentDie Agent-Anfrage ist fehlgeschlagen bevor eine Antwort zurck kam.5The agent request failed before a reply was returned. ConnmanAgent%L1 Bytes %L1 BytesConnmanCounter %L1 GB%L1 GBConnmanCounter %L1 KB%L1 KBConnmanCounter %L1 MB%L1 MBConnmanCounter%Ln Paket%Ln Pakete %Ln Packet(s)ConnmanCounter %n Tag%n Tage %n Day(s)ConnmanCounter%n Stunde%n Stunden %n Hour(s)ConnmanCounter%n Minute%n Minuten %n Minute(s)ConnmanCounter%n Sekunde%n Sekunden %n Second(s)ConnmanCounter<b>bertragen:</b><br>TX Total: %1 (%2), TX Fehler: %3, TX Dropped: %4FTransmit:
    TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4ConnmanCounterF<br><br><b>Verbindungszeit:</b><br>

    Connect Time:
    ConnmanCounter<br><br><b>Empfangen:</b><br>RX Total: %1 (%2), RX Fehler: %3, RX Dropped: %4N

    Received:
    RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4ConnmanCounter...... ControlBoxf<html><head/><body><p>Was ist das</p></body></html>3

    What's This

     ControlBoxAbbrechenCancel ControlBoxDeaktiviertDisabled ControlBox&BeendenE&xit ControlBoxAktiviertEnabled ControlBoxNameName ControlBoxAusOff ControlBox.Provisionierungs-EditorProvisioning Editor ControlBoxSicherheitSecurity ControlBoxTypType ControlBox&Domnen&DomainsPeditor&Allgemein&GeneralPeditor&Namensserver &NameserversPeditor &Proxy&ProxyPeditor&Zeitserver &TImeserversPeditorf<html><head/><body><p>Was ist das</p></body></html>3

    What's This

    PeditorAdresseAddressPeditorAutoAutoPeditor*Automatisch verbinden AutoConnectPeditorAbbrechenCancelPeditorDHCPDHCPPeditor DirektDirectPeditorDeaktiviertDisabledPeditorAktiviertEnabledPeditorAusgeschlossenExcludesPeditorGatewayGatewayPeditor IPv&4IPv&4Peditor IPv&6IPv&6PeditorManuellManualPeditorMethodeMethodPeditorNetzmaskeNetmaskPeditorOKOKPeditorAusOffPeditorBevorzugt PreferredPeditorPrefix-Lnge Prefix LengthPeditorPrivatsphrePrivacyPeditor(Eigenschaften-EditorProperty EditorPeditor&&Alles zurcksetzen Reset &AllPeditor&Sei&te zurcksetzen Reset Pa&gePeditor ServerServersPeditorURLURLPeditor &Seite aufrumen &Clear Page Provisioning&Lschen&Delete Provisioning&ffnen&Open Provisioning&Speichern&Save Provisioningf<html><head/><body><p>Was ist das</p></body></html>3

    What's This

     ProvisioningCACertDatei CACertFile ProvisioningClientCertDateiClientCertFile ProvisioningBeschreibung Description Provisioning DomneDomain Provisioning&BeendenE&xit ProvisioningEAPEAP ProvisioningEduroam (lang)Eduroam (long) ProvisioningEduroam (kurz)Eduroam (short) ProvisioningVerstecktHidden ProvisioningIPV4 DHCP IPV4 DHCP ProvisioningIPv4 Adresse IPv4 Address ProvisioningIPv4 AusIPv4 Off ProvisioningIPv6 Adresse IPv6 Address ProvisioningIPv6 Auto IPv6 Auto ProvisioningIPv6 AusIPv6 Off ProvisioningIPv6.Privacy IPv6.Privacy ProvisioningIdentittIdentity ProvisioningMACMAC ProvisioningNameName ProvisioningNamensserver Nameservers ProvisioningPasswort Passphrase Provisioning Phase2Phase2 ProvisioningPrivateKeyDateiPrivateKeyFile Provisioning$PrivateKeyPasswortPrivateKeyPassphrase Provisioning*PrivateKeyPasswortTypPrivateKeyPassphraseType Provisioning.Provisionierungs-EditorProvisioning Editor ProvisioningSSIDSSID ProvisioningSuchdomnen SearchDomains ProvisioningSicherheitSecurity ProvisioningZeitserver Timeservers ProvisioningTypType ProvisioningInformation InformationProvisioningEditorIPv4 Adresse IPv4 AddressProvisioningEditorIPv6 Adresse IPv6 AddressProvisioningEditor$IPv6.Privacy {6 ?} IPv6 PrivacyProvisioningEditorRegistrierung des roothelper Objektes auf dem System-Bus fehlgeschlagen.7Failed to register roothelper object on the system bus. RootHelperRegistrieren des Dienstes org.cmst.roothelper fehlgeschlagen - Eventuell luft bereits eine andere Instanz.WFailed to register service org.cmst.roothelper - there may be another instance running. RootHelperScrollbox Scrollbox ScrollBoxTextLabel TextLabel ScrollBox"Bereits verbundenAlready connectedTranslateStrings&Bereits deaktiviertAlready disabledTranslateStrings"Bereits aktiviertAlready enabledTranslateStrings"Existiert bereitsAlready existsTranslateStringsIn Bearbeitung In progressTranslateStrings&Ungltige ArgumenteInvalid argumentsTranslateStrings*Ungltige EigenschaftInvalid propertyTranslateStrings"Ungltiger DienstInvalid serviceTranslateStringsKein Carrier No carrierTranslateStringsNicht verbunden Not connectedTranslateStringsNicht gefunden Not foundTranslateStrings&Nicht implementiertNot implementedTranslateStrings"Nicht registriertNot registeredTranslateStrings"Nicht untersttzt Not supportedTranslateStringsNicht eindeutig Not uniqueTranslateStrings$Aktion abgebrochenOperation abortedTranslateStrings2Aktion ZeitberschreitungOperation timeoutTranslateStrings"Passwort bentigtPassphrase requiredTranslateStrings$Zugriff verweigertPermission deniedTranslateStringsVerbindung associationTranslateStringsAutoautoTranslateStringsAuto"connman ethernet connection methodautoTranslateStringsAutoconnman ipv6 method stringautoTranslateStringsBluetooth bluetoothTranslateStringsCellularcellularTranslateStringscmstcmstTranslateStringsKonfiguration configurationTranslateStrings&connman system trayconnman system trayTranslateStrings DirektdirectTranslateStringsTrennen disconnectTranslateStringsEthernetethernetTranslateStringsFehlschlagfailureTranslateStrings GadgetgadgetTranslateStringsGPSgpsTranslateStringsInaktividleTranslateStringsieee8021x ieee8021xTranslateStringsManuellmanualTranslateStringsManuell"connman ethernet connection methodmanualTranslateStringsManuellconnman ipv4 method stringmanualTranslateStringsManuellconnman ipv6 method stringmanualTranslateStrings NichtsnoneTranslateStringsOfflineofflineTranslateStrings OnlineonlineTranslateStringsP2Pp2pTranslateStringsPSKpskTranslateStrings BereitreadyTranslateStrings SystemsystemTranslateStringsVPNvpnTranslateStringsWEPwepTranslateStringsWifiwifiTranslateStringsKabelgebundenwiredTranslateStringshEine andere Instanz von CMST luft gerade. Breche abNAnother running instance of CMST has been detected. This instance is abortingmain.cpp(Connman System-Tray.Connman System Tray.main.cpp"Deaktiviere das Tray-Icon. Wird eventuell bentigt, falls das System-Tray nicht kompatibel mit der Freedesktop.org-System-Tray Spezifikation ist.Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification.main.cppFalls Pseudotransparenz bentigt wird, kann hier die Hintergrundfarbe definiert werden (Format: 0xRRGGBB)bIf tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB)main.cppKBKBmain.cppxProtokolliere den connman inputRequest fr Debugging-Zwecke.4Log the connman inputRequest for debugging purposes.main.cpp RRGGBBRRGGBBmain.cppGebe die Wartezeit in Sekunden an, bevor das System-Tray-Icon angezeigt wird.FSpecify the wait time in seconds before starting the system tray icon.main.cppPStarte das GUI minimiert im System-Tray.+Start the GUI minimized in the system tray.main.cppDBenutze MATE DE spezifischen Code.Use MATE DE specific code.main.cpp>Benutze XFCE spezifischen Code.Use XFCE specific code.main.cpp[Experimentell] Datenzhler ausschalten. Kann eventuell die Last auf dem System minimieren.S[Experimental] Disable data counters. May be used to minimize load on your system.main.cpp[Experimentell] Der Zeitraum in Sekunden zwischen den Zhler-Aktualisierungen.?[Experimental] The interval in seconds between counter updates.main.cpp[Experimentell] Die Anzahl der kb die bertragen werden, bevor der Zhler aktualisiert wird.W[Experimental] The number of kb that have to be transmitted before the counter updates.main.cppSekundensecondsmain.cppcmst-cmst-2018.01.06/translations/cmst_de_DE.ts000066400000000000000000007210531322401607200211070ustar00rootroot00000000000000 Agent Agent Input Agent-Eingabe Passphrase Passwort <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Wenn ein altes Passwort vorhanden ist, wird es hier als Referenz angezeigt.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Gebe hier dein Passwort ein.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> <html><head/><body><p>Aktiviere diese Box um die Passwortbuchsteben zu verstecken.</p></body></html> &Hide Passphrase &Verstecke Passwort &Old Passphrase &Altes Passwort O&ld Passphrase &Passphrase &Passwort Hidden Network Verstecktes Netzwerk &Name &Name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> Service Set Identifier Service Set identifier &SSID &SSID Wireless Internet Service Provider roaming (WISPr) Wireless Internet Service Provider roaming (WISPr) &Username &Benutzername <html><head/><body><p>WISPr username.</p></body></html> <html><head/><body><p>WISPr Benutzername.</p></body></html> Passwor&d Passwor&t <html><head/><body><p>WISPr password.</p></body></html> <html><head/><body><p>WISPr Passwort.</p></body></html> Extensible Authentication Protocol (EAP) Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> <html><head/><body><p>Gebe hier deine Identität für das Extensible Authentication Protocol an</p></body></html> &Identity &Identität WiFi Protected Setup (WPS) WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> <html><head/><body><p>Wenn aktiviert, wird die WPS-Push-Button Authentifizierung genutzt. </p></body></html> Use Push &Button Authentication Benutze Push-&Button Authentifizierung &WPS Pin &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> <html><head/><body><p>Gebe einen WPS-Pin ein.</p></body></html> Browser Login Requested Browser-Anmeldung gewünscht Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> Login URL: Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Connman fordert einen Login über einen Webbrowser an. Diese Box zeigt die URL, welche die Loginseite enthält, an.</p></body></html> <html><head/><body><p>Use the Firefox browser.</p></body></html> <html><head/><body><p>Benutze den Firefox Browser.</p></body></html> &Firefox &Firefox <html><head/><body><p>Use the Opera browser.</p></body></html> <html><head/><body><p>Benutze den Opera browser.</p></body></html> &Opera &Opera <html><head/><body><p>Use the Luakit browser.</p></body></html> <html><head/><body><p>Benutze den Luakit browser.</p></body></html> &Luakit &Luakit <html><head/><body><p>Use the Lynx (console mode) browser.</p></body></html> <html><head/><body><p>Benutze den Lynx (Konsolen-Modus) browser.</p></body></html> Lyn&x Lyn&x <html><head/><body><p>Login using a browser that is not listed. Type the browser start command in the box below.</p></body></html> <html><head/><body><p>Login mit einem Browser welcher nicht gelistet ist. TGebe das Kommando zum starten des Browsers in der Textbox unterhalb ein.</p></body></html> Othe&r Andere&r <html><head/><body><p>Type the browser start command here.</p></body></html> <html><head/><body><p>Gebe hier das Kommando zum starten des Browsers an.</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> <html><head/><body><p>Benutze diesen Knopf um den ausgewählten Browser zu starten. Der Browser wird die URL aus der Login-URL-Box anzeigen.</p></body></html> Launch &Browser Starte &Browser <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Was ist das</p></body></html> ... ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Fahre mit dem Verbindungsprozess fort.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel &Abbrechen AgentDialog Information Information You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "lynx %2" Du hast den Browser %1 gewählt, aber es konnte kein Terminal-Programm gefunden werden um ihn zu öffnen. Aktuell kann %1 über folgende Terminals geöffnet werden: <b>roxterm</b> und <b>xterm</b>.<br><br>Um fortfahren zu können, musst du manuell ein Terminal öffnen und "lynx %2" eingeben ConnmanAgent Connman Error Connman Fehler Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Connman gab folgenden Fehler zurück: <b><center>%1</b><br>Möchtest du es erneut versuchen? Agent Request Failed Agent-Anfrage fehlgeschlagen The agent request failed before a reply was returned. Die Agent-Anfrage ist fehlgeschlagen bevor eine Antwort zurück kam. ConnmanCounter %L1 Bytes %L1 Bytes %L1 KB %L1 KB %L1 MB %L1 MB %L1 GB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 "Dropped" zur Verständlichkeit gelassen <b>Übertragen:</b><br>TX Total: %1 (%2), TX Fehler: %3, TX Dropped: %4 %Ln Packet(s) %Ln Paket %Ln Pakete <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 "Dropped" zur Verständlichkeit gelassen <br><br><b>Empfangen:</b><br>RX Total: %1 (%2), RX Fehler: %3, RX Dropped: %4 <br><br><b>Connect Time:</b><br> <br><br><b>Verbindungszeit:</b><br> %n Day(s) %n Tag %n Tage %n Hour(s) %n Stunde %n Stunden %n Minute(s) %n Minute %n Minuten %n Second(s) %n Sekunde %n Sekunden ConnmanVPNAgent Connman Error Connman Fehler Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Connman gab folgenden Fehler zurück: <b><center>%1</b><br>Möchtest du es erneut versuchen? Agent Request Failed Agent-Anfrage fehlgeschlagen The agent request failed before a reply was returned. Die Agent-Anfrage ist fehlgeschlagen bevor eine Antwort zurück kam. ControlBox Dialog &Status <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Technologies Name Name Type Typ Powered Connected Tethering <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services State Connection Move Before Move After <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less &Details Ser&vice <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration &Wireless <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> Favorite Security Sicherheit Signal Strength Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect Remove <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State &Counters <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Home Counter not available. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: &Preferences <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State Rescan Offline Mode IDPass Set ID and Password for tethered wifi <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> Disable Tray Icon <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> Start Minimized <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> Wait Time <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> Disable Counters <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific <html><head/><body><p>Default is no desktop specific code.</p></body></html> None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Domain Domäne Fake Transparency <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications Notifications <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon Server Status <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Was ist das</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor Provisionierungs-Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit &Beenden <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize Ma&ximize &Exit About %1 Service Details WiFi Connections VPN Connections About AwOken License %1 change log is not available. ChangeLog Cancel Abbrechen <b>Service:</b> %1 Unable to determine service No Services Selected You need to select a Wifi service before pressing the remove button. Offline Mode Engaged Offline Mode Disabled %1 (%2) Network Connection: %1 Network Services: No network services available Service Error: %1 Object Path: %1 VPN Engaged VPN Disengaged <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1Off%1%1 tethering Warning <b>Connection:</b> %1 <br><b>Service Details:</b><br> Service Type: %1<br> Service State: %1<br> Favorite: %1<br> Yes favorite No favorite External Configuration File: %1<br> Yes immutable No immutable Auto Connect: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP Address: %1<br> IP Netmask: %1<br> IP Gateway: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Prefix Length: <br> Prefix Length: %1<br> Privacy: %1<br> <br><b>Proxy</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Interface: %1<br> Device Address: %1<br> MTU: %1<br> <br><b>Wireless</b><br> Security: %1<br> Strength: %1<br> Roaming: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Engaged Disabled Deaktiviert Offline Mode %1On%1%1 powered %1Off%1%1 powered Yes connected No connected WiFi Technologies:<br> %1 Found, %2 Powered Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Ethernet Connection<br> icon_tool_tip Service: %1<br> Interface: %1 WiFi Connection<br> icon_tool_tip SSID: %1<br> Strength: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Connection is in the Failure State. icon_tool_tip Not Connected icon_tool_tip Error retrieving properties via Dbus Connection status is unknown Type: %1 <br>Powered On Off Aus Not Connected <br>Tethering Enabled Aktiviert Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. Could not find a connection to the system bus %1 - Critical Error Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Could not create an interface to connman on the system bus Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Error reading or parsing connman.Manager.GetProperties %1 - Warning There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Error reading or parsing connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Error reading or parsing connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 Colorize Icons Attempt %1 of 4 looking for notification server. %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. <p style='white-space:pre'><center><b>%1 Properties</b></center> Unable to find or connect to a Notification server. IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor Eigenschaften-Editor &General &Allgemein <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect Automatisch verbinden <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers &Namensserver <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &TImeservers &Zeitserver <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains &Domänen <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> IPv&4 IPv&4 Address Adresse Netmask Netzmaske Gateway Gateway DHCP DHCP Manual Manuell Off Aus Method Methode <html><head/><body><p>User configuration of IPv6 settings</p></body></html> IPv&6 IPv&6 Auto Auto Prefix Length Prefix-Länge Privacy Privatsphäre Disabled Deaktiviert Preferred Bevorzugt Enabled Aktiviert <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy &Proxy Direct Direkt <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> URL URL Servers Server <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes Ausgeschlossen <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Was ist das</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge Sei&te zurücksetzen <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All &Alles zurücksetzen <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel Abbrechen Provisioning Provisioning Editor Provisionierungs-Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open &Öffnen <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save &Speichern <html><head/><body><p>Delete a config file.</p></body></html> &Delete &Löschen <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page &Seite aufräumen <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Was ist das</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit &Beenden [global] Name Name Description Beschreibung [service_*] Type Typ MAC MAC Nameservers Namensserver Timeservers Zeitserver SearchDomains Suchdomänen Domain Domäne SSID SSID EAP EAP CACertFile CACertDatei ClientCertFile ClientCertDatei PrivateKeyFile PrivateKeyDatei PrivateKeyPassphrase PrivateKeyPasswort PrivateKeyPassphraseType PrivateKeyPasswortTyp Identity Identität Phase2 Phase2 Passphrase Passwort Security Sicherheit Hidden Versteckt Eduroam (long) Eduroam (lang) Eduroam (short) Eduroam (kurz) IPv4 Address IPv4 Adresse IPv4 Off IPv4 Aus IPV4 DHCP IPV4 DHCP IPv6 Address IPv6 Adresse IPv6 Off IPv6 Aus IPv6 Auto IPv6 Auto IPv6.Privacy IPv6.Privacy ProvisioningEditor Global Service WiFi Templates File Path to the CA Certificate File File Path to the Client Certificate File File path to the Client Private Key File Key Files (*.pem);;All Files (*.*) MAC address. SSID: hexadecimal representation of an 802.11 SSID List of Nameservers List of Timeservers List of DNS Search Domains Domain name to be used Enter the string representation of an 802.11 SSID. Service type. EAP type. Private key passphrase type. Network security type. Hidden network IPv6 Privacy IPv6.Privacy {6 ?} %1 - Item Input Tag which will replace the * with<br>an identifier unique to the config file. Enter the network name. Enter a description of the network. Password/Passphrase for the private key file. Identity string for EAP. RSN/WPA/WPA2 Passphrase Phase 2 (inner authentication with TLS tunnel)<br>authentication method. %1 - Text Input Information Information The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv4 Address IPv4 Adresse IPv4 Netmask IPv4 Gateway (This is an optional entry) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv6 Address IPv6 Adresse %1 - Integer Input Enter the IPv6 prefix length IPv6 Gateway (This is an optional entry) <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Registrieren des Dienstes org.cmst.roothelper fehlgeschlagen - Eventuell läuft bereits eine andere Instanz. Failed to register roothelper object on the system bus. Registrierung des roothelper Objektes auf dem System-Bus fehlgeschlagen. ScrollBox Scrollbox Scrollbox TextLabel TextLabel TranslateStrings connman system tray Main Window Title connman system tray cmst Abbreviated Program Name - used for QMessageBox titles cmst idle connman state string Inaktiv association connman state string Verbindung configuration connman state string Konfiguration ready connman state string Bereit online connman state string Online disconnect connman state string Trennen failure connman state string Fehlschlag offline connman state string Offline system connman type string System ethernet connman type string Ethernet wifi connman type string Wifi bluetooth connman type string Bluetooth cellular connman type string Brauche Kontext um das richtig übersetzen zu können / Need the context to translate this right Cellular gps connman type string GPS vpn connman type string VPN gadget connman type string Gadget p2p connman type string P2P wired connman type string Kabelgebunden direct connman proxy string Direkt manual connman proxy string Manuell auto connman proxy string Auto psk connman security string PSK ieee8021x connman security string ieee8021x none connman security string Nichts wep connman security string WEP wps connman security string Invalid arguments connman error string Ungültige Argumente Permission denied connman error string Zugriff verweigert Passphrase required connman error string Passwort benötigt Not registered connman error string Nicht registriert Not unique connman error string Nicht eindeutig Not supported connman error string Nicht unterstützt Not implemented connman error string Nicht implementiert Not found connman error string Nicht gefunden No carrier connman error string Kein Carrier In progress connman error string In Bearbeitung Already exists connman error string Existiert bereits Already enabled connman error string Bereits aktiviert Already disabled connman error string Bereits deaktiviert Already connected connman error string Bereits verbunden Not connected connman error string Nicht verbunden Operation aborted connman error string Aktion abgebrochen Operation timeout connman error string Aktion Zeitüberschreitung Invalid service connman error string Ungültiger Dienst Invalid property connman error string Ungültige Eigenschaft disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method Auto manual connman ethernet connection method Manuell dhcp connman ipv4 method string manual connman ipv4 method string Manuell off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string Auto manual connman ipv6 method string Manuell 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type auto connamn ipv6 method string Auto manual connamn ipv6 method string Manuell Invalid arguments connman error sring Ungültige Argumente Permission denied connman error sring Zugriff verweigert Passphrase required connman error sring Passwort benötigt Not registered connman error sring Nicht registriert Not unique connman error sring Nicht eindeutig Not supported connman error sring Nicht unterstützt Not implemented connman error sring Nicht implementiert Not found connman error sring Nicht gefunden No carrier connman error sring Eigentlich mit "Träger" übersetzbar, aber aus Gründen der verständlichkeit gleich gelassen Kein Carrier In progress connman error sring In Bearbeitung Already exists connman error sring Existiert bereits Already enabled connman error sring Bereits aktiviert Already disabled connman error sring Bereits deaktiviert Already connected connman error sring Bereits verbunden Not connected connman error sring Nicht verbunden Operation aborted connman error sring Aktion abgebrochen Operation timeout connman error sring Aktion Zeitüberschreitung Invalid service connman error sring Ungültiger Dienst Invalid property connman error sring Ungültige Eigenschaft VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> <html><head/><body><p>WISPr Benutzername.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> <html><head/><body><p>WISPr Passwort.</p></body></html> Host Name Name OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Was ist das</p></body></html> ... ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Fahre mit dem Verbindungsprozess fort.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel &Abbrechen Save Credentials VPN_Editor Global OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input Information Information <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open &Öffnen <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save &Speichern <html><head/><body><p>Delete a config file.</p></body></html> &Delete &Löschen <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page &Seite aufräumen <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Was ist das</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit &Beenden Name Name Name of the network. Description Beschreibung Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Eine andere Instanz von CMST läuft gerade. Breche ab Connman System Tray. Connman System-Tray. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. [Experimentell] Datenzähler ausschalten. Kann eventuell die Last auf dem System minimieren. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Deaktiviere das Tray-Icon. Wird eventuell benötigt, falls das System-Tray nicht kompatibel mit der Freedesktop.org-System-Tray Spezifikation ist. Use the icon theme from your system if one is defined. Benutze das Icon Theme von deinem System, falls eines definiert ist. Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. Protokolliere den connman inputRequest für Debugging-Zwecke. Start the GUI minimized in the system tray. Starte das GUI minimiert im System-Tray. Specify the wait time in seconds before starting the system tray icon. Gebe die Wartezeit in Sekunden an, bevor das System-Tray-Icon angezeigt wird. seconds Sekunden [Experimental] The number of kb that have to be transmitted before the counter updates. [Experimentell] Die Anzahl der kb die übertragen werden, bevor der Zähler aktualisiert wird. KB KB [Experimental] The interval in seconds between counter updates. [Experimentell] Der Zeitraum in Sekunden zwischen den Zähler-Aktualisierungen. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) Falls Pseudotransparenz benötigt wird, kann hier die Hintergrundfarbe definiert werden (Format: 0xRRGGBB) RRGGBB RRGGBB Use XFCE specific code. Benutze XFCE spezifischen Code. Use MATE DE specific code. Benutze MATE DE spezifischen Code. processReply Warning <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_en_US.qm000066400000000000000000000070111322401607200211360ustar00rootroot00000000000000 Agent Agent Input Passphrase <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> &Hide Passphrase O&ld Passphrase &Passphrase Hidden Network &Name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> Service Set Identifier &SSID Wireless Internet Service Provider roaming (WISPr) &Username <html><head/><body><p>WISPr username.</p></body></html> Passwor&d <html><head/><body><p>WISPr password.</p></body></html> Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> &Identity WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> Use Push &Button Authentication &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> Browser Login Requested Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Use the Firefox browser.</p></body></html> Removed double space <html><head/><body><p>Use the Firefox browser.</p></body><html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> Launch &Browser <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel AgentDialog Information You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" ConnmanAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ConnmanCounter %L1 Bytes %L1 KB %L1 MB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 %Ln Packet(s) %Ln Packet %Ln Packets <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>Connect Time:</b><br> %n Day(s) %n Day %n Days %n Hour(s) %n Hour %n Hours %n Minute(s) %n Minute %n Minutes %n Second(s) %n Second %n Seconds ConnmanVPNAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ControlBox Dialog &Status <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Technologies Name Type Powered Connected Tethering Resc&an <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services State Connection Move Before Move After <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less &Details Ser&vice <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration &Wireless Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect Remove <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Default is no desktop specific code.</p></body></html> Rescan Offline Mode <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Favorite Security Signal Strength &Counters <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Home Counter not available. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: &Preferences <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> Start Minimized Wait Time Disable Tray Icon <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme Disable Counters <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Fake Transparency <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications Notifications <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon Server Status <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize IDPass Set ID and Password for tethered wifi Ma&ximize &Exit About %1 Service Details WiFi Connections VPN Connections About AwOken License %1 change log is not available. ChangeLog Cancel <b>Service:</b> %1 Unable to determine service No Services Selected You need to select a Wifi service before pressing the remove button. Offline Mode Engaged Offline Mode Disabled %1 (%2) Network Connection: %1 Network Services: No network services available Service Error: %1 Object Path: %1 VPN Engaged VPN Disengaged <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1Off%1%1 tethering Warning <b>Connection:</b> %1 <br><b>Service Details:</b><br> Service Type: %1<br> Service State: %1<br> Favorite: %1<br> Yes favorite No favorite External Configuration File: %1<br> Yes immutable No immutable Auto Connect: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP Address: %1<br> IP Netmask: %1<br> IP Gateway: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Prefix Length: <br> Prefix Length: %1<br> Privacy: %1<br> <br><b>Proxy</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Interface: %1<br> Device Address: %1<br> MTU: %1<br> <br><b>Wireless</b><br> Security: %1<br> Strength: %1<br> Roaming: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Engaged Disabled Offline Mode %1On%1%1 powered %1Off%1%1 powered Yes connected No connected Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Ethernet Connection<br> icon_tool_tip Service: %1<br> Interface: %1 WiFi Connection<br> icon_tool_tip SSID: %1<br> Strength: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Connection is in the Failure State. icon_tool_tip Not Connected icon_tool_tip Error retrieving properties via Dbus Connection status is unknown Type: %1 <br>Powered On Off Not Connected <br>Tethering Enabled Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. Could not find a connection to the system bus %1 - Critical Error Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Could not create an interface to connman on the system bus Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Error reading or parsing connman.Manager.GetProperties %1 - Warning There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Error reading or parsing connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Error reading or parsing connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 Colorize Icons Attempt %1 of 4 looking for notification server. %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. <p style='white-space:pre'><center><b>%1 Properties</b></center> Unable to find or connect to a Notification server. WiFi Technologies:<br> %1 Found, %2 Powered IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor &General <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &TImeservers <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> IPv&4 Address Netmask Gateway Method <html><head/><body><p>User configuration of IPv6 settings</p></body></html> IPv&6 Prefix Length Privacy <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> URL Servers <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel Provisioning Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit [global] Name Description [service_*] Type MAC Nameservers Timeservers SearchDomains Domain SSID EAP CACertFile ClientCertFile PrivateKeyFile PrivateKeyPassphrase PrivateKeyPassphraseType Identity Phase2 Passphrase Security Hidden Eduroam (long) Eduroam (short) IPv4 Address IPv4 Off IPV4 DHCP IPv6 Address IPv6 Off IPv6 Auto IPv6.Privacy ProvisioningEditor Global Service WiFi Templates File Path to the CA Certificate File File Path to the Client Certificate File File path to the Client Private Key File Key Files (*.pem);;All Files (*.*) MAC address. SSID: hexadecimal representation of an 802.11 SSID List of Nameservers List of Timeservers List of DNS Search Domains Domain name to be used Enter the string representation of an 802.11 SSID. Service type. EAP type. Private key passphrase type. Network security type. Hidden network IPv6 Privacy %1 - Item Input Tag which will replace the * with<br>an identifier unique to the config file. Enter the network name. Enter a description of the network. Password/Passphrase for the private key file. Identity string for EAP. RSN/WPA/WPA2 Passphrase Phase 2 (inner authentication with TLS tunnel)<br>authentication method. %1 - Text Input Information Critical The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv4 Address IPv4 Netmask IPv4 Gateway (This is an optional entry) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv6 Address %1 - Integer Input Enter the IPv6 prefix length IPv6 Gateway (This is an optional entry) <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Failed to register roothelper object on the system bus. ScrollBox Scrollbox TextLabel TranslateStrings connman system tray Main Window Title Connman System Tray cmst Abbreviated Program Name - used for QMessageBox titles CMST idle connman state string Idle association connman state string Association configuration connman state string Configuration ready connman state string Ready online connman state string Online disconnect connman state string Disconnect failure connman state string Failure offline connman state string Offline system connman type string System ethernet connman type string Ethernet wifi connman type string WiFi bluetooth connman type string Bluetooth cellular connman type string Cellular gps connman type string GPS vpn connman type string VPN gadget connman type string Gadget p2p connman type string P2P wired connman type string Wired direct connman proxy string Direct manual connman proxy string Manual auto connman proxy string Auto psk connman security string PSK ieee8021x connman security string IEEE8021x none connman security string None wep connman security string WEP wps connman security string WPS Invalid arguments connman error string Permission denied connman error string Passphrase required connman error string Not registered connman error string Not unique connman error string Not supported connman error string Not implemented connman error string Not found connman error string No carrier connman error string In progress connman error string Already exists connman error string Already enabled connman error string Already disabled connman error string Already connected connman error string Not connected connman error string Operation aborted connman error string Operation timeout connman error string Invalid service connman error string Invalid property connman error string disabled connman privacy string Disabled enabled connman privacy string Enabled prefered connman privacy string - known misspelling but needed to avoid breaking code Preferred preferred connman privacy string Preferred auto connman ethernet connection method Auto manual connman ethernet connection method Manual dhcp connman ipv4 method string DHCP manual connman ipv4 method string Manual off connman ipv4 method string Off fixed connman ipv4 method string Fixed auto connman ipv6 method string Auto manual connman ipv6 method string Manual 6to4 connman ipv6 method string off connman ipv6 method string Off openconnect connman vpn connection type OpenConnect openvpn connman vpn connection type OpenVPN vpnc connman vpn connection type VPNC l2tp connman vpn connection type L2TP pptp connman vpn connection type PPTP auto connamn ipv6 method string Auto manual connamn ipv6 method string Manual off connamn ipv6 method string Off VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> Host Name OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel Save Credentials VPN_Editor Global OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input Information <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit Name of the network. Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Connman System Tray. Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. Start the GUI minimized in the system tray. Specify the wait time in seconds before starting the system tray icon. seconds [Experimental] The number of kb that have to be transmitted before the counter updates. KB [Experimental] The interval in seconds between counter updates. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) RRGGBB Use XFCE specific code. Use MATE DE specific code. processReply Warning <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_es_CO.qm000066400000000000000000000000271322401607200211150ustar00rootroot00000000000000 Agent Agent Input Passphrase <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> &Hide Passphrase O&ld Passphrase &Passphrase Hidden Network &Name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> Service Set Identifier &SSID Wireless Internet Service Provider roaming (WISPr) &Username <html><head/><body><p>WISPr username.</p></body></html> Passwor&d <html><head/><body><p>WISPr password.</p></body></html> Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> &Identity WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> Use Push &Button Authentication &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> Browser Login Requested Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> Launch &Browser <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel AgentDialog Information You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" ConnmanAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ConnmanCounter %L1 Bytes %L1 KB %L1 MB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 %Ln Packet(s) <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>Connect Time:</b><br> %n Day(s) %n Hour(s) %n Minute(s) %n Second(s) ConnmanVPNAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ControlBox Dialog &Status <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Technologies Name Type Powered Connected Tethering <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services State Connection Move Before Move After <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less &Details Ser&vice <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration &Wireless <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> Favorite Security Signal Strength Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect Remove <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State &Counters <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Home Counter not available. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: &Preferences <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) Rescan Offline Mode IDPass Set ID and Password for tethered wifi <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> Disable Tray Icon <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> Start Minimized <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> Wait Time <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> Disable Counters <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific <html><head/><body><p>Default is no desktop specific code.</p></body></html> None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Fake Transparency <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications Notifications <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon Server Status <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize Ma&ximize &Exit About %1 Service Details WiFi Connections VPN Connections About AwOken License %1 change log is not available. ChangeLog Cancel <b>Service:</b> %1 Unable to determine service No Services Selected You need to select a Wifi service before pressing the remove button. Offline Mode Engaged Offline Mode Disabled %1 (%2) Network Connection: %1 Network Services: No network services available Service Error: %1 Object Path: %1 VPN Engaged VPN Disengaged <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1Off%1%1 tethering Warning <b>Connection:</b> %1 <br><b>Service Details:</b><br> Service Type: %1<br> Service State: %1<br> Favorite: %1<br> Yes favorite No favorite External Configuration File: %1<br> Yes immutable No immutable Auto Connect: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP Address: %1<br> IP Netmask: %1<br> IP Gateway: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Prefix Length: <br> Prefix Length: %1<br> Privacy: %1<br> <br><b>Proxy</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Interface: %1<br> Device Address: %1<br> MTU: %1<br> <br><b>Wireless</b><br> Security: %1<br> Strength: %1<br> Roaming: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Engaged Disabled Offline Mode %1On%1%1 powered %1Off%1%1 powered Yes connected No connected WiFi Technologies:<br> %1 Found, %2 Powered Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Ethernet Connection<br> icon_tool_tip Service: %1<br> Interface: %1 WiFi Connection<br> icon_tool_tip SSID: %1<br> Strength: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Connection is in the Failure State. icon_tool_tip Not Connected icon_tool_tip Error retrieving properties via Dbus Connection status is unknown Type: %1 <br>Powered On Off Not Connected <br>Tethering Enabled Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. Could not find a connection to the system bus %1 - Critical Error Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Could not create an interface to connman on the system bus Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Error reading or parsing connman.Manager.GetProperties %1 - Warning There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Error reading or parsing connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Error reading or parsing connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 Colorize Icons Attempt %1 of 4 looking for notification server. %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. <p style='white-space:pre'><center><b>%1 Properties</b></center> Unable to find or connect to a Notification server. IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor &General <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &TImeservers <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> IPv&4 Address Netmask Gateway Method <html><head/><body><p>User configuration of IPv6 settings</p></body></html> IPv&6 Prefix Length Privacy <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> URL Servers <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel Provisioning Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit [global] Name Description [service_*] Type MAC Nameservers Timeservers SearchDomains Domain SSID EAP CACertFile ClientCertFile PrivateKeyFile PrivateKeyPassphrase PrivateKeyPassphraseType Identity Phase2 Passphrase Security Hidden Eduroam (long) Eduroam (short) IPv4 Address IPv4 Off IPV4 DHCP IPv6 Address IPv6 Off IPv6 Auto IPv6.Privacy ProvisioningEditor Global Service WiFi Templates File Path to the CA Certificate File File Path to the Client Certificate File File path to the Client Private Key File Key Files (*.pem);;All Files (*.*) MAC address. SSID: hexadecimal representation of an 802.11 SSID List of Nameservers List of Timeservers List of DNS Search Domains Domain name to be used Enter the string representation of an 802.11 SSID. Service type. EAP type. Private key passphrase type. Network security type. Hidden network IPv6 Privacy %1 - Item Input Tag which will replace the * with<br>an identifier unique to the config file. Enter the network name. Enter a description of the network. Password/Passphrase for the private key file. Identity string for EAP. RSN/WPA/WPA2 Passphrase Phase 2 (inner authentication with TLS tunnel)<br>authentication method. %1 - Text Input Information The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv4 Address IPv4 Netmask IPv4 Gateway (This is an optional entry) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv6 Address %1 - Integer Input Enter the IPv6 prefix length IPv6 Gateway (This is an optional entry) <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Failed to register roothelper object on the system bus. ScrollBox Scrollbox TextLabel TranslateStrings connman system tray Main Window Title cmst Abbreviated Program Name - used for QMessageBox titles idle connman state string association connman state string configuration connman state string ready connman state string online connman state string disconnect connman state string failure connman state string offline connman state string system connman type string ethernet connman type string wifi connman type string bluetooth connman type string cellular connman type string gps connman type string vpn connman type string gadget connman type string p2p connman type string wired connman type string direct connman proxy string manual connman proxy string auto connman proxy string psk connman security string ieee8021x connman security string none connman security string wep connman security string wps connman security string Invalid arguments connman error string Permission denied connman error string Passphrase required connman error string Not registered connman error string Not unique connman error string Not supported connman error string Not implemented connman error string Not found connman error string No carrier connman error string In progress connman error string Already exists connman error string Already enabled connman error string Already disabled connman error string Already connected connman error string Not connected connman error string Operation aborted connman error string Operation timeout connman error string Invalid service connman error string Invalid property connman error string disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method manual connman ethernet connection method dhcp connman ipv4 method string manual connman ipv4 method string off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string manual connman ipv6 method string 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> Host Name OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel Save Credentials VPN_Editor Global OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input Information <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit Name of the network. Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Connman System Tray. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. Start the GUI minimized in the system tray. Specify the wait time in seconds before starting the system tray icon. seconds [Experimental] The number of kb that have to be transmitted before the counter updates. KB [Experimental] The interval in seconds between counter updates. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) RRGGBB Use XFCE specific code. Use MATE DE specific code. processReply Warning <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_es_ES.qm000066400000000000000000000000271322401607200211230ustar00rootroot00000000000000 Agent Agent Input Passphrase <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> &Hide Passphrase O&ld Passphrase &Passphrase Hidden Network &Name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> Service Set Identifier &SSID Wireless Internet Service Provider roaming (WISPr) &Username <html><head/><body><p>WISPr username.</p></body></html> Passwor&d <html><head/><body><p>WISPr password.</p></body></html> Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> &Identity WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> Use Push &Button Authentication &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> Browser Login Requested Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> Launch &Browser <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel AgentDialog Information You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" ConnmanAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ConnmanCounter %L1 Bytes %L1 KB %L1 MB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 %Ln Packet(s) <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>Connect Time:</b><br> %n Day(s) %n Hour(s) %n Minute(s) %n Second(s) ConnmanVPNAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ControlBox Dialog &Status <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Technologies Name Type Powered Connected Tethering <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services State Connection Move Before Move After <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less &Details Ser&vice <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration &Wireless <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> Favorite Security Signal Strength Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect Remove <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State &Counters <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Home Counter not available. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: &Preferences <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) Rescan Offline Mode IDPass Set ID and Password for tethered wifi <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> Disable Tray Icon <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> Start Minimized <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> Wait Time <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> Disable Counters <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific <html><head/><body><p>Default is no desktop specific code.</p></body></html> None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Fake Transparency <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications Notifications <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon Server Status <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize Ma&ximize &Exit About %1 Service Details WiFi Connections VPN Connections About AwOken License %1 change log is not available. ChangeLog Cancel <b>Service:</b> %1 Unable to determine service No Services Selected You need to select a Wifi service before pressing the remove button. Offline Mode Engaged Offline Mode Disabled %1 (%2) Network Connection: %1 Network Services: No network services available Service Error: %1 Object Path: %1 VPN Engaged VPN Disengaged <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1Off%1%1 tethering Warning <b>Connection:</b> %1 <br><b>Service Details:</b><br> Service Type: %1<br> Service State: %1<br> Favorite: %1<br> Yes favorite No favorite External Configuration File: %1<br> Yes immutable No immutable Auto Connect: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP Address: %1<br> IP Netmask: %1<br> IP Gateway: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Prefix Length: <br> Prefix Length: %1<br> Privacy: %1<br> <br><b>Proxy</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Interface: %1<br> Device Address: %1<br> MTU: %1<br> <br><b>Wireless</b><br> Security: %1<br> Strength: %1<br> Roaming: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Engaged Disabled Offline Mode %1On%1%1 powered %1Off%1%1 powered Yes connected No connected WiFi Technologies:<br> %1 Found, %2 Powered Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Ethernet Connection<br> icon_tool_tip Service: %1<br> Interface: %1 WiFi Connection<br> icon_tool_tip SSID: %1<br> Strength: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Connection is in the Failure State. icon_tool_tip Not Connected icon_tool_tip Error retrieving properties via Dbus Connection status is unknown Type: %1 <br>Powered On Off Not Connected <br>Tethering Enabled Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. Could not find a connection to the system bus %1 - Critical Error Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Could not create an interface to connman on the system bus Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Error reading or parsing connman.Manager.GetProperties %1 - Warning There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Error reading or parsing connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Error reading or parsing connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 Colorize Icons Attempt %1 of 4 looking for notification server. %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. <p style='white-space:pre'><center><b>%1 Properties</b></center> Unable to find or connect to a Notification server. IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor &General <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &TImeservers <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> IPv&4 Address Netmask Gateway Method <html><head/><body><p>User configuration of IPv6 settings</p></body></html> IPv&6 Prefix Length Privacy <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> URL Servers <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel Provisioning Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit [global] Name Description [service_*] Type MAC Nameservers Timeservers SearchDomains Domain SSID EAP CACertFile ClientCertFile PrivateKeyFile PrivateKeyPassphrase PrivateKeyPassphraseType Identity Phase2 Passphrase Security Hidden Eduroam (long) Eduroam (short) IPv4 Address IPv4 Off IPV4 DHCP IPv6 Address IPv6 Off IPv6 Auto IPv6.Privacy ProvisioningEditor Global Service WiFi Templates File Path to the CA Certificate File File Path to the Client Certificate File File path to the Client Private Key File Key Files (*.pem);;All Files (*.*) MAC address. SSID: hexadecimal representation of an 802.11 SSID List of Nameservers List of Timeservers List of DNS Search Domains Domain name to be used Enter the string representation of an 802.11 SSID. Service type. EAP type. Private key passphrase type. Network security type. Hidden network IPv6 Privacy %1 - Item Input Tag which will replace the * with<br>an identifier unique to the config file. Enter the network name. Enter a description of the network. Password/Passphrase for the private key file. Identity string for EAP. RSN/WPA/WPA2 Passphrase Phase 2 (inner authentication with TLS tunnel)<br>authentication method. %1 - Text Input Information The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv4 Address IPv4 Netmask IPv4 Gateway (This is an optional entry) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv6 Address %1 - Integer Input Enter the IPv6 prefix length IPv6 Gateway (This is an optional entry) <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Failed to register roothelper object on the system bus. ScrollBox Scrollbox TextLabel TranslateStrings connman system tray Main Window Title cmst Abbreviated Program Name - used for QMessageBox titles idle connman state string association connman state string configuration connman state string ready connman state string online connman state string disconnect connman state string failure connman state string offline connman state string system connman type string ethernet connman type string wifi connman type string bluetooth connman type string cellular connman type string gps connman type string vpn connman type string gadget connman type string p2p connman type string wired connman type string direct connman proxy string manual connman proxy string auto connman proxy string psk connman security string ieee8021x connman security string none connman security string wep connman security string wps connman security string Invalid arguments connman error string Permission denied connman error string Passphrase required connman error string Not registered connman error string Not unique connman error string Not supported connman error string Not implemented connman error string Not found connman error string No carrier connman error string In progress connman error string Already exists connman error string Already enabled connman error string Already disabled connman error string Already connected connman error string Not connected connman error string Operation aborted connman error string Operation timeout connman error string Invalid service connman error string Invalid property connman error string disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method manual connman ethernet connection method dhcp connman ipv4 method string manual connman ipv4 method string off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string manual connman ipv6 method string 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> Host Name OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel Save Credentials VPN_Editor Global OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input Information <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit Name of the network. Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Connman System Tray. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. Start the GUI minimized in the system tray. Specify the wait time in seconds before starting the system tray icon. seconds [Experimental] The number of kb that have to be transmitted before the counter updates. KB [Experimental] The interval in seconds between counter updates. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) RRGGBB Use XFCE specific code. Use MATE DE specific code. processReply Warning <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_fr_FR.qm000066400000000000000000000000271322401607200211230ustar00rootroot00000000000000 Agent Agent Input Passphrase <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> &Hide Passphrase O&ld Passphrase &Passphrase Hidden Network &Name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> Service Set Identifier &SSID Wireless Internet Service Provider roaming (WISPr) &Username <html><head/><body><p>WISPr username.</p></body></html> Passwor&d <html><head/><body><p>WISPr password.</p></body></html> Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> &Identity WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> Use Push &Button Authentication &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> Browser Login Requested Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> Launch &Browser <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel AgentDialog Information You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" ConnmanAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ConnmanCounter %L1 Bytes %L1 KB %L1 MB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 %Ln Packet(s) <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>Connect Time:</b><br> %n Day(s) %n Hour(s) %n Minute(s) %n Second(s) ConnmanVPNAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ControlBox Dialog &Status <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Technologies Name Type Powered Connected Tethering <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services State Connection Move Before Move After <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less &Details Ser&vice <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration &Wireless <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> Favorite Security Signal Strength Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> Remove <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host &Counters <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Home Counter not available. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: &Preferences <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> Disable Tray Icon <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> Start Minimized <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> Wait Time <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> Disable Counters <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> Fake Transparency <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific <html><head/><body><p>Default is no desktop specific code.</p></body></html> None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications Notifications <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon Server Status <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize Rescan Offline Mode IDPass Set ID and Password for tethered wifi Service Details WiFi Connections VPN Connections Ma&ximize &Exit About %1 About AwOken License %1 change log is not available. ChangeLog Cancel <b>Service:</b> %1 Unable to determine service No Services Selected %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. You need to select a Wifi service before pressing the remove button. Offline Mode Engaged Offline Mode Disabled %1 (%2) Network Connection: %1 Network Services: No network services available Service Error: %1 Object Path: %1 VPN Engaged VPN Disengaged Warning <b>Connection:</b> %1 <br><b>Service Details:</b><br> Service Type: %1<br> Service State: %1<br> Favorite: %1<br> Yes favorite No favorite External Configuration File: %1<br> Yes immutable No immutable Auto Connect: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP Address: %1<br> IP Netmask: %1<br> IP Gateway: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Prefix Length: <br> Prefix Length: %1<br> Privacy: %1<br> <br><b>Proxy</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Interface: %1<br> Device Address: %1<br> MTU: %1<br> <br><b>Wireless</b><br> Security: %1<br> Strength: %1<br> Roaming: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Engaged Disabled Offline Mode %1On%1%1 powered %1Off%1%1 powered Yes connected No connected WiFi Technologies:<br> %1 Found, %2 Powered Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Ethernet Connection<br> icon_tool_tip Service: %1<br> Interface: %1 WiFi Connection<br> icon_tool_tip SSID: %1<br> Strength: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Connection is in the Failure State. icon_tool_tip Not Connected icon_tool_tip Error retrieving properties via Dbus Connection status is unknown <p style='white-space:pre'><center><b>%1 Properties</b></center> Type: %1 <br>Powered On Off Not Connected <br>Tethering Enabled Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1Off%1%1 tethering <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. Could not find a connection to the system bus %1 - Critical Error Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Could not create an interface to connman on the system bus Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Error reading or parsing connman.Manager.GetProperties %1 - Warning There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Error reading or parsing connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Error reading or parsing connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 Attempt %1 of 4 looking for notification server. Unable to find or connect to a Notification server. Colorize Icons IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor &General <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &TImeservers <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> IPv&4 Address Netmask Gateway Method <html><head/><body><p>User configuration of IPv6 settings</p></body></html> IPv&6 Prefix Length Privacy <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> URL Servers <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel Provisioning Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit [global] Name Description [service_*] Type MAC Nameservers Timeservers SearchDomains Domain SSID EAP CACertFile ClientCertFile PrivateKeyFile PrivateKeyPassphrase PrivateKeyPassphraseType Identity Phase2 Passphrase Security Hidden Eduroam (long) Eduroam (short) IPv4 Address IPv4 Off IPV4 DHCP IPv6 Address IPv6 Off IPv6 Auto IPv6.Privacy ProvisioningEditor Global Service WiFi Templates File Path to the CA Certificate File File Path to the Client Certificate File File path to the Client Private Key File Key Files (*.pem);;All Files (*.*) MAC address. SSID: hexadecimal representation of an 802.11 SSID List of Nameservers List of Timeservers List of DNS Search Domains Domain name to be used Enter the string representation of an 802.11 SSID. Service type. EAP type. Private key passphrase type. Network security type. Hidden network IPv6 Privacy %1 - Item Input Tag which will replace the * with<br>an identifier unique to the config file. Enter the network name. Enter a description of the network. Password/Passphrase for the private key file. Identity string for EAP. RSN/WPA/WPA2 Passphrase Phase 2 (inner authentication with TLS tunnel)<br>authentication method. %1 - Text Input Information The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv4 Address IPv4 Netmask IPv4 Gateway (This is an optional entry) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv6 Address %1 - Integer Input Enter the IPv6 prefix length IPv6 Gateway (This is an optional entry) <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Failed to register roothelper object on the system bus. ScrollBox Scrollbox TextLabel TranslateStrings connman system tray Main Window Title cmst Abbreviated Program Name - used for QMessageBox titles idle connman state string association connman state string configuration connman state string ready connman state string online connman state string disconnect connman state string failure connman state string offline connman state string system connman type string ethernet connman type string wifi connman type string bluetooth connman type string cellular connman type string gps connman type string vpn connman type string gadget connman type string p2p connman type string wired connman type string direct connman proxy string manual connman proxy string auto connman proxy string psk connman security string ieee8021x connman security string none connman security string wep connman security string wps connman security string Invalid arguments connman error string Permission denied connman error string Passphrase required connman error string Not registered connman error string Not unique connman error string Not supported connman error string Not implemented connman error string Not found connman error string No carrier connman error string In progress connman error string Already exists connman error string Already enabled connman error string Already disabled connman error string Already connected connman error string Not connected connman error string Operation aborted connman error string Operation timeout connman error string Invalid service connman error string Invalid property connman error string disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method manual connman ethernet connection method dhcp connman ipv4 method string manual connman ipv4 method string off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string manual connman ipv6 method string 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> Host Name OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel Save Credentials VPN_Editor Global OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input Information <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit Name of the network. Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Connman System Tray. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. Start the GUI minimized in the system tray. Specify the wait time in seconds before starting the system tray icon. seconds [Experimental] The number of kb that have to be transmitted before the counter updates. KB [Experimental] The interval in seconds between counter updates. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) RRGGBB Use XFCE specific code. Use MATE DE specific code. processReply Warning <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_it_IT.qm000066400000000000000000000000271322401607200211350ustar00rootroot00000000000000 Agent Agent Input Passphrase <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> &Hide Passphrase O&ld Passphrase &Passphrase Hidden Network &Name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> Service Set Identifier &SSID Wireless Internet Service Provider roaming (WISPr) &Username <html><head/><body><p>WISPr username.</p></body></html> Passwor&d <html><head/><body><p>WISPr password.</p></body></html> Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> &Identity WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> Use Push &Button Authentication &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> Browser Login Requested Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> Launch &Browser <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel AgentDialog Information You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" ConnmanAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ConnmanCounter %L1 Bytes %L1 KB %L1 MB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 %Ln Packet(s) <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>Connect Time:</b><br> %n Day(s) %n Hour(s) %n Minute(s) %n Second(s) ConnmanVPNAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ControlBox Dialog &Status <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Technologies Name Type Powered Connected Tethering <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services State Connection Move Before Move After <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less &Details Ser&vice <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration &Wireless <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> Favorite Security Signal Strength Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect Remove <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State &Counters <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Home Counter not available. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: &Preferences <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State Rescan Offline Mode IDPass Set ID and Password for tethered wifi <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> Disable Tray Icon <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> Start Minimized <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> Wait Time <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> Disable Counters <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific <html><head/><body><p>Default is no desktop specific code.</p></body></html> None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Fake Transparency <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications Notifications <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon Server Status <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize Ma&ximize &Exit About %1 Service Details WiFi Connections VPN Connections About AwOken License %1 change log is not available. ChangeLog Cancel <b>Service:</b> %1 Unable to determine service No Services Selected You need to select a Wifi service before pressing the remove button. Offline Mode Engaged Offline Mode Disabled %1 (%2) Network Connection: %1 Network Services: No network services available Service Error: %1 Object Path: %1 VPN Engaged VPN Disengaged <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1Off%1%1 tethering Warning <b>Connection:</b> %1 <br><b>Service Details:</b><br> Service Type: %1<br> Service State: %1<br> Favorite: %1<br> Yes favorite No favorite External Configuration File: %1<br> Yes immutable No immutable Auto Connect: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP Address: %1<br> IP Netmask: %1<br> IP Gateway: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Prefix Length: <br> Prefix Length: %1<br> Privacy: %1<br> <br><b>Proxy</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Interface: %1<br> Device Address: %1<br> MTU: %1<br> <br><b>Wireless</b><br> Security: %1<br> Strength: %1<br> Roaming: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Engaged Disabled Offline Mode %1On%1%1 powered %1Off%1%1 powered Yes connected No connected WiFi Technologies:<br> %1 Found, %2 Powered Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Ethernet Connection<br> icon_tool_tip Service: %1<br> Interface: %1 WiFi Connection<br> icon_tool_tip SSID: %1<br> Strength: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Connection is in the Failure State. icon_tool_tip Not Connected icon_tool_tip Error retrieving properties via Dbus Connection status is unknown Type: %1 <br>Powered On Off Not Connected <br>Tethering Enabled Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. Could not find a connection to the system bus %1 - Critical Error Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Could not create an interface to connman on the system bus Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Error reading or parsing connman.Manager.GetProperties %1 - Warning There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Error reading or parsing connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Error reading or parsing connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 Colorize Icons Attempt %1 of 4 looking for notification server. %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. <p style='white-space:pre'><center><b>%1 Properties</b></center> Unable to find or connect to a Notification server. IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor &General <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &TImeservers <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> IPv&4 Address Netmask Gateway Method <html><head/><body><p>User configuration of IPv6 settings</p></body></html> IPv&6 Prefix Length Privacy <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> URL Servers <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel Provisioning Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit [global] Name Description [service_*] Type MAC Nameservers Timeservers SearchDomains Domain SSID EAP CACertFile ClientCertFile PrivateKeyFile PrivateKeyPassphrase PrivateKeyPassphraseType Identity Phase2 Passphrase Security Hidden Eduroam (long) Eduroam (short) IPv4 Address IPv4 Off IPV4 DHCP IPv6 Address IPv6 Off IPv6 Auto IPv6.Privacy ProvisioningEditor Global Service WiFi Templates File Path to the CA Certificate File File Path to the Client Certificate File File path to the Client Private Key File Key Files (*.pem);;All Files (*.*) MAC address. SSID: hexadecimal representation of an 802.11 SSID List of Nameservers List of Timeservers List of DNS Search Domains Domain name to be used Enter the string representation of an 802.11 SSID. Service type. EAP type. Private key passphrase type. Network security type. Hidden network IPv6 Privacy %1 - Item Input Tag which will replace the * with<br>an identifier unique to the config file. Enter the network name. Enter a description of the network. Password/Passphrase for the private key file. Identity string for EAP. RSN/WPA/WPA2 Passphrase Phase 2 (inner authentication with TLS tunnel)<br>authentication method. %1 - Text Input Information The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv4 Address IPv4 Netmask IPv4 Gateway (This is an optional entry) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv6 Address %1 - Integer Input Enter the IPv6 prefix length IPv6 Gateway (This is an optional entry) <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Failed to register roothelper object on the system bus. ScrollBox Scrollbox TextLabel TranslateStrings connman system tray Main Window Title cmst Abbreviated Program Name - used for QMessageBox titles idle connman state string association connman state string configuration connman state string ready connman state string online connman state string disconnect connman state string failure connman state string offline connman state string system connman type string ethernet connman type string wifi connman type string bluetooth connman type string cellular connman type string gps connman type string vpn connman type string gadget connman type string p2p connman type string wired connman type string direct connman proxy string manual connman proxy string auto connman proxy string psk connman security string ieee8021x connman security string none connman security string wep connman security string wps connman security string Invalid arguments connman error string Permission denied connman error string Passphrase required connman error string Not registered connman error string Not unique connman error string Not supported connman error string Not implemented connman error string Not found connman error string No carrier connman error string In progress connman error string Already exists connman error string Already enabled connman error string Already disabled connman error string Already connected connman error string Not connected connman error string Operation aborted connman error string Operation timeout connman error string Invalid service connman error string Invalid property connman error string disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method manual connman ethernet connection method dhcp connman ipv4 method string manual connman ipv4 method string off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string manual connman ipv6 method string 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> Host Name OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel Save Credentials VPN_Editor Global OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input Information <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit Name of the network. Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Connman System Tray. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. Start the GUI minimized in the system tray. Specify the wait time in seconds before starting the system tray icon. seconds [Experimental] The number of kb that have to be transmitted before the counter updates. KB [Experimental] The interval in seconds between counter updates. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) RRGGBB Use XFCE specific code. Use MATE DE specific code. processReply Warning <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_pl_PL.qm000066400000000000000000000000371322401607200211340ustar00rootroot00000000000000 Agent Agent Input Passphrase <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> &Hide Passphrase O&ld Passphrase &Passphrase Hidden Network &Name <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> Service Set Identifier &SSID Wireless Internet Service Provider roaming (WISPr) &Username <html><head/><body><p>WISPr username.</p></body></html> Passwor&d <html><head/><body><p>WISPr password.</p></body></html> Extensible Authentication Protocol (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> &Identity WiFi Protected Setup (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> Use Push &Button Authentication &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> Browser Login Requested Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> Login URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> Launch &Browser <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel AgentDialog Information You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" ConnmanAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ConnmanCounter %L1 Bytes %L1 KB %L1 MB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 %Ln Packet(s) <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>Connect Time:</b><br> %n Day(s) %n Hour(s) %n Minute(s) %n Second(s) ConnmanVPNAgent Connman Error Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Agent Request Failed The agent request failed before a reply was returned. ControlBox Dialog &Status <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> All Devices &Off <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> Global Properties <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> OfflineMode: Unavailable <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> State: Unavailable Technologies Name Type Powered Connected Tethering <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> Resc&an <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> Services State Connection Move Before Move After <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> &Less &Details Ser&vice <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> Configuration &Wireless <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> Favorite Security Signal Strength Wireless Services <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> Connect <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> Disconnect Remove <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> Wifi State &Counters <html><head/><body><p>The service being monitored by the counters.</p></body></html> Service: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Home Counter not available. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> Roaming <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> Settings: &Preferences <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> Interface <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State Rescan Offline Mode IDPass Set ID and Password for tethered wifi <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> Enable ToolTips (Interface) <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> Reset Counters <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> Advanced Controls <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> Start Options <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> Disable Tray Icon <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> Counter Update KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> Start Minimized <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> Wait Time <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> Disable Counters <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> Counter Update Rate <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> Desktop Specific <html><head/><body><p>Default is no desktop specific code.</p></body></html> None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Fake Transparency <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> System Tray <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> Hide Tray Icon <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> Enable System Tray Popups <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> System Tray Notifications Notifications <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> Notification Daemon Server Status <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> Enable Autostart <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> Retry Failed Connection <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &About <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> Provisioning Editor <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> E&xit <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> Mi&nimize Ma&ximize &Exit About %1 Service Details WiFi Connections VPN Connections About AwOken License %1 change log is not available. ChangeLog Cancel <b>Service:</b> %1 Unable to determine service No Services Selected You need to select a Wifi service before pressing the remove button. Offline Mode Engaged Offline Mode Disabled %1 (%2) Network Connection: %1 Network Services: No network services available Service Error: %1 Object Path: %1 VPN Engaged VPN Disengaged <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1Off%1%1 tethering Warning <b>Connection:</b> %1 <br><b>Service Details:</b><br> Service Type: %1<br> Service State: %1<br> Favorite: %1<br> Yes favorite No favorite External Configuration File: %1<br> Yes immutable No immutable Auto Connect: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP Address: %1<br> IP Netmask: %1<br> IP Gateway: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Prefix Length: <br> Prefix Length: %1<br> Privacy: %1<br> <br><b>Proxy</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Interface: %1<br> Device Address: %1<br> MTU: %1<br> <br><b>Wireless</b><br> Security: %1<br> Strength: %1<br> Roaming: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Engaged Disabled Offline Mode %1On%1%1 powered %1Off%1%1 powered Yes connected No connected WiFi Technologies:<br> %1 Found, %2 Powered Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Ethernet Connection<br> icon_tool_tip Service: %1<br> Interface: %1 WiFi Connection<br> icon_tool_tip SSID: %1<br> Strength: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Connection is in the Failure State. icon_tool_tip Not Connected icon_tool_tip Error retrieving properties via Dbus Connection status is unknown Type: %1 <br>Powered On Off Not Connected <br>Tethering Enabled Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. Could not find a connection to the system bus %1 - Critical Error Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Could not create an interface to connman on the system bus Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Error reading or parsing connman.Manager.GetProperties %1 - Warning There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Error reading or parsing connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Error reading or parsing connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 Colorize Icons Attempt %1 of 4 looking for notification server. %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. <p style='white-space:pre'><center><b>%1 Properties</b></center> Unable to find or connect to a Notification server. IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor &General <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> AutoConnect <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Nameservers <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &TImeservers <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> &Domains <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> IPv&4 Address Netmask Gateway Method <html><head/><body><p>User configuration of IPv6 settings</p></body></html> IPv&6 Prefix Length Privacy <html><head/><body><p>User configuration of Proxy settings.</p></body></html> &Proxy <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> URL Servers <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> Excludes <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> Reset Pa&ge <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> Reset &All <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> Cancel Provisioning Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit [global] Name Description [service_*] Type MAC Nameservers Timeservers SearchDomains Domain SSID EAP CACertFile ClientCertFile PrivateKeyFile PrivateKeyPassphrase PrivateKeyPassphraseType Identity Phase2 Passphrase Security Hidden Eduroam (long) Eduroam (short) IPv4 Address IPv4 Off IPV4 DHCP IPv6 Address IPv6 Off IPv6 Auto IPv6.Privacy ProvisioningEditor Global Service WiFi Templates File Path to the CA Certificate File File Path to the Client Certificate File File path to the Client Private Key File Key Files (*.pem);;All Files (*.*) MAC address. SSID: hexadecimal representation of an 802.11 SSID List of Nameservers List of Timeservers List of DNS Search Domains Domain name to be used Enter the string representation of an 802.11 SSID. Service type. EAP type. Private key passphrase type. Network security type. Hidden network IPv6 Privacy %1 - Item Input Tag which will replace the * with<br>an identifier unique to the config file. Enter the network name. Enter a description of the network. Password/Passphrase for the private key file. Identity string for EAP. RSN/WPA/WPA2 Passphrase Phase 2 (inner authentication with TLS tunnel)<br>authentication method. %1 - Text Input Information The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv4 Address IPv4 Netmask IPv4 Gateway (This is an optional entry) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. IPv6 Address %1 - Integer Input Enter the IPv6 prefix length IPv6 Gateway (This is an optional entry) <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Failed to register roothelper object on the system bus. ScrollBox Scrollbox TextLabel TranslateStrings connman system tray Main Window Title cmst Abbreviated Program Name - used for QMessageBox titles idle connman state string association connman state string configuration connman state string ready connman state string online connman state string disconnect connman state string failure connman state string offline connman state string system connman type string ethernet connman type string wifi connman type string bluetooth connman type string cellular connman type string gps connman type string vpn connman type string gadget connman type string p2p connman type string wired connman type string direct connman proxy string manual connman proxy string auto connman proxy string psk connman security string ieee8021x connman security string none connman security string wep connman security string wps connman security string Invalid arguments connman error string Permission denied connman error string Passphrase required connman error string Not registered connman error string Not unique connman error string Not supported connman error string Not implemented connman error string Not found connman error string No carrier connman error string In progress connman error string Already exists connman error string Already enabled connman error string Already disabled connman error string Already connected connman error string Not connected connman error string Operation aborted connman error string Operation timeout connman error string Invalid service connman error string Invalid property connman error string disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method manual connman ethernet connection method dhcp connman ipv4 method string manual connman ipv4 method string off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string manual connman ipv6 method string 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> Host Name OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> &Cancel Save Credentials VPN_Editor Global OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input Information <center>No configuration files were found.<br>You may use this dialog to create one. %1 - Information <center>Reading configuration file: %1 %1 - Select File Select a file to load. <center>No configuration files were found.<br>Nothing will be deleted. Select a file to be deleted. Enter a new file name or select<br>an existing file to overwrite. File read completed File deleted Error encountered deleting. File save failed. %L1 KB written %L1 Bytes written Critical <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> &Open <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> &Save <html><head/><body><p>Delete a config file.</p></body></html> &Delete <html><head/><body><p>Clear all text from the editor window.</p></body></html> &Clear Page <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> E&xit Name of the network. Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Connman System Tray. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. Start the GUI minimized in the system tray. Specify the wait time in seconds before starting the system tray icon. seconds [Experimental] The number of kb that have to be transmitted before the counter updates. KB [Experimental] The interval in seconds between counter updates. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) RRGGBB Use XFCE specific code. Use MATE DE specific code. processReply Warning <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_ru_RU.qm000066400000000000000000004045231322401607200211720ustar00rootroot00000000000000^D +d91191I`QS Q!QQԇUBKZly_\rns3sw}nʛ}~sf! D.5:M=H5>jH53H5`VE@eUeu\ORè(%aVEN/*7*08#+,8W+H5+f&+fވ++\+޺+-;7-D>.<9;cHDE(G2GGJF.JeNxNx.RZ6OZMb>.e[x(~*kC9inHa1%nWeyn$^7M%3h06e\L kUkUb#9~SJ@O4gL^L^ ŕج1%^jQOJ.]#:$U 4H&&;-$-@2a?-5DEjO R:SN|O|n&=yٔ¸SUhS4*v4*5*j`BD$7 o]0\^yOױ=)BrMzrFUCo<%8d6 ]LY7Xv>D`a-E8&O<2<ڮJ#3*6LLLLZw^kw_u{,}y8'>88y0yU- C3|̹B^|C2s u/IN9Ad4~*C4~,9 +I$$2O[0.`R427horfn.I(4Itue?jXY+W0r7nD#:; )ʞ^Gj8շշG(eߺ>(X|X|,^諭*r?:%n31:1:7"9"0$&j&8[|B=`U9e0EɕmDz~5A+Q&RQ&&^^..P <8^բs5El '.[X !tqAGAcM(oeoevv.GJC~"vYpA \.FT\T'4U֔e9W7&} # ԭ  H~ g '0A .Z < Mg2 S\ X@G Xk'? [N1 [Nw d f5 f lf%i  ~/ d : S7 OS^ dT m7 H  ~ ~ ~Q ~s ~Ӳ ~ U^X  , ^<~ |, #b^C )^D )"(' )"0 -+ 7NH 9ͳG ?mJ D5 P) P1 W3 ^eC a41 c4D eK)6 j5! j5 sY3r  %^s a7F  n D I I˔ W MR , ,T 2D! :H" ŚIu ŴI ȗ; ~7 εh V< n> Ƌ ևOs j: $(^9 L^K RV~ ^ _we[ a" a"; b+F c~] h>$O h>k h> l. l.۠ pS^ }OS^R ~' Z8Ǡ |_ 9/ ~j ~ܙ )H ) )Nz L ^; ~J Oĭ ͛3 DŽ I % (5 1 3 4` ;~ G4 M}4B MIG UTN| b cGI| g, u?- v9L  < -M Mm  KP SK 6, ;N tsL ׅ ׅ A }>F }>!   ? -^| Pt= T^F VR V`x V= _^; i?2F& i?2# n N2 N   " ." N N uDp uD{ ^" ( ͑E b4 S6 h. ^ /` >: nG t5=ijd[ j%eM>H.e0%U>%U>,,;I5 9>=8LNPOdizr&r{)Nj.N)^;>0d-$e/eHɾ6-f>`)N3n (q 0l a3I#J>&B^,F~1Z;-Z;Na1.*YcEgD`=g>}h~+m<n+qWt3[NcT_ .^p.]^-Nʖ.ͻnͻn^<|xBi&B<5=0&CancelAgent&!:@KBL ?0@>;L&Hide PassphraseAgent&45=B8D8:0F8O &IdentityAgent&<O&NameAgent&0@>;L &PassphraseAgent &SSID&SSIDAgent"&<O ?>;L7>20B5;O &UsernameAgent8= &WPS&WPS PinAgent......Agent<html><head/><body><p>@8=OBL 8 8A?>;L7>20BL >B25BK, ?@54>AB02;5==K5 20<8 2 MB>< 480;>35. </p><p>-B> >B?@028B 2254Q==K9 40==K5 45<>=C connman 4;O ?@>4>;65=8O ?@>F5AA0 ?>4:;NG5=8O.</p></body></html>

    Accept and use the answers you have provided in this dialog.

    This will send your input to the connman daemon to continue the connection process.

    Agent<html><head/><body><p>B<5=8BL ?@>F5AA ?>4:;NG5=8O.<br/></p></body></html>K

    Cancel the connection process.

    Agent$<html><head/><body><p>B<5=8BL 480;>3. </p><p>-B> >B?@028B A>>1I5=85 45<>=C connman > B><, GB> 2K >B<5=8;8 7?@>A =0 ?>4:;NG5=85.</p></body></html>

    Cancel the dialog.

    This will send a message to the connman daemon that you have cancelled the connection request.

    Agent<html><head/><body><p>#AB0=>28B5 MB>B D;06>:, GB>1K A:@KBL A8<2>;K ?0@>;O.</p></body></html>Z

    Check this box to obscure the password characters.

    Agent<html><head/><body><p>Connman 70?@0H8205B >B:@KBL 251-1@0C75@, GB>1K 7025@H8BL ?@>F5AA 2E>40.</p><p>K ?@>A:0=8@>20;8 20H #", 4;O 1@0C75@>2 8 2A5 =0945==K5 1@0C75@K ?>:070=K 2 A?8A:5 =865. K <>65B5 2K1@0BL ;N1>9 >48= 1@0C75@, GB>1K 8A?>;L7>20BL 53> 4;O 2E>40. A;8 20H 251-1@0C75@ >BACBAB2C5B 2 A?8A:5, 22548B5 53> =0720=85 =5?>A@54AB25==> 2 ?>;5 <span style=" font-weight:600;">K15@8B5 1@0C75@ 8;8 22548B5 53> =0720=85</span>.</p><p>;O 70?CA:0 1@0C75@0 =06<8B5 :=>?:C <span style=" font-weight:600;">0?CAB8BL 1@0C75@</span>. </p><p>A;8 2K E>B8B5 2>9B8 2@CG=CN, 70:@>9B5 MB> >:=>, 70?CAB8B5 251-1@0C75@ 8 ?5@5948B5 ?> URL-04@5AC, C:070==><C ?>;5 <span style=" font-weight:600;">URL-04@5A 2E>40</span>.</p></body></html>

    Connman is requesting that you open a web browser to complete the login process.

    We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the Choose or enter a browser box.

    To launch the browser click the Launch Browser button.

    If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the Login URL box.

    Agent&<html><head/><body><p>Connman 70?@0H8205B ?@>4>;65=85 2E>40 A ?><>ILN 1@0C75@0. -B> ?>;5 ?>:07K205B URL-04@5A A> AB@0=8F59 2E>40.</p></body></html>

    Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.

    Agent<html><head/><body><p>@>4>;68BL ?@>F5AA ?>4:;NG5=8O.</p></body></html>H

    Continue the connection process.

    Agentp<html><head/><body><p>2548B5 ?8= WPS.</p></body></html>8

    Enter a WPS pin.

    Agent<html><head/><body><p>A;8 AB0@K9 ?0@>;L 4>ABC?5=, B> >= 1C45B ?>:070= 745AL 4;O A?@02:8.</p></body></html>n

    If an old passphrase is available it will be shown here for reference.

    Agent<html><head/><body><p>2548B5 8<O A:@KB>9 A5B8, : :>B>@>9 2K E>B8B5 ?>4:;NG8BLAO.</p></body></html>c

    Type the name of the hidden network you wish to connect to.

    Agentz<html><head/><body><p>2548B5 ?0@>;L 745AL.</p></body></html>A

    Type the passphrase here.

    Agent<html><head/><body><p>2548B5 AB@>:C 20H59 845=B8D8:0F88 4;O @0AH8@O5<>3> ?@>B>:>;0 0CB5=B8D8:0F88</p></body></html>e

    Type your Identity for the Extensible Authentication Protocol

    AgentB<html><head/><body><p>A?>;L7C9B5 MBC :=>?:C 4;O 70?CA:0 C:070==>3> 1@0C75@0. @0C75@ >B:@>5BAO =0 AB@0=8F5, ?>:070==>9 2 ?>;5 URL-04@5A 2E>40.</p></body></html>

    Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.

    Agentj<html><head/><body><p>0@>;L WISPr.</p></body></html>7

    WISPr password.

    Agent~<html><head/><body><p><O ?>;L7>20B5;O WISPr.</p></body></html>7

    WISPr username.

    Agent^<html><head/><body><p>'B> MB></p></body></html>3

    What's This

    Agent<html><head/><body><p>>340 AB>8B D;06>:, 8A?>;L7C5BAO 0CB5=B8D8:0F8O A ?><>ILN :=>?:8 0CB5=B8D8:0F88 WPS.</p></body></html>Z

    When checked use WPS push button authentication.

    Agent0==K5 035=B0 Agent InputAgent@0?@>H5= 2E>4 A ?><>ILN 1@0C75@0Browser Login RequestedAgentTK15@8B5 1@0C75@ 8;8 22548B5 53> =0720=85:Choose or enter a browser:AgentR 0AH8@O5<K9 ?@>B>:>; 0CB5=B8D8:0F88 (EAP)(Extensible Authentication Protocol (EAP)Agent!:@KB0O A5BLHidden NetworkAgent$0?CAB8BL &1@0C75@Launch &BrowserAgent URL-04@5A 2E>40: Login URL:AgentO&KO&KAgent&!B0@K9 ?0@>;LO&ld PassphraseAgent 0@>;L PassphraseAgent&0@>;L Passwor&dAgent:#=8:0;L=K9 845=B8D8:0B>@ A5B8Service Set IdentifierAgentbA?>;L7>20BL 0CB5=B8D8:0F8N A ?><>ILN &:=>?:8 WPSUse Push &Button AuthenticationAgent@0I8IQ==0O =0AB@>9:0 Wi-Fi (WPS)WiFi Protected Setup (WPS)Agentp >C<8=3 ?>AB02I8:0 CA;C3 15A?@>2>4=>3> 8=B5@=5B0 (WISPr)2Wireless Internet Service Provider roaming (WISPr)Agent 8=D>@<0F8O Information AgentDialogK 70?@>A8;8 1@0C75@ %1, => <K =5 <>65< =09B8 ?@>3@0<<C B5@<8=0;0 4;O 53> >B:@KB8O.  =0AB>OI55 2@5<O <K <>65< 70?CAB8BL %1, 8A?>;L7CO A;54CNI85 B5@<8=0;K: <b>roxterm</b> 8 <b>xterm</b>.<br><br>;O ?@>4>;65=8O 20< =C6=> >B:@KBL B5@<8=0; 2@CG=CN 8 70B5< 225AB8: "%1 %2"You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: roxterm and xterm.

    To continue you need to manually open a terminal and then enter: "%1 %2" AgentDialog.0?@>A 035=B0 =5 C40;AOAgent Request Failed ConnmanAgentH81:0 Connman Connman Error ConnmanAgentConnman 25@=C; A;54CNICN >H81:C: <b><center>%1</b><br>K E>B8B5 ?>?@>1>20BL A=>20?RConnman returned the following error:
    %1
    Would you like to retry? ConnmanAgentX0?@>A 035=B0 =5 C40;AO 4> 2>72@0B0 >B:;8:0.5The agent request failed before a reply was returned. ConnmanAgent%L1 109B>2 %L1 BytesConnmanCounter %L1 %L1 GBConnmanCounter %L1 %L1 KBConnmanCounter %L1 %L1 MBConnmanCounter%n ?0:5B%n ?0:5B0%n ?0:5B>2 %Ln Packet(s)ConnmanCounter%n 45=L %n 4=O%n 4=59 %n Day(s)ConnmanCounter %n G0A%n G0A0%n G0A>2 %n Hour(s)ConnmanCounter%n <8=CB0%n <8=CBK%n <8=CB %n Minute(s)ConnmanCounter%n A5:C=40%n A5:C=4K%n A5:C=4 %n Second(s)ConnmanCounter<b>5@540=>:</b><br>A53> TX: %1 (%2), >H81>: TX: %3, ?@>?CI5==KE TX: %4FTransmit:
    TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4ConnmanCounterH<br><br><b>@5<O A>548=5=8O:</b><br>

    Connect Time:
    ConnmanCounter<br><br><b>>;CG5=>:</b><br>A53> RX: %1 (%2), >H81>: RX: %3, ?@>?CI5==KE RX: %4N

    Received:
    RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4ConnmanCounter.0?@>A 035=B0 =5 C40;AOAgent Request FailedConnmanVPNAgentH81:0 Connman Connman ErrorConnmanVPNAgentConnman 25@=C; A;54CNICN >H81:C: <b><center>%1</b><br>K E>B8B5 ?>?@>1>20BL A=>20?RConnman returned the following error:
    %1
    Would you like to retry?ConnmanVPNAgentX0?@>A 035=B0 =5 C40;AO 4> 2>72@0B0 >B:;8:0.5The agent request failed before a reply was returned.ConnmanVPNAgentX"5E=>;>388 Wi-Fi:<br>=0945=> %1, 2:;NG5=> %2. WiFi Technologies:
    %1 Found, %2 Powered ControlBox 2=8<0=85 Warning ControlBox%1 (%2) A5BL%1 (%2) Network ControlBox.%1 - :@8B8G5A:0O >H81:0%1 - Critical Error ControlBox%1 - 2=8<0=85 %1 - Warning ControlBox@%1 6C@=0; 87<5=5=89 =5 4>ABC?5=.%1 change log is not available. ControlBox%1 25@A8O %2 by %3 1K;0 >1=0@C65=0 2 MB>9 A8AB5<5.<p>-B>B A5@25@ ?>445@68205B A?5F8D8:0F8N C254><;5=89 @01>G53> AB>;0 25@A88 %4z%1 version %2 by %3 has been detected on this system.

    This server supports desktop Notification Specification version %4 ControlBox%15B%1%1 %1Off%1%1 ControlBox%15B%1%1 tethering %1Off%1%1 ControlBox%10%1%1%1On%1%1 ControlBox%10%1%1 tethering%1On%1%1 ControlBox& ?@>3@0<<5&About ControlBox&AwOken&AwOken ControlBox&!GQBG8:8 &Counters ControlBox&>4@>1=>AB8&Details ControlBox &K9B8&Exit ControlBox&!?@02:0&Help ControlBox&5=LH5&Less ControlBox&8F5=78O&License ControlBox&@54?>GB5=8O &Preferences ControlBox&QT&QT ControlBox&!>AB>O=85&Status ControlBox$&5A?@>2>4=K5 A5B8 &Wireless ControlBox...... ControlBox*<b>!>548=5=85:</b> %1Connection: %1 ControlBox"<b>!;C610:</b> %1Service: %1 ControlBox&<br><b>IPv4</b><br>
    IPv4
     ControlBox&<br><b>IPv6</b><br>
    IPv6
     ControlBox6<br><b>!5@25@K 8<Q=</b><br>
    Name Servers
     ControlBox*<br><b>@>:A8</b><br>
    Proxy
     ControlBoxH<br><b>>4@>1=>AB8 > A;C615:</b><br>
    Service Details:
     ControlBox@<br><b>5A?@>2>4=K5 A5B8</b><br>
    Wireless
     ControlBox6<br><br><b>Ethernet</b><br>

    Ethernet
     ControlBoxD<br><br><b>><5=K ?>8A:0</b><br> #

    Search Domains
     ControlBoxH<br><br><b>!5@25@K 2@5<5=8</b><br> !

    Time Servers
     ControlBox<center><b>5 C40;>AL =09B8 A8AB5<=K9 ;>B>: 2 MB>9 A8AB5<5.</b><center><br>-B0 ?@>3@0<<0 2AQ-5IQ <>65B 1KBL 8A?>;L7>20=0 4;O C?@025=8O 20H8<8 A>548=5=8O<8, => 7=0G>: 2 A8AB5<=>< ;>B:5 >B@060BLAO =5 1C45B.<center><br><br>A;8 2K 2848B5 MB> A>>1I5=85 ?@8 703@C7:5 A8AB5<K 8 2K 7=05B5, GB> A8AB5<=K9 ;>B>: 1C45B ?>A;5 703@C7:8 A8AB5<K, ?>?KB09B5AL 70?CAB8BL A >?F859 <b>-w</b> 8 CAB0=>28BL =C6=CN 7045@6:C. ">G=>5 2@5<O >6840=8O 1C45B 7028A5BL >B :>=:@5B=>9 A8AB5<K.

    Unable to find a systemtray on this machine.

    The program may still be used to manage your connections, but the tray icon will be disabled.


    If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the -w switch and set a delay as necessary. The exact wait time will vary from system to system. ControlBox<html><head/><body><p><span style=" font-weight:600;">!?@02:0</span></p><p>!?@02:0 ?> ?@>3@0<<5 2 >A=>2=>< ?@54AB02;5=0 :=>?:>9 &quot;'B> MB>&quot; 2 =86=5< ;52>< C3;C. 06<8B5 MBC :=>?:C 8 70B5< IQ;:=8B5 ?> 8=B5@5ACNI5<C 20A M;5<5=BC. $C=:F8O &quot;'B> MB>&quot; B0:65 4>ABC?=0 G5@57 :>=B5:AB=>5 <5=N =060B85< ?@02>9 :=>?:8 <KH8 =0 :=>?:C, >:=> 8;8 >1;0ABL B5:AB0.</p></body></html>g

    Help

    Program help is mainly provided by the "What's This" button in the lower left corner. Press the button and then click on an item you are interested in. "What's This" is also available via context menu by right clicking on a button, box or text area.

     ControlBoxL<html><head/><body><p><span style=" font-weight:600;">2B>=><=K9 @568<</span></p><p>2B>=><=K9 @568< ?>:07K205B 3;>10;L=K9 ?0@0<5B@ ?> 2:;NG5=8N 2A5E A5B52KE CAB@>9AB2. :;NG5=85 02B>=><=>3> @568<0 ?@8254QB : >B:;NG5=8N CAB@>9AB2. >340 02B>=><=K9 @568< =5 0:B828@>20=, >B45;L=K5 4;O :064>3> CAB@>9AB20 ?@028;0 >?@545;ONB, 2:;NG0BL ;8 CAB@>9AB2> A=>20. </p><p>@8 02B>=><=>< @568<5 2AQ-5IQ <>6=> 2:;NG0BL B5E=>;>388 2@CG=CN. 0?@8<5@, >B45;L=>5 8A?>;L7>20=85 CAB@>9AB2 Wi-Fi 8;8 Bluetooth <>65B 1KBL @07@5H5=> 2 =5:>B>@KE A8BC0F8OE.</p></body></html>#

    OfflineMode

    The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not.

    During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.

     ControlBoxv<html><head/><body><p>0AB@>9:8 AGQBG8:>2</p></body></html>8

    Counter Settings

     ControlBoxZ<html><head/><body><p>!GQBG8:8 4;O &quot;>=;09=>2>9&quot; A;C61K A>548=5=89, :>B>@0O ?><5G5=0 :0: &quot;@>C<8=3&quot;.</p><p> A;CG05 A A>B>2K<8 A5BO<8 MB> >1KG=> >7=0G05B A>548=5=85 A 8=>AB@0==K< ?@>20945@><. </p><p>!GQBG8:8 <>3CB =5 2A5340 1KBL 4>ABC?=K. !GQBG8:8 <>3CB 1KBL >B:;NG5=K 87 :><0=4=>9 AB@>:8 (-c 8;8 --disable-counters) 8;8 A;CG09=> A>548=5=85 1C45B 70@538AB@8@>20=> :0: &quot;3>B>2>5&quot; 2<5AB> &quot;>=;09=&quot;. =;09=  MB> &quot;3>B>2>5&quot; A>548=5=85, :>B>@>5 8<55B ?@>25@5==>5 A>548=5=85 A 8=B5@=5B><. =;09= <>6=> 1KBL B>;L:> A &quot;3>B>2K<&quot; A>548=5=85<, >4=0:> AGQBG8:8 1C4CB @01>B0BL B>;L:> A &quot;>=;09=>2K<8&quot; A>548=5=8O<8.</p></body></html>

    Counters for the "online" service connection marked "roaming".

    In the case of cellular services this normally indicates connections to a foreign provider.

    Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register "ready" instead of "online". Online is a "ready" connection that has verified internet connectivity. It is possible to be online with only a "ready" connection, however the counters only work for they "online" connection.

     ControlBox<html><head/><body><p>!GQBG8:8 4;O &quot;>=;09=>2>9&quot; A;C61K A>548=5=89, :>B>@0O =5 ?><5G5=0 :0: @>C<8=3. </p><p>!GQBG8:8 <>3CB =5 2A5340 1KBL 4>ABC?=K. !GQBG8:8 <>3CB 1KBL >B:;NG5=K 87 :><0=4=>9 AB@>:8 (-c 8;8 --disable-counters) 8;8 A;CG09=> A>548=5=85 1C45B 70@538AB@8@>20=> :0: &quot;3>B>2>5&quot; 2<5AB> &quot;>=;09=&quot;. =;09=  MB> &quot;3>B>2>5&quot; A>548=5=85, :>B>@>5 8<55B ?@>25@5==>5 A>548=5=85 A 8=B5@=5B><. =;09= <>6=> 1KBL B>;L:> A &quot;3>B>2K<&quot; A>548=5=85<, >4=0:> AGQBG8:8 1C4CB @01>B0BL B>;L:> A &quot;>=;09=>2K<8&quot; A>548=5=8O<8.</p></body></html>9

    Counters for the "online" service connection that is not marked roaming.

    Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register "ready" instead of "online". Online is a "ready" connection that has verified internet connectivity. It is possible to be online with only a "ready" connection, however the counters only work for they "online" connection.

     ControlBox<html><head/><body><p>> C<>;G0=8N =5 8A?>;L7C5BAO :>4 4;O :>=:@5B=>3> >:@C65=8O @01>G53> AB>;0.</p></body></html>L

    Default is no desktop specific code.

     ControlBox<html><head/><body><p>B:;NG5=>, ?>A:>;L:C A59G0A Connman ?@8<5B MBC =0AB@>9:C, => =8G53> =5 A45;05B A =59.</p></body></html>

    Disabled because currently Connman will accept this option but will do nothing with it.

     ControlBox <html><head/><body><p>>:070BL 480;>3>2>5 >:=>, A>45@60I55 8=D>@<0F8N =01>@5 7=0G:>2, 8A?>;L7C5<KE MB>9 ?@>3@0<<>9. </p></body></html>}

    Display a dialog box containing information about the Icon set used in this program.

     ControlBoxB<html><head/><body><p>B>1@0605B 480;>3>2>5 >:=>, A>45@60I55 8=D>@<0F8N > =01>@5 8=AB@C<5=B>2 QT, 8A?>;L7>20==>< 4;O @07@01>B:8 MB>9 ?@>3@0<<K.</p></body></html>

    Display a dialog box containing information about the QT toolkit used to develop this program.

     ControlBox<html><head/><body><p>>:07K205B 480;>3, A>45@60I89 8=D>@<0F8N >1 MB>9 ?@>3@0<<5. </p></body></html>h

    Display a dialog box containing information about this program.

     ControlBoxb<html><head/><body><p>K9B8 87 ?@>3@0<<K 8 C1@0BL 7=0G>: 87 A8AB5<=>3> ;>B:0. Connman 2AQ-5IQ 1C45B 70?CI5= :0: 45<>=, => =5 1C45B C?@02;OBLAO MB>9 ?@>3@0<<>9.</p></body></html>

    Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.

     ControlBox<html><head/><body><p>@8=C48B5;L=>5 A:0=8@>20=85 2A5E B5E=>;>389 WiFi.  01>B05B 845=B8G=> :><0=45 <span style=" font-weight:600;">connmanctl scan wifi</span> 87 :><0=4=>9 AB@>:8.</p><p>=>?:0 1C45B =50:B82=>9, ?>:0 ?@>8AE>48B A:0=8@>20=85.</p></body></html>

    Force a rescan of all WiFi technologies. This is similar to issuing the command connmanctl scan wifi from the command line.

    The button will become inactive while the scan is occuring.

     ControlBox<html><head/><body><p>0:>9 =01>@ 7=0G:>2 8A?>;L7>20BL. 'B>1K 2K <>3;8 8A?>;L7>20BL MB>B =01>@, >= 4>;65= 1KBL CAB0=>2;5= 2 A8AB5<5. A;8 =01>@ =5 CAB0=>2;5=, 8;8 2K =0?8A0;8 =0720=85 =5?@028;L=>, CMST 1C45B 8A?>;L7>20BL 2=CB@5==89 =01>@ 7=0G:>2.</p><p> A;8 MB> ?>;5 ?CAB>5, CMST ?>?KB05BAO 8A?>;L7>20BL >1I5A8AB5<=CN B5<C 7=0G:>2 (5A;8 >=0 >?@545;5=0).</p></body></html>L

    Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.

    If this box is blank CMST will try and use the system wide icon theme (if one is defined).

     ControlBox(<html><head/><body><p>A;8 C A;C61K Connman 1C45B &quot;A1>9&quot;, >=0 ?> C<>;G0=8N 1C45B >AB020BLAO 2 MB>< A>AB>O=88.</p><p>A;8 745AL AB>8B D;06>:, CMST 02B><0B8G5A:8 ?>?KB05BAO ?5@5?>4:;NG8BLAO : A;C615 WiFi, =0E>4OI59AO 2 A>AB>O=88 A1>O&quot;A1>O&quot;.</p></body></html>

    If a Connman service falls into the "Failed" state it will normally remain in that state.

    If this box is checked CMST will try to automatically reconnect a WiFi service that enters the "Failed" state.

     ControlBoxD<html><head/><body><p>A;8 ?>AB02;5=0 30;>G:0, CMST ?><5AB8B M;5<5=B 2 ?0?:C 02B>70?CA:0 B5:CI53> ?>;L7>20B5;O, A=OB85 30;>G:8 C40;8B MB>B M;5<5=B. 1KG=> MB> ?0?:0: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST 4>1028B 8;8 C40;8B B>;L:> .desktop-D09; 87 ?0?:8 02B>70?CA:0. 2B>70?CA: >1KG=> 7028A8B >B 20H53> >:@C65=8O @01>G53> AB>;0 8 4>;65= 1KBL 2:;NGQ= >BAN40.</p></body></html>

    If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: ${HOME}/.config/autostart.

    CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.

     ControlBox<html><head/><body><p>A;8 ?>AB02;5= D;06>:, 7=0G>: 7=0G>: =5 1C45B >B>1@060BLAO 2 A8AB5<=>< ;>B:5.</p></body></html>f

    If checked an icon will not be displayed in the system tray.

     ControlBox<html><head/><body><p>A;8 CAB0=>2;5= D;06>:, >B>1@065=85 ?>4A:07>: 1C45B 2:;NG5=> 4;O 28465B>2 8=B5@D59A0.</p><p>>4A:07:8  MB> =51>;LH85 2A?;K20NI85 >:=0, :>B>@K5 ?>O2;ONBAO ?@8 =02545=88 C:070B5;O <KH8 =0 >1;0ABL 8=B5@D59A0. </p></body></html>

    If checked the display of tooltips will be enabled for the interface widgets.

    Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface.

     ControlBox<html><head/><body><p>A;8 CAB0=>2;5= D;06>:, B> A8AB5<=K9 45<>= C254><;5=89 ?>:065B ?@54C?@5645=85, :>340 1C45B ?>;CG5=> 7=0G8B5;L=>5 A>1KB85 >B connman.</p><p>#254><;5=8O <>3CB 1KBL >1@01>B0=K A 8A?>;L7>20=85< 7=0G:0 2 A8AB5<=>< ;>B:5 8;8 45<>=>< C254><;5=89, 5A;8 >= CAB0=>2;5=. 10 A?>A>10 =5 <>3CB 1KBL 0:B82=K<8 2 >4=> 8 B> 65 2@5<O.</p></body></html>A

    If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.

    Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.

     ControlBox0<html><head/><body><p>A;8 ?>AB02;5= D;06>:, 2 A8AB5<=>< ;>B:5 1C45B ?>O2;OBLAO A>>1I5=8O > A>AB>O=88 ?@8 =02545=88 =0 7=0G>: :C@A>@0.</p></body></html>

    If checked the system tray icon will popup a status message when you hover the mouse over it.

     ControlBox<html><head/><body><p>A;8 CAB0=>2;5= D;06>:, B> A8AB5<=K9 ;>B>: ?>:065B A>>1I5=85, :>340 1C45B ?>;CG5=> 7=0G8B5;L=>5 A>1KB85 >B connman.</p><p>#254><;5=8O <>3CB 1KBL >1@01>B0=K A 8A?>;L7>20=85< 7=0G:0 2 A8AB5<=>< ;>B:5 8;8 45<>=>< C254><;5=89, 5A;8 >= CAB0=>2;5=. 10 A?>A>10 =5 <>3CB 1KBL 0:B82=K<8 2 >4=> 8 B> 65 2@5<O.</p></body></html>%

    If checked the system tray will popup a notify message when a significant connman related event is received.

    Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.

     ControlBox<html><head/><body><p>!25@=CBL MB>B 480;>3. A;8 C 20A >B>1@>605BAO 7=0G>: 2 A8AB5<=>< ;>B:5, MB>B 480;>3 <>65B 1KBL 2>AAB0=>2;5= =060B85< ?@02>9 :=>?:8 <KH8 =0 MB>< 7=0G:5. A;8 7=0G>: 2 A8AB5<=>< ;>B:5 A?@OB0=, B> A2>@0G820=85 =5 1C45B 4>ABC?=>.</p></body></html>

    Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.

     ControlBox<html><head/><body><p>1KG=> AGQBG8:8 254CB CGQB =0@0AB0NI8< 8B>3><, 0 B0:65 A>E@0=ONB 2@5<O ?>4:;NG5=8O 8 G8A;> TX 8 RX <564C 703@C7:0<8. </p><p>>340 MB>B D;06>: CAB0=>2;5=, B> AG5BG8:8 1C4CB A1@0AK20BLAO 4> =C;O :064K9 @07, :>340 CMST 70?CA:05BAO, 8 5A;8 CMST 2K?>;=O5BAO :064K9 @07, :>340 70?CI5=0 A;C610 Connman. </p></body></html>-

    Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots.

    When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started.

     ControlBox<html><head/><body><p>B:@KBL @540:B>@ :>=D83C@0F88 4;O A>740=8O 8;8 @540:B8@>20=8O D09;>2 =0AB@>9:8 (?>43>B>2:8 : @01>B5) Connman.</p><p>-B8 D09;K =0E>4OBAO 2 /var/lib/connman, 2;O45;LF5< :>B>@>9 O2;O5BAO root:root. CMST 70@535AB@8@C5B roothelper 4;O ?>;CG5=8O @07@5H5=8O =0 70?8AL 8 GB5=85 D09;>2 2 MBC ?0?:C. </p><p>;O 871560=8O 7;>C?>B@51;5=85< ?@020<8 AC?5@?>;L7>20B5;O, @540:B>@ 1C45B @01>B0BL B>;L:> A D09;0<8, 70:0=G820NI8<8AO =0 <span style=" font-style:italic;">.cmst.config</span>. -B> >:>=G0=85 8<5=8 D09;0 1C45B 7040=> 02B><0B8G5A:8 2> 2@5<O A>E@0=5=8O D09;0 8 =5 <>65B 1KBL 87<5=5=>. </p><p>! ?><>ILN MB>3> @540:B>@0 =52>7<>6=> 87<5=8BL 8;8 C40;8BL D09;K =0AB@>9:8, A>740==K5 A ?><>ILN 4@C38E A@54AB2.</p></body></html>

    Open the provisioning editor to create or edit Connman configuration (provisioning) files.

    These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory.

    To avoid abusing the root privileges the editor will only operate on files with names ending in .cmst.config. This file name ending will be added automatically during a file save and cannot be altered.

    Using this editor it is not possible to edit or delete config files created by other means.

     ControlBox<html><head/><body><p>@54?>GB5=8O 4;O 8=B5@D59A0 =0E>4OBAO 2 MB>< ?>;5.</p></body></html>V

    Preferences for the interface are in this box.

     ControlBox<html><head/><body><p>@54?>GB5=8O 4;O A8AB5<=>3> ;>B:0 =0E>4OBAO 2 MB>< ?>;5.</p></body></html>X

    Preferences for the system tray are in this box.

     ControlBox<html><head/><body><p>K15@8B5 A;C61C Wi-Fi 2 B01;8F5 =865, 8 =06<8B5 MBC :=>?:C, GB>1K ?>4:;NG8BLAO : MB>9 A;C615. </p><p>A;8 2 B01;8F5 B>;L:> >4=0 A;C610 wifi, B> ?@8 =060B88 MB>9 :=>?:8 MB0 A;C610 2K15@5BAO 02B><0B8G5A:8 8 : =59 1C45B ?@54?@8=OB0 ?>?KB:0 ?>4:;NG5=8O. </p><p>A;8 1C45B =C6=0 8=D>@<0F8O > A;C615, ?0@>;L, =0?@8<5@, 20< 1C45B ?@54;>65=> 225AB8 53>.</p></body></html>{

    Select a wifi service in the table below and press this button to connect the service.

    If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect.

    If information about the service is needed, a passphrase for instance, you will be prompted for it.

     ControlBox<html><head/><body><p>K15@8B5 Wi-Fi A;C61C 2 B01;8F5 A=87C 8 =06<8B5 MBC :=>?:C, GB>1K >B:;NG8BLAO >B =5Q. </p><p>A;8 5ABL B>;L:> >4=0 Wi-Fi A;C610 2 A>AB>O=88 &quot;>B>20&quot; 8;8 &quot;=;09=&quot;, =060B85 =0 MB5 :=>?:C 02B><0B8G5A:8 2K15@5B 5Q 8 >B:;NG8BAO >B =5Q. </p><p>-B> B0:65 <>65B 1KBL 8A?>;L7>20=> 4;O >B<5=K ?@54K4CI59 ?>?KB:8 A>548=5=8O.</p></body></html>j

    Select a wifi service in the table below and press this button to disconnect it.

    If there is only one wifi service in the "ready" or "online" state pressing this button will automatically select that service and disconnect it.

    This may also be used to abort a previous connection attempt.

     ControlBox,<html><head/><body><p>#:068B5 >1J5< 40==KE 2 :8;>109B0E, :>B>@K9 4>;65= 1KBL ?5@540= 4> >1=>2;5=8O AG5BG8:>2 (?> C<>;G0=8N 1024 ).</p></body></html>

    Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).

     ControlBoxV<html><head/><body><p>#:068B5 >1J5< 40==KE 2 :8;>109B0E, :>B>@K9 4>;65= 1KBL ?5@540= 4> >1=>2;5=8O AG5BG8:>2 (?> C<>;G0=8N 1024 ).</p><p>Connman ?@8<5B MB>B ?0@0<5B@, => A>3;0A=> :><<5=B0@8N 2 :>45 Connman MB0 DC=:F8O 2AQ 5IQ B@51C5B @07@01>B:8, 8 2K1>@, A;54>20B5;L=>, >B:;NG5=.</p></body></html>A

    Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).

    Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.

     ControlBox<html><head/><body><p>#:068B5 F25B D>=0, :0: H5AB=04F0B5@8G=>5 G8A;> 2 D>@<0B5 RRGGBB.</p></body></html>k

    Specify the background color as a hex number in the format: RRGGBB.

     ControlBox<html><head/><body><p>#:068B5 G0AB>BC 2 A5:C=40E <564C >1=>2;5=8O<8 ?>:070=89 AGQBG8:0 (?> C<>;G0=8N 0 A5:C=4).</p></body></html>z

    Specify the frequency in seconds between counter updates (default is 10 seconds).

     ControlBox<html><head/><body><p>#:068B5 2@5<O >6840=8O 2 A5:C=40E ?5@54 70?CA:>< 7=0G:0 2 A8AB5<=>< ;>B:5 (?> C<>;G0=8N 0 A5:C=4).</p></body></html>

    Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).

     ControlBoxl<html><head/><body><p>5B>4 =0AB@>9:8 ?> C<>;G0=8N 4;O 2A5E A;C61  02B><0B8G5A:89 8;8 GB>-B> 2@>45 DHCP. = 4>;65= ?>4E>48BL 4;O 1>;LH8=AB20 ?>;L7>20B5;59, 2 ?@>B82=>< A;CG05 MB0 :=>?:0 ?>72>;8B @CG=CN =0AB@>9:C ?0@0<5B@>2 Ethernet 8 IP 4;O 2K1@0==>9 A;C61K.</p><p>-B0 :=>?:0 1C45B =50:B82=0, 5A;8 A;C610 :>=D83C@8@C5BAO 2=5H=8< D09;>< 8;8 5A;8 A;C610  MB> A:@KB0O Wi-Fi A5BL. !2>9AB20 B0:8E A;C61 =52>7<>6=> 87<5=8BL.</p></body></html>

    The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.

    This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.

     ControlBoxp<html><head/><body><p>1I55 A>AB>O=85 ?>4:;NG5=8O A8AB5<K. >7<>6=K5 7=0G5=8O: &quot;>D;09=&quot;, &quot;?@>AB08205B&quot;, &quot;3>B>2>&quot;, 8 &quot;>=;09=&quot;. </p></body></html>

    The global connection state of the system. Possible values are "offline", "idle", "ready", and "online".

     ControlBox<html><head/><body><p>;>10;L=K9 ?0@0<5B@ 4;O 2:;NG5=8O 8 2K:;NG5=8O 2A5E A5B52KE CAB@>9AB2. >340 02B>=><=K9 @568< 0:B828@>20=, 2A5 A5B52K5 CAB@>9AB20 >B:;NG0NBAO.</p><p>While in offline mode it is possible to turn individual devices back on. @8 2KE>45 87 02B>=><=>3> @568<0 >B45;L=K5 ?@028;0 4;O :064>3> CAB@>9AB20 >?@545;ONB, 2:;NG8BAO ;8 >=> A=>20.</p></body></html>X

    The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.

    While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.

     ControlBox<html><head/><body><p>-BC A;C61C >BA;56820NB AGQBG8:8.</p></body></html>T

    The service being monitored by the counters.

     ControlBox\<html><head/><body><p>>@>3>2K5 7=0G5=8O 4;O >1=>2;5=8O ?>:070=89 AGQBG8:>2 (@07@5H5=85 AGQBG8:0). ;O MB>3> CG8BK205BAO :0: :>;8G5AB2> 40==KE, B0: 8 2@5<O.</p></body></html>

    The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.

     ControlBox<html><head/><body><p>-B8 =0AB@>9:8 :>=B@>;8@CNB @07;8G=K5 >?F88 ?@8 703@C7:5 CMST. </p><p>A5 MB8 >?F88 4>ABC?=K 87 :><0=4=>9 AB@>:8, 8 5A;8 >=8 7040=K 2 :><0=4=>9 AB@>:5, B> >=8 ?>;CG0NB ?@58<CI5AB2> =04 MB8<8 =0AB@>9:0<8.</p></body></html>

    These entries control various options for CMST at program start.

    All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.

     ControlBox<html><head/><body><p> MB>< ?>;5 ?5@5G8A;5=K 2A5 A;C61K, : :>B>@K< connman <>65B ?>4:;NG8BLAO.</p></body></html>`

    This box lists all services that connman can connect to.

     ControlBox<html><head/><body><p>-B>B D;06>: C?@02;O5B 3;>10;L=K< ?0@0<5B@>< ?> 2:;NG5=8N 8;8 2K:;NG5=8N 2A5E A5B52KE CAB@>9AB2. >340 D;06>: CAB0=>2;5=, CAB@>9AB20 2K:;NG5=K.</p><p>>340 A8AB5<0 =0E>48BAO 2 02B>=><=>< @568<5, <>6=> 2:;NG8BL >B45;L=K5 CAB@>9AB20. @8 2KE>45 87 02B>=><=>3> @568<0 >B45;L=K5 ?@028;0 4;O :064>3> CAB@>9AB20 >?@545;ONB, 2:;NG8BAO ;8 >=> A=>20.</p></body></html>l

    This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.

    When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.

     ControlBox<html><head/><body><p>-B0 <5B:0 ?>:07K205B :>;8G5AB2> Wi-Fi B5E=>;>389 (CAB@>9AB2), :>B>@K5 1K;8 =0945=K, 8 :>;8G5AB2> B5E=>;>389, :>B>@K5 2:;NG5=K. >;6=0 1KBL =0945=0 8 2:;NG5=0 :0: <8=8<C< >4=0 B5E=>;>38O Wi-Fi 4;O B>3>, GB>1K 2 ?>;5 A=87C >B>1@060;8AL CA;C38</p><p>'B>1K 2:;NG8BL 8 2K:;NG8BL B5E=>;>38N, ?5@5948B5 : B01;8F5 <span style=" font-weight:600;">"5E=>;>388</span> =0 2:;04:5 <span style=" font-weight:600;">!>AB>O=85</span> 8 A45;09B5 42>9=>5 =060B85 <KHLN ?> B5:ABC 2 AB>;1F5 <span style=" font-weight:600;">:;NG5=></span> 4;O MB>9 B5E=>;>388.</p></body></html>

    This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.

    To turn a technology on or off go to the Technologies box in the Status tab and double click on the text that shows in the Powered column for the technology.

     ControlBox~<html><head/><body><p>0 MB>9 AB@0=8F5 ?>:070=K 4>ABC?=K5 A;C61K Wi-Fi. </p><p><span style=" font-weight:600;"><O:</span> SSID A5B8.</p><p><span style=" font-weight:600;">71@0==>5:</span> A><2>; A5@4F0 2 MB>< AB>;1F5 >7=0G05B, GB> MB>B :><?LNB5@ @0=55 ?>4:;NG0;AO : A5B8 G5@57 MBC A;C61C.</p><p><span style=" font-weight:600;">>4:;NG5=>:</span> ?>:07K205B A>AB>O=85 A>548=5=8O MB>9 A;C61K. 02548B5 :C@A>@ =0 7=0G>:, GB>1K C2845BL 2A?;K20NI55 B5:AB>2>5 >?8A0=85. =;09= >7=0G05B, GB> A>548=5=8O A 8=B5@=5B>< 4>ABC?=K 8 1K;8 ?@>25@5=K. >B>2 >7=0G05B CA?5H=> ?>4:;NGQ==>5 CAB@>9AB2>. </p><p><span style=" font-weight:600;">57>?0A=>ABL: </span>>?8AK205B B8?K H8D@>20=8O, 8A?>;L7C5<K5 MB>9 A;C61>9. >7<>6=K5 7=0G5=8O &quot;=5B&quot;, &quot;WEP&quot;, &quot;PSK&quot;, &quot;IEEE 8021.X&quot; 8 &quot;WPS&quot;.</p><p><span style=" font-weight:600;">!8;0 A83=0;0:</span> A8;0 A83=0;0 Wi-Fi, =>@<0;87>20==0O ?> H:0;5 >B 0 4> 100.</p><p><br/></p></body></html>

    This page shows the known WiFi services.

    Name: The SSID of the network.

    Favorite: A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.

    Connected: Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device.

    Security: Describes the type of security used for this service. Possible values are "none", "wep", "psk", "ieee8021x", and "wps".

    SIgnal Strength: The strength of the WiFi signal, normalized to a scale of 0 to 100.


     ControlBox<html><head/><body><p>A?>;L7>20BL :>4, A?5F8D8G=K9 4;O 2K1@0==>3> >:@C65=8O @01>G53> AB>;0.</p><p>0G8=0O A 25@A88 2014.11.24 :065BAO ACI5AB2C5B ?@>1;5<0 A Qt 5.3 8 =5:>B>@K<8 A8AB5<=K<8 ;>B:0<8.  ?@>3@0<<5 5ABL :>4, A?><>ILN :>B>@>3> <>6==> ?>?KB0BLAO >1>9B8 MBC ?@>1;5<C, 8 2K1>@ >4=>3> 87 MB8E ?C=:B>2 ?@8<5=8B :>4, A?5F8D8G=K9 4;O >:@C65=8O @01>G53> AB>;0.</p><p>A;8 >H81:0 1C45B CAB@0=5=0, MB8 >?F88 >AB0=CBAO 4;O B>3>, GB>1K =5 ?>@B8BL 703@C7>G=K9 A:@8?B, => >=8 C65 =5 1C4CB =8 =0 GB> 2;8OBL.</p></body></html>

    Use code specific for the selected desktop environment.

    As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.

    If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.

     ControlBox<<html><head/><body><p>A?>;L7C9B5 MB>B 2K?040NI89 A?8A>:, GB>1K 2K1@0BL A;C61C, 4;O :>B>@>9 2K E>B8B5 ?@>A<>B@5BL ?>4@>1=CN 8=D>@<0F8N.<br/></p></body></html>

    Use this Combobox to select the service for which you wish to view the detailed information.

     ControlBox<html><head/><body><p>A?>;L7C9B5 MBC :=>?:C, GB>1K C7=0BL >1 M;5<5=B5 GUI G5@57 @568< &quot;'B> MB>&quot;. </p><p>K B0:65 <>65B5 =060BL ?@02CN :=>?:C <KH8 =0 M;5<5=B5, GB>1K C2845BL B5:AB &quot;'B> MB>&quot; 4;O =53>.</p></body></html>

    Use this button to find information about an element in the GUI by entering "What's This" mode.

    You may also right click on an element to show the "What's This" text for it.

     ControlBox<html><head/><body><p>A?>;L7C9B5 MBC :=>?:C, GB>1K C2845BL 6C@=0; 87<5=5=89 MB>9 ?@>3@0<<K.</p></body></html>^

    Use this button to view the change log of the program.

     ControlBox<html><head/><body><p>A?>;L7C9B5 MBC :=>?:C, GB>1K C2845BL ;8F5=78N =0 MBC ?@>3@0<<C.</p></body></html>T

    Use this button to view the program license.

     ControlBox^<html><head/><body><p>'B> MB></p></body></html>3

    What's This

     ControlBox<html><head/><body><p>>340 AB>8B D;06>:, >B>1@060NBAO 4>?>;=8B5;L=K5 =0AB@>9:8 4;O >?KB=KE ?>;L7>20B5;59.</p></body></html>j

    When checked additional controls for advanced users are displayed.

     ControlBox<html><head/><body><p>>340 AB>8B D;06>:, ?@OG5B 8<O A>548=5=8O 2 ?>;5 !;C61K.</p></body></html>b

    When checked hide the connection name in the Services box.

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>#:068B5 G0AB>BC 2 A5:C=40E <564C >1=>2;5=8O<8 AGQBG8:0 (?> C<>;G0=8N 10 A5:C=4). </p></body></html>
    Command Line Option: --counter-update-rate

    Specify the frequency in seconds between counter updates (default is 10 seconds).

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>A?>;L7C5BAO 4;O >1E>40 >H81:8 Qt, 87-70 :>B>@>9 7=0G:8 2 A8AB5<=>< ;>B:5 >B>1@0605BAO A 15;K< 8;8 GQ@=K< D>=>< 2<5AB> ?@>7@0G=>3>.</p><p>K <>65B5 C:070BL 745AL F25B D>=0 7=0G:0. $>@<0B  H5AB=04F0B8@8G=>5 G8A;> RRGGBB. A;8 C:070==K9 F25B A>2?0405B A D>=>< A8AB5<=>3> ;>B:0, 7=0G8B <K :0G5AB25==> A>740;8 ?A524>?@>7@0G=>ABL. </p></body></html>
    Command Line Option: --fake-transparency

    Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.

    You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency.

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html>D
    Command Line Option: --use-mate
     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html>D
    Command Line Option: --use-xfce
     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> 8;8 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>B:;NG8BL 7=0G>: 2 A8AB5<=>< ;>B:5.</p><p>>65B ?>=04>18BLAO A8AB5<0<, =5A>2<5AB8<K< A> A?5F8D8:0F859 Freedesktop.org.</p></body></html>
    Command Line Option: -d or --disable-tray-icon

    Disable the system tray icon.

    May be needed for system trays not compliant with the Freedesktop.org system tray specification.

     ControlBox0<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> 8;8 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>A?>;L7>20BL A8AB5<=K9 =01>@ 7=0G:>2. K <>65B5 2K1@0BL =01>@ 2 ?>;5 A?@020 8;8, 5A;8 ?>;5 A;520 >AB02;5=> ?CABK<, CMST ?>?KB05BAO 8A?>;L7>20BLA8AB5<=K9 =01>@ 7=0G:>2 (5A;8 >= >?@545;Q=).</p></body></html>
    Command Line Option: -i or --icon-theme

    Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> 8;8 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>0?CAB8BL 3@0D8G5A:89 ?>;L7>20B5;LA:89 8=B5@D59A A2Q@=CBK< 2 A8AB5<=K9 ;>B>:.</p></body></html>"
    Command Line Option: -m or --minimized

    Start the GUI minimized in the system tray.

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">0@0<5B@ :><0=4=>9 AB@>:8: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> 8;8 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>#:068B5 2@5<O >6840=8O 2 A5:C=40E ?5@54 70?CA:>< 7=0G:0 2 A8AB5<=>< ;>B:5 (?> C<>;G0=8N 0 A5:C=4).</p><p>A;8 CMST 70?CI5= 8 ?KB05BAO A>740BL 7=0G>: 2 A8AB5<=>< ;>B:5 4> 70?CA:0 A8AB5<=>3> ;>B:0, 1C45B >B>1@06Q= 480;>3, >1JOA=ONI89 MB>. -B> 8=>340 ?@>8AE>48B, :>340 ?@>3@0<<0 70?CA:05BAO 02B><0B8G5A:8. A;8 2K 7=05B5, GB> A8AB5<=K9 ;>B>: 1C45B 703@C65= ?@8 70?CA:5 A8AB5<K, 2K <>65B5 C:070BL 2@5<O >6840=8O 8 CMST 1C45B 640BL C:070==>5 :>;8G5AB2> A5:C=4 ?5@54 B5< :0: A>740BL 7=0G>: 2 A8AB5<=>< ;>B:5. -B> =C6=> 4;O B>3>, GB>1K 40BL 2@5<O >:>==><C <5=5465@C 8;8 ?0=5;8 =0 A>740=85 A8AB5<=>3> ;>B:0 ?5@54 ?>?KB:>9 ?><5I5=8O 2 =53> 7=0G:0.</p></body></html>2
    Command Line Option: -w or --wait-time

    Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).

    If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.

     ControlBox:<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">0@0<5B@ :><0=4=>9 AB@>:8: <span style=" font-weight:600;">-c</span> 8;8 <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>B:;NG8BL AGQBG8:8. >65B 1KBL 8A?>;L7>20=> 4;O <8=8<870F88 =03@C7:8 =0 A8AB5<C.</p></body></html>
    Command Line Option: -c or --disable-counters

    Disable the counters. May be used to minimize load on your system.

     ControlBox %1About %1 ControlBox AwOken About AwOken ControlBox0>;CG5=85 04@5A0: %1<br>Address Acquisition: %1
     ControlBox* 0AH8@5==K5 =0AB@>9:8Advanced Controls ControlBox2&B:;NG8BL 2A5 CAB@>9AB20All Devices &Off ControlBoxZ>?KB:0 %1 87 4-E ?>8A:0 A5@25@0 C254><;5=89.0Attempt %1 of 4 looking for notification server. ControlBox22B>?>4A>548=5=85: %1<br>Auto Connect: %1
     ControlBox C&MSTC&MST ControlBox B<5=0Cancel ControlBox"C&@=0; 87<5=5=89 ChangeLo&g ControlBox C@=0; 87<5=5=89 ChangeLog ControlBox0AB@>9:0 Configuration ControlBox>4:;NG8BLAOConnect ControlBox>4:;NG5=> Connected ControlBox!>548=5=85 Connection ControlBox4!?>A>1 ?>4:;NG5=8O: %1<br>Connection Method: %1
     ControlBox!>548=5=85 2 =5@01>B>A?>A>1=>< A>AB>O=88, ?>?KB:0 ?5@5?>4:;NG5=8OLConnection is in the Failure State, attempting to reestablish the connection ControlBoxR!>548=5=85 2 =5@01>B>A?>A>1=>< A>AB>O=88.#Connection is in the Failure State. ControlBoxD!>548=5=85 2 A>AB>O=88 3>B>2=>AB8.!Connection is in the Ready State. ControlBox>!>AB>O=85 A>548=5=8O =58725AB=>Connection status is unknown ControlBox!>548=5=85: %1Connection: %1 ControlBoxt5 C40;>AL A>740BL 8=B5@D59A 4;O connman =0 A8AB5<=>9 H8=5:Could not create an interface to connman on the system bus ControlBoxZ5 C40;>AL =09B8 ?>4:;NG5=85 : A8AB5<=>9 H8=5-Could not find a connection to the system bus ControlBox01=>2;5=85 AGQBG8:>2, Counter Update KB ControlBox:'0AB>B0 >1=>2;5=8O AGQBG8:>2 Counter Update Rate  ControlBox*!GQBG8:8 =5 4>ABC?=K.Counter not available. ControlBoxN;O :>=:@5B=KE >:@C65=89 @01>G53> AB>;0Desktop Specific ControlBox04@5A CAB@>9AB20: %1<br>Device Address: %1
     ControlBox 80;>3Dialog ControlBox$B:;NG8BL AGQBG8:8Disable Counters ControlBoxDB:;NG8BL 7=0G>: 2 A8AB5<=>< ;>B:5Disable Tray Icon ControlBox=5 0:B828@>20=Disabled ControlBoxBA>548=8BLAO Disconnect ControlBox &K9B8E&xit ControlBox&:;NG8BL 02B>70?CA:Enable Autostart ControlBox 07@5H8BL 2A?;K20NI85 C254><;5=8O ?@8 =02545=88 =0 7=0G>: 2 A8AB5<=>< ;>B:5Enable System Tray Popups ControlBox` 07@5H8BL 2A?;K20NI85 ?>4A:07:8 (4;O 8=B5@D59A0)Enable ToolTips (Interface) ControlBox:;NG5=0Enabled ControlBox0:B828@>20=Engaged ControlBoxnH81:0 GB5=8O 8;8 0=0;870 connman.Manager.GetProperties6Error reading or parsing connman.Manager.GetProperties ControlBoxjH81:0 GB5=8O 8;8 0=0;870 connman.Manager.GetServices4Error reading or parsing connman.Manager.GetServices ControlBoxrH81:0 GB5=8O 8;8 0=0;870 connman.Manager.GetTechnologies8Error reading or parsing connman.Manager.GetTechnologies ControlBoxNH81:0 ?@8 ?>;CG5=88 A2>9AB2 G5@57 Dbus$Error retrieving properties via Dbus ControlBox.!>548=5=85 Ethernet<br>Ethernet Connection
     ControlBox>A:;NG0O:<br>&nbsp;&nbsp;%1<br>Excludes:
      %1
     ControlBox:=5H=89 D09; =0AB@>5:: %1<br>#External Configuration File: %1
     ControlBox$A524>?@>7@0G=>ABLFake Transparency ControlBox71@0==>5Favorite ControlBox"71@0==>5: %1<br>Favorite: %1
     ControlBox1I85 A2>9AB20Global Properties ControlBoxB!?@OB0BL 8:>=:C 2 A8AB5<=>< ;>B:5Hide Tray Icon ControlBox><0H=OO A5BLHome ControlBox6>;CG5=85 04@5A0 IP: %1<br>IP Address Acquisition: %1
     ControlBox 4@5A IP: %1<br>IP Address: %1
     ControlBox(;N7 IP: %1<br>IP Gateway: %1
     ControlBox0!5B520O <0A:0 IP: %1<br>IP Netmask: %1
     ControlBox=B5@D59A Interface ControlBox=B5@D59A: %1 Interface: %1 ControlBox"=B5@D59A: %1<br>Interface: %1
     ControlBox8F5=78OLicense ControlBoxMATE ControlBoxMTU: %1<br> MTU: %1
     ControlBox 0&725@=CBL Ma&ximize ControlBox!&25@=CBL Mi&nimize ControlBox><5AB8BL ?>A;5 Move After ControlBox><5AB8BL 4> Move Before ControlBox<OName ControlBox!5B52K5 A;C61K:Network Services: ControlBox5BNo ControlBox5B autoconnectNo ControlBox5B connectedNo ControlBox5B immutableNo ControlBox5BroamingNo ControlBox&5B 2K1@0==KE A;C61No Services Selected ControlBoxD5 4>ABC?=K =8:0:85 A5B52K5 A;C61KNo network services available ControlBox5BNone ControlBox5 ?>4:;NG5=> Not Connected ControlBox5 ?>4:;NG5=> icon_tool_tip Not Connected ControlBox"5<>= C254><;5=89Notification Daemon ControlBox#254><;5=8O Notifications ControlBox$CBL : >1J5:BC: %1Object Path: %1 ControlBoxK:;NG5=>Off ControlBox"2B>=><=K9 @568<  Offline Mode  ControlBox22B>=><=K9 @568< >B:;NGQ=Offline Mode Disabled ControlBox82B>=><=K9 @568< 0:B828@>20=Offline Mode Engaged ControlBox82B>=><=K9 @568<: =54>ABC?=>OfflineMode: Unavailable ControlBox2:;NG5=>On ControlBox2:;NG5=> autoconnectOn ControlBox:;NG5=>Powered ControlBox,;8=0 ?@5D8:A0: %1<br>Prefix Length: %1
     ControlBox(;8=0 ?@5D8:A0: <br>Prefix Length:
     ControlBox4>=D845=F80;L=>ABL: %1<br>Privacy: %1
     ControlBox,@>3@0<<=>5 C?@02;5=85Program Control ControlBox* 540:B>@ :>=D83C@0F88Provisioning Editor ControlBox#40;8BLRemove ControlBox*!:&0=8@>20BL ?>2B>@=>Resc&an ControlBox81=C;OBL ?>:070=8O AGQBG8:>2Reset Counters ControlBoxN>2B>@=>5 ?>A;5 A1>O ?>4:;NG5=85 : A5B8Retry Failed Connection ControlBox >C<8=3Roaming ControlBox >C<8=3: %1<br>Roaming: %1
     ControlBoxSSID: %1<br> SSID: %1
     ControlBox57>?0A=>ABLSecurity ControlBox(57>?0A=>ABL: %1<br>Security: %1
     ControlBox!&;C610Ser&vice ControlBox"!>AB>O=85 A5@25@0 Server Status ControlBox<!5@25@K:<br>&nbsp;&nbsp;%1<br>Servers:
      %1
     ControlBox"H81:0 A;C61K: %1Service Error: %1 ControlBox0!>AB>O=85 A;C61K: %1<br>Service State: %1
     ControlBox$"8? A;C61K: %1<br>Service Type: %1
     ControlBox!;C610:Service: ControlBox!;C610:%1<br>Service: %1
     ControlBox !;C61KServices ControlBox0AB@>9:8: Settings: ControlBox!8;0 A83=0;0Signal Strength ControlBox&0?CA:0BL A2Q@=CBK<Start Minimized ControlBox?F88 70?CA:0 Start Options ControlBox!>AB>O=85State ControlBox!>AB>O=85: State:  ControlBox*!>AB>O=85: =54>ABC?=>State: Unavailable ControlBox!8;0: %1%<br>Strength: %1%
     ControlBox!8;0: %1<br>Strength: %1
     ControlBox!8AB5<=K9 ;>B>: System Tray ControlBox:#254><;5=8O 2 A8AB5<=>< ;>B:5System Tray Notifications ControlBox"5E=>;>388 Technologies ControlBox"5B5@8=3 Tethering ControlBox&@>87>H;0 >H81:0 ?@8 GB5=88 8;8 0=0;875 >B25B0 >B <5B>40 connman.Manager.GetProperties.<br><br>@O4 ;8 :0:0O-=81C4L G0ABL %1 1C45B DC=:F8>=8@>20BL.There was an error reading or parsing the reply from method connman.Manager.GetProperties.

    It is unlikely any portion of %1 will be functional. ControlBox@>87>H;0 >H81:0 ?@8 GB5=88 8;8 0=0;875 >B25B0 >B <5B>40 connman.Manager.GetServices.<br><br>0:0O-B> G0ABL %1 2AQ 5IQ <>65B DC=:F8>=8@>20BL.There was an error reading or parsing the reply from method connman.Manager.GetServices.

    Some portion of %1 may still be functional. ControlBox"@>87>H;0 >H81:0 ?@8 GB5=88 8;8 0=0;875 >B25B0 >B <5B>40 connman.Manager.GetTechnologies.<br><br>0:0O-B> G0ABL %1 2AQ 5IQ <>65B DC=:F8>=8@>20BL.There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.

    Some portion of %1 may still be functional. ControlBox"8?Type ControlBoxURL: %1<br> URL: %1
     ControlBox5 C40;>AL A>740BL 8=B5@D59A 4;O connman =0 A8AB5<=>9 H8=5.<br><br>%1 =5 A<>65B >1<5=820BLAO 40==K<8 A connman.sUnable to create an interface to connman on the system bus.

    %1 will not be able to communicate with connman. ControlBox85 C40;>AL >?@545;8BL A;C61CUnable to determine service ControlBox5 C40;>AL =09B8 ?>4:;NG5=85 : A8AB5<=>9 H8=5.<br><br>%1 =5 A<>65B >1<5=820BLAO 40==K<8 A connman.fUnable to find a connection to the system bus.

    %1 will not be able to communicate with connman. ControlBoxp5 C40;>AL =09B8 8;8 ?>4:;NG8BLAO : A5@25@C C254><;5=89.3Unable to find or connect to a Notification server. ControlBox'0AB>B0 >1=>2;5=8O AGQBG8:>2 >A=>20=0 =0 ?>@>3>2>< 7=0G5=88 %L1  40==KE 8 %L2 A5:C=40E 2@5<5=8.dUpdate resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. ControlBox2A?>;L7>20BL B5<C 7=0G:>2Use Icon Theme ControlBox@5<O >6840=8O Wait Time ControlBox(!>548=5=85 Wi-Fi<br>WiFi Connection
     ControlBox!>AB>O=85 Wi-Fi Wifi State ControlBox&5A?@>2>4=K5 A;C61KWireless Services ControlBoxXFCE ControlBox0Yes ControlBox0 connectedYes ControlBox0 immutableYes ControlBox0roamingYes ControlBoxjK15@8B5 A;C61C Wi-Fi ?5@54 =060B85< :=>?:8 C40;5=8O.DYou need to select a Wifi service before pressing the remove button. ControlBox&><5=K&DomainsPeditor &1I85&GeneralPeditor&!5@25@K 8<Q= &NameserversPeditor&@>:A8&ProxyPeditor &!5@25@K 2@5<5=8 &TImeserversPeditor<html><head/><body><p>>4B25@48BL 2A5 M;5<5=BK, >B?@028BL 8E Connman, 8 70:@KBL 480;>3.</p></body></html>g

    Accept the entries, send them to Connman, and close the dialog.

    Peditor<html><head/><body><p>URL-04@5A 4;O 02B><0B8G5A:>9 =0AB@>9:8 ?@>:A8. A?>;L7C5BAO &quot;02B><0B8G5A:8<&quot; A?>A>1><.</p></body></html>p

    Automatic proxy configuration URL. Used by the "auto" method.

    Peditor<html><head/><body><p>G8AB8BL 2A5 M;5<5=BK =0 B5:CI59 AB@0=8F5.</p><p>-B> 25@=QB 7=0G5=85 ?> C<>;G0=8N 2 :064>5 ?>;5 =0 B5:CI59 AB@0=8F5, GB>, 2 >1I5< A;CG05 >7=0G05B ?CAB>5 ?>;5.</p></body></html>

    Clear all entries on the current page.

    This button will reset every field on the current page to the default value, which generally means nothing in the field.

    Peditor6<html><head/><body><p>G8AB8BL 2A5 ?>;O :064>9 AB@0=8FK 480;>30.</p><p>-B> 25@=QB 7=0G5=8O ?> C<>;G0=8N 2 :064>5 ?>;5 =0 :064>9 AB@0=8F5.</p></body></html>

    Clear all fields on every page of the dialog.

    This will reset every field on every page to the default value for the field.

    Peditor<html><head/><body><p>0:@KBL 480;>3 157 >B?@02:8 40==KE Connman.</p></body></html>`

    Close the dialog without sending any entries to Connman.

    PeditorJ<html><head/><body><p>A;8 0:B828@>20=>, B>, :>340 4@C385 A>548=5=8O =54>ABC?=K, MB0 A;C610 1C45B ?>4:;NG0BL :><?LNB5@ 02B><0B8G5A:8. -B> 4>ABC?=> B>;L:> 4;O A;C61, ?><5G5==KE :0: &quot;71@0==>5&quot;. </p><p>-B0 A;C610 =5 1C45B ?>4:;NG0BLAO 02B><0B8G5A:8 2> 2@5<O @>C<8=30.</p></body></html>

    If checked this service will auto-connect when no other connection is available. This is only available for services marked "Favorite".

    The service will not auto-connect while roaming.

    Peditor<html><head/><body><p>!?8A>: 7040==KE 2@CG=CN 4><5=>2 ?>8A:0.</p><p>2548B5 >48= 8;8 1>;LH5 04@5A>2 IP. B45;8B5 :064K9 2254Q==K9 04@5A 70?OB>9, B>G:>9 A 70?OB>9 8;8 ?@>15;><.</p></body></html>

    List of manually configures search domains.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor6<html><head/><body><p>!?8A>: =0AB@>5==KE 2@CG=CN A5@25@>2 4><5==KE 8<Q=. 5:>B>@K5 A>B>2K5 A5B8 =5 ?@54>AB02;ONB ?@028;L=K5 A5@25@0 8<Q=, 8 MB0 >?F8O ?>72>;O5B ?5@5>?@545;5=85.</p><p>-B>B <0AA82 >BA>@B8@>20= ?> ?@8>@8B5BC, 8 ?5@2K9 ?C=:B 2 A?8A:5 >7=0G05B A5@25@ 8<Q= A =082KAH8< ?@8>@8B5B><.</p><p>-B0 =0AB@>9:0 ?>;57=0, :>340 8A?>;L7C5BAO @CG=0O :>=D83C@0F8O 8 =5 =0AB@>5= 3;>10;L=K9 A5@25@ 4><5==KE 8<Q=.</p><p>2548B5 >48= 8;8 1>;LH5 04@5A>2 IP. B45;8B5 :064K9 2254Q==K9 04@5A 70?OB>9, B>G:>9 A 70?OB>9 8;8 ?@>15;><.</p></body></html>"

    The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.

    This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.

    When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditorx<html><head/><body><p>!?8A>: 7040==KE 2@CG=CN A5@25@>2 2@5<5=8.</p><p>5@2K9 ?C=:B A?8A:0 >7=0G05B A5@25@ 2@5<5=8 2 =082KAH8< ?@8>@8B5B><.</p><p>@8 8A?>;L7>20=88 @CG=>9 :>=D83C@0F88 MB0 =0AB@>9:0 ?>;57=0 4;O ?5@570?8A8 =0AB@>5: 2A5E >AB0;L=KE =0AB@>5: A5@25@>2 2@5<5=8. -B> 7028A8B >B :>=:@5B=>9 A;C61K, A;54>20B5;L=>, 8A?>;L7CNBAO B>;L:> 7=0G5=8O 4;O A;C61K ?> C<>;G0=8N.</p><p>7<5=5=8O MB>3> A2>9AB20 ?@8254CB : ?5@570?CA:C 70?@>A>2 NTP.</p><p>2548B5 >48= 8;8 1>;55 04@5A>2 IP. B45;8B5 :064K9 2254Q==K9 04@5A 70?OB>9, B>G:>9 A 70?OB>9 8;8 ?@>15;><.</p></body></html>

    The list of manually configured time servers.

    The first entry in the list represents the timeserver with the highest priority.

    When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.

    Changes to this property will result in restart of NTP query.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor"<html><head/><body><p>A?>;L7C5BAO ?@8 2K1@0==>< &quot;@CG=><&quot; A?>A>15. !?8A>: C7;>2, : :>B>@K< <>6=> ?>4:;NG0BLAO =0?@O<CN.</p><p><br/></p><p>2548B5 >48= 8;8 1>;LH5 04@5A>2 IP. B45;8B5 :064K9 2254Q==K9 04@5A 70?OB>9, B>G:>9 A 70?OB>9 8;8 ?@>15;><.</p></body></html>

    Used when "manual" is set. A list of hosts which can be accessed directly.


    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor><html><head/><body><p>A?>;L7C5BAO ?@8 2K1@0==>< &quot;@CG=><&quot; A?>A>15. !?8A>: URI ?@>:A8. URI 157 ?@>B>:>;0 1C45B 8A?>;L7>20= :0: >1KG=K9 URI ?@>:A8.</p><p>2548B5 >48= 8;8 1>;LH5 04@5A>2 IP. B45;8B5 :064K9 2254Q==K9 04@5A 70?OB>9, B>G:>9 A 70?OB>9 8;8 ?@>15;><.</p></body></html>

    Used when "manual" is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor<html><head/><body><p>>;L7>20B5;LA:0O :>=D83C@0F8O =0AB@>5: IPv4.</p></body></html>L

    User configuration of IPv4 settings.

    Peditor<html><head/><body><p>>;L7>20B5;LA:0O :>=D83C@0F8O =0AB@>5: IPv6</p></body></html>K

    User configuration of IPv6 settings

    Peditor<html><head/><body><p>>;L7>20B5;LA:0O :>=D83C@0F8O =0AB@>5: ?@>:A8.</p></body></html>M

    User configuration of Proxy settings.

    Peditor^<html><head/><body><p>'B> MB></p></body></html>3

    What's This

    Peditor 4@5AAddressPeditor"2B>?>4A>548=5=85 AutoConnectPeditor B<5=0CancelPeditorA:;NG8BLExcludesPeditor(;N7GatewayPeditor IPv&4IPv&4Peditor IPv&6IPv&6Peditor !?>A>1MethodPeditor!5B520O <0A:0NetmaskPeditorOKOKPeditor;8=0 ?@5D8:A0 Prefix LengthPeditor$>=D845=F80;L=>ABLPrivacyPeditor  540:B>@ A2>9AB2Property EditorPeditor!1@>A8BL &2AQ Reset &AllPeditor$!1@>A8BL &AB@0=8FC Reset Pa&gePeditor!5@25@KServersPeditorURLURLPeditor$&G8AB8BL AB@0=8FC &Clear Page Provisioning&#40;8BL&Delete Provisioning&B:@KBL&Open Provisioning&!>E@0=8BL&Save Provisioning<html><head/><body><p>G8AB8BL >:=> >B 2A53> B5:AB0.</p></body></html>N

    Clear all text from the editor window.

     Provisioning|<html><head/><body><p>#40;8BL D09; =0AB@>5:.</p></body></html>=

    Delete a config file.

     Provisioning<html><head/><body><p>>9B8 2 @568< &quot;'B> MB>&quot;.</p></body></html>J

    Enter "Whats This" mode.

     Provisioningr<html><head/><body><p>K9B8 87 480;>30.</p></body></html>8

    Exit the dialog.

     Provisioning<html><head/><body><p>B:@KBL ACI5AB2CNI89 D09; =0AB@>5:.</p></body></html>E

    Open an existing config file.

     Provisioning~<html><head/><body><p>:=> B5:AB>2>3> @540:B>@0.</p><p>K <>65B5 225AB8 8;8 2K@570BL 8 2AB028BL 2 2 >:=>. K B0:65 <>65B5 8A?>;L7>20BL <5=N 2KH5 4;O 2AB02:8 B5:AB>2KE ?>;59.</p></body></html>

    Text edit window.

    You may type or cut and paste into this window. You may also use menus above to insert text fields.

     Provisioning^<html><head/><body><p>'B> MB></p></body></html>3

    What's This

     Provisioning<html><head/><body><p>0?8A0BL >B>1@0605<K5 40==K5 2 D09; =0AB@>5:.</p><p>>;5 A> A?8A:>< A>45@68B A?8A>: D09;>2 =0AB@>5:, A>740==KE CMST, GB>1K >15A?5G8BL ?@>AB>9 A?>A>1 8E ?5@570?8A8. K B0:65 <>65B5 225AB8 8<O 2 ?>;5 A> A?8A:><.</p><p>5 =04> C:07K20BL ?CBL, =8 @0AH8@5=85 D09;0, B0: :0: >10 1C4CB 2K@570=K 8 70<5=5=K 4>?CAB8<K<8 7=0G5=8O<8.</p></body></html>h

    Write the displayed data to a config file.

    The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.

    It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values.

     Provisioning&$09; A5@B8D8:0B0 CA CACertFile Provisioning0$09; A5@B8D8:0B0 :;85=B0ClientCertFile Provisioning?8A0=85 Description Provisioning ><5=Domain Provisioning &K9B8E&xit ProvisioningEAPEAP Provisioning"Eduroam (4;8==K9)Eduroam (long) Provisioning$Eduroam (:>@>B:89)Eduroam (short) Provisioning!:@KBK5Hidden ProvisioningIPv4 DHCP IPV4 DHCP ProvisioningIPv4-04@5A IPv4 Address ProvisioningB:;NG8BL IPv4IPv4 Off ProvisioningIPv6-04@5A IPv6 Address Provisioning$2B><0B8G5A:8 IPv6 IPv6 Auto ProvisioningB:;NG8BL IPv6IPv6 Off Provisioning.>=D845=F80;L=>ABL IPv6 IPv6.Privacy Provisioning45=B8D8:0F8OIdentity ProvisioningMACMAC Provisioning<OName Provisioning!5@25@K 8<Q= Nameservers Provisioning 0@>;L Passphrase Provisioning $0702Phase2 Provisioning$$09; ;8G=>3> :;NG0PrivateKeyFile Provisioning(0@>;L ;8G=>3> :;NG0PrivateKeyPassphrase Provisioning0"8? ?0@>;O ;8G=>3> :;NG0PrivateKeyPassphraseType Provisioning* 540:B>@ :>=D83C@0F88Provisioning Editor ProvisioningSSIDSSID Provisioning><5=K ?>8A:0 SearchDomains Provisioning57>?0A=>ABLSecurity Provisioning!5@25@K 2@5<5=8 Timeservers Provisioning"8?Type Provisioning[>1I85][global] Provisioning[A;C610_*] [service_*] Provisioning :@8B8G5A:0O CriticalProvisioningEditor 8=D>@<0F8O InformationProvisioningEditor%1 - =D>@<0F8O%1 - InformationProvisioningEditor.%1 - &5;>G8A;5==K9 22>4%1 - Integer InputProvisioningEditor$%1 - 2>4 M;5<5=B0%1 - Item InputProvisioningEditor"%1 - K1@0BL D09;%1 - Select FileProvisioningEditor&%1 - "5:AB>2K9 22>4%1 - Text InputProvisioningEditor&%L1 09B>2 70?8A0=>%L1 Bytes writtenProvisioningEditor%L1  70?8A0=>%L1 KB writtenProvisioningEditor<b>H81:0 8<5=8 DBus:</b> %1<br><br><b>!B@>:0:</b> %2<br><br><b>!>>1I5=85:</b> %3MDBus Error Name: %1

    String: %2

    Message: %3ProvisioningEditor|<center>$09;K =0AB@>5: =5 =0945=K.<br>8G53> =5 1C45B C40;5=>.F
    No configuration files were found.
    Nothing will be deleted.ProvisioningEditor<center>$09;K =0AB@>5: =5 =0945=K.<br>K <>65B5 8A?>;L7>20BL MB>B 480;>3 4;O 8E A>740=8O.T
    No configuration files were found.
    You may use this dialog to create one.ProvisioningEditorB<center>'B5=85 D09;0 =0AB@>5:: %1&
    Reading configuration file: %1ProvisioningEditorT><5==>5 8<O, :>B>@>5 1C45B 8A?>;L7>20BLAODomain name to be usedProvisioningEditor"8? EAP. EAP type.ProvisioningEditor,2548B5 >?8A0=85 A5B8.#Enter a description of the network.ProvisioningEditor2548B5 =>2>5 8<O D09;0 8;8 2K15@8B5<br>ACI5AB2CNI89 D09; 4;O ?5@570?8A8.AEnter a new file name or select
    an existing file to overwrite.ProvisioningEditor62548B5 4;8=C ?@5D8:A0 IPv6Enter the IPv6 prefix lengthProvisioningEditor 25AB8 8<O A5B8.Enter the network name.ProvisioningEditorX2548B5 AB@>:>2>5 ?@54AB02;5=85 802.11 SSID.2Enter the string representation of an 802.11 SSID.ProvisioningEditor H81:0 C40;5=8O.Error encountered deleting.ProvisioningEditor6CBL : D09;C A5@B8D8:0B0 CA$File Path to the CA Certificate FileProvisioningEditor@CBL : D09;C A5@B8D8:0B0 :;85=B0(File Path to the Client Certificate FileProvisioningEditor$09; C40;Q= File deletedProvisioningEditorFCBL : ;8G=><C D09;C :;NG59 :;85=B0(File path to the Client Private Key FileProvisioningEditor,'B5=85 D09;0 7025@H5=>File read completedProvisioningEditor45 C40;>AL A>E@0=8BL D09;.File save failed.ProvisioningEditor 1I85GlobalProvisioningEditor!:@KB0O A5BLHidden networkProvisioningEditorIPv4-04@5A IPv4 AddressProvisioningEditorL(;N7 IPv4 (MB> =5>1O70B5;L=K9 M;5<5=B)(IPv4 Gateway (This is an optional entry)ProvisioningEditor$!5B520O <0A:0 IPv4 IPv4 NetmaskProvisioningEditorIPv6-04@5A IPv6 AddressProvisioningEditorL(;N7 IPv6 (MB> =5>1O70B5;L=K9 M;5<5=B)(IPv6 Gateway (This is an optional entry)ProvisioningEditor.>=D845=F80;L=>ABL IPv6 IPv6 PrivacyProvisioningEditor:!B@>:0 845=B8D8:0F88 4;O EAP.Identity string for EAP.ProvisioningEditorJ$09;K :;NG59 (*.pem);;A5 D09;K (*.*)"Key Files (*.pem);;All Files (*.*)ProvisioningEditor2!?8A>: 4><5=>2 ?>8A:0 DNSList of DNS Search DomainsProvisioningEditor(!?8A>: A5@25@>2 8<Q=List of NameserversProvisioningEditor.!?8A>: A5@25@>2 2@5<5=8List of TimeserversProvisioningEditorMAC-04@5A. MAC address.ProvisioningEditor,"8? 157>?0A=>AB8 A5B8.Network security type.ProvisioningEditorB0@>;L 4;O D09;0 70:@KB>3> :;NG0.-Password/Passphrase for the private key file.ProvisioningEditorB>@0O D070 (2=CB@5==OO 0CB5=B8D8:0F8O G5@57 TLS-BC==5;L)<br>A?>A>10 0CB5=B8D8:0F88.HPhase 2 (inner authentication with TLS tunnel)
    authentication method.ProvisioningEditor2"8? ?0@>;O ;8G=>3> :;NG0.Private key passphrase type.ProvisioningEditor&0@>;L RSN/WPA/WPA2RSN/WPA/WPA2 PassphraseProvisioningEditorbSSID: H5AB=04F0B8@8G=>5 ?@54AB02;5=85 802.11 SSID2SSID: hexadecimal representation of an 802.11 SSIDProvisioningEditor6K15@8B5 D09; 4;O C40;5=8O.Select a file to be deleted.ProvisioningEditor6K15@8B5 D09; 4;O 703@C7:8.Select a file to load.ProvisioningEditor !;C610ServiceProvisioningEditor"8? A;C61K. Service type.ProvisioningEditor5B:0, :>B>@0O 70<5=8B * <br>C=8:0;L=K< 845=B8D8:0B>@>< 2 D09;5 =0AB@>5:.MTag which will replace the * with
    an identifier unique to the config file.ProvisioningEditor(01;>=K TemplatesProvisioningEditor>;6=K 1KBL ?@54CA<>B@5=K <b>IPv4-04@5A</b>, <b><0A:0 A5B8</b>, 8 =5>1O70B5;L=> <b>H;N7</b>.<p>06<8B5 , :>340 1C45B5 3>B>2K ?@>4>;68BL.The IPv4 Address, Netmask, and optionally Gateway need to be provided.

    Press OK when you are ready to proceed.ProvisioningEditor>;6=K 1KBL ?@54CA<>B@5=K <b>IPv6-04@5A</b>, <b>4;8=0 ?@5D8:A0</b>, 8 =5>1O70B5;L=> <b>H;N7</b>.<p>06<8B5 , :>340 1C45B5 3>B>2K ?@>4>;68BL.The IPv6 Address, Prefix Length, and optionally Gateway need to be provided.

    Press OK when you are ready to proceed.ProvisioningEditor Wi-FiWiFiProvisioningEditor5 C40;>AL 70@538AB@8@>20BL >1J5:B roothelper =0 A8AB5<=>9 H8=5.7Failed to register roothelper object on the system bus. RootHelper5 C40;>AL 70@538AB@8@>20BL A5@28A org.cmst.roothelper  2>7<>6=> 70?CI5= 4@C3>9 M:75<?;O@.WFailed to register service org.cmst.roothelper - there may be another instance running. RootHelper#65 ?>4:;NG5=0Already connectedTranslateStrings#65 2K:;NG5=0Already disabledTranslateStrings#65 2:;NG5=0Already enabledTranslateStrings#65 ACI5AB2C5BAlready existsTranslateStrings ?@>F5AA5 In progressTranslateStrings,5?@028;L=K5 0@3C<5=BKInvalid argumentsTranslateStrings*5?@028;L=>5 A2>9AB2>Invalid propertyTranslateStrings&5?@028;L=0O A;C610Invalid serviceTranslateStrings5 ?>4:;NG5=0 Not connectedTranslateStrings5 =0945=0 Not foundTranslateStrings5 2=54@5=>Not implementedTranslateStrings&5 70@538AB@8@>20=0Not registeredTranslateStrings"5 ?>445@68205BAO Not supportedTranslateStrings5 C=8:0;L=0 Not uniqueTranslateStrings"?5@0F8O >B<5=5=0Operation abortedTranslateStrings:@5<O >6840=8O >?5@0F88 2KH;>Operation timeoutTranslateStrings "@51C5BAO ?0@>;LPassphrase requiredTranslateStrings>ABC? 70?@5IQ=Permission deniedTranslateStrings!>548=5=85 associationTranslateStrings02B><0B8G5A:8autoTranslateStrings02B><0B8G5A:8"connman ethernet connection methodautoTranslateStrings02B><0B8G5A:8connman ipv6 method stringautoTranslateStringsBluetooth bluetoothTranslateStrings!>B>20OcellularTranslateStringscmstTranslateStrings0AB@>9:0 configurationTranslateStrings.!8AB5<=K9 ;>B>: connmanconnman system trayTranslateStrings=5?>A@54AB25==>directTranslateStringsBA>548=5=85 disconnectTranslateStringsEthernetethernetTranslateStrings!1>9failureTranslateStrings 0465BgadgetTranslateStringsGPSgpsTranslateStrings?@>AB08205BidleTranslateStringsIEEE 802.1X ieee8021xTranslateStrings2@CG=CNmanualTranslateStrings2@CG=CN"connman ethernet connection methodmanualTranslateStrings2@CG=CNconnman ipv4 method stringmanualTranslateStrings2@CG=CNconnman ipv6 method stringmanualTranslateStrings>BACBAB2C5BnoneTranslateStrings >D;09=offlineTranslateStrings =;09=onlineTranslateStringsP2Pp2pTranslateStringsPSKpskTranslateStrings >B>20readyTranslateStrings!8AB5<=0OsystemTranslateStringsVPNvpnTranslateStringsWEPwepTranslateStrings Wi-FiwifiTranslateStrings@>2>4=0OwiredTranslateStringsWPSwpsTranslateStrings&B<5=0&CancelVPNAgent......VPNAgent<html><head/><body><p>@8=OBL 8 8A?>;L7>20BL >B25BK, ?@54>AB02;5==K5 20<8 2 MB>< 480;>35. </p><p>-B> >B?@028B 2254Q==K9 40==K5 45<>=C connman 4;O ?@>4>;65=8O ?@>F5AA0 ?>4:;NG5=8O.</p></body></html>

    Accept and use the answers you have provided in this dialog.

    This will send your input to the connman daemon to continue the connection process.

    VPNAgent<html><head/><body><p>B<5=8BL ?@>F5AA ?>4:;NG5=8O.<br/></p></body></html>K

    Cancel the connection process.

    VPNAgent$<html><head/><body><p>B<5=8BL 480;>3. </p><p>-B> >B?@028B A>>1I5=85 45<>=C connman > B><, GB> 2K >B<5=8;8 7?@>A =0 ?>4:;NG5=85.</p></body></html>

    Cancel the dialog.

    This will send a message to the connman daemon that you have cancelled the connection request.

    VPNAgent<html><head/><body><p>@>4>;68BL ?@>F5AA ?>4:;NG5=8O.</p></body></html>H

    Continue the connection process.

    VPNAgentj<html><head/><body><p>0@>;L WISPr.</p></body></html>7

    WISPr password.

    VPNAgent~<html><head/><body><p><O ?>;L7>20B5;O WISPr.</p></body></html>7

    WISPr username.

    VPNAgent^<html><head/><body><p>'B> MB></p></body></html>3

    What's This

    VPNAgent<ONameVPNAgentO&KO&KVPNAgent :@8B8G5A:0O Critical VPN_Editor 8=D>@<0F8O Information VPN_Editor%1 - =D>@<0F8O%1 - Information VPN_Editor$%1 - 2>4 M;5<5=B0%1 - Item Input VPN_Editor"%1 - K1@0BL D09;%1 - Select File VPN_Editor&%1 - "5:AB>2K9 22>4%1 - Text Input VPN_Editor&%L1 09B>2 70?8A0=>%L1 Bytes written VPN_Editor%L1  70?8A0=>%L1 KB written VPN_Editor<b>H81:0 8<5=8 DBus:</b> %1<br><br><b>!B@>:0:</b> %2<br><br><b>!>>1I5=85:</b> %3MDBus Error Name: %1

    String: %2

    Message: %3 VPN_Editor|<center>$09;K =0AB@>5: =5 =0945=K.<br>8G53> =5 1C45B C40;5=>.F
    No configuration files were found.
    Nothing will be deleted. VPN_Editor<center>$09;K =0AB@>5: =5 =0945=K.<br>K <>65B5 8A?>;L7>20BL MB>B 480;>3 4;O 8E A>740=8O.T
    No configuration files were found.
    You may use this dialog to create one. VPN_EditorB<center>'B5=85 D09;0 =0AB@>5:: %1&
    Reading configuration file: %1 VPN_Editor2548B5 =>2>5 8<O D09;0 8;8 2K15@8B5<br>ACI5AB2CNI89 D09; 4;O ?5@570?8A8.AEnter a new file name or select
    an existing file to overwrite. VPN_Editor H81:0 C40;5=8O.Error encountered deleting. VPN_Editor$09; C40;Q= File deleted VPN_Editor,'B5=85 D09;0 7025@H5=>File read completed VPN_Editor45 C40;>AL A>E@0=8BL D09;.File save failed. VPN_Editor 1I85Global VPN_Editor6K15@8B5 D09; 4;O C40;5=8O.Select a file to be deleted. VPN_Editor6K15@8B5 D09; 4;O 703@C7:8.Select a file to load. VPN_Editor$&G8AB8BL AB@0=8FC &Clear PageVPN_Prov&#40;8BL&DeleteVPN_Prov&B:@KBL&OpenVPN_Prov&!>E@0=8BL&SaveVPN_Prov<html><head/><body><p>G8AB8BL >:=> >B 2A53> B5:AB0.</p></body></html>N

    Clear all text from the editor window.

    VPN_Prov|<html><head/><body><p>#40;8BL D09; =0AB@>5:.</p></body></html>=

    Delete a config file.

    VPN_Prov<html><head/><body><p>>9B8 2 @568< &quot;'B> MB>&quot;.</p></body></html>J

    Enter "Whats This" mode.

    VPN_Provr<html><head/><body><p>K9B8 87 480;>30.</p></body></html>8

    Exit the dialog.

    VPN_Prov<html><head/><body><p>B:@KBL ACI5AB2CNI89 D09; =0AB@>5:.</p></body></html>E

    Open an existing config file.

    VPN_Prov~<html><head/><body><p>:=> B5:AB>2>3> @540:B>@0.</p><p>K <>65B5 225AB8 8;8 2K@570BL 8 2AB028BL 2 2 >:=>. K B0:65 <>65B5 8A?>;L7>20BL <5=N 2KH5 4;O 2AB02:8 B5:AB>2KE ?>;59.</p></body></html>

    Text edit window.

    You may type or cut and paste into this window. You may also use menus above to insert text fields.

    VPN_Prov^<html><head/><body><p>'B> MB></p></body></html>3

    What's This

    VPN_Prov<html><head/><body><p>0?8A0BL >B>1@0605<K5 40==K5 2 D09; =0AB@>5:.</p><p>>;5 A> A?8A:>< A>45@68B A?8A>: D09;>2 =0AB@>5:, A>740==KE CMST, GB>1K >15A?5G8BL ?@>AB>9 A?>A>1 8E ?5@570?8A8. K B0:65 <>65B5 225AB8 8<O 2 ?>;5 A> A?8A:><.</p><p>5 =04> C:07K20BL ?CBL, =8 @0AH8@5=85 D09;0, B0: :0: >10 1C4CB 2K@570=K 8 70<5=5=K 4>?CAB8<K<8 7=0G5=8O<8.</p></body></html>h

    Write the displayed data to a config file.

    The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.

    It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values.

    VPN_Prov &K9B8E&xitVPN_ProvK;0 >1=0@C65=0 70?CI5==0O :>?8O CMST. 0?CA: MB>9 :>?88 >B<5=Q=NAnother running instance of CMST has been detected. This instance is abortingmain.cpp4Connman 2 c8AB5<=>< ;>B:5.Connman System Tray.main.cppB:;NG8BL 7=0G>: 2 A8AB5<=>< ;>B:5. >65B ?>=04>18BLAO A8AB5<=K< ;>B:0<, =5 A>>B25BAB2CNI8< A?5F8D8:0F88 Freedesktop.org.Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification.main.cpp*0720=85 B5<K 7=0G:>2Icon Theme Namemain.cppA;8 7=0G:C 2 A8AB5<=>< ;>B:5 B@51C5BAO ?A524>?@>7@0G=>ABL, C:068B5 F25B D>=0 (D>@<0B: 0xRRGGBB)bIf tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB)main.cppKBmain.cppxC@=0;8@>20BL 70?@>A connman inputRequest 4;O F5;59 >B;04:8.4Log the connman inputRequest for debugging purposes.main.cppRRGGBBmain.cpp#:068B5 2@5<O >6840=8O 2 A5:C=40E ?5@54 70?CA:>< 7=0G:0 2 A8AB5<=>< ;>B:5.FSpecify the wait time in seconds before starting the system tray icon.main.cpp0?CAB8BL 3@0D8G5A:89 ?>;L7>20B5;LA:89 8=B5@D59A, A2Q@=CBK< 2 A8AB5<=K9 ;>B>:.+Start the GUI minimized in the system tray.main.cpp~A?>;L7>20BL A?5F80;L=K9 :>4 4;O >:@C65=8O @01>G53> AB>;0 MATE.Use MATE DE specific code.main.cppLA?>;L7>20BL A?5F80;L=K9 :>4 4;O XFCE.Use XFCE specific code.main.cppHA?>;L7>20BL A8AB5<=CN B5<C 7=0G:>2.#Use an icon theme from your system.main.cpp[-:A?5@8<5=B0;L=>] B:;NG8BL AGQBG8:8 40==KE. >65B 1KBL 8A?>;L7>20=> 4;O C<5=LH5=8O =03@C7:8 =0 A8AB5<C.S[Experimental] Disable data counters. May be used to minimize load on your system.main.cpp[-:A?5@8<5=B0;L=>] @><56CB>: 2 A5:C=40E <564C >1=>2;5=85< AGQBG8:>2.?[Experimental] The interval in seconds between counter updates.main.cpp[-:A?5@8<5=B0;L=>] >;8G5AB2> :1 :>B>@K5 4>;6=K 1KBL ?5@540=K ?5@54 >1=>2;5=85< AGQBG8:>2.W[Experimental] The number of kb that have to be transmitted before the counter updates.main.cpp A5:C=4secondsmain.cpp 2=8<0=85 Warning processReply ) , cmst-cmst-2018.01.06/translations/cmst_ru_RU.ts000066400000000000000000011135031322401607200211770ustar00rootroot00000000000000 Agent Agent Input Данные агента Passphrase Пароль <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>Если старый пароль доступен, то он будет показан здесь для справки.</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>Введите пароль здесь.</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> <html><head/><body><p>Установите этот флажок, чтобы скрыть символы пароля.</p></body></html> &Hide Passphrase &Скрыть пароль O&ld Passphrase &Старый пароль &Passphrase &Пароль Hidden Network Скрытая сеть &Name &Имя <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> <html><head/><body><p>Введите имя скрытой сети, к которой вы хотите подключиться.</p></body></html> Service Set Identifier Уникальный идентификатор сети &SSID &SSID Wireless Internet Service Provider roaming (WISPr) Роуминг поставщика услуг беспроводного интернета (WISPr) &Username &Имя пользователя <html><head/><body><p>WISPr username.</p></body></html> <html><head/><body><p>Имя пользователя WISPr.</p></body></html> Passwor&d &Пароль <html><head/><body><p>WISPr password.</p></body></html> <html><head/><body><p>Пароль WISPr.</p></body></html> Extensible Authentication Protocol (EAP) Расширяемый протокол аутентификации (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> <html><head/><body><p>Введите строку вашей идентификации для расширяемого протокола аутентификации</p></body></html> &Identity &Идентификация WiFi Protected Setup (WPS) Защищённая настройка Wi-Fi (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> <html><head/><body><p>Когда стоит флажок, используется аутентификация с помощью кнопки аутентификации WPS.</p></body></html> Use Push &Button Authentication Использовать аутентификацию с помощью &кнопки WPS &WPS Pin Пин &WPS <html><head/><body><p>Enter a WPS pin.</p></body></html> <html><head/><body><p>Введите пин WPS.</p></body></html> Browser Login Requested Запрошен вход с помощью браузера Choose or enter a browser: Выберите браузер или введите его название: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> <html><head/><body><p>Connman запрашивает открыть веб-браузер, чтобы завершить процесс входа.</p><p>Мы просканировали ваш ПУТЬ для браузеров и все найденные браузеры показаны в списке ниже. Вы можете выбрать любой один браузер, чтобы использовать его для входа. Если ваш веб-браузер отсутствует в списке, введите его название непосредственно в поле <span style=" font-weight:600;">«Выберите браузер или введите его название»</span>.</p><p>Для запуска браузера нажмите кнопку <span style=" font-weight:600;">«Запустить браузер»</span>. </p><p>Если вы хотите войти вручную, закройте это окно, запустите веб-браузер и перейдите по URL-адресу, указанному поле <span style=" font-weight:600;">«URL-адрес входа»</span>.</p></body></html> Login URL: URL-адрес входа: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Connman запрашивает продолжение входа с помощью браузера. Это поле показывает URL-адрес со страницей входа.</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> <html><head/><body><p>Используйте эту кнопку для запуска указанного браузера. Браузер откроется на странице, показанной в поле URL-адрес входа.</p></body></html> Launch &Browser Запустить &браузер <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Что это</p></body></html> ... ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Продолжить процесс подключения.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> <html><head/><body><p>Принять и использовать ответы, предоставленные вами в этом диалоге. </p><p>Это отправит введённый данные демону connman для продолжения процесса подключения.</p></body></html> O&K O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Отменить процесс подключения.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> <html><head/><body><p>Отменить диалог. </p><p>Это отправит сообщение демону connman о том, что вы отменили зпрос на подключение.</p></body></html> &Cancel &Отмена AgentDialog Information информация You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" Вы запросили браузер %1, но мы не можем найти программу терминала для его открытия. В настоящее время мы можем запустить %1, используя следующие терминалы: <b>roxterm</b> и <b>xterm</b>.<br><br>Для продолжения вам нужно открыть терминал вручную и затем ввести: "%1 %2" ConnmanAgent Connman Error Ошибка Connman Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Connman вернул следующую ошибку: <b><center>%1</b><br>Вы хотите попробовать снова? Agent Request Failed Запрос агента не удался The agent request failed before a reply was returned. Запрос агента не удался до возврата отклика. ConnmanCounter %L1 Bytes %L1 байтов %L1 KB %L1 КБ %L1 MB %L1 МБ %L1 GB %L1 ГБ <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 <b>Передано:</b><br>Всего TX: %1 (%2), ошибок TX: %3, пропущенных TX: %4 %Ln Packet(s) %n пакет %n пакета %n пакетов <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>Получено:</b><br>Всего RX: %1 (%2), ошибок RX: %3, пропущенных RX: %4 <br><br><b>Connect Time:</b><br> <br><br><b>Время соединения:</b><br> %n Day(s) %n день %n дня %n дней %n Hour(s) %n час %n часа %n часов %n Minute(s) %n минута %n минуты %n минут %n Second(s) %n секунда %n секунды %n секунд ConnmanVPNAgent Connman Error Ошибка Connman Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Connman вернул следующую ошибку: <b><center>%1</b><br>Вы хотите попробовать снова? Agent Request Failed Запрос агента не удался The agent request failed before a reply was returned. Запрос агента не удался до возврата отклика. ControlBox Dialog Диалог &Status &Состояние <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> <html><head/><body><p>Этот флажок управляет глобальным параметром по включению или выключению всех сетевых устройств. Когда флажок установлен, устройства выключены.</p><p>Когда система находится в автономном режиме, можно включить отдельные устройства. При выходе из автономного режима отдельные правила для каждого устройства определяют, включится ли оно снова.</p></body></html> All Devices &Off &Отключить все устройства <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> <html><head/><body><p><span style=" font-weight:600;">Автономный режим</span></p><p>Автономный режим показывает глобальный параметр по включению всех сетевых устройств. Включение автономного режима приведёт к отключению устройств. Когда автономный режим не активирован, отдельные для каждого устройства правила определяют, включать ли устройство снова. </p><p>При автономном режиме всё-ещё можно включать технологии вручную. Например, отдельное использование устройств Wi-Fi или Bluetooth может быть разрешено в некоторых ситуациях.</p></body></html> Global Properties Общие свойства <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> <html><head/><body><p>Глобальный параметр для включения и выключения всех сетевых устройств. Когда автономный режим активирован, все сетевые устройства отключаются.</p><p>While in offline mode it is possible to turn individual devices back on. При выходе из автономного режима отдельные правила для каждого устройства определяют, включится ли оно снова.</p></body></html> OfflineMode: Unavailable Автономный режим: недоступно <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> <html><head/><body><p>Общее состояние подключения системы. Возможные значения: &quot;офлайн&quot;, &quot;простаивает&quot;, &quot;готово&quot;, и &quot;онлайн&quot;. </p></body></html> State: Unavailable Состояние: недоступно <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> <html><head/><body><p>Connman относится к устройствам как к технологиям. В этом поле будет отображаться информация о всех известных технологиях.</p><p>Чтобы включить или выключить технологию, нажмите на кнопку, которая отображается в столбце <span style=" font-weight:600;">«Включено»</span> для соответствующей технологии.</p></body></html> Technologies Технологии Name Имя Type Тип Powered Включено Connected Подключено Tethering Тетеринг Resc&an Ск&анировать повторно <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> <html><head/><body><p>В этом поле перечислены все службы, к которым connman может подключиться.</p></body></html> Services Службы State Состояние Connection Соединение <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active once a service is selected.</p></body></html> <html><head/><body><p>Переместить выбранную службу перед другой в списке.</p><p>Кнопка станет активной только после выбора службы.</p></body></html> Move Before Поместить до <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active once a service is selected.</p></body></html> <html><head/><body><p>Переместить выбранную службу после другой в списке.</p><p>Кнопка станет активной только после выбора службы.</p></body></html> Move After Поместить после <html><head/><body><p>Hide the connection field</p></body></html> <html><head/><body><p>Спрятать поле «Соединение»</p></body></html> <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> <html><head/><body><p>Когда стоит флажок, прячет имя соединения в поле «Службы».</p></body></html> &Less &Меньше &Details &Подробности Ser&vice С&лужба <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>Используйте этот выпадающий список, чтобы выбрать службу, для которой вы хотите просмотреть подробную информацию.<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> <html><head/><body><p>Метод настройки по умолчанию для всех служб – автоматический или что-то вроде DHCP. Он должен подходить для большинства пользователей, в противном случае эта кнопка позволит ручную настройку параметров Ethernet и IP для выбранной службы.</p><p>Эта кнопка будет неактивна, если служба конфигурируется внешним файлом или если служба – это скрытая Wi-Fi сеть. Свойства таких служб невозможно изменить.</p></body></html> Configuration Настройка &Wireless &Беспроводные сети Wireless Services Беспроводные службы <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Выберите службу Wi-Fi в таблице ниже, и нажмите эту кнопку, чтобы подключиться к этой службе. </p><p>Если в таблице только одна служба wifi, то при нажатии этой кнопки эта служба выберется автоматически и к ней будет предпринята попытка подключения. </p><p>Если будет нужна информация о службе, пароль, например, вам будет предложено ввести его.</p></body></html> Connect Подключиться <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>Выберите Wi-Fi службу в таблице снизу и нажмите эту кнопку, чтобы отключиться от неё. </p><p>Если есть только одна Wi-Fi служба в состоянии &quot;Готова&quot; или &quot;Онлайн&quot;, нажатие на эте кнопку автоматически выберет её и отключится от неё. </p><p>Это также может быть использовано для отмены предыдущей попытки соединения.</p></body></html> Disconnect Отсоединиться <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been sussessfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> <html><head/><body><p>Выберите службу Wi-Fi в таблице ниже, и нажмите эту кнопку, чтобы удалить эту службу. </p><p>Если служба была ранее успешно подключена (является «Избранной»), эта кнопка удалит статус «Избранной». Служба также будет отключена, если она в момент нажатия подключена. Если услуге требуется пароль то пароль будет снят и забыт </p><p>Если попытка подключения не удалась, то это также может использоваться для сброса службы.</p></body></html> Remove Удалить <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> <html><head/><body><p>Эта метка показывает количество Wi-Fi технологий (устройств), которые были найдены, и количество технологий, которые включены. Должна быть найдена и включена как минимум одна технология Wi-Fi для того, чтобы в поле снизу отображались услуги</p><p>Чтобы включить и выключить технологию, перейдите к таблице <span style=" font-weight:600;">Технологии</span> на вкладке <span style=" font-weight:600;">Состояние</span> и сделайте двойное нажатие мышью по тексту в столбце <span style=" font-weight:600;">Включено</span> для этой технологии.</p></body></html> Wifi State Состояние Wi-Fi <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> или </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Запустить графический пользовательский интерфейс свёрнутым в системный лоток.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> или </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Укажите время ожидания в секундах перед запуском значка в системном лотке (по умолчанию 0 секунд).</p><p>Если CMST запущен и пытается создать значок в системном лотке до запуска системного лотка, будет отображён диалог, объясняющий это. Это иногда происходит, когда программа запускается автоматически. Если вы знаете, что системный лоток будет загружен при запуске системы, вы можете указать время ожидания и CMST будет ждать указанное количество секунд перед тем как создать значок в системном лотке. Это нужно для того, чтобы дать время оконному менеджеру или панели на создание системного лотка перед попыткой помещения в него значка.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Параметр командной строки: <span style=" font-weight:600;">-c</span> или <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Отключить счётчики. Может быть использовано для минимизации нагрузки на систему.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Укажите частоту в секундах между обновлениями счётчика (по умолчанию 10 секунд). </p></body></html> Counter Update Rate Частота обновления счётчиков <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Default is no desktop specific code.</p></body></html> <html><head/><body><p>По умолчанию не используется код для конкретного окружения рабочего стола.</p></body></html> Rescan Offline Mode <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> <html><head/><body><p>На этой странице показаны доступные службы Wi-Fi. </p><p><span style=" font-weight:600;">Имя:</span> SSID сети.</p><p><span style=" font-weight:600;">Избранное:</span> сомвол сердца в этом столбце означает, что этот компьютер ранее подключался к сети через эту службу.</p><p><span style=" font-weight:600;">Подключено:</span> показывает состояние соединения этой службы. Наведите курсор на значок, чтобы увидеть всплывающее текстовое описание. Онлайн означает, что соединения с интернетом доступны и были проверены. Готов означает успешно подключённое устройство. </p><p><span style=" font-weight:600;">Безопасность: </span>описывает типы шифрования, используемые этой службой. Возможные значения &quot;нет&quot;, &quot;WEP&quot;, &quot;PSK&quot;, &quot;IEEE 8021.X&quot; и &quot;WPS&quot;.</p><p><span style=" font-weight:600;">Сила сигнала:</span> сила сигнала Wi-Fi, нормализованная по шкале от 0 до 100.</p><p><br/></p></body></html> <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> <html><head/><body><p>Принудительное сканирование всех технологий WiFi. Работает идентично команде <span style=" font-weight:600;">connmanctl scan wifi</span> из командной строки.</p><p>Кнопка будет неактивной, пока происходит сканирование.</p></body></html> Favorite Избранное Security Безопасность Signal Strength Сила сигнала &Counters &Счётчики <html><head/><body><p>The service being monitored by the counters.</p></body></html> <html><head/><body><p>Эту службу отслеживают счётчики.</p></body></html> Service: Служба: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> <html><head/><body><p>Счётчики для &quot;онлайновой&quot; службы соединений, которая не помечена как роуминг. </p><p>Счётчики могут не всегда быть доступны. Счётчики могут быть отключены из командной строки (-c или --disable-counters) или случайно соединение будет зарегистрировано как &quot;готовое&quot; вместо &quot;онлайн&quot;. Онлайн — это &quot;готовое&quot; соединение, которое имеет проверенное соединение с интернетом. Онлайн можно быть только с &quot;готовым&quot; соединением, однако счётчики будут работать только с &quot;онлайновыми&quot; соединениями.</p></body></html> Home Домашняя сеть Counter not available. Счётчики не доступны. <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> <html><head/><body><p>Счётчики для &quot;онлайновой&quot; службы соединений, которая помечена как &quot;роуминг&quot;.</p><p>В случае с сотовыми сетями это обычно означает соединение с иностранным провайдером. </p><p>Счётчики могут не всегда быть доступны. Счётчики могут быть отключены из командной строки (-c или --disable-counters) или случайно соединение будет зарегистрировано как &quot;готовое&quot; вместо &quot;онлайн&quot;. Онлайн — это &quot;готовое&quot; соединение, которое имеет проверенное соединение с интернетом. Онлайн можно быть только с &quot;готовым&quot; соединением, однако счётчики будут работать только с &quot;онлайновыми&quot; соединениями.</p></body></html> Roaming Роуминг <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>Настройки счётчиков</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> <html><head/><body><p>Пороговые значения для обновления показаний счётчиков (разрешение счётчика). Для этого учитывается как количество данных, так и время.</p></body></html> Settings: Настройки: &Preferences &Предпочтения <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> <html><head/><body><p>Предпочтения для интерфейса находятся в этом поле.</p></body></html> Interface Интерфейс <html><head/><body><p>If checked the GUI will be restored from settings saved on disk. Settings include the geometry of the dialog and the state of various check boxes, such as this one. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p style='white-space:pre'>The settings file is: <span style=" font-weight:600;">${HOME}/.config/cmst/cmst.conf </span><br>This is a standard ini type text file.</p></body></html> <html><head/><body><p>Если поставлен флажок, параметры пользовательского интерфейса будут загружаться из сохранённых на диске настройки. Настройки включают в себя геометрию окна и состояние различных флажков, таких, как этот. </p><p>Эти настройки будут использоваться при следующей загрузке для восстановления пользовательского интерфейса таким, как он был при выключении.</p><p style='white-space:pre'>Файл настроек: <span style=" font-weight:600;">${HOME}/.config/cmst/cmst.conf</span><br>Это стандартный текстовый файл настроек.</p></body></html> Retain Settings Запоминать настройки <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> <html><head/><body><p>Если установлен флажок, отображение подсказок будет включено для виджетов интерфейса.</p><p>Подсказки — это небольшие всплывающие окна, которые появляются при наведении указателя мыши на область интерфейса. </p></body></html> Enable ToolTips (Interface) Разрешить всплывающие подсказки (для интерфейса) <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> <html><head/><body><p>Обычно счётчики ведут учёт нарастающим итогом, а также сохраняют время подключения и число TX и RX между загрузками. </p><p>Когда этот флажок установлен, то счетчики будут сбрасываться до нуля каждый раз, когда CMST запускается, и если CMST выполняется каждый раз, когда запущена служба Connman. </p></body></html> Reset Counters Обнулять показания счётчиков <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> <html><head/><body><p>Когда стоит флажок, отображаются дополнительные настройки для опытных пользователей.</p></body></html> Advanced Controls Расширенные настройки <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> <html><head/><body><p>Эти настройки контролируют различные опции при загрузке CMST. </p><p>Все эти опции доступны из командной строки, и если они заданы в командной строке, то они получают преимущество над этими настройками.</p></body></html> Start Options Опции запуска <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> или </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Отключить значок в системном лотке.</p><p>Может понадобиться системам, несовместимым со спецификацией Freedesktop.org.</p></body></html> <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>Отключено, поскольку сейчас Connman примет эту настройку, но ничего не сделает с ней.</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> <html><head/><body><p>Укажите объем данных в килобайтах, который должен быть передан до обновления счетчиков (по умолчанию 1024 КБ).</p><p>Connman примет этот параметр, но согласно комментарию в коде Connman эта функция всё ещё требует разработки, и выбор, следовательно, отключен.</p></body></html> Counter Update KB Обновление счётчиков, КБ <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>Укажите время ожидания в секундах перед запуском значка в системном лотке (по умолчанию 0 секунд).</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><p>Укажите объем данных в килобайтах, который должен быть передан до обновления счетчиков (по умолчанию 1024 КБ).</p></body></html> Start Minimized Запускать свёрнутым Wait Time Время ожидания Disable Tray Icon Отключить значок в системном лотке <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> или </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Использовать системный набор значков. Вы можете выбрать набор в поле справа или, если поле слева оставлено пустым, CMST попытается использоватьсистемный набор значков (если он определён).</p></body></html> Use Icon Theme Использовать тему значков Disable Counters Отключить счётчики <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>Укажите частоту в секундах между обновлениями показаний счётчика (по умолчанию 0 секунд).</p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> <html><head/><body><p>Использовать код, специфичный для выбранного окружения рабочего стола.</p><p>Начиная с версии 2014.11.24 кажется существует проблема с Qt 5.3 и некоторыми системными лотками. В программе есть код, спомощью которого можнно попытаться обойти эту проблему, и выбор одного из этих пунктов применит код, специфичный для окружения рабочего стола.</p><p>Если ошибка будет устранена, эти опции останутся для того, чтобы не портить загрузочный скрипт, но они уже не будут ни на что влиять.</p></body></html> Desktop Specific Для конкретных окружений рабочего стола None Нет <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Параметр командной строки: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Используется для обхода ошибки Qt, из-за которой значки в системном лотке отображается с белым или чёрным фоном вместо прозрачного.</p><p>Вы можете указать здесь цвет фона значка. Формат — шестнадцатиричное число RRGGBB. Если указанный цвет совпадает с фоном системного лотка, значит мы качественно создали псевдопрозрачность. </p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Domain Домен Fake Transparency Псевдопрозрачность <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>Укажите цвет фона, как шестнадцатеричное число в формате RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Какой набор значков использовать. Чтобы вы могли использовать этот набор, он должен быть установлен в системе. Если набор не установлен, или вы написали название неправильно, CMST будет использовать внутренний набор значков.</p><p> Если это поле пустое, CMST попытается использовать общесистемную тему значков (если она определена).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> <html><head/><body><p>Предпочтения для системного лотка находятся в этом поле.</p></body></html> System Tray Системный лоток <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> <html><head/><body><p>Если поставлен флажок, значок значок не будет отображаться в системном лотке.</p></body></html> Hide Tray Icon Спрятать иконку в системном лотке <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> <html><head/><body><p>Если поставлен флажок, в системном лотке будет появляться сообщения о состоянии при наведении на значок курсора.</p></body></html> Enable System Tray Popups Разрешить всплывающие уведомления при наведении на значок в системном лотке <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> <html><head/><body><p>Если установлен флажок, то системный лоток покажет сообщение, когда будет получено значительное событие от connman.</p><p>Уведомления могут быть обработаны с использованием значка в системном лотке или демоном уведомлений, если он установлен. Оба способа не могут быть активными в одно и то же время.</p></body></html> System Tray Notifications Уведомления в системном лотке Notifications Уведомления <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> <html><head/><body><p>Если установлен флажок, то системный демон уведомлений покажет предупреждение, когда будет получено значительное событие от connman.</p><p>Уведомления могут быть обработаны с использованием значка в системном лотке или демоном уведомлений, если он установлен. Оба способа не могут быть активными в одно и то же время.</p></body></html> Notification Daemon Демон уведомлений Server Status Состояние сервера <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control Программное управление <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> <html><head/><body><p>Если поставлена «галочка», CMST поместит элемент в папку автозапуска текущего пользователя, снятие «галочки» удалит этот элемент. Обычно это папка: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST добавит или удалит только .desktop-файл из папки автозапуска. Автозапуск обычно зависит от вашего окружения рабочего стола и должен быть включён отсюда.</p></body></html> Enable Autostart Включить автозапуск <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> <html><head/><body><p>Если у службы Connman будет &quot;сбой&quot;, она по умолчанию будет оставаться в этом состоянии.</p><p>Если здесь стоит флажок, CMST автоматически попытается переподключиться к службе WiFi, находящейся в состоянии сбоя&quot;сбоя&quot;.</p></body></html> Retry Failed Connection Повторное после сбоя подключение к сети <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help &Справка &About &О программе <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> <html><head/><body><p>Показывает диалог, содержащий информацию об этой программе. </p></body></html> C&MST C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> <html><head/><body><p>Показать диалоговое окно, содержащее информацию наборе значков, используемых этой программой. </p></body></html> &AwOken &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> <html><head/><body><p>Отображает диалоговое окно, содержащее информацию о наборе инструментов QT, использованном для разработки этой программы.</p></body></html> &QT &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> <html><head/><body><p>Используйте эту кнопку, чтобы увидеть лицензию на эту программу.</p></body></html> &License &Лицензия <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> <html><head/><body><p>Используйте эту кнопку, чтобы увидеть журнал изменений этой программы.</p></body></html> ChangeLo&g Жу&рнал изменений <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p><span style=" font-weight:600;">Справка</span></p><p>Справка по программе в основном представлена кнопкой &quot;Что это&quot; в нижнем левом углу. Нажмите эту кнопку и затем щёлкните по интересующему вас элементу. Функция &quot;Что это&quot; также доступна через контекстное меню нажатием правой кнопки мыши на кнопку, окно или область текста.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Что это</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>Используйте эту кнопку, чтобы узнать об элементе GUI через режим &quot;Что это&quot;. </p><p>Вы также можете нажать правую кнопку мыши на элементе, чтобы увидеть текст &quot;Что это&quot; для него.</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> <html><head/><body><p>Открыть редактор конфигурации для создания или редактирования файлов настройки (подготовки к работе) Connman.</p><p>Эти файлы находятся в /var/lib/connman, влядельцем которой является root:root. CMST зарегестрирует roothelper для получения разрешения на запись и чтение файлов в эту папку. </p><p>Для избежания злоупотреблением правами суперпользователя, редактор будет работать только с файлами, заканчивающимися на <span style=" font-style:italic;">.cmst.config</span>. Это окончание имени файла будет задано автоматически во время сохранения файла и не может быть изменено. </p><p>С помощью этого редактора невозможно изменить или удалить файлы настройки, созданные с помощью других средств.</p></body></html> Provisioning Editor Редактор конфигурации <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> <html><head/><body><p>Выйти из программы и убрать значок из системного лотка. Connman всё-ещё будет запущен как демон, но не будет управляться этой программой.</p></body></html> E&xit В&ыйти <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> <html><head/><body><p>Свернуть этот диалог. Если у вас отоброжается значок в системном лотке, этот диалог может быть восстановлен нажатием правой кнопки мыши на этом значке. Если значок в системном лотке спрятан, то сворачивание не будет доступно.</p></body></html> Mi&nimize С&вернуть IDPass Set ID and Password for tethered wifi Ma&ximize Ра&звернуть &Exit В&ыйти About %1 О %1 <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian) <center>%1 — это программа для взаимодействия с демоном Connman и предоставления контроля через системный лоток.<br><center>Версия <b>%2</b><center>Дата выпуска: %3<center>Копирайт c %4<center>разработана<center>Andrew J. Bibb<center>Вермонт, США<br><center><b>Помощники:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<br><center><b>Переводчики:</b><center>Jianfeng Zhang (китайский язык)<center>sqozz (немецкий язык)<center>Ilya Shestopalov (русский язык) About AwOken О AwOken <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a><br><center>The CMST icon is a derivative work from the AwOken icon set. <center>Эта программа использует набор значков <b>AwOken</b> версии 2.5<br><br>Выпущен под лицензией<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Международная лицензия<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a><br><center>Значок CMST — это производная работа от набора значков AwOken. %1 license is the MIT license. Лицензия %1 — это лицензия MIT. License Лицензия %1 change log is not available. %1 журнал изменений не доступен. ChangeLog Журнал изменений Cancel Отмена <b>Service:</b> %1 <b>Служба:</b> %1 Unable to determine service Не удалось определить службу No Services Selected Нет выбранных служб You need to select a Wifi service before pressing the connect button. Выберите службу Wi-Fi перед нажатием кнопки подключения. You need to select a Wifi service before pressing the disconnect button. Выберите службу Wi-Fi перед нажатием кнопки отсоединения. You need to select a Wifi service before pressing the remove button. Выберите службу Wi-Fi перед нажатием кнопки удаления. Offline Mode Engaged Автономный режим активирован Offline Mode Disabled Автономный режим отключён %1 (%2) Network %1 (%2) сеть Connection: %1 Соединение: %1 Network Services: Сетевые службы: No network services available Не доступны никакие сетевые службы Service Error: %1 Ошибка службы: %1 Object Path: %1 Путь к объекту: %1 <center><b>We received a DBUS reply message indicating an error while trying to scan technologies.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 <center><b>Мы получили ответ DBUS, сообщающий об ошибке при попытке сканирования технологий.</b></center><br><br>Название ошибки: %1<br><br>Сообщение ошибки: %2 <br><b>Service Details:</b><br> <br><b>Подробности о службе:</b><br> <b>Connection:</b> %1 <b>Соединение:</b> %1 Service Details WiFi Connections VPN Connections %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. VPN Engaged VPN Disengaged Warning внимание Service Type: %1<br> Тип службы: %1<br> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. Service State: %1<br> Состояние службы: %1<br> Favorite: %1<br> Избранное: %1<br> Yes favorite Да No favorite Нет External Configuration File: %1<br> Внешний файл настроек: %1<br> Yes immutable Да No immutable Нет Auto Connect: %1<br> Автоподсоединение: %1<br> On autoconnect включено No autoconnect Нет <br><b>IPv4</b><br> <br><b>IPv4</b><br> IP Address Acquisition: %1<br> Получение адреса IP: %1<br> IP Address: %1<br> Адрес IP: %1<br> IP Netmask: %1<br> Сетевая маска IP: %1<br> IP Gateway: %1<br> Шлюз IP: %1<br> <br><b>IPv6</b><br> <br><b>IPv6</b><br> Address Acquisition: %1<br> Получение адреса: %1<br> Prefix Length: <br> Длина префикса: <br> Prefix Length: %1<br> Длина префикса: %1<br> Privacy: %1<br> Конфиденциальность: %1<br> <br><b>Proxy</b><br> <br><b>Прокси</b><br> URL: %1<br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> Серверы:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> Исключая:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><b>Серверы имён</b><br> <br><br><b>Time Servers</b><br> <br><br><b>Серверы времени</b><br> <br><br><b>Search Domains</b><br> <br><br><b>Домены поиска</b><br> <br><br><b>Ethernet</b><br> <br><br><b>Ethernet</b><br> Connection Method: %1<br> Способ подключения: %1<br> Interface: %1<br> Интерфейс: %1<br> Device Address: %1<br> Адрес устройства: %1<br> MTU: %1<br> MTU: %1<br> <br><b>Wireless</b><br> <br><b>Беспроводные сети</b><br> Security: %1<br> Безопасность: %1<br> Strength: %1<br> Сила: %1<br> Roaming: %1<br> Роуминг: %1<br> Yes roaming Да No roaming Нет <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: Состояние: Engaged активирован Disabled не активирован Offline Mode Автономный режим %1On%1%1 powered %1Да%1%1 %1Off%1%1 powered %1Нет%1%1 Yes connected Да No connected Нет Yes tethered Да No tethered Нет Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. Частота обновления счётчиков основана на пороговом значении %L1 КБ данных и %L2 секундах времени. Ethernet Connection<br> icon_tool_tip Соединение Ethernet<br> Service: %1<br> Служба:%1<br> Interface: %1 Интерфейс: %1 WiFi Connection<br> icon_tool_tip Соединение Wi-Fi<br> SSID: %1<br> SSID: %1<br> Strength: %1%<br> Сила: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip Соединение в состоянии готовности. Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip Соединение в неработоспособном состоянии, попытка переподключения Connection is in the Failure State. icon_tool_tip Соединение в неработоспособном состоянии. Not Connected icon_tool_tip Не подключено Error retrieving properties via Dbus Ошибка при получении свойств через Dbus Connection status is unknown Состояние соединения неизвестно Type: %1 <br>Powered On включено Off Выключено Not Connected Не подключено <br>Tethering Enabled Включена Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> %1On%1%1 tethering %1Да%1%1 %1Off%1%1 tethering %1Нет%1%1 <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. <center><b>Не удалось найти системный лоток в этой системе.</b><center><br>Эта программа всё-ещё может быть использована для управения вашими соединениями, но значок в системном лотке отражаться не будет.<center><br><br>Если вы видите это сообщение при загрузке системы и вы знаете, что системный лоток будет после загрузки системы, попытайтесь запустить с опцией <b>-w</b> и установить нужную задержку. Точное время ожидания будет зависеть от конкретной системы. Could not find a connection to the system bus Не удалось найти подключение к системной шине %1 - Critical Error %1 - критическая ошибка Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. Не удалось найти подключение к системной шине.<br><br>%1 не сможет обмениваться данными с connman. Could not create an interface to connman on the system bus Не удалось создать интерфейс для connman на системной шине Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. Не удалось создать интерфейс для connman на системной шине.<br><br>%1 не сможет обмениваться данными с connman. Error reading or parsing connman.Manager.GetProperties Ошибка чтения или анализа connman.Manager.GetProperties %1 - Warning %1 - внимание There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. Произошла ошибка при чтении или анализе ответа от метода connman.Manager.GetProperties.<br><br>Вряд ли какая-нибудь часть %1 будет функционировать. Error reading or parsing connman.Manager.GetTechnologies Ошибка чтения или анализа connman.Manager.GetTechnologies There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. Произошла ошибка при чтении или анализе ответа от метода connman.Manager.GetTechnologies.<br><br>Какая-то часть %1 всё ещё может функционировать. Error reading or parsing connman.Manager.GetServices Ошибка чтения или анализа connman.Manager.GetServices There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. Произошла ошибка при чтении или анализе ответа от метода connman.Manager.GetServices.<br><br>Какая-то часть %1 всё ещё может функционировать. Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] Colorize Icons WiFi Technologies:<br> %1 Found, %2 Powered Технологии Wi-Fi:<br>найдено %1, включено %2 <p style='white-space:pre'><center><b>%1 Properties</b></center> %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 %1 версия %2 by %3 была обнаружена в этой системе.<p>Этот сервер поддерживает спецификацию уведомлений рабочего стола версии %4 %1 detected %1 обнаружена Attempt %1 of 4 looking for notification server. Попытка %1 из 4-х поиска сервера уведомлений. Unable to find or connect to a Notification server. Не удалось найти или подключиться к серверу уведомлений. IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor Редактор свойств &General &Общие <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> <html><head/><body><p>Если активировано, то, когда другие соединения недоступны, эта служба будет подключать компьютер автоматически. Это доступно только для служб, помеченных как &quot;Избранное&quot;. </p><p>Эта служба не будет подключаться автоматически во время роуминга.</p></body></html> AutoConnect Автоподсоединение <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>Список настроенных вручную серверов доменных имён. Некоторые сотовые сети не предоставляют правильные сервера имён, и эта опция позволяет переопределение.</p><p>Этот массив отсортирован по приоритету, и первый пункт в списке означает сервер имён с наивысшим приоритетом.</p><p>Эта настройка полезна, когда используется ручная конфигурация и не настроен глобальный сервер доменных имён.</p><p>Введите один или больше адресов IP. Отделите каждый введённый адрес запятой, точкой с запятой или пробелом.</p></body></html> &Nameservers &Серверы имён <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>Список заданных вручную серверов времени.</p><p>Первый пункт списка означает сервер времени в наивысшим приоритетом.</p><p>При использовании ручной конфигурации эта настройка полезна для перезаписи настроек всех остальных настроек серверов времени. Это зависит от конкретной службы, следовательно, используются только значения для службы по умолчанию.</p><p>Изменения этого свойства приведут к перезапуску запросов NTP.</p><p>Введите один или более адресов IP. Отделите каждый введённый адрес запятой, точкой с запятой или пробелом.</p></body></html> &TImeservers &Серверы времени <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>Список заданных вручную доменов поиска.</p><p>Введите один или больше адресов IP. Отделите каждый введённый адрес запятой, точкой с запятой или пробелом.</p></body></html> &Domains &Домены <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> <html><head/><body><p>Пользовательская конфигурация настроек IPv4.</p></body></html> IPv&4 IPv&4 Address Адрес Netmask Сетевая маска Gateway Шлюз DHCP DHCP Manual Вручную Off Выключено Method Способ <html><head/><body><p>User configuration of IPv6 settings</p></body></html> <html><head/><body><p>Пользовательская конфигурация настроек IPv6</p></body></html> IPv&6 IPv&6 Auto Автоматически Prefix Length Длина префикса Privacy Конфиденциальность Disabled Выключена Preferred Предпочитаема Enabled Включена <html><head/><body><p>User configuration of Proxy settings.</p></body></html> <html><head/><body><p>Пользовательская конфигурация настроек прокси.</p></body></html> &Proxy &Прокси Direct Непосредственно <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> <html><head/><body><p>URL-адрес для автоматической настройки прокси. Используется &quot;автоматическим&quot; способом.</p></body></html> URL URL Servers Серверы <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>Используется при выбранном &quot;ручном&quot; способе. Список URI прокси. URI без протокола будет использован как обычный URI прокси.</p><p>Введите один или больше адресов IP. Отделите каждый введённый адрес запятой, точкой с запятой или пробелом.</p></body></html> Excludes Исключить <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>Используется при выбранном &quot;ручном&quot; способе. Список узлов, к которым можно подключаться напрямую.</p><p><br/></p><p>Введите один или больше адресов IP. Отделите каждый введённый адрес запятой, точкой с запятой или пробелом.</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Что это</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> <html><head/><body><p>Очистить все элементы на текущей странице.</p><p>Это вернёт значение по умолчанию в каждое поле на текущей странице, что, в общем случае означает пустое поле.</p></body></html> Reset Pa&ge Сбросить &страницу <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> <html><head/><body><p>Очистить все поля каждой страницы диалога.</p><p>Это вернёт значения по умолчанию в каждое поле на каждой странице.</p></body></html> Reset &All Сбросить &всё <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> <html><head/><body><p>Подтвердить все элементы, отправить их Connman, и закрыть диалог.</p></body></html> OK OK <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> <html><head/><body><p>Закрыть диалог без отправки данных Connman.</p></body></html> Cancel Отмена Provisioning Provisioning Editor Редактор конфигурации <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Окно текстового редактора.</p><p>Вы можете ввести или вырезать и вставить в в окно. Вы также можете использовать меню выше для вставки текстовых полей.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> <html><head/><body><p>Открыть существующий файл настроек.</p></body></html> &Open &Открыть <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> <html><head/><body><p>Записать отображаемые данные в файл настроек.</p><p>Поле со списком содержит список файлов настроек, созданных CMST, чтобы обеспечить простой способ их перезаписи. Вы также можете ввести имя в поле со списком.</p><p>Не надо указывать путь, ни расширение файла, так как оба будут вырезаны и заменены допустимыми значениями.</p></body></html> &Save &Сохранить <html><head/><body><p>Delete a config file.</p></body></html> <html><head/><body><p>Удалить файл настроек.</p></body></html> &Delete &Удалить <html><head/><body><p>Clear all text from the editor window.</p></body></html> <html><head/><body><p>Очистить окно от всего текста.</p></body></html> &Clear Page &Очистить страницу <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Что это</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Войти в режим &quot;Что это&quot;.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> <html><head/><body><p>Выйти из диалога.</p></body></html> E&xit В&ыйти [global] [общие] Name Имя Description Описание [service_*] [служба_*] Type Тип MAC MAC Nameservers Серверы имён Timeservers Серверы времени SearchDomains Домены поиска Domain Домен SSID SSID EAP EAP CACertFile Файл сертификата CA ClientCertFile Файл сертификата клиента PrivateKeyFile Файл личного ключа PrivateKeyPassphrase Пароль личного ключа PrivateKeyPassphraseType Тип пароля личного ключа Identity Идентификация Phase2 Фаза2 Passphrase Пароль Security Безопасность Hidden Скрытые Eduroam (long) Eduroam (длинный) Eduroam (short) Eduroam (короткий) IPv4 Address IPv4-адрес IPv4 Off Отключить IPv4 IPV4 DHCP IPv4 DHCP IPv6 Address IPv6-адрес IPv6 Off Отключить IPv6 IPv6 Auto Автоматически IPv6 IPv6.Privacy Конфиденциальность IPv6 ProvisioningEditor Global Общие Service Служба WiFi Wi-Fi Templates Шаблоны File Path to the CA Certificate File Путь к файлу сертификата CA File Path to the Client Certificate File Путь к файлу сертификата клиента File path to the Client Private Key File Путь к личному файлу ключей клиента Key Files (*.pem);;All Files (*.*) Файлы ключей (*.pem);;Все файлы (*.*) MAC address. MAC-адрес. SSID: hexadecimal representation of an 802.11 SSID SSID: шестнадцатиричное представление 802.11 SSID List of Nameservers Список серверов имён List of Timeservers Список серверов времени List of DNS Search Domains Список доменов поиска DNS Domain name to be used Доменное имя, которое будет использоваться Enter the string representation of an 802.11 SSID. Введите строковое представление 802.11 SSID. Service type. Тип службы. EAP type. Тип EAP. Private key passphrase type. Тип пароля личного ключа. Network security type. Тип безопасности сети. Hidden network Скрытая сеть IPv6 Privacy Конфиденциальность IPv6 %1 - Item Input %1 - Ввод элемента Tag which will replace the * with<br>an identifier unique to the config file. Метка, которая заменит * <br>уникальным идентификатором в файле настроек. Enter the network name. Ввести имя сети. Enter a description of the network. Введите описание сети. Password/Passphrase for the private key file. Пароль для файла закрытого ключа. Identity string for EAP. Строка идентификации для EAP. RSN/WPA/WPA2 Passphrase Пароль RSN/WPA/WPA2 Phase 2 (inner authentication with TLS tunnel)<br>authentication method. Вторая фаза (внутренняя аутентификация через TLS-туннель)<br>способа аутентификации. %1 - Text Input %1 - Текстовый ввод Information информация Critical критическая The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. Должны быть предусмотрены <b>IPv4-адрес</b>, <b>маска сети</b>, и необязательно <b>шлюз</b>.<p>Нажмите ОК, когда будете готовы продолжить. IPv4 Address IPv4-адрес IPv4 Netmask Сетевая маска IPv4 IPv4 Gateway (This is an optional entry) Шлюз IPv4 (это необязательный элемент) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. Должны быть предусмотрены <b>IPv6-адрес</b>, <b>длина префикса</b>, и необязательно <b>шлюз</b>.<p>Нажмите ОК, когда будете готовы продолжить. IPv6 Address IPv6-адрес %1 - Integer Input %1 - Целочисленный ввод Enter the IPv6 prefix length Введите длину префикса IPv6 IPv6 Gateway (This is an optional entry) Шлюз IPv6 (это необязательный элемент) <center>No configuration files were found.<br>You may use this dialog to create one. <center>Файлы настроек не найдены.<br>Вы можете использовать этот диалог для их создания. %1 - Information %1 - Информация <center>Reading configuration file: %1 <center>Чтение файла настроек: %1 %1 - Select File %1 - Выбрать файл Select a file to load. Выберите файл для загрузки. <center>No configuration files were found.<br>Nothing will be deleted. <center>Файлы настроек не найдены.<br>Ничего не будет удалено. Select a file to be deleted. Выберите файл для удаления. Enter a new file name or select<br>an existing file to overwrite. Введите новое имя файла или выберите<br>существующий файл для перезаписи. File read completed Чтение файла завершено File deleted Файл удалён Error encountered deleting. Ошибка удаления. File save failed. Не удалось сохранить файл. %L1 KB written %L1 КБ записано %L1 Bytes written %L1 Байтов записано <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 <b>Ошибка имени DBus:</b> %1<br><br><b>Строка:</b> %2<br><br><b>Сообщение:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. Не удалось зарегистрировать сервис org.cmst.roothelper — возможно запущен другой экземпляр. Failed to register roothelper object on the system bus. Не удалось зарегистрировать объект roothelper на системной шине. ScrollBox Scrollbox TextLabel TranslateStrings connman system tray Main Window Title Системный лоток connman cmst Abbreviated Program Name - used for QMessageBox titles idle connman state string простаивает association connman state string Соединение configuration connman state string Настройка ready connman state string Готова online connman state string Онлайн disconnect connman state string Отсоединение failure connman state string Сбой offline connman state string офлайн system connman type string Системная ethernet connman type string Ethernet wifi connman type string Wi-Fi bluetooth connman type string Bluetooth cellular connman type string Сотовая gps connman type string GPS vpn connman type string VPN gadget connman type string Гаджет p2p connman type string P2P wired connman type string Проводная direct connman proxy string непосредственно manual connman proxy string вручную auto connman proxy string автоматически psk connman security string PSK ieee8021x connman security string IEEE 802.1X none connman security string отсутствует wep connman security string WEP wps connman security string WPS Invalid arguments connman error string Неправильные аргументы Permission denied connman error string Доступ запрещён Passphrase required connman error string Требуется пароль Not registered connman error string Не зарегистрирована Not unique connman error string Не уникальна Not supported connman error string Не поддерживается Not implemented connman error string Не внедрено Not found connman error string Не найдена No carrier connman error string In progress connman error string В процессе Already exists connman error string Уже существует Already enabled connman error string Уже включена Already disabled connman error string Уже выключена Already connected connman error string Уже подключена Not connected connman error string Не подключена Operation aborted connman error string Операция отменена Operation timeout connman error string Время ожидания операции вышло Invalid service connman error string Неправильная служба Invalid property connman error string Неправильное свойство disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method автоматически manual connman ethernet connection method вручную dhcp connman ipv4 method string manual connman ipv4 method string вручную off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string автоматически manual connman ipv6 method string вручную 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type auto connamn ipv6 method string автоматически manual connamn ipv6 method string вручную Invalid arguments connman error sring Неправильные аргументы Permission denied connman error sring Доступ запрещён Passphrase required connman error sring Требуется пароль Not registered connman error sring Не зарегистрирована Not unique connman error sring Не уникальна Not supported connman error sring Не поддерживается Not implemented connman error sring Не внедрено Not found connman error sring Не найдена In progress connman error sring В процессе Already exists connman error sring Уже существует Already enabled connman error sring Уже включена Already disabled connman error sring Уже выключена Already connected connman error sring Уже подключена Not connected connman error sring Не подключена Operation aborted connman error sring Операция отменена Operation timeout connman error sring Время ожидания операции вышло Invalid service connman error sring Неправильная служба Invalid property connman error sring Неправильное свойство VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> <html><head/><body><p>Имя пользователя WISPr.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> <html><head/><body><p>Пароль WISPr.</p></body></html> Host Name Имя OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Что это</p></body></html> ... ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>Продолжить процесс подключения.</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> <html><head/><body><p>Принять и использовать ответы, предоставленные вами в этом диалоге. </p><p>Это отправит введённый данные демону connman для продолжения процесса подключения.</p></body></html> O&K O&K <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>Отменить процесс подключения.<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> <html><head/><body><p>Отменить диалог. </p><p>Это отправит сообщение демону connman о том, что вы отменили зпрос на подключение.</p></body></html> &Cancel &Отмена Save Credentials VPN_Editor Global Общие OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - Ввод элемента %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input %1 - Текстовый ввод Information информация <center>No configuration files were found.<br>You may use this dialog to create one. <center>Файлы настроек не найдены.<br>Вы можете использовать этот диалог для их создания. %1 - Information %1 - Информация <center>Reading configuration file: %1 <center>Чтение файла настроек: %1 %1 - Select File %1 - Выбрать файл Select a file to load. Выберите файл для загрузки. <center>No configuration files were found.<br>Nothing will be deleted. <center>Файлы настроек не найдены.<br>Ничего не будет удалено. Select a file to be deleted. Выберите файл для удаления. Enter a new file name or select<br>an existing file to overwrite. Введите новое имя файла или выберите<br>существующий файл для перезаписи. File read completed Чтение файла завершено File deleted Файл удалён Error encountered deleting. Ошибка удаления. File save failed. Не удалось сохранить файл. %L1 KB written %L1 КБ записано %L1 Bytes written %L1 Байтов записано Critical критическая <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 <b>Ошибка имени DBus:</b> %1<br><br><b>Строка:</b> %2<br><br><b>Сообщение:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>Окно текстового редактора.</p><p>Вы можете ввести или вырезать и вставить в в окно. Вы также можете использовать меню выше для вставки текстовых полей.</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> <html><head/><body><p>Открыть существующий файл настроек.</p></body></html> &Open &Открыть <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> <html><head/><body><p>Записать отображаемые данные в файл настроек.</p><p>Поле со списком содержит список файлов настроек, созданных CMST, чтобы обеспечить простой способ их перезаписи. Вы также можете ввести имя в поле со списком.</p><p>Не надо указывать путь, ни расширение файла, так как оба будут вырезаны и заменены допустимыми значениями.</p></body></html> &Save &Сохранить <html><head/><body><p>Delete a config file.</p></body></html> <html><head/><body><p>Удалить файл настроек.</p></body></html> &Delete &Удалить <html><head/><body><p>Clear all text from the editor window.</p></body></html> <html><head/><body><p>Очистить окно от всего текста.</p></body></html> &Clear Page &Очистить страницу <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>Что это</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>Войти в режим &quot;Что это&quot;.</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> <html><head/><body><p>Выйти из диалога.</p></body></html> E&xit В&ыйти [global] [общие] Name Имя Name of the network. Description Описание Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting Была обнаружена запущенная копия CMST. Запуск этой копии отменён [Experimental] Disable data counters. May be used to minimize load on your system. [Экспериментально] Отключить счётчики данных. Может быть использовано для уменьшения нагрузки на систему. Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. Отключить значок в системном лотке. Может понадобиться системным лоткам, не соответствующим спецификации Freedesktop.org. Connman System Tray. Connman в cистемном лотке. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. Use an icon theme from your system. Использовать системную тему значков. Icon Theme Name Название темы значков Log the connman inputRequest for debugging purposes. Журналировать запрос connman inputRequest для целей отладки. Start the GUI minimized in the system tray. Запустить графический пользовательский интерфейс, свёрнутым в системный лоток. Specify the wait time in seconds before starting the system tray icon. Укажите время ожидания в секундах перед запуском значка в системном лотке. seconds секунд [Experimental] The number of kb that have to be transmitted before the counter updates. [Экспериментально] Количество кб которые должны быть переданы перед обновлением счётчиков. KB КБ [Experimental] The interval in seconds between counter updates. [Экспериментально] Промежуток в секундах между обновлением счётчиков. If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) Если значку в системном лотке требуется псевдопрозрачность, укажите цвет фона (формат: 0xRRGGBB) RRGGBB Use XFCE specific code. Использовать специальный код для XFCE. Use MATE DE specific code. Использовать специальный код для окружения рабочего стола MATE. processReply Warning внимание <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 cmst-cmst-2018.01.06/translations/cmst_zh_CN.qm000066400000000000000000002566261322401607200211500ustar00rootroot00000000000000rex,~-C!:n+(%nynZM3h 6eXL $UU=b#2~$@^mL^bL^6c )=جA^bO.߰F$& 4&&&:j-%6-2p?-56DOpR:S|Ony ٔ&ShS4#4L5uj`D$+6 o j0+yױBMFڅ`nȺ% dz ]wYfv>ΌP-8&ֹ<[<9SJ#3LhLLLw^ w_X{Kq}y|'>yy6گ͇B^JCDLD uYINdc*C,9 I$$ [0`R4ho1ru.IhI9uueXcYW67D#" 5! jʞ^f8շTշ=>GߺX|UX|:諭#v ;rQʦ%n]1"=1" 7`c|*c|/c Pm?$%n~ˎVd)uņ3F$%׭*>a)a3(U"3e  Bp +Y7n>t>j&&>8[|*Bə`U!re0E,Ym`~Q&3Q&-T,^fx(. 6^&MբsfEH '.)q̯GEMoeoe;v v5G҉~ Yv:A ;\.T T84֔eWY7C}  8 4 $ H~ '0 <H Mg S߅ X@Ш Xk' [N [N@Z cr" d f f? lfO  ~ ޢ$ '| :' S OS dL m ]  ~ ~ ~: ~ ~3 ~A U^   ^v |a #b^(< )^ )"t )" - 7N 9ͳ1 ? D5 P} P W3 ^e a4 c4) eK j5E j5 sY  %^ ag  n D I I- 4 , ,; 2Dm : ŚIg ŴI K ȗ ~ ε? V#" n%, ) և֍ j $(^dC L^Ӎ RV~ ^E _weq a" a"; bt c~C h> h> p l.! l.9 pS }OS ~ Z8* |k ! ~ ~: )? ) i )  ^" ~ O(u ͛qm DŽ#^  %$D (sM 1 3( 4Z ;~g G M} Mѱ UTNL b!t cG g, u?1 v9^ N <* -_ Mm E ` S 6n p tsԘ ׅS ׅ38  }> }>7  l x -^ Ptc T^J VR+ V`+l V# _^ǻ i?2ϖ i?2 nE N# NL= 2 . NP N^ uD 7 uD5X q ͑` b S h. ^R  >% nI t5-ި je">l.=}%U>%U>;,;IG5  9= LN%P/dpiIr1r:5{{)N.N^"o0deHe81_H xɾ->:)եn %  S aICJ&B^,F~I1JIZ;Z;0na1.cgD`$g>h~m#nqWatNIDT&E"|".H^B.eSW96- Nͻnͻn.^s|HEiLl Sm(&C)&CancelAgent[x(&H)&Hide PassphraseAgent N(&I) &IdentityAgent T y(&N)&NameAgent [x(&P) &PassphraseAgent &SSID&SSIDAgentu(b7T (&U) &UsernameAgent&WPS Pin&WPS PinAgent...Agent<html><head/><body><p>cS^vOu(O`W(kdON-cOvO`o0</p><p>\bO`vQeSѐ~connman[bz N~~c0</p></body></html>

    Accept and use the answers you have provided in this dialog.

    This will send your input to the connman daemon to continue the connection process.

    Agentd<html><head/><body><p>Smc0<br/></p></body></html>K

    Cancel the connection process.

    Agent<html><head/><body><p>SmO0</p><p>\O~connman[bz SѐSmclB0</p></body></html>

    Cancel the dialog.

    This will send a message to the connman daemon that you have cancelled the connection request.

    Agent`<html><head/><body><p>R N喐[x0</p></body></html>Z

    Check this box to obscure the password characters.

    Agent<html><head/><body><p>ConnmanOu(mOVhv{_U0eg,hF\Uy:NST+v{_UubvQW@0</p></body></html>

    Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.

    AgentZ<html><head/><body><p>~~c0</p></body></html>H

    Continue the connection process.

    Agentf<html><head/><body><p>Qe WPS pin.</p></body></html>8

    Enter a WPS pin.

    Agentz<html><head/><body><p>Yge[xSu( [Of>y:W(ّO\N:S€0</p></body></html>n

    If an old passphrase is available it will be shown here for reference.

    Agentl<html><head/><body><p>QeO``cvQ~vT y</p></body></html>c

    Type the name of the hidden network you wish to connect to.

    Agent^<html><head/><body><p>W(kdQe[x0</p></body></html>A

    Type the passphrase here.

    Agentb<html><head/><body><p>QeO`vEAPN</p></body></html>e

    Type your Identity for the Extensible Authentication Protocol

    Agent<html><head/><body><p>SUQT/R bvmOVh0mOVh\ObS_f>y:W( v{_UURL eg,hFvQW@0</p></body></html>

    Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.

    Agentb<html><head/><body><p>WISPr [x.</p></body></html>7

    WISPr password.

    Agentd<html><head/><body><p>WISPr u(b7T .</p></body></html>7

    WISPr username.

    AgentZ<html><head/><body><p>f/NNH</p></body></html>3

    What's This

    Agent<html><head/><body><p>_SR e Ou(WPS push button N0 </p></body></html>Z

    When checked use WPS push button authentication.

    AgentNtQe Agent InputAgentu(mOVhv{_UBrowser Login RequestedAgentSbi\UNSO (EAP)(Extensible Authentication Protocol (EAP)AgentQ~Hidden NetworkAgentT/RmOVh(&B)Launch &BrowserAgentv{_U URL: Login URL:Agent xn[(&K)O&KAgent[x PassphraseAgent [x(&D) Passwor&dAgentg Rh(SSID)Service Set IdentifierAgent(Ou( Push &Button NUse Push &Button AuthenticationAgent SObvWifin (WPS)WiFi Protected Setup (WPS)Agente~g RUFo+n8 (WISPr)2Wireless Internet Service Provider roaming (WISPr)Agent O`o Information AgentDialog NtlBY1%Agent Request Failed ConnmanAgentConnman  Connman Error ConnmanAgentTConnman VNNN <b><center>%1</b><br>f/T&͋RConnman returned the following error:
    %1
    Would you like to retry? ConnmanAgent$W(_R0NN*V^NKRM NtlBY1%N05The agent request failed before a reply was returned. ConnmanAgent %L1 BytesConnmanCounter%L1 GBConnmanCounter%L1 KBConnmanCounter%L1 MBConnmanCounter %Ln Packet(s)ConnmanCounter%n e %n Day(s)ConnmanCounter%n e %n Hour(s)ConnmanCounter%n R %n Minute(s)ConnmanCounter%n y %n Second(s)ConnmanCounterd<b>]O </b><br>O `;ep: %1 (%2), O : %3, O N"Y1: %4FTransmit:
    TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4ConnmanCounter0<br><br><b>ce</b><br>

    Connect Time:
    ConnmanCountert<br><br><b>]ce6</b><br>ce6`;ep: %1 (%2), ce6: %3, ce6N"Y1: %4N

    Received:
    RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4ConnmanCounter NtlBY1%Agent Request FailedConnmanVPNAgentConnman  Connman ErrorConnmanVPNAgentTConnman VNNN <b><center>%1</b><br>f/T&͋RConnman returned the following error:
    %1
    Would you like to retry?ConnmanVPNAgent$W(_R0NN*V^NKRM NtlBY1%N05The agent request failed before a reply was returned.ConnmanVPNAgent< WiFi Y:<br> %1 ]b~R0, %2 ]T/u(. WiFi Technologies:
    %1 Found, %2 Powered ControlBox fTJ Warning ControlBox%1 (%2) Q~%1 (%2) Network ControlBox%1 - N%͕%1 - Critical Error ControlBox%1 - fTJ %1 - Warning ControlBox%1 fee_N Su(0%1 change log is not available. ControlBoxRhmKR0 %1 rHg, %2 by %3 0<p>N*g Re/chLbwă rHg, %4z%1 version %2 by %3 has been detected on this system.

    This server supports desktop Notification Specification version %4 ControlBox%1Qs%1%1 %1Off%1%1 ControlBox%1Qs%1%1 tethering %1Off%1%1 ControlBox%1_%1%1%1On%1%1 ControlBox%1_%1%1 tethering%1On%1%1 ControlBox QsN(&A)&About ControlBox&AwOken ControlBox ~ߋ(&C) &Counters ControlBox~O`o(&D)&Details ControlBox Q(&E)&Exit ControlBox ^.R(&H)&Help ControlBox f\(&L)&Less ControlBox&License ControlBox n(&P) &Preferences ControlBox&QT ControlBox r`(&S)&Status ControlBoxe~Q~(&W) &Wireless ControlBox<b>c:</b> %1Connection: %1 ControlBox<b>g R:</b> %1Service: %1 ControlBox
    IPv4
     ControlBox
    IPv6
     ControlBox$<br><b>DNS</b><br>
    Name Servers
     ControlBox"<br><b>Nt</b><br>
    Proxy
     ControlBox(<br><b>g R`:</b><br>
    Service Details:
     ControlBox"<br><b>e~</b><br>
    Wireless
     ControlBox,<br><br><b>NY*Q</b><br>

    Ethernet
     ControlBox0<br><br><b>d}"W</b><br> #

    Search Domains
     ControlBox4<br><br><b>eg RVh</b><br> !

    Time Servers
     ControlBoxX<center><b>g*W(kdg:N b~R0|~bXv0</b><center><br>kdz ^NSu(N{tO`vc OFf/bXvVhOyu(0<center><br><br>YgO`W(|~T/Rew R0N*O`o ^vNO`wS_S|~T/Re|~bXv[XW( \u( <b>-w</b> SepT/Rg,z ^ ^vW(g _ʼnv`QN nNN*^e0 [Ev{I_eVN T |~߀ _0

    Unable to find a systemtray on this machine.

    The program may still be used to manage your connections, but the tray icon will be disabled.


    If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the -w switch and set a delay as necessary. The exact wait time will vary from system to system. ControlBoxf<html><head/><body><p><span style=" font-weight:600;">^.R</span></p><p>z ^v^.RO`oN;u1N ev &quot;f/NNH&quot; c cO0c N c ^vSUQO``Nvyv0 &quot;f/NNH&quot; N_SW(gavN S.vN N eSU0</p></body></html>g

    Help

    Program help is mainly provided by the "What's This" button in the lower left corner. Press the button and then click on an item you are interested in. "What's This" is also available via context menu by right clicking on a button, box or text area.

     ControlBox<html><head/><body><p><span style=" font-weight:600;">ވLj!_</span></p><p>ވLj!_cQh\@ve~Y_Qsn0bS_ވLj!_\OQsb@g e~Y0y_ވLj!_e e~Yv_Qsr`u1Tv{VueQ[0 </p><p>W(ވLj!_bS_g NSbKRebS_Y0OY gN`QN g PvWifibrYOu(f/QAv0</p></body></html>#

    OfflineMode

    The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not.

    During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.

     ControlBoxX<html><head/><body><p>~ߋn</p></body></html>8

    Counter Settings

     ControlBoxd<html><head/><body><p>hO\&quot;o+n8&quot;v&quot;W(~&quot; cv~ߋO`o0</p><p>OY[Nzepcnge N,hy:cR0_W0vЄ%UF0</p><p>~ߋ^v^`;f/Su(0~ߋST}NL (-c b --disable-counters)yu( N_SW(Pvq6v`QN cbTJ&quot;\1~&quot; r` ^ &quot;W(~&quot;0W(~f/ &quot;\1~&quot; vcǀTQTvr`0N_g S &quot;\1~&quot; vc W(~ OFf/~ߋS[ &quot;W(~&quot; vcg eH0</p></body></html>

    Counters for the "online" service connection marked "roaming".

    In the case of cellular services this normally indicates connections to a foreign provider.

    Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register "ready" instead of "online". Online is a "ready" connection that has verified internet connectivity. It is possible to be online with only a "ready" connection, however the counters only work for they "online" connection.

     ControlBox<html><head/><body><p>^o+n8v &quot;W(~&quot; g Rcv~ߋO`o0 </p><p>~ߋ^v^`;f/Su(0~ߋST}NL (-c b --disable-counters)yu( N_SW(Pvq6v`QN cbTJ&quot;\1~&quot; r` ^ &quot;W(~&quot;0W(~f/ &quot;\1~&quot; vcǀTQTvr`0N_g S &quot;\1~&quot; vc W(~ OFf/~ߋS[ &quot;W(~&quot; vcg eH0</p></body></html>9

    Counters for the "online" service connection that is not marked roaming.

    Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register "ready" instead of "online". Online is a "ready" connection that has verified internet connectivity. It is possible to be online with only a "ready" connection, however the counters only work for they "online" connection.

     ControlBoxp<html><head/><body><p>؋lg T/u(NOUry[hLbvNx0</p></body></html>L

    Default is no desktop specific code.

     ControlBox<html><head/><body><p>kd y]yu( VN:_SRMconnmanOcS׏N* yOFf/N OPZNOUN`0</p></body></html>

    Disabled because currently Connman will accept this option but will do nothing with it.

     ControlBoxx<html><head/><body><p>f>y:QsNN*z ^N-Ou(vVhv[hF0 </p></body></html>}

    Display a dialog box containing information about the Icon set used in this program.

     ControlBox~<html><head/><body><p>f>y:QsNu(Ng^g,z ^vQt]QwSv[hF0 </p></body></html>

    Display a dialog box containing information about the QT toolkit used to develop this program.

     ControlBoxp<html><head/><body><p>f>y:QsNg,z ^vO`ov[hF0 </p></body></html>h

    Display a dialog box containing information about this program.

     ControlBox<html><head/><body><p>Qz ^^vydbXvVh0ConnmanNON[bz ЈL OFf/N QSg,z ^{t0</p></body></html>

    Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.

     ControlBox$<html><head/><body><p>_:R6b@g WifiYebkc0NbgLT}NL <span style=" font-weight:600;">connmanctl scan wifi</span> |{O<0</p><p>W(bkcϏz N-c \yu(0</p></body></html>

    Force a rescan of all WiFi technologies. This is similar to issuing the command connmanctl scan wifi from the command line.

    The button will become inactive while the scan is occuring.

     ControlBox<<html><head/><body><p>YgconnmanSN:N &quot;Y1%Failed &quot; r` [N,OOcN*r`0</p><p>YgN*Y hFR CMSTO\ՑecR0Qe &quot;Y1%Failed &quot; r`RMvWifig R0 </p></body></html>

    If a Connman service falls into the "Failed" state it will normally remain in that state.

    If this box is checked CMST will try to automatically reconnect a WiFi service that enters the "Failed" state.

     ControlBox<html><head/><body><p>R CMST OW(_SRMu(b7vT/Rv_UNuNN*T/Ry N Y ROyd0v_UOMnN,N: <span style=" font-weight:600;">${HOME}/.config/autostart</span>0 </p><p>CMST SONubR dT/RyeNY9Qv .desktop eN0RT/RN,OVNhLbsX _Ř{W(hLbsXT/u(0</p></body></html>

    If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: ${HOME}/.config/autostart.

    CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.

     ControlBoxl<html><head/><body><p>R N f>y:bXvVh0 </p></body></html>f

    If checked an icon will not be displayed in the system tray.

     ControlBox<html><head/><body><p>R N e UIcNvcy:OT/u(0</p><p>_SO`u( hRcNN cy:O_9Q0 </p></body></html>

    If checked the display of tooltips will be enabled for the interface widgets.

    Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface.

     ControlBox<html><head/><body><p>R hLbwz ^OW(connmanvQsv͉NNSue_9Qwm`o0</p><p>wSbXvVhYt bwz ^YtYg[XW( 0 N$N T eT/u(0</p></body></html>A

    If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.

    Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.

     ControlBoxz<html><head/><body><p>R W( hRbXvVhe_9Qr`O`o0</p></body></html>

    If checked the system tray icon will popup a status message when you hover the mouse over it.

     ControlBox<html><head/><body><p>R bXvVhOW(connmanvQsv͉NNSue_9Qwm`o0</p><p>wSbXvVhYt bwz ^YtYg[XW( 0 N$N T eT/u(0</p></body></html>%

    If checked the system tray will popup a notify message when a significant connman related event is received.

    Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.

     ControlBox<html><head/><body><p>g\S[hF0Yg|~bXvVhT/u( S.VhS`bY N*[hF0YgbXvVh g\S\N Su(0</p></body></html>

    Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.

     ControlBox<html><head/><body><p>^8 ~ߋO`oONv}/ ceTce60O epOOuYvR0N Nk!T/R0 </p><p>_SR N e kk!cmstbconnmanT/Re~ߋO`oOn0 </p></body></html>-

    Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots.

    When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started.

     ControlBoxf<html><head/><body><p>bS_Mnprovision Vh R^bconnmanMneN0</p><p>NMneNW( /var/lib/connman b@g gCN: root:root 0 CMST OlQNN*roothelpergeSTQQeN*eNY9QveN0 </p><p>N:2kbrootrygCnu( VhSOdO\TN: <span style=" font-style:italic;">.cmst.config</span>veN0N*TOW(eNO[XeRmRN ^vNN Oe90 </p><p>N*VhN bR dQv[e_R^vMneN0</p></body></html>

    Open the provisioning editor to create or edit Connman configuration (provisioning) files.

    These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory.

    To avoid abusing the root privileges the editor will only operate on files with names ending in .cmst.config. This file name ending will be added automatically during a file save and cannot be altered.

    Using this editor it is not possible to edit or delete config files created by other means.

     ControlBoxh<html><head/><body><p>N*ehFQf/cSvn0</p></body></html>V

    Preferences for the interface are in this box.

     ControlBoxj<html><head/><body><p>|~bXvvQsnW(NWW0</p></body></html>X

    Preferences for the system tray are in this box.

     ControlBox$<html><head/><body><p>W(N hN- bNN*Wifig R ^vc N N*c gecR0g R0 </p><p>YgRhN-Sg NN*g R c N N*c \OR b鐣N*g R^v\Տc0 </p><p>YgN*g RfYvO`o OY[x O`\Ocy:0 </p></body></html>{

    Select a wifi service in the table below and press this button to connect the service.

    If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect.

    If information about the service is needed, a passphrase for instance, you will be prompted for it.

     ControlBoxR<html><head/><body><p>W(N hN- bNN*Wifig R^vc N N*c gee_[0 </p><p>YgSg NN*Wifig RYN &quot;\1~&quot; b &quot;W(~&quot; r` c N N*c \OR b鐣N*g R^ve_[0 </p><p>N_Su(N~kbQHRMvc\0</p></body></html>j

    Select a wifi service in the table below and press this button to disconnect it.

    If there is only one wifi service in the "ready" or "online" state pressing this button will automatically select that service and disconnect it.

    This may also be used to abort a previous connection attempt.

     ControlBox<html><head/><body><p>[W(~ߋfeRM_Ř{O vepcn NKBhy: (؋f/ 1024 KB)0</p></body></html>

    Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).

     ControlBox <html><head/><body><p>[W(~ߋfeRM_Ř{O vepcn NKBhy: (؋f/ 1024 KB)0</p><p>ConnmanOcS׏N* y OFf/h9cnconnmanvNxl N*ry`'g*[s Vkd y]yu(0</p></body></html>A

    Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).

    Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.

     ControlBox<html><head/><body><p>c[for NSAQmR6c qgYN h<_ RRGGBB.</p></body></html>k

    Specify the background color as a hex number in the format: RRGGBB.

     ControlBox<html><head/><body><p>n~ߋO`ofevs NyN:SUOM (؋f/ 10 y)0 </p></body></html>z

    Specify the frequency in seconds between counter updates (default is 10 seconds).

     ControlBox<html><head/><body><p>nT/R|~bXvRMv{I_e NyN:SUOM (؋f/ 0 y)0</p></body></html>

    Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).

     ControlBoxR<html><head/><body><p>b@g g Rv؋nf/Rvb|{O<DHCP 0 N,kdnYOu( OFN f/ N*c Su(gebKRn N-g RvNY*QTIPn0</p><p>W(NN N$y`QN N*c Oyu(g Rnu1YMneNcO bg Rf/NN*Wifi0elOe9Ng Rvn0</p></body></html>

    The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.

    This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.

     ControlBox<html><head/><body><p>Qh\@cr` Svr`g &quot;y~&quot;, &quot;zz&quot;, &quot;\1~&quot;T&quot;W(~&quot;. </p></body></html>

    The global connection state of the system. Possible values are "offline", "idle", "ready", and "online".

     ControlBox<html><head/><body><p>cR6e~Y_QsvQh\@n0_SވLj!_bS_eb@g e~Y\Qs0</p><p>_SYNވLj!_e N*R+YNq6SebS_0y_ވLj!_ee~Yv_Qsr`u1Tv{VueQ[0</p></body></html>X

    The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.

    While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.

     ControlBoxd<html><head/><body><p>vщ^v~ߋvg R0</p></body></html>T

    The service being monitored by the counters.

     ControlBox<html><head/><body><p>~ߋfevP<0 epcnTeT e[NINfes0</p></body></html>

    The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.

     ControlBox<html><head/><body><p>NgavcR6cmstT/RevNN y0 </p><p>b@g N ySNT}NLn T}NL\OvkdYvn0</p></body></html>

    These entries control various options for CMST at program start.

    All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.

     ControlBox<html><head/><body><p>N*ehFQf>y:Nb@g connmanYcR0vQ~0</p></body></html>`

    This box lists all services that connman can connect to.

     ControlBox<html><head/><body><p>N*Y hFcR6QhQ~܏cv_Qs0_S N-e b@g Q~܏c\Qs0</p><p>_S|~YNވLj!_e N*_QsSebS_N*NY0y_ވLj!_e Yv_Qsr`u1Tv{VueQ[0</p></body></html>l

    This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.

    When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.

     ControlBox<html><head/><body><p>N*h{~f>y:Nb~R0vT_T/vWifiYepv0ON bvehFQf>y:g R \b~R0^v_T/NN*WifiY0</p><p>_QsYR0 <span style=" font-weight:600;">r`</span> h{~uv <span style=" font-weight:600;">Y</span> ehF^vSQ[^Y <span style=" font-weight:600;">]T/u(</span> hQve[W0</p></body></html>

    This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.

    To turn a technology on or off go to the Technologies box in the Status tab and double click on the text that shows in the Powered column for the technology.

     ControlBox<<html><head/><body><p>N*ubf>y:N]wvWifig R0</p><p><span style=" font-weight:600;">T y:</span> Q~vSSID0</p><p><span style=" font-weight:600;">]O[X:</span> N*hvN-v__bVhhy:Su5f~Ou(N*g RcQ~0</p><p><span style=" font-weight:600;">]c:</span> hy:N*g Rvcr`0 hRVhO_9Qe[Wf0 W(~hy:Q~Su(^vN]򚌋0 \1~hy:YbRc0 </p><p><span style=" font-weight:600;">[Qh`': </span>cϏNg Rv[Qh`'0SvP<p><span style=" font-weight:600;">OS_:^:</span> WifivOS_:^ u(0R0100vP<p><br/></p></body></html>

    This page shows the known WiFi services.

    Name: The SSID of the network.

    Favorite: A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.

    Connected: Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device.

    Security: Describes the type of security used for this service. Possible values are "none", "wep", "psk", "ieee8021x", and "wps".

    SIgnal Strength: The strength of the WiFi signal, normalized to a scale of 0 to 100.


     ControlBoxf<html><head/><body><p>Ou(N:ry[DEQYvz ^Nx0</p><p>N2014.11.24v`Q Ou( QT5.3 TgN|~bXvO b0z ^N-NNNx\ՉQN* R NyOT/u(N:ry[hLbQYvNx0</p><p>_SOY e N yOOuYNQMT/Rg,])n OFeN* y\NNHN PZ0</p></body></html>

    Use code specific for the selected desktop environment.

    As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.

    If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.

     ControlBox<html><head/><body><p>Ou(N*N bhF bO``gw ~O`ovg R0<br/></p></body></html>

    Use this Combobox to select the service for which you wish to view the detailed information.

     ControlBox <html><head/><body><p>Ou(N*c Qe &quot;f/NNH&quot; j!_^vgw GUIQC} vvQsO`o0 </p><p>O`N_SNW(uLbQC} N S.gw NNKvQsv &quot;f/NNH&quot; O`o0</p></body></html>

    Use this button to find information about an element in the GUI by entering "What's This" mode.

    You may also right click on an element to show the "What's This" text for it.

     ControlBoxn<html><head/><body><p>Ou(g,c gw z ^vfee_0</p></body></html>^

    Use this button to view the change log of the program.

     ControlBoxh<html><head/><body><p>Ou(g,c gw z ^S0</p></body></html>T

    Use this button to view the program license.

     ControlBoxZ<html><head/><body><p>f/NNH</p></body></html>3

    What's This

     ControlBox~<html><head/><body><p>_SR e N:~u(b7QYvDRnOf>y:Qge0</p></body></html>j

    When checked additional controls for advanced users are displayed.

     ControlBoxz<html><head/><body><p>_SR e g R ehFQvcT y0</p></body></html>b

    When checked hide the connection name in the Services box.

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">T}NL y: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>n~ߋO`ofevs NyN:SUOM (؋f/ 10 y)0 </p></body></html>
    Command Line Option: --counter-update-rate

    Specify the frequency in seconds between counter updates (default is 10 seconds).

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">T}NL y: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>QNN*QT OObXvVhfoN:тrbv}r N f/f0</p><p>O`SNW(ّc[bXvVhfor0h<_N: RRGGBB vSAQmR6P<0YgR6[vrNbXv؀forvT bN\1bRW0O* NNN*ffo0</p></body></html>
    Command Line Option: --fake-transparency

    Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.

    You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency.

     ControlBoxl<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">T}NL y: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html>D
    Command Line Option: --use-mate
     ControlBoxJ<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">T}NL y: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> b </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>yu(|~bXvVh0</p><p>_S|~bXvN e/c Freedesktop.org |~bXv؉ăeS0</p></body></html>
    Command Line Option: -d or --disable-tray-icon

    Disable the system tray icon.

    May be needed for system trays not compliant with the Freedesktop.org system tray specification.

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">T}NL y: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> b </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>T/Reg\SR0bXv0</p></body></html>"
    Command Line Option: -m or --minimized

    Start the GUI minimized in the system tray.

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">T}NL y: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> b </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>nT/R|~bXvRMv{I_e NyN:SUOM (؋f/ 0 y)0</p><p>Yg CMST ]T/R^v\W(|~bXvT/RRMT/RbXvVh O_9QNN*fTJ[hF0_Sz ^RT/Re g eOSu0YgO`xn[|~T/ReOT/RbXv O`SN勾nNN*{I_e CMSTOW(R^bXvVhRM{I_0O_W(bNbVhe>QebXvRM WMbbgg eR^bXv0</p></body></html>2
    Command Line Option: -w or --wait-time

    Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).

    If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.

     ControlBox<html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">T}NL y: <span style=" font-weight:600;">-c</span> b <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>yu(~ߋ0SQ\|~ߍDnm0</p></body></html>
    Command Line Option: -c or --disable-counters

    Disable the counters. May be used to minimize load on your system.

     ControlBox QsN %1About %1 ControlBoxQsN AwOken About AwOken ControlBoxW0W@S: %1<br>Address Acquisition: %1
     ControlBox~Advanced Controls ControlBoxQsb@g Y(&O)All Devices &Off ControlBox$\ %1 of 4 gb~wg R00Attempt %1 of 4 looking for notification server. ControlBoxRc: %1<br>Auto Connect: %1
     ControlBoxC&MST ControlBoxSmCancel ControlBox ChangeLo&g ControlBox ChangeLog ControlBoxn Configuration ControlBoxcConnect ControlBox]c Connected ControlBoxc Connection ControlBoxce_: %1<br>Connection Method: %1
     ControlBox"cYNY1%r` \Ցe^zˏcLConnection is in the Failure State, attempting to reestablish the connection ControlBoxcYNY1%r`0#Connection is in the Failure State. ControlBoxcYN\1~r`0!Connection is in the Ready State. ControlBox cr`g*wConnection status is unknown ControlBox c: %1Connection: %1 ControlBox>elW( system bus N R^NconnmanOvcS:Could not create an interface to connman on the system bus ControlBoxelՏcR0system bus-Could not find a connection to the system bus ControlBox~ߋfe KBCounter Update KB ControlBox ~ߋfesCounter Update Rate  ControlBox ~ߋN Su(0Counter not available. ControlBox ry[hLbnDesktop Specific ControlBoxYW0W@: %1<br>Device Address: %1
     ControlBoxODialog ControlBoxyu(~ߋDisable Counters ControlBoxyu(|~bXvVhDisable Tray Icon ControlBoxyu(Disabled ControlBoxe_ Disconnect ControlBox Q(&X)E&xit ControlBox T/u(RT/REnable Autostart ControlBox T/u(bXv_9hFEnable System Tray Popups ControlBoxT/u(cy:Enable ToolTips (Interface) ControlBoxT/u(Enabled ControlBoxT/u(Engaged ControlBoxPW(Sbgconnman.Manager.GetPropertieseSu6Error reading or parsing connman.Manager.GetProperties ControlBoxPW(Sbgconnman.Manager.GetPropertieseSu4Error reading or parsing connman.Manager.GetServices ControlBoxPW(Sbgconnman.Manager.GetPropertieseSu8Error reading or parsing connman.Manager.GetTechnologies ControlBoxNDBUSSV\^`'Y1%$Error retrieving properties via Dbus ControlBoxNY*Qc<br>Ethernet Connection
     ControlBox2cd:<br>&nbsp;&nbsp;%1<br>Excludes:
      %1
     ControlBoxYMneN: %1<br>#External Configuration File: %1
     ControlBoxO* bXvVhffoFake Transparency ControlBox]O[XFavorite ControlBox]O[X: %1<br>Favorite: %1
     ControlBoxQh\@nGlobal Properties ControlBox bXvVhHide Tray Icon ControlBoxg,W0Home ControlBoxIP W0W@S: %1<br>IP Address Acquisition: %1
     ControlBoxIP W0W@: %1<br>IP Address: %1
     ControlBoxIP QQs: %1<br>IP Gateway: %1
     ControlBoxIP [PQcx: %1<br>IP Netmask: %1
     ControlBoxuLb Interface ControlBoxcS: %1<br> Interface: %1 ControlBoxcS: %1<br>Interface: %1
     ControlBoxLicense ControlBoxMATE ControlBox MTU: %1
     ControlBoxgY'S(&X) Ma&ximize ControlBoxg\S(&N) Mi&nimize ControlBoxN y Move After ControlBoxN y Move Before ControlBoxT yName ControlBox Q~g R:Network Services: ControlBoxT&No ControlBoxT& autoconnectNo ControlBoxT& connectedNo ControlBoxT& immutableNo ControlBoxT&roamingNo ControlBox g* bg RNo Services Selected ControlBoxeSu(Q~g RNo network services available ControlBoxeNone ControlBoxg*c Not Connected ControlBoxg*c icon_tool_tip Not Connected ControlBoxwz ^Notification Daemon ControlBoxw Notifications ControlBox[a_: %1Object Path: %1 ControlBoxQsOff ControlBoxވLj!_ Offline Mode  ControlBoxވLj!_]yu(Offline Mode Disabled ControlBoxވLj!_]_T/Offline Mode Engaged ControlBoxވLj!_N Su(OfflineMode: Unavailable ControlBoxf/On ControlBoxf/ autoconnectOn ControlBox]T/u(Powered ControlBoxRM^: %1<br>Prefix Length: %1
     ControlBoxRM^: <br>Prefix Length:
     ControlBoxy: %1<br>Privacy: %1
     ControlBoxz ^cR6Program Control ControlBox MnVhProvisioning Editor ControlBox_؋Remove ControlBoxebkc(&A)Resc&an ControlBoxn~ߋReset Counters ControlBox Y1%ecRetry Failed Connection ControlBoxo+n8Roaming ControlBoxo+n8: %1<br>Roaming: %1
     ControlBox SSID: %1
     ControlBox[Qh`'Security ControlBox[Qh`': %1<br>Security: %1
     ControlBox g R(&V)Ser&vice ControlBoxg Rr` Server Status ControlBox4g RVh:<br>&nbsp;&nbsp;%1<br>Servers:
      %1
     ControlBoxg R: %1Service Error: %1 ControlBoxg Rr`: %1<br>Service State: %1
     ControlBoxg R|{W: %1<br>Service Type: %1
     ControlBoxg RService: ControlBoxg R: %1<br>Service: %1
     ControlBoxg RServices ControlBoxn Settings: ControlBoxOS_:^Signal Strength ControlBox T/Reg\SStart Minimized ControlBoxT/R y Start Options ControlBoxr`State ControlBoxr`: State:  ControlBox r`N Su(State: Unavailable ControlBox_:^: %1%<br>Strength: %1%
     ControlBox_:^: %1<br>Strength: %1
     ControlBox|~bXv System Tray ControlBox |~bXvؐwSystem Tray Notifications ControlBoxY Technologies ControlBoxpp Tethering ControlBoxW(Sbgconnman.Manager.GetPropertiesvV^eSuNNN*0<br><br>%1 SN ]O\0There was an error reading or parsing the reply from method connman.Manager.GetProperties.

    It is unlikely any portion of %1 will be functional. ControlBoxW(Sbgconnman.Manager.GetPropertiesvV^eSuNNN*0<br><br>%1 RRSNSN]O\0There was an error reading or parsing the reply from method connman.Manager.GetServices.

    Some portion of %1 may still be functional. ControlBoxW(Sbgconnman.Manager.GetPropertiesvV^eSuNNN*0<br><br>%1 RRSNSN]O\0There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.

    Some portion of %1 may still be functional. ControlBox|{WType ControlBox URL: %1
     ControlBoxrelW( system bus N R^NconnmanOvcS0<br><br>%1 \elNconnmanO0sUnable to create an interface to connman on the system bus.

    %1 will not be able to communicate with connman. ControlBox elxn[g RUnable to determine service ControlBoxRelՏcR0system bus0<br><br>%1 \elNconnmanO0fUnable to find a connection to the system bus.

    %1 will not be able to communicate with connman. ControlBoxelb~R0bcwg R03Unable to find or connect to a Notification server. ControlBox<~ߋfevPWiFi Connection
     ControlBoxWifi r` Wifi State ControlBox e~Q~g RWireless Services ControlBoxXFCE ControlBoxf/Yes ControlBoxf/ connectedYes ControlBoxf/ immutableYes ControlBoxf/roamingYes ControlBox0W(c N _؋c NKRM O` bNN*Wifig R0DYou need to select a Wifi service before pressing the remove button. ControlBox W(&D)&DomainsPeditor u((&G)&GeneralPeditorDNSg RVh(&N) &NameserversPeditor Nt(&P)&ProxyPeditoreg RVh(&T) &TImeserversPeditor<html><head/><body><p>xnnyv b[NSѐ~connman ^vQs[hF0</p></body></html>g

    Accept the entries, send them to Connman, and close the dialog.

    Peditor<html><head/><body><p>RNtMnvURL0 W(&quot;R&quot;elN-Ou(0</p></body></html>p

    Automatic proxy configuration URL. Used by the "auto" method.

    Peditor<html><head/><body><p>niZ_SRMubvQh苾n0</p><p>N*c ObubN b@g nnN:؋P< ؋P<^8N:zz0</p></body></html>

    Clear all entries on the current page.

    This button will reset every field on the current page to the default value, which generally means nothing in the field.

    Peditor<html><head/><body><p>ndN*[hFN b@g ubN-vn0</p><p>\Obb@g ubvb@g nnN:؋P<0</p></body></html>

    Clear all fields on every page of the dialog.

    This will reset every field on every page to the default value for the field.

    Peditor|<html><head/><body><p>Qs[hF N SѐNOUn~connman0</p></body></html>`

    Close the dialog without sending any entries to Connman.

    Peditor<html><head/><body><p>R N*g R\W(lg Qv[Su(ceRc0N*ShN: &quot;]O[X&quot;vg ROu(0 </p><p>o+n8e g R\N ORc0</p></body></html>

    If checked this service will auto-connect when no other connection is available. This is only available for services marked "Favorite".

    The service will not auto-connect while roaming.

    Peditor<html><head/><body><p>bKRMnvd}"WRh0</p><p>QeNN*bYN*IPW0W@0 u(eS0RSbzzh</body></html>

    List of manually configures search domains.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor<html><head/><body><p>bKRMnvDNSg RVhRh0RzQ~N cOkcxnvWT gg RVh N*Rhv֋n0</p><p>N*Rhc qgOQH~c^ RhN-v{,Nyhy:gOQHvDNSg RVh0</p><p>_SYNbKRj!_Nlg nQh\@WT g RVhe ٘ynSARg u(0</p><p>QeNN*bYN*IPW0W@0 u(eS0RSbzzh</body></html>"

    The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.

    This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.

    When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor<html><head/><body><p>bKRMnveg RVhRh0</p><p>RhN-v{,Nyhy:gOQHvg RVh0</p><p>Ou(bKRMne N*nSN剆vQv[b@g eg RVhn0Vg R _ VkdSꔈ[؋vW(Ou(vg RvP<0</p><p>e9S؏٘ynOT/NTPg0</p><p>QeNN*bYN*IPW0W@0 u(eS0RSbzzh</body></html>

    The list of manually configured time servers.

    The first entry in the list represents the timeserver with the highest priority.

    When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.

    Changes to this property will result in restart of NTP query.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor<html><head/><body><p>_ST/u(&quot;bKR&quot;eleOu(0 SNvcvN;g:Rh0</p><p><br/></p><p>QeNN*bYN*IPW0W@0 u(eS0RSbzzh</body></html>

    Used when "manual" is set. A list of hosts which can be accessed directly.


    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditor <html><head/><body><p>_ST/u(&quot;bKR&quot;eleOu(0NtURIvRh0 N ^&SOvURIO_SO\u(NtURI0</p><p>QeNN*bYN*IPW0W@0 u(eS0RSbzzh</body></html>

    Used when "manual" is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.

    Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.

    Peditorb<html><head/><body><p>IPv4vu(b7n</p></body></html>L

    User configuration of IPv4 settings.

    Peditorb<html><head/><body><p>IPv6vu(b7Mn</p></body></html>K

    User configuration of IPv6 settings

    Peditor^<html><head/><body><p>Ntvu(b7Mn</p></body></html>M

    User configuration of Proxy settings.

    PeditorZ<html><head/><body><p>f/NNH</p></body></html>3

    What's This

    PeditorW0W@AddressPeditorRc AutoConnectPeditorSmCancelPeditorcdExcludesPeditorQQsGatewayPeditorIPv&4PeditorIPv&6PeditorelMethodPeditor[PQcxNetmaskPeditorxn[OKPeditorRM^ Prefix LengthPeditoryPrivacyPeditor nVhProperty EditorPeditornQh(&A) Reset &AllPeditornub(&G) Reset Pa&gePeditorg RVhServersPeditorURLPeditorndub(&C) &Clear Page Provisioning R d(&D)&Delete Provisioning bS_(&O)&Open Provisioning O[X(&S)&Save Provisioningl<html><head/><body><p>ndVhzSQvb@g e[W0</p></body></html>N

    Clear all text from the editor window.

     Provisioning`<html><head/><body><p>R dNN*MneN</p></body></html>=

    Delete a config file.

     Provisioning<html><head/><body><p>Qe &quot;f/NNH&quot; j!_0</p></body></html>J

    Enter "Whats This" mode.

     Provisioning\<html><head/><body><p>Q[hF0</p></body></html>8

    Exit the dialog.

     Provisioningh<html><head/><body><p>bS_]~[XW(vMneN0</p></body></html>E

    Open an existing config file.

     Provisioning<html><head/><body><p>eg,zS0</p><p>O`SNW(zS̏Qe0Y R6b|40O`N_SNOu(N evSUcQeeg,0</p></body></html>

    Text edit window.

    You may type or cut and paste into this window. You may also use menus above to insert text fields.

     ProvisioningZ<html><head/><body><p>f/NNH</p></body></html>3

    What's This

     Provisioning<html><head/><body><p>beg,hFQvepcnQQeMneN0</p><p> bhFQOg N|RcmstR^vMneNNOv0O`N_SNW(hFQQeNN*T [W0</p><p>O`N Q_bTT VN:[NOSc^vu(Tlv_TTT SN0 </p></body></html>h

    Write the displayed data to a config file.

    The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.

    It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values.

     Provisioning CACertFile ProvisioningClientCertFile Provisioning Description ProvisioningDomain Provisioning Q(&X)E&xit ProvisioningEAP ProvisioningEduroam (long) ProvisioningEduroam (short) ProvisioningHidden Provisioning IPV4 DHCP ProvisioningIPv4 W0W@ IPv4 Address Provisioning IPv4 QsIPv4 Off ProvisioningIPv6 W0W@ IPv6 Address ProvisioningIPv6 R IPv6 Auto Provisioning IPv6 QsIPv6 Off ProvisioningIPv6 y IPv6.Privacy ProvisioningIdentity ProvisioningMAC ProvisioningName Provisioning Nameservers Provisioning Passphrase ProvisioningPhase2 ProvisioningPrivateKeyFile ProvisioningPrivateKeyPassphrase ProvisioningPrivateKeyPassphraseType Provisioning MnVhProvisioning Editor ProvisioningSSID Provisioning SearchDomains ProvisioningSecurity Provisioning Timeservers ProvisioningType Provisioning[global] Provisioning [service_*] ProvisioningN%͕ CriticalProvisioningEditorO`o InformationProvisioningEditor%1 - O`o%1 - InformationProvisioningEditor%1 - ep[WQe%1 - Integer InputProvisioningEditor%1 - yvQe%1 - Item InputProvisioningEditor%1 - beN%1 - Select FileProvisioningEditor%1 - eg,Qe%1 - Text InputProvisioningEditor%L1 Bytes ]QQe%L1 Bytes writtenProvisioningEditor%L1 KB ]QQe%L1 KB writtenProvisioningEditor<b>DBus  T y:</b> %1<br><br><b>[W{&N2:</b> %2<br><br><b>m`o:</b> %3MDBus Error Name: %1

    String: %2

    Message: %3ProvisioningEditor<<center>lg b~R0MneN0<br>N OR dNOUN0F
    No configuration files were found.
    Nothing will be deleted.ProvisioningEditorF<center>lg b~R0MneN0<br>O`SNu(N*[hFR^NN*0T
    No configuration files were found.
    You may use this dialog to create one.ProvisioningEditor$<center>S֑MneN %1&
    Reading configuration file: %1ProvisioningEditor b@Ou(vWT Domain name to be usedProvisioningEditorEAP |{W0 EAP type.ProvisioningEditorQeQ~vcϏ0#Enter a description of the network.ProvisioningEditor6QeeveNT b b^v<br>fcbNN*]~[XW(veN0AEnter a new file name or select
    an existing file to overwrite.ProvisioningEditorQeIPv6RM^Enter the IPv6 prefix lengthProvisioningEditorQeQ~T y0Enter the network name.ProvisioningEditor,Qe 802.11 SSID v[W{&N2hy:02Enter the string representation of an 802.11 SSID.ProvisioningEditorR deSuN0Error encountered deleting.ProvisioningEditorCANfeN_$File Path to the CA Certificate FileProvisioningEditor[b7zNfeN_(File Path to the Client Certificate FileProvisioningEditor eN]R d File deletedProvisioningEditor yeN_(File path to the Client Private Key FileProvisioningEditor eNS[bFile read completedProvisioningEditoreNO[XY1%0File save failed.ProvisioningEditorQh\@GlobalProvisioningEditorQ~Hidden networkProvisioningEditorIPv4 W0W@ IPv4 AddressProvisioningEditorIPv4 QQs S (IPv4 Gateway (This is an optional entry)ProvisioningEditorIPv4 [PQcx IPv4 NetmaskProvisioningEditorIPv6 W0W@ IPv6 AddressProvisioningEditorIPv6 QQs S (IPv6 Gateway (This is an optional entry)ProvisioningEditorIPv6 y IPv6 PrivacyProvisioningEditorEAPvN[W{&N20Identity string for EAP.ProvisioningEditor0[ƔeN (*.pem);;QheN (*.*)"Key Files (*.pem);;All Files (*.*)ProvisioningEditorDNSd}"WRhList of DNS Search DomainsProvisioningEditorDNSg RVhRhList of NameserversProvisioningEditoreg RVhRhList of TimeserversProvisioningEditorMAC W0W@0 MAC address.ProvisioningEditorQ~[Qh|{W0Network security type.ProvisioningEditoryeNv[x0-Password/Passphrase for the private key file.ProvisioningEditor>6k 2 TLSSۈLQ莫N <br>e_0HPhase 2 (inner authentication with TLS tunnel)
    authentication method.ProvisioningEditory[x|{W0Private key passphrase type.ProvisioningEditorRSN/WPA/WPA2 [xRSN/WPA/WPA2 PassphraseProvisioningEditor2SSID: 802.11 SSID vSAQmR6hy:2SSID: hexadecimal representation of an 802.11 SSIDProvisioningEditor b鉁R dveN0Select a file to be deleted.ProvisioningEditor b鉁R}veN0Select a file to load.ProvisioningEditorg RServiceProvisioningEditor g R|{W0 Service type.ProvisioningEditor.fcb * vh{~T <br>MneNvU/Nh0MTag which will replace the * with
    an identifier unique to the config file.ProvisioningEditorj!g TemplatesProvisioningEditorrQeIPv4 v<b>W0W@</b>0<b>[PQcx</b> TS v<b>QQs</b>0<p>QY\1~e c xn[0The IPv4 Address, Netmask, and optionally Gateway need to be provided.

    Press OK when you are ready to proceed.ProvisioningEditorrQeIPv6 v<b>W0W@</b>0<b>RM^</b> TS v<b>QQs</b>0<p>QY\1~e c xn[0The IPv6 Address, Prefix Length, and optionally Gateway need to be provided.

    Press OK when you are ready to proceed.ProvisioningEditorWiFiProvisioningEditor:elW(system busN lQroothelper[a07Failed to register roothelper object on the system bus. RootHelperLellQg R org.cmst.roothelper   S]~W(ЈL0WFailed to register service org.cmst.roothelper - there may be another instance running. RootHelpernRhF Scrollbox ScrollBoxeg,h{~ TextLabel ScrollBox]cAlready connectedTranslateStrings]yu(Already disabledTranslateStrings]T/u(Already enabledTranslateStrings]~[XW(Already existsTranslateStringsۈLN- In progressTranslateStrings^lSepInvalid argumentsTranslateStrings^l\^`'Invalid propertyTranslateStrings^lg RInvalid serviceTranslateStrings elb}Q~ No carrierTranslateStringsg*c Not connectedTranslateStringsg*b~R0 Not foundTranslateStringsg*[sNot implementedTranslateStringsg*lQNot registeredTranslateStringsN e/c Not supportedTranslateStringsN U/N Not uniqueTranslateStringsdO\QOperation abortedTranslateStringsdO\eOperation timeoutTranslateStrings[xPassphrase requiredTranslateStringsb~݋Permission deniedTranslateStringscN- associationTranslateStringsRautoTranslateStringsR"connman ethernet connection methodautoTranslateStringsRconnman ipv6 method stringautoTranslateStringsrY bluetoothTranslateStringszepcncellularTranslateStringscmstTranslateStringsMnN- configurationTranslateStringsconnman system trayTranslateStringsvccdirectTranslateStringse_ disconnectTranslateStringsNY*QethernetTranslateStringsfailureTranslateStringsgadgetTranslateStringsgpsTranslateStringszzidleTranslateStrings ieee8021xTranslateStringsbKRmanualTranslateStringsbKR"connman ethernet connection methodmanualTranslateStringsbKRconnman ipv4 method stringmanualTranslateStringsbKRconnman ipv6 method stringmanualTranslateStringsenoneTranslateStringsy~offlineTranslateStringsW(~onlineTranslateStringsp2pTranslateStringspskTranslateStrings\1~readyTranslateStrings|~systemTranslateStringsvpnTranslateStringswepTranslateStringswifiTranslateStringsg ~Q~wiredTranslateStrings Sm(&C)&CancelVPNAgent<html><head/><body><p>cS^vOu(O`W(kdON-cOvO`o0</p><p>\bO`vQeSѐ~connman[bz N~~c0</p></body></html>

    Accept and use the answers you have provided in this dialog.

    This will send your input to the connman daemon to continue the connection process.

    VPNAgentd<html><head/><body><p>Smc0<br/></p></body></html>K

    Cancel the connection process.

    VPNAgent<html><head/><body><p>SmO0</p><p>\O~connman[bz SѐSmclB0</p></body></html>

    Cancel the dialog.

    This will send a message to the connman daemon that you have cancelled the connection request.

    VPNAgentZ<html><head/><body><p>~~c0</p></body></html>H

    Continue the connection process.

    VPNAgentb<html><head/><body><p>WISPr [x.</p></body></html>7

    WISPr password.

    VPNAgentd<html><head/><body><p>WISPr u(b7T .</p></body></html>7

    WISPr username.

    VPNAgentZ<html><head/><body><p>f/NNH</p></body></html>3

    What's This

    VPNAgentT yNameVPNAgent xn[(&K)O&KVPNAgentN%͕ Critical VPN_Editor%1 - O`o%1 - Information VPN_Editor%1 - yvQe%1 - Item Input VPN_Editor%1 - beN%1 - Select File VPN_Editor%1 - eg,Qe%1 - Text Input VPN_Editor%L1 Bytes ]QQe%L1 Bytes written VPN_Editor%L1 KB ]QQe%L1 KB written VPN_Editor<b>DBus  T y:</b> %1<br><br><b>[W{&N2:</b> %2<br><br><b>m`o:</b> %3MDBus Error Name: %1

    String: %2

    Message: %3 VPN_Editor<<center>lg b~R0MneN0<br>N OR dNOUN0F
    No configuration files were found.
    Nothing will be deleted. VPN_EditorF<center>lg b~R0MneN0<br>O`SNu(N*[hFR^NN*0T
    No configuration files were found.
    You may use this dialog to create one. VPN_Editor$<center>S֑MneN %1&
    Reading configuration file: %1 VPN_Editor6QeeveNT b b^v<br>fcbNN*]~[XW(veN0AEnter a new file name or select
    an existing file to overwrite. VPN_EditorR deSuN0Error encountered deleting. VPN_Editor eN]R d File deleted VPN_Editor eNS[bFile read completed VPN_EditoreNO[XY1%0File save failed. VPN_EditorQh\@Global VPN_Editor b鉁R dveN0Select a file to be deleted. VPN_Editor b鉁R}veN0Select a file to load. VPN_Editorndub(&C) &Clear PageVPN_Prov R d(&D)&DeleteVPN_Prov bS_(&O)&OpenVPN_Prov O[X(&S)&SaveVPN_Provl<html><head/><body><p>ndVhzSQvb@g e[W0</p></body></html>N

    Clear all text from the editor window.

    VPN_Prov`<html><head/><body><p>R dNN*MneN</p></body></html>=

    Delete a config file.

    VPN_Prov<html><head/><body><p>Qe &quot;f/NNH&quot; j!_0</p></body></html>J

    Enter "Whats This" mode.

    VPN_Prov\<html><head/><body><p>Q[hF0</p></body></html>8

    Exit the dialog.

    VPN_Provh<html><head/><body><p>bS_]~[XW(vMneN0</p></body></html>E

    Open an existing config file.

    VPN_Prov<html><head/><body><p>eg,zS0</p><p>O`SNW(zS̏Qe0Y R6b|40O`N_SNOu(N evSUcQeeg,0</p></body></html>

    Text edit window.

    You may type or cut and paste into this window. You may also use menus above to insert text fields.

    VPN_ProvZ<html><head/><body><p>f/NNH</p></body></html>3

    What's This

    VPN_Prov<html><head/><body><p>beg,hFQvepcnQQeMneN0</p><p> bhFQOg N|RcmstR^vMneNNOv0O`N_SNW(hFQQeNN*T [W0</p><p>O`N Q_bTT VN:[NOSc^vu(Tlv_TTT SN0 </p></body></html>h

    Write the displayed data to a config file.

    The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.

    It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values.

    VPN_Prov Q(&X)E&xitVPN_Prov(SNN*cmst[OkcW(ЈL0[O\QNAnother running instance of CMST has been detected. This instance is abortingmain.cppConnman System Tray.main.cpppyu(|~bXvVh0 SW(|~bXvN {&T Freedesktop.org system tray ăe0Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification.main.cppNYgbXvVhO*ŀfof c[Ou(vfor h<_0xRRGGBB bIf tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB)main.cppKBmain.cpp:_UconnmanvinputRequeste_NO04Log the connman inputRequest for debugging purposes.main.cpp RRGGBBRRGGBBmain.cpp*c[|~bXvT/Rv{I_e NyN:SUOM0FSpecify the wait time in seconds before starting the system tray icon.main.cppT/RGUIeg\SR0|~bXv0+Start the GUI minimized in the system tray.main.cppOu(N:MATEQYvNx0Use MATE DE specific code.main.cppOu(N:XFCEQYvNx0Use XFCE specific code.main.cpp0[[`'] yu(epcn~ߋ0 SQϏ{|~ߍ}0S[Experimental] Disable data counters. May be used to minimize load on your system.main.cpp,[[`'] ~ߋfeve NyN:SUOM0?[Experimental] The interval in seconds between counter updates.main.cpp2[[`'] ~ߋfeRMO vepcn NkbN:SUOM0W[Experimental] The number of kb that have to be transmitted before the counter updates.main.cppysecondsmain.cpp fTJ Warning processReplycmst-cmst-2018.01.06/translations/cmst_zh_CN.ts000066400000000000000000010257241322401607200211530ustar00rootroot00000000000000 Agent Agent Input 代理输入 Passphrase 密码 <html><head/><body><p>If an old passphrase is available it will be shown here for reference.</p></body></html> <html><head/><body><p>如果旧密码可用,它会被显示在这里作为参考。</p></body></html> <html><head/><body><p>Type the passphrase here.</p></body></html> <html><head/><body><p>在此输入密码。</p></body></html> <html><head/><body><p>Check this box to obscure the password characters.</p></body></html> <html><head/><body><p>勾选以隐藏密码。</p></body></html> &Hide Passphrase 隐藏密码(&H) &Old Passphrase 旧密码(&O) O&ld Passphrase &Passphrase 密码(&P) Hidden Network 隐藏网络 &Name 名称(&N) <html><head/><body><p>Type the name of the hidden network you wish to connect to.</p></body></html> <html><head/><body><p>输入你想连接的隐藏网络的名称</p></body></html> Service Set Identifier 服务集标识(SSID) &SSID &SSID Wireless Internet Service Provider roaming (WISPr) 无线服务商漫游 (WISPr) &Username 用户名(&U) <html><head/><body><p>WISPr username.</p></body></html> <html><head/><body><p>WISPr 用户名.</p></body></html> Passwor&d 密码(&D) <html><head/><body><p>WISPr password.</p></body></html> <html><head/><body><p>WISPr 密码.</p></body></html> Extensible Authentication Protocol (EAP) 可扩展身份验证协议 (EAP) <html><head/><body><p>Type your Identity for the Extensible Authentication Protocol</p></body></html> <html><head/><body><p>输入你的EAP身份</p></body></html> &Identity 身份(&I) WiFi Protected Setup (WPS) 受保护的Wifi设置 (WPS) <html><head/><body><p>When checked use WPS push button authentication. </p></body></html> <html><head/><body><p>当被勾选时,使用WPS push button 身份验证。 </p></body></html> Use Push &Button Authentication 使用 Push &Button 身份验证 &WPS Pin &WPS Pin <html><head/><body><p>Enter a WPS pin.</p></body></html> <html><head/><body><p>输入 WPS pin.</p></body></html> Browser Login Requested 需要用浏览器登录 Choose or enter a browser: <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers found are shown in the list below. You may select any one browser to use it for the login. If your web browser is not shown in the list you may enter it directly in the<span style=" font-weight:600;"> Choose or enter a browser box</span>.</p><p>To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown in the <span style=" font-weight:600;">Login URL</span> box.</p></body></html> <html><head/><body><p>Connman is requesting that you open a web browser to complete the login process.</p><p>We have scanned your PATH for browsers and any browsers we found are shown below as active. You may select any one browser to use it for the login. If your web browser is not shown active, or is not listed at all, select <span style=" font-weight:600;">Other</span> and type the command you would use to start your browser from a command line in the text box. To launch the browser click the <span style=" font-weight:600;">Launch Browser</span> button. </p><p>If you wish to login manually close this dialog, start your web browser and proceed to the URL shown below:</p></body></html> <html><head/><body><p>Connman 需要使用浏览器完成登录。</p><p>检测到下列可用的浏览器。选择一个用作登录。如果你的浏览器不可用或未被列出,请选择 <span style=" font-weight:600;">其它</span> 并在文本框内输入启动浏览器的命令行。单击<span style=" font-weight:600;">启动浏览器</span>按钮启动你的浏览器。 </p><p>如果你想手动登录,请关闭这个对话框,并启动你的浏览器打开以下网址:</p></body></html> Login URL: 登录 URL: <html><head/><body><p>Connman is requesting you continue login with a web browser. This box shows the URL that contains the login page.</p></body></html> <html><head/><body><p>Connman需要使用浏览器登录。该文本框展示了包含登录页面的网址。</p></body></html> <html><head/><body><p><br/></p></body></html> <html><head/><body><p><br/></p></body></html> <html><head/><body><p>Use the Firefox browser.</p></body></html> <html><head/><body><p>使用Firefox浏览器。</p></body></html> <html><head/><body><p>Use the Opera browser.</p></body></html> <html><head/><body><p>使用Opera浏览器。</p></body></html> <html><head/><body><p>Use the Luakit browser.</p></body></html> <html><head/><body><p>使用Luakit浏览器。</p></body></html> <html><head/><body><p>Use the Lynx (console mode) browser.</p></body></html> <html><head/><body><p>使用Lynx(控制台模式)浏览器。</p></body></html> <html><head/><body><p>Login using a browser that is not listed. Type the browser start command in the box below.</p></body></html> <html><head/><body><p>使用一个未被列出的浏览器。在下方输入启动命令行。</p></body></html> Othe&r 其它(&R) <html><head/><body><p>Type the browser start command here.</p></body></html> <html><head/><body><p>在此输入浏览器启动命令。</p></body></html> <html><head/><body><p>Use this button to launch the selected browser. The browser will open at the page shown in the Login URL box.</p></body></html> <html><head/><body><p>单击启动选择的浏览器。浏览器将会打开显示在“登录URL”文本框里的网址。</p></body></html> Launch &Browser 启动浏览器(&B) <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>这是什么?</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>继续连接。</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> <html><head/><body><p>接受并使用你在此会话中提供的信息。</p><p>这将把你的输入发送给connman守护进程以继续连接。</p></body></html> O&K 确定(&K) <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>取消连接。<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> <html><head/><body><p>取消会话。</p><p>这将会给connman守护进程发送取消连接请求。</p></body></html> &Cancel 取消(&C) AgentDialog Information 信息 You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "%1 %2" You have requested the %1 browser, but we cannot find a terminal program to open it with. Currenty we can start %1 using these terminals: <b>roxterm</b> and <b>xterm</b>.<br><br>To continue you need to manually open a terminal and then enter: "lynx %2" 你选择了%1浏览器,但是无法找到可启动的终端程序。目前可用来启动%1的终端程序有:<b>roxterm</b> 和 <b>xterm</b>.<br><br>要继续,请手动打开一个终端窗口并输入:"lynx %2" ConnmanAgent Connman Error Connman 错误 Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Connman 返回了以下错误:<b><center>%1</b><br>是否重试? Agent Request Failed 代理请求失败 The agent request failed before a reply was returned. 在得到一个回应之前,代理请求失败了。 ConnmanCounter %L1 Bytes %L1 KB %L1 MB %L1 GB <b>Transmit:</b><br>TX Total: %1 (%2), TX Errors: %3, TX Dropped: %4 <b>已传送:</b><br>传送总数: %1 (%2), 传送错误: %3, 传送丢失: %4 %Ln Packet(s) <br><br><b>Received:</b><br>RX Total: %1 (%2), RX Errors: %3, RX Dropped: %4 <br><br><b>已接收:</b><br>接收总数: %1 (%2), 接收错误: %3, 接收丢失: %4 <br><br><b>Connect Time:</b><br> <br><br><b>连接时间:</b><br> %n Day(s) %n 日 %n Hour(s) %n 时 %n Minute(s) %n 分 %n Second(s) %n 秒 ConnmanVPNAgent Connman Error Connman 错误 Connman returned the following error:<b><center>%1</b><br>Would you like to retry? Connman 返回了以下错误:<b><center>%1</b><br>是否重试? Agent Request Failed 代理请求失败 The agent request failed before a reply was returned. 在得到一个回应之前,代理请求失败了。 ControlBox Dialog 会话 &Status 状态(&S) <html><head/><body><p>This checkbox controls the global setting for switching all radios on or off. When checked all radios are powered down.</p><p>When the system is In offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> <html><head/><body><p>这个复选框控制全部网络连接的开关。当被选中时,所有网络连接都将被关闭。</p><p>当系统处于飞行模式时,这个开关可能重新打开个人设备。离开飞行模式时,设备的开关状态由各自的策略决定。</p></body></html> All Devices &Off 关闭所有设备(&O) <html><head/><body><p><span style=" font-weight:600;">OfflineMode</span></p><p>The offline mode indicates the global setting for switching all radios on or off. Changing offline mode to true results in powering down all devices. When leaving offline mode the individual policy of each device decides to switch the radio back on or not. </p><p>During offline mode, it is still possible to switch certain technologies manually back on. For example the limited usage of WiFi or Bluetooth devices might be allowed in some situations.</p></body></html> <html><head/><body><p><span style=" font-weight:600;">飞行模式</span></p><p>飞行模式指全局的无线设备开关设置。打开飞行模式将会关闭所有无线设备。离开飞行模式时,无线设备的开关状态由各自的策略决定。 </p><p>在飞行模式打开期间,仍可手动重新打开设备。例如,某些情况下,有限的Wifi或蓝牙使用是允许的。</p></body></html> Global Properties 全局设置 <html><head/><body><p>The global setting for switching all radios on or off. When offline mode is engaged all radios are powered down.</p><p>While in offline mode it is possible to turn individual devices back on. When leaving offline mode the individual policy of each device determines if the radio is turned back on or not.</p></body></html> <html><head/><body><p>控制无线设备开关的全局设置。当飞行模式打开时所有无线设备将被关闭。</p><p>当处于飞行模式时,个别设备仍然可被重新打开。离开飞行模式时无线设备的开关状态由各自的策略决定。</p></body></html> OfflineMode: Unavailable 飞行模式:不可用 <html><head/><body><p>The global connection state of the system. Possible values are &quot;offline&quot;, &quot;idle&quot;, &quot;ready&quot;, and &quot;online&quot;. </p></body></html> <html><head/><body><p>全局连接状态 可能的状态有 &quot;离线&quot;, &quot;空闲&quot;, &quot;就绪&quot;和&quot;在线&quot;. </p></body></html> State: Unavailable 状态:不可用 <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> <html><head/><body><p>Connman 把硬件设备称作“技术”。(在翻译中为了容易理解仍写作“设备”) 这个方框内显示了所有已知设备的信息。</p><p>要打开或关闭设备,单击对应设备<span style=" font-weight:600;">已启用</span>栏内的按钮。</p></body></html> Technologies 设备 Name 名称 Type 类型 Powered 已启用 Connected 已连接 Tethering 热点 <html><head/><body><p>Force a rescan of all WiFi technologies. This is similar to issuing the command <span style=" font-weight:600;">connmanctl scan wifi</span> from the command line.</p><p>The button will become inactive while the scan is occuring.</p></body></html> <html><head/><body><p>强制所有Wifi设备重新扫描。这与执行命令行 <span style=" font-weight:600;">connmanctl scan wifi</span> 类似。</p><p>在扫描过程中按钮将被禁用。</p></body></html> Resc&an 重新扫描(&A) <html><head/><body><p>This box lists all services that connman can connect to.</p></body></html> <html><head/><body><p>这个方框内显示了所有connman能够连接到的网络。</p></body></html> Services 服务 State 状态 Connection 连接 <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active once a service is selected.</p></body></html> <html><head/><body><p>把列表中选中的服务移到另一项前面。</p><p>这个按钮只会在选中一项后启用。</p></body></html> Move Before 上移 <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active once a service is selected.</p></body></html> <html><head/><body><p>把列表中选中的服务移到另一项后面。</p><p>这个按钮只会在选中一项后启用。</p></body></html> Move After 下移 <html><head/><body><p>Hide the connection field</p></body></html> <html><head/><body><p>隐藏“连接”栏</p></body></html> <html><head/><body><p>When checked hide the connection name in the Services box.</p></body></html> <html><head/><body><p>当被勾选时,隐藏“服务”方框内的连接名称。</p></body></html> &Less 更少(&L) &Details 详细信息(&D) Ser&vice 服务(&V) <html><head/><body><p>Use this Combobox to select the service for which you wish to view the detailed information.<br/></p></body></html> <html><head/><body><p>使用这个下拉框选择你想查看详细信息的服务。<br/></p></body></html> <html><head/><body><p>The default configuration method for all services is automatic or something like DHCP. This should be good enough for most typical usage, but if it is not this button will allow manual configuration of Ethernet and IP settings for the selected Service.</p><p>This button will be disabled if the service is provisioned via an external config file or if the service is a hidden wifi service. It is not possible to modify the properties of these services.</p></body></html> <html><head/><body><p>所有服务的默认设置都是自动的(或类似DHCP)。 一般此设置足够使用,但若不是,这个按钮可被用来手动设置选中服务的以太网和IP设置。</p><p>在以下两种情况下这个按钮会被禁用:服务设置由外部配置文件提供,或服务是一个隐藏Wifi。无法修改这些服务的设置。</p></body></html> Configuration 设置 &Wireless 无线网络(&W) <html><head/><body><p>This page shows the known WiFi services. </p><p><span style=" font-weight:600;">Name:</span> The SSID of the network.</p><p><span style=" font-weight:600;">Favorite:</span> A heart symbol in this column indicates that this computer has previously made a connection to the network using this service.</p><p><span style=" font-weight:600;">Connected:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. Online signals that an Internet connectionis available and has been verified. Ready signals a successfully connected device. </p><p><span style=" font-weight:600;">Security: </span>Describes the type of security used for this service. Possible values are &quot;none&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;, and &quot;wps&quot;.</p><p><span style=" font-weight:600;">SIgnal Strength:</span> The strength of the WiFi signal, normalized to a scale of 0 to 100.</p><p><br/></p></body></html> <html><head/><body><p>这个页面显示了已知的Wifi服务。</p><p><span style=" font-weight:600;">名称:</span> 网络的SSID。</p><p><span style=" font-weight:600;">已保存:</span> 这个栏目中的心形图标表示这台电脑曾经使用这个服务连接网络。</p><p><span style=" font-weight:600;">已连接:</span> 表示这个服务的连接状态。鼠标划过图标会弹出文字说明。 在线表示网络可用并且已验证。 就绪表示设备成功连接。 </p><p><span style=" font-weight:600;">安全性: </span>描述了服务的安全性。可能的值有 &quot;无&quot;, &quot;wep&quot;, &quot;psk&quot;, &quot;ieee8021x&quot;,和&quot;wps&quot;.</p><p><span style=" font-weight:600;">信号强度:</span> Wifi的信号强度,用0到100的值表示。</p><p><br/></p></body></html> Favorite 已保存 Security 安全性 Signal Strength 信号强度 Wireless Services 无线网络服务 <html><head/><body><p>Select a wifi service in the table below and press this button to connect the service. </p><p>If there is only one wifi service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>在下表中选择一个Wifi服务,并按下这个按钮来连接到服务。 </p><p>如果列表中只有一个服务,按下这个按钮将会自动选择那个服务并尝试连接。 </p><p>如果这个服务需要更多的信息,例如密码,你将会被提示。 </p></body></html> Connect 连接 <html><head/><body><p>Select a wifi service in the table below and press this button to disconnect it. </p><p>If there is only one wifi service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>在下表中选择一个Wifi服务并按下这个按钮来断开它。 </p><p>如果只有一个Wifi服务处于 &quot;就绪&quot; 或 &quot;在线&quot; 状态,按下这个按钮将会自动选择那个服务并断开它。 </p><p>这也可被用于终止先前的连接尝试。</p></body></html> Disconnect 断开 <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been sussessfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> <html><head/><body><p>在下表中选择一个Wifi服务并按下这个按钮来删除它。 </p><p>如果是曾经成功连接的服务(已保存)这个按钮将会移除已保存属性。如果正在连接到这个服务,服务将被断开。如果服务要求过密码,密码会被清除并忘记。</p><p>如果有失败的连接尝试,这个按钮可用于重置服务。</p></body></html> Remove 忘记 <html><head/><body><p>This label shows the number of WiFi technologies (devices) that were found, and the number that are powered on. There must be at least one WiFi technology found and powered in order for the box below to show services.</p><p>To turn a technology on or off go to the <span style=" font-weight:600;">Technologies</span> box in the <span style=" font-weight:600;">Status</span> tab and double click on the text that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p></body></html> <html><head/><body><p>这个标签显示了找到的和开启的Wifi设备数目。要使下面的方框内显示服务,至少要找到并开启一个Wifi设备。</p><p>开关设备请到 <span style=" font-weight:600;">状态</span> 标签页的 <span style=" font-weight:600;">设备</span> 方框并双击对应设备 <span style=" font-weight:600;">已启用</span> 栏内的文字。</p></body></html> Wifi State Wifi 状态 &Counters 统计(&C) <html><head/><body><p>The service being monitored by the counters.</p></body></html> <html><head/><body><p>被监视并统计的服务。</p></body></html> Service: 服务: <html><head/><body><p>Counters for the &quot;online&quot; service connection that is not marked roaming. </p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> <html><head/><body><p>非漫游的 &quot;在线&quot; 服务连接的统计信息。 </p><p>统计并非总是可用。统计可被命令行 (-c 或 --disable-counters)禁用,也可能在偶然的情况下,连接报告&quot;就绪&quot; 状态而非 &quot;在线&quot;。在线是 &quot;就绪&quot; 的连接通过联网验证后的状态。也有可能通过 &quot;就绪&quot; 的连接而在线,但是统计只对 &quot;在线&quot; 的连接有效。</p></body></html> Home 本地 Counter not available. 统计不可用。 <html><head/><body><p>Counters for the &quot;online&quot; service connection marked &quot;roaming&quot;.</p><p>In the case of cellular services this normally indicates connections to a foreign provider.</p><p>Counters may not always be available. The counters could have been disabled at the command line (-c or --disable-counters) or occasionally the connection will register &quot;ready&quot; instead of &quot;online&quot;. Online is a &quot;ready&quot; connection that has verified internet connectivity. It is possible to be online with only a &quot;ready&quot; connection, however the counters only work for they &quot;online&quot; connection.</p></body></html> <html><head/><body><p>被标作&quot;漫游&quot;的&quot;在线&quot; 连接的统计信息。</p><p>例如对于蜂窝数据来说,这一般表示连接到异地的运营商。</p><p>统计并非总是可用。统计可被命令行 (-c 或 --disable-counters)禁用,也可能在偶然的情况下,连接报告&quot;就绪&quot; 状态而非 &quot;在线&quot;。在线是 &quot;就绪&quot; 的连接通过联网验证后的状态。也有可能通过 &quot;就绪&quot; 的连接而在线,但是统计只对 &quot;在线&quot; 的连接有效。</p></body></html> Roaming 漫游 <html><head/><body><p>Counter Settings</p></body></html> <html><head/><body><p>统计设置</p></body></html> <html><head/><body><p>The threshold values for counter updates (counter resolution). Data and time work together to define how often the fields are updated.</p></body></html> <html><head/><body><p>统计更新的阈值。 数据和时间同时定义了更新频率。</p></body></html> Settings: 设置: &Preferences 设置(&P) <html><head/><body><p>Programs or processes to execute after various events occur.</p><p>If the program or process requires command line arguments provide them here just as if you were typing at a command line.</p><p>Example:</p><p><span style=" font-weight:600;">/path/to/program arg1 arg2 arg3</span></p></body></html> External Programs <html><head/><body><p>Enter the program or process to be executed after Connman enters the &quot;Ready&quot; or &quot;Online&quot; state.</p></body></html> After Connect <html><head/><body><p>Preferences for the interface are in this box.</p></body></html> <html><head/><body><p>这个方框内是接口的设置。</p></body></html> Interface 界面 <html><head/><body><p>If checked the Start Options set here will be read and used next time the program starts. </p><p>Settings are stored in<span style=" font-family:'Courier New,courier';">: ~</span><span style=" font-family:'Courier New,courier'; font-weight:600;">/.config/cmst/cmst.conf </span><span style=" font-family:'Courier New,courier';"><br/>This is a standard ini type text file.</span></p></body></html> Use Start Options <html><head/><body><p>If checked the state of the GUI will be restored from settings saved on disk. Settings include the geometry and position of the dialog and the current tab. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p>The settings file is: ~<span style=" font-weight:600;">/.config/cmst/cmst.conf </span><br/>This is a standard ini type text file.</p></body></html> Retain State Rescan Offline Mode <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre><p>Use an icon theme from your system. You may specify the theme in the box at the right, or if the box is left blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> Use Icon Theme <html><head/><body><p>If checked the GUI will be restored from settings saved on disk. Settings include the geometry of the dialog and the state of various check boxes, such as this one. </p><p>These settings will be used at next boot to restore the user interface to the way it was at shutdown.</p><p style='white-space:pre'>The settings file is: <span style=" font-weight:600;">${HOME}/.config/cmst/cmst.conf </span><br>This is a standard ini type text file.</p></body></html> <html><head/><body><p>如果被勾选,GUI会恢复存储在磁盘上的设置。这些设置包含对话框的位置和一些复选框的勾选状态,例如这个复选框本身。 </p><p>这会使GUI在启动时恢复成最后一次退出时的样子。</p><p style='white-space:pre'>设置文件保存在: <span style=" font-weight:600;">${HOME}/.config/cmst/cmst.conf </span><br>这是一个标准的ini格式的文本文件。</p></body></html> Retain Settings 保存设置 <html><head/><body><p>If checked the display of tooltips will be enabled for the interface widgets.</p><p>Tooltips are the small popups that appear when you hover the mouse pointer over an area of the interface. </p></body></html> <html><head/><body><p>被勾选上时,UI控件的提示会被启用。</p><p>当你用鼠标划过控件事,提示会弹出。 </p></body></html> Enable ToolTips (Interface) 启用提示 <html><head/><body><p>Normally counters are cumulative and will retain the connect time and the TX and RX counts between boots. </p><p>When this box is checked the counters will reset to zero every time CMST is started, and if CMST is running everytime a Connman service is started. </p></body></html> <html><head/><body><p>通常,统计信息会一直累计,连接时间和接收、传送计数会保留直到下一次启动。 </p><p>当勾选上时,每次cmst或connman启动时统计信息会清零。 </p></body></html> Reset Counters 重置统计 <html><head/><body><p>When checked additional controls for advanced users are displayed.</p></body></html> <html><head/><body><p>当勾选时,为高级用户准备的附加设置会显示出来。</p></body></html> Advanced Controls 高级 <html><head/><body><p>These entries control various options for CMST at program start. </p><p>All of these options are available from the command line, and if a command line option is provided it will take precedence over these settings.</p></body></html> <html><head/><body><p>这些条目控制cmst启动时的一些选项。 </p><p>所有这些选项可以通过命令行设置,而命令行将会覆盖此处的设置。</p></body></html> Start Options 启动选项 <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>Disable the system tray icon.</p><p>May be needed for system trays not compliant with the Freedesktop.org system tray specification.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">命令行选项: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-d</span><span style=" font-family:'Courier New,courier';"> 或 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--disable-tray-icon</span></pre></body></html> <html><head/><body><p>禁用系统托盘图标。</p><p>当系统托盘不支持 Freedesktop.org 系统托盘规范时可能需要。</p></body></html> Disable Tray Icon 禁用系统托盘图标 <html><head/><body><p>Disabled because currently Connman will accept this option but will do nothing with it.</p></body></html> <html><head/><body><p>此选项已禁用,因为当前connman会接受这个选项但是不会做任何事情。</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p><p>Connman will accept this entry, but according to a comment in the Connman code the actual feature still needs to be implemented and the selection is therefore disabled.</p></body></html> <html><head/><body><p>设定在统计更新前必须传输的数据量,以KB表示 (默认是 1024 KB)。</p><p>Connman会接受这个选项,但是根据connman的代码注释,这个特性还未实现,因此选项已禁用。</p></body></html> Counter Update KB 统计更新 KB <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p></body></html> <html><head/><body><p>设置启动系统托盘前的等待时间,以秒为单位 (默认是 0 秒)。</p></body></html> <html><head/><body><p>Specify the amount of data in KB that must be transmitted before the counters update (default is 1024 KB).</p></body></html> <html><head/><body><p>设定在统计更新前必须传输的数据量,以KB表示 (默认是 1024 KB)。</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>Start the GUI minimized in the system tray.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">命令行选项: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-m</span><span style=" font-family:'Courier New,courier';"> 或 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--minimized</span></pre></body></html> <html><head/><body><p>启动时最小化到托盘。</p></body></html> Start Minimized 启动时最小化 <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre></body></html> <html><head/><body><p>Use the icon theme from your system if one is defined.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">命令行选项: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-i</span><span style=" font-family:'Courier New,courier';"> 或 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--icon-theme</span></pre></body></html> <html><head/><body><p>使用系统图标主题(如果至少一个被定义)。</p></body></html> Use System Icon Theme 使用系统图标主题 <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> or </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>Specify the wait time in seconds before starting the system tray icon (default is 0 seconds).</p><p>If CMST is started and tries to create a tray icon before the system tray itself is created a dialog will be displayed explaining that. This sometimes happens when the program is started automatically. If you know the tray will exist once the system is up you may specify a wait time and CMST will wait that number of seconds before trying to create the tray icon. This is to give the window manager or panel time to create the tray before we try to place the icon there.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">命令行选项: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">-w</span><span style=" font-family:'Courier New,courier';"> 或 </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--wait-time</span></pre></body></html> <html><head/><body><p>设置启动系统托盘前的等待时间,以秒为单位 (默认是 0 秒)。</p><p>如果 CMST 已启动并尝试在系统托盘启动前启动托盘图标,会弹出一个警告对话框。当程序自动启动时,这有时会发生。如果你确定系统启动时会启动托盘,你可以设置一个等待时间,CMST会在创建托盘图标前等待。这使得在我们把图标放入托盘前,WM或面板有时间创建托盘。</p></body></html> Wait Time 等待时间 <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Command Line Option: <span style=" font-weight:600;">-c</span> or <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>Disable the counters. May be used to minimize load on your system.</p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">命令行选项: <span style=" font-weight:600;">-c</span> 或 <span style=" font-weight:600;">--disable-counters</span></pre></body></html> <html><head/><body><p>禁用统计。可能减少系统资源消耗。</p></body></html> Disable Counters 禁用统计 <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">命令行选项: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--counter-update-rate</span></pre></body></html> <html><head/><body><p>设置统计信息更新的频率,以秒为单位 (默认是 10 秒)。 </p></body></html> Counter Update Rate 统计更新频率 <html><head/><body><p>Specify the frequency in seconds between counter updates (default is 10 seconds). </p></body></html> <html><head/><body><p>设置统计信息更新的频率,以秒为单位 (默认是 10 秒)。 </p></body></html> <html><head/><body><p>Use code specific for the selected desktop environment.</p><p>As of 2014.11.24 there seems to be a problem with QT5.3 and some system trays. There is code in the program to try and work around this issue, and selecting one of these buttons will invoke the code specific to the desktop.</p><p>If the bug gets fixed these options will remain so that start up scripts do not break, but the options will do nothing.</p></body></html> <html><head/><body><p>使用为特定DE准备的程序代码。</p><p>以2014.11.24的情况,使用 QT5.3 和某些系统托盘会造成问题。程序中一些代码尝试解决这个问题,勾选一项会启用为特定桌面准备的代码。</p><p>当问题被修复时,这些选项会保留以避免启动脚本崩溃,但那时这个选项将什么都不做。</p></body></html> Desktop Specific 特定桌面设置 <html><head/><body><p>Default is no desktop specific code.</p></body></html> <html><head/><body><p>默认没有启用任何特定桌面的代码。</p></body></html> None <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-xfce</span></pre></body></html> XFCE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">命令行选项: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--use-mate</span></pre></body></html> MATE <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">Command Line Option: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>Used to work around a QT bug where system tray icons display with white or black backgrounds instead of being transparent.</p><p>You can specify the icon background color here. Format is a hex number in the form RRGGBB. If the spedified color matches the tray background we've effectively created fake transparency. </p></body></html> <html><head/><body><pre style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Courier New,courier';">命令行选项: </span><span style=" font-family:'Courier New,courier'; font-weight:600;">--fake-transparency</span></pre></body></html> <html><head/><body><p>解决一个QT问题,该问题会使托盘图标背景为黑色或白色,而不是透明。</p><p>你可以在这里指定托盘图标背景颜色。格式为 RRGGBB 的十六进制值。如果制定的颜色与托盘背景颜色相同,我们就成功地伪造了一个透明背景。</p></body></html> <html><head/><body><p>Select a wifi service in the table below and press this button to remove the service. </p><p>If a service has previously been successfully connected (Favorite is true) this button will remove the Favorite property. The service will also be disconnected if it is currently connected. If the service required a passphrase then the passphrase it will be cleared and forgotten.</p><p>If a connection attempt failed this can slso be used to reset the service.</p></body></html> &VPN VPN Services <html><head/><body><p>Select a vpn service in the table below and press this button to connect the service. </p><p>If there is only one vpn service listed in the table pressing this button will automatically select that service and attempt to connect. </p><p>If information about the service is needed, a passphrase for instance, you will be prompted for it. </p></body></html> <html><head/><body><p>Select a vpn service in the table below and press this button to disconnect it. </p><p>If there is only one vpn service in the &quot;ready&quot; or &quot;online&quot; state pressing this button will automatically select that service and disconnect it. </p><p>This may also be used to abort a previous connection attempt.</p></body></html> <html><head/><body><p>This page shows the provisioned VPN services. Some cells in the table may only be available once a connection is estlablished. </p><p><span style=" font-weight:600;">Name:</span> The name given in the provisioning file.</p><p><span style=" font-weight:600;">Type:</span> The VPN type (OpenConnect, OpenVPN, PPTP, etc)</p><p><span style=" font-weight:600;">State:</span> Shows the connection state of this service. Hover the mouse over the icon to popup a text description. . </p><p><span style=" font-weight:600;">Host: </span>VPN Host IP.</p><p><span style=" font-weight:600;">Domain:</span> The VPN Domain.<br/></p></body></html> Host Fake Transparency 伪造托盘图标透明背景 <html><head/><body><p>Specify the background color as a hex number in the format: RRGGBB.</p></body></html> <html><head/><body><p>指定背景颜色,以十六进制按照如下格式: RRGGBB.</p></body></html> <html><head/><body><p>Icon theme to use. For this theme to be used it must be installed on your system. If the theme is not installed, or if you spell the name wrong CMST will fall back to using its internal icon set.</p><p>If this box is blank CMST will try and use the system wide icon theme (if one is defined).</p></body></html> <html><head/><body><p>Preferences for the system tray are in this box.</p></body></html> <html><head/><body><p>系统托盘相关设置在这一块。</p></body></html> System Tray 系统托盘 <html><head/><body><p>If checked an icon will not be displayed in the system tray. </p></body></html> <html><head/><body><p>若勾选,不显示托盘图标。 </p></body></html> Hide Tray Icon 隐藏托盘图标 <html><head/><body><p>If checked the system tray icon will popup a status message when you hover the mouse over it.</p></body></html> <html><head/><body><p>若勾选,在鼠标划过托盘图标时弹出状态信息。</p></body></html> Enable System Tray Popups 启用托盘弹框 <html><head/><body><p>If checked the system tray will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notify daemon if one is installed. Both can not be active at the same time.</p></body></html> <html><head/><body><p>若勾选,托盘图标会在connman相关的重要事件发生时弹出通知消息。</p><p>通知可被托盘图标处理,或被通知程序处理(如果存在)。 两者不能同时启用。</p></body></html> System Tray Notifications 系统托盘通知 Notifications 通知 <html><head/><body><p>If checked the system desktop notification daemon will popup a notify message when a significant connman related event is received.</p><p>Notifications can be handled by the System Tray Icon, or by a Notification daemon if one is installed. Both can not be active at the same time.</p></body></html> <html><head/><body><p>若勾选,桌面通知程序会在connman相关的重要事件发生时弹出通知消息。</p><p>通知可被托盘图标处理,或被通知程序处理(如果存在)。 两者不能同时启用。</p></body></html> Notification Daemon 通知程序 Server Status 服务状态 <html><head/><body><p>Connman refers to hardware devices as technologies. This box will display information about all known technologies.</p><p>To turn a technology on or off click on the button that shows in the <span style=" font-weight:600;">Powered</span> column for the technology.</p><p>To tether a technology click the button in the <span style=" font-weight:600;">Tethering</span> column to on. When tethering is enabled the default service is bridged to all clients connected through the tethered technology. If the <span style=" font-weight:600;">Tethering</span> columns are not shown clear the check in <span style=" font-weight:600;">Less</span> checkbox below this window.</p><p>Note that by default wired connections cannot be tethered. This behavior can be overwritten in the connman.conf file. </p></body></html> ID:Password <html><head/><body><p>To edit the ID and Password of a tethered WiFi device click this button.</p><p>The ID and Password are what clients will have to enter to connect to the ad-hoc network. This is only valid for WiFi connections</p></body></html> ID:Pass <html><head/><body><p>When checked the tethering columns will be hidden.</p></body></html> Less <html><head/><body><p>Move the selected service before another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> <html><head/><body><p>Move the selected service after another in the list.</p><p>The button will only become active if the selected service can be moved and if there is another valid service which it can be used as a target.</p></body></html> Program Control 程序控制 <html><head/><body><p>If checked CMST will place an entry in the autostart directory for the current user, unchecking will remove said entry. This directory is typically: <span style=" font-weight:600;">${HOME}/.config/autostart</span>. </p><p>CMST only add or remove the .desktop file from the autostart directory. Autostarting is typically dependent upon your Desktop Environment and must be enabled from there.</p></body></html> <html><head/><body><p>若勾选,CMST 会在当前用户的启动目录产生一个启动项,不够选则会移除。目录位置一般为: <span style=" font-weight:600;">${HOME}/.config/autostart</span>。 </p><p>CMST 只会产生或删除启动项文件夹内的 .desktop 文件。自动启动一般依赖于桌面环境,必须在桌面环境启用。</p></body></html> Enable Autostart 启用自动启动 <html><head/><body><p>If a Connman service falls into the &quot;Failed&quot; state it will normally remain in that state.</p><p>If this box is checked CMST will try to automatically reconnect a WiFi service that enters the &quot;Failed&quot; state. </p></body></html> <html><head/><body><p>如果connman变为了 &quot;失败(Failed)&quot; 状态,它一般会保持那个状态。</p><p>如果这个复选框被勾选,CMST会尝试重新连接到进入 &quot;失败(Failed)&quot; 状态前的Wifi服务。 </p></body></html> Retry Failed Connection 失败重新连接 <html><head/><body><p>Color in #RGB format to colorize the internal icons with.</p></body></html> <html><head/><body><p>Open the color selection dialog. </p></body></html> ... <html><head/><body><p>Internal icons can be colorized. You may select a color using the button to the left, or you may type in the #RGB color yourself.</p><p>If you type the entry it must have leading # sign. Example: #22aa44 </p></body></html> Colorize &Help 帮助(&H) &About 关于(&A) <html><head/><body><p>Display a dialog box containing information about this program. </p></body></html> <html><head/><body><p>显示关于本程序的信息的对话框。 </p></body></html> C&MST <html><head/><body><p>Display a dialog box containing information about the Icon set used in this program. </p></body></html> <html><head/><body><p>显示关于这个程序中使用的图标的对话框。 </p></body></html> &AwOken <html><head/><body><p>Display a dialog box containing information about the QT toolkit used to develop this program. </p></body></html> <html><head/><body><p>显示关于用于构建本程序的Qt工具包的对话框。 </p></body></html> &QT <html><head/><body><p>Use this button to view the program license.</p></body></html> <html><head/><body><p>使用本按钮查看程序许可。</p></body></html> &License <html><head/><body><p>Use this button to view the change log of the program.</p></body></html> <html><head/><body><p>使用本按钮查看程序的更新日志。</p></body></html> ChangeLo&g <html><head/><body><p><span style=" font-weight:600;">Help</span></p><p>Program help is mainly provided by the &quot;What's This&quot; button in the lower left corner. Press the button and then click on an item you are interested in. &quot;What's This&quot; is also available via context menu by right clicking on a button, box or text area.</p></body></html> <html><head/><body><p><span style=" font-weight:600;">帮助</span></p><p>程序的帮助信息主要由下方的 &quot;这是什么?&quot; 按钮提供。按下按钮,并单击你想了解的项目。 &quot;这是什么?&quot; 也可通过在条目上右键的上下文菜单访问。</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>这是什么?</p></body></html> <html><head/><body><p>Use this button to find information about an element in the GUI by entering &quot;What's This&quot; mode. </p><p>You may also right click on an element to show the &quot;What's This&quot; text for it.</p></body></html> <html><head/><body><p>使用这个按钮进入 &quot;这是什么?&quot; 模式并查看GUI元素的相关信息。 </p><p>你也可以通过在界面元素上右键查看与之相关的 &quot;这是什么?&quot; 信息。</p></body></html> <html><head/><body><p>Open the provisioning editor to create or edit Connman configuration (provisioning) files.</p><p>These config files reside in /var/lib/connman which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> <html><head/><body><p>打开配置(provision)编辑器,创建或编辑connman配置文件。</p><p>这些配置文件在 /var/lib/connman ,所有权为 root:root 。 CMST 会注册一个roothelper来读取和写入这个文件夹内的文件。 </p><p>为防止root特权滥用,编辑器只会操作后缀为 <span style=" font-style:italic;">.cmst.config</span>的文件。这个后缀会在文件保存时自动添加上,并且不能被修改。 </p><p>这个编辑器不能编辑或删除其它方式创建的配置文件。</p></body></html> Provisioning Editor 配置编辑器 <html><head/><body><p>Open the VPN provisioning editor to create or edit Connman configuration (provisioning) files for VPN connections.</p><p>These config files reside in /var/lib/connman-vpn which is owned by root:root. CMST will register a roothelper to allow reading and writing files in this directory. </p><p>To avoid abusing the root privileges the editor will only operate on files with names ending in <span style=" font-style:italic;">.cmst.config</span>. This file name ending will be added automatically during a file save and cannot be altered. </p><p>Using this editor it is not possible to edit or delete config files created by other means.</p></body></html> VPN Editor <html><head/><body><p>Exit the program and remove the system tray icon. Connman will still be running as a daemon but will not be managed by this program.</p></body></html> <html><head/><body><p>退出程序并移除托盘图标。Connman仍会以守护进程运行,但是不再受本程序管理。</p></body></html> E&xit 退出(&X) <html><head/><body><p>Minimize the dialog. If you have the system tray Icon shown this dialog may be restored by right clicking on the tray icon. If the tray icon is hidden minimize will not be active.</p></body></html> <html><head/><body><p>最小化对话框。如果系统托盘图标被启用,右键图标可恢复这个对话框。如果托盘图标被隐藏,最小化将不可用。</p></body></html> Mi&nimize 最小化(&N) IDPass Set ID and Password for tethered wifi Ma&ximize 最大化(&X) &Exit 退出(&E) About %1 关于 %1 <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<br><center><b>Translations:</b><center>Ilya Shestopalov (Russian) <center>%1 是connman守护进程的一个交互程序,并提供系统托盘控制。<br><center>版本 <b>%2</b><center>发布日期: %3<center>版权所有 c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>贡献者:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<br><center><b>翻译者:</b><center>Ilya Shestopalov (Russian) Service Details WiFi Connections VPN Connections About AwOken 关于 AwOken <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a><br><center>The CMST icon is a derivative work from the AwOken icon set. <center>此程序使用 <b>AwOken</b> 图标集 版本 2.5<br><br>在以下许可下发布:<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a><br><center>CMST 图标是 AwOken 图标集的衍生作品。 %1 license is the MIT license. %1 的许可是 MIT license. License %1 change log is not available. %1 更新日志不可用。 ChangeLog Cancel 取消 <b>Service:</b> %1 <b>服务:</b> %1 Unable to determine service 无法确定服务 No Services Selected 未选择服务 You need to select a Wifi service before pressing the connect button. 在按下连接按钮之前,你需要选择一个Wifi服务。 You need to select a Wifi service before pressing the disconnect button. 在按下断开按钮之前,你需要选择一个Wifi服务。 %1 license is the MIT (Expat) license. You need to select a service before pressing the connect button. You need to select a service before pressing the disconnect button. You need to select a Wifi service before pressing the remove button. 在按下忘记按钮之前,你需要选择一个Wifi服务。 Offline Mode Engaged 飞行模式已开启 Offline Mode Disabled 飞行模式已禁用 %1 (%2) Network %1 (%2) 网络 Connection: %1 连接: %1 Network Services: 网络服务: No network services available 无可用网络服务 Service Error: %1 服务错误: %1 Object Path: %1 对象路径: %1 VPN Engaged VPN Disengaged Warning 警告 <center><b>We received a DBUS reply message indicating an error while trying to scan technologies.</b></center><br><br>Error Name: %1<br><br>Error Message: %2 <center><b>扫描设备时收到了一个来自DBUS的错误消息。</b></center><br><br>错误名称: %1<br><br>错误消息: %2 <b>Connection:</b> %1 <b>连接:</b> %1 <br><b>Service Details:</b><br> <br><b>服务详情:</b><br> Service Type: %1<br> 服务类型: %1<br> Service State: %1<br> 服务状态: %1<br> Favorite: %1<br> 已保存: %1<br> Yes favorite No favorite External Configuration File: %1<br> 外部配置文件: %1<br> Yes immutable No immutable Auto Connect: %1<br> 自动连接: %1<br> On autoconnect No autoconnect <br><b>IPv4</b><br> IP Address Acquisition: %1<br> IP 地址获取: %1<br> IP Address: %1<br> IP 地址: %1<br> IP Netmask: %1<br> IP 子网掩码: %1<br> IP Gateway: %1<br> IP 网关: %1<br> <br><b>IPv6</b><br> Address Acquisition: %1<br> 地址获取: %1<br> Prefix Length: <br> 前缀长度: <br> Prefix Length: %1<br> 前缀长度: %1<br> Privacy: %1<br> 隐私: %1<br> <br><b>Proxy</b><br> <br><b>代理</b><br> URL: %1<br> Servers:<br>&nbsp;&nbsp;%1<br> 服务器:<br>&nbsp;&nbsp;%1<br> Excludes:<br>&nbsp;&nbsp;%1<br> 排除:<br>&nbsp;&nbsp;%1<br> <br><b>Name Servers</b><br> <br><b>DNS</b><br> <br><br><b>Time Servers</b><br> <br><br><b>时间服务器</b><br> <br><br><b>Search Domains</b><br> <br><br><b>搜索域</b><br> <br><br><b>Ethernet</b><br> <br><br><b>以太网</b><br> Connection Method: %1<br> 连接方式: %1<br> Interface: %1<br> 接口: %1<br> Device Address: %1<br> 设备地址: %1<br> MTU: %1<br> <br><b>Wireless</b><br> <br><b>无线</b><br> Security: %1<br> 安全性: %1<br> Strength: %1<br> 强度: %1<br> Roaming: %1<br> 漫游: %1<br> Yes roaming No roaming <br><b>VPN Provider</b><br> Host: %1<br> Domain: %1<br> Name: %1<br> Type: %1<br> State: 状态: Engaged 启用 Disabled 禁用 Offline Mode 飞行模式 %1On%1%1 powered %1开%1%1 %1Off%1%1 powered %1关%1%1 Yes connected No connected Yes tethered No tethered WiFi Technologies:<br> %1 Found, %2 Powered WiFi 设备:<br> %1 已找到, %2 已启用 Update resolution of the counters is based on a threshold of %L1 KB of data and %L2 seconds of time. 统计更新的阈值是 %L1 KB 的数据和 %L2 秒的时间。 Ethernet Connection<br> icon_tool_tip 以太网连接<br> Service: %1<br> 服务: %1<br> Interface: %1 接口: %1<br> WiFi Connection<br> icon_tool_tip WiFi 连接<br> SSID: %1<br> Strength: %1%<br> 强度: %1%<br> VPN Connection<br> icon_tool_tip Connection is in the Ready State. icon_tool_tip 连接处于就绪状态。 Connection is in the Failure State, attempting to reestablish the connection icon_tool_tip 连接处于失败状态,尝试重新建立连接 Connection is in the Failure State. icon_tool_tip 连接处于失败状态。 Not Connected icon_tool_tip 未连接 Error retrieving properties via Dbus 从DBUS取回属性失败 Connection status is unknown 连接状态未知 <p style='white-space:pre'><center><b>%1 Properties</b></center> Type: %1 <br>Powered On Off Not Connected 未连接 <br>Tethering Enabled 启用 Connection : %1 Signal Strength: %1% Favorite Connection Never Connected <br>Security : %1 <br>Roaming <br>Autoconnect is <p style='white-space:pre'><center><b>%1</b></center> <center>%1 is a program to interface with the Connman daemon and to provide a system tray control.<br><center>Version <b>%2</b><center>Release date: %3<center>Copyright c %4<center>by<center>Andrew J. Bibb<center>Vermont, USA<br><center><b>Contributors:</b><center>Brett Dutro<center>Adam Fontenot<center>Lester Bico<center>Yaohan Chen<br><center><b>Translations:</b><center>Jianfeng Zhang (Chinese)<center>sqozz (German)<center>Ilya Shestopalov (Russian)<br><center><b>Build Information:</b><center>Compiled using QT version %5 <center>This program uses the <b>AwOken</b> icon set version 2.5<br><br>Released under the<br>Creative Commons<br>Attribution-Share Alike 3.0<br>Unported License<br><a href="url">http://creativecommons.org/licenses/by-sa/3.0/legalcode</a> <b>Technology: %1</b><p>Please enter the WiFi AP SSID that clients will<br>have to join in order to gain internet connectivity. <b>Technology: %1</b><p>Please enter the WPA pre-shared key clients will<br>have to use in order to establish a connection.<p>PSK length: minimum of 8 characters. %1On%1%1 tethering %1开%1%1 %1Off%1%1 tethering %1关%1%1 <center><b>Unable to find a systemtray on this machine.</b><center><br>The program may still be used to manage your connections, but the tray icon will be disabled.<center><br><br>If you are seeing this message at system start up and you know a system tray exists once the system is up, try starting with the <b>-w</b> switch and set a delay as necessary. The exact wait time will vary from system to system. <center><b>未能在此机上找到系统托盘。</b><center><br>此程序仍可用于管理你的连接,但是托盘图标会被禁用。<center><br><br>如果你在系统启动时看到这个信息,并且你知道当系统启动时系统托盘存在,尝试用 <b>-w</b> 参数启动本程序,并在有必要的情况下设置一个延迟时间。 实际的等待时间因不同系统而异。 Could not find a connection to the system bus 无法连接到system bus %1 - Critical Error %1 - 严重错误 Unable to find a connection to the system bus.<br><br>%1 will not be able to communicate with connman. 无法连接到system bus。<br><br>%1 将无法与connman通信。 Could not create an interface to connman on the system bus 无法在 system bus 上创建与connman通信的接口 Unable to create an interface to connman on the system bus.<br><br>%1 will not be able to communicate with connman. 无法在 system bus 上创建与connman通信的接口。<br><br>%1 将无法与connman通信。 Error reading or parsing connman.Manager.GetProperties 在读取或解析connman.Manager.GetProperties时发生错误 %1 - Warning %1 - 警告 There was an error reading or parsing the reply from method connman.Manager.GetProperties.<br><br>It is unlikely any portion of %1 will be functional. 在读取或解析connman.Manager.GetProperties的回应时发生了一个错误。<br><br>%1 可能不工作。 Error reading or parsing connman.Manager.GetTechnologies 在读取或解析connman.Manager.GetProperties时发生错误 There was an error reading or parsing the reply from method connman.Manager.GetTechnologies.<br><br>Some portion of %1 may still be functional. 在读取或解析connman.Manager.GetProperties的回应时发生了一个错误。<br><br>%1 部分功能可能仍可以工作。 Error reading or parsing connman.Manager.GetServices 在读取或解析connman.Manager.GetProperties时发生错误 There was an error reading or parsing the reply from method connman.Manager.GetServices.<br><br>Some portion of %1 may still be functional. 在读取或解析connman.Manager.GetProperties的回应时发生了一个错误。<br><br>%1 部分功能可能仍可以工作。 Could not create an interface to connman-vpn on the system bus Unable to create an interface to connman-vpn on the system bus.<br><br>%1 will not be able to communicate with the connman vpn daemon. [Hidden Wifi] %1 version %2 by %3 has been detected on this system.<p>This server supports desktop Notification Specification version %4 检测到 %1 版本 %2 by %3 。<p>这个服务支持桌面通知规范 版本 %4 Colorize Icons %1 detected 检测到 %1 Attempt %1 of 4 looking for notification server. 尝试 %1 of 4 查找通知服务。 Unable to find or connect to a Notification server. 无法找到或连接通知服务。 IconManager A new icon definition file will be installed to <b>%1</b> and a backup of the old definition file has been created as <b>%2</b> <p>If the original definition file was customized and you wish to retain those changes you will need to manually merge them into the new file. <p>If the original was never customized or you just wish to delete the backup now you may select <i>Discard</i> to delete the backup or <i>Save</i> to retain it. Peditor Property Editor 设置编辑器 &General 通用(&G) <html><head/><body><p>If checked this service will auto-connect when no other connection is available. This is only available for services marked &quot;Favorite&quot;. </p><p>The service will not auto-connect while roaming.</p></body></html> <html><head/><body><p>若勾选,这个服务将在没有其它可用连接时自动连接。这个只能被标记为 &quot;已保存&quot;的服务使用。 </p><p>漫游时,服务将不会自动连接。</p></body></html> AutoConnect 自动连接 <html><head/><body><p>The list of manually configured domain name servers. Some cellular networks don't provide correct name servers and this allows for an override.</p><p>This array is sorted by priority and the first entry in the list represents the nameserver with the highest priority.</p><p>When using manual configuration and no global nameservers are configured, then it is useful to configure this setting.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>手动配置的DNS服务器列表。部分蜂窝网络不提供正确的域名解析服务器,这个列表能覆盖设置。</p><p>这个列表按照优先级排序,列表中的第一项表示最优先的DNS服务器。</p><p>当处于手动模式且没有设置全局域名服务器时,这项设置十分有用。</p><p>输入一个或多个IP地址。 用英文逗号、分号或空格分隔不同地址。</p></body></html> &Nameservers DNS服务器(&N) <html><head/><body><p>The list of manually configured time servers.</p><p>The first entry in the list represents the timeserver with the highest priority.</p><p>When using manual configuration this setting is useful to override all the other timeserver settings. This is service specific, hence only the values for the default service are used.</p><p>Changes to this property will result in restart of NTP query.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>手动配置的时间服务器列表。</p><p>列表中的第一项表示最优先的服务器。</p><p>使用手动配置时,这个设置可以覆盖其它所有时间服务器设置。这因服务而异,因此只针对默认的在使用的服务的值。</p><p>改变这项设置会重启NTP查询。</p><p>输入一个或多个IP地址。 用英文逗号、分号或空格分隔不同地址。</p></body></html> &TImeservers 时间服务器(&T) <html><head/><body><p>List of manually configures search domains.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>手动配置的搜索域列表。</p><p>输入一个或多个IP地址。 用英文逗号、分号或空格分隔不同地址。</p></body></html> &Domains 域(&D) <html><head/><body><p>User configuration of IPv4 settings.</p></body></html> <html><head/><body><p>IPv4的用户设置</p></body></html> IPv&4 Address 地址 Netmask 子网掩码 Gateway 网关 Manual 手动 Off Method 方法 <html><head/><body><p>User configuration of IPv6 settings</p></body></html> <html><head/><body><p>IPv6的用户配置</p></body></html> IPv&6 Auto 自动 Prefix Length 前缀长度 Privacy 隐私 Disabled 禁用 Preferred 可选 Enabled 启用 <html><head/><body><p>User configuration of Proxy settings.</p></body></html> <html><head/><body><p>代理的用户配置</p></body></html> &Proxy 代理(&P) Direct 直接连接 <html><head/><body><p>Automatic proxy configuration URL. Used by the &quot;auto&quot; method.</p></body></html> <html><head/><body><p>自动代理配置的URL。 在&quot;自动&quot;方法中使用。</p></body></html> URL Servers 服务器 <html><head/><body><p>Used when &quot;manual&quot; is set.List of proxy URIs. The URI without a protocol will be interpreted as the generic proxy URI.</p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>当启用&quot;手动&quot;方法时使用。代理URI的列表。 不带协议的URI会被当作通用代理URI。</p><p>输入一个或多个IP地址。 用英文逗号、分号或空格分隔不同地址。</p></body></html> Excludes 排除 <html><head/><body><p>Used when &quot;manual&quot; is set. A list of hosts which can be accessed directly.</p><p><br/></p><p>Enter one or more IP addresses. Separate each address you enter by a comma, semi-colon, or by white space.</p></body></html> <html><head/><body><p>当启用&quot;手动&quot;方法时使用。 可以直接访问的主机列表。</p><p><br/></p><p>输入一个或多个IP地址。 用英文逗号、分号或空格分隔不同地址。</p></body></html> <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>这是什么?</p></body></html> <html><head/><body><p>Clear all entries on the current page.</p><p>This button will reset every field on the current page to the default value, which generally means nothing in the field.</p></body></html> <html><head/><body><p>清楚当前页面的全部设置。</p><p>这个按钮会把页面上所有设置重置为默认值,默认值通常为空。</p></body></html> Reset Pa&ge 重置页面(&G) <html><head/><body><p>Clear all fields on every page of the dialog.</p><p>This will reset every field on every page to the default value for the field. </p></body></html> <html><head/><body><p>清除这个对话框上所有页面中的设置。</p><p>这将会把所有页面的所有设置重置为默认值。</p></body></html> Reset &All 重置全部(&A) <html><head/><body><p>Accept the entries, send them to Connman, and close the dialog.</p></body></html> <html><head/><body><p>确认设置项目,把它们发送给connman,并关闭对话框。</p></body></html> OK 确定 <html><head/><body><p>Close the dialog without sending any entries to Connman.</p></body></html> <html><head/><body><p>关闭对话框,不发送任何设置给connman。</p></body></html> Cancel 取消 Provisioning Provisioning Editor 配置编辑器 <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>文本编辑窗口。</p><p>你可以在窗口里输入、复制或粘贴。你也可以使用上方的菜单插入文本。</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> <html><head/><body><p>打开已经存在的配置文件。</p></body></html> &Open 打开(&O) <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> <html><head/><body><p>把文本框内的数据写入配置文件。</p><p>选择框内会有一系列cmst创建的配置文件以便覆盖。你也可以在框内输入一个名字。</p><p>你不需要写路径或后缀名,因为它们会被去掉并用合法的路径和后缀名取代。 </p></body></html> &Save 保存(&S) <html><head/><body><p>Delete a config file.</p></body></html> <html><head/><body><p>删除一个配置文件</p></body></html> &Delete 删除(&D) <html><head/><body><p>Clear all text from the editor window.</p></body></html> <html><head/><body><p>清除编辑器窗口内的所有文字。</p></body></html> &Clear Page 清除页面(&C) <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>这是什么?</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>进入 &quot;这是什么?&quot; 模式。</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> <html><head/><body><p>退出对话框。</p></body></html> E&xit 退出(&X) [global] Name Description [service_*] Type MAC Nameservers Timeservers SearchDomains Domain SSID EAP CACertFile ClientCertFile PrivateKeyFile PrivateKeyPassphrase PrivateKeyPassphraseType Identity Phase2 Passphrase Security Hidden Eduroam (long) Eduroam (short) IPv4 Address IPv4 地址 IPv4 Off IPv4 关 IPV4 DHCP IPv6 Address IPv6 地址 IPv6 Off IPv6 关 IPv6 Auto IPv6 自动 IPv6.Privacy IPv6 隐私 ProvisioningEditor Global 全局 Service 服务 WiFi Templates 模板 File Path to the CA Certificate File CA证书文件路径 File Path to the Client Certificate File 客户端证书文件路径 File path to the Client Private Key File 私钥文件路径 Key Files (*.pem);;All Files (*.*) 密钥文件 (*.pem);;全部文件 (*.*) MAC address. MAC 地址。 SSID: hexadecimal representation of an 802.11 SSID SSID: 802.11 SSID 的十六进制表示 List of Nameservers DNS服务器列表 List of Timeservers 时间服务器列表 List of DNS Search Domains DNS搜索域列表 Domain name to be used 所使用的域名 Enter the string representation of an 802.11 SSID. 输入 802.11 SSID 的字符串表示。 Service type. 服务类型。 EAP type. EAP 类型。 Private key passphrase type. 私钥密码类型。 Network security type. 网络安全类型。 Hidden network 隐藏网络 IPv6 Privacy IPv6 隐私 %1 - Item Input %1 - 项目输入 Tag which will replace the * with<br>an identifier unique to the config file. 替换 * 的标签名<br>配置文件的唯一标识。 Enter the network name. 输入网络名称。 Enter a description of the network. 输入网络的描述。 Password/Passphrase for the private key file. 私钥文件的密码。 Identity string for EAP. EAP的身份字符串。 RSN/WPA/WPA2 Passphrase RSN/WPA/WPA2 密码 Phase 2 (inner authentication with TLS tunnel)<br>authentication method. 阶段 2 (通过TLS隧道进行内部身份验证)<br>验证方式。 %1 - Text Input %1 - 文本输入 Information 信息 The IPv4 <b>Address</b>, <b>Netmask</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. 输入IPv4 的<b>地址</b>、<b>子网掩码</b>,和可选的<b>网关</b>。<p>准备就绪时,按确定。 IPv4 Address IPv4 地址 IPv4 Netmask IPv4 子网掩码 IPv4 Gateway (This is an optional entry) IPv4 网关 (可选) The IPv6 <b>Address</b>, <b>Prefix Length</b>, and optionally <b>Gateway</b> need to be provided.<p>Press OK when you are ready to proceed. 输入IPv6 的<b>地址</b>、<b>前缀长度</b>,和可选的<b>网关</b>。<p>准备就绪时,按确定。 IPv6 Address IPv6 地址 %1 - Integer Input %1 - 数字输入 Enter the IPv6 prefix length 输入IPv6前缀长度 IPv6 Gateway (This is an optional entry) IPv6 网关 (可选) <center>No configuration files were found.<br>You may use this dialog to create one. <center>没有找到配置文件。<br>你可以用这个对话框创建一个。 %1 - Information %1 - 信息 <center>Reading configuration file: %1 <center>读取配置文件: %1 %1 - Select File %1 - 选择文件 Select a file to load. 选择要加载的文件。 <center>No configuration files were found.<br>Nothing will be deleted. <center>没有找到配置文件。<br>不会删除任何东西。 Select a file to be deleted. 选择要删除的文件。 Enter a new file name or select<br>an existing file to overwrite. 输入新的文件名或选择并<br>替换一个已经存在的文件。 File read completed 文件读取完成 File deleted 文件已删除 Error encountered deleting. 删除时发生了错误。 File save failed. 文件保存失败。 %L1 KB written %L1 KB 已写入 %L1 Bytes written %L1 Bytes 已写入 Critical 严重错误 <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 <b>DBus 错误 名称:</b> %1<br><br><b>字符串:</b> %2<br><br><b>消息:</b> %3 RootHelper Failed to register service org.cmst.roothelper - there may be another instance running. 无法注册服务 org.cmst.roothelper —— 可能已经在运行。 Failed to register roothelper object on the system bus. 无法在system bus上注册roothelper对象。 ScrollBox Scrollbox 滚动框 TextLabel 文本标签 TranslateStrings connman system tray Main Window Title cmst Abbreviated Program Name - used for QMessageBox titles idle connman state string 空闲 association connman state string 连接中 configuration connman state string 配置中 ready connman state string 就绪 online connman state string 在线 disconnect connman state string 断开 failure connman state string 错误 offline connman state string 离线 system connman type string 系统 ethernet connman type string 以太网 wifi connman type string bluetooth connman type string 蓝牙 cellular connman type string 蜂窝数据 gps connman type string vpn connman type string gadget connman type string p2p connman type string wired connman type string 有线网络 direct connman proxy string 直接连接 manual connman proxy string 手动 auto connman proxy string 自动 psk connman security string ieee8021x connman security string none connman security string wep connman security string wps connman security string Invalid arguments connman error string 非法参数 Permission denied connman error string 拒绝访问 Passphrase required connman error string 需要密码 Not registered connman error string 未注册 Not unique connman error string 不唯一 Not supported connman error string 不支持 Not implemented connman error string 未实现 Not found connman error string 未找到 No carrier connman error string 无法承载网络 In progress connman error string 进行中 Already exists connman error string 已经存在 Already enabled connman error string 已启用 Already disabled connman error string 已禁用 Already connected connman error string 已连接 Not connected connman error string 未连接 Operation aborted connman error string 操作退出 Operation timeout connman error string 操作超时 Invalid service connman error string 非法服务 Invalid property connman error string 非法属性 disabled connman privacy string enabled connman privacy string prefered connman privacy string - known misspelling but needed to avoid breaking code preferred connman privacy string auto connman ethernet connection method 自动 manual connman ethernet connection method 手动 dhcp connman ipv4 method string manual connman ipv4 method string 手动 off connman ipv4 method string fixed connman ipv4 method string auto connman ipv6 method string 自动 manual connman ipv6 method string 手动 6to4 connman ipv6 method string off connman ipv6 method string openconnect connman vpn connection type openvpn connman vpn connection type vpnc connman vpn connection type l2tp connman vpn connection type pptp connman vpn connection type auto connamn ipv6 method string 自动 manual connamn ipv6 method string 手动 Invalid arguments connman error sring 非法参数 Permission denied connman error sring 拒绝访问 Passphrase required connman error sring 需要密码 Not registered connman error sring 未注册 Not unique connman error sring 不唯一 Not supported connman error sring 不支持 Not implemented connman error sring 未实现 Not found connman error sring 未找到 No carrier connman error sring 无法承载网络 In progress connman error sring 进行中 Already exists connman error sring 已经存在 Already enabled connman error sring 已启用 Already disabled connman error sring 已禁用 Already connected connman error sring 已连接 Not connected connman error sring 未连接 Operation aborted connman error sring 操作退出 Operation timeout connman error sring 操作超时 Invalid service connman error sring 非法服务 Invalid property connman error sring 非法属性 VPNAgent VPN Agent Input Username <html><head/><body><p>WISPr username.</p></body></html> <html><head/><body><p>WISPr 用户名.</p></body></html> Password <html><head/><body><p>WISPr password.</p></body></html> <html><head/><body><p>WISPr 密码.</p></body></html> Host Name 名称 OpenConnect CA Cert. Client Cert. Cookie Server Cert. VPN Host <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>这是什么?</p></body></html> ... <html><head/><body><p>Continue the connection process.</p></body></html> <html><head/><body><p>继续连接。</p></body></html> <html><head/><body><p>Accept and use the answers you have provided in this dialog. </p><p>This will send your input to the connman daemon to continue the connection process.</p></body></html> <html><head/><body><p>接受并使用你在此会话中提供的信息。</p><p>这将把你的输入发送给connman守护进程以继续连接。</p></body></html> O&K 确定(&K) <html><head/><body><p>Cancel the connection process.<br/></p></body></html> <html><head/><body><p>取消连接。<br/></p></body></html> <html><head/><body><p>Cancel the dialog. </p><p>This will send a message to the connman daemon that you have cancelled the connection request.</p></body></html> <html><head/><body><p>取消会话。</p><p>这将会给connman守护进程发送取消连接请求。</p></body></html> &Cancel 取消(&C) Save Credentials VPN_Editor Global 全局 OpenConnect OpenVPN VPNC L2TP PPTP All Files (*.*) Cert Files (*.pem *.ca *.crt *.cert);;All Files (*.*) User:Pass Files (*.up *.txt *.conf);;All Files (*.*) CA Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Cert Files (*.ca *.cert *.crt *.pem);;All Files (*.*) Key Files (*.key *.ca *.cert *.crt *.pem);;All Files (*.*) Config Files (*.ovpn *.conf *.config);;All Files (*.*) VPN server IP address (ex: 1.2.3.4) %1 - Item Input %1 - 项目输入 %1 - Verify Option User defined name for the VPN Domain name for the VPN Service (example: corporate.com) Networks behing the VPN link, if more than one separate by a comma. Format is network/netmask/gateway, and gateway can be omitted. Ex: 10.10.20.0/255.255.255.0/10.20.1.5,192.168.99.1/24,2001:Ldb8::1/16 Networks = entry is optional and may be left blank. %1 - Text Input %1 - 文本输入 Information <center>No configuration files were found.<br>You may use this dialog to create one. <center>没有找到配置文件。<br>你可以用这个对话框创建一个。 %1 - Information %1 - 信息 <center>Reading configuration file: %1 <center>读取配置文件: %1 %1 - Select File %1 - 选择文件 Select a file to load. 选择要加载的文件。 <center>No configuration files were found.<br>Nothing will be deleted. <center>没有找到配置文件。<br>不会删除任何东西。 Select a file to be deleted. 选择要删除的文件。 Enter a new file name or select<br>an existing file to overwrite. 输入新的文件名或选择并<br>替换一个已经存在的文件。 File read completed 文件读取完成 File deleted 文件已删除 Error encountered deleting. 删除时发生了错误。 File save failed. 文件保存失败。 %L1 KB written %L1 KB 已写入 %L1 Bytes written %L1 Bytes 已写入 Critical 严重错误 <b>DBus Error Name:</b> %1<br><br><b>String:</b> %2<br><br><b>Message:</b> %3 <b>DBus 错误 名称:</b> %1<br><br><b>字符串:</b> %2<br><br><b>消息:</b> %3 OpenVPN Configurations (*.ovpn *.conf);;All Files (*.*) Select the configuration file to import Unable to write <b>%1</b> - Aborting the import Keep --auth-user-pass The conf file will contain the <b>auth-user-pass</b> entry which will require prompts sent to stdout and a reply on stdin. This cannot be handled by Connman nor by CMST.<p>If this entry is removed you will need to create a "user:pass" file in order to have Connman make the VPN connection. In the next step you will be asked if you want to create this file and you will prompted for the user name and password.<p><b>Do you wish to remove this entry?</b> Unable to write conf file <b>%1</b> Create User:Password File Do you wish to create a user:password file for this connection? User Enter the user name for this connection. Password Enter the password for this connection. Unable to write user:password file <b>%1</b> Unable to read <b>%1</b> - Aborting the import OpenVPN import is complete. The provisioning file may now be saved. VPN_Prov VPN Provisioning Editor <html><head/><body><p>Text edit window.</p><p>You may type or cut and paste into this window. You may also use menus above to insert text fields.</p></body></html> <html><head/><body><p>文本编辑窗口。</p><p>你可以在窗口里输入、复制或粘贴。你也可以使用上方的菜单插入文本。</p></body></html> <html><head/><body><p>Open an existing config file.</p></body></html> <html><head/><body><p>打开已经存在的配置文件。</p></body></html> &Open 打开(&O) <html><head/><body><p>Write the displayed data to a config file.</p><p>The combo box is seeded with a list of CMST created config files to provide an easy way to overwrite one. You may also type a name in the ComboBox.</p><p>It is not necessary to provide a path nor a file extension as both will be stripped out and replaced allowed values. </p></body></html> <html><head/><body><p>把文本框内的数据写入配置文件。</p><p>选择框内会有一系列cmst创建的配置文件以便覆盖。你也可以在框内输入一个名字。</p><p>你不需要写路径或后缀名,因为它们会被去掉并用合法的路径和后缀名取代。 </p></body></html> &Save 保存(&S) <html><head/><body><p>Delete a config file.</p></body></html> <html><head/><body><p>删除一个配置文件</p></body></html> &Delete 删除(&D) <html><head/><body><p>Clear all text from the editor window.</p></body></html> <html><head/><body><p>清除编辑器窗口内的所有文字。</p></body></html> &Clear Page 清除页面(&C) <html><head/><body><p>What's This</p></body></html> <html><head/><body><p>这是什么?</p></body></html> <html><head/><body><p>Enter &quot;Whats This&quot; mode.</p></body></html> <html><head/><body><p>进入 &quot;这是什么?&quot; 模式。</p></body></html> <html><head/><body><p>Exit the dialog.</p></body></html> <html><head/><body><p>退出对话框。</p></body></html> E&xit 退出(&X) Name 名称 Name of the network. Description of the network. PPTP User Name. PPTP Password. Set the maximum number of LCP configure-NAKs returned before starting to send configure-Rejects (default is 10). Send an LCP echo-request frame to the peer every n seconds. This option can be used with the lcp-echo-failure option to detect that the peer is no longer connected. Debug level. Deny EAP authorization? Deny PAP authorization? Deny CHAP authorization? Deny MSCHAP authorization? Deny MSCHAPV2 authorization? Disables BSD compression? Disable deflate compression? Require the use of MPPE? Require the use of MPPE 40 bit? Require the use of MPPE 128 bit? Allow MPPE to use stateful mode? Disable Van Jacobson compression? L2TP User Name. L2TP Password. Maximum bandwidth to use. Maximum transmit bandwidth to use. Maximum receive bandwidth to use. Use length bit? Use challenge authentication? Add a default route to the system routing tables, using the peer as the gatewa? Sequence numbers included in the communication? The window size of the control channel (number of unacknowledged packets, not bytes) Use only one control channel? Redial if disconnected? Wait n seconds before redial. Give up redial tries after X attempts. Require the remote peer to get authenticated via PAP? Require the remote peer to get authenticated via CHAP? Require the remote peer to authenticate itself? Only accept connections from specified peer addresses? Authentication file location. The IP address of the interface on which the daemon listens. Use IPsec Security Association tracking? Specify which UDP port should be used. Disable protocol compression? Disable address/control compression? Your Group username. Your group password (cleartext). Your username. Your password (cleartext). IKE authentication mode. Name of the IKE DH Group. DH gropup to use for perfect forward secrecy. Domain name for authentication. Vendor of your IPSec gateway. Local ISAKMP port to use. Local UDP port number to use. Application version to report. NAT-Traversal method to employ. Send DPD packet after not receiving anything for n seconds Enable single DES encryption. Enables using no encryption for data traffic. Certificate authority file. File containing peer's signed certificate. File containing local peer's private key. File containing the user:password credentials. MTU of the tunnel. Peer certificate type (server/client). Protocol type (udp/tcp-client/tcp-server). TCP/UDP port number. Get certificate password from console or file? Don't cache --askpass or --auth-user-pass values? Encrypt packets with cipher algorithm: Authenticate packets using algorithm: Use fast LZO compression (yes/no/adaptive). Require peer certificate signed (client/server). OpenVPN config file that can contain extra options. SHA1 certificate fingerprint of the final VPN server. File containing other certificate authorities. Client certificate file, if needed for web authentication. Request MTU from server to use as MTU of tunnel? Read cookie from standard input? The final VPN server to use after completing web authentication. main.cpp Another running instance of CMST has been detected. This instance is aborting 另一个cmst实例正在运行。该实例将退出 Connman System Tray. Bypass restoring the window state if restoring window state is specified in the settings file. Bypass restoring any start options in the settings file. [Experimental] Disable data counters. May be used to minimize load on your system. [实验性] 禁用数据统计。 可能减轻系统负载。 Disable the system tray icon. May be needed for system trays not compliant with the Freedesktop.org system tray specification. 禁用系统托盘图标。 可能在系统托盘不符合 Freedesktop.org system tray 规范时需要。 Use the icon theme from your system if one is defined. 若存在,使用系统图标主题。 Use an icon theme from your system. Icon Theme Name Log the connman inputRequest for debugging purposes. 记录connman的inputRequest日志以供调试。 Start the GUI minimized in the system tray. 启动GUI时最小化到系统托盘。 Specify the wait time in seconds before starting the system tray icon. 指定系统托盘启动钱的等待时间,以秒为单位。 seconds [Experimental] The number of kb that have to be transmitted before the counter updates. [实验性] 统计更新前传输的数据量,以kb为单位。 KB [Experimental] The interval in seconds between counter updates. [实验性] 统计更新的间隔时间,以秒为单位。 If tray icon fake transparency is required, specify the background color to use (format: 0xRRGGBB) 如果托盘图标需要伪装背景透明,指定要使用的背景颜色 (格式:0xRRGGBB) RRGGBB RRGGBB Use XFCE specific code. 使用为XFCE准备的代码。 Use MATE DE specific code. 使用为MATE准备的代码。 processReply Warning 警告 <center><b>We received a DBUS reply message indicating an error.</b></center><br><br>Error Name: %1<br><br>Error Message: %2